[binutils-gdb] Test that gcc -B picks up new ld

Alan Modra amodra@sourceware.org
Sat Apr 21 09:20:00 GMT 2018


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

commit 5a8edf8ece80a436a0ed786488e8e772bc515fa2
Author: Alan Modra <amodra@gmail.com>
Date:   Sat Apr 21 12:06:57 2018 +0930

    Test that gcc -B picks up new ld
    
    gcc configured using --with-ld always uses that particular version of
    ld if it exists.  This patch adds a check that the ld version reported
    directly from ld-new matches that reported via gcc.  I chose to
    compare the ld --version output rather than a more strict test (for
    example by gcc --print-prog-name=ld), because the version test allows
    a user to run the ld testsuite after installing a new ld (in the place
    expected by gcc).
    
    Sample output:
    
    Running target unix
    Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
    Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
    Using /home/alan/src/binutils-gdb/ld/testsuite/config/default.exp as tool-and-target-specific interface file.
    ERROR: ************************************************************************
    ERROR: Your compiler driver ignores -B when choosing ld.
    ERROR: You will not be testing the new ld in many of the following tests.
    ERROR: It seems you will be testing /usr/bin/x86_64-w64-mingw32-ld instead.
    ERROR: ************************************************************************
    WARNING: Assuming target board is the local machine (which is probably wrong).
    You may need to set your DEJAGNU environment variable.
    Running /home/alan/src/binutils-gdb/ld/testsuite/ld-aarch64/aarch64-elf.exp ...
    
    	* testsuite/lib/ld-lib.exp (run_host_cmd): Check that gcc -B
    	works.

Diff:
---
 ld/ChangeLog                |  5 +++++
 ld/testsuite/lib/ld-lib.exp | 18 ++++++++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/ld/ChangeLog b/ld/ChangeLog
index a101489..366e59e 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2018-04-21  Alan Modra  <amodra@gmail.com>
+
+	* testsuite/lib/ld-lib.exp (run_host_cmd): Check that gcc -B
+	works.
+
 2018-04-18  Alan Modra  <amodra@gmail.com>
 
 	* Makefile.am: Remove support for assorted i386 aout and coff targets.
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
index cce87bf..9a0f350 100644
--- a/ld/testsuite/lib/ld-lib.exp
+++ b/ld/testsuite/lib/ld-lib.exp
@@ -85,6 +85,8 @@ proc run_host_cmd { prog command } {
     global link_output
     global gcc_B_opt
     global ld_L_opt
+    global gcc_ld_B_opt_tested
+    global ld
 
     if { ![is_remote host] && [which "$prog"] == 0 } then {
 	perror "$prog does not exist"
@@ -106,6 +108,22 @@ proc run_host_cmd { prog command } {
     set gccexe [string replace $gccexe 0 [string last "/" $gccexe] ""]
     if {[string match "*cc*" $gccexe] || [string match "*++*" $gccexe]} then {
 	set gccflags "$gcc_B_opt $gccflags $ld_L_opt"
+	if {![info exists gcc_ld_B_opt_tested]} {
+	    set gcc_ld_B_opt_tested 1
+	    set ld_version_message [run_host_cmd "$ld" "--version"]
+	    set gcc_ld_version_message [run_host_cmd "$prog" "$gccflags -Wl,--version"]
+	    if {[string first $ld_version_message $gcc_ld_version_message] < 0} {
+		perror "************************************************************************"
+		perror "Your compiler driver ignores -B when choosing ld."
+		perror "You will not be testing the new ld in many of the following tests."
+		set gcc_ld_version [run_host_cmd "$prog" "$gccflags --print-prog-name=ld"]
+		if {![string match "" $gcc_ld_version] && ![string match "ld" $gcc_ld_version]} {
+		
+		    perror "It seems you will be testing $gcc_ld_version instead."
+		}
+		perror "************************************************************************"
+	    }
+	}
     }
 
     verbose -log "$prog $gccflags $command"



More information about the Binutils-cvs mailing list