* defparse.y (explist): Remove separate expline to eliminate
authorIan Lance Taylor <ian@airs.com>
Sun, 13 Jun 1999 10:16:43 +0000 (10:16 +0000)
committerIan Lance Taylor <ian@airs.com>
Sun, 13 Jun 1999 10:16:43 +0000 (10:16 +0000)
shift/reduce conflict.
From Kai-Uwe Rommel <rommel@ars.de>:
* defparse.y: Add tokens NONSHARED, SINGLE, MULTIPLE,
INITINSTANCE, INITGLOBAL, TERMINSTANCE, and TERMGLOBAL.
(command): Add option_list after LIBRARY.
(attr): Accept and ignore NONSHARED, SINGLE, and MULTIPLE.
(option_list, option): New nonterminals.
* deflex.l: Recognize NONSHARED, SINGLE, MULTIPLE, INITINSTANCE,
INITGLOBAL, TERMINSTANCE, and TERMGLOBAL.

binutils/ChangeLog
binutils/deflex.l
binutils/defparse.y

index 4adb7d4065abb4c5b7dbcb6c0886d7a494c9f1ad..8e7ba4a618a86f79973d0a1bbab5669905ad65ad 100644 (file)
@@ -1,3 +1,17 @@
+1999-06-13  Ian Lance Taylor  <ian@zembu.com>
+
+       * defparse.y (explist): Remove separate expline to eliminate
+       shift/reduce conflict.
+
+       From Kai-Uwe Rommel <rommel@ars.de>:
+       * defparse.y: Add tokens NONSHARED, SINGLE, MULTIPLE,
+       INITINSTANCE, INITGLOBAL, TERMINSTANCE, and TERMGLOBAL.
+       (command): Add option_list after LIBRARY.
+       (attr): Accept and ignore NONSHARED, SINGLE, and MULTIPLE.
+       (option_list, option): New nonterminals.
+       * deflex.l: Recognize NONSHARED, SINGLE, MULTIPLE, INITINSTANCE,
+       INITGLOBAL, TERMINSTANCE, and TERMGLOBAL.
+
 1999-06-12  Ian Lance Taylor  <ian@zembu.com>
 
        * ar.c (O_BINARY): Define as 0 if not defined.
index e7fa3626394fb5a29988518474f170e7e9fcd51b..928c42c6b9fee46abdf70cd40a0a6b2c72f9a4ab 100644 (file)
@@ -1,6 +1,6 @@
 %{/* deflex.l - Lexer for .def files */
 
-/*   Copyright (C) 1995, 1997, 1998 Free Software Foundation, Inc.
+/*   Copyright (C) 1995, 1997, 1998, 1999 Free Software Foundation, Inc.
 
 This file is part of GNU Binutils.
 
@@ -50,6 +50,13 @@ int linenumber;
 "WRITE"                { return WRITE;}
 "EXECUTE"      { return EXECUTE;}
 "SHARED"       { return SHARED;}
+"NONSHARED"    { return NONSHARED;}
+"SINGLE"       { return SINGLE;}
+"MULTIPLE"     { return MULTIPLE;}
+"INITINSTANCE" { return INITINSTANCE;}
+"INITGLOBAL"   { return INITGLOBAL;}
+"TERMINSTANCE" { return TERMINSTANCE;}
+"TERMGLOBAL"   { return TERMGLOBAL;}
 
 [0-9][x0-9A-Fa-f]* { yylval.number = strtol (yytext,0,0); 
                return NUMBER; }
index 1cb6360961533dc19df76a443324888d432ccc1d..5718d4614430662470e9dfd59e458fbf4b14b4b7 100644 (file)
@@ -1,6 +1,6 @@
 %{ /* defparse.y - parser for .def files */
 
-/*   Copyright (C) 1995, 1997, 1998 Free Software Foundation, Inc.
+/*   Copyright (C) 1995, 1997, 1998, 1999 Free Software Foundation, Inc.
 
 This file is part of GNU Binutils.
 
@@ -30,7 +30,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 %token NAME, LIBRARY, DESCRIPTION, STACKSIZE, HEAPSIZE, CODE, DATA
 %token SECTIONS, EXPORTS, IMPORTS, VERSIONK, BASE, CONSTANT
-%token READ WRITE EXECUTE SHARED NONAME
+%token READ WRITE EXECUTE SHARED NONSHARED NONAME
+%token SINGLE MULTIPLE INITINSTANCE INITGLOBAL TERMINSTANCE TERMGLOBAL
 %token <id> ID
 %token <number> NUMBER
 %type  <number> opt_base opt_ordinal opt_NONAME opt_CONSTANT opt_DATA
@@ -45,7 +46,7 @@ start: start command
 
 command: 
                NAME opt_name opt_base { def_name ($2, $3); }
-       |       LIBRARY opt_name opt_base { def_library ($2, $3); }
+       |       LIBRARY opt_name opt_base option_list { def_library ($2, $3); }
        |       EXPORTS explist 
        |       DESCRIPTION ID { def_description ($2);}
        |       STACKSIZE NUMBER opt_number { def_stacksize ($2, $3);}
@@ -61,7 +62,6 @@ command:
 
 explist:
                /* EMPTY */
-       |       expline
        |       explist expline
        ;
 
@@ -108,10 +108,13 @@ opt_number: ',' NUMBER { $$=$2;}
        ;
        
 attr:
-               READ { $$ = 1;}
-       |       WRITE { $$ = 2;}        
-       |       EXECUTE { $$=4;}
-       |       SHARED { $$=8;}
+               READ { $$ = 1; }
+       |       WRITE { $$ = 2; }
+       |       EXECUTE { $$ = 4; }
+       |       SHARED { $$ = 8; }
+       |       NONSHARED { $$ = 0; }
+       |       SINGLE { $$ = 0; }
+       |       MULTIPLE { $$ = 0; }
        ;
 
 opt_CONSTANT:
@@ -153,5 +156,14 @@ opt_base: BASE     '=' NUMBER      { $$= $3;}
        |       { $$=-1;}
        ;
 
-       
+option_list:
+               /* empty */
+       |       option_list opt_comma option
+       ;
 
+option:
+               INITINSTANCE
+       |       INITGLOBAL
+       |       TERMINSTANCE
+       |       TERMGLOBAL
+       ;