This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 3/8] gen-perf-test: debian --as-needed


Hi.

The problem being solved here is that debian changed
the default handling of --as-needed.  This patch makes
things work the same regardless of distro.

Alternatively, I can just check in the early_flags support, and leave
debian-specific fixes to a board file or some such.

2015-07-20  Doug Evans  <dje@google.com>

	* lib/future.exp (gdb_default_target_compile): New option
	"early_flags".
	* lib/gdb.exp (gdb_compile): Undo debian's change in default of
	--as-needed.

diff --git a/gdb/testsuite/lib/future.exp b/gdb/testsuite/lib/future.exp
index a27e120..994843e 100644
--- a/gdb/testsuite/lib/future.exp
+++ b/gdb/testsuite/lib/future.exp
@@ -135,14 +135,15 @@ proc gdb_default_target_compile {source destfile type options} { error "Must supply an output filename for the compile to default_target_compile"
     }

+    set early_flags ""
     set add_flags ""
     set libs ""
     set compiler_type "c"
     set compiler ""
     set linker ""
# linker_opts_order is one of "sources-then-flags", "flags-then-sources".
-    # The order shouldn't matter.  It's done this way to preserve
-    # existing behavior.
+    # The order matters for things like -Wl,--as-needed.  The default is to
+    # preserve existing behavior.
     set linker_opts_order "sources-then-flags"
     set ldflags ""
     set dest [target_info name]
@@ -240,6 +241,10 @@ proc gdb_default_target_compile {source destfile type options} {
 	    regsub "^compiler=" $i "" tmp
 	    set compiler $tmp
 	}
+	if {[regexp "^early_flags=" $i]} {
+	    regsub "^early_flags=" $i "" tmp
+	    append early_flags " $tmp"
+	}
 	if {[regexp "^additional_flags=" $i]} {
 	    regsub "^additional_flags=" $i "" tmp
 	    append add_flags " $tmp"
@@ -473,15 +478,15 @@ proc gdb_default_target_compile {source destfile type options} {
     # become confused about the name of the actual source file.
     switch $type {
 	"object" {
-	    set opts "$add_flags $sources"
+	    set opts "$early_flags $add_flags $sources"
 	}
 	"executable" {
 	    switch $linker_opts_order {
 		"flags-then-sources" {
-		    set opts "$add_flags $sources"
+		    set opts "$early_flags $add_flags $sources"
 		}
 		"sources-then-flags" {
-		    set opts "$sources $add_flags"
+		    set opts "$early_flags $sources $add_flags"
 		}
 		default {
 		    error "Invalid value for board_info linker_opts_order"
@@ -489,7 +494,7 @@ proc gdb_default_target_compile {source destfile type options} {
 	    }
 	}
 	default {
-	    set opts "$sources $add_flags"
+	    set opts "$early_flags $sources $add_flags"
 	}
     }

diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 0805de9..ffc63a5 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -3026,6 +3026,13 @@ proc gdb_compile {source dest type options} {
 		      || [istarget *-*-cygwin*]) } {
 		    lappend new_options "additional_flags=-Wl,--enable-auto-import"
 		}
+		if { [test_compiler_info "gcc-*"] || [test_compiler_info "clang-*"] } {
+		    # Undo debian's change in the default.
+		    # Put it at the front to not override any user-provided
+		    # value, and to make sure it appears in front of all the
+		    # shlibs!
+		    lappend new_options "early_flags=-Wl,--no-as-needed"
+		}
             }
 	} elseif { $opt == "shlib_load" } {
 	    set shlib_load 1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]