From: Ian Lance Taylor Date: Fri, 26 Oct 2007 22:16:06 +0000 (+0000) Subject: From Craig Silverstein: preliminary support for OPTION in linker script. X-Git-Tag: sid-snapshot-20071101~71 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=195e7dc6c1d9ed2d3ea5dca8c7798799383b7341;p=external%2Fbinutils.git From Craig Silverstein: preliminary support for OPTION in linker script. --- diff --git a/gold/script-c.h b/gold/script-c.h index cb0ef8e..1214800 100644 --- a/gold/script-c.h +++ b/gold/script-c.h @@ -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 diff --git a/gold/script.cc b/gold/script.cc index 2cea0c8..08be65f 100644 --- a/gold/script.cc +++ b/gold/script.cc @@ -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(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(closurev); + printf("%s: Saw option %s\n", closure->filename(), option); //!! +} diff --git a/gold/yyscript.y b/gold/yyscript.y index b78c09b..3250e8e 100644 --- a/gold/yyscript.y +++ b/gold/yyscript.y @@ -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: