summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev/acpica/compiler/aslmain.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/acpica/compiler/aslmain.c')
-rw-r--r--sys/contrib/dev/acpica/compiler/aslmain.c774
1 files changed, 20 insertions, 754 deletions
diff --git a/sys/contrib/dev/acpica/compiler/aslmain.c b/sys/contrib/dev/acpica/compiler/aslmain.c
index 488f186..2a70588 100644
--- a/sys/contrib/dev/acpica/compiler/aslmain.c
+++ b/sys/contrib/dev/acpica/compiler/aslmain.c
@@ -41,7 +41,6 @@
* POSSIBILITY OF SUCH DAMAGES.
*/
-
#define _DECLARE_GLOBALS
#include <contrib/dev/acpica/compiler/aslcompiler.h>
@@ -49,26 +48,11 @@
#include <contrib/dev/acpica/include/acdisasm.h>
#include <signal.h>
-#ifdef _DEBUG
-#include <crtdbg.h>
-#endif
-
#define _COMPONENT ACPI_COMPILER
ACPI_MODULE_NAME ("aslmain")
-/* Local prototypes */
-
-static void
-Options (
- void);
-
-static void
-FilenameHelp (
- void);
-static void
-Usage (
- void);
+/* Local prototypes */
static void ACPI_SYSTEM_XFACE
AslSignalHandler (
@@ -78,34 +62,10 @@ static void
AslInitialize (
void);
-static int
-AslCommandLine (
- int argc,
- char **argv);
-
-static int
-AslDoOptions (
- int argc,
- char **argv,
- BOOLEAN IsResponseFile);
-
-static void
-AslMergeOptionTokens (
- char *InBuffer,
- char *OutBuffer);
-
-static int
-AslDoResponseFile (
- char *Filename);
-
-
-#define ASL_TOKEN_SEPARATORS " \t\n"
-#define ASL_SUPPORTED_OPTIONS "@:b|c|d^D:e:fgh^i|I:l^m:no|p:P^r:s|t|T:G^v^w|x:z"
-
/*******************************************************************************
*
- * FUNCTION: Options
+ * FUNCTION: Usage
*
* PARAMETERS: None
*
@@ -116,10 +76,12 @@ AslDoResponseFile (
*
******************************************************************************/
-static void
-Options (
+void
+Usage (
void)
{
+ printf ("%s\n\n", ASL_COMPLIANCE);
+ ACPI_USAGE_HEADER ("iasl [Options] [Files]");
printf ("\nGlobal:\n");
ACPI_OPTION ("-@ <file>", "Specify command file");
@@ -140,6 +102,7 @@ Options (
ACPI_OPTION ("-vo", "Enable optimization comments");
ACPI_OPTION ("-vr", "Disable remarks");
ACPI_OPTION ("-vs", "Disable signon");
+ ACPI_OPTION ("-vw <messageid>", "Disable specific warning or remark");
ACPI_OPTION ("-w1 -w2 -w3", "Set warning reporting level");
ACPI_OPTION ("-we", "Report warnings as errors");
@@ -209,8 +172,8 @@ Options (
*
******************************************************************************/
-static void
-FilenameHelp (
+void
+AslFilenameHelp (
void)
{
@@ -225,29 +188,6 @@ FilenameHelp (
}
-/*******************************************************************************
- *
- * FUNCTION: Usage
- *
- * PARAMETERS: None
- *
- * RETURN: None
- *
- * DESCRIPTION: Display usage and option message
- *
- ******************************************************************************/
-
-static void
-Usage (
- void)
-{
-
- printf ("%s\n\n", ASL_COMPLIANCE);
- ACPI_USAGE_HEADER ("iasl [Options] [Files]");
- Options ();
-}
-
-
/******************************************************************************
*
* FUNCTION: AslSignalHandler
@@ -310,11 +250,6 @@ AslInitialize (
UINT32 i;
-#ifdef _DEBUG
- _CrtSetDbgFlag (_CRTDBG_CHECK_ALWAYS_DF | _CrtSetDbgFlag(0));
-#endif
-
-
for (i = 0; i < ASL_NUM_FILES; i++)
{
Gbl_Files[i].Handle = NULL;
@@ -326,675 +261,6 @@ AslInitialize (
Gbl_Files[ASL_FILE_STDERR].Handle = stderr;
Gbl_Files[ASL_FILE_STDERR].Filename = "STDERR";
-
- /* Allocate the line buffer(s) */
-
- Gbl_LineBufferSize /= 2;
- UtExpandLineBuffers ();
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AslMergeOptionTokens
- *
- * PARAMETERS: InBuffer - Input containing an option string
- * OutBuffer - Merged output buffer
- *
- * RETURN: None
- *
- * DESCRIPTION: Remove all whitespace from an option string.
- *
- ******************************************************************************/
-
-static void
-AslMergeOptionTokens (
- char *InBuffer,
- char *OutBuffer)
-{
- char *Token;
-
-
- *OutBuffer = 0;
-
- Token = strtok (InBuffer, ASL_TOKEN_SEPARATORS);
- while (Token)
- {
- strcat (OutBuffer, Token);
- Token = strtok (NULL, ASL_TOKEN_SEPARATORS);
- }
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AslDoResponseFile
- *
- * PARAMETERS: Filename - Name of the response file
- *
- * RETURN: Status
- *
- * DESCRIPTION: Open a response file and process all options within.
- *
- ******************************************************************************/
-
-static int
-AslDoResponseFile (
- char *Filename)
-{
- char *argv = StringBuffer2;
- FILE *ResponseFile;
- int OptStatus = 0;
- int Opterr;
- int Optind;
-
-
- ResponseFile = fopen (Filename, "r");
- if (!ResponseFile)
- {
- printf ("Could not open command file %s, %s\n",
- Filename, strerror (errno));
- return (-1);
- }
-
- /* Must save the current GetOpt globals */
-
- Opterr = AcpiGbl_Opterr;
- Optind = AcpiGbl_Optind;
-
- /*
- * Process all lines in the response file. There must be one complete
- * option per line
- */
- while (fgets (StringBuffer, ASL_MSG_BUFFER_SIZE, ResponseFile))
- {
- /* Compress all tokens, allowing us to use a single argv entry */
-
- AslMergeOptionTokens (StringBuffer, StringBuffer2);
-
- /* Process the option */
-
- AcpiGbl_Opterr = 0;
- AcpiGbl_Optind = 0;
-
- OptStatus = AslDoOptions (1, &argv, TRUE);
- if (OptStatus)
- {
- printf ("Invalid option in command file %s: %s\n",
- Filename, StringBuffer);
- break;
- }
- }
-
- /* Restore the GetOpt globals */
-
- AcpiGbl_Opterr = Opterr;
- AcpiGbl_Optind = Optind;
-
- fclose (ResponseFile);
- return (OptStatus);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AslDoOptions
- *
- * PARAMETERS: argc/argv - Standard argc/argv
- * IsResponseFile - TRUE if executing a response file.
- *
- * RETURN: Status
- *
- * DESCRIPTION: Command line option processing
- *
- ******************************************************************************/
-
-static int
-AslDoOptions (
- int argc,
- char **argv,
- BOOLEAN IsResponseFile)
-{
- int j;
- ACPI_STATUS Status;
-
-
- /* Get the command line options */
-
- while ((j = AcpiGetopt (argc, argv, ASL_SUPPORTED_OPTIONS)) != EOF) switch (j)
- {
- case '@': /* Begin a response file */
-
- if (IsResponseFile)
- {
- printf ("Nested command files are not supported\n");
- return (-1);
- }
-
- if (AslDoResponseFile (AcpiGbl_Optarg))
- {
- return (-1);
- }
- break;
-
-
- case 'b': /* Debug output options */
- switch (AcpiGbl_Optarg[0])
- {
- case 'f':
- AslCompilerdebug = 1; /* same as yydebug */
- DtParserdebug = 1;
- PrParserdebug = 1;
- break;
-
- case 't':
- break;
-
- default:
- printf ("Unknown option: -b%s\n", AcpiGbl_Optarg);
- return (-1);
- }
-
- /* Produce debug output file */
-
- Gbl_DebugFlag = TRUE;
- break;
-
-
- case 'c':
- switch (AcpiGbl_Optarg[0])
- {
- case 'r':
- Gbl_NoResourceChecking = TRUE;
- break;
-
- default:
- printf ("Unknown option: -c%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'd': /* Disassembler */
- switch (AcpiGbl_Optarg[0])
- {
- case '^':
- Gbl_DoCompile = FALSE;
- break;
-
- case 'a':
- Gbl_DoCompile = FALSE;
- Gbl_DisassembleAll = TRUE;
- break;
-
- case 'b': /* Do not convert buffers to resource descriptors */
- AcpiGbl_NoResourceDisassembly = TRUE;
- break;
-
- case 'c':
- break;
-
- default:
- printf ("Unknown option: -d%s\n", AcpiGbl_Optarg);
- return (-1);
- }
-
- Gbl_DisasmFlag = TRUE;
- break;
-
-
- case 'D': /* Define a symbol */
- PrAddDefine (AcpiGbl_Optarg, NULL, TRUE);
- break;
-
-
- case 'e': /* External files for disassembler */
- Status = AcpiDmAddToExternalFileList (AcpiGbl_Optarg);
- if (ACPI_FAILURE (Status))
- {
- printf ("Could not add %s to external list\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'f': /* Ignore errors and force creation of aml file */
- Gbl_IgnoreErrors = TRUE;
- break;
-
-
- case 'G':
- Gbl_CompileGeneric = TRUE;
- break;
-
-
- case 'g': /* Get all ACPI tables */
-
- Gbl_GetAllTables = TRUE;
- Gbl_DoCompile = FALSE;
- break;
-
-
- case 'h':
- switch (AcpiGbl_Optarg[0])
- {
- case '^':
- Usage ();
- exit (0);
-
- case 'c':
- UtDisplayConstantOpcodes ();
- exit (0);
-
- case 'f':
- FilenameHelp ();
- exit (0);
-
- case 'r':
- /* reserved names */
-
- ApDisplayReservedNames ();
- exit (0);
-
- case 't':
- UtDisplaySupportedTables ();
- exit (0);
-
- default:
- printf ("Unknown option: -h%s\n", AcpiGbl_Optarg);
- return (-1);
- }
-
-
- case 'I': /* Add an include file search directory */
- FlAddIncludeDirectory (AcpiGbl_Optarg);
- break;
-
-
- case 'i': /* Output AML as an include file */
- switch (AcpiGbl_Optarg[0])
- {
- case 'a':
-
- /* Produce assembly code include file */
-
- Gbl_AsmIncludeOutputFlag = TRUE;
- break;
-
- case 'c':
-
- /* Produce C include file */
-
- Gbl_C_IncludeOutputFlag = TRUE;
- break;
-
- case 'n':
-
- /* Compiler/Disassembler: Ignore the NOOP operator */
-
- AcpiGbl_IgnoreNoopOperator = TRUE;
- break;
-
- default:
- printf ("Unknown option: -i%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'l': /* Listing files */
- switch (AcpiGbl_Optarg[0])
- {
- case '^':
- /* Produce listing file (Mixed source/aml) */
-
- Gbl_ListingFlag = TRUE;
- break;
-
- case 'i':
- /* Produce preprocessor output file */
-
- Gbl_PreprocessorOutputFlag = TRUE;
- break;
-
- case 'n':
- /* Produce namespace file */
-
- Gbl_NsOutputFlag = TRUE;
- break;
-
- case 's':
- /* Produce combined source file */
-
- Gbl_SourceOutputFlag = TRUE;
- break;
-
- default:
- printf ("Unknown option: -l%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'm': /* Set line buffer size */
- Gbl_LineBufferSize = (UINT32) strtoul (AcpiGbl_Optarg, NULL, 0) * 1024;
- if (Gbl_LineBufferSize < ASL_DEFAULT_LINE_BUFFER_SIZE)
- {
- Gbl_LineBufferSize = ASL_DEFAULT_LINE_BUFFER_SIZE;
- }
- printf ("Line Buffer Size: %u\n", Gbl_LineBufferSize);
- break;
-
-
- case 'n': /* Parse only */
- Gbl_ParseOnlyFlag = TRUE;
- break;
-
-
- case 'o': /* Control compiler AML optimizations */
- switch (AcpiGbl_Optarg[0])
- {
- case 'a':
-
- /* Disable all optimizations */
-
- Gbl_FoldConstants = FALSE;
- Gbl_IntegerOptimizationFlag = FALSE;
- Gbl_ReferenceOptimizationFlag = FALSE;
- break;
-
- case 'f':
-
- /* Disable folding on "normal" expressions */
-
- Gbl_FoldConstants = FALSE;
- break;
-
- case 'i':
-
- /* Disable integer optimization to constants */
-
- Gbl_IntegerOptimizationFlag = FALSE;
- break;
-
- case 'n':
-
- /* Disable named reference optimization */
-
- Gbl_ReferenceOptimizationFlag = FALSE;
- break;
-
- case 't':
-
- /* Display compile time(s) */
-
- Gbl_CompileTimesFlag = TRUE;
- break;
-
- default:
- printf ("Unknown option: -c%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'P': /* Preprocessor options */
- switch (AcpiGbl_Optarg[0])
- {
- case '^': /* Proprocess only, emit (.i) file */
- Gbl_PreprocessOnly = TRUE;
- Gbl_PreprocessorOutputFlag = TRUE;
- break;
-
- case 'n': /* Disable preprocessor */
- Gbl_PreprocessFlag = FALSE;
- break;
-
- default:
- printf ("Unknown option: -P%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'p': /* Override default AML output filename */
- Gbl_OutputFilenamePrefix = AcpiGbl_Optarg;
- Gbl_UseDefaultAmlFilename = FALSE;
- break;
-
-
- case 'r': /* Override revision found in table header */
- Gbl_RevisionOverride = (UINT8) strtoul (AcpiGbl_Optarg, NULL, 0);
- break;
-
-
- case 's': /* Create AML in a source code file */
- switch (AcpiGbl_Optarg[0])
- {
- case 'a':
-
- /* Produce assembly code output file */
-
- Gbl_AsmOutputFlag = TRUE;
- break;
-
- case 'c':
-
- /* Produce C hex output file */
-
- Gbl_C_OutputFlag = TRUE;
- break;
-
- case 'o':
-
- /* Produce AML offset table in C */
-
- Gbl_C_OffsetTableFlag = TRUE;
- break;
-
- default:
- printf ("Unknown option: -s%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 't': /* Produce hex table output file */
- switch (AcpiGbl_Optarg[0])
- {
- case 'a':
- Gbl_HexOutputFlag = HEX_OUTPUT_ASM;
- break;
-
- case 'c':
- Gbl_HexOutputFlag = HEX_OUTPUT_C;
- break;
-
- case 's':
- Gbl_HexOutputFlag = HEX_OUTPUT_ASL;
- break;
-
- default:
- printf ("Unknown option: -t%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'T': /* Create a ACPI table template file */
- Gbl_DoTemplates = TRUE;
- Gbl_TemplateSignature = AcpiGbl_Optarg;
- break;
-
-
- case 'v': /* Version and verbosity settings */
- switch (AcpiGbl_Optarg[0])
- {
- case '^':
- printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
- exit (0);
-
- case 'a':
- /* Disable All error/warning messages */
-
- Gbl_NoErrors = TRUE;
- break;
-
- case 'i':
- /*
- * Support for integrated development environment(s).
- *
- * 1) No compiler signon
- * 2) Send stderr messages to stdout
- * 3) Less verbose error messages (single line only for each)
- * 4) Error/warning messages are formatted appropriately to
- * be recognized by MS Visual Studio
- */
- Gbl_VerboseErrors = FALSE;
- Gbl_DoSignon = FALSE;
- Gbl_Files[ASL_FILE_STDERR].Handle = stdout;
- break;
-
- case 'o':
- Gbl_DisplayOptimizations = TRUE;
- break;
-
- case 'r':
- Gbl_DisplayRemarks = FALSE;
- break;
-
- case 's':
- Gbl_DoSignon = FALSE;
- break;
-
- case 't':
- Gbl_VerboseTemplates = TRUE;
- break;
-
- default:
- printf ("Unknown option: -v%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'w': /* Set warning levels */
- switch (AcpiGbl_Optarg[0])
- {
- case '1':
- Gbl_WarningLevel = ASL_WARNING;
- break;
-
- case '2':
- Gbl_WarningLevel = ASL_WARNING2;
- break;
-
- case '3':
- Gbl_WarningLevel = ASL_WARNING3;
- break;
-
- case 'e':
- Gbl_WarningsAsErrors = TRUE;
- break;
-
- default:
- printf ("Unknown option: -w%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'x': /* Set debug print output level */
- AcpiDbgLevel = strtoul (AcpiGbl_Optarg, NULL, 16);
- break;
-
-
- case 'z':
- Gbl_UseOriginalCompilerId = TRUE;
- break;
-
-
- default:
- return (-1);
- }
-
- return (0);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AslCommandLine
- *
- * PARAMETERS: argc/argv
- *
- * RETURN: Last argv index
- *
- * DESCRIPTION: Command line processing
- *
- ******************************************************************************/
-
-static int
-AslCommandLine (
- int argc,
- char **argv)
-{
- int BadCommandLine = 0;
- ACPI_STATUS Status;
-
-
- /* Minimum command line contains at least the command and an input file */
-
- if (argc < 2)
- {
- printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
- Usage ();
- exit (1);
- }
-
- /* Process all command line options */
-
- BadCommandLine = AslDoOptions (argc, argv, FALSE);
-
- if (Gbl_DoTemplates)
- {
- Status = DtCreateTemplates (Gbl_TemplateSignature);
- if (ACPI_FAILURE (Status))
- {
- exit (-1);
- }
- exit (1);
- }
-
- /* Next parameter must be the input filename */
-
- if (!argv[AcpiGbl_Optind] &&
- !Gbl_DisasmFlag &&
- !Gbl_GetAllTables)
- {
- printf ("Missing input filename\n");
- BadCommandLine = TRUE;
- }
-
- if (Gbl_DoSignon)
- {
- printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
- if (Gbl_IgnoreErrors)
- {
- printf ("Ignoring all errors, forcing AML file generation\n\n");
- }
- }
-
- /* Abort if anything went wrong on the command line */
-
- if (BadCommandLine)
- {
- printf ("\n");
- Usage ();
- exit (1);
- }
-
- return (AcpiGbl_Optind);
}
@@ -1021,24 +287,24 @@ main (
int Index2;
- signal (SIGINT, AslSignalHandler);
+ ACPI_DEBUG_INITIALIZE (); /* For debug version only */
+ /* Initialize preprocessor and compiler before command line processing */
+
+ signal (SIGINT, AslSignalHandler);
AcpiGbl_ExternalFileList = NULL;
AcpiDbgLevel = 0;
-
-#ifdef _DEBUG
- _CrtSetDbgFlag (_CRTDBG_CHECK_ALWAYS_DF | _CRTDBG_LEAK_CHECK_DF |
- _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG));
-#endif
-
- /* Init and command line */
+ PrInitializePreprocessor ();
+ AslInitialize ();
Index1 = Index2 = AslCommandLine (argc, argv);
- AslInitialize ();
- PrInitializePreprocessor ();
+ /* Allocate the line buffer(s), must be after command line */
+
+ Gbl_LineBufferSize /= 2;
+ UtExpandLineBuffers ();
- /* Options that have no additional parameters or pathnames */
+ /* Perform global actions first/only */
if (Gbl_GetAllTables)
{
OpenPOWER on IntegriCloud