* deffilep.y (tokens): Add upper and lower case versions of DATA,
authorDJ Delorie <dj@redhat.com>
Tue, 28 Sep 1999 20:22:55 +0000 (20:22 +0000)
committerDJ Delorie <dj@redhat.com>
Tue, 28 Sep 1999 20:22:55 +0000 (20:22 +0000)
CONSTANT, NONAME and PRIVATE tokens.
(command): Use DATAU.
(expline): Allow for drectve syntax as well.
(exp_opt_list): Likewise.
(exp_opt): Likewise.
* pe-dll.c (make_one): Only generate the idata entries for data
symbols.

ld/ChangeLog
ld/deffilep.y
ld/pe-dll.c

index 64cbbef00da73febaf3fb203b55661d7fbc3d381..f4ca897fb738454f857bfb386dec7cf423ff30d4 100644 (file)
@@ -1,3 +1,14 @@
+1999-09-28  Mumit Khan  <khan@xraylith.wisc.edu>
+
+       * deffilep.y (tokens): Add upper and lower case versions of DATA,
+       CONSTANT, NONAME and PRIVATE tokens.
+       (command): Use DATAU.
+       (expline): Allow for drectve syntax as well.
+       (exp_opt_list): Likewise.
+       (exp_opt): Likewise.
+       * pe-dll.c (make_one): Only generate the idata entries for data
+       symbols.
+
 1999-09-28  Geoffrey Keating  <geoffk@cygnus.com>
 
        * scripttempl/elf.sc (.sdata): Include .gnu.linkonce.s.* sections
index 70e517c486d92700d09d2e4fa7c855e67274f4d7..31aa703a917d951d4dffffa3604a3c82ed7acd67 100644 (file)
@@ -106,9 +106,10 @@ static const char *lex_parse_string_end = 0;
   int number;
 };
 
-%token NAME, LIBRARY, DESCRIPTION, STACKSIZE, HEAPSIZE, CODE, DATA
-%token SECTIONS, EXPORTS, IMPORTS, VERSIONK, BASE, CONSTANT, PRIVATE
-%token READ WRITE EXECUTE SHARED NONAME DIRECTIVE
+%token NAME, LIBRARY, DESCRIPTION, STACKSIZE, HEAPSIZE, CODE, DATAU, DATAL
+%token SECTIONS, EXPORTS, IMPORTS, VERSIONK, BASE, CONSTANTU, CONSTANTL
+%token PRIVATEU, PRIVATEL
+%token READ WRITE EXECUTE SHARED NONAMEU NONAMEL DIRECTIVE
 %token <id> ID
 %token <number> NUMBER
 %type  <number> opt_base opt_ordinal
@@ -128,7 +129,7 @@ command:
        |       STACKSIZE NUMBER opt_number { def_stacksize ($2, $3);}
        |       HEAPSIZE NUMBER opt_number { def_heapsize ($2, $3);}
        |       CODE attr_list { def_section ("CODE", $2);}
-       |       DATA attr_list  { def_section ("DATA", $2);}
+       |       DATAU attr_list  { def_section ("DATA", $2);}
        |       SECTIONS seclist
        |       EXPORTS explist 
        |       IMPORTS implist
@@ -145,18 +146,28 @@ explist:
        ;
 
 expline:
-               ID opt_equal_name opt_ordinal exp_opt_list
-                       { def_exports ($1, $2, $3, $4); }
+               /* The opt_comma is necessary to support both the usual
+                 DEF file syntax as well as .drectve syntax which
+                 mandates <expsym>,<expoptlist>.  */
+               ID opt_equal_name opt_ordinal opt_comma exp_opt_list
+                       { def_exports ($1, $2, $3, $5); }
        ;
 exp_opt_list:
-               exp_opt exp_opt_list { $$ = $1 | $2; }
+               /* The opt_comma is necessary to support both the usual
+                  DEF file syntax as well as .drectve syntax which
+                  allows for comma separated opt list.  */
+               exp_opt opt_comma exp_opt_list { $$ = $1 | $3; }
        |       { $$ = 0; }
        ;
 exp_opt:
-               NONAME          { $$ = 1; }
-       |       CONSTANT        { $$ = 2; }
-       |       DATA            { $$ = 4; }
-       |       PRIVATE         { $$ = 8; }
+               NONAMEU         { $$ = 1; }
+       |       NONAMEL         { $$ = 1; }
+       |       CONSTANTU       { $$ = 2; }
+       |       CONSTANTL       { $$ = 2; }
+       |       DATAU           { $$ = 4; }
+       |       DATAL           { $$ = 4; }
+       |       PRIVATEU        { $$ = 8; }
+       |       PRIVATEL        { $$ = 8; }
        ;
 implist:       
                implist impline
@@ -827,8 +838,10 @@ tokens[] =
 {
   { "BASE", BASE },
   { "CODE", CODE },
-  { "CONSTANT", CONSTANT },
-  { "DATA", DATA },
+  { "CONSTANT", CONSTANTU },
+  { "constant", CONSTANTL },
+  { "DATA", DATAU },
+  { "data", DATAL },
   { "DESCRIPTION", DESCRIPTION },
   { "DIRECTIVE", DIRECTIVE },
   { "EXECUTE", EXECUTE },
@@ -837,8 +850,10 @@ tokens[] =
   { "IMPORTS", IMPORTS },
   { "LIBRARY", LIBRARY },
   { "NAME", NAME },
-  { "NONAME", NONAME },
-  { "PRIVATE", PRIVATE },
+  { "NONAME", NONAMEU },
+  { "noname", NONAMEL },
+  { "PRIVATE", PRIVATEU },
+  { "private", PRIVATEL },
   { "READ", READ },
   { "SECTIONS", SECTIONS },
   { "SEGMENTS", SECTIONS },
index 5afdfbbf7bedeee3ed7de759c2e24a2754c6f2dc..61f57f0989e3241296e00bfcf7e70be26b10d304 100644 (file)
@@ -1307,7 +1307,8 @@ make_one (exp, parent)
   id5 = quick_section (abfd, ".idata$5", SEC_HAS_CONTENTS, 2);
   id4 = quick_section (abfd, ".idata$4", SEC_HAS_CONTENTS, 2);
   id6 = quick_section (abfd, ".idata$6", SEC_HAS_CONTENTS, 2);
-  quick_symbol (abfd, U(""), exp->internal_name, "", tx, BSF_GLOBAL, 0);
+  if (! exp->flag_data)
+    quick_symbol (abfd, U(""), exp->internal_name, "", tx, BSF_GLOBAL, 0);
   quick_symbol (abfd, U("_head_"), dll_symname, "", UNDSEC, BSF_GLOBAL, 0);
   quick_symbol (abfd, U("__imp_"), exp->internal_name, "", id5, BSF_GLOBAL, 0);
   quick_symbol (abfd, U("_imp__"), exp->internal_name, "", id5, BSF_GLOBAL, 0);