* 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.
This commit is contained in:
DJ Delorie 1999-09-28 20:22:55 +00:00
parent ce195b4280
commit 7c9e78f8e4
3 changed files with 43 additions and 16 deletions

View 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

View 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 },

View 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);