summaryrefslogtreecommitdiff
blob: 41b6a33bdd81d9592b6584a7bddb80c855fb69a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
From 905bf3c180f4f7fd07024eb9ff7851898593f3f8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= <dilfridge@gentoo.org>
Date: Tue, 20 Jul 2021 21:15:24 +0200
Subject: [PATCH 6/6] Gentoo: Pass --hash-style=sysv to ld in the testsuite

---
 binutils/testsuite/lib/binutils-common.exp |  2 +-
 ld/testsuite/lib/ld-lib.exp                | 16 ++++++++++++++--
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
index 59e25df99b0..401a05b5c32 100644
--- a/binutils/testsuite/lib/binutils-common.exp
+++ b/binutils/testsuite/lib/binutils-common.exp
@@ -1279,7 +1279,7 @@ proc run_dump_test { name {extra_options {}} } {
 
 	    # Add -L$srcdir/$subdir so that the linker command can use
 	    # linker scripts in the source directory.
-	    set cmd "$LD $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
+	    set cmd "$LD --hash-style=sysv $ld_extra_opt $LDFLAGS -L$srcdir/$subdir \
 		   $opts(ld) -o $objfile $objfiles $opts(ld_after_inputfiles)"
 
 	    # If needed then check for, or add a -Map option.
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
index 8fd14afc63e..adbeaa3bd08 100644
--- a/ld/testsuite/lib/ld-lib.exp
+++ b/ld/testsuite/lib/ld-lib.exp
@@ -167,7 +167,7 @@ proc default_ld_relocate { ld target objects } {
     global HOSTING_EMU
 
     remote_file host delete $target
-    return [run_host_cmd_yesno "$ld" "$HOSTING_EMU -o $target -r $objects"]
+    return [run_host_cmd_yesno "$ld" "$HOSTING_EMU --hash-style=sysv -o $target -r $objects"]
 }
 
 # Check to see if ld is being invoked with a non-endian output format
@@ -198,8 +198,20 @@ proc default_ld_link { ld target objects } {
 	set flags [big_or_little_endian]
     }
 
+    # Hilariously, this procedure is called sometimes with $CC and sometimes
+    # with $ld as parameter. If we want to change the default behaviour, we
+    # need to take the different option formats into account.
+    # We check the $ld parameter for
+    # - ld-new         -> we're working with the new linker
+    # - otherwise      -> we're likely working with the system compiler
+    if {[regexp {ld-new$} $ld]} {
+      set gentoosysv "--hash-style=sysv"
+    } else {
+      set gentoosysv "-Wl,--hash-style=sysv"
+    }
+
     remote_file host delete $target
-    set exec_output [run_host_cmd "$ld" "$flags -o $target $objects"]
+    set exec_output [run_host_cmd "$ld" "$gentoosysv $flags -o $target $objects"]
     set exec_output [prune_warnings $exec_output]
 
     # We don't care if we get a warning about a non-existent start
-- 
2.31.1