diff options
author | Nick Clifton <nickc@redhat.com> | 2016-06-27 16:35:58 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2016-06-27 16:35:58 +0100 |
commit | 42b7a39bf6eb2e90fb1b07c2d53d7a93263508d2 (patch) | |
tree | f0a9def52397f3cb301100dc7770dc8da5e61b55 /ld | |
parent | 95daf21060008545515e94aeba501082e8710cc0 (diff) | |
download | binutils-gdb-42b7a39bf6eb2e90fb1b07c2d53d7a93263508d2.tar.gz |
Allow a second -T<section>=<addr> to override a previous version on the same linker command line.
PR ld/20302
* lexsup.c (set_segment_start): If resetting the start address of
a section, remember to generate a new script element as well.
* testsuite/ld-scripts/pr20302.d: New test.
* testsuite/ld-scripts/scripts.exp: Run the new test.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 8 | ||||
-rw-r--r-- | ld/lexsup.c | 1 | ||||
-rw-r--r-- | ld/testsuite/ld-scripts/pr20302.d | 12 | ||||
-rw-r--r-- | ld/testsuite/ld-scripts/script.exp | 1 |
4 files changed, 22 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 50adaee6199..c1b7f45c03d 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,11 @@ +2016-06-27 Nick Clifton <nickc@redhat.com> + + PR ld/20302 + * lexsup.c (set_segment_start): If resetting the start address of + a section, remember to generate a new script element as well. + * testsuite/ld-scripts/pr20302.d: New test. + * testsuite/ld-scripts/scripts.exp: Run the new test. + 2016-06-24 Alan Modra <amodra@gmail.com> * testsuite/ld-aarch64/aarch64-elf.exp (aarch64_choose_ilp32_emul): diff --git a/ld/lexsup.c b/ld/lexsup.c index 7f8146ca357..6d28e9142b0 100644 --- a/ld/lexsup.c +++ b/ld/lexsup.c @@ -1686,6 +1686,7 @@ set_segment_start (const char *section, char *valstr) if (strcmp (seg->name, name) == 0) { seg->value = val; + lang_section_start (section, exp_intop (val), seg); return; } /* There was no existing value so we must create a new segment diff --git a/ld/testsuite/ld-scripts/pr20302.d b/ld/testsuite/ld-scripts/pr20302.d new file mode 100644 index 00000000000..ec655dd2b19 --- /dev/null +++ b/ld/testsuite/ld-scripts/pr20302.d @@ -0,0 +1,12 @@ +#ld: -Tdata=0x1000 -Tdata=0x2000 -Tcross2.t +#source: align2a.s +#objdump: -h +#notarget: rx-*-* *-*-aout *-*-netbsd x86_64-*-cygwin *-*-vms +# RX uses non standard section names. +# AOUT and NETBSD have fixed address for the data section. +# x86_64 Cygwin biases all start addresses to be > 2Gb. +# VMS targets need extra libraries. + +#... + . \.data[ ]+0+[0-9a-f]+[ ]+0+02000[ ]+0+02000.* +#pass diff --git a/ld/testsuite/ld-scripts/script.exp b/ld/testsuite/ld-scripts/script.exp index b178cb3d2ea..1b19202818f 100644 --- a/ld/testsuite/ld-scripts/script.exp +++ b/ld/testsuite/ld-scripts/script.exp @@ -230,3 +230,4 @@ foreach test_script $test_script_list { } run_dump_test "align-with-input" +run_dump_test "pr20302" |