[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.
This commit is contained in:
Tom de Vries
2020-12-14 18:16:40 +01:00
parent a6f3c8a1a8
commit 2f4132646d
12 changed files with 38 additions and 23 deletions

View File

@ -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> 2020-12-14 Tom de Vries <tdevries@suse.de>
PR testsuite/26963 PR testsuite/26963

View File

@ -29,8 +29,7 @@ set sofile [standard_output_file libsome_package.so]
set outdir [file dirname $binfile] set outdir [file dirname $binfile]
# Create the shared library. # Create the shared library.
if {[gdb_compile_shlib $srcfile2 $sofile \ if {[gdb_compile_shlib $srcfile2 $sofile {ada debug}] != ""} {
{ada debug additional_flags=-fPIC}] != ""} {
return -1 return -1
} }

View File

@ -30,8 +30,7 @@ if { [istarget "*bsd*"] } {
} }
set probes_bp "dl_main" set probes_bp "dl_main"
if { [gdb_compile_shlib $srcfile_lib $binfile_lib \ if { [gdb_compile_shlib $srcfile_lib $binfile_lib {}] != "" } {
[list additional_flags=-fPIC]] != "" } {
untested "failed to compile shared library" untested "failed to compile shared library"
return -1 return -1
} }

View File

@ -33,10 +33,10 @@ set libsrc [list "${srcdir}/${subdir}/ctxobj-v.c" \
set libobj1 [standard_output_file libctxobj1.so] set libobj1 [standard_output_file libctxobj1.so]
set libobj2 [standard_output_file libctxobj2.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=-DVERSION=104
additional_flags=-DGET_VERSION=get_version_1 } additional_flags=-DGET_VERSION=get_version_1 }
set libobj2_opts { debug additional_flags=-fPIC set libobj2_opts { debug
additional_flags=-DVERSION=203 additional_flags=-DVERSION=203
additional_flags=-DGET_VERSION=get_version_2 } additional_flags=-DGET_VERSION=get_version_2 }

View File

@ -40,13 +40,13 @@ set srcfile_libdso1 $srcdir/$subdir/$libdso1.c
set binfile_libdso1 [standard_output_file $libdso1.so] set binfile_libdso1 [standard_output_file $libdso1.so]
if { [gdb_compile_shlib $srcfile_libdso2 $binfile_libdso2 \ if { [gdb_compile_shlib $srcfile_libdso2 $binfile_libdso2 \
[list debug additional_flags=-fPIC]] != "" } { [list debug]] != "" } {
untested "failed to compile shared library 2" untested "failed to compile shared library 2"
return -1 return -1
} }
if { [gdb_compile_shlib $srcfile_libdso1 $binfile_libdso1 \ if { [gdb_compile_shlib $srcfile_libdso1 $binfile_libdso1 \
[list debug additional_flags=-fPIC]] != "" } { [list debug]] != "" } {
untested "failed to compile shared library 1" untested "failed to compile shared library 1"
return -1 return -1
} }

View File

@ -28,13 +28,13 @@ set srcfile_lib2 $srcdir/$subdir/$lib2name.c
set binfile_lib2 [standard_output_file $lib2name.so] set binfile_lib2 [standard_output_file $lib2name.so]
if { [gdb_compile_shlib $srcfile_lib1 $binfile_lib1 \ if { [gdb_compile_shlib $srcfile_lib1 $binfile_lib1 \
[list debug additional_flags=-fPIC]] != "" } { [list debug]] != "" } {
untested "failed to compile shared library 1" untested "failed to compile shared library 1"
return -1 return -1
} }
if { [gdb_compile_shlib $srcfile_lib2 $binfile_lib2 \ if { [gdb_compile_shlib $srcfile_lib2 $binfile_lib2 \
[list debug additional_flags=-fPIC]] != "" } { [list debug]] != "" } {
untested "failed to compile shared library 2" untested "failed to compile shared library 2"
return -1 return -1
} }

View File

@ -29,14 +29,12 @@ set srcfile_lib2 $srcdir/$subdir/$lib2name.c
set binfile_lib2 [standard_output_file $lib2name.so] set binfile_lib2 [standard_output_file $lib2name.so]
set define2 -DSHLIB2_NAME=\"$binfile_lib2\" set define2 -DSHLIB2_NAME=\"$binfile_lib2\"
if { [gdb_compile_shlib $srcfile_lib1 $binfile_lib1 \ if { [gdb_compile_shlib $srcfile_lib1 $binfile_lib1 {}] != "" } {
[list additional_flags=-fPIC]] != "" } {
untested "failed to compile shared library 1" untested "failed to compile shared library 1"
return -1 return -1
} }
if { [gdb_compile_shlib $srcfile_lib2 $binfile_lib2 \ if { [gdb_compile_shlib $srcfile_lib2 $binfile_lib2 {}] != "" } {
[list additional_flags=-fPIC]] != "" } {
untested "failed to compile shared library 2" untested "failed to compile shared library 2"
return -1 return -1
} }

View File

@ -56,7 +56,7 @@ proc build_shared_jit {{options ""}} {
global testfile global testfile
global srcfile_lib binfile_lib binfile_lib2 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] != "" } { if { [gdb_compile_shlib $srcfile_lib $binfile_lib $options] != "" } {
return -1 return -1
} }

View File

@ -42,7 +42,7 @@ proc test {hidden dlopen version_id_main lang} {
set libobj1 [standard_output_file ${lib1}$suffix.so] set libobj1 [standard_output_file ${lib1}$suffix.so]
set libobj2 [standard_output_file ${lib2}$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" lappend lib_opts "additional_flags=-DHIDDEN=$hidden"
if { [gdb_compile_shlib ${srcdir}/${subdir}/${lib1}.c \ if { [gdb_compile_shlib ${srcdir}/${subdir}/${lib1}.c \

View File

@ -39,7 +39,7 @@ set binfile_lib [standard_output_file ${libname}.so]
# the main program. # 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 return -1
} }

View File

@ -31,8 +31,7 @@ set basename_lib dlopen-dso
set srcfile_lib $srcdir/$subdir/$basename_lib.c set srcfile_lib $srcdir/$subdir/$basename_lib.c
set binfile_lib [standard_output_file $basename_lib.so] set binfile_lib [standard_output_file $basename_lib.so]
if { [gdb_compile_shlib $srcfile_lib $binfile_lib \ if { [gdb_compile_shlib $srcfile_lib $binfile_lib {}] != "" } {
[list additional_flags=-fPIC]] != "" } {
untested "failed to prepare shlib" untested "failed to prepare shlib"
return -1 return -1
} }

View File

@ -4304,17 +4304,21 @@ proc gdb_compile_shlib {sources dest options} {
lappend obj_options "additional_flags=-qpic" lappend obj_options "additional_flags=-qpic"
} }
"clang-*" { "clang-*" {
if { !([istarget "*-*-cygwin*"] if { [istarget "*-*-cygwin*"]
|| [istarget "*-*-mingw*"]) } { || [istarget "*-*-mingw*"] } {
lappend obj_options "additional_flags=-fPIC"
} else {
lappend obj_options "additional_flags=-fpic" lappend obj_options "additional_flags=-fpic"
} }
} }
"gcc-*" { "gcc-*" {
if { !([istarget "powerpc*-*-aix*"] if { [istarget "powerpc*-*-aix*"]
|| [istarget "rs6000*-*-aix*"] || [istarget "rs6000*-*-aix*"]
|| [istarget "*-*-cygwin*"] || [istarget "*-*-cygwin*"]
|| [istarget "*-*-mingw*"] || [istarget "*-*-mingw*"]
|| [istarget "*-*-pe*"]) } { || [istarget "*-*-pe*"] } {
lappend obj_options "additional_flags=-fPIC"
} else {
lappend obj_options "additional_flags=-fpic" lappend obj_options "additional_flags=-fpic"
} }
} }
@ -4323,6 +4327,7 @@ proc gdb_compile_shlib {sources dest options} {
} }
default { default {
# don't know what the compiler is... # don't know what the compiler is...
lappend obj_options "additional_flags=-fPIC"
} }
} }