summaryrefslogtreecommitdiff
path: root/source/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'source/compiler')
-rw-r--r--source/compiler/aslmaputils.c6
-rw-r--r--source/compiler/asloperands.c14
-rw-r--r--source/compiler/asloptions.c7
-rw-r--r--source/compiler/aslrules.y2
-rw-r--r--source/compiler/aslxref.c6
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