From f95da8ba8149df5d79afc7cccc9db7d2e91db9f6 Mon Sep 17 00:00:00 2001
From: Thomas Preud'homme <thomas.preudhomme@linaro.org>
Date: Fri, 26 Oct 2018 11:43:33 +0100
Subject: [PATCH 1/2] [testsuite] Fix ld action in run_dump_test
Hi,
run_dump_test proposes an ld action but when trying to make use of it in
a gas test it gave me some Tcl error. It turns out that it references
the check_shared_lib_support procedure and ld_elf_shared_opt variable
both only available in ld-lib.exp. I've thus moved the procedure in
binutils-common.exp and defined the variable needed in the various
default.exp of testsuite that seem to be using run_dump_test.
Since check_shared_lib_support itself references the ld variable not
defined in binutils-common I've defined it from LD in run_dump_test and
fixed LD and LDFLAGS to be defined as expected by run_dump_test in the
various default.exp of testsuite using run_dump_test.
ChangeLog entries are as follows:
2018-10-26 Thomas Preud'homme <thomas.preudhomme@linaro.org>
* testsuite/config/default.exp: Define LD, LDFLAGS and
ld_elf_shared_opt.
* testsuite/lib/binutils-common.exp (check_shared_lib_support): Moved
from ld-lib.exp.
(run_dump_test): Set ld to $LD.
2018-10-26 Thomas Preud'homme <thomas.preudhomme@linaro.org>
* testsuite/config/default.exp: Define LD, LDFLAGS and
ld_elf_shared_opt.
2018-10-26 Thomas Preud'homme <thomas.preudhomme@linaro.org>
* testsuite/lib/ld-lib.exp (check_shared_lib_support): Moved to
binutils-common.exp.
Testing: Successfully ran tests using the ld action in gas testsuite. No
regression in the testsuite when targeting arm-none-eabi.
Is this ok for master?
Best regards,
Thomas
---
binutils/testsuite/config/default.exp | 8 ++++++++
binutils/testsuite/lib/binutils-common.exp | 19 +++++++++++++++++++
gas/testsuite/config/default.exp | 8 ++++++++
ld/testsuite/lib/ld-lib.exp | 17 -----------------
4 files changed, 35 insertions(+), 17 deletions(-)
@@ -28,6 +28,14 @@ if ![info exists ASFLAGS] then {
set ASFLAGS ""
}
+if ![info exists LD] then {
+ set LD [findfile $base_dir/../ld/ld-new $base_dir/../ld/ld-new [transform ld]]
+}
+if ![info exists LDFLAGS] then {
+ set LDFLAGS ""
+}
+set ld_elf_shared_opt "-z norelro"
+
if ![info exists NM] then {
set NM [findfile $base_dir/nm-new $base_dir/nm-new [transform nm]]
}
@@ -248,6 +248,23 @@ proc is_bad_symtab {} {
return 0;
}
+# Returns true if -shared is supported on the target
+
+proc check_shared_lib_support { } {
+ global shared_available_saved
+ global ld
+
+ if {![info exists shared_available_saved]} {
+ set ld_output [remote_exec host $ld "-shared"]
+ if { [ string first "not supported" $ld_output ] >= 0 } {
+ set shared_available_saved 0
+ } else {
+ set shared_available_saved 1
+ }
+ }
+ return $shared_available_saved
+}
+
# Compare two files line-by-line. FILE_1 is the actual output and FILE_2
# is the expected output. Ignore blank lines in either file.
#
@@ -1002,6 +1019,8 @@ proc run_dump_test { name {extra_options {}} } {
catch "exec rm -f $objfile" exec_output
set ld_extra_opt ""
+ global ld
+ set ld "$LD"
if { [is_elf_format] && [check_shared_lib_support] } {
set ld_extra_opt "$ld_elf_shared_opt"
}
@@ -26,6 +26,14 @@ if ![info exists ASFLAGS] then {
set ASFLAGS ""
}
+if ![info exists LD] then {
+ set LD [findfile $base_dir/../../ld/ld-new $base_dir/../../ld/ld-new [transform ld]]
+}
+if ![info exists LDFLAGS] then {
+ set LDFLAGS ""
+}
+set ld_elf_shared_opt "-z norelro"
+
if ![info exists OBJDUMP] then {
set OBJDUMP [findfile $base_dir/../../binutils/objdump \
$base_dir/../../binutils/objdump \
@@ -1069,23 +1069,6 @@ proc check_gc_sections_available { } {
return $gc_sections_available_saved
}
-# Returns true if -shared is supported on the target
-
-proc check_shared_lib_support { } {
- global shared_available_saved
- global ld
-
- if {![info exists shared_available_saved]} {
- set ld_output [remote_exec host $ld "-shared"]
- if { [ string first "not supported" $ld_output ] >= 0 } {
- set shared_available_saved 0
- } else {
- set shared_available_saved 1
- }
- }
- return $shared_available_saved
-}
-
# Return true if target uses genelf.em (assuming it is ELF).
proc is_generic_elf { } {
if { [istarget "d30v-*-*"]
--
2.19.1