[binutils-gdb] [gdb/testsuite] Don't pass -fPIC to gdb_compile_shlib

Tom de Vries vries@sourceware.org
Mon Dec 14 17:16:43 GMT 2020


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

commit 2f4132646d8dbf8c1a82d63cacbb36ee46a289bb
Author: Tom de Vries <tdevries@suse.de>
Date:   Mon Dec 14 18:16:40 2020 +0100

    [gdb/testsuite] Don't pass -fPIC to gdb_compile_shlib
    
    When running test-case gdb.base/info-shared.exp, I see in gdb.log:
    ...
    Executing on host: \
      gcc ... -fPIC -fpic -c -o info-shared-solib1.c.o info-shared-solib1.c
    ...
    
    The -fPIC comes from the test-case:
    ...
    if { [gdb_compile_shlib $srcfile_lib1 $binfile_lib1 \
             [list additional_flags=-fPIC]] != "" } {
    ...
    but the -fpic, which overrides the -fPIC comes from gdb_compile_shlib.
    
    The proc gdb_compile_shlib adds the -fpic or similar dependent on platform
    and compiler.  However, in some cases it doesn't add anything, which is
    probably why all those test-case pass -fPIC.
    
    Fix this by removing -fPIC from all the calls to gdb_compile_shlib, and
    ensuring that gdb_compile_shlib takes care of adding it, if required.
    
    Tested on x86_64-linux.
    
    gdb/testsuite/ChangeLog:
    
    2020-12-14  Tom de Vries  <tdevries@suse.de>
    
            * lib/gdb.exp (gdb_compile_shlib): Make sure it's not necessary to
            pass -fPIC.
            * gdb.ada/catch_ex_std.exp: Don't pass -fPIC to gdb_compile_shlib.
            * gdb.base/break-probes.exp: Same.
            * gdb.base/ctxobj.exp: Same.
            * gdb.base/dso2dso.exp: Same.
            * gdb.base/global-var-nested-by-dso.exp: Same.
            * gdb.base/info-shared.exp: Same.
            * gdb.base/jit-reader-simple.exp: Same.
            * gdb.base/print-file-var.exp: Same.
            * gdb.base/skip-solib.exp: Same.
            * gdb.btrace/dlopen.exp: Same.

Diff:
---
 gdb/testsuite/ChangeLog                             | 15 +++++++++++++++
 gdb/testsuite/gdb.ada/catch_ex_std.exp              |  3 +--
 gdb/testsuite/gdb.base/break-probes.exp             |  3 +--
 gdb/testsuite/gdb.base/ctxobj.exp                   |  4 ++--
 gdb/testsuite/gdb.base/dso2dso.exp                  |  4 ++--
 gdb/testsuite/gdb.base/global-var-nested-by-dso.exp |  4 ++--
 gdb/testsuite/gdb.base/info-shared.exp              |  6 ++----
 gdb/testsuite/gdb.base/jit-reader-simple.exp        |  2 +-
 gdb/testsuite/gdb.base/print-file-var.exp           |  2 +-
 gdb/testsuite/gdb.base/skip-solib.exp               |  2 +-
 gdb/testsuite/gdb.btrace/dlopen.exp                 |  3 +--
 gdb/testsuite/lib/gdb.exp                           | 13 +++++++++----
 12 files changed, 38 insertions(+), 23 deletions(-)

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 500d4445098..1c522e83193 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,18 @@
+2020-12-14  Tom de Vries  <tdevries@suse.de>
+
+	* lib/gdb.exp (gdb_compile_shlib): Make sure it's not necessary to
+	pass -fPIC.
+	* gdb.ada/catch_ex_std.exp: Don't pass -fPIC to gdb_compile_shlib.
+	* gdb.base/break-probes.exp: Same.
+	* gdb.base/ctxobj.exp: Same.
+	* gdb.base/dso2dso.exp: Same.
+	* gdb.base/global-var-nested-by-dso.exp: Same.
+	* gdb.base/info-shared.exp: Same.
+	* gdb.base/jit-reader-simple.exp: Same.
+	* gdb.base/print-file-var.exp: Same.
+	* gdb.base/skip-solib.exp: Same.
+	* gdb.btrace/dlopen.exp: Same.
+
 2020-12-14  Tom de Vries  <tdevries@suse.de>
 
 	PR testsuite/26963
diff --git a/gdb/testsuite/gdb.ada/catch_ex_std.exp b/gdb/testsuite/gdb.ada/catch_ex_std.exp
index c5a0a935594..d49cbab93df 100644
--- a/gdb/testsuite/gdb.ada/catch_ex_std.exp
+++ b/gdb/testsuite/gdb.ada/catch_ex_std.exp
@@ -29,8 +29,7 @@ set sofile [standard_output_file libsome_package.so]
 set outdir [file dirname $binfile]
 
 # Create the shared library.
-if {[gdb_compile_shlib $srcfile2 $sofile \
-	 {ada debug additional_flags=-fPIC}] != ""} {
+if {[gdb_compile_shlib $srcfile2 $sofile {ada debug}] != ""} {
     return -1
 }
 
diff --git a/gdb/testsuite/gdb.base/break-probes.exp b/gdb/testsuite/gdb.base/break-probes.exp
index 08513ddbb21..96ef93d9f56 100644
--- a/gdb/testsuite/gdb.base/break-probes.exp
+++ b/gdb/testsuite/gdb.base/break-probes.exp
@@ -30,8 +30,7 @@ if { [istarget "*bsd*"] } {
 }
 set probes_bp "dl_main"
 
-if { [gdb_compile_shlib $srcfile_lib $binfile_lib \
-	  [list additional_flags=-fPIC]] != "" } {
+if { [gdb_compile_shlib $srcfile_lib $binfile_lib {}] != "" } {
     untested "failed to compile shared library"
     return -1
 }
diff --git a/gdb/testsuite/gdb.base/ctxobj.exp b/gdb/testsuite/gdb.base/ctxobj.exp
index b8931bafb43..faf209cc0da 100644
--- a/gdb/testsuite/gdb.base/ctxobj.exp
+++ b/gdb/testsuite/gdb.base/ctxobj.exp
@@ -33,10 +33,10 @@ set libsrc [list "${srcdir}/${subdir}/ctxobj-v.c" \
 set libobj1 [standard_output_file libctxobj1.so]
 set libobj2 [standard_output_file libctxobj2.so]
 
-set libobj1_opts { debug additional_flags=-fPIC
+set libobj1_opts { debug
                    additional_flags=-DVERSION=104
                    additional_flags=-DGET_VERSION=get_version_1 }
-set libobj2_opts { debug additional_flags=-fPIC
+set libobj2_opts { debug
                    additional_flags=-DVERSION=203
                    additional_flags=-DGET_VERSION=get_version_2 }
 
diff --git a/gdb/testsuite/gdb.base/dso2dso.exp b/gdb/testsuite/gdb.base/dso2dso.exp
index 7d8ea7057c7..4c0b27955d0 100644
--- a/gdb/testsuite/gdb.base/dso2dso.exp
+++ b/gdb/testsuite/gdb.base/dso2dso.exp
@@ -40,13 +40,13 @@ set srcfile_libdso1 $srcdir/$subdir/$libdso1.c
 set binfile_libdso1 [standard_output_file $libdso1.so]
 
 if { [gdb_compile_shlib $srcfile_libdso2 $binfile_libdso2 \
-	[list debug additional_flags=-fPIC]] != "" } {
+	[list debug]] != "" } {
   untested "failed to compile shared library 2"
   return -1
 }
 
 if { [gdb_compile_shlib $srcfile_libdso1 $binfile_libdso1 \
-	[list debug additional_flags=-fPIC]] != "" } {
+	[list debug]] != "" } {
   untested "failed to compile shared library 1"
   return -1
 }
diff --git a/gdb/testsuite/gdb.base/global-var-nested-by-dso.exp b/gdb/testsuite/gdb.base/global-var-nested-by-dso.exp
index f88c5d094f9..c2775950155 100644
--- a/gdb/testsuite/gdb.base/global-var-nested-by-dso.exp
+++ b/gdb/testsuite/gdb.base/global-var-nested-by-dso.exp
@@ -28,13 +28,13 @@ set srcfile_lib2 $srcdir/$subdir/$lib2name.c
 set binfile_lib2 [standard_output_file $lib2name.so]
 
 if { [gdb_compile_shlib $srcfile_lib1 $binfile_lib1 \
-	[list debug additional_flags=-fPIC]] != "" } {
+	[list debug]] != "" } {
   untested "failed to compile shared library 1"
   return -1
 }
 
 if { [gdb_compile_shlib $srcfile_lib2 $binfile_lib2 \
-	[list debug additional_flags=-fPIC]] != "" } {
+	[list debug]] != "" } {
   untested "failed to compile shared library 2"
   return -1
 }
diff --git a/gdb/testsuite/gdb.base/info-shared.exp b/gdb/testsuite/gdb.base/info-shared.exp
index 9a54100f8a6..7b8ce5b11e7 100644
--- a/gdb/testsuite/gdb.base/info-shared.exp
+++ b/gdb/testsuite/gdb.base/info-shared.exp
@@ -29,14 +29,12 @@ set srcfile_lib2 $srcdir/$subdir/$lib2name.c
 set binfile_lib2 [standard_output_file $lib2name.so]
 set define2 -DSHLIB2_NAME=\"$binfile_lib2\"
 
-if { [gdb_compile_shlib $srcfile_lib1 $binfile_lib1 \
-	  [list additional_flags=-fPIC]] != "" } {
+if { [gdb_compile_shlib $srcfile_lib1 $binfile_lib1 {}] != "" } {
     untested "failed to compile shared library 1"
     return -1
 }
 
-if { [gdb_compile_shlib $srcfile_lib2 $binfile_lib2 \
-	  [list additional_flags=-fPIC]] != "" } {
+if { [gdb_compile_shlib $srcfile_lib2 $binfile_lib2 {}] != "" } {
     untested "failed to compile shared library 2"
     return -1
 }
diff --git a/gdb/testsuite/gdb.base/jit-reader-simple.exp b/gdb/testsuite/gdb.base/jit-reader-simple.exp
index a8f33c6d7a8..99c4dcf7325 100644
--- a/gdb/testsuite/gdb.base/jit-reader-simple.exp
+++ b/gdb/testsuite/gdb.base/jit-reader-simple.exp
@@ -56,7 +56,7 @@ proc build_shared_jit {{options ""}} {
     global testfile
     global srcfile_lib binfile_lib binfile_lib2
 
-    lappend options "debug additional_flags=-fPIC"
+    lappend options "debug"
     if { [gdb_compile_shlib $srcfile_lib $binfile_lib $options] != "" } {
 	return -1
     }
diff --git a/gdb/testsuite/gdb.base/print-file-var.exp b/gdb/testsuite/gdb.base/print-file-var.exp
index 62e5f230ebe..219bedcde43 100644
--- a/gdb/testsuite/gdb.base/print-file-var.exp
+++ b/gdb/testsuite/gdb.base/print-file-var.exp
@@ -42,7 +42,7 @@ proc test {hidden dlopen version_id_main lang} {
     set libobj1 [standard_output_file ${lib1}$suffix.so]
     set libobj2 [standard_output_file ${lib2}$suffix.so]
 
-    set lib_opts { debug additional_flags=-fPIC $lang }
+    set lib_opts { debug $lang }
     lappend lib_opts "additional_flags=-DHIDDEN=$hidden"
 
     if { [gdb_compile_shlib ${srcdir}/${subdir}/${lib1}.c \
diff --git a/gdb/testsuite/gdb.base/skip-solib.exp b/gdb/testsuite/gdb.base/skip-solib.exp
index 528410a0d53..8ecba70aa05 100644
--- a/gdb/testsuite/gdb.base/skip-solib.exp
+++ b/gdb/testsuite/gdb.base/skip-solib.exp
@@ -39,7 +39,7 @@ set binfile_lib [standard_output_file ${libname}.so]
 # the main program.
 #
 
-if {[gdb_compile_shlib ${srcdir}/${subdir}/${srcfile_lib} ${binfile_lib} [list debug additional_flags=-fPIC -Wl,-soname,${libname}.so]] != ""} {
+if {[gdb_compile_shlib ${srcdir}/${subdir}/${srcfile_lib} ${binfile_lib} [list debug -Wl,-soname,${libname}.so]] != ""} {
     return -1
 }
 
diff --git a/gdb/testsuite/gdb.btrace/dlopen.exp b/gdb/testsuite/gdb.btrace/dlopen.exp
index fc910a933a6..6839b0f4f43 100644
--- a/gdb/testsuite/gdb.btrace/dlopen.exp
+++ b/gdb/testsuite/gdb.btrace/dlopen.exp
@@ -31,8 +31,7 @@ set basename_lib dlopen-dso
 set srcfile_lib $srcdir/$subdir/$basename_lib.c
 set binfile_lib [standard_output_file $basename_lib.so]
 
-if { [gdb_compile_shlib $srcfile_lib $binfile_lib \
-	  [list additional_flags=-fPIC]] != "" } {
+if { [gdb_compile_shlib $srcfile_lib $binfile_lib {}] != "" } {
     untested "failed to prepare shlib"
     return -1
 }
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 46728bb936d..94bdf1ac856 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -4304,17 +4304,21 @@ proc gdb_compile_shlib {sources dest options} {
             lappend obj_options "additional_flags=-qpic"
         }
 	"clang-*" {
-	    if { !([istarget "*-*-cygwin*"]
-		   || [istarget "*-*-mingw*"]) } {
+	    if { [istarget "*-*-cygwin*"]
+		 || [istarget "*-*-mingw*"] } {
+		lappend obj_options "additional_flags=-fPIC"
+	    } else {
 		lappend obj_options "additional_flags=-fpic"
 	    }
 	}
         "gcc-*" {
-            if { !([istarget "powerpc*-*-aix*"]
+            if { [istarget "powerpc*-*-aix*"]
                    || [istarget "rs6000*-*-aix*"]
                    || [istarget "*-*-cygwin*"]
                    || [istarget "*-*-mingw*"]
-                   || [istarget "*-*-pe*"]) } {
+                   || [istarget "*-*-pe*"] } {
+                lappend obj_options "additional_flags=-fPIC"
+	    } else {
                 lappend obj_options "additional_flags=-fpic"
             }
         }
@@ -4323,6 +4327,7 @@ proc gdb_compile_shlib {sources dest options} {
         }
         default {
 	    # don't know what the compiler is...
+	    lappend obj_options "additional_flags=-fPIC"
         }
     }


More information about the Gdb-cvs mailing list