ACK: [PATCH 1/2] ACPICA: Update to version 20190816
Alex Hung
alex.hung at canonical.com
Fri Aug 16 19:51:22 UTC 2019
On 2019-08-16 11:41 a.m., Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> Changes in this release of ACPICA are detailed at the following
> link on the ACPICA developer mailing list:
>
> https://lists.acpica.org/pipermail/devel/2019-August/001949.html
>
> Also changed the fwtsiasl makefile to build new dtcompilerparser
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
> src/acpica/source/common/adwalk.c | 21 +-
> src/acpica/source/common/dmrestag.c | 6 +-
> src/acpica/source/common/dmtables.c | 4 +-
> src/acpica/source/common/dmtbdump2.c | 2 +-
> src/acpica/source/compiler/aslcache.c | 6 +-
> src/acpica/source/compiler/aslcodegen.c | 4 +-
> src/acpica/source/compiler/aslcompile.c | 29 +-
> src/acpica/source/compiler/aslcompiler.h | 18 +-
> src/acpica/source/compiler/asldebug.c | 2 +-
> src/acpica/source/compiler/asldefine.h | 2 +-
> src/acpica/source/compiler/aslglobal.h | 2 +-
> src/acpica/source/compiler/aslhelp.c | 1 +
> src/acpica/source/compiler/asllength.c | 9 +-
> src/acpica/source/compiler/asllistsup.c | 2 +-
> src/acpica/source/compiler/aslload.c | 11 +-
> src/acpica/source/compiler/aslmain.c | 30 +-
> src/acpica/source/compiler/aslmessages.c | 4 +-
> src/acpica/source/compiler/aslmessages.h | 2 +
> src/acpica/source/compiler/aslnamesp.c | 9 +-
> src/acpica/source/compiler/asloptions.c | 5 +
> src/acpica/source/compiler/aslparseop.c | 18 +-
> src/acpica/source/compiler/aslstartup.c | 1 +
> src/acpica/source/compiler/asltransform.c | 6 +
> src/acpica/source/compiler/asltypes.h | 3 +
> src/acpica/source/compiler/aslutils.c | 177 ++++++++---
> src/acpica/source/compiler/aslxrefout.c | 2 +-
> src/acpica/source/compiler/dtcompile.c | 84 +++--
> src/acpica/source/compiler/dtcompiler.h | 27 +-
> src/acpica/source/compiler/dtcompilerparser.l | 288 ++++++++++++++++++
> src/acpica/source/compiler/dtcompilerparser.y | 287 +++++++++++++++++
> src/acpica/source/compiler/dtfield.c | 4 +-
> src/acpica/source/compiler/dtio.c | 59 +++-
> src/acpica/source/compiler/dtparser.l | 2 -
> src/acpica/source/compiler/dttemplate.c | 2 +-
> src/acpica/source/compiler/prmacros.c | 2 +-
> src/acpica/source/compiler/prscan.c | 6 +-
> .../source/components/debugger/dbhistry.c | 2 +-
> .../source/components/debugger/dbinput.c | 10 +-
> .../source/components/debugger/dbmethod.c | 5 +
> .../source/components/debugger/dbstats.c | 92 +++---
> src/acpica/source/components/events/evgpe.c | 9 +
> src/acpica/source/components/events/evxfgpe.c | 27 ++
> .../source/components/executer/exconfig.c | 4 +-
> .../source/components/executer/exdump.c | 6 +-
> .../source/components/namespace/nsaccess.c | 2 +-
> .../source/components/namespace/nsalloc.c | 2 +-
> .../source/components/namespace/nsdump.c | 2 +-
> .../source/components/namespace/nsrepair2.c | 2 +-
> src/acpica/source/components/tables/tbdata.c | 1 +
> .../source/components/utilities/utdebug.c | 4 +-
> .../source/components/utilities/uterror.c | 6 +-
> .../source/components/utilities/utosi.c | 3 +-
> .../source/components/utilities/utownerid.c | 12 +-
> src/acpica/source/include/acconfig.h | 4 +-
> src/acpica/source/include/aclocal.h | 4 +-
> src/acpica/source/include/acobject.h | 2 +-
> src/acpica/source/include/acpiosxf.h | 1 +
> src/acpica/source/include/acpixf.h | 14 +-
> src/acpica/source/include/acstruct.h | 2 +-
> src/acpica/source/include/actypes.h | 20 +-
> src/acpica/source/include/acutils.h | 9 +-
> src/libfwtsiasl/Makefile.am | 12 +
> 62 files changed, 1157 insertions(+), 237 deletions(-)
> create mode 100644 src/acpica/source/compiler/dtcompilerparser.l
> create mode 100644 src/acpica/source/compiler/dtcompilerparser.y
>
> diff --git a/src/acpica/source/common/adwalk.c b/src/acpica/source/common/adwalk.c
> index d9bd4d9e..6da2e8ec 100644
> --- a/src/acpica/source/common/adwalk.c
> +++ b/src/acpica/source/common/adwalk.c
> @@ -480,6 +480,7 @@ AcpiDmDumpDescending (
> {
> ACPI_OP_WALK_INFO *Info = Context;
> char *Path;
> + ACPI_STATUS Status;
>
>
> if (!Op)
> @@ -522,10 +523,18 @@ AcpiDmDumpDescending (
>
> if (Op->Common.Value.String)
> {
> - AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String,
> + Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String,
> NULL, &Path);
> - AcpiOsPrintf ("%s %p", Path, Op->Common.Node);
> - ACPI_FREE (Path);
> + if (ACPI_SUCCESS (Status))
> + {
> + AcpiOsPrintf ("%s %p", Path, Op->Common.Node);
> + ACPI_FREE (Path);
> + }
> + else
> + {
> + AcpiOsPrintf ("Could not externalize pathname for node [%4.4s]",
> + Op->Common.Node->Name.Ascii);
> + }
> }
> else
> {
> @@ -830,9 +839,9 @@ AcpiDmLoadDescendingOp (
> * 2) Not the root node
> * 3) Not a node created by Scope
> */
> -
> - if (!PreDefined && Node != AcpiGbl_RootNode &&
> - Op->Common.AmlOpcode != AML_SCOPE_OP)
> + if (!PreDefined &&
> + (Node != AcpiGbl_RootNode) &&
> + (Op->Common.AmlOpcode != AML_SCOPE_OP))
> {
> Node->OwnerId = WalkState->OwnerId;
> }
> diff --git a/src/acpica/source/common/dmrestag.c b/src/acpica/source/common/dmrestag.c
> index 8ab92d71..072409f7 100644
> --- a/src/acpica/source/common/dmrestag.c
> +++ b/src/acpica/source/common/dmrestag.c
> @@ -833,8 +833,12 @@ AcpiGetTagPathname (
>
> /* Internalize the namepath to AML format */
>
> - AcpiNsInternalizeName (Pathname, &InternalPath);
> + Status = AcpiNsInternalizeName (Pathname, &InternalPath);
> ACPI_FREE (Pathname);
> + if (ACPI_FAILURE (Status))
> + {
> + return (NULL);
> + }
>
> /* Update the Op with the symbol */
>
> diff --git a/src/acpica/source/common/dmtables.c b/src/acpica/source/common/dmtables.c
> index f9579509..a2dbea62 100644
> --- a/src/acpica/source/common/dmtables.c
> +++ b/src/acpica/source/common/dmtables.c
> @@ -443,8 +443,8 @@ AdGetLocalTables (
> /* Get the DSDT via table override */
>
> ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_DSDT);
> - AcpiOsTableOverride (&TableHeader, &NewTable);
> - if (!NewTable)
> + Status = AcpiOsTableOverride (&TableHeader, &NewTable);
> + if (ACPI_FAILURE (Status) || !NewTable)
> {
> fprintf (stderr, "Could not obtain DSDT\n");
> return (AE_NO_ACPI_TABLES);
> diff --git a/src/acpica/source/common/dmtbdump2.c b/src/acpica/source/common/dmtbdump2.c
> index a2d09b31..418b6ec0 100644
> --- a/src/acpica/source/common/dmtbdump2.c
> +++ b/src/acpica/source/common/dmtbdump2.c
> @@ -871,7 +871,7 @@ AcpiDmDumpMcfg (
> if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length)
> {
> AcpiOsPrintf ("Warning: there are %u invalid trailing bytes\n",
> - sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
> + (UINT32) sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
> return;
> }
>
> diff --git a/src/acpica/source/compiler/aslcache.c b/src/acpica/source/compiler/aslcache.c
> index f8e7c658..132497b5 100644
> --- a/src/acpica/source/compiler/aslcache.c
> +++ b/src/acpica/source/compiler/aslcache.c
> @@ -421,7 +421,7 @@ UtDeleteLocalCaches (
> DbgPrint (ASL_DEBUG_OUTPUT,
> "%u ParseOps, Buffer size: %u ops (%u bytes), %u Buffers\n",
> AslGbl_ParseOpCount, ASL_PARSEOP_CACHE_SIZE,
> - (sizeof (ACPI_PARSE_OBJECT) * ASL_PARSEOP_CACHE_SIZE), BufferCount);
> + ((UINT32) sizeof (ACPI_PARSE_OBJECT) * ASL_PARSEOP_CACHE_SIZE), BufferCount);
>
> /* Reset cache globals */
>
> @@ -445,7 +445,7 @@ UtDeleteLocalCaches (
> DbgPrint (ASL_DEBUG_OUTPUT,
> "%u Fields, Buffer size: %u fields (%u bytes), %u Buffers\n",
> AslGbl_FieldCount, ASL_FIELD_CACHE_SIZE,
> - (sizeof (DT_FIELD) * ASL_FIELD_CACHE_SIZE), BufferCount);
> + ((UINT32) sizeof (DT_FIELD) * ASL_FIELD_CACHE_SIZE), BufferCount);
>
> /* Reset cache globals */
>
> @@ -468,7 +468,7 @@ UtDeleteLocalCaches (
> DbgPrint (ASL_DEBUG_OUTPUT,
> "%u Subtables, Buffer size: %u subtables (%u bytes), %u Buffers\n",
> AslGbl_SubtableCount, ASL_SUBTABLE_CACHE_SIZE,
> - (sizeof (DT_SUBTABLE) * ASL_SUBTABLE_CACHE_SIZE), BufferCount);
> + ((UINT32) sizeof (DT_SUBTABLE) * ASL_SUBTABLE_CACHE_SIZE), BufferCount);
>
> /* Reset cache globals */
>
> diff --git a/src/acpica/source/compiler/aslcodegen.c b/src/acpica/source/compiler/aslcodegen.c
> index 54b5ac2c..86f85074 100644
> --- a/src/acpica/source/compiler/aslcodegen.c
> +++ b/src/acpica/source/compiler/aslcodegen.c
> @@ -618,8 +618,8 @@ CgWriteTableHeader (
> Op->Asl.AmlSubtreeLength +=
> strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3;
>
> - CvDbgPrint (" Length: %lu\n",
> - strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3);
> + CvDbgPrint (" Length: %u\n",
> + (UINT32) strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3);
>
> if (Op->Asl.CommentList)
> {
> diff --git a/src/acpica/source/compiler/aslcompile.c b/src/acpica/source/compiler/aslcompile.c
> index 5f152dc9..9214cfdf 100644
> --- a/src/acpica/source/compiler/aslcompile.c
> +++ b/src/acpica/source/compiler/aslcompile.c
> @@ -853,10 +853,11 @@ CmDumpAllEvents (
> *
> ******************************************************************************/
>
> -void
> +int
> CmCleanupAndExit (
> void)
> {
> + int Status = 0;
> BOOLEAN DeleteAmlFile = FALSE;
> ASL_GLOBAL_FILE_NODE *CurrentFileNode = AslGbl_FilesList;
>
> @@ -915,20 +916,38 @@ CmCleanupAndExit (
> UtDisplaySummary (ASL_FILE_STDOUT);
>
> /*
> - * We will delete the AML file if there are errors and the
> - * force AML output option has not been used.
> + * Delete the AML file if there are errors and the force AML output option
> + * (-f) has not been used.
> + *
> + * Return -1 as a status of the compiler if no AML files are generated. If
> + * the AML file is generated in the presence of errors, return 0. In the
> + * latter case, the errors were ignored by the user so the compilation is
> + * considered successful.
> */
> - if (AslGbl_ParserErrorDetected || AslGbl_PreprocessOnly || ((AslGbl_ExceptionCount[ASL_ERROR] > 0) &&
> + if (AslGbl_ParserErrorDetected || AslGbl_PreprocessOnly ||
> + ((AslGbl_ExceptionCount[ASL_ERROR] > 0) &&
> (!AslGbl_IgnoreErrors) &&
> AslGbl_Files[ASL_FILE_AML_OUTPUT].Handle))
> {
> DeleteAmlFile = TRUE;
> + Status = -1;
> }
>
> /* Close all open files */
>
> while (CurrentFileNode)
> {
> + /*
> + * Set the program return status based on file errors. If there are any
> + * errors and during compilation, the command is not considered
> + * successful.
> + */
> + if (Status != -1 && !AslGbl_IgnoreErrors &&
> + CurrentFileNode->ParserErrorDetected)
> + {
> + Status = -1;
> + }
> +
> switch (FlSwitchFileSet (CurrentFileNode->Files[ASL_FILE_INPUT].Filename))
> {
> case SWITCH_TO_SAME_FILE:
> @@ -952,6 +971,8 @@ CmCleanupAndExit (
> {
> UtDeleteLocalCaches ();
> }
> +
> + return (Status);
> }
>
>
> diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h
> index 5c4bdc17..01ab3924 100644
> --- a/src/acpica/source/compiler/aslcompiler.h
> +++ b/src/acpica/source/compiler/aslcompiler.h
> @@ -266,7 +266,7 @@ void
> CmDoOutputFiles (
> void);
>
> -void
> +int
> CmCleanupAndExit (
> void);
>
> @@ -1052,6 +1052,7 @@ void
> FlCloseFile (
> UINT32 FileId);
>
> +ACPI_PRINTF_LIKE (2)
> void
> FlPrintFile (
> UINT32 FileId,
> @@ -1195,6 +1196,7 @@ OtXrefWalkPart1 (
> /*
> * aslutils - common compiler utilities
> */
> +ACPI_PRINTF_LIKE(2)
> void
> DbgPrint (
> UINT32 Type,
> @@ -1288,6 +1290,10 @@ UtInternalizeName (
> char *ExternalName,
> char **ConvertedName);
>
> +BOOLEAN
> +UtNameContainsAllPrefix (
> + ACPI_PARSE_OBJECT *Op);
> +
> void
> UtAttachNamepathToOwner (
> ACPI_PARSE_OBJECT *Op,
> @@ -1303,6 +1309,15 @@ UINT64
> UtDoConstant (
> char *String);
>
> +char *
> +AcpiUtStrdup (
> + char *String);
> +
> +char *
> +AcpiUtStrcat (
> + char *String1,
> + char *String2);
> +
>
> /*
> * asluuid - UUID support
> @@ -1604,6 +1619,7 @@ DtCreateTemplates (
> /*
> * ASL/ASL+ converter debug
> */
> +ACPI_PRINTF_LIKE (1)
> void
> CvDbgPrint (
> char *Fmt,
> diff --git a/src/acpica/source/compiler/asldebug.c b/src/acpica/source/compiler/asldebug.c
> index 2c1dab79..469a58e5 100644
> --- a/src/acpica/source/compiler/asldebug.c
> +++ b/src/acpica/source/compiler/asldebug.c
> @@ -239,7 +239,7 @@ UtDumpIntegerOp (
> case 8: /* Dword */
>
> DbgPrint (ASL_TREE_OUTPUT,
> - "%*.*X", IntegerLength, IntegerLength, Op->Asl.Value.Integer);
> + "%*.*X", IntegerLength, IntegerLength, (UINT32) Op->Asl.Value.Integer);
> break;
>
> case 16: /* Qword and Integer */
> diff --git a/src/acpica/source/compiler/asldefine.h b/src/acpica/source/compiler/asldefine.h
> index c5111875..0ba08962 100644
> --- a/src/acpica/source/compiler/asldefine.h
> +++ b/src/acpica/source/compiler/asldefine.h
> @@ -290,7 +290,7 @@
>
> #define ASL_PARSE_TREE_DEBUG2 \
> " %08X %04X %04X %01X %04X %04X %05X %05X "\
> - "%08X %08X %08X %08X %08X %08X %04X %02d %5d %5d %5d %5d"
> + "%8p %8p %8p %8p %08X %08X %04X %02d %5d %5d %5d %5d"
>
> /*
> * Macros for ASL/ASL+ converter
> diff --git a/src/acpica/source/compiler/aslglobal.h b/src/acpica/source/compiler/aslglobal.h
> index 740f7f34..9020c14d 100644
> --- a/src/acpica/source/compiler/aslglobal.h
> +++ b/src/acpica/source/compiler/aslglobal.h
> @@ -244,7 +244,6 @@ extern const char *AslGbl_SpecialNamedObjects[MAX_SPECIAL_NAME
> #endif
>
>
> -
> /*
> * Parser and other externals
> */
> @@ -254,6 +253,7 @@ extern int DtParserdebug;
> extern int PrParserdebug;
> extern const ASL_MAPPING_ENTRY AslKeywordMapping[];
> extern char *AslCompilertext;
> +extern char *DtCompilerParsertext;
>
> /*
> * Older versions of Bison won't emit this external in the generated header.
> diff --git a/src/acpica/source/compiler/aslhelp.c b/src/acpica/source/compiler/aslhelp.c
> index f51b07f8..47d9d306 100644
> --- a/src/acpica/source/compiler/aslhelp.c
> +++ b/src/acpica/source/compiler/aslhelp.c
> @@ -247,6 +247,7 @@ Usage (
> ACPI_OPTION ("", " (Original comments are passed through to ASL+ file)");
>
> printf ("\nData Table Compiler:\n");
> + ACPI_OPTION ("-tp", "Compile tables with flex/bison prototype");
> ACPI_OPTION ("-G", "Compile custom table that contains generic operators");
> ACPI_OPTION ("-T <sig list>|ALL", "Create ACPI table template/example files");
> ACPI_OPTION ("-T <count>", "Emit DSDT and <count> SSDTs to same file");
> diff --git a/src/acpica/source/compiler/asllength.c b/src/acpica/source/compiler/asllength.c
> index b9bb3d67..6778bf64 100644
> --- a/src/acpica/source/compiler/asllength.c
> +++ b/src/acpica/source/compiler/asllength.c
> @@ -479,12 +479,13 @@ CgGenerateAmlLengths (
> Op->Asl.AmlLength = strlen (Buffer);
>
> /*
> - * Check for single backslash reference to root,
> - * make it a null terminated string in the AML
> + * Check for single backslash reference to root or reference to a name
> + * consisting of only prefix (^) characters. Make it a null terminated
> + * string in the AML.
> */
> - if (Op->Asl.AmlLength == 1)
> + if (Op->Asl.AmlLength == 1 || UtNameContainsAllPrefix(Op))
> {
> - Op->Asl.AmlLength = 2;
> + Op->Asl.AmlLength++;
> }
> break;
>
> diff --git a/src/acpica/source/compiler/asllistsup.c b/src/acpica/source/compiler/asllistsup.c
> index e54adb52..9663740a 100644
> --- a/src/acpica/source/compiler/asllistsup.c
> +++ b/src/acpica/source/compiler/asllistsup.c
> @@ -241,7 +241,7 @@ LsDumpAsciiInComment (
> {
> /* Insert a space to break the sequence */
>
> - FlPrintFile (FileId, ".", BufChar);
> + FlPrintFile (FileId, " ");
> }
>
> FlPrintFile (FileId, "%c", BufChar);
> diff --git a/src/acpica/source/compiler/aslload.c b/src/acpica/source/compiler/aslload.c
> index 4dd2dfd0..d918c0cc 100644
> --- a/src/acpica/source/compiler/aslload.c
> +++ b/src/acpica/source/compiler/aslload.c
> @@ -275,7 +275,6 @@ LdLoadFieldElements (
> ACPI_STATUS Status;
>
>
> -
> SourceRegion = UtGetArg (Op, 0);
> if (SourceRegion)
> {
> @@ -1031,7 +1030,8 @@ FinishNode:
> * DESCRIPTION: Check if certain named objects are declared in the incorrect
> * scope. Special named objects are listed in
> * AslGbl_SpecialNamedObjects and can only be declared at the root
> - * scope.
> + * scope. _UID inside of a processor declaration must not be a
> + * string.
> *
> ******************************************************************************/
>
> @@ -1052,6 +1052,13 @@ LdCheckSpecialNames (
> return;
> }
> }
> +
> + if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, "_UID") &&
> + Node->Parent->Type == ACPI_TYPE_PROCESSOR &&
> + Node->Type == ACPI_TYPE_STRING)
> + {
> + AslError (ASL_ERROR, ASL_MSG_INVALID_PROCESSOR_UID , Op, "found a string");
> + }
> }
>
>
> diff --git a/src/acpica/source/compiler/aslmain.c b/src/acpica/source/compiler/aslmain.c
> index 2afb20f6..605c412f 100644
> --- a/src/acpica/source/compiler/aslmain.c
> +++ b/src/acpica/source/compiler/aslmain.c
> @@ -282,7 +282,6 @@ main (
> if (ACPI_FAILURE (Status))
> {
> ReturnStatus = -1;
> - goto CleanupAndExit;
> }
>
> Index2++;
> @@ -290,9 +289,10 @@ main (
>
> /*
> * At this point, compilation of a data table or disassembly is complete.
> + * However, if there is a parse tree, perform compiler analysis and
> + * generate AML.
> */
> - if (AslGbl_PreprocessOnly || AcpiGbl_DisasmFlag ||
> - AslGbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
> + if (AslGbl_PreprocessOnly || AcpiGbl_DisasmFlag || !AslGbl_ParseTreeRoot)
> {
> goto CleanupAndExit;
> }
> @@ -338,7 +338,6 @@ main (
> }
>
>
> -
> CleanupAndExit:
>
> UtFreeLineBuffers ();
> @@ -350,7 +349,7 @@ CleanupAndExit:
>
> if (!AcpiGbl_DisasmFlag)
> {
> - CmCleanupAndExit ();
> + ReturnStatus = CmCleanupAndExit ();
> }
>
>
> @@ -400,18 +399,21 @@ AslSignalHandler (
> * Close all open files
> * Note: the .pre file is the same as the input source file
> */
> - AslGbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL;
> -
> - for (i = ASL_FILE_INPUT; i < ASL_MAX_FILE_TYPE; i++)
> + if (AslGbl_Files)
> {
> - FlCloseFile (i);
> - }
> + AslGbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL;
>
> - /* Delete any output files */
> + for (i = ASL_FILE_INPUT; i < ASL_MAX_FILE_TYPE; i++)
> + {
> + FlCloseFile (i);
> + }
>
> - for (i = ASL_FILE_AML_OUTPUT; i < ASL_MAX_FILE_TYPE; i++)
> - {
> - FlDeleteFile (i);
> + /* Delete any output files */
> +
> + for (i = ASL_FILE_AML_OUTPUT; i < ASL_MAX_FILE_TYPE; i++)
> + {
> + FlDeleteFile (i);
> + }
> }
>
> printf (ASL_PREFIX "Terminating\n");
> diff --git a/src/acpica/source/compiler/aslmessages.c b/src/acpica/source/compiler/aslmessages.c
> index 48c4dbab..8dd989ca 100644
> --- a/src/acpica/source/compiler/aslmessages.c
> +++ b/src/acpica/source/compiler/aslmessages.c
> @@ -366,7 +366,9 @@ const char *AslCompilerMsgs [] =
> /* ASL_MSG_TEMPORARY_OBJECT */ "Object is created temporarily in another method and cannot be accessed",
> /* ASL_MSG_UNDEFINED_EXTERNAL */ "Named object was declared external but the actual definition does not exist",
> /* ASL_MSG_BUFFER_FIELD_OVERFLOW */ "Buffer field extends beyond end of target buffer",
> -/* ASL_MSG_INVALID_SPECIAL_NAME */ "declaration of this named object outside root scope is illegal"
> +/* ASL_MSG_INVALID_SPECIAL_NAME */ "declaration of this named object outside root scope is illegal",
> +/* ASL_MSG_INVALID_PROCESSOR_UID */ "_UID inside processor declaration must be an integer",
> +/* ASL_MSG_LEGACY_PROCESSOR_OP */ "Legacy Processor() keyword detected. Use Device() keyword instead."
> };
>
> /* Table compiler */
> diff --git a/src/acpica/source/compiler/aslmessages.h b/src/acpica/source/compiler/aslmessages.h
> index d998f0fe..55473fb5 100644
> --- a/src/acpica/source/compiler/aslmessages.h
> +++ b/src/acpica/source/compiler/aslmessages.h
> @@ -369,6 +369,8 @@ typedef enum
> ASL_MSG_UNDEFINED_EXTERNAL,
> ASL_MSG_BUFFER_FIELD_OVERFLOW,
> ASL_MSG_INVALID_SPECIAL_NAME,
> + ASL_MSG_INVALID_PROCESSOR_UID,
> + ASL_MSG_LEGACY_PROCESSOR_OP,
>
> /* These messages are used by the Data Table compiler only */
>
> diff --git a/src/acpica/source/compiler/aslnamesp.c b/src/acpica/source/compiler/aslnamesp.c
> index a3c445af..b5af0cb3 100644
> --- a/src/acpica/source/compiler/aslnamesp.c
> +++ b/src/acpica/source/compiler/aslnamesp.c
> @@ -276,7 +276,7 @@ NsDoOneNamespaceObject (
>
> FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%5u [%u] %*s %4.4s - %s",
> AslGbl_NumNamespaceObjects, Level, (Level * 3), " ",
> - &Node->Name, AcpiUtGetTypeName (Node->Type));
> + &Node->Name.Ascii[0], AcpiUtGetTypeName (Node->Type));
>
> Op = Node->Op;
> ObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node->Object);
> @@ -429,7 +429,7 @@ NsDoOneNamespaceObject (
> {
> FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
> " [Initial Length 0x%.2X elements]",
> - Op->Asl.Value.Integer);
> + (UINT32) Op->Asl.Value.Integer);
> }
> break;
>
> @@ -452,7 +452,7 @@ NsDoOneNamespaceObject (
> {
> FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
> " [Initial Length 0x%.2X bytes]",
> - Op->Asl.Value.Integer);
> + (UINT32) Op->Asl.Value.Integer);
> }
> break;
>
> @@ -531,7 +531,8 @@ NsDoOnePathname (
> return (Status);
> }
>
> - FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%s\n", TargetPath.Pointer);
> + FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%s\n",
> + ACPI_CAST_PTR (char, TargetPath.Pointer));
> ACPI_FREE (TargetPath.Pointer);
> return (AE_OK);
> }
> diff --git a/src/acpica/source/compiler/asloptions.c b/src/acpica/source/compiler/asloptions.c
> index dc00e1d2..7c178149 100644
> --- a/src/acpica/source/compiler/asloptions.c
> +++ b/src/acpica/source/compiler/asloptions.c
> @@ -837,6 +837,11 @@ AslDoOptions (
> AslGbl_HexOutputFlag = HEX_OUTPUT_C;
> break;
>
> + case 'p': /* data table flex/bison prototype */
> +
> + AslGbl_DtLexBisonPrototype = TRUE;
> + break;
> +
> case 's':
>
> AslGbl_HexOutputFlag = HEX_OUTPUT_ASL;
> diff --git a/src/acpica/source/compiler/aslparseop.c b/src/acpica/source/compiler/aslparseop.c
> index 8fa99f3e..59a54864 100644
> --- a/src/acpica/source/compiler/aslparseop.c
> +++ b/src/acpica/source/compiler/aslparseop.c
> @@ -403,22 +403,22 @@ TrCreateValuedLeafOp (
> {
> case PARSEOP_STRING_LITERAL:
>
> - DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Value);
> + DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Op->Asl.Value.String);
> break;
>
> case PARSEOP_NAMESEG:
>
> - DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Value);
> + DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Op->Asl.Value.String);
> break;
>
> case PARSEOP_NAMESTRING:
>
> - DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Value);
> + DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Op->Asl.Value.String);
> break;
>
> case PARSEOP_EISAID:
>
> - DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Value);
> + DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Op->Asl.Value.String);
> break;
>
> case PARSEOP_METHOD:
> @@ -693,7 +693,8 @@ TrCreateConstantLeafOp (
> time_t CurrentTime;
> char *StaticTimeString;
> char *TimeString;
> - char *Filename;
> + char *Filename = NULL;
> + ACPI_STATUS Status;
>
>
> switch (ParseOpcode)
> @@ -727,7 +728,12 @@ TrCreateConstantLeafOp (
>
> /* Get the simple filename from the full path */
>
> - FlSplitInputPathname (Op->Asl.Filename, NULL, &Filename);
> + Status = FlSplitInputPathname (Op->Asl.Filename, NULL, &Filename);
> + if (ACPI_FAILURE (Status))
> + {
> + return (NULL);
> + }
> +
> Op->Asl.Value.String = Filename;
> break;
>
> diff --git a/src/acpica/source/compiler/aslstartup.c b/src/acpica/source/compiler/aslstartup.c
> index 472f777c..c43c1a97 100644
> --- a/src/acpica/source/compiler/aslstartup.c
> +++ b/src/acpica/source/compiler/aslstartup.c
> @@ -467,6 +467,7 @@ AslDoOneFile (
> /* Determine input file type */
>
> AslGbl_FileType = AslDetectSourceFileType (&AslGbl_Files[ASL_FILE_INPUT]);
> + FileNode->FileType = AslGbl_FileType;
> if (AslGbl_FileType == ASL_INPUT_TYPE_BINARY)
> {
> return (AE_ERROR);
> diff --git a/src/acpica/source/compiler/asltransform.c b/src/acpica/source/compiler/asltransform.c
> index 5237c638..7dc642d8 100644
> --- a/src/acpica/source/compiler/asltransform.c
> +++ b/src/acpica/source/compiler/asltransform.c
> @@ -507,6 +507,12 @@ TrTransformSubtree (
> }
> break;
>
> + case PARSEOP_PROCESSOR:
> +
> + AslError (ASL_WARNING, ASL_MSG_LEGACY_PROCESSOR_OP, Op, Op->Asl.ExternalName);
> +
> + break;
> +
> default:
>
> /* Nothing to do here for other opcodes */
> diff --git a/src/acpica/source/compiler/asltypes.h b/src/acpica/source/compiler/asltypes.h
> index 8a6a0750..2df31eab 100644
> --- a/src/acpica/source/compiler/asltypes.h
> +++ b/src/acpica/source/compiler/asltypes.h
> @@ -505,9 +505,12 @@ typedef struct asl_files_node
> UINT32 TotalLineCount;
> UINT32 OriginalInputFileSize;
> UINT32 TotalKeywords;
> + UINT32 TotalFields;
> + UINT32 OutputByteLength;
> UINT32 TotalNamedObjects;
> UINT32 TotalExecutableOpcodes;
> BOOLEAN ParserErrorDetected;
> + UINT8 FileType;
>
> } ASL_GLOBAL_FILE_NODE;
>
> diff --git a/src/acpica/source/compiler/aslutils.c b/src/acpica/source/compiler/aslutils.c
> index 80149247..ed2948d0 100644
> --- a/src/acpica/source/compiler/aslutils.c
> +++ b/src/acpica/source/compiler/aslutils.c
> @@ -223,6 +223,7 @@ UtQueryForOverwrite (
> char *Pathname)
> {
> struct stat StatInfo;
> + int InChar = 0x34;
>
>
> if (!stat (Pathname, &StatInfo))
> @@ -230,7 +231,13 @@ UtQueryForOverwrite (
> fprintf (stderr, "Target file \"%s\" already exists, overwrite? [y|n] ",
> Pathname);
>
> - if (getchar () != 'y')
> + InChar = fgetc (stdin);
> + if (InChar == '\n')
> + {
> + InChar = fgetc (stdin);
> + }
> +
> + if ((InChar != 'y') && (InChar != 'Y'))
> {
> return (FALSE);
> }
> @@ -559,58 +566,54 @@ UtDisplayOneSummary (
>
> /* Summary of main input and output files */
>
> - if (AslGbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
> + FileNode = FlGetCurrentFileNode ();
> + if (!FileNode)
> + {
> + fprintf (stderr, "Summary could not be generated");
> + return;
> + }
> +
> + if (FileNode->ParserErrorDetected)
> + {
> + FlPrintFile (FileId,
> + "%-14s %s - Compilation aborted due to parser-detected syntax error(s)\n",
> + "Input file:", AslGbl_Files[ASL_FILE_INPUT].Filename);
> + }
> + else if (FileNode->FileType == ASL_INPUT_TYPE_ASCII_DATA)
> {
> FlPrintFile (FileId,
> - "%-14s %s - %u lines, %u bytes, %u fields\n",
> + "%-14s %s - %7u bytes %6u fields %8u source lines\n",
> "Table Input:",
> - AslGbl_Files[ASL_FILE_INPUT].Filename, AslGbl_CurrentLineNumber,
> - AslGbl_InputByteCount, AslGbl_InputFieldCount);
> + AslGbl_Files[ASL_FILE_INPUT].Filename,
> + FileNode->OriginalInputFileSize, FileNode->TotalFields,
> + FileNode->TotalLineCount);
>
> - if ((AslGbl_ExceptionCount[ASL_ERROR] == 0) || (AslGbl_IgnoreErrors))
> - {
> - FlPrintFile (FileId,
> - "%-14s %s - %u bytes\n",
> - "Binary Output:",
> - AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename, AslGbl_TableLength);
> - }
> + FlPrintFile (FileId,
> + "%-14s %s - %7u bytes\n",
> + "Binary Output:",
> + AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename, FileNode->OutputByteLength);
> }
> - else
> + else if (FileNode->FileType == ASL_INPUT_TYPE_ASCII_ASL)
> {
> - FileNode = FlGetCurrentFileNode ();
> - if (!FileNode)
> - {
> - fprintf (stderr, "Summary could not be generated");
> - return;
> - }
> - if (FileNode->ParserErrorDetected)
> - {
> - FlPrintFile (FileId,
> - "%-14s %s - Compilation aborted due to parser-detected syntax error(s)\n",
> - "ASL Input:", AslGbl_Files[ASL_FILE_INPUT].Filename);
> - }
> - else
> + FlPrintFile (FileId,
> + "%-14s %s - %7u bytes %6u keywords %6u source lines\n",
> + "ASL Input:",
> + AslGbl_Files[ASL_FILE_INPUT].Filename,
> + FileNode->OriginalInputFileSize,
> + FileNode->TotalKeywords,
> + FileNode->TotalLineCount);
> +
> + /* AML summary */
> +
> + if (DisplayAMLSummary)
> {
> FlPrintFile (FileId,
> - "%-14s %s - %7u bytes %6u keywords %6u source lines\n",
> - "ASL Input:",
> - AslGbl_Files[ASL_FILE_INPUT].Filename,
> - FileNode->OriginalInputFileSize,
> - FileNode->TotalKeywords,
> - FileNode->TotalLineCount);
> -
> - /* AML summary */
> -
> - if (DisplayAMLSummary)
> - {
> - FlPrintFile (FileId,
> - "%-14s %s - %7u bytes %6u opcodes %6u named objects\n",
> - "AML Output:",
> - AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename,
> - FlGetFileSize (ASL_FILE_AML_OUTPUT),
> - FileNode->TotalExecutableOpcodes,
> - FileNode->TotalNamedObjects);
> - }
> + "%-14s %s - %7u bytes %6u opcodes %6u named objects\n",
> + "AML Output:",
> + AslGbl_Files[ASL_FILE_AML_OUTPUT].Filename,
> + FlGetFileSize (ASL_FILE_AML_OUTPUT),
> + FileNode->TotalExecutableOpcodes,
> + FileNode->TotalNamedObjects);
> }
> }
>
> @@ -992,6 +995,37 @@ UtAttachNamepathToOwner (
> }
>
>
> +/*******************************************************************************
> + *
> + * FUNCTION: UtNameContainsAllPrefix
> + *
> + * PARAMETERS: Op - Op containing NameString
> + *
> + * RETURN: NameString consists of all ^ characters
> + *
> + * DESCRIPTION: Determine if this Op contains a name segment that consists of
> + * all '^' characters.
> + *
> + ******************************************************************************/
> +
> +BOOLEAN
> +UtNameContainsAllPrefix (
> + ACPI_PARSE_OBJECT *Op)
> +{
> + UINT32 Length = Op->Asl.AmlLength;
> + UINT32 i;
> +
> + for (i = 0; i < Length; i++)
> + {
> + if (Op->Asl.Value.String[i] != '^')
> + {
> + return (FALSE);
> + }
> + }
> +
> + return (TRUE);
> +}
> +
> /*******************************************************************************
> *
> * FUNCTION: UtDoConstant
> @@ -1026,3 +1060,56 @@ UtDoConstant (
>
> return (ConvertedInteger);
> }
> +
> +
> +/******************************************************************************
> + *
> + * FUNCTION: AcpiUtStrdup
> + *
> + * PARAMETERS: String1 - string to duplicate
> + *
> + * RETURN: int that signifies string relationship. Zero means strings
> + * are equal.
> + *
> + * DESCRIPTION: Duplicate the string using UtCacheAlloc to avoid manual memory
> + * reclamation.
> + *
> + ******************************************************************************/
> +
> +char *
> +AcpiUtStrdup (
> + char *String)
> +{
> + char *NewString = (char *) UtLocalCalloc (strlen (String) + 1);
> +
> +
> + strcpy (NewString, String);
> + return (NewString);
> +}
> +
> +
> +/******************************************************************************
> + *
> + * FUNCTION: AcpiUtStrcat
> + *
> + * PARAMETERS: String1
> + * String2
> + *
> + * RETURN: New string with String1 concatenated with String2
> + *
> + * DESCRIPTION: Concatenate string1 and string2
> + *
> + ******************************************************************************/
> +
> +char *
> +AcpiUtStrcat (
> + char *String1,
> + char *String2)
> +{
> + UINT32 String1Length = strlen (String1);
> + char *NewString = (char *) UtLocalCalloc (strlen (String1) + strlen (String2) + 1);
> +
> + strcpy (NewString, String1);
> + strcpy (NewString + String1Length, String2);
> + return (NewString);
> +}
> diff --git a/src/acpica/source/compiler/aslxrefout.c b/src/acpica/source/compiler/aslxrefout.c
> index 2bd43a07..ce8c8ddd 100644
> --- a/src/acpica/source/compiler/aslxrefout.c
> +++ b/src/acpica/source/compiler/aslxrefout.c
> @@ -799,7 +799,7 @@ OtXrefWalkPart3 (
> else
> {
> FlPrintFile (ASL_FILE_XREF_OUTPUT,
> - " %u references to this object in this module\n",
> + " %u references to this object in this module [%s]\n",
> XrefInfo->ThisObjectReferences, ParentPath);
> }
>
> diff --git a/src/acpica/source/compiler/dtcompile.c b/src/acpica/source/compiler/dtcompile.c
> index 09cb3e6c..b6a144fe 100644
> --- a/src/acpica/source/compiler/dtcompile.c
> +++ b/src/acpica/source/compiler/dtcompile.c
> @@ -161,7 +161,7 @@ static char VersionString[9];
>
> /* Local prototypes */
>
> -static ACPI_STATUS
> +void
> DtInitialize (
> void);
>
> @@ -196,16 +196,12 @@ DtDoCompile (
> ACPI_STATUS Status;
> UINT8 Event;
> DT_FIELD *FieldList;
> + ASL_GLOBAL_FILE_NODE *FileNode;
>
>
> /* Initialize globals */
>
> - Status = DtInitialize ();
> - if (ACPI_FAILURE (Status))
> - {
> - printf ("Error during compiler initialization, 0x%X\n", Status);
> - return (Status);
> - }
> + DtInitialize ();
>
> /* Preprocessor */
>
> @@ -223,13 +219,29 @@ DtDoCompile (
> }
> }
>
> - /*
> - * Scan the input file (file is already open) and
> - * build the parse tree
> - */
> - Event = UtBeginEvent ("Scan and parse input file");
> - FieldList = DtScanFile (AslGbl_Files[ASL_FILE_INPUT].Handle);
> - UtEndEvent (Event);
> + /* Compile the parse tree */
> +
> + if (AslGbl_DtLexBisonPrototype)
> + {
> + Event = UtBeginEvent ("Parse data table in prototype mode");
> +
> + DtCompilerInitLexer (AslGbl_Files[ASL_FILE_INPUT].Handle);
> + DtCompilerParserparse ();
> + FieldList = AslGbl_FieldList;
> + DtCompilerTerminateLexer ();
> +
> + UtEndEvent (Event);
> + }
> + else
> + {
> + /*
> + * Scan the input file (file is already open) and
> + * build the parse tree
> + */
> + Event = UtBeginEvent ("Scan and parse input file");
> + FieldList = DtScanFile (AslGbl_Files[ASL_FILE_INPUT].Handle);
> + UtEndEvent (Event);
> + }
>
> /* Did the parse tree get successfully constructed? */
>
> @@ -245,14 +257,27 @@ DtDoCompile (
>
> Event = UtBeginEvent ("Compile parse tree");
>
> - /*
> - * Compile the parse tree
> - */
> Status = DtCompileDataTable (&FieldList);
> UtEndEvent (Event);
>
> + FileNode = FlGetCurrentFileNode ();
> + if (!FileNode)
> + {
> + fprintf (stderr, "Summary for %s could not be generated",
> + AslGbl_Files[ASL_FILE_INPUT].Filename);
> + }
> + else
> + {
> + FileNode->TotalLineCount = AslGbl_CurrentLineNumber;
> + FileNode->OriginalInputFileSize = AslGbl_InputByteCount;
> + DbgPrint (ASL_PARSE_OUTPUT, "Line count: %u input file size: %u\n",
> + FileNode->TotalLineCount, FileNode->OriginalInputFileSize);
> + }
> +
> if (ACPI_FAILURE (Status))
> {
> + FileNode->ParserErrorDetected = TRUE;
> +
> /* TBD: temporary error message. Msgs should come from function above */
>
> DtError (ASL_ERROR, ASL_MSG_SYNTAX, NULL,
> @@ -276,6 +301,14 @@ DtDoCompile (
> HxDoHexOutput ();
> DtWriteTableToListing ();
>
> + /* Save the compile time statistics to the current file node */
> +
> + if (FileNode)
> + {
> + FileNode->TotalFields = AslGbl_InputFieldCount;
> + FileNode->OutputByteLength = AslGbl_TableLength;
> + }
> +
> return (Status);
> }
>
> @@ -293,25 +326,12 @@ DtDoCompile (
> *
> *****************************************************************************/
>
> -static ACPI_STATUS
> +void
> DtInitialize (
> void)
> {
> - ACPI_STATUS Status;
>
>
> - Status = AcpiOsInitialize ();
> - if (ACPI_FAILURE (Status))
> - {
> - return (Status);
> - }
> -
> - Status = AcpiUtInitGlobals ();
> - if (ACPI_FAILURE (Status))
> - {
> - return (Status);
> - }
> -
> AcpiUtSetIntegerWidth (2); /* Set width to 64 bits */
>
> AslGbl_FieldList = NULL;
> @@ -319,7 +339,7 @@ DtInitialize (
> AslGbl_SubtableStack = NULL;
>
> sprintf (VersionString, "%X", (UINT32) ACPI_CA_VERSION);
> - return (AE_OK);
> + return;
> }
>
>
> diff --git a/src/acpica/source/compiler/dtcompiler.h b/src/acpica/source/compiler/dtcompiler.h
> index ffa17f63..639c22cb 100644
> --- a/src/acpica/source/compiler/dtcompiler.h
> +++ b/src/acpica/source/compiler/dtcompiler.h
> @@ -194,7 +194,7 @@ typedef struct dt_field
> {
> char *Name; /* Field name (from name : value) */
> char *Value; /* Field value (from name : value) */
> - UINT32 StringLength;/* Length of Value */
> + UINT32 StringLength; /* Length of Value */
> struct dt_field *Next; /* Next field */
> struct dt_field *NextLabel; /* If field is a label, next label */
> UINT32 Line; /* Line number for this field */
> @@ -256,6 +256,10 @@ DT_EXTERN DT_FIELD DT_INIT_GLOBAL (*AslGbl_LabelList, NULL);
>
> DT_EXTERN UINT32 DT_INIT_GLOBAL (AslGbl_CurrentTableOffset, 0);
>
> +/* Data table compiler Flex/Bison prototype */
> +
> +DT_EXTERN BOOLEAN DT_INIT_GLOBAL (AslGbl_DtLexBisonPrototype, FALSE);
> +
> /* Local caches */
>
> DT_EXTERN UINT32 DT_INIT_GLOBAL (AslGbl_SubtableCount, 0);
> @@ -288,6 +292,14 @@ DtCompilePadding (
> UINT32 Length,
> DT_SUBTABLE **RetSubtable);
>
> +void
> +DtCreateField (
> + char *Name,
> + char *Value,
> + UINT32 Line,
> + UINT32 Offset,
> + UINT32 Column,
> + UINT32 NameColumn);
>
> /* dtio - binary and text input/output */
>
> @@ -427,10 +439,23 @@ DtCompileFlag (
>
> /* dtparser - lex/yacc files */
>
> +UINT64 DtCompilerParserResult; /* Expression return value */
> +int
> +DtCompilerParserparse (
> + void);
> +
> UINT64
> DtEvaluateExpression (
> char *ExprString);
>
> +void
> +DtCompilerInitLexer (
> + FILE *inFile);
> +
> +void
> +DtCompilerTerminateLexer (
> + void);
> +
> int
> DtInitLexer (
> char *String);
> diff --git a/src/acpica/source/compiler/dtcompilerparser.l b/src/acpica/source/compiler/dtcompilerparser.l
> new file mode 100644
> index 00000000..0d68f41e
> --- /dev/null
> +++ b/src/acpica/source/compiler/dtcompilerparser.l
> @@ -0,0 +1,288 @@
> +%{
> +/******************************************************************************
> + *
> + * Module Name: dtcompilerparser.l - Flex input file for table compiler lexer
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 1. Copyright Notice
> + *
> + * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp.
> + * All rights reserved.
> + *
> + * 2. License
> + *
> + * 2.1. This is your license from Intel Corp. under its intellectual property
> + * rights. You may have additional license terms from the party that provided
> + * you this software, covering your right to use that party's intellectual
> + * property rights.
> + *
> + * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
> + * copy of the source code appearing in this file ("Covered Code") an
> + * irrevocable, perpetual, worldwide license under Intel's copyrights in the
> + * base code distributed originally by Intel ("Original Intel Code") to copy,
> + * make derivatives, distribute, use and display any portion of the Covered
> + * Code in any form, with the right to sublicense such rights; and
> + *
> + * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
> + * license (with the right to sublicense), under only those claims of Intel
> + * patents that are infringed by the Original Intel Code, to make, use, sell,
> + * offer to sell, and import the Covered Code and derivative works thereof
> + * solely to the minimum extent necessary to exercise the above copyright
> + * license, and in no event shall the patent license extend to any additions
> + * to or modifications of the Original Intel Code. No other license or right
> + * is granted directly or by implication, estoppel or otherwise;
> + *
> + * The above copyright and patent license is granted only if the following
> + * conditions are met:
> + *
> + * 3. Conditions
> + *
> + * 3.1. Redistribution of Source with Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification with rights to further distribute source must include
> + * the above Copyright Notice, the above License, this list of Conditions,
> + * and the following Disclaimer and Export Compliance provision. In addition,
> + * Licensee must cause all Covered Code to which Licensee contributes to
> + * contain a file documenting the changes Licensee made to create that Covered
> + * Code and the date of any change. Licensee must include in that file the
> + * documentation of any changes made by any predecessor Licensee. Licensee
> + * must include a prominent statement that the modification is derived,
> + * directly or indirectly, from Original Intel Code.
> + *
> + * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification without rights to further distribute source must
> + * include the following Disclaimer and Export Compliance provision in the
> + * documentation and/or other materials provided with distribution. In
> + * addition, Licensee may not authorize further sublicense of source of any
> + * portion of the Covered Code, and must include terms to the effect that the
> + * license from Licensee to its licensee is limited to the intellectual
> + * property embodied in the software Licensee provides to its licensee, and
> + * not to intellectual property embodied in modifications its licensee may
> + * make.
> + *
> + * 3.3. Redistribution of Executable. Redistribution in executable form of any
> + * substantial portion of the Covered Code or modification must reproduce the
> + * above Copyright Notice, and the following Disclaimer and Export Compliance
> + * provision in the documentation and/or other materials provided with the
> + * distribution.
> + *
> + * 3.4. Intel retains all right, title, and interest in and to the Original
> + * Intel Code.
> + *
> + * 3.5. Neither the name Intel nor any other trademark owned or controlled by
> + * Intel shall be used in advertising or otherwise to promote the sale, use or
> + * other dealings in products derived from or relating to the Covered Code
> + * without prior written authorization from Intel.
> + *
> + * 4. Disclaimer and Export Compliance
> + *
> + * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
> + * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
> + * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
> + * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
> + * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
> + * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
> + * PARTICULAR PURPOSE.
> + *
> + * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
> + * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
> + * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
> + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
> + * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
> + * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
> + * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
> + * LIMITED REMEDY.
> + *
> + * 4.3. Licensee shall not export, either directly or indirectly, any of this
> + * software or system incorporating such software without first obtaining any
> + * required license or other approval from the U. S. Department of Commerce or
> + * any other agency or department of the United States Government. In the
> + * event Licensee exports any such software from the United States or
> + * re-exports any such software from a foreign destination, Licensee shall
> + * ensure that the distribution and export/re-export of the software is in
> + * compliance with all laws, regulations, orders, or other restrictions of the
> + * U.S. Export Administration Regulations. Licensee agrees that neither it nor
> + * any of its subsidiaries will export/re-export any technical data, process,
> + * software, or service, directly or indirectly, to any country for which the
> + * United States government or any agency thereof requires an export license,
> + * other governmental approval, or letter of assurance, without first obtaining
> + * such license, approval or letter.
> + *
> + *****************************************************************************
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * following license:
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + * notice, this list of conditions, and the following disclaimer,
> + * without modification.
> + * 2. Redistributions in binary form must reproduce at minimum a disclaimer
> + * substantially similar to the "NO WARRANTY" disclaimer below
> + * ("Disclaimer") and any redistribution must be conditioned upon
> + * including a substantially similar Disclaimer requirement for further
> + * binary redistribution.
> + * 3. Neither the names of the above-listed copyright holders nor the names
> + * of any contributors may be used to endorse or promote products derived
> + * from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * GNU General Public License ("GPL") version 2 as published by the Free
> + * Software Foundation.
> + *
> + *****************************************************************************/
> +
> +#include "aslcompiler.h"
> +#include "dtcompilerparser.y.h"
> +
> +YYSTYPE DtCompilerlval;
> +
> +#define _COMPONENT ACPI_COMPILER
> + ACPI_MODULE_NAME ("dtcompilerscanner")
> +
> +/* handle locations */
> +
> +int DtCompilerParsercolumn = 1;
> +int DtCompilerParserByteOffset = 0;
> +
> +#define YY_USER_ACTION \
> + DtCompilerParserlloc.first_line = DtCompilerParserlloc.last_line = DtCompilerParserlineno; \
> + DtCompilerParserlloc.first_column = DtCompilerParsercolumn; \
> + DtCompilerParserlloc.first_byte_offset = DtCompilerParserByteOffset; \
> + DtCompilerParserlloc.last_column = DtCompilerParsercolumn + DtCompilerParserleng-1; \
> + DtCompilerParsercolumn += DtCompilerParserleng; \
> + DtCompilerParserByteOffset += DtCompilerParserleng; \
> + DbgPrint (ASL_PARSE_OUTPUT,\
> + "user action occurred. DtCompilerParserlloc.first_line: %u offset: %u\n",\
> + DtCompilerParserlloc.first_line, DtCompilerParserlloc.first_byte_offset);
> +%}
> +
> +%option nounput noinput yylineno
> +
> + /* Indicates a state used for parsing multiline C comments */
> +%x ML_COMMENT
> +%x DATA_STATE
> +
> +WhiteSpace [ \t\v\r]+
> +NewLines [\n]+
> +
> + /* Avoid ", \n, and [] as a part of label name. These are not valid characters of a label name */
> +LabelName [^ ":\n\[\]]([^":\n\[\]]*[^" :\n\[\]])?
> +
> + /* Avoid ", \n, \\, and [] as a part of data. These are not valid characters of data */
> +Data [^ \\":\n\[\]]([^":\n\[\]\\]*[^" :\n\[\]\\])?
> +
> +Text [^ ":\n][^":\n]*
> +Comment \[[^\n\[\]]*\]
> +CommentField {LabelName}{WhiteSpace}*:{WhiteSpace}{Comment}?$
> +
> +
> +%%
> +
> +<DATA_STATE>{WhiteSpace}"\\\n" {
> + DbgPrint(ASL_PARSE_OUTPUT,"Continuation matched\n");
> + return (DT_PARSEOP_LINE_CONTINUATION);
> + }
> +
> +":" {
> + DbgPrint(ASL_PARSE_OUTPUT, ": Matched\n");
> + BEGIN (DATA_STATE);
> + return (':');
> + }
> +
> +<INITIAL,DATA_STATE>{WhiteSpace} { DbgPrint(ASL_PARSE_OUTPUT,"Whitespace matched\n"); }
> +
> +<INITIAL,DATA_STATE>{Comment} { DbgPrint(ASL_PARSE_OUTPUT,"Comment matched\n"); }
> +
> +"/*" { BEGIN (ML_COMMENT); }
> +<ML_COMMENT>"*/" { BEGIN (INITIAL); }
> +<ML_COMMENT>"*/\n" { BEGIN (INITIAL); }
> +<ML_COMMENT>([^*]|\n)+|. /* Ignore */
> +"//".* /* Ignore */
> +
> +
> +<DATA_STATE>{Data} {
> + char *s;
> + int size = strlen (DtCompilerParsertext);
> + s=UtLocalCacheCalloc (size + 1);
> + AcpiUtSafeStrncpy (s, DtCompilerParsertext, size + 1);
> + DtCompilerParserlval.s = s;
> + DbgPrint (ASL_PARSE_OUTPUT, "Data: %s\n", s);
> + return (DT_PARSEOP_DATA);
> +}
> +
> +{CommentField} /* ignore */
> +
> +{LabelName} {
> + char *s;
> + int size = strlen (DtCompilerParsertext);
> + s=UtLocalCacheCalloc (size + 1);
> + AcpiUtSafeStrncpy (s, DtCompilerParsertext, size + 1);
> + DtCompilerParserlval.s = s;
> + DbgPrint (ASL_PARSE_OUTPUT, "Label: %s\n", s);
> + return (DT_PARSEOP_LABEL);
> +}
> +
> +
> +<DATA_STATE>\"{Text}?\" { // remove outer quotes from the string, they are unnecessary
> + char *s;
> + int size = strlen (DtCompilerParsertext);
> + s=UtLocalCacheCalloc (size - 1);
> + AcpiUtSafeStrncpy (s, DtCompilerParsertext + 1, size - 1);
> + DtCompilerParserlval.s = s;
> + DbgPrint (ASL_PARSE_OUTPUT, "String Data: %s\n", s);
> + BEGIN (INITIAL);
> + return (DT_PARSEOP_STRING_DATA);
> +}
> +
> +
> +<INITIAL,DATA_STATE>{NewLines} {
> + DbgPrint(ASL_PARSE_OUTPUT,
> + "Newline matched (data state). Current line number: %u\n",DtCompilerParserlineno);
> + BEGIN (INITIAL); DtCompilerParsercolumn = 1;
> +}
> +
> +
> +%%
> +
> +
> +/*
> + * Local support functions
> + */
> +
> +void
> +DtCompilerInitLexer (
> + FILE *inFile)
> +{
> + yyin = inFile;
> +}
> +
> +void
> +DtCompilerTerminateLexer (
> + void)
> +{
> + /*
> + * Flex/Bison increments the lineno for the EOF so decrement by 1 to get
> + * the correct number of lines.
> + */
> + AslGbl_CurrentLineNumber = DtCompilerParserlineno - 1;
> + AslGbl_InputByteCount = DtCompilerParserByteOffset;
> +}
> diff --git a/src/acpica/source/compiler/dtcompilerparser.y b/src/acpica/source/compiler/dtcompilerparser.y
> new file mode 100644
> index 00000000..ba9d2827
> --- /dev/null
> +++ b/src/acpica/source/compiler/dtcompilerparser.y
> @@ -0,0 +1,287 @@
> +%{
> +/******************************************************************************
> + *
> + * Module Name: dtcompilerparser.y - Bison input file for table compiler parser
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 1. Copyright Notice
> + *
> + * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp.
> + * All rights reserved.
> + *
> + * 2. License
> + *
> + * 2.1. This is your license from Intel Corp. under its intellectual property
> + * rights. You may have additional license terms from the party that provided
> + * you this software, covering your right to use that party's intellectual
> + * property rights.
> + *
> + * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
> + * copy of the source code appearing in this file ("Covered Code") an
> + * irrevocable, perpetual, worldwide license under Intel's copyrights in the
> + * base code distributed originally by Intel ("Original Intel Code") to copy,
> + * make derivatives, distribute, use and display any portion of the Covered
> + * Code in any form, with the right to sublicense such rights; and
> + *
> + * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
> + * license (with the right to sublicense), under only those claims of Intel
> + * patents that are infringed by the Original Intel Code, to make, use, sell,
> + * offer to sell, and import the Covered Code and derivative works thereof
> + * solely to the minimum extent necessary to exercise the above copyright
> + * license, and in no event shall the patent license extend to any additions
> + * to or modifications of the Original Intel Code. No other license or right
> + * is granted directly or by implication, estoppel or otherwise;
> + *
> + * The above copyright and patent license is granted only if the following
> + * conditions are met:
> + *
> + * 3. Conditions
> + *
> + * 3.1. Redistribution of Source with Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification with rights to further distribute source must include
> + * the above Copyright Notice, the above License, this list of Conditions,
> + * and the following Disclaimer and Export Compliance provision. In addition,
> + * Licensee must cause all Covered Code to which Licensee contributes to
> + * contain a file documenting the changes Licensee made to create that Covered
> + * Code and the date of any change. Licensee must include in that file the
> + * documentation of any changes made by any predecessor Licensee. Licensee
> + * must include a prominent statement that the modification is derived,
> + * directly or indirectly, from Original Intel Code.
> + *
> + * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification without rights to further distribute source must
> + * include the following Disclaimer and Export Compliance provision in the
> + * documentation and/or other materials provided with distribution. In
> + * addition, Licensee may not authorize further sublicense of source of any
> + * portion of the Covered Code, and must include terms to the effect that the
> + * license from Licensee to its licensee is limited to the intellectual
> + * property embodied in the software Licensee provides to its licensee, and
> + * not to intellectual property embodied in modifications its licensee may
> + * make.
> + *
> + * 3.3. Redistribution of Executable. Redistribution in executable form of any
> + * substantial portion of the Covered Code or modification must reproduce the
> + * above Copyright Notice, and the following Disclaimer and Export Compliance
> + * provision in the documentation and/or other materials provided with the
> + * distribution.
> + *
> + * 3.4. Intel retains all right, title, and interest in and to the Original
> + * Intel Code.
> + *
> + * 3.5. Neither the name Intel nor any other trademark owned or controlled by
> + * Intel shall be used in advertising or otherwise to promote the sale, use or
> + * other dealings in products derived from or relating to the Covered Code
> + * without prior written authorization from Intel.
> + *
> + * 4. Disclaimer and Export Compliance
> + *
> + * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
> + * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
> + * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
> + * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
> + * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
> + * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
> + * PARTICULAR PURPOSE.
> + *
> + * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
> + * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
> + * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
> + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
> + * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
> + * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
> + * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
> + * LIMITED REMEDY.
> + *
> + * 4.3. Licensee shall not export, either directly or indirectly, any of this
> + * software or system incorporating such software without first obtaining any
> + * required license or other approval from the U. S. Department of Commerce or
> + * any other agency or department of the United States Government. In the
> + * event Licensee exports any such software from the United States or
> + * re-exports any such software from a foreign destination, Licensee shall
> + * ensure that the distribution and export/re-export of the software is in
> + * compliance with all laws, regulations, orders, or other restrictions of the
> + * U.S. Export Administration Regulations. Licensee agrees that neither it nor
> + * any of its subsidiaries will export/re-export any technical data, process,
> + * software, or service, directly or indirectly, to any country for which the
> + * United States government or any agency thereof requires an export license,
> + * other governmental approval, or letter of assurance, without first obtaining
> + * such license, approval or letter.
> + *
> + *****************************************************************************
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * following license:
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + * notice, this list of conditions, and the following disclaimer,
> + * without modification.
> + * 2. Redistributions in binary form must reproduce at minimum a disclaimer
> + * substantially similar to the "NO WARRANTY" disclaimer below
> + * ("Disclaimer") and any redistribution must be conditioned upon
> + * including a substantially similar Disclaimer requirement for further
> + * binary redistribution.
> + * 3. Neither the names of the above-listed copyright holders nor the names
> + * of any contributors may be used to endorse or promote products derived
> + * from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * GNU General Public License ("GPL") version 2 as published by the Free
> + * Software Foundation.
> + *
> + *****************************************************************************/
> +
> +#include "aslcompiler.h"
> +
> +
> +#define _COMPONENT DT_COMPILER
> + ACPI_MODULE_NAME ("dtcompilerparser")
> +
> +void * AslLocalAllocate (unsigned int Size);
> +
> +/* Bison/yacc configuration */
> +
> +#undef alloca
> +#define alloca AslLocalAllocate
> +
> +int DtCompilerParserlex (void);
> +int DtCompilerParserparse (void);
> +void DtCompilerParsererror (char const *msg);
> +extern char *DtCompilerParsertext;
> +extern DT_FIELD *AslGbl_CurrentField;
> +
> +extern UINT64 DtCompilerParserResult; /* Expression return value */
> +extern UINT64 DtCompilerParserlineno; /* Current line number */
> +
> +/* Bison/yacc configuration */
> +
> +#define yytname DtCompilerParsername
> +#define YYDEBUG 1 /* Enable debug output */
> +#define YYERROR_VERBOSE 1 /* Verbose error messages */
> +#define YYFLAG -32768
> +
> +/* Define YYMALLOC/YYFREE to prevent redefinition errors */
> +
> +#define YYMALLOC malloc
> +#define YYFREE free
> +
> +%}
> +
> +%code requires {
> +
> + typedef struct YYLTYPE {
> + int first_line;
> + int last_line;
> + int first_column;
> + int last_column;
> + int first_byte_offset;
> + } YYLTYPE;
> +
> + #define YYLTYPE_IS_DECLARED 1
> +}
> +
> +
> +%union {
> + char *s;
> + DT_FIELD *f;
> +}
> +
> +
> +%type <f> Table
> +%token <s> DT_PARSEOP_DATA
> +%token <s> DT_PARSEOP_LABEL
> +%token <s> DT_PARSEOP_STRING_DATA
> +%token <s> DT_PARSEOP_LINE_CONTINUATION
> +%type <s> Data
> +%type <s> Datum
> +%type <s> MultiLineData
> +%type <s> MultiLineDataList
> +
> +
> +%%
> +
> +Table
> + :
> + FieldList { DtCompilerParserResult = 5;}
> + ;
> +
> +FieldList
> + : Field FieldList
> + | Field
> + ;
> +
> +Field
> + : DT_PARSEOP_LABEL ':' Data { DtCreateField ($1, $3, (@3).first_line, (@1).first_byte_offset, (@1).first_column, (@3).first_column); }
> + ;
> +
> +Data
> + : MultiLineDataList { $$ = $1; }
> + | Datum { $$ = $1; }
> + | Datum MultiLineDataList { $$ = $1; } /* combine the string with strcat */
> + ;
> +
> +MultiLineDataList
> + : MultiLineDataList MultiLineData { $$ = AcpiUtStrcat(AcpiUtStrcat($1, " "), $2); } /* combine the strings with strcat */
> + | MultiLineData { $$ = $1; }
> + ;
> +
> +MultiLineData
> + : DT_PARSEOP_LINE_CONTINUATION Datum { DbgPrint (ASL_PARSE_OUTPUT, "line continuation detected\n"); $$ = $2; }
> + ;
> +
> +Datum
> + : DT_PARSEOP_DATA { DbgPrint (ASL_PARSE_OUTPUT, "parser data: [%s]\n", DtCompilerParserlval.s); $$ = AcpiUtStrdup(DtCompilerParserlval.s); }
> + | DT_PARSEOP_STRING_DATA { DbgPrint (ASL_PARSE_OUTPUT, "parser string data: [%s]\n", DtCompilerParserlval.s); $$ = AcpiUtStrdup(DtCompilerParserlval.s); }
> + ;
> +
> +
> +%%
> +
> +
> +/*
> + * Local support functions, including parser entry point
> + */
> +/******************************************************************************
> + *
> + * FUNCTION: DtCompilerParsererror
> + *
> + * PARAMETERS: Message - Parser-generated error message
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Handler for parser errors
> + *
> + *****************************************************************************/
> +
> +void
> +DtCompilerParsererror (
> + char const *Message)
> +{
> + DtError (ASL_ERROR, ASL_MSG_SYNTAX,
> + AslGbl_CurrentField, (char *) Message);
> +}
> +
> +int
> +DtCompilerParserwrap(void)
> +{
> + return (1);
> +}
> diff --git a/src/acpica/source/compiler/dtfield.c b/src/acpica/source/compiler/dtfield.c
> index 74ebf570..1f716761 100644
> --- a/src/acpica/source/compiler/dtfield.c
> +++ b/src/acpica/source/compiler/dtfield.c
> @@ -280,7 +280,9 @@ DtCompileString (
>
> if (Length > ByteLength)
> {
> - sprintf (AslGbl_MsgBuffer, "Maximum %u characters", ByteLength);
> + sprintf (AslGbl_MsgBuffer,
> + "Maximum %u characters, found %u characters [%s]",
> + ByteLength, Length, Field->Value);
> DtError (ASL_ERROR, ASL_MSG_STRING_LENGTH, Field, AslGbl_MsgBuffer);
> Length = ByteLength;
> }
> diff --git a/src/acpica/source/compiler/dtio.c b/src/acpica/source/compiler/dtio.c
> index ae827513..d027353c 100644
> --- a/src/acpica/source/compiler/dtio.c
> +++ b/src/acpica/source/compiler/dtio.c
> @@ -493,6 +493,59 @@ DtParseLine (
> }
>
>
> +/******************************************************************************
> + *
> + * FUNCTION: DtCreateField
> + *
> + * PARAMETERS: Name
> + * Value
> + * Line
> + * Offset
> + * Column
> + * NameColumn
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Create a field
> + *
> + *****************************************************************************/
> +
> +void
> +DtCreateField (
> + char *Name,
> + char *Value,
> + UINT32 Line,
> + UINT32 Offset,
> + UINT32 Column,
> + UINT32 NameColumn)
> +{
> + DT_FIELD *Field = UtFieldCacheCalloc ();
> +
> +
> + Field->StringLength = 0;
> + if (Name)
> + {
> + Field->Name =
> + strcpy (UtLocalCacheCalloc (strlen (Name) + 1), Name);
> + }
> +
> + if (Value)
> + {
> + Field->StringLength = strlen (Value);
> + Field->Value =
> + strcpy (UtLocalCacheCalloc (Field->StringLength + 1), Value);
> + }
> +
> + Field->Line = Line;
> + Field->ByteOffset = Offset;
> + Field->NameColumn = NameColumn;
> + Field->Column = Column;
> + DtLinkField (Field);
> +
> + DtDumpFieldList (AslGbl_FieldList);
> +}
> +
> +
> /******************************************************************************
> *
> * FUNCTION: DtGetNextLine
> @@ -1117,7 +1170,7 @@ DtDumpSubtableInfo (
> {
>
> DbgPrint (ASL_DEBUG_OUTPUT,
> - "[%.04X] %24s %.08X %.08X %.08X %.08X %.08X %p %p %p\n",
> + "[%.04X] %24s %.08X %.08X %.08X %.08X %p %p %p %p\n",
> Subtable->Depth, Subtable->Name, Subtable->Length, Subtable->TotalLength,
> Subtable->SizeOfLengthField, Subtable->Flags, Subtable,
> Subtable->Parent, Subtable->Child, Subtable->Peer);
> @@ -1131,7 +1184,7 @@ DtDumpSubtableTree (
> {
>
> DbgPrint (ASL_DEBUG_OUTPUT,
> - "[%.04X] %24s %*s%08X (%.02X) - (%.02X)\n",
> + "[%.04X] %24s %*s%p (%.02X) - (%.02X)\n",
> Subtable->Depth, Subtable->Name, (4 * Subtable->Depth), " ",
> Subtable, Subtable->Length, Subtable->TotalLength);
> }
> @@ -1225,7 +1278,7 @@ DtWriteFieldToListing (
> if (strlen (Field->Value) > 64)
> {
> FlPrintFile (ASL_FILE_LISTING_OUTPUT, "...Additional data, length 0x%X\n",
> - strlen (Field->Value));
> + (UINT32) strlen (Field->Value));
> }
>
> FlPrintFile (ASL_FILE_LISTING_OUTPUT, "\n");
> diff --git a/src/acpica/source/compiler/dtparser.l b/src/acpica/source/compiler/dtparser.l
> index 2dc09334..72b14101 100644
> --- a/src/acpica/source/compiler/dtparser.l
> +++ b/src/acpica/source/compiler/dtparser.l
> @@ -227,7 +227,6 @@ int
> DtInitLexer (
> char *String)
> {
> -
> LexBuffer = yy_scan_string (String);
> return (LexBuffer == NULL);
> }
> @@ -236,6 +235,5 @@ void
> DtTerminateLexer (
> void)
> {
> -
> yy_delete_buffer (LexBuffer);
> }
> diff --git a/src/acpica/source/compiler/dttemplate.c b/src/acpica/source/compiler/dttemplate.c
> index 4cc6c040..a53b9521 100644
> --- a/src/acpica/source/compiler/dttemplate.c
> +++ b/src/acpica/source/compiler/dttemplate.c
> @@ -509,7 +509,7 @@ DtCreateOneTemplate (
> AcpiUtStrlwr (DisasmFilename);
> if (!UtQueryForOverwrite (DisasmFilename))
> {
> - return (AE_ERROR);
> + return (AE_OK);
> }
>
> File = fopen (DisasmFilename, "w+");
> diff --git a/src/acpica/source/compiler/prmacros.c b/src/acpica/source/compiler/prmacros.c
> index e3ee5beb..14be2a75 100644
> --- a/src/acpica/source/compiler/prmacros.c
> +++ b/src/acpica/source/compiler/prmacros.c
> @@ -223,7 +223,7 @@ PrAddDefine (
> DefineInfo = PrMatchDefine (Identifier);
> if (DefineInfo)
> {
> - DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID,
> + DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
> "#define: name already exists: %s\n",
> AslGbl_CurrentLineNumber, Identifier);
>
> diff --git a/src/acpica/source/compiler/prscan.c b/src/acpica/source/compiler/prscan.c
> index 9138ba5d..109da26a 100644
> --- a/src/acpica/source/compiler/prscan.c
> +++ b/src/acpica/source/compiler/prscan.c
> @@ -850,7 +850,7 @@ PrDoDirective (
>
> DbgPrint (ASL_PARSE_OUTPUT, PR_PREFIX_ID
> "Start #include file \"%s\"\n", AslGbl_CurrentLineNumber,
> - Token, AslGbl_CurrentLineNumber);
> + Token);
>
> PrDoIncludeFile (Token);
> break;
> @@ -1356,7 +1356,7 @@ PrDoIncludeBuffer (
> {
> if (!(i % 8))
> {
> - FlPrintFile (ASL_FILE_PREPROCESSOR, "\n ", c);
> + FlPrintFile (ASL_FILE_PREPROCESSOR, "\n ");
> }
>
> FlPrintFile (ASL_FILE_PREPROCESSOR, " 0x%2.2X,", c);
> @@ -1369,6 +1369,6 @@ PrDoIncludeBuffer (
>
> /* Close the Name() operator */
>
> - FlPrintFile (ASL_FILE_PREPROCESSOR, "\n})\n", BufferName);
> + FlPrintFile (ASL_FILE_PREPROCESSOR, "\n})\n");
> fclose (BinaryBufferFile);
> }
> diff --git a/src/acpica/source/components/debugger/dbhistry.c b/src/acpica/source/components/debugger/dbhistry.c
> index 6136c801..06971915 100644
> --- a/src/acpica/source/components/debugger/dbhistry.c
> +++ b/src/acpica/source/components/debugger/dbhistry.c
> @@ -284,7 +284,7 @@ AcpiDbDisplayHistory (
> {
> if (AcpiGbl_HistoryBuffer[HistoryIndex].Command)
> {
> - AcpiOsPrintf ("%3ld %s\n",
> + AcpiOsPrintf ("%3u %s\n",
> AcpiGbl_HistoryBuffer[HistoryIndex].CmdNum,
> AcpiGbl_HistoryBuffer[HistoryIndex].Command);
> }
> diff --git a/src/acpica/source/components/debugger/dbinput.c b/src/acpica/source/components/debugger/dbinput.c
> index d2e54b4e..d091d351 100644
> --- a/src/acpica/source/components/debugger/dbinput.c
> +++ b/src/acpica/source/components/debugger/dbinput.c
> @@ -785,7 +785,7 @@ AcpiDbGetLine (
> {
> AcpiOsPrintf (
> "Buffer overflow while parsing input line (max %u characters)\n",
> - sizeof (AcpiGbl_DbParsedBuf));
> + (UINT32) sizeof (AcpiGbl_DbParsedBuf));
> return (0);
> }
>
> @@ -1060,10 +1060,10 @@ AcpiDbCommandDispatch (
> if (ParamCount == 0)
> {
> AcpiOsPrintf (
> - "Current debug level for file output is: %8.8lX\n",
> + "Current debug level for file output is: %8.8X\n",
> AcpiGbl_DbDebugLevel);
> AcpiOsPrintf (
> - "Current debug level for console output is: %8.8lX\n",
> + "Current debug level for console output is: %8.8X\n",
> AcpiGbl_DbConsoleDebugLevel);
> }
> else if (ParamCount == 2)
> @@ -1072,7 +1072,7 @@ AcpiDbCommandDispatch (
> AcpiGbl_DbConsoleDebugLevel =
> strtoul (AcpiGbl_DbArgs[1], NULL, 16);
> AcpiOsPrintf (
> - "Debug Level for console output was %8.8lX, now %8.8lX\n",
> + "Debug Level for console output was %8.8X, now %8.8X\n",
> Temp, AcpiGbl_DbConsoleDebugLevel);
> }
> else
> @@ -1080,7 +1080,7 @@ AcpiDbCommandDispatch (
> Temp = AcpiGbl_DbDebugLevel;
> AcpiGbl_DbDebugLevel = strtoul (AcpiGbl_DbArgs[1], NULL, 16);
> AcpiOsPrintf (
> - "Debug Level for file output was %8.8lX, now %8.8lX\n",
> + "Debug Level for file output was %8.8X, now %8.8X\n",
> Temp, AcpiGbl_DbDebugLevel);
> }
> break;
> diff --git a/src/acpica/source/components/debugger/dbmethod.c b/src/acpica/source/components/debugger/dbmethod.c
> index 983faae0..6893c550 100644
> --- a/src/acpica/source/components/debugger/dbmethod.c
> +++ b/src/acpica/source/components/debugger/dbmethod.c
> @@ -493,6 +493,11 @@ AcpiDbDisassembleMethod (
> }
>
> Status = AcpiUtAllocateOwnerId (&ObjDesc->Method.OwnerId);
> + if (ACPI_FAILURE(Status))
> + {
> + return (Status);
> + }
> +
> WalkState->OwnerId = ObjDesc->Method.OwnerId;
>
> /* Push start scope on scope stack and make it current */
> diff --git a/src/acpica/source/components/debugger/dbstats.c b/src/acpica/source/components/debugger/dbstats.c
> index 06729cca..1293759d 100644
> --- a/src/acpica/source/components/debugger/dbstats.c
> +++ b/src/acpica/source/components/debugger/dbstats.c
> @@ -544,14 +544,14 @@ AcpiDbDisplayStatistics (
>
> for (i = 0; i < ACPI_TYPE_NS_NODE_MAX; i++)
> {
> - AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", AcpiUtGetTypeName (i),
> + AcpiOsPrintf ("%16.16s %10u %10u\n", AcpiUtGetTypeName (i),
> AcpiGbl_NodeTypeCount [i], AcpiGbl_ObjTypeCount [i]);
> }
>
> - AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "Misc/Unknown",
> + AcpiOsPrintf ("%16.16s %10u %10u\n", "Misc/Unknown",
> AcpiGbl_NodeTypeCountMisc, AcpiGbl_ObjTypeCountMisc);
>
> - AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "TOTALS:",
> + AcpiOsPrintf ("%16.16s %10u %10u\n", "TOTALS:",
> AcpiGbl_NumNodes, AcpiGbl_NumObjects);
> break;
>
> @@ -577,17 +577,15 @@ AcpiDbDisplayStatistics (
> case CMD_STAT_MISC:
>
> AcpiOsPrintf ("\nMiscellaneous Statistics:\n\n");
> - AcpiOsPrintf ("Calls to AcpiPsFind:.. ........% 7ld\n",
> + AcpiOsPrintf ("%-28s: %7u\n", "Calls to AcpiPsFind",
> AcpiGbl_PsFindCount);
> - AcpiOsPrintf ("Calls to AcpiNsLookup:..........% 7ld\n",
> + AcpiOsPrintf ("%-28s: %7u\n", "Calls to AcpiNsLookup",
> AcpiGbl_NsLookupCount);
>
> - AcpiOsPrintf ("\n");
> -
> - AcpiOsPrintf ("Mutex usage:\n\n");
> + AcpiOsPrintf ("\nMutex usage:\n\n");
> for (i = 0; i < ACPI_NUM_MUTEX; i++)
> {
> - AcpiOsPrintf ("%-28s: % 7ld\n",
> + AcpiOsPrintf ("%-28s: %7u\n",
> AcpiUtGetMutexName (i), AcpiGbl_MutexInfo[i].UseCount);
> }
> break;
> @@ -596,50 +594,50 @@ AcpiDbDisplayStatistics (
>
> AcpiOsPrintf ("\nInternal object sizes:\n\n");
>
> - AcpiOsPrintf ("Common %3d\n", sizeof (ACPI_OBJECT_COMMON));
> - AcpiOsPrintf ("Number %3d\n", sizeof (ACPI_OBJECT_INTEGER));
> - AcpiOsPrintf ("String %3d\n", sizeof (ACPI_OBJECT_STRING));
> - AcpiOsPrintf ("Buffer %3d\n", sizeof (ACPI_OBJECT_BUFFER));
> - AcpiOsPrintf ("Package %3d\n", sizeof (ACPI_OBJECT_PACKAGE));
> - AcpiOsPrintf ("BufferField %3d\n", sizeof (ACPI_OBJECT_BUFFER_FIELD));
> - AcpiOsPrintf ("Device %3d\n", sizeof (ACPI_OBJECT_DEVICE));
> - AcpiOsPrintf ("Event %3d\n", sizeof (ACPI_OBJECT_EVENT));
> - AcpiOsPrintf ("Method %3d\n", sizeof (ACPI_OBJECT_METHOD));
> - AcpiOsPrintf ("Mutex %3d\n", sizeof (ACPI_OBJECT_MUTEX));
> - AcpiOsPrintf ("Region %3d\n", sizeof (ACPI_OBJECT_REGION));
> - AcpiOsPrintf ("PowerResource %3d\n", sizeof (ACPI_OBJECT_POWER_RESOURCE));
> - AcpiOsPrintf ("Processor %3d\n", sizeof (ACPI_OBJECT_PROCESSOR));
> - AcpiOsPrintf ("ThermalZone %3d\n", sizeof (ACPI_OBJECT_THERMAL_ZONE));
> - AcpiOsPrintf ("RegionField %3d\n", sizeof (ACPI_OBJECT_REGION_FIELD));
> - AcpiOsPrintf ("BankField %3d\n", sizeof (ACPI_OBJECT_BANK_FIELD));
> - AcpiOsPrintf ("IndexField %3d\n", sizeof (ACPI_OBJECT_INDEX_FIELD));
> - AcpiOsPrintf ("Reference %3d\n", sizeof (ACPI_OBJECT_REFERENCE));
> - AcpiOsPrintf ("Notify %3d\n", sizeof (ACPI_OBJECT_NOTIFY_HANDLER));
> - AcpiOsPrintf ("AddressSpace %3d\n", sizeof (ACPI_OBJECT_ADDR_HANDLER));
> - AcpiOsPrintf ("Extra %3d\n", sizeof (ACPI_OBJECT_EXTRA));
> - AcpiOsPrintf ("Data %3d\n", sizeof (ACPI_OBJECT_DATA));
> + AcpiOsPrintf ("Common %3d\n", (UINT32) sizeof (ACPI_OBJECT_COMMON));
> + AcpiOsPrintf ("Number %3d\n", (UINT32) sizeof (ACPI_OBJECT_INTEGER));
> + AcpiOsPrintf ("String %3d\n", (UINT32) sizeof (ACPI_OBJECT_STRING));
> + AcpiOsPrintf ("Buffer %3d\n", (UINT32) sizeof (ACPI_OBJECT_BUFFER));
> + AcpiOsPrintf ("Package %3d\n", (UINT32) sizeof (ACPI_OBJECT_PACKAGE));
> + AcpiOsPrintf ("BufferField %3d\n", (UINT32) sizeof (ACPI_OBJECT_BUFFER_FIELD));
> + AcpiOsPrintf ("Device %3d\n", (UINT32) sizeof (ACPI_OBJECT_DEVICE));
> + AcpiOsPrintf ("Event %3d\n", (UINT32) sizeof (ACPI_OBJECT_EVENT));
> + AcpiOsPrintf ("Method %3d\n", (UINT32) sizeof (ACPI_OBJECT_METHOD));
> + AcpiOsPrintf ("Mutex %3d\n", (UINT32) sizeof (ACPI_OBJECT_MUTEX));
> + AcpiOsPrintf ("Region %3d\n", (UINT32) sizeof (ACPI_OBJECT_REGION));
> + AcpiOsPrintf ("PowerResource %3d\n", (UINT32) sizeof (ACPI_OBJECT_POWER_RESOURCE));
> + AcpiOsPrintf ("Processor %3d\n", (UINT32) sizeof (ACPI_OBJECT_PROCESSOR));
> + AcpiOsPrintf ("ThermalZone %3d\n", (UINT32) sizeof (ACPI_OBJECT_THERMAL_ZONE));
> + AcpiOsPrintf ("RegionField %3d\n", (UINT32) sizeof (ACPI_OBJECT_REGION_FIELD));
> + AcpiOsPrintf ("BankField %3d\n", (UINT32) sizeof (ACPI_OBJECT_BANK_FIELD));
> + AcpiOsPrintf ("IndexField %3d\n", (UINT32) sizeof (ACPI_OBJECT_INDEX_FIELD));
> + AcpiOsPrintf ("Reference %3d\n", (UINT32) sizeof (ACPI_OBJECT_REFERENCE));
> + AcpiOsPrintf ("Notify %3d\n", (UINT32) sizeof (ACPI_OBJECT_NOTIFY_HANDLER));
> + AcpiOsPrintf ("AddressSpace %3d\n", (UINT32) sizeof (ACPI_OBJECT_ADDR_HANDLER));
> + AcpiOsPrintf ("Extra %3d\n", (UINT32) sizeof (ACPI_OBJECT_EXTRA));
> + AcpiOsPrintf ("Data %3d\n", (UINT32) sizeof (ACPI_OBJECT_DATA));
>
> AcpiOsPrintf ("\n");
>
> - AcpiOsPrintf ("ParseObject %3d\n", sizeof (ACPI_PARSE_OBJ_COMMON));
> - AcpiOsPrintf ("ParseObjectNamed %3d\n", sizeof (ACPI_PARSE_OBJ_NAMED));
> - AcpiOsPrintf ("ParseObjectAsl %3d\n", sizeof (ACPI_PARSE_OBJ_ASL));
> - AcpiOsPrintf ("OperandObject %3d\n", sizeof (ACPI_OPERAND_OBJECT));
> - AcpiOsPrintf ("NamespaceNode %3d\n", sizeof (ACPI_NAMESPACE_NODE));
> - AcpiOsPrintf ("AcpiObject %3d\n", sizeof (ACPI_OBJECT));
> + AcpiOsPrintf ("ParseObject %3d\n", (UINT32) sizeof (ACPI_PARSE_OBJ_COMMON));
> + AcpiOsPrintf ("ParseObjectNamed %3d\n", (UINT32) sizeof (ACPI_PARSE_OBJ_NAMED));
> + AcpiOsPrintf ("ParseObjectAsl %3d\n", (UINT32) sizeof (ACPI_PARSE_OBJ_ASL));
> + AcpiOsPrintf ("OperandObject %3d\n", (UINT32) sizeof (ACPI_OPERAND_OBJECT));
> + AcpiOsPrintf ("NamespaceNode %3d\n", (UINT32) sizeof (ACPI_NAMESPACE_NODE));
> + AcpiOsPrintf ("AcpiObject %3d\n", (UINT32) sizeof (ACPI_OBJECT));
>
> AcpiOsPrintf ("\n");
>
> - AcpiOsPrintf ("Generic State %3d\n", sizeof (ACPI_GENERIC_STATE));
> - AcpiOsPrintf ("Common State %3d\n", sizeof (ACPI_COMMON_STATE));
> - AcpiOsPrintf ("Control State %3d\n", sizeof (ACPI_CONTROL_STATE));
> - AcpiOsPrintf ("Update State %3d\n", sizeof (ACPI_UPDATE_STATE));
> - AcpiOsPrintf ("Scope State %3d\n", sizeof (ACPI_SCOPE_STATE));
> - AcpiOsPrintf ("Parse Scope %3d\n", sizeof (ACPI_PSCOPE_STATE));
> - AcpiOsPrintf ("Package State %3d\n", sizeof (ACPI_PKG_STATE));
> - AcpiOsPrintf ("Thread State %3d\n", sizeof (ACPI_THREAD_STATE));
> - AcpiOsPrintf ("Result Values %3d\n", sizeof (ACPI_RESULT_VALUES));
> - AcpiOsPrintf ("Notify Info %3d\n", sizeof (ACPI_NOTIFY_INFO));
> + AcpiOsPrintf ("Generic State %3d\n", (UINT32) sizeof (ACPI_GENERIC_STATE));
> + AcpiOsPrintf ("Common State %3d\n", (UINT32) sizeof (ACPI_COMMON_STATE));
> + AcpiOsPrintf ("Control State %3d\n", (UINT32) sizeof (ACPI_CONTROL_STATE));
> + AcpiOsPrintf ("Update State %3d\n", (UINT32) sizeof (ACPI_UPDATE_STATE));
> + AcpiOsPrintf ("Scope State %3d\n", (UINT32) sizeof (ACPI_SCOPE_STATE));
> + AcpiOsPrintf ("Parse Scope %3d\n", (UINT32) sizeof (ACPI_PSCOPE_STATE));
> + AcpiOsPrintf ("Package State %3d\n", (UINT32) sizeof (ACPI_PKG_STATE));
> + AcpiOsPrintf ("Thread State %3d\n", (UINT32) sizeof (ACPI_THREAD_STATE));
> + AcpiOsPrintf ("Result Values %3d\n", (UINT32) sizeof (ACPI_RESULT_VALUES));
> + AcpiOsPrintf ("Notify Info %3d\n", (UINT32) sizeof (ACPI_NOTIFY_INFO));
> break;
>
> case CMD_STAT_STACK:
> diff --git a/src/acpica/source/components/events/evgpe.c b/src/acpica/source/components/events/evgpe.c
> index a7ee84c9..50b17c00 100644
> --- a/src/acpica/source/components/events/evgpe.c
> +++ b/src/acpica/source/components/events/evgpe.c
> @@ -848,6 +848,15 @@ AcpiEvDetectGpe (
>
> Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock);
>
> + if (!GpeEventInfo)
> + {
> + GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber);
> + if (!GpeEventInfo)
> + {
> + goto ErrorExit;
> + }
> + }
> +
> /* Get the info block for the entire GPE register */
>
> GpeRegisterInfo = GpeEventInfo->RegisterInfo;
> diff --git a/src/acpica/source/components/events/evxfgpe.c b/src/acpica/source/components/events/evxfgpe.c
> index 1dc0fe1d..e1481fdf 100644
> --- a/src/acpica/source/components/events/evxfgpe.c
> +++ b/src/acpica/source/components/events/evxfgpe.c
> @@ -875,6 +875,33 @@ UnlockAndExit:
> ACPI_EXPORT_SYMBOL (AcpiGetGpeStatus)
>
>
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDispatchGpe
> + *
> + * PARAMETERS: GpeDevice - Parent GPE Device. NULL for GPE0/GPE1
> + * GpeNumber - GPE level within the GPE block
> + *
> + * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED
> + *
> + * DESCRIPTION: Detect and dispatch a General Purpose Event to either a function
> + * (e.g. EC) or method (e.g. _Lxx/_Exx) handler.
> + *
> + ******************************************************************************/
> +
> +UINT32
> +AcpiDispatchGpe(
> + ACPI_HANDLE GpeDevice,
> + UINT32 GpeNumber)
> +{
> + ACPI_FUNCTION_TRACE(acpi_dispatch_gpe);
> +
> + return (AcpiEvDetectGpe (GpeDevice, NULL, GpeNumber));
> +}
> +
> +ACPI_EXPORT_SYMBOL (AcpiDispatchGpe)
> +
> +
> /*******************************************************************************
> *
> * FUNCTION: AcpiFinishGpe
> diff --git a/src/acpica/source/components/executer/exconfig.c b/src/acpica/source/components/executer/exconfig.c
> index eba1a6d2..1e3576ca 100644
> --- a/src/acpica/source/components/executer/exconfig.c
> +++ b/src/acpica/source/components/executer/exconfig.c
> @@ -344,7 +344,9 @@ AcpiExLoadTableOp (
>
> /* Complete the initialization/resolution of new objects */
>
> - AcpiNsInitializeObjects ();
> + AcpiExExitInterpreter();
> + AcpiNsInitializeObjects();
> + AcpiExEnterInterpreter();
>
> /* Parameter Data (optional) */
>
> diff --git a/src/acpica/source/components/executer/exdump.c b/src/acpica/source/components/executer/exdump.c
> index fa70b410..b6b70e67 100644
> --- a/src/acpica/source/components/executer/exdump.c
> +++ b/src/acpica/source/components/executer/exdump.c
> @@ -255,7 +255,7 @@ static ACPI_EXDUMP_INFO AcpiExDumpMethod[9] =
> {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.ParamCount), "Parameter Count"},
> {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.SyncLevel), "Sync Level"},
> {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Method.Mutex), "Mutex"},
> - {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.OwnerId), "Owner Id"},
> + {ACPI_EXD_UINT16, ACPI_EXD_OFFSET (Method.OwnerId), "Owner Id"},
> {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.ThreadCount), "Thread Count"},
> {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Method.AmlLength), "Aml Length"},
> {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Method.AmlStart), "Aml Start"}
> @@ -422,8 +422,8 @@ static ACPI_EXDUMP_INFO AcpiExDumpFieldCommon[7] =
> static ACPI_EXDUMP_INFO AcpiExDumpNode[7] =
> {
> {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpNode), NULL},
> - {ACPI_EXD_UINT8, ACPI_EXD_NSOFFSET (Flags), "Flags"},
> - {ACPI_EXD_UINT8, ACPI_EXD_NSOFFSET (OwnerId), "Owner Id"},
> + {ACPI_EXD_UINT16, ACPI_EXD_NSOFFSET (Flags), "Flags"},
> + {ACPI_EXD_UINT16, ACPI_EXD_NSOFFSET (OwnerId), "Owner Id"},
> {ACPI_EXD_LIST, ACPI_EXD_NSOFFSET (Object), "Object List"},
> {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET (Parent), "Parent"},
> {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET (Child), "Child"},
> diff --git a/src/acpica/source/components/namespace/nsaccess.c b/src/acpica/source/components/namespace/nsaccess.c
> index 4be555c0..a4db29ee 100644
> --- a/src/acpica/source/components/namespace/nsaccess.c
> +++ b/src/acpica/source/components/namespace/nsaccess.c
> @@ -767,7 +767,7 @@ AcpiNsLookup (
> if (Flags & ACPI_NS_PREFIX_MUST_EXIST)
> {
> AcpiOsPrintf (ACPI_MSG_BIOS_ERROR
> - "Object does not exist: %4.4s\n", &SimpleName);
> + "Object does not exist: %4.4s\n", (char *) &SimpleName);
> }
> #endif
> /* Name not found in ACPI namespace */
> diff --git a/src/acpica/source/components/namespace/nsalloc.c b/src/acpica/source/components/namespace/nsalloc.c
> index 12772308..15fa2766 100644
> --- a/src/acpica/source/components/namespace/nsalloc.c
> +++ b/src/acpica/source/components/namespace/nsalloc.c
> @@ -423,7 +423,7 @@ AcpiNsInstallNode (
> Node->Type = (UINT8) Type;
>
> ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
> - "%4.4s (%s) [Node %p Owner %X] added to %4.4s (%s) [Node %p]\n",
> + "%4.4s (%s) [Node %p Owner %3.3X] added to %4.4s (%s) [Node %p]\n",
> AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type), Node, OwnerId,
> AcpiUtGetNodeName (ParentNode), AcpiUtGetTypeName (ParentNode->Type),
> ParentNode));
> diff --git a/src/acpica/source/components/namespace/nsdump.c b/src/acpica/source/components/namespace/nsdump.c
> index 6ea04525..8a2a7e92 100644
> --- a/src/acpica/source/components/namespace/nsdump.c
> +++ b/src/acpica/source/components/namespace/nsdump.c
> @@ -381,7 +381,7 @@ AcpiNsDumpOneObject (
>
> /* Now we can print out the pertinent information */
>
> - AcpiOsPrintf (" %-12s %p %2.2X ",
> + AcpiOsPrintf (" %-12s %p %3.3X ",
> AcpiUtGetTypeName (Type), ThisNode, ThisNode->OwnerId);
>
> DbgLevel = AcpiDbgLevel;
> diff --git a/src/acpica/source/components/namespace/nsrepair2.c b/src/acpica/source/components/namespace/nsrepair2.c
> index a0b10747..302faade 100644
> --- a/src/acpica/source/components/namespace/nsrepair2.c
> +++ b/src/acpica/source/components/namespace/nsrepair2.c
> @@ -289,7 +289,7 @@ static const ACPI_REPAIR_INFO AcpiNsRepairableNames[] =
>
> #define ACPI_FDE_FIELD_COUNT 5
> #define ACPI_FDE_BYTE_BUFFER_SIZE 5
> -#define ACPI_FDE_DWORD_BUFFER_SIZE (ACPI_FDE_FIELD_COUNT * sizeof (UINT32))
> +#define ACPI_FDE_DWORD_BUFFER_SIZE (ACPI_FDE_FIELD_COUNT * (UINT32) sizeof (UINT32))
>
>
> /******************************************************************************
> diff --git a/src/acpica/source/components/tables/tbdata.c b/src/acpica/source/components/tables/tbdata.c
> index ba0c9108..84dd25bd 100644
> --- a/src/acpica/source/components/tables/tbdata.c
> +++ b/src/acpica/source/components/tables/tbdata.c
> @@ -973,6 +973,7 @@ AcpiTbDeleteNamespaceByOwner (
> {
> return_ACPI_STATUS (Status);
> }
> +
> AcpiNsDeleteNamespaceByOwner (OwnerId);
> AcpiUtReleaseWriteLock (&AcpiGbl_NamespaceRwLock);
> return_ACPI_STATUS (Status);
> diff --git a/src/acpica/source/components/utilities/utdebug.c b/src/acpica/source/components/utilities/utdebug.c
> index 5049f6bf..f00b91ad 100644
> --- a/src/acpica/source/components/utilities/utdebug.c
> +++ b/src/acpica/source/components/utilities/utdebug.c
> @@ -322,7 +322,7 @@ AcpiDebugPrint (
> * Display the module name, current line number, thread ID (if requested),
> * current procedure nesting level, and the current procedure name
> */
> - AcpiOsPrintf ("%9s-%04ld ", ModuleName, LineNumber);
> + AcpiOsPrintf ("%9s-%04d ", ModuleName, LineNumber);
>
> #ifdef ACPI_APPLICATION
> /*
> @@ -343,7 +343,7 @@ AcpiDebugPrint (
> FillCount = 0;
> }
>
> - AcpiOsPrintf ("[%02ld] %*s",
> + AcpiOsPrintf ("[%02d] %*s",
> AcpiGbl_NestingLevel, AcpiGbl_NestingLevel + 1, " ");
> AcpiOsPrintf ("%s%*s: ",
> AcpiUtTrimFunctionName (FunctionName), FillCount, " ");
> diff --git a/src/acpica/source/components/utilities/uterror.c b/src/acpica/source/components/utilities/uterror.c
> index 624c034c..8fcc4c23 100644
> --- a/src/acpica/source/components/utilities/uterror.c
> +++ b/src/acpica/source/components/utilities/uterror.c
> @@ -188,7 +188,7 @@ AcpiUtPredefinedWarning (
> const char *ModuleName,
> UINT32 LineNumber,
> char *Pathname,
> - UINT8 NodeFlags,
> + UINT16 NodeFlags,
> const char *Format,
> ...)
> {
> @@ -237,7 +237,7 @@ AcpiUtPredefinedInfo (
> const char *ModuleName,
> UINT32 LineNumber,
> char *Pathname,
> - UINT8 NodeFlags,
> + UINT16 NodeFlags,
> const char *Format,
> ...)
> {
> @@ -286,7 +286,7 @@ AcpiUtPredefinedBiosError (
> const char *ModuleName,
> UINT32 LineNumber,
> char *Pathname,
> - UINT8 NodeFlags,
> + UINT16 NodeFlags,
> const char *Format,
> ...)
> {
> diff --git a/src/acpica/source/components/utilities/utosi.c b/src/acpica/source/components/utilities/utosi.c
> index 1413b979..51ccc8bf 100644
> --- a/src/acpica/source/components/utilities/utosi.c
> +++ b/src/acpica/source/components/utilities/utosi.c
> @@ -212,13 +212,14 @@ static ACPI_INTERFACE_INFO AcpiDefaultSupportedInterfaces[] =
> {"Windows 2006 SP2", NULL, 0, ACPI_OSI_WIN_VISTA_SP2}, /* Windows Vista SP2 - Added 09/2010 */
> {"Windows 2009", NULL, 0, ACPI_OSI_WIN_7}, /* Windows 7 and Server 2008 R2 - Added 09/2009 */
> {"Windows 2012", NULL, 0, ACPI_OSI_WIN_8}, /* Windows 8 and Server 2012 - Added 08/2012 */
> - {"Windows 2013", NULL, 0, ACPI_OSI_WIN_8}, /* Windows 8.1 and Server 2012 R2 - Added 01/2014 */
> + {"Windows 2013", NULL, 0, ACPI_OSI_WIN_8_1}, /* Windows 8.1 and Server 2012 R2 - Added 01/2014 */
> {"Windows 2015", NULL, 0, ACPI_OSI_WIN_10}, /* Windows 10 - Added 03/2015 */
> {"Windows 2016", NULL, 0, ACPI_OSI_WIN_10_RS1}, /* Windows 10 version 1607 - Added 12/2017 */
> {"Windows 2017", NULL, 0, ACPI_OSI_WIN_10_RS2}, /* Windows 10 version 1703 - Added 12/2017 */
> {"Windows 2017.2", NULL, 0, ACPI_OSI_WIN_10_RS3}, /* Windows 10 version 1709 - Added 02/2018 */
> {"Windows 2018", NULL, 0, ACPI_OSI_WIN_10_RS4}, /* Windows 10 version 1803 - Added 11/2018 */
> {"Windows 2018.2", NULL, 0, ACPI_OSI_WIN_10_RS5}, /* Windows 10 version 1809 - Added 11/2018 */
> + {"Windows 2019", NULL, 0, ACPI_OSI_WIN_10_19H1}, /* Windows 10 version 1903 - Added 08/2019 */
>
> /* Feature Group Strings */
>
> diff --git a/src/acpica/source/components/utilities/utownerid.c b/src/acpica/source/components/utilities/utownerid.c
> index 64a11389..ade51c8a 100644
> --- a/src/acpica/source/components/utilities/utownerid.c
> +++ b/src/acpica/source/components/utilities/utownerid.c
> @@ -190,7 +190,7 @@ AcpiUtAllocateOwnerId (
> if (*OwnerId)
> {
> ACPI_ERROR ((AE_INFO,
> - "Owner ID [0x%2.2X] already exists", *OwnerId));
> + "Owner ID [0x%3.3X] already exists", *OwnerId));
> return_ACPI_STATUS (AE_ALREADY_EXISTS);
> }
>
> @@ -246,13 +246,13 @@ AcpiUtAllocateOwnerId (
> /*
> * Construct encoded ID from the index and bit position
> *
> - * Note: Last [j].k (bit 255) is never used and is marked
> + * Note: Last [j].k (bit 4095) is never used and is marked
> * permanently allocated (prevents +1 overflow)
> */
> *OwnerId = (ACPI_OWNER_ID) ((k + 1) + ACPI_MUL_32 (j));
>
> ACPI_DEBUG_PRINT ((ACPI_DB_VALUES,
> - "Allocated OwnerId: %2.2X\n", (unsigned int) *OwnerId));
> + "Allocated OwnerId: 0x%3.3X\n", (unsigned int) *OwnerId));
> goto Exit;
> }
> }
> @@ -272,7 +272,7 @@ AcpiUtAllocateOwnerId (
> */
> Status = AE_OWNER_ID_LIMIT;
> ACPI_ERROR ((AE_INFO,
> - "Could not allocate new OwnerId (255 max), AE_OWNER_ID_LIMIT"));
> + "Could not allocate new OwnerId (4095 max), AE_OWNER_ID_LIMIT"));
>
> Exit:
> (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);
> @@ -315,7 +315,7 @@ AcpiUtReleaseOwnerId (
>
> if (OwnerId == 0)
> {
> - ACPI_ERROR ((AE_INFO, "Invalid OwnerId: 0x%2.2X", OwnerId));
> + ACPI_ERROR ((AE_INFO, "Invalid OwnerId: 0x%3.3X", OwnerId));
> return_VOID;
> }
>
> @@ -345,7 +345,7 @@ AcpiUtReleaseOwnerId (
> else
> {
> ACPI_ERROR ((AE_INFO,
> - "Release of non-allocated OwnerId: 0x%2.2X", OwnerId + 1));
> + "Attempted release of non-allocated OwnerId: 0x%3.3X", OwnerId + 1));
> }
>
> (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);
> diff --git a/src/acpica/source/include/acconfig.h b/src/acpica/source/include/acconfig.h
> index e93cfe1e..50bfe0b9 100644
> --- a/src/acpica/source/include/acconfig.h
> +++ b/src/acpica/source/include/acconfig.h
> @@ -239,9 +239,9 @@
>
> #define ACPI_DEFAULT_PAGE_SIZE 4096 /* Must be power of 2 */
>
> -/* OwnerId tracking. 8 entries allows for 255 OwnerIds */
> +/* OwnerId tracking. 128 entries allows for 4095 OwnerIds */
>
> -#define ACPI_NUM_OWNERID_MASKS 8
> +#define ACPI_NUM_OWNERID_MASKS 128
>
> /* Size of the root table array is increased by this increment */
>
> diff --git a/src/acpica/source/include/aclocal.h b/src/acpica/source/include/aclocal.h
> index e1ed0053..c3703c15 100644
> --- a/src/acpica/source/include/aclocal.h
> +++ b/src/acpica/source/include/aclocal.h
> @@ -295,12 +295,12 @@ typedef struct acpi_namespace_node
> union acpi_operand_object *Object; /* Interpreter object */
> UINT8 DescriptorType; /* Differentiate object descriptor types */
> UINT8 Type; /* ACPI Type associated with this name */
> - UINT8 Flags; /* Miscellaneous flags */
> - ACPI_OWNER_ID OwnerId; /* Node creator */
> + UINT16 Flags; /* Miscellaneous flags */
> ACPI_NAME_UNION Name; /* ACPI Name, always 4 chars per ACPI spec */
> struct acpi_namespace_node *Parent; /* Parent node */
> struct acpi_namespace_node *Child; /* First child */
> struct acpi_namespace_node *Peer; /* First peer */
> + ACPI_OWNER_ID OwnerId; /* Node creator */
>
> /*
> * The following fields are used by the ASL compiler and disassembler only
> diff --git a/src/acpica/source/include/acobject.h b/src/acpica/source/include/acobject.h
> index b9b30200..74feb8d9 100644
> --- a/src/acpica/source/include/acobject.h
> +++ b/src/acpica/source/include/acobject.h
> @@ -333,8 +333,8 @@ typedef struct acpi_object_method
> } Dispatch;
>
> UINT32 AmlLength;
> - UINT8 ThreadCount;
> ACPI_OWNER_ID OwnerId;
> + UINT8 ThreadCount;
>
> } ACPI_OBJECT_METHOD;
>
> diff --git a/src/acpica/source/include/acpiosxf.h b/src/acpica/source/include/acpiosxf.h
> index 19eef638..dfcd008f 100644
> --- a/src/acpica/source/include/acpiosxf.h
> +++ b/src/acpica/source/include/acpiosxf.h
> @@ -577,6 +577,7 @@ AcpiOsEnterSleep (
> * Debug print routines
> */
> #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPrintf
> +ACPI_PRINTF_LIKE (1)
> void ACPI_INTERNAL_VAR_XFACE
> AcpiOsPrintf (
> const char *Format,
> diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
> index 2893bf23..a123eed7 100644
> --- a/src/acpica/source/include/acpixf.h
> +++ b/src/acpica/source/include/acpixf.h
> @@ -154,7 +154,7 @@
>
> /* Current ACPICA subsystem version in YYYYMMDD format */
>
> -#define ACPI_CA_VERSION 0x20190703
> +#define ACPI_CA_VERSION 0x20190816
>
> #include "acconfig.h"
> #include "actypes.h"
> @@ -446,6 +446,9 @@ ACPI_GLOBAL (BOOLEAN, AcpiGbl_SystemAwakeAndRunning);
> #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
> ACPI_EXTERNAL_RETURN_OK(Prototype)
>
> +#define ACPI_HW_DEPENDENT_RETURN_UINT32(prototype) \
> + ACPI_EXTERNAL_RETURN_UINT32(prototype)
> +
> #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
> ACPI_EXTERNAL_RETURN_VOID(Prototype)
>
> @@ -456,6 +459,9 @@ ACPI_GLOBAL (BOOLEAN, AcpiGbl_SystemAwakeAndRunning);
> #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
> static ACPI_INLINE Prototype {return(AE_OK);}
>
> +#define ACPI_HW_DEPENDENT_RETURN_UINT32(prototype) \
> + static ACPI_INLINE prototype {return(0);}
> +
> #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
> static ACPI_INLINE Prototype {return;}
>
> @@ -1076,6 +1082,12 @@ AcpiGetGpeStatus (
> UINT32 GpeNumber,
> ACPI_EVENT_STATUS *EventStatus))
>
> +ACPI_HW_DEPENDENT_RETURN_UINT32 (
> +UINT32
> +AcpiDispatchGpe (
> + ACPI_HANDLE GpeDevice,
> + UINT32 GpeNumber))
> +
> ACPI_HW_DEPENDENT_RETURN_STATUS (
> ACPI_STATUS
> AcpiDisableAllGpes (
> diff --git a/src/acpica/source/include/acstruct.h b/src/acpica/source/include/acstruct.h
> index a0b63ec4..f81c8a7d 100644
> --- a/src/acpica/source/include/acstruct.h
> +++ b/src/acpica/source/include/acstruct.h
> @@ -327,9 +327,9 @@ typedef struct acpi_evaluate_info
> UINT32 ReturnFlags; /* Used for return value analysis */
> UINT32 ReturnBtype; /* Bitmapped type of the returned object */
> UINT16 ParamCount; /* Count of the input argument list */
> + UINT16 NodeFlags; /* Same as Node->Flags */
> UINT8 PassNumber; /* Parser pass number */
> UINT8 ReturnObjectType; /* Object type of the returned object */
> - UINT8 NodeFlags; /* Same as Node->Flags */
> UINT8 Flags; /* General flags */
>
> } ACPI_EVALUATE_INFO;
> diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h
> index e7a2d578..0521f335 100644
> --- a/src/acpica/source/include/actypes.h
> +++ b/src/acpica/source/include/actypes.h
> @@ -591,8 +591,8 @@ typedef void * ACPI_HANDLE; /* Actually a ptr to a N
>
> /* Owner IDs are used to track namespace nodes for selective deletion */
>
> -typedef UINT8 ACPI_OWNER_ID;
> -#define ACPI_OWNER_ID_MAX 0xFF
> +typedef UINT16 ACPI_OWNER_ID;
> +#define ACPI_OWNER_ID_MAX 0xFFF /* 4095 possible owner IDs */
>
>
> #define ACPI_INTEGER_BIT_SIZE 64
> @@ -657,7 +657,7 @@ typedef UINT64 ACPI_INTEGER;
>
> /* Pointer/Integer type conversions */
>
> -#define ACPI_TO_POINTER(i) ACPI_ADD_PTR (void, (void *) 0, (ACPI_SIZE) (i))
> +#define ACPI_TO_POINTER(i) ACPI_CAST_PTR (void, (ACPI_SIZE) (i))
> #define ACPI_TO_INTEGER(p) ACPI_PTR_DIFF (p, (void *) 0)
> #define ACPI_OFFSET(d, f) ACPI_PTR_DIFF (&(((d *) 0)->f), (void *) 0)
> #define ACPI_PHYSADDR_TO_PTR(i) ACPI_TO_POINTER(i)
> @@ -1513,12 +1513,14 @@ typedef enum
> #define ACPI_OSI_WIN_VISTA_SP2 0x0A
> #define ACPI_OSI_WIN_7 0x0B
> #define ACPI_OSI_WIN_8 0x0C
> -#define ACPI_OSI_WIN_10 0x0D
> -#define ACPI_OSI_WIN_10_RS1 0x0E
> -#define ACPI_OSI_WIN_10_RS2 0x0F
> -#define ACPI_OSI_WIN_10_RS3 0x10
> -#define ACPI_OSI_WIN_10_RS4 0x11
> -#define ACPI_OSI_WIN_10_RS5 0x12
> +#define ACPI_OSI_WIN_8_1 0x0D
> +#define ACPI_OSI_WIN_10 0x0E
> +#define ACPI_OSI_WIN_10_RS1 0x0F
> +#define ACPI_OSI_WIN_10_RS2 0x10
> +#define ACPI_OSI_WIN_10_RS3 0x11
> +#define ACPI_OSI_WIN_10_RS4 0x12
> +#define ACPI_OSI_WIN_10_RS5 0x13
> +#define ACPI_OSI_WIN_10_19H1 0x14
>
>
> /* Definitions of getopt */
> diff --git a/src/acpica/source/include/acutils.h b/src/acpica/source/include/acutils.h
> index 8f48d370..0c2327d2 100644
> --- a/src/acpica/source/include/acutils.h
> +++ b/src/acpica/source/include/acutils.h
> @@ -1194,30 +1194,33 @@ AcpiUtDeleteAddressLists (
> /*
> * utxferror - various error/warning output functions
> */
> +ACPI_PRINTF_LIKE(5)
> void ACPI_INTERNAL_VAR_XFACE
> AcpiUtPredefinedWarning (
> const char *ModuleName,
> UINT32 LineNumber,
> char *Pathname,
> - UINT8 NodeFlags,
> + UINT16 NodeFlags,
> const char *Format,
> ...);
>
> +ACPI_PRINTF_LIKE(5)
> void ACPI_INTERNAL_VAR_XFACE
> AcpiUtPredefinedInfo (
> const char *ModuleName,
> UINT32 LineNumber,
> char *Pathname,
> - UINT8 NodeFlags,
> + UINT16 NodeFlags,
> const char *Format,
> ...);
>
> +ACPI_PRINTF_LIKE(5)
> void ACPI_INTERNAL_VAR_XFACE
> AcpiUtPredefinedBiosError (
> const char *ModuleName,
> UINT32 LineNumber,
> char *Pathname,
> - UINT8 NodeFlags,
> + UINT16 NodeFlags,
> const char *Format,
> ...);
>
> diff --git a/src/libfwtsiasl/Makefile.am b/src/libfwtsiasl/Makefile.am
> index 4daa4fe6..9aa5523c 100644
> --- a/src/libfwtsiasl/Makefile.am
> +++ b/src/libfwtsiasl/Makefile.am
> @@ -64,6 +64,13 @@ $(srcdir)/aslcompiler.c $(srcdir)/aslcompiler.y.h: $(srcdir)/aslcompiler.y
> mv aslcompiler.tab.c aslcompiler.c
> mv aslcompiler.tab.h aslcompiler.y.h
>
> +.NOTPARALLEL: $(srcdir)/dtcompilerparserlex.c
> +$(srcdir)/dtcompilerparserlex.c $(srcdir)/dtcompilerparser.c $(srcdir)/dtcompilerparser.y.h: ../acpica/source/compiler/dtcompilerparser.l ../acpica/source/compiler/dtcompilerparser.y
> + ${LEX} ${AM_LFLAGS} -PDtCompilerParser -o$(srcdir)/dtcompilerparserlex.c $<
> + ${YACC} ${AM_YFLAGS} -bdtcompilerparser -pDtCompilerParser ../acpica/source/compiler/dtcompilerparser.y
> + mv dtcompilerparser.tab.c dtcompilerparser.c
> + mv dtcompilerparser.tab.h dtcompilerparser.y.h
> +
> .NOTPARALLEL: $(srcdir)/dtparserlex.c
> $(srcdir)/dtparserlex.c $(srcdir)/dtparser.c $(srcdir)/dtparser.y.h: ../acpica/source/compiler/dtparser.l ../acpica/source/compiler/dtparser.y
> ${LEX} ${AM_LFLAGS} -PDtParser -o$(srcdir)/dtparserlex.c $<
> @@ -84,6 +91,9 @@ BUILT_SOURCES = aslcompiler.y \
> aslcompiler.y.h \
> aslcompilerlex.c \
> aslcompiler.c \
> + dtcompilerparser.y.h \
> + dtcompilerparserlex.c \
> + dtcompilerparser.c \
> dtparser.y.h \
> dtparserlex.c \
> dtparser.c \
> @@ -103,6 +113,8 @@ libfwtsiasl_la_SOURCES = \
> fwts_iasl_interface.c \
> aslcompilerlex.c \
> aslcompiler.c \
> + dtcompilerparserlex.c \
> + dtcompilerparser.c \
> dtparserlex.c \
> dtparser.c \
> prparserlex.c \
>
Acked-by: Alex Hung <alex.hung at canonical.com>
More information about the fwts-devel
mailing list