summaryrefslogtreecommitdiff
path: root/ld/ldlex.l
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2007-05-24 09:24:09 +0000
committerNathan Sidwell <nathan@codesourcery.com>2007-05-24 09:24:09 +0000
commit8545d1a9dd556efc7950409426bd70d439fa43d8 (patch)
tree86699d55d009b454b4e0120f2e133efc39d55f09 /ld/ldlex.l
parent01be46b59d2e1078ccc0e69a3d5853b9d39a882b (diff)
downloadbinutils-gdb-8545d1a9dd556efc7950409426bd70d439fa43d8.tar.gz
* ldlex.l: ASSERT is recognized in SCRIPT env. NAMES cannot
contain commas in EXP env. * ldgram.y (extern_name_list): Push to EXP env, move body to ... (extern_name_list_body): ... here. (script_file, ifile_list): Reformat. (statement): Add ASSERT. testsuite: * ld-scripts/assert.t: Add additional cases. * ld-scripts/extern.t, ld-scripts/extern.s, ld-scripts/extern.exp: New.
Diffstat (limited to 'ld/ldlex.l')
-rw-r--r--ld/ldlex.l14
1 files changed, 11 insertions, 3 deletions
diff --git a/ld/ldlex.l b/ld/ldlex.l
index 61fbe6d9bcc..88a8f1d6556 100644
--- a/ld/ldlex.l
+++ b/ld/ldlex.l
@@ -256,7 +256,7 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
<EXPRESSION,BOTH,SCRIPT>"LOADADDR" { RTOKEN(LOADADDR);}
<EXPRESSION,BOTH>"MAX" { RTOKEN(MAX_K); }
<EXPRESSION,BOTH>"MIN" { RTOKEN(MIN_K); }
-<EXPRESSION,BOTH>"ASSERT" { RTOKEN(ASSERT_K); }
+<EXPRESSION,BOTH,SCRIPT>"ASSERT" { RTOKEN(ASSERT_K); }
<BOTH,SCRIPT>"ENTRY" { RTOKEN(ENTRY);}
<BOTH,SCRIPT,MRI>"EXTERN" { RTOKEN(EXTERN);}
<EXPRESSION,BOTH,SCRIPT>"NEXT" { RTOKEN(NEXT);}
@@ -363,11 +363,19 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
}
-<BOTH,EXPRESSION>{FILENAMECHAR1}{FILENAMECHAR}* {
+<BOTH>{FILENAMECHAR1}{FILENAMECHAR}* {
yylval.name = xstrdup (yytext);
return NAME;
}
-<BOTH,EXPRESSION>"-l"{FILENAMECHAR}+ {
+<BOTH>"-l"{FILENAMECHAR}+ {
+ yylval.name = xstrdup (yytext + 2);
+ return LNAME;
+ }
+<EXPRESSION>{FILENAMECHAR1}{NOCFILENAMECHAR}* {
+ yylval.name = xstrdup (yytext);
+ return NAME;
+ }
+<EXPRESSION>"-l"{NOCFILENAMECHAR}+ {
yylval.name = xstrdup (yytext + 2);
return LNAME;
}