diff options
author | Ian Lance Taylor <ian@airs.com> | 1999-06-12 21:24:56 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1999-06-12 21:24:56 +0000 |
commit | aa8804e46ee31cc1d2e00f57467c8e5a4a84a273 (patch) | |
tree | 90968c910b1a22483da719d90e576f8f9f8efcdf /ld/ldgram.y | |
parent | 57e21befb98e8ad0b2c6dda814869145a8bcd60b (diff) | |
download | gdb-aa8804e46ee31cc1d2e00f57467c8e5a4a84a273.zip gdb-aa8804e46ee31cc1d2e00f57467c8e5a4a84a273.tar.gz gdb-aa8804e46ee31cc1d2e00f57467c8e5a4a84a273.tar.bz2 |
This fixes ! to work as documented in a memory region attribute list.
From Thomas Zenker <thz@lennartz-electronic.de>:
* ldgram.y (attributes_opt): Use attributes_list instead of NAME.
(attributes_list, attributes_string): New nonterminals.
* ldlang.c (lang_set_flags): Add invert parameter. Don't handle
'!'.
* ldlang.c (lang_set_flags): Update declaration.
Diffstat (limited to 'ld/ldgram.y')
-rw-r--r-- | ld/ldgram.y | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/ld/ldgram.y b/ld/ldgram.y index a1f3ed6..002b9fb 100644 --- a/ld/ldgram.y +++ b/ld/ldgram.y @@ -1,5 +1,5 @@ /* A YACC grammer to parse a superset of the AT&T linker scripting languaue. - Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 1998 + Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 1999 Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support (steve@cygnus.com). @@ -132,7 +132,7 @@ static int error_index; %token ORIGIN FILL %token LENGTH CREATE_OBJECT_SYMBOLS INPUT GROUP OUTPUT CONSTRUCTORS %token ALIGNMOD AT PROVIDE -%type <token> assign_op atype +%type <token> assign_op atype attributes_opt %type <name> filename %token CHIP LIST SECT ABSOLUTE LOAD NEWLINE ENDWORD ORDER NAMEWORD ASSERT_K %token FORMAT PUBLIC DEFSYMEND BASE ALIAS TRUNCATE REL @@ -610,15 +610,24 @@ length_spec: "length", lang_first_phase_enum); } - + ; attributes_opt: - '(' NAME ')' - { - lang_set_flags(region, $2); - } - | - + /* empty */ + { /* dummy action to avoid bison 1.25 error message */ } + | '(' attributes_list ')' + ; + +attributes_list: + attributes_string + | attributes_list attributes_string + ; + +attributes_string: + NAME + { lang_set_flags (region, $1, 0); } + | '!' NAME + { lang_set_flags (region, $2, 1); } ; startup: |