diff options
Diffstat (limited to 'binutils/defparse.y')
-rw-r--r-- | binutils/defparse.y | 245 |
1 files changed, 0 insertions, 245 deletions
diff --git a/binutils/defparse.y b/binutils/defparse.y deleted file mode 100644 index a4e73eb..0000000 --- a/binutils/defparse.y +++ /dev/null @@ -1,245 +0,0 @@ -%{ /* defparse.y - parser for .def files */ - -/* Copyright 1995, 1997, 1998, 1999, 2001, 2004, 2005, 2007 - Free Software Foundation, Inc. - - This file is part of GNU Binutils. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, - MA 02110-1301, USA. */ - -#include "sysdep.h" -#include "bfd.h" -#include "libiberty.h" -#include "dlltool.h" -%} - -%union { - char *id; - const char *id_const; - int number; -}; - -%token NAME LIBRARY DESCRIPTION STACKSIZE HEAPSIZE CODE DATA -%token SECTIONS EXPORTS IMPORTS VERSIONK BASE CONSTANT -%token READ WRITE EXECUTE SHARED NONSHARED NONAME PRIVATE -%token SINGLE MULTIPLE INITINSTANCE INITGLOBAL TERMINSTANCE TERMGLOBAL -%token EQUAL -%token <id> ID -%token <number> NUMBER -%type <number> opt_base opt_ordinal opt_NONAME opt_CONSTANT opt_DATA opt_PRIVATE -%type <number> attr attr_list opt_number -%type <id> opt_name opt_name2 opt_equal_name opt_import_name -%type <id_const> keyword_as_name - -%% - -start: start command - | command - ; - -command: - NAME opt_name opt_base { def_name ($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);} - | HEAPSIZE NUMBER opt_number { def_heapsize ($2, $3);} - | CODE attr_list { def_code ($2);} - | DATA attr_list { def_data ($2);} - | SECTIONS seclist - | IMPORTS implist - | VERSIONK NUMBER { def_version ($2,0);} - | VERSIONK NUMBER '.' NUMBER { def_version ($2,$4);} - ; - - -explist: - /* EMPTY */ - | explist expline - ; - -expline: - ID opt_equal_name opt_ordinal opt_NONAME opt_CONSTANT opt_DATA opt_PRIVATE - opt_import_name - { def_exports ($1, $2, $3, $4, $5, $6, $7, $8);} - ; -implist: - implist impline - | impline - ; - -impline: - ID '=' ID '.' ID '.' ID opt_import_name - { def_import ($1,$3,$5,$7, 0, $8); } - | ID '=' ID '.' ID '.' NUMBER opt_import_name - { def_import ($1,$3,$5, 0,$7, $8); } - | ID '=' ID '.' ID opt_import_name - { def_import ($1,$3, 0,$5, 0, $6); } - | ID '=' ID '.' NUMBER opt_import_name - { def_import ($1,$3, 0, 0,$5, $6); } - | ID '.' ID '.' ID opt_import_name - { def_import ( 0,$1,$3,$5, 0, $6); } - | ID '.' ID '.' NUMBER opt_import_name - { def_import ( 0,$1,$3, 0,$5, $6); } - | ID '.' ID opt_import_name - { def_import ( 0,$1, 0,$3, 0, $4); } - | ID '.' NUMBER opt_import_name - { def_import ( 0,$1, 0, 0,$3, $4); } -; - -seclist: - seclist secline - | secline - ; - -secline: - ID attr_list { def_section ($1,$2);} - ; - -attr_list: - attr_list opt_comma attr - | attr - ; - -opt_comma: - ',' - | - ; -opt_number: ',' NUMBER { $$=$2;} - | { $$=-1;} - ; - -attr: - READ { $$ = 1; } - | WRITE { $$ = 2; } - | EXECUTE { $$ = 4; } - | SHARED { $$ = 8; } - | NONSHARED { $$ = 0; } - | SINGLE { $$ = 0; } - | MULTIPLE { $$ = 0; } - ; - -opt_CONSTANT: - CONSTANT {$$=1;} - | {$$=0;} - ; - -opt_NONAME: - NONAME {$$=1;} - | {$$=0;} - ; - -opt_DATA: - DATA { $$ = 1; } - | { $$ = 0; } - ; - -opt_PRIVATE: - PRIVATE { $$ = 1; } - | { $$ = 0; } - ; - -keyword_as_name: NAME { $$ = "NAME"; } -/* Disabled LIBRARY keyword for a quirk in libtool. It places LIBRARY - command after EXPORTS list, which is illegal by specification. - See PR binutils/13710 - | LIBRARY { $$ = "LIBRARY"; } */ - | DESCRIPTION { $$ = "DESCRIPTION"; } - | STACKSIZE { $$ = "STACKSIZE"; } - | HEAPSIZE { $$ = "HEAPSIZE"; } - | CODE { $$ = "CODE"; } - | DATA { $$ = "DATA"; } - | SECTIONS { $$ = "SECTIONS"; } - | EXPORTS { $$ = "EXPORTS"; } - | IMPORTS { $$ = "IMPORTS"; } - | VERSIONK { $$ = "VERSION"; } - | BASE { $$ = "BASE"; } - | CONSTANT { $$ = "CONSTANT"; } - | NONAME { $$ = "NONAME"; } - | PRIVATE { $$ = "PRIVATE"; } - | READ { $$ = "READ"; } - | WRITE { $$ = "WRITE"; } - | EXECUTE { $$ = "EXECUTE"; } - | SHARED { $$ = "SHARED"; } - | NONSHARED { $$ = "NONSHARED"; } - | SINGLE { $$ = "SINGLE"; } - | MULTIPLE { $$ = "MULTIPLE"; } - | INITINSTANCE { $$ = "INITINSTANCE"; } - | INITGLOBAL { $$ = "INITGLOBAL"; } - | TERMINSTANCE { $$ = "TERMINSTANCE"; } - | TERMGLOBAL { $$ = "TERMGLOBAL"; } - ; - -opt_name2: ID { $$ = $1; } - | '.' keyword_as_name - { - char *name = xmalloc (strlen ($2) + 2); - sprintf (name, ".%s", $2); - $$ = name; - } - | '.' opt_name2 - { - char *name = xmalloc (strlen ($2) + 2); - sprintf (name, ".%s", $2); - $$ = name; - } - | keyword_as_name '.' opt_name2 - { - char *name = xmalloc (strlen ($1) + 1 + strlen ($3) + 1); - sprintf (name, "%s.%s", $1, $3); - $$ = name; - } - | ID '.' opt_name2 - { - char *name = xmalloc (strlen ($1) + 1 + strlen ($3) + 1); - sprintf (name, "%s.%s", $1, $3); - $$ = name; - } - ; -opt_name: opt_name2 { $$ =$1; } - | { $$=""; } - ; - -opt_ordinal: - '@' NUMBER { $$=$2;} - | { $$=-1;} - ; - -opt_import_name: - EQUAL opt_name2 { $$ = $2; } - | { $$ = 0; } - ; - -opt_equal_name: - '=' opt_name2 { $$ = $2; } - | { $$ = 0; } - ; - -opt_base: BASE '=' NUMBER { $$= $3;} - | { $$=-1;} - ; - -option_list: - /* empty */ - | option_list opt_comma option - ; - -option: - INITINSTANCE - | INITGLOBAL - | TERMINSTANCE - | TERMGLOBAL - ; |