From Craig Silverstein: preliminary support for OPTION in linker script.

This commit is contained in:
Ian Lance Taylor 2007-10-26 22:16:06 +00:00
parent df2a60d01d
commit 195e7dc6c1
3 changed files with 23 additions and 0 deletions

View File

@ -66,6 +66,10 @@ script_start_as_needed(void* closure);
extern void
script_end_as_needed(void* closure);
/* Called by the bison parser to parse an OPTION. */
extern void
script_parse_option(void* closure, const char*);
#ifdef __cplusplus
}
#endif

View File

@ -1045,6 +1045,7 @@ Keyword_to_parsecode::keyword_parsecodes_[] =
{ "NOLOAD", NOLOAD },
{ "ONLY_IF_RO", ONLY_IF_RO },
{ "ONLY_IF_RW", ONLY_IF_RW },
{ "OPTION", OPTION },
{ "ORIGIN", ORIGIN },
{ "OUTPUT", OUTPUT },
{ "OUTPUT_ARCH", OUTPUT_ARCH },
@ -1257,3 +1258,12 @@ script_end_as_needed(void* closurev)
Parser_closure* closure = static_cast<Parser_closure*>(closurev);
closure->position_dependent_options().clear_as_needed();
}
// Called by the bison parser to parse an OPTION.
extern "C" void
script_parse_option(void* closurev, const char* option)
{
Parser_closure* closure = static_cast<Parser_closure*>(closurev);
printf("%s: Saw option %s\n", closure->filename(), option); //!!
}

View File

@ -151,6 +151,13 @@
%token TRUNCATE
%token VERSIONK /* VERSION */
/* Keywords, part 2. These are keywords that are unique to gold,
and not present in the old GNU linker. As before, unless the
comments say otherwise, the keyword is recognized as the token
name in upper case. */
%token OPTION
%%
file_list:
@ -164,6 +171,8 @@ file_cmd:
{ script_start_group(closure); }
'(' input_list ')'
{ script_end_group(closure); }
| OPTION '(' STRING ')'
{ script_parse_option(closure, $3); }
;
input_list: