* libunwind-frame.c (LIBUNWIND_SO): Change .7 to .8.
	[!LIBUNWIND_SO] (LIBUNWIND_SO_7): New #define.
	(libunwind_load): New variable so_error, use it for dlerror.  Try to
	load also LIBUNWIND_SO_7.
This commit is contained in:
Jan Kratochvil 2012-03-05 17:11:48 +00:00
parent e237a7e2c5
commit 75528772a7
2 changed files with 29 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2012-03-05 Jan Kratochvil <jan.kratochvil@redhat.com>
* libunwind-frame.c (LIBUNWIND_SO): Change .7 to .8.
[!LIBUNWIND_SO] (LIBUNWIND_SO_7): New #define.
(libunwind_load): New variable so_error, use it for dlerror. Try to
load also LIBUNWIND_SO_7.
2012-03-05 Pedro Alves <palves@redhat.com> 2012-03-05 Pedro Alves <palves@redhat.com>
* i387-tdep.c (i387_supply_xsave): Assert the xsave section buffer * i387-tdep.c (i387_supply_xsave): Assert the xsave section buffer

View File

@ -95,7 +95,11 @@ struct libunwind_frame_cache
#ifndef LIBUNWIND_SO #ifndef LIBUNWIND_SO
/* Use the stable ABI major version number. `libunwind-ia64.so' is a link time /* Use the stable ABI major version number. `libunwind-ia64.so' is a link time
only library, not a runtime one. */ only library, not a runtime one. */
#define LIBUNWIND_SO "libunwind-" STRINGIFY(UNW_TARGET) ".so.7" #define LIBUNWIND_SO "libunwind-" STRINGIFY(UNW_TARGET) ".so.8"
/* Provide also compatibility with older .so. The two APIs are compatible, .8
is only extended a bit, GDB does not use the extended API at all. */
#define LIBUNWIND_SO_7 "libunwind-" STRINGIFY(UNW_TARGET) ".so.7"
#endif #endif
static char *get_reg_name = STRINGIFY(UNW_OBJ(get_reg)); static char *get_reg_name = STRINGIFY(UNW_OBJ(get_reg));
@ -491,14 +495,28 @@ static int
libunwind_load (void) libunwind_load (void)
{ {
void *handle; void *handle;
char *so_error = NULL;
handle = dlopen (LIBUNWIND_SO, RTLD_NOW); handle = dlopen (LIBUNWIND_SO, RTLD_NOW);
if (handle == NULL) if (handle == NULL)
{ {
fprintf_unfiltered (gdb_stderr, _("[GDB failed to load %s: %s]\n"), so_error = xstrdup (dlerror ());
LIBUNWIND_SO, dlerror ()); #ifdef LIBUNWIND_SO_7
return 0; handle = dlopen (LIBUNWIND_SO_7, RTLD_NOW);
#endif /* LIBUNWIND_SO_7 */
} }
if (handle == NULL)
{
fprintf_unfiltered (gdb_stderr, _("[GDB failed to load %s: %s]\n"),
LIBUNWIND_SO, so_error);
#ifdef LIBUNWIND_SO_7
fprintf_unfiltered (gdb_stderr, _("[GDB failed to load %s: %s]\n"),
LIBUNWIND_SO_7, dlerror ());
#endif /* LIBUNWIND_SO_7 */
}
xfree (so_error);
if (handle == NULL)
return 0;
/* Initialize pointers to the dynamic library functions we will use. */ /* Initialize pointers to the dynamic library functions we will use. */