public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
To: gcc-patches@gcc.gnu.org
Cc: Mike Stump <mikestump@comcast.net>, "Frank Ch. Eigler" <fche@redhat.com>
Subject: [testsuite, libmudflap] Only use --noinhibit-exec with GNU ld (PR libmudflap/49549)
Date: Thu, 30 Jun 2011 17:42:00 -0000	[thread overview]
Message-ID: <ydd4o37z0vi.fsf@manam.CeBiTec.Uni-Bielefeld.DE> (raw)

As reported in the PR, libmudflap.cth/cthfrags.exp unconditionally uses
-Wl,--noinhibit-exec, which is a GNU ld option unknown to Sun ld, even
though the Solaris 11 ld has implemented many of the GNU ld options.
This patch addresses this by providing an effective-target check for
gld, similar to the existing gas check, and using it.

I don't distinguish between GNU ld and gold here, which is probably
unnecessary for the most cases.

With this patch, libmudflap make check on sparc-sun-solaris2.11 (both
multilibs) produced the almost perfect results already reported in the
previous message.

Though I don't nominally need approval for this patch, I'll wait a day
if Mike or Frank have comments.

	Rainer


2011-06-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR libmudflap/49549
	* testsuite/lib/libmudflap.exp (load_gcc_lib): Load
	target-supports.exp.
	* testsuite/libmudflap.cth/cthfrags.exp: Only pass
	--noinhibit-exec to GNU ld.

	gcc:
	PR libmudflap/49549
	* doc/sourcebuild.texi (Effective-Target Keywords): Document gld.

	gcc/testsuite:
	PR libmudflap/49549
	* lib/target-supports.exp (check_effective_target_gld): New proc.

diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -1760,6 +1760,9 @@ Target uses GNU @command{as}.
 @item gc_sections
 Target supports @option{--gc-sections}.
 
+@item gld
+Target uses GNU @command{ld}.
+
 @item keeps_null_pointer_checks
 Target keeps null pointer checks, either due to the use of
 @option{-fno-delete-null-pointer-checks} or hardwired into the target.
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -3843,6 +3843,26 @@ proc check_effective_target_gas { } {
     return $use_gas_saved
 }
 
+# Return 1 if GNU ld is used.
+
+proc check_effective_target_gld { } {
+    global use_gld_saved
+    global tool
+
+    if {![info exists use_gld_saved]} {
+	# Check if the ld used by gcc is GNU ld.
+	set gcc_ld [lindex [${tool}_target_compile "-print-prog-name=ld" "" "none" ""] 0]
+	set status [remote_exec host "$gcc_ld" "--version"]
+	set ld_output [lindex $status 1]
+	if { [ string first "GNU" $ld_output ] >= 0 } {
+	    set use_gld_saved 1
+	} else {
+	    set use_gld_saved 0
+	}
+    }
+    return $use_gld_saved
+}
+
 # Return 1 if the compiler has been configure with link-time optimization
 # (LTO) support.
 
diff --git a/libmudflap/testsuite/lib/libmudflap.exp b/libmudflap/testsuite/lib/libmudflap.exp
--- a/libmudflap/testsuite/lib/libmudflap.exp
+++ b/libmudflap/testsuite/lib/libmudflap.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2001, 2002, 2003, 2004, 2009, 2010
+# Copyright (C) 2001, 2002, 2003, 2004, 2009, 2010, 2011
 # Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
@@ -30,6 +30,7 @@ proc load_gcc_lib { filename } {
 load_lib mfdg.exp
 load_lib libgloss.exp
 load_gcc_lib target-libpath.exp
+load_gcc_lib target-supports.exp
 load_gcc_lib timeout.exp
 load_gcc_lib timeout-dg.exp
 
diff --git a/libmudflap/testsuite/libmudflap.cth/cthfrags.exp b/libmudflap/testsuite/libmudflap.cth/cthfrags.exp
--- a/libmudflap/testsuite/libmudflap.cth/cthfrags.exp
+++ b/libmudflap/testsuite/libmudflap.cth/cthfrags.exp
@@ -11,10 +11,15 @@ foreach flags $MUDFLAP_FLAGS {
 	set bsrc [file tail $srcfile]
 	setenv MUDFLAP_OPTIONS "-viol-segv"
 	if {$libmudflapth} then {
-	    # --noinhibit-exec works around a ld problem that causes
-	    # "Dwarf Error: Invalid or unhandled FORM value: 14"
-	    # to fail builds unnecessarily.
-	    dg-runtest $srcfile $flags "-fmudflapth -lmudflapth -lpthread -Wl,--noinhibit-exec"
+	    if [check_effective_target_gld] {
+		# --noinhibit-exec works around a ld problem that causes
+		# "Dwarf Error: Invalid or unhandled FORM value: 14"
+		# to fail builds unnecessarily.
+		set noie_option " -Wl,--noinhibit-exec"
+	    } else {
+		set noie_option ""
+	    }
+	    dg-runtest $srcfile $flags "-fmudflapth -lmudflapth -lpthread $noie_option"
 	} else {
 	    if {$flags != ""} {set f " ($flags)"} {set f ""}
             untested "libmudflap.cth/$bsrc$f"

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

             reply	other threads:[~2011-06-30 17:27 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-30 17:42 Rainer Orth [this message]
2011-06-30 23:33 ` Mike Stump

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ydd4o37z0vi.fsf@manam.CeBiTec.Uni-Bielefeld.DE \
    --to=ro@cebitec.uni-bielefeld.de \
    --cc=fche@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=mikestump@comcast.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).