You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
193 lines
7.2 KiB
193 lines
7.2 KiB
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 |
|
From: Jan Kratochvil <jan.kratochvil@redhat.com> |
|
Date: Fri, 27 Oct 2017 21:07:50 +0200 |
|
Subject: gdb-6.5-sharedlibrary-path.patch |
|
|
|
;; Fix TLS symbols resolving for shared libraries with a relative pathname. |
|
;; The testsuite needs `gdb-6.5-tls-of-separate-debuginfo.patch'. |
|
;;=fedoratest: One should recheck if it is really fixed upstream. |
|
|
|
If you provided some relative path to the shared library, such as with |
|
export LD_LIBRARY_PATH=. |
|
then gdb would fail to match the shared library name during the TLS lookup. |
|
|
|
Dropped the workaround/fix for gdb-6.8.50.20081128 - is it still needed? |
|
|
|
The testsuite needs `gdb-6.3-bz146810-solib_absolute_prefix_is_empty.patch'. |
|
The testsuite needs `gdb-6.5-tls-of-separate-debuginfo.patch'. |
|
|
|
2006-09-01 Jan Kratochvil <jan.kratochvil@redhat.com> |
|
|
|
* solib-svr4.c (svr4_fetch_objfile_link_map): Match even absolute |
|
requested pathnames to the internal loaded relative pathnames. |
|
|
|
2007-10-16 Jan Kratochvil <jan.kratochvil@redhat.com> |
|
|
|
Port to GDB-6.7. |
|
|
|
2008-02-27 Jan Kratochvil <jan.kratochvil@redhat.com> |
|
|
|
Port to gdb-6.7.50.20080227. |
|
|
|
diff --git a/gdb/testsuite/gdb.threads/tls-sepdebug-main.c b/gdb/testsuite/gdb.threads/tls-sepdebug-main.c |
|
new file mode 100644 |
|
--- /dev/null |
|
+++ b/gdb/testsuite/gdb.threads/tls-sepdebug-main.c |
|
@@ -0,0 +1,31 @@ |
|
+/* This testcase is part of GDB, the GNU debugger. |
|
+ |
|
+ Copyright 2006 Free Software Foundation, Inc. |
|
+ |
|
+ This program is free software; you can redistribute it and/or modify |
|
+ it under the terms of the GNU General Public License as published by |
|
+ the Free Software Foundation; either version 2 of the License, or |
|
+ (at your option) any later version. |
|
+ |
|
+ This program is distributed in the hope that it will be useful, |
|
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
+ GNU General Public License for more details. |
|
+ |
|
+ You should have received a copy of the GNU General Public License |
|
+ along with this program; if not, write to the Free Software |
|
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
+ |
|
+ Please email any bugs, comments, and/or additions to this file to: |
|
+ bug-gdb@prep.ai.mit.edu */ |
|
+ |
|
+#include <pthread.h> |
|
+ |
|
+extern __thread int var; |
|
+ |
|
+int main() |
|
+{ |
|
+ /* Ensure we link against pthreads even with --as-needed. */ |
|
+ pthread_testcancel(); |
|
+ return var; |
|
+} |
|
diff --git a/gdb/testsuite/gdb.threads/tls-sepdebug-shared.c b/gdb/testsuite/gdb.threads/tls-sepdebug-shared.c |
|
new file mode 100644 |
|
--- /dev/null |
|
+++ b/gdb/testsuite/gdb.threads/tls-sepdebug-shared.c |
|
@@ -0,0 +1,22 @@ |
|
+/* This testcase is part of GDB, the GNU debugger. |
|
+ |
|
+ Copyright 2006 Free Software Foundation, Inc. |
|
+ |
|
+ This program is free software; you can redistribute it and/or modify |
|
+ it under the terms of the GNU General Public License as published by |
|
+ the Free Software Foundation; either version 2 of the License, or |
|
+ (at your option) any later version. |
|
+ |
|
+ This program is distributed in the hope that it will be useful, |
|
+ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
+ GNU General Public License for more details. |
|
+ |
|
+ You should have received a copy of the GNU General Public License |
|
+ along with this program; if not, write to the Free Software |
|
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
+ |
|
+ Please email any bugs, comments, and/or additions to this file to: |
|
+ bug-gdb@prep.ai.mit.edu */ |
|
+ |
|
+__thread int var = 42; |
|
diff --git a/gdb/testsuite/gdb.threads/tls-sepdebug.exp b/gdb/testsuite/gdb.threads/tls-sepdebug.exp |
|
new file mode 100644 |
|
--- /dev/null |
|
+++ b/gdb/testsuite/gdb.threads/tls-sepdebug.exp |
|
@@ -0,0 +1,94 @@ |
|
+# Copyright 2006 Free Software Foundation, Inc. |
|
+ |
|
+# This program is free software; you can redistribute it and/or modify |
|
+# it under the terms of the GNU General Public License as published by |
|
+# the Free Software Foundation; either version 2 of the License, or |
|
+# (at your option) any later version. |
|
+# |
|
+# This program is distributed in the hope that it will be useful, |
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
+# GNU General Public License for more details. |
|
+# |
|
+# You should have received a copy of the GNU General Public License |
|
+# along with this program; if not, write to the Free Software |
|
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
+ |
|
+# This test uses gdb_exit and gdb_start, which are not supported |
|
+# on non-extended-remote sessions. |
|
+if {[use_gdb_stub]} { |
|
+ untested "skipping test because of stub" |
|
+ return 0 |
|
+} |
|
+ |
|
+if $tracelevel then { |
|
+ strace $tracelevel |
|
+} |
|
+ |
|
+set testfile tls-sepdebug |
|
+set srcmainfile ${testfile}-main.c |
|
+set srcsharedfile ${testfile}-shared.c |
|
+ |
|
+set binmainfile [standard_output_file ${testfile}-main] |
|
+set binsharedbase ${testfile}-shared.so |
|
+set binsharedfile [standard_output_file ${binsharedbase}] |
|
+set binshareddebugfile [standard_output_file ${binsharedbase}.debug] |
|
+ |
|
+# Use explicit -soname as otherwise the full path to the library would get |
|
+# encoded into ${binmainfile} making LD_LIBRARY_PATH tests useless. |
|
+ |
|
+# FIXME: gcc dependency (-Wl,-soname). |
|
+ |
|
+if { [gdb_compile_shlib "${srcdir}/${subdir}/${srcsharedfile}" "${binsharedfile}" [list debug additional_flags=-Wl,-soname=${binsharedbase}]] != "" } { |
|
+ untested "Couldn't compile test library" |
|
+ return -1 |
|
+} |
|
+ |
|
+# eu-strip(1) works fine but it is a part of `elfutils', not `binutils'. |
|
+if 0 then { |
|
+ remote_exec build "eu-strip -f ${binshareddebugfile} ${binsharedfile}" |
|
+} else { |
|
+ remote_exec build "objcopy --only-keep-debug ${binsharedfile} ${binshareddebugfile}" |
|
+ remote_exec build "objcopy --strip-debug ${binsharedfile}" |
|
+ remote_exec build "objcopy --add-gnu-debuglink=${binshareddebugfile} ${binsharedfile}" |
|
+} |
|
+ |
|
+# Do not use `shlib=' as it will automatically add also -rpath for gcc. |
|
+ |
|
+if { [gdb_compile_pthreads "${srcdir}/${subdir}/${srcmainfile} ${binsharedfile}" "${binmainfile}" executable {debug}] != "" } { |
|
+ untested "Couldn't compile test program" |
|
+ return -1 |
|
+} |
|
+ |
|
+# Get things started. |
|
+ |
|
+# Test also the proper resolving of relative library names to absolute ones. |
|
+# \$PWD is easy - it is the absolute way |
|
+# ${subdir} would fail on "print var" |
|
+ |
|
+set absdir [file dirname [standard_output_file ${binsharedbase}]] |
|
+foreach ld_library_path [list $absdir [relative_filename [pwd] $absdir]] name { absolute relative } { |
|
+ |
|
+ gdb_exit |
|
+ gdb_start |
|
+ ###gdb_reinitialize_dir $srcdir/$subdir |
|
+ |
|
+ gdb_test "set env LD_LIBRARY_PATH=$ld_library_path" \ |
|
+ "" \ |
|
+ "set env LD_LIBRARY_PATH is $name" |
|
+ |
|
+ gdb_load ${binmainfile} |
|
+ |
|
+ # For C programs, "start" should stop in main(). |
|
+ |
|
+ gdb_test "start" \ |
|
+ "main \\(\\) at .*${srcmainfile}.*" \ |
|
+ "start" |
|
+ |
|
+ # Check for: Cannot find shared library `/usr/lib/debug/lib/libc-2.4.90.so.debug' in dynamic linker's load module list |
|
+ # as happens with TLS variables and `separate_debug_objfile_backlink'. |
|
+ |
|
+ gdb_test "print var" \ |
|
+ "\\\$1 = \[0-9\].*" \ |
|
+ "print TLS variable from a shared library with $name-directory separate debug info file" |
|
+}
|
|
|