diff options
author | Mark Mitchell <mark@codesourcery.com> | 2004-10-26 18:41:52 +0000 |
---|---|---|
committer | Mark Mitchell <mark@codesourcery.com> | 2004-10-26 18:41:52 +0000 |
commit | ba916c8af2642aebace1778a707e90a6a4f9095f (patch) | |
tree | cb164ef2f690eeb1dda279b88015e5e9aa59073d /ld/ldgram.y | |
parent | 1ec5cd372135a64c39eeaa32103cad2913e1754a (diff) | |
download | gdb-ba916c8af2642aebace1778a707e90a6a4f9095f.zip gdb-ba916c8af2642aebace1778a707e90a6a4f9095f.tar.gz gdb-ba916c8af2642aebace1778a707e90a6a4f9095f.tar.bz2 |
* Makefile.in (earmsymbian.c): Depend on armbpabi.sc, not elf.sc.
* ldexp.h (segment_type): New type.
(segments): New variable.
* ldexp.c (segments): New variable.
(exp_print_token): Handle SEGMENT_START.
(fold_binary): Likewise.
* ldgram.y (SEGMENT_START): Declare it as a token.
(exp): Handle SEGMENT_START.
* ldlang.h (lang_address_statement_type): Add segment field.
(lang_section_start): Change prototype.
* ldlang.c (map_input_to_output_sections): Do not process section
assignments if a corresponding SEGMENT_START has already been
seen.
(lang_section_start): Add segment parameter.
* ldlex.l (SEGMENT_START): Add it.
* lexsup.c (seg_segment_start): New function.
(parse_args): Use it for -Tbss, -Tdata, and -Ttext.
* ld.texinfo (SEGMENT_START): Document it.
* emulparams/armsymbian.sh (EMBEDDED): Set it.
* scripttempl/armbpabi.sc: Use SEGMENT_START to control segment
base addresses. Do not map relocations.
* NEWS: Mention SEGMENT_START.
Diffstat (limited to 'ld/ldgram.y')
-rw-r--r-- | ld/ldgram.y | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/ld/ldgram.y b/ld/ldgram.y index bdfdcd5..13e4ca6 100644 --- a/ld/ldgram.y +++ b/ld/ldgram.y @@ -134,6 +134,7 @@ static int error_index; %token SIZEOF_HEADERS OUTPUT_FORMAT FORCE_COMMON_ALLOCATION OUTPUT_ARCH %token INHIBIT_COMMON_ALLOCATION %token SIZEOF_HEADERS +%token SEGMENT_START %token INCLUDE %token MEMORY DEFSYMEND %token NOLOAD DSECT COPY INFO OVERLAY @@ -843,6 +844,15 @@ exp : { $$ = exp_binop (DATA_SEGMENT_RELRO_END, $5, $3); } | DATA_SEGMENT_END '(' exp ')' { $$ = exp_unop(DATA_SEGMENT_END, $3); } + | SEGMENT_START '(' NAME ',' exp ')' + { /* The operands to the expression node are + placed in the opposite order from the way + in which they appear in the script as + that allows us to reuse more code in + fold_binary. */ + $$ = exp_binop (SEGMENT_START, + $5, + exp_nameop (NAME, $3)); } | BLOCK '(' exp ')' { $$ = exp_unop(ALIGN_K,$3); } | NAME |