summaryrefslogtreecommitdiffstats
path: root/package/gdb/7.4.1
diff options
context:
space:
mode:
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>2013-04-07 00:04:33 +0000
committerPeter Korsgaard <jacmet@sunsite.dk>2013-04-11 21:46:32 +0200
commita0b6faaab4dcb7e372fe16ffb335e39b9e06a8fb (patch)
tree091873326b66084289ab13f10de84ec13bb6e491 /package/gdb/7.4.1
parent15ada1c1846a243893f5e734fbb5039aa8e4b1a4 (diff)
downloadbuildroot-novena-a0b6faaab4dcb7e372fe16ffb335e39b9e06a8fb.tar.gz
buildroot-novena-a0b6faaab4dcb7e372fe16ffb335e39b9e06a8fb.zip
gdb: convert to the package infrastructure
This commit converts gdb to the package infrastructure, and therefore moves it from toolchain/gdb to package/gdb. The target package is now visible in "Package selection for the target" => "Debugging, profiling and benchmark". The main option, "gdb", forcefully selects the "gdbserver" sub-option by default. Another sub-option, "full debugger" allows to install the complete gdb on the target. When this option is enabled, then "gdbserver" is no longer forcefully selected. This ensures that at least gdbserver or the full debugger gets built/installed, so that the package is not a no-op. The host debugger is still enabled through a configuration option in "Toolchain". It is now visible regardless of the toolchain type (it used to be hidden for External Toolchains). The configuration options relative to the host debugger are now in package/gdb/Config.in.host, similar to how we have package/binutils/Config.in.host. Since gdb is now a proper package, it is no longer allowed to 'select BR2_PTHREADS_DEBUG' to ensure thread debugging is available when needed. Instead, it now 'depends on BR2_TOOLCHAIN_HAS_THREADS_DEBUG'. This option, in turn, is selected by the different toolchain backends when appropriate. The 'BR2_TOOLCHAIN_HAS_THREADS_DEBUG_IF_NEEDED' option is removed, since we no longer need to know when it is allowed to 'select BR2_PTHREADS_DEBUG'. Also, the 'BR2_PTHREADS_DEBUG' option is moved to appear right below the thread implementation selection (in the case of the Buildroot toolchain backend). Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Diffstat (limited to 'package/gdb/7.4.1')
-rw-r--r--package/gdb/7.4.1/00_all_ptrace_setsiginfo.patch314
-rw-r--r--package/gdb/7.4.1/05_all_readline-headers.patch42
-rw-r--r--package/gdb/7.4.1/xtensa-asm-ptrace-h.patch22
-rw-r--r--package/gdb/7.4.1/xtensa-gdb-regsize.patch19
4 files changed, 397 insertions, 0 deletions
diff --git a/package/gdb/7.4.1/00_all_ptrace_setsiginfo.patch b/package/gdb/7.4.1/00_all_ptrace_setsiginfo.patch
new file mode 100644
index 000000000..81a92db9a
--- /dev/null
+++ b/package/gdb/7.4.1/00_all_ptrace_setsiginfo.patch
@@ -0,0 +1,314 @@
+fix from upstream for building with newer kernel headers
+
+From a7f9ca9cb797d653dc7919538e1dfa0c26010331 Mon Sep 17 00:00:00 2001
+From: tschwinge <tschwinge>
+Date: Wed, 21 Mar 2012 13:43:50 +0000
+Subject: [PATCH] struct siginfo vs. siginfo_t
+
+gdb/
+ * amd64-linux-nat.c (amd64_linux_siginfo_fixup): Use siginfo_t instead
+ of struct siginfo.
+ * arm-linux-nat.c (arm_linux_stopped_data_address): Likewise.
+ * ia64-linux-nat.c (ia64_linux_stopped_data_address): Likewise.
+ * linux-nat.c (linux_nat_siginfo_fixup, siginfo_fixup)
+ (linux_xfer_siginfo, linux_nat_set_siginfo_fixup)
+ (linux_nat_get_siginfo): Likewise.
+ * linux-nat.h (struct lwp_info, linux_nat_set_siginfo_fixup)
+ (linux_nat_get_siginfo): Likewise.
+ * linux-tdep.c (linux_get_siginfo_type): Likewise.
+ * ppc-linux-nat.c (ppc_linux_stopped_data_address): Likewise.
+ * procfs.c (gdb_siginfo_t): Likewise.
+
+gdbserver/
+ * linux-arm-low.c (arm_stopped_by_watchpoint): Use siginfo_t instead of
+ struct siginfo.
+ * linux-low.c (siginfo_fixup, linux_xfer_siginfo): Likewise.
+ * linux-x86-low.c (x86_siginfo_fixup): Likewise.
+ * linux-low.h: Include <signal.h>.
+ (struct siginfo): Remove forward declaration.
+ (struct linux_target_ops) <siginfo_fixup>: Use siginfo_t instead of
+ struct siginfo.
+---
+ gdb/ChangeLog | 15 +++++++++++++++
+ gdb/amd64-linux-nat.c | 4 ++--
+ gdb/arm-linux-nat.c | 2 +-
+ gdb/gdbserver/ChangeLog | 11 +++++++++++
+ gdb/gdbserver/linux-arm-low.c | 2 +-
+ gdb/gdbserver/linux-low.c | 10 +++++-----
+ gdb/gdbserver/linux-low.h | 5 ++---
+ gdb/gdbserver/linux-x86-low.c | 4 ++--
+ gdb/ia64-linux-nat.c | 2 +-
+ gdb/linux-nat.c | 16 ++++++++--------
+ gdb/linux-nat.h | 6 +++---
+ gdb/ppc-linux-nat.c | 2 +-
+ gdb/procfs.c | 2 +-
+ 13 files changed, 53 insertions(+), 28 deletions(-)
+
+diff --git a/gdb/amd64-linux-nat.c b/gdb/amd64-linux-nat.c
+index f954483..5ebba3a 100644
+--- a/gdb/amd64-linux-nat.c
++++ b/gdb/amd64-linux-nat.c
+@@ -731,13 +731,13 @@ siginfo_from_compat_siginfo (siginfo_t *to, compat_siginfo_t *from)
+ INF. */
+
+ static int
+-amd64_linux_siginfo_fixup (struct siginfo *native, gdb_byte *inf, int direction)
++amd64_linux_siginfo_fixup (siginfo_t *native, gdb_byte *inf, int direction)
+ {
+ /* Is the inferior 32-bit? If so, then do fixup the siginfo
+ object. */
+ if (gdbarch_addr_bit (get_frame_arch (get_current_frame ())) == 32)
+ {
+- gdb_assert (sizeof (struct siginfo) == sizeof (compat_siginfo_t));
++ gdb_assert (sizeof (siginfo_t) == sizeof (compat_siginfo_t));
+
+ if (direction == 0)
+ compat_siginfo_from_siginfo ((struct compat_siginfo *) inf, native);
+diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c
+index c5ce21c..f9f6ba5 100644
+--- a/gdb/arm-linux-nat.c
++++ b/gdb/arm-linux-nat.c
+@@ -1137,7 +1137,7 @@ arm_linux_remove_watchpoint (CORE_ADDR addr, int len, int rw,
+ static int
+ arm_linux_stopped_data_address (struct target_ops *target, CORE_ADDR *addr_p)
+ {
+- struct siginfo *siginfo_p = linux_nat_get_siginfo (inferior_ptid);
++ siginfo_t *siginfo_p = linux_nat_get_siginfo (inferior_ptid);
+ int slot = siginfo_p->si_errno;
+
+ /* This must be a hardware breakpoint. */
+diff --git a/gdb/gdbserver/linux-arm-low.c b/gdb/gdbserver/linux-arm-low.c
+index ff2437d..01208ef 100644
+--- a/gdb/gdbserver/linux-arm-low.c
++++ b/gdb/gdbserver/linux-arm-low.c
+@@ -631,7 +631,7 @@ static int
+ arm_stopped_by_watchpoint (void)
+ {
+ struct lwp_info *lwp = get_thread_lwp (current_inferior);
+- struct siginfo siginfo;
++ siginfo_t siginfo;
+
+ /* We must be able to set hardware watchpoints. */
+ if (arm_linux_get_hw_watchpoint_count () == 0)
+diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
+index d2d4c1d..4734f15 100644
+--- a/gdb/gdbserver/linux-low.c
++++ b/gdb/gdbserver/linux-low.c
+@@ -4779,7 +4779,7 @@ linux_qxfer_osdata (const char *annex,
+ layout of the inferiors' architecture. */
+
+ static void
+-siginfo_fixup (struct siginfo *siginfo, void *inf_siginfo, int direction)
++siginfo_fixup (siginfo_t *siginfo, void *inf_siginfo, int direction)
+ {
+ int done = 0;
+
+@@ -4791,9 +4791,9 @@ siginfo_fixup (struct siginfo *siginfo, void *inf_siginfo, int direction)
+ if (!done)
+ {
+ if (direction == 1)
+- memcpy (siginfo, inf_siginfo, sizeof (struct siginfo));
++ memcpy (siginfo, inf_siginfo, sizeof (siginfo_t));
+ else
+- memcpy (inf_siginfo, siginfo, sizeof (struct siginfo));
++ memcpy (inf_siginfo, siginfo, sizeof (siginfo_t));
+ }
+ }
+
+@@ -4802,8 +4802,8 @@ linux_xfer_siginfo (const char *annex, unsigned char *readbuf,
+ unsigned const char *writebuf, CORE_ADDR offset, int len)
+ {
+ int pid;
+- struct siginfo siginfo;
+- char inf_siginfo[sizeof (struct siginfo)];
++ siginfo_t siginfo;
++ char inf_siginfo[sizeof (siginfo_t)];
+
+ if (current_inferior == NULL)
+ return -1;
+diff --git a/gdb/gdbserver/linux-low.h b/gdb/gdbserver/linux-low.h
+index 677d261..3aeae70 100644
+--- a/gdb/gdbserver/linux-low.h
++++ b/gdb/gdbserver/linux-low.h
+@@ -20,6 +20,7 @@
+ #ifdef HAVE_THREAD_DB_H
+ #include <thread_db.h>
+ #endif
++#include <signal.h>
+
+ #include "gdb_proc_service.h"
+
+@@ -46,8 +47,6 @@ struct regset_info
+ extern struct regset_info target_regsets[];
+ #endif
+
+-struct siginfo;
+-
+ struct process_info_private
+ {
+ /* Arch-specific additions. */
+@@ -109,7 +108,7 @@ struct linux_target_ops
+ Returns true if any conversion was done; false otherwise.
+ If DIRECTION is 1, then copy from INF to NATIVE.
+ If DIRECTION is 0, copy from NATIVE to INF. */
+- int (*siginfo_fixup) (struct siginfo *native, void *inf, int direction);
++ int (*siginfo_fixup) (siginfo_t *native, void *inf, int direction);
+
+ /* Hook to call when a new process is created or attached to.
+ If extra per-process architecture-specific data is needed,
+diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c
+index ed1f8a8..b466b5d 100644
+--- a/gdb/gdbserver/linux-x86-low.c
++++ b/gdb/gdbserver/linux-x86-low.c
+@@ -918,13 +918,13 @@ siginfo_from_compat_siginfo (siginfo_t *to, compat_siginfo_t *from)
+ INF. */
+
+ static int
+-x86_siginfo_fixup (struct siginfo *native, void *inf, int direction)
++x86_siginfo_fixup (siginfo_t *native, void *inf, int direction)
+ {
+ #ifdef __x86_64__
+ /* Is the inferior 32-bit? If so, then fixup the siginfo object. */
+ if (register_size (0) == 4)
+ {
+- if (sizeof (struct siginfo) != sizeof (compat_siginfo_t))
++ if (sizeof (siginfo_t) != sizeof (compat_siginfo_t))
+ fatal ("unexpected difference in siginfo");
+
+ if (direction == 0)
+diff --git a/gdb/ia64-linux-nat.c b/gdb/ia64-linux-nat.c
+index 8773195..19b827f 100644
+--- a/gdb/ia64-linux-nat.c
++++ b/gdb/ia64-linux-nat.c
+@@ -637,7 +637,7 @@ static int
+ ia64_linux_stopped_data_address (struct target_ops *ops, CORE_ADDR *addr_p)
+ {
+ CORE_ADDR psr;
+- struct siginfo *siginfo_p;
++ siginfo_t *siginfo_p;
+ struct regcache *regcache = get_current_regcache ();
+
+ siginfo_p = linux_nat_get_siginfo (inferior_ptid);
+diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
+index f80c0c1..d81d55e 100644
+--- a/gdb/linux-nat.c
++++ b/gdb/linux-nat.c
+@@ -188,7 +188,7 @@ static void (*linux_nat_prepare_to_resume) (struct lwp_info *);
+ /* The method to call, if any, when the siginfo object needs to be
+ converted between the layout returned by ptrace, and the layout in
+ the architecture of the inferior. */
+-static int (*linux_nat_siginfo_fixup) (struct siginfo *,
++static int (*linux_nat_siginfo_fixup) (siginfo_t *,
+ gdb_byte *,
+ int);
+
+@@ -4232,7 +4232,7 @@ linux_nat_mourn_inferior (struct target_ops *ops)
+ layout of the inferiors' architecture. */
+
+ static void
+-siginfo_fixup (struct siginfo *siginfo, gdb_byte *inf_siginfo, int direction)
++siginfo_fixup (siginfo_t *siginfo, gdb_byte *inf_siginfo, int direction)
+ {
+ int done = 0;
+
+@@ -4244,9 +4244,9 @@ siginfo_fixup (struct siginfo *siginfo, gdb_byte *inf_siginfo, int direction)
+ if (!done)
+ {
+ if (direction == 1)
+- memcpy (siginfo, inf_siginfo, sizeof (struct siginfo));
++ memcpy (siginfo, inf_siginfo, sizeof (siginfo_t));
+ else
+- memcpy (inf_siginfo, siginfo, sizeof (struct siginfo));
++ memcpy (inf_siginfo, siginfo, sizeof (siginfo_t));
+ }
+ }
+
+@@ -4256,8 +4256,8 @@ linux_xfer_siginfo (struct target_ops *ops, enum target_object object,
+ const gdb_byte *writebuf, ULONGEST offset, LONGEST len)
+ {
+ int pid;
+- struct siginfo siginfo;
+- gdb_byte inf_siginfo[sizeof (struct siginfo)];
++ siginfo_t siginfo;
++ gdb_byte inf_siginfo[sizeof (siginfo_t)];
+
+ gdb_assert (object == TARGET_OBJECT_SIGNAL_INFO);
+ gdb_assert (readbuf || writebuf);
+@@ -5266,7 +5266,7 @@ linux_nat_set_new_thread (struct target_ops *t,
+ inferior. */
+ void
+ linux_nat_set_siginfo_fixup (struct target_ops *t,
+- int (*siginfo_fixup) (struct siginfo *,
++ int (*siginfo_fixup) (siginfo_t *,
+ gdb_byte *,
+ int))
+ {
+@@ -5285,7 +5285,7 @@ linux_nat_set_prepare_to_resume (struct target_ops *t,
+ }
+
+ /* Return the saved siginfo associated with PTID. */
+-struct siginfo *
++siginfo_t *
+ linux_nat_get_siginfo (ptid_t ptid)
+ {
+ struct lwp_info *lp = find_lwp_pid (ptid);
+diff --git a/gdb/linux-nat.h b/gdb/linux-nat.h
+index c9878d9..d87f0cf 100644
+--- a/gdb/linux-nat.h
++++ b/gdb/linux-nat.h
+@@ -78,7 +78,7 @@ struct lwp_info
+
+ /* Non-zero si_signo if this LWP stopped with a trap. si_addr may
+ be the address of a hardware watchpoint. */
+- struct siginfo siginfo;
++ siginfo_t siginfo;
+
+ /* STOPPED_BY_WATCHPOINT is non-zero if this LWP stopped with a data
+ watchpoint trap. */
+@@ -184,7 +184,7 @@ void linux_nat_set_new_thread (struct target_ops *, void (*) (struct lwp_info *)
+ that ptrace returns, and the layout in the architecture of the
+ inferior. */
+ void linux_nat_set_siginfo_fixup (struct target_ops *,
+- int (*) (struct siginfo *,
++ int (*) (siginfo_t *,
+ gdb_byte *,
+ int));
+
+@@ -198,7 +198,7 @@ void linux_nat_set_prepare_to_resume (struct target_ops *,
+ void linux_nat_switch_fork (ptid_t new_ptid);
+
+ /* Return the saved siginfo associated with PTID. */
+-struct siginfo *linux_nat_get_siginfo (ptid_t ptid);
++siginfo_t *linux_nat_get_siginfo (ptid_t ptid);
+
+ /* Compute and return the processor core of a given thread. */
+ int linux_nat_core_of_thread_1 (ptid_t ptid);
+diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
+index 1bd157b..9bd11fd 100644
+--- a/gdb/ppc-linux-nat.c
++++ b/gdb/ppc-linux-nat.c
+@@ -2218,7 +2218,7 @@ ppc_linux_thread_exit (struct thread_info *tp, int silent)
+ static int
+ ppc_linux_stopped_data_address (struct target_ops *target, CORE_ADDR *addr_p)
+ {
+- struct siginfo *siginfo_p;
++ siginfo_t *siginfo_p;
+
+ siginfo_p = linux_nat_get_siginfo (inferior_ptid);
+
+diff --git a/gdb/procfs.c b/gdb/procfs.c
+index 903621d..cb4bc7c 100644
+--- a/gdb/procfs.c
++++ b/gdb/procfs.c
+@@ -266,7 +266,7 @@ typedef struct sigaction gdb_sigaction_t;
+ #ifdef HAVE_PR_SIGINFO64_T
+ typedef pr_siginfo64_t gdb_siginfo_t;
+ #else
+-typedef struct siginfo gdb_siginfo_t;
++typedef siginfo_t gdb_siginfo_t;
+ #endif
+
+ /* On mips-irix, praddset and prdelset are defined in such a way that
+--
+1.7.9.7
+
diff --git a/package/gdb/7.4.1/05_all_readline-headers.patch b/package/gdb/7.4.1/05_all_readline-headers.patch
new file mode 100644
index 000000000..e65adf6e6
--- /dev/null
+++ b/package/gdb/7.4.1/05_all_readline-headers.patch
@@ -0,0 +1,42 @@
+--- a/readline/complete.c
++++ b/readline/complete.c
+@@ -25,6 +25,11 @@
+ # include <config.h>
+ #endif
+
++#ifdef HAVE_WCHAR_H /* wcwidth() */
++# define _GNU_SOURCE
++# include <wchar.h>
++#endif
++
+ #include <sys/types.h>
+ #include <fcntl.h>
+ #if defined (HAVE_SYS_FILE_H)
+--- a/readline/display.c
++++ b/readline/display.c
+@@ -25,6 +25,11 @@
+ # include <config.h>
+ #endif
+
++#ifdef HAVE_WCHAR_H /* wcwidth() */
++# define _GNU_SOURCE
++# include <wchar.h>
++#endif
++
+ #include <sys/types.h>
+
+ #if defined (HAVE_UNISTD_H)
+--- a/readline/mbutil.c
++++ b/readline/mbutil.c
+@@ -25,6 +25,11 @@
+ # include <config.h>
+ #endif
+
++#ifdef HAVE_WCHAR_H /* wcwidth() */
++# define _GNU_SOURCE
++# include <wchar.h>
++#endif
++
+ #include <sys/types.h>
+ #include <fcntl.h>
+ #include "posixjmp.h"
diff --git a/package/gdb/7.4.1/xtensa-asm-ptrace-h.patch b/package/gdb/7.4.1/xtensa-asm-ptrace-h.patch
new file mode 100644
index 000000000..3d1b07c99
--- /dev/null
+++ b/package/gdb/7.4.1/xtensa-asm-ptrace-h.patch
@@ -0,0 +1,22 @@
+--- gdb-7.4.1/gdb/xtensa-linux-nat.c.orig 2012-10-19 16:23:06.908165323 -0700
++++ gdb-7.4.1/gdb/xtensa-linux-nat.c 2012-10-19 16:35:30.792134876 -0700
+@@ -36,7 +36,7 @@
+ #include "gdb_wait.h"
+ #include <fcntl.h>
+ #include <sys/procfs.h>
+-#include <sys/ptrace.h>
++#include <asm/ptrace.h>
+
+ #include "gregset.h"
+ #include "xtensa-tdep.h"
+--- gdb-7.4.1/gdb/gdbserver/linux-xtensa-low.c.orig 2012-10-19 16:24:06.260162894 -0700
++++ gdb-7.4.1/gdb/gdbserver/linux-xtensa-low.c 2012-10-19 16:36:07.920133357 -0700
+@@ -23,7 +23,7 @@
+ /* Defined in auto-generated file reg-xtensa.c. */
+ void init_registers_xtensa (void);
+
+-#include <sys/ptrace.h>
++#include <asm/ptrace.h>
+ #include <xtensa-config.h>
+
+ #include "xtensa-xtregs.c"
diff --git a/package/gdb/7.4.1/xtensa-gdb-regsize.patch b/package/gdb/7.4.1/xtensa-gdb-regsize.patch
new file mode 100644
index 000000000..e10bb8f3e
--- /dev/null
+++ b/package/gdb/7.4.1/xtensa-gdb-regsize.patch
@@ -0,0 +1,19 @@
+--- gdb-7.4.1/gdb/xtensa-tdep.h.orig 2012-10-30 11:40:23.546448594 -0700
++++ gdb-7.4.1/gdb/xtensa-tdep.h 2012-10-30 11:41:43.078445337 -0700
+@@ -17,6 +17,7 @@
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
++#include <stdint.h>
+
+ /* XTENSA_TDEP_VERSION can/should be changed along with XTENSA_CONFIG_VERSION
+ whenever the "tdep" structure changes in an incompatible way. */
+@@ -84,7 +85,7 @@
+ /* Xtensa ELF core file register set representation ('.reg' section).
+ Copied from target-side ELF header <xtensa/elf.h>. */
+
+-typedef unsigned long xtensa_elf_greg_t;
++typedef uint32_t xtensa_elf_greg_t;
+
+ typedef struct
+ {