aboutsummaryrefslogtreecommitdiff
path: root/ld/ldlex.h
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@bitrange.com>2014-10-15 03:10:25 +0200
committerHans-Peter Nilsson <hp@bitrange.com>2014-10-15 03:10:25 +0200
commiteeed9cc785ca447868967e5c84dae63e9ca8e6c2 (patch)
tree6e3b704c2f61b465b83ec2c5b2b5331b6c1e2b30 /ld/ldlex.h
parentbfa234344327776fb3b16e8bfd9c8de6ec73ae31 (diff)
downloadgdb-eeed9cc785ca447868967e5c84dae63e9ca8e6c2.zip
gdb-eeed9cc785ca447868967e5c84dae63e9ca8e6c2.tar.gz
gdb-eeed9cc785ca447868967e5c84dae63e9ca8e6c2.tar.bz2
Allow unquoted = as the first character in ldscript input_list names
* ldlex.l (INPUTLIST): New start condition. (comment pattern, ",", "(", ")", "AS_NEEDED") ({FILENAMECHAR1}{FILENAMECHAR}*, "-l"{FILENAMECHAR}+) (quoted string pattern, whitespace pattern): Add INPUTLIST to valid start conditions. (<INPUTLIST>"="{FILENAMECHAR1}{FILENAMECHAR}*): New NAME rule. (ldlex_inputlist): New start-condition-setter function. * ldgram.y (input_list1): Rename from input_list. All recursive use changed. (input_list): New wrapper rule for input_list1, setting INPUTLIST lexer state for the duration of parsing input_list1. All this to say INPUT(=/path/to/file) and not be forced to use INPUT("=/path/to/file") whenever there's a need to force a sysroot- prefix. Still, IMHO it seems better to make use of a previously invalid syntax and not only change the meaning of quoted =-prefixed paths (though arguably that's not very useful before this patchset). This got a little bit hairier than I'd expected: I had to add a new lexer state (aka. start condition) to avoid a first "=" being lexed as the token "=", despite that not making sense in constructs expecting file-names in the first place. (The grammar doesn't allow for expressions in any part of those lists.) I guess I *could* have made it work using that token anyway, but I didn't like the idea that you would be able to separate the "=" from the rest of the file-name with whitespace.
Diffstat (limited to 'ld/ldlex.h')
-rw-r--r--ld/ldlex.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/ld/ldlex.h b/ld/ldlex.h
index 63f4c81..56cd121 100644
--- a/ld/ldlex.h
+++ b/ld/ldlex.h
@@ -161,6 +161,7 @@ extern int yylex (void);
extern void lex_push_file (FILE *, const char *, unsigned int);
extern void lex_redirect (const char *, const char *, unsigned int);
extern void ldlex_script (void);
+extern void ldlex_inputlist (void);
extern void ldlex_mri_script (void);
extern void ldlex_version_script (void);
extern void ldlex_version_file (void);