From 05e7c244344f338bf2af7718db34eb91637587dd Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Thu, 8 Mar 2012 19:08:11 +0000 Subject: [PATCH] gdb/ * libunwind-frame.c: Rename to ... * ia64-libunwind-tdep.c: ... here. * libunwind-frame.h: Rename to ... * ia64-libunwind-tdep.h: ... here. * Makefile.in (HFILES_NO_SRCDIR): Rename libunwind-frame.h to ia64-libunwind-tdep.h. (ALLDEPFILES): Rename libunwind-frame.c to ia64-libunwind-tdep.c. * README (--with-libunwind): Rename to ... (--with-libunwind-ia64): ... here, note it is ia64 specific now. * config.in: Regenerate. * configure: Regenerate. * configure.ac: New option --with-libunwind-ia64, make the AS_HELP_STRING ia64 specific. Deprecate option --with-libunwind. Remove AC_DEFINE for HAVE_LIBUNWIND. * ia64-libunwind-tdep.c: Make the file top comment ia64 specific. Rename libunwind-frame.h #include to ia64-libunwind-tdep.h. Rename libunwind-frame in the general comment. * ia64-libunwind-tdep.h: Make the file top comment ia64 specific. Rename symbol LIBUNWIND_FRAME_H to IA64_TDEP_LIBUNWIND_FRAME_H. Move forward declarations inside #ifndef. Rename libunwind-frame in the general comment. * ia64-tdep.c: Rename libunwind-frame.h #include to ia64-libunwind-tdep.h. (ia64_gdb2uw_regnum, ia64_uw2gdb_regnum, ia64_is_fpreg) (ia64_libunwind_descr): Rename libunwind-frame to ia64-libunwind-tdep in these function comments. * ia64-tdep.h: Rename libunwind-frame.h #include to ia64-libunwind-tdep.h. * ia64-vms-tdep.c (ia64_vms_libunwind_descr): Rename libunwind-frame to ia64-libunwind-tdep in that data comment. --- gdb/ChangeLog | 33 ++++++++++ gdb/Makefile.in | 4 +- gdb/README | 8 +-- gdb/config.in | 3 - gdb/configure | 62 ++++++++++++------- gdb/configure.ac | 54 ++++++++++------ ...ibunwind-frame.c => ia64-libunwind-tdep.c} | 8 +-- ...ibunwind-frame.h => ia64-libunwind-tdep.h} | 18 +++--- gdb/ia64-tdep.c | 18 +++--- gdb/ia64-tdep.h | 2 +- gdb/ia64-vms-tdep.c | 4 +- 11 files changed, 138 insertions(+), 76 deletions(-) rename gdb/{libunwind-frame.c => ia64-libunwind-tdep.c} (98%) rename gdb/{libunwind-frame.h => ia64-libunwind-tdep.h} (86%) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 89d8109bf4..2851d516d8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,36 @@ +2012-03-08 Jan Kratochvil + + * libunwind-frame.c: Rename to ... + * ia64-libunwind-tdep.c: ... here. + * libunwind-frame.h: Rename to ... + * ia64-libunwind-tdep.h: ... here. + * Makefile.in (HFILES_NO_SRCDIR): Rename libunwind-frame.h to + ia64-libunwind-tdep.h. + (ALLDEPFILES): Rename libunwind-frame.c to ia64-libunwind-tdep.c. + * README (--with-libunwind): Rename to ... + (--with-libunwind-ia64): ... here, note it is ia64 specific now. + * config.in: Regenerate. + * configure: Regenerate. + * configure.ac: New option --with-libunwind-ia64, make the + AS_HELP_STRING ia64 specific. Deprecate option --with-libunwind. + Remove AC_DEFINE for HAVE_LIBUNWIND. + * ia64-libunwind-tdep.c: Make the file top comment ia64 specific. + Rename libunwind-frame.h #include to ia64-libunwind-tdep.h. + Rename libunwind-frame in the general comment. + * ia64-libunwind-tdep.h: Make the file top comment ia64 specific. + Rename symbol LIBUNWIND_FRAME_H to IA64_TDEP_LIBUNWIND_FRAME_H. + Move forward declarations inside #ifndef. Rename libunwind-frame in + the general comment. + * ia64-tdep.c: Rename libunwind-frame.h #include to + ia64-libunwind-tdep.h. + (ia64_gdb2uw_regnum, ia64_uw2gdb_regnum, ia64_is_fpreg) + (ia64_libunwind_descr): Rename libunwind-frame to + ia64-libunwind-tdep in these function comments. + * ia64-tdep.h: Rename libunwind-frame.h #include to + ia64-libunwind-tdep.h. + * ia64-vms-tdep.c (ia64_vms_libunwind_descr): Rename libunwind-frame to + ia64-libunwind-tdep in that data comment. + 2012-03-08 Jan Kratochvil * libunwind-frame.h (struct frame_unwind): New declaration. diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 1846c74d57..84eda7da02 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -780,7 +780,7 @@ ser-unix.h inf-ptrace.h terminal.h ui-out.h frame-base.h \ f-lang.h dwarf2loc.h value.h sparc-tdep.h defs.h target-descriptions.h \ objfiles.h vec.h disasm.h mips-tdep.h ser-base.h \ gdb_curses.h bfd-target.h memattr.h inferior.h ax.h dummy-frame.h \ -inflow.h fbsd-nat.h libunwind-frame.h completer.h inf-ttrace.h \ +inflow.h fbsd-nat.h ia64-libunwind-tdep.h completer.h inf-ttrace.h \ solib-target.h gdb_vfork.h alpha-tdep.h dwarf2expr.h \ m2-lang.h stack.h charset.h addrmap.h command.h solist.h source.h \ target.h prologue-value.h cp-abi.h tui/tui-hooks.h tui/tui.h \ @@ -1463,7 +1463,7 @@ ALLDEPFILES = \ ia64-linux-nat.c ia64-linux-tdep.c ia64-tdep.c ia64-vms-tdep.c \ inf-ptrace.c inf-ttrace.c \ irix5-nat.c \ - libunwind-frame.c \ + ia64-libunwind-tdep.c \ linux-fork.c \ linux-tdep.c \ linux-record.c \ diff --git a/gdb/README b/gdb/README index 999f9927f6..33516ac9ea 100644 --- a/gdb/README +++ b/gdb/README @@ -446,10 +446,10 @@ prefer; but you may abbreviate option names if you use `--'. Build GDB with the gdbtk GUI interface. Requires TCL/Tk to be installed. -`--with-libunwind' - Use the libunwind library for unwinding function call stack. See - http://www.nongnu.org/libunwind/index.html fro details. - Supported only on some platforms. +`--with-libunwind-ia64' + Use the libunwind library for unwinding function call stack on ia64 + target platforms. + See http://www.nongnu.org/libunwind/index.html for details. `--with-curses' Use the curses library instead of the termcap library, for diff --git a/gdb/config.in b/gdb/config.in index 2df15bb0be..4325f66cc2 100644 --- a/gdb/config.in +++ b/gdb/config.in @@ -239,9 +239,6 @@ /* Define if Python 2.7 is being used. */ #undef HAVE_LIBPYTHON2_7 -/* Define if libunwind library is being used. */ -#undef HAVE_LIBUNWIND - /* Define to 1 if you have the header file. */ #undef HAVE_LIBUNWIND_IA64_H diff --git a/gdb/configure b/gdb/configure index eeb2696ba3..207defd3bf 100755 --- a/gdb/configure +++ b/gdb/configure @@ -957,7 +957,7 @@ enable_gdbcli enable_gdbmi enable_tui enable_gdbtk -with_libunwind +with_libunwind_ia64 with_curses enable_profiling with_pkgversion @@ -1659,7 +1659,7 @@ Optional Packages: [DATADIR/gdb] --with-relocated-sources=PATH automatically relocate this path for source files - --with-libunwind use libunwind frame unwinding support + --with-libunwind-ia64 use libunwind frame unwinding for ia64 targets --with-curses use the curses library instead of the termcap library --with-pkgversion=PKG Use PKG in the version string in place of "GDB" @@ -8196,18 +8196,32 @@ $as_echo "$as_me: WARNING: gdbtk isn't supported on $host; disabling" >&2;} enable_gdbtk=no ;; esac -# Libunwind support. +# Libunwind support for ia64. -# Check whether --with-libunwind was given. -if test "${with_libunwind+set}" = set; then : - withval=$with_libunwind; case "${withval}" in - yes) enable_libunwind=yes ;; - no) enable_libunwind=no ;; - *) as_fn_error "bad value ${withval} for GDB with-libunwind option" "$LINENO" 5 ;; -esac + +# Check whether --with-libunwind-ia64 was given. +if test "${with_libunwind_ia64+set}" = set; then : + withval=$with_libunwind_ia64; else + with_libunwind_ia64=auto +fi - for ac_header in libunwind-ia64.h + +# Backward compatibility option. +if test "${with_libunwind+set}" = set; then + if test x"$with_libunwind_ia64" != xauto; then + as_fn_error "option --with-libunwind is deprecated, use --with-libunwind-ia64" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: option --with-libunwind is deprecated, use --with-libunwind-ia64" >&5 +$as_echo "$as_me: WARNING: option --with-libunwind is deprecated, use --with-libunwind-ia64" >&2;} + with_libunwind_ia64="$with_libunwind" +fi + +case "$with_libunwind_ia64" in + yes | no) + ;; + auto) + for ac_header in libunwind-ia64.h do : ac_fn_c_check_header_mongrel "$LINENO" "libunwind-ia64.h" "ac_cv_header_libunwind_ia64_h" "$ac_includes_default" if test "x$ac_cv_header_libunwind_ia64_h" = x""yes; then : @@ -8219,14 +8233,14 @@ fi done - if test x"$ac_cv_header_libunwind_ia64_h" = xyes; then - enable_libunwind=yes; - fi - -fi - + with_libunwind_ia64=$ac_cv_header_libunwind_ia64_h + ;; + *) + as_fn_error "bad value $with_libunwind_ia64 for GDB --with-libunwind-ia64 option" "$LINENO" 5 + ;; +esac -if test x"$enable_libunwind" = xyes; then +if test x"$with_libunwind_ia64" = xyes; then for ac_header in libunwind-ia64.h do : ac_fn_c_check_header_mongrel "$LINENO" "libunwind-ia64.h" "ac_cv_header_libunwind_ia64_h" "$ac_includes_default" @@ -8239,12 +8253,12 @@ fi done - -$as_echo "#define HAVE_LIBUNWIND 1" >>confdefs.h - - CONFIG_OBS="$CONFIG_OBS libunwind-frame.o" - CONFIG_DEPS="$CONFIG_DEPS libunwind-frame.o" - CONFIG_SRCS="$CONFIG_SRCS libunwind-frame.c" + if test x"$ac_cv_header_libunwind_ia64_h" != xyes; then + as_fn_error "GDB option --with-libunwind-ia64 requires libunwind-ia64.h" "$LINENO" 5 + fi + CONFIG_OBS="$CONFIG_OBS ia64-libunwind-tdep.o" + CONFIG_DEPS="$CONFIG_DEPS ia64-libunwind-tdep.o" + CONFIG_SRCS="$CONFIG_SRCS ia64-libunwind-tdep.c" fi opt_curses=no diff --git a/gdb/configure.ac b/gdb/configure.ac index 6bb7cf4a70..5867782c89 100644 --- a/gdb/configure.ac +++ b/gdb/configure.ac @@ -328,26 +328,44 @@ case $host_os in enable_gdbtk=no ;; esac -# Libunwind support. -AC_ARG_WITH(libunwind, -AS_HELP_STRING([--with-libunwind], [use libunwind frame unwinding support]), -[case "${withval}" in - yes) enable_libunwind=yes ;; - no) enable_libunwind=no ;; - *) AC_MSG_ERROR(bad value ${withval} for GDB with-libunwind option) ;; -esac],[ - AC_CHECK_HEADERS(libunwind-ia64.h) - if test x"$ac_cv_header_libunwind_ia64_h" = xyes; then - enable_libunwind=yes; +# Libunwind support for ia64. + +AC_ARG_WITH(libunwind-ia64, +AS_HELP_STRING([--with-libunwind-ia64], + [use libunwind frame unwinding for ia64 targets]),, + [with_libunwind_ia64=auto]) + +# Backward compatibility option. +if test "${with_libunwind+set}" = set; then + if test x"$with_libunwind_ia64" != xauto; then + AC_MSG_ERROR( + [option --with-libunwind is deprecated, use --with-libunwind-ia64]) fi -]) - -if test x"$enable_libunwind" = xyes; then + AC_MSG_WARN([option --with-libunwind is deprecated, use --with-libunwind-ia64]) + with_libunwind_ia64="$with_libunwind" +fi + +case "$with_libunwind_ia64" in + yes | no) + ;; + auto) + AC_CHECK_HEADERS(libunwind-ia64.h) + with_libunwind_ia64=$ac_cv_header_libunwind_ia64_h + ;; + *) + AC_MSG_ERROR( + [bad value $with_libunwind_ia64 for GDB --with-libunwind-ia64 option]) + ;; +esac + +if test x"$with_libunwind_ia64" = xyes; then AC_CHECK_HEADERS(libunwind-ia64.h) - AC_DEFINE(HAVE_LIBUNWIND, 1, [Define if libunwind library is being used.]) - CONFIG_OBS="$CONFIG_OBS libunwind-frame.o" - CONFIG_DEPS="$CONFIG_DEPS libunwind-frame.o" - CONFIG_SRCS="$CONFIG_SRCS libunwind-frame.c" + if test x"$ac_cv_header_libunwind_ia64_h" != xyes; then + AC_MSG_ERROR([GDB option --with-libunwind-ia64 requires libunwind-ia64.h]) + fi + CONFIG_OBS="$CONFIG_OBS ia64-libunwind-tdep.o" + CONFIG_DEPS="$CONFIG_DEPS ia64-libunwind-tdep.o" + CONFIG_SRCS="$CONFIG_SRCS ia64-libunwind-tdep.c" fi opt_curses=no diff --git a/gdb/libunwind-frame.c b/gdb/ia64-libunwind-tdep.c similarity index 98% rename from gdb/libunwind-frame.c rename to gdb/ia64-libunwind-tdep.c index 1421d927b7..e1c89c48a5 100644 --- a/gdb/libunwind-frame.c +++ b/gdb/ia64-libunwind-tdep.c @@ -1,4 +1,4 @@ -/* Frame unwinder for frames using the libunwind library. +/* Frame unwinder for ia64 frames using the libunwind library. Copyright (C) 2003-2004, 2006-2012 Free Software Foundation, Inc. @@ -36,12 +36,12 @@ #include "gdb_assert.h" #include "gdb_string.h" -#include "libunwind-frame.h" +#include "ia64-libunwind-tdep.h" #include "complaints.h" -/* IA-64 is the only target that currently uses libunwind-frame. Note - how UNW_TARGET, UNW_OBJ, etc. are compile time constants below. +/* IA-64 is the only target that currently uses ia64-libunwind-tdep. + Note how UNW_TARGET, UNW_OBJ, etc. are compile time constants below. Those come from libunwind's headers, and are target dependent. Also, some of libunwind's typedefs are target dependent, as e.g., unw_word_t. If some other target wants to use this, we will need diff --git a/gdb/libunwind-frame.h b/gdb/ia64-libunwind-tdep.h similarity index 86% rename from gdb/libunwind-frame.h rename to gdb/ia64-libunwind-tdep.h index ea8a2a22a7..88f385719e 100644 --- a/gdb/libunwind-frame.h +++ b/gdb/ia64-libunwind-tdep.h @@ -1,4 +1,4 @@ -/* Frame unwinder for frames with libunwind frame information. +/* Frame unwinder for ia64 frames with libunwind frame information. Copyright (C) 2003, 2006-2012 Free Software Foundation, Inc. @@ -19,21 +19,21 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ +#ifndef IA64_LIBUNWIND_TDEP_H +#define IA64_LIBUNWIND_TDEP_H 1 + struct frame_info; struct frame_id; struct regcache; struct gdbarch; struct frame_unwind; -#ifndef LIBUNWIND_FRAME_H -#define LIBUNWIND_FRAME_H 1 - /* IA-64 is the only target that currently uses libunwind. If some other target wants to use it, we will need to do some abstracting - in order to make it possible to have more than one libunwind-frame - instance. Including "libunwind.h" is wrong as that ends up - including the libunwind-$(arch).h for the host gdb is running - on. */ + in order to make it possible to have more than one + ia64-libunwind-tdep instance. Including "libunwind.h" is wrong as + that ends up including the libunwind-$(arch).h for the host gdb is + running on. */ #include "libunwind-ia64.h" struct libunwind_descr @@ -74,4 +74,4 @@ int libunwind_get_reg_special (struct gdbarch *gdbarch, struct regcache *regcache, int regnum, void *buf); -#endif /* libunwind-frame.h */ +#endif /* IA64_LIBUNWIND_TDEP_H */ diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c index 1c4fa8f67c..460345bc96 100644 --- a/gdb/ia64-tdep.c +++ b/gdb/ia64-tdep.c @@ -42,7 +42,7 @@ #ifdef HAVE_LIBUNWIND_IA64_H #include "elf/ia64.h" /* for PT_IA_64_UNWIND value */ -#include "libunwind-frame.h" +#include "ia64-libunwind-tdep.h" /* Note: KERNEL_START is supposed to be an address which is not going to ever contain any valid unwind info. For ia64 linux, the choice @@ -2417,8 +2417,8 @@ ia64_rse_skip_regs (uint64_t addr, long num_regs) return addr + ((num_regs + delta/0x3f) << 3); } -/* Gdb libunwind-frame callback function to convert from an ia64 gdb register - number to a libunwind register number. */ +/* Gdb ia64-libunwind-tdep callback function to convert from an ia64 gdb + register number to a libunwind register number. */ static int ia64_gdb2uw_regnum (int regnum) { @@ -2450,8 +2450,8 @@ ia64_gdb2uw_regnum (int regnum) return -1; } -/* Gdb libunwind-frame callback function to convert from a libunwind register - number to a ia64 gdb register number. */ +/* Gdb ia64-libunwind-tdep callback function to convert from a libunwind + register number to a ia64 gdb register number. */ static int ia64_uw2gdb_regnum (int uw_regnum) { @@ -2481,8 +2481,8 @@ ia64_uw2gdb_regnum (int uw_regnum) return -1; } -/* Gdb libunwind-frame callback function to reveal if register is a float - register or not. */ +/* Gdb ia64-libunwind-tdep callback function to reveal if register is + a float register or not. */ static int ia64_is_fpreg (int uw_regnum) { @@ -3176,8 +3176,8 @@ unw_accessors_t ia64_unw_rse_accessors = /* get_proc_name */ }; -/* Set of ia64 gdb libunwind-frame callbacks and data for generic - libunwind-frame code to use. */ +/* Set of ia64-libunwind-tdep gdb callbacks and data for generic + ia64-libunwind-tdep code to use. */ struct libunwind_descr ia64_libunwind_descr = { ia64_gdb2uw_regnum, diff --git a/gdb/ia64-tdep.h b/gdb/ia64-tdep.h index 7501eb417b..66040e4522 100644 --- a/gdb/ia64-tdep.h +++ b/gdb/ia64-tdep.h @@ -22,7 +22,7 @@ #ifdef HAVE_LIBUNWIND_IA64_H #include "libunwind-ia64.h" -#include "libunwind-frame.h" +#include "ia64-libunwind-tdep.h" #endif /* Register numbers of various important registers. */ diff --git a/gdb/ia64-vms-tdep.c b/gdb/ia64-vms-tdep.c index 66920b11c3..09238fcb3d 100644 --- a/gdb/ia64-vms-tdep.c +++ b/gdb/ia64-vms-tdep.c @@ -123,8 +123,8 @@ ia64_vms_get_dyn_info_list (unw_addr_space_t as, static unw_accessors_t ia64_vms_unw_accessors; static unw_accessors_t ia64_vms_unw_rse_accessors; -/* Set of ia64 gdb libunwind-frame callbacks and data for generic - libunwind-frame code to use. */ +/* Set of ia64-libunwind-tdep gdb callbacks and data for generic + ia64-libunwind-tdep code to use. */ static struct libunwind_descr ia64_vms_libunwind_descr; #endif /* HAVE_LIBUNWIND_IA64_H */ -- 2.34.1