diff options
author | jkim <jkim@FreeBSD.org> | 2013-05-20 23:52:49 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2013-05-20 23:52:49 +0000 |
commit | ca7944e4059769f0f5788417db3d8f3b2a8e7996 (patch) | |
tree | 3858a454e4df3ea62639923664ce32f0d9706e26 /sys/contrib/dev/acpica/compiler/prscan.c | |
parent | 4cdc15c1f748d4763888b9351c2316a878059a87 (diff) | |
parent | af69f95bba3597db53a980597cfd371c9f6ee7cf (diff) | |
download | FreeBSD-src-ca7944e4059769f0f5788417db3d8f3b2a8e7996.zip FreeBSD-src-ca7944e4059769f0f5788417db3d8f3b2a8e7996.tar.gz |
Merge ACPICA 20130517.
Diffstat (limited to 'sys/contrib/dev/acpica/compiler/prscan.c')
-rw-r--r-- | sys/contrib/dev/acpica/compiler/prscan.c | 46 |
1 files changed, 36 insertions, 10 deletions
diff --git a/sys/contrib/dev/acpica/compiler/prscan.c b/sys/contrib/dev/acpica/compiler/prscan.c index 0d44d6a..dad91bd 100644 --- a/sys/contrib/dev/acpica/compiler/prscan.c +++ b/sys/contrib/dev/acpica/compiler/prscan.c @@ -477,6 +477,7 @@ PrDoDirective ( switch (Directive) { case PR_DIRECTIVE_ELIF: + *IgnoringThisCodeBlock = !(*IgnoringThisCodeBlock); if (*IgnoringThisCodeBlock == TRUE) { @@ -493,10 +494,12 @@ PrDoDirective ( break; case PR_DIRECTIVE_ELSE: + *IgnoringThisCodeBlock = !(*IgnoringThisCodeBlock); return; case PR_DIRECTIVE_ENDIF: + *IgnoringThisCodeBlock = FALSE; Gbl_IfDepth--; if (Gbl_IfDepth < 0) @@ -508,6 +511,7 @@ PrDoDirective ( return; default: + break; } @@ -590,6 +594,7 @@ PrDoDirective ( break; case PR_DIRECTIVE_ERROR: + /* TBD compiler should abort */ /* Note: No macro expansion */ @@ -598,6 +603,7 @@ PrDoDirective ( break; case PR_DIRECTIVE_IF: + TokenOffset = Token - Gbl_MainTokenBuffer; /* Need to expand #define macros in the expression string first */ @@ -623,6 +629,7 @@ PrDoDirective ( break; case PR_DIRECTIVE_IFDEF: + if (!PrMatchDefine (Token)) { *IgnoringThisCodeBlock = TRUE; @@ -635,6 +642,7 @@ PrDoDirective ( break; case PR_DIRECTIVE_IFNDEF: + if (PrMatchDefine (Token)) { *IgnoringThisCodeBlock = TRUE; @@ -647,6 +655,7 @@ PrDoDirective ( break; case PR_DIRECTIVE_INCLUDE: + Token = PrGetNextToken (NULL, " \"<>", Next); if (!Token) { @@ -661,6 +670,7 @@ PrDoDirective ( break; case PR_DIRECTIVE_LINE: + TokenOffset = Token - Gbl_MainTokenBuffer; Status = PrResolveIntegerExpression ( @@ -686,26 +696,40 @@ PrDoDirective ( break; case PR_DIRECTIVE_PRAGMA: - /* Only "#pragma message" supported at this time */ - if (strcmp (Token, "message")) + if (!strcmp (Token, "disable")) { - PrError (ASL_ERROR, ASL_MSG_UNKNOWN_PRAGMA, - THIS_TOKEN_OFFSET (Token)); - return; + Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, Next); + if (!Token) + { + goto SyntaxError; + } + + TokenOffset = Token - Gbl_MainTokenBuffer; + AslDisableException (&Gbl_CurrentLineBuffer[TokenOffset]); } + else if (!strcmp (Token, "message")) + { + Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, Next); + if (!Token) + { + goto SyntaxError; + } - Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, Next); - if (!Token) + TokenOffset = Token - Gbl_MainTokenBuffer; + AcpiOsPrintf ("%s\n", &Gbl_CurrentLineBuffer[TokenOffset]); + } + else { - goto SyntaxError; + PrError (ASL_ERROR, ASL_MSG_UNKNOWN_PRAGMA, + THIS_TOKEN_OFFSET (Token)); + return; } - TokenOffset = Token - Gbl_MainTokenBuffer; - AcpiOsPrintf ("%s\n", &Gbl_CurrentLineBuffer[TokenOffset]); break; case PR_DIRECTIVE_UNDEF: + DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "#undef: %s\n", Gbl_CurrentLineNumber, Token); @@ -713,11 +737,13 @@ PrDoDirective ( break; case PR_DIRECTIVE_WARNING: + PrError (ASL_WARNING, ASL_MSG_ERROR_DIRECTIVE, THIS_TOKEN_OFFSET (Token)); break; default: + /* Should never get here */ DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "Unrecognized directive: %u\n", |