aboutsummaryrefslogtreecommitdiff
path: root/ld/ldgram.y
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1999-06-12 21:24:56 +0000
committerIan Lance Taylor <ian@airs.com>1999-06-12 21:24:56 +0000
commitaa8804e46ee31cc1d2e00f57467c8e5a4a84a273 (patch)
tree90968c910b1a22483da719d90e576f8f9f8efcdf /ld/ldgram.y
parent57e21befb98e8ad0b2c6dda814869145a8bcd60b (diff)
downloadgdb-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.y27
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: