This is the mail archive of the gdb-cvs@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]

[binutils-gdb] gdb_compile_shlib: Only consider shlib= options when building executables


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

commit 6181e9c2c5ba252ac016f51903dc35d7bfbbca71
Author: Simon Marchi <simon.marchi@ericsson.com>
Date:   Thu Jan 11 21:08:23 2018 -0500

    gdb_compile_shlib: Only consider shlib= options when building executables
    
    Trying to use gdb_compile_shlib with the shlib= option to build a shared
    library that depends on another shared library does not work as of
    today.  See:
    
      https://sourceware.org/ml/gdb-patches/2017-10/msg00733.html
    
    The problem is that building the lib is done in two steps, compilation
    (.c -> .o) and linking (.o -> .so) and the shlib= options are passed to
    both steps.  When compiling the object file (.o), it results in gcc
    complaining:
    
      gcc: warning: .../solib-vanish-lib2.so: linker input file unused because linking not done
    
    The first solution I came up with was to filter the options inside
    gdb_compile_shlib to remove the shlib= options from the options we pass
    when compiling the .o file.
    
    I then thought it would be simpler to ignore the shlib= options in
    gdb_compile when not building an executable (the executable category
    includes the shared libraries).  For other compilation types (object
    file, preprocess and generate assembly), it doesn't make sense to add
    shared libraries to the source file list.
    
    Regtested on the buildbot.
    
    gdb/testsuite/ChangeLog:
    
    	* lib/gdb.exp (gdb_compile): Ignore shlib= and shlib_load
    	options when not creating an executable.

Diff:
---
 gdb/testsuite/ChangeLog   | 5 +++++
 gdb/testsuite/lib/gdb.exp | 5 +++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index d95b144..55b4a31 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-01-11  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* lib/gdb.exp (gdb_compile): Ignore shlib= and shlib_load
+	options when not creating an executable.
+
 2018-01-11  Pedro Alves  <palves@redhat.com>
 
 	PR remote/22597
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 7702d9c..a4bde72 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -3513,7 +3513,8 @@ proc gdb_compile {source dest type options} {
     set shlib_found 0
     set shlib_load 0
     foreach opt $options {
-        if [regexp {^shlib=(.*)} $opt dummy_var shlib_name] {
+        if {[regexp {^shlib=(.*)} $opt dummy_var shlib_name]
+	    && $type == "executable"} {
             if [test_compiler_info "xlc-*"] {
 		# IBM xlc compiler doesn't accept shared library named other
 		# than .so: use "-Wl," to bypass this
@@ -3539,7 +3540,7 @@ proc gdb_compile {source dest type options} {
 		    lappend new_options "early_flags=-Wl,--no-as-needed"
 		}
             }
-	} elseif { $opt == "shlib_load" } {
+	} elseif { $opt == "shlib_load" && $type == "executable" } {
 	    set shlib_load 1
         } else {
             lappend new_options $opt


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