This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Allow a second -T<section>=<addr> to override a previous version on the same linker command line.


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=42b7a39bf6eb2e90fb1b07c2d53d7a93263508d2

commit 42b7a39bf6eb2e90fb1b07c2d53d7a93263508d2
Author: Nick Clifton <nickc@redhat.com>
Date:   Mon Jun 27 16:35:58 2016 +0100

    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.

Diff:
---
 ld/ChangeLog                       |  8 ++++++++
 ld/lexsup.c                        |  1 +
 ld/testsuite/ld-scripts/pr20302.d  | 12 ++++++++++++
 ld/testsuite/ld-scripts/script.exp |  1 +
 4 files changed, 22 insertions(+)

diff --git a/ld/ChangeLog b/ld/ChangeLog
index 50adaee..c1b7f45 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 7f8146c..6d28e91 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 0000000..ec655dd
--- /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 b178cb3..1b19202 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"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]