ld: Don't allow '~' as the first char in symbol name
Don't allow '~' as the first character in symbol name in linker script. PR ld/22267 * ldlex.l (SYMBOLNAMECHAR1) New. (DEFSYMEXP): Replace FILENAMECHAR1 with SYMBOLNAMECHAR1. (EXPRESSION): Likewise. * testsuite/ld-scripts/expr.exp: Run pr22267. * testsuite/ld-scripts/pr22267.d: New file. * testsuite/ld-scripts/pr22267.s: Likewise. * testsuite/ld-scripts/pr22267.t: Likewise.
This commit is contained in:
parent
5d3b558acd
commit
76f361eb49
11
ld/ChangeLog
11
ld/ChangeLog
@ -1,3 +1,14 @@
|
||||
2017-10-09 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/22267
|
||||
* ldlex.l (SYMBOLNAMECHAR1) New.
|
||||
(DEFSYMEXP): Replace FILENAMECHAR1 with SYMBOLNAMECHAR1.
|
||||
(EXPRESSION): Likewise.
|
||||
* testsuite/ld-scripts/expr.exp: Run pr22267.
|
||||
* testsuite/ld-scripts/pr22267.d: New file.
|
||||
* testsuite/ld-scripts/pr22267.s: Likewise.
|
||||
* testsuite/ld-scripts/pr22267.t: Likewise.
|
||||
|
||||
2017-10-07 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* testsuite/ld-elf/merge.d: Don't expect to fail for sparc.
|
||||
|
@ -94,6 +94,7 @@ static void lex_warn_invalid (char *where, char *what);
|
||||
CMDFILENAMECHAR [_a-zA-Z0-9\/\.\\_\+\$\:\[\]\\\,\=\&\!\<\>\-\~]
|
||||
CMDFILENAMECHAR1 [_a-zA-Z0-9\/\.\\_\+\$\:\[\]\\\,\=\&\!\<\>\~]
|
||||
FILENAMECHAR1 [_a-zA-Z\/\.\\\$\_\~]
|
||||
SYMBOLNAMECHAR1 [_a-zA-Z\/\.\\\$\_]
|
||||
SYMBOLCHARN [_a-zA-Z\/\.\\\$\_\~0-9]
|
||||
FILENAMECHAR [_a-zA-Z0-9\/\.\-\_\+\=\$\:\[\]\\\,\~]
|
||||
WILDCHAR [_a-zA-Z0-9\/\.\-\_\+\=\$\:\[\]\\\,\~\?\*\^\!]
|
||||
@ -136,7 +137,7 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
|
||||
|
||||
<DEFSYMEXP>"-" { RTOKEN('-');}
|
||||
<DEFSYMEXP>"+" { RTOKEN('+');}
|
||||
<DEFSYMEXP>{FILENAMECHAR1}{SYMBOLCHARN}* { yylval.name = xstrdup (yytext); return NAME; }
|
||||
<DEFSYMEXP>{SYMBOLNAMECHAR1}{SYMBOLCHARN}* { yylval.name = xstrdup (yytext); return NAME; }
|
||||
<DEFSYMEXP>"=" { RTOKEN('='); }
|
||||
|
||||
<MRI,EXPRESSION>"$"([0-9A-Fa-f])+ {
|
||||
@ -390,7 +391,7 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
|
||||
yylval.name = xstrdup (yytext + 2);
|
||||
return LNAME;
|
||||
}
|
||||
<EXPRESSION>{FILENAMECHAR1}{NOCFILENAMECHAR}* {
|
||||
<EXPRESSION>{SYMBOLNAMECHAR1}{NOCFILENAMECHAR}* {
|
||||
yylval.name = xstrdup (yytext);
|
||||
return NAME;
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ run_dump_test sane1
|
||||
run_dump_test assign-loc
|
||||
run_dump_test pr14962
|
||||
run_dump_test pr14962-2
|
||||
run_dump_test pr22267
|
||||
|
||||
set old_ldflags $LDFLAGS
|
||||
if { [istarget spu*-*-*] } {
|
||||
|
7
ld/testsuite/ld-scripts/pr22267.d
Normal file
7
ld/testsuite/ld-scripts/pr22267.d
Normal file
@ -0,0 +1,7 @@
|
||||
#ld: -T pr22267.t
|
||||
#nm: -n
|
||||
|
||||
# Some targets may zero-extend 32-bit address to 64 bits.
|
||||
#...
|
||||
0*f+00 A foo
|
||||
#pass
|
10
ld/testsuite/ld-scripts/pr22267.s
Normal file
10
ld/testsuite/ld-scripts/pr22267.s
Normal file
@ -0,0 +1,10 @@
|
||||
.globl main
|
||||
.globl start
|
||||
.globl _start
|
||||
.globl __start
|
||||
.text
|
||||
main:
|
||||
start:
|
||||
_start:
|
||||
__start:
|
||||
.dc.a foo
|
4
ld/testsuite/ld-scripts/pr22267.t
Normal file
4
ld/testsuite/ld-scripts/pr22267.t
Normal file
@ -0,0 +1,4 @@
|
||||
SECTIONS
|
||||
{
|
||||
foo = ~0xFF;
|
||||
}
|
Loading…
Reference in New Issue
Block a user