diff options
Diffstat (limited to 'source/compiler')
| -rw-r--r-- | source/compiler/aslmaputils.c | 6 | ||||
| -rw-r--r-- | source/compiler/asloperands.c | 14 | ||||
| -rw-r--r-- | source/compiler/asloptions.c | 7 | ||||
| -rw-r--r-- | source/compiler/aslrules.y | 2 | ||||
| -rw-r--r-- | source/compiler/aslxref.c | 6 |
5 files changed, 32 insertions, 3 deletions
diff --git a/source/compiler/aslmaputils.c b/source/compiler/aslmaputils.c index ebdab7daa741..1ba70405076a 100644 --- a/source/compiler/aslmaputils.c +++ b/source/compiler/aslmaputils.c @@ -80,6 +80,12 @@ MpGetHidFromParseTree ( Op = HidNode->Op; + if (!Op) + { + /* Object is not resolved, probably an External */ + + return ("Unresolved Symbol - referenced but not defined in this table"); + } switch (Op->Asl.ParseOpcode) { diff --git a/source/compiler/asloperands.c b/source/compiler/asloperands.c index 3f84114282d0..1b8eb8735a95 100644 --- a/source/compiler/asloperands.c +++ b/source/compiler/asloperands.c @@ -351,6 +351,20 @@ OpnDoFieldCommon ( NewBitOffset = (UINT32) PkgLengthNode->Asl.Value.Integer; CurrentBitOffset += NewBitOffset; + if ((NewBitOffset == 0) && + (Next->Asl.ParseOpcode == PARSEOP_RESERVED_BYTES)) + { + /* + * Unnamed field with a bit length of zero. We can + * safely just ignore this. However, we will not ignore + * a named field of zero length, we don't want to just + * toss out a name. + */ + Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; + PkgLengthNode->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; + break; + } + /* Save the current AccessAs value for error checking later */ switch (AccessType) diff --git a/source/compiler/asloptions.c b/source/compiler/asloptions.c index b9d4e3c40702..4f1294596b75 100644 --- a/source/compiler/asloptions.c +++ b/source/compiler/asloptions.c @@ -561,6 +561,13 @@ AslDoOptions ( Gbl_CompileTimesFlag = TRUE; break; + case 'd': + + /* Disable disassembler code optimizations */ + + AcpiGbl_DoDisassemblerOptimizations = FALSE; + break; + case 'e': /* iASL: Disable External opcode generation */ diff --git a/source/compiler/aslrules.y b/source/compiler/aslrules.y index a7a41e2ed1b8..2cb972f8056d 100644 --- a/source/compiler/aslrules.y +++ b/source/compiler/aslrules.y @@ -530,7 +530,7 @@ ObjectTypeName | RefOfTerm {} | DerefOfTerm {} | IndexTerm {} - + | IndexExpTerm {} /* | MethodInvocationTerm {} */ /* Caused reduce/reduce with Type6Opcode->MethodInvocationTerm */ ; diff --git a/source/compiler/aslxref.c b/source/compiler/aslxref.c index a2cb6b332401..b8c7835bb6dc 100644 --- a/source/compiler/aslxref.c +++ b/source/compiler/aslxref.c @@ -826,16 +826,18 @@ XfNamespaceLocateBegin ( /* * A reference to a method within one of these opcodes is not an * invocation of the method, it is simply a reference to the method. + * + * September 2016: Removed DeRefOf from this list */ if ((Op->Asl.Parent) && - ((Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_REFOF) || - (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_DEREFOF) || + ((Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_REFOF) || (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_PACKAGE) || (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_VAR_PACKAGE)|| (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_OBJECTTYPE))) { return_ACPI_STATUS (AE_OK); } + /* * There are two types of method invocation: * 1) Invocation with arguments -- the parser recognizes this |
