diff options
-rw-r--r-- | ld/ChangeLog | 3 | ||||
-rw-r--r-- | ld/Makefile.in | 5 | ||||
-rw-r--r-- | ld/ldgram.y | 34 |
3 files changed, 30 insertions, 12 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 174cb2d..b4d5b3b 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -6,6 +6,9 @@ Fri May 1 18:17:52 1992 K. Richard Pixley (rich@cygnus.com) Fri May 1 13:03:41 1992 Steve Chamberlain (sac@thepub.cygnus.com) + * ldgram.y, ldlex.c, mri.c: added more compatible words; BASE, ALIAS and + PUBLIC. + * Makefile.in: now use flex, not lex * ldlex.l, ldlang.c, ldctor.c: lint Wed Apr 22 12:48:42 1992 Steve Chamberlain (sac@thepub.cygnus.com) diff --git a/ld/Makefile.in b/ld/Makefile.in index 9db6ea6..da5463e 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -50,7 +50,7 @@ SHELL = /bin/sh INSTALL = install -c INSTALL_PROGRAM = $(INSTALL) INSTALL_DATA = $(INSTALL) - +FLEX=flex AR = ar AR_FLAGS = qv CFLAGS = -g @@ -169,7 +169,8 @@ ldemul.o: ldemul-list.h ldlex.c: ldlex.l # /lib/cpp -E -P $(INCLUDES) $(HDEFINES) $(TDEFINES) $(CDEFINES) $(VPATH)/ldlex.l >ldlex.p - $(LEX) -Cem -t $(VPATH)/ldlex.l >ldlex.c + + $(FLEX) -I -Cem -t $(VPATH)/ldlex.l >ldlex.c # cp ldlex.q ldlex.c diff --git a/ld/ldgram.y b/ld/ldgram.y index 9c882f7..7639ab1 100644 --- a/ld/ldgram.y +++ b/ld/ldgram.y @@ -133,7 +133,7 @@ struct sec *section; %token '{' '}' %token SIZEOF_HEADERS OUTPUT_FORMAT FORCE_COMMON_ALLOCATION OUTPUT_ARCH %token SIZEOF_HEADERS -%token MEMORY +%token MEMORY DEFSYMEND %token NOLOAD DSECT COPY INFO OVERLAY %token NAME DEFINED TARGET_K SEARCH_DIR MAP ENTRY %token OPTION_e OPTION_c OPTION_noinhibit_exec OPTION_s OPTION_S OPTION_sort_common @@ -152,7 +152,8 @@ struct sec *section; %type <name> filename -%token CHIP LIST SECT ABSOLUTE LOAD NEWLINE ENDWORD ORDER NAMEWORD FORMAT +%token CHIP LIST SECT ABSOLUTE LOAD NEWLINE ENDWORD ORDER NAMEWORD +%token FORMAT PUBLIC DEFSYMEND BASE ALIAS %{ ld_config_type config; @@ -269,11 +270,11 @@ command_line_option: lang_add_target($2); } | OPTION_Texp - { + { ldlex_expression(); hex_mode = 16; } INT - { + { ldlex_popstate(); lang_section_start($1,exp_intop($3)); hex_mode = 0; } @@ -320,10 +321,9 @@ END { ldlex_command();} lang_input_file_is_symbols_only_enum, (char *)NULL); } - | OPTION_defsym { ldlex_expression(); - - } - NAME '=' mustbe_exp { ldlex_popstate(); + + | OPTION_defsym { ldlex_defsym(); } + NAME '=' exp DEFSYMEND { ldlex_popstate(); lang_add_assignment(exp_assop($4,$3,$5)); } | '-' NAME @@ -361,6 +361,12 @@ mri_script_command: } | ORDER ordernamelist | ENDWORD + | PUBLIC NAME '=' exp + { mri_public($2, $4); } + | PUBLIC NAME ',' exp + { mri_public($2, $4); } + | PUBLIC NAME exp + { mri_public($2, $3); } | FORMAT NAME { mri_format($2); } | SECT NAME ',' exp @@ -373,6 +379,12 @@ mri_script_command: | LOAD mri_load_name_list | NAMEWORD NAME { mri_name($2); } + | ALIAS NAME ',' NAME + { mri_alias($2,$4,0);} + | ALIAS NAME ',' INT + { mri_alias($2,0,$4);} + | BASE exp + { mri_base($2); } | ; @@ -750,10 +762,12 @@ section: NAME { ldlex_expression(); } { lang_enter_output_section_statement($1,$3,$5,$6); } - statement '}' fill_opt memspec_opt + statement '}' {ldlex_expression();} fill_opt memspec_opt { - lang_leave_output_section_statement($13, $14); + ldlex_popstate(); + lang_leave_output_section_statement($14, $15); } +opt_comma ; |