[binutils-gdb] ld: adjust ld-scripts/map-address.*

Jan Beulich jbeulich@sourceware.org
Thu Mar 4 15:56:59 GMT 2021


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

commit d4e5db4e5031f1b4050620e2b5a4599ace52a29f
Author: Jan Beulich <jbeulich@suse.com>
Date:   Thu Mar 4 16:56:40 2021 +0100

    ld: adjust ld-scripts/map-address.*
    
    Without setting an image base address and without naming at least .text,
    this test produces entirely bogus PE output. To be honest, even the ELF
    output looks odd: .text gets placed at 0x10204, and both foo and bar get
    associated with .text despite living below its start address.
    
    Since neither image base nor .text placement are the subject of this
    test, specify .text placement explicitly and in the PE case force the
    image base to zero.

Diff:
---
 ld/ChangeLog                            |  6 ++++++
 ld/testsuite/ld-scripts/map-address.exp | 14 ++++++++++----
 ld/testsuite/ld-scripts/map-address.t   |  3 +++
 3 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/ld/ChangeLog b/ld/ChangeLog
index 95bb3f6c1a8..c451af0840e 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,9 @@
+2021-03-04  Jan Beulich  <jbeulich@suse.com>
+
+	* testsuite/ld-scripts/map-address.exp: Set image base to zero
+	for PE/COFF.
+	* testsuite/ld-scripts/map-address.t: Place .text.
+
 2021-03-04  Jan Beulich  <jbeulich@suse.com>
 
 	* ldexp.c (ldexp_is_final_sym_absolute): New.
diff --git a/ld/testsuite/ld-scripts/map-address.exp b/ld/testsuite/ld-scripts/map-address.exp
index 9e6f2dc3df3..0f9ac1cf4e6 100644
--- a/ld/testsuite/ld-scripts/map-address.exp
+++ b/ld/testsuite/ld-scripts/map-address.exp
@@ -26,9 +26,15 @@ if {![ld_assemble $as $srcdir/$subdir/sizeof.s tmpdir/map-address.o]} {
     return
 }
 
+if { [is_pecoff_format] } then {
+    set IMAGE_BASE "--image-base 0"
+} else {
+    set IMAGE_BASE ""
+}
+
 if {![ld_link $ld tmpdir/map-address \
 	 "$LDFLAGS -T $srcdir/$subdir/map-address.t \
-	  tmpdir/map-address.o \
+	  $IMAGE_BASE tmpdir/map-address.o \
 	  -Map tmpdir/map-address.map"]} {
     fail $testname
     return
@@ -51,7 +57,7 @@ set testname "map to directory"
 
 if {![ld_link $ld tmpdir/map-address \
 	 "$LDFLAGS -T $srcdir/$subdir/map-address.t \
-	  tmpdir/map-address.o \
+	  $IMAGE_BASE tmpdir/map-address.o \
 	  -Map tmpdir --output fred"]} {
     fail $testname
     return
@@ -74,7 +80,7 @@ set testname "map to % directory"
 
 if {![ld_link $ld tmpdir/map-address \
 	 "$LDFLAGS -T $srcdir/$subdir/map-address.t \
-	  tmpdir/map-address.o \
+	  $IMAGE_BASE tmpdir/map-address.o \
 	  -Map=tmpdir/% --output fred"]} {
     fail $testname
     return
@@ -97,7 +103,7 @@ set testname "map to %.foo directory"
 
 if {![ld_link $ld tmpdir/map-address \
 	 "$LDFLAGS -T $srcdir/$subdir/map-address.t \
-	  tmpdir/map-address.o \
+	  $IMAGE_BASE tmpdir/map-address.o \
 	  -Map=tmpdir/%.foo --output fred"]} {
     fail $testname
     return
diff --git a/ld/testsuite/ld-scripts/map-address.t b/ld/testsuite/ld-scripts/map-address.t
index e077ed1cb4c..94e14bde36d 100644
--- a/ld/testsuite/ld-scripts/map-address.t
+++ b/ld/testsuite/ld-scripts/map-address.t
@@ -8,4 +8,7 @@ SECTIONS
   bar = .;
   . = ALIGN (4);
   frob = .;
+
+  . = 0x10000;
+  .text : { *(.text) }
 }


More information about the Binutils-cvs mailing list