about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2018-01-16 20:53:03 +0000
committerJoseph Myers <joseph@codesourcery.com>2018-01-16 20:53:03 +0000
commit4942c4ea48099b4ba9dfecf7cfbc452ae74811b5 (patch)
tree9f164e18eb51ad7eb1f09509dbdacfa96df76713
parent10d200dbace0ea5198006b313f40c3b884c88724 (diff)
downloadglibc-4942c4ea48099b4ba9dfecf7cfbc452ae74811b5.tar.gz
glibc-4942c4ea48099b4ba9dfecf7cfbc452ae74811b5.tar.xz
glibc-4942c4ea48099b4ba9dfecf7cfbc452ae74811b5.zip
Use LIBGCC_S_SO in x86_64 backtrace.
The x86_64 backtrace implementation is used as a generic
implementation (unwinding via unwind info and _Unwind_Backtrace) by
various other architectures.  This patch makes it more generic by
making it use LIBGCC_S_SO from gnu/lib-names.h instead of hardcoding
the libgcc_s.so.1 name, so that it can also be used on hppa which uses
libgcc_s.so.4.

Tested for x86_64.

	* sysdeps/x86_64/backtrace.c: Include <gnu/lib-names.h>.
	(init): Use LIBGCC_S_SO not hardcoded "libgcc_s.so.1".
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/x86_64/backtrace.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 9d96be03d8..42f871e4fc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-01-16  Joseph Myers  <joseph@codesourcery.com>
+
+	* sysdeps/x86_64/backtrace.c: Include <gnu/lib-names.h>.
+	(init): Use LIBGCC_S_SO not hardcoded "libgcc_s.so.1".
+
 2018-01-16  Florian Weimer  <fweimer@redhat.com>
 
 	* nptl/Makefile [$(have-cxx-thread_local)] (tests-unsupported):
diff --git a/sysdeps/x86_64/backtrace.c b/sysdeps/x86_64/backtrace.c
index 2706b50a05..d423cc053a 100644
--- a/sysdeps/x86_64/backtrace.c
+++ b/sysdeps/x86_64/backtrace.c
@@ -20,6 +20,7 @@
 #include <libc-lock.h>
 #include <dlfcn.h>
 #include <execinfo.h>
+#include <gnu/lib-names.h>
 #include <stdlib.h>
 #include <unwind.h>
 
@@ -49,7 +50,7 @@ dummy_getcfa (struct _Unwind_Context *ctx __attribute__ ((unused)))
 static void
 init (void)
 {
-  libgcc_handle = __libc_dlopen ("libgcc_s.so.1");
+  libgcc_handle = __libc_dlopen (LIBGCC_S_SO);
 
   if (libgcc_handle == NULL)
     return;