diff --git a/struct_siginfo_to_siginfo_t.patch b/struct_siginfo_to_siginfo_t.patch index e90d2ae..4a112b5 100644 --- a/struct_siginfo_to_siginfo_t.patch +++ b/struct_siginfo_to_siginfo_t.patch @@ -1,9 +1,82 @@ --- crash-6.0.8/gdb-7.3.1.patch.orig +++ crash-6.0.8/gdb-7.3.1.patch -@@ -1526,3 +1526,14 @@ diff -up gdb-7.3.1/gdb/psymtab.c.orig gd +@@ -1526,3 +1526,166 @@ diff -up gdb-7.3.1/gdb/psymtab.c.orig gd + return NULL; +} #endif ++--- gdb-7.3.1/gdb/arm-linux-nat.c.orig +++++ gdb-7.3.1/gdb/arm-linux-nat.c ++@@ -1203,7 +1203,7 @@ arm_linux_remove_watchpoint (CORE_ADDR a ++ 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. */ ++--- gdb-7.3.1/gdb/ia64-linux-nat.c.orig +++++ gdb-7.3.1/gdb/ia64-linux-nat.c ++@@ -640,7 +640,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); ++--- gdb-7.3.1/gdb/ppc-linux-nat.c.orig +++++ gdb-7.3.1/gdb/ppc-linux-nat.c ++@@ -2161,7 +2161,7 @@ ppc_linux_thread_exit (struct thread_inf ++ 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); ++ ++--- gdb-7.3.1/gdb/alpha-linux-tdep.c.orig +++++ gdb-7.3.1/gdb/alpha-linux-tdep.c ++@@ -115,7 +115,7 @@ alpha_linux_sigcontext_addr (struct fram ++ /* __NR_rt_sigreturn has a couple of structures on the stack. This is: ++ ++ struct rt_sigframe { ++- struct siginfo info; +++ siginfo_t info; ++ struct ucontext uc; ++ }; ++ ++--- gdb-7.3.1/gdb/procfs.c.orig +++++ gdb-7.3.1/gdb/procfs.c ++@@ -263,7 +263,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 ++--- gdb-7.3.1/gdb/amd64-linux-nat.c.orig +++++ gdb-7.3.1/gdb/amd64-linux-nat.c ++@@ -695,13 +695,13 @@ siginfo_from_compat_siginfo (siginfo_t * ++ 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); +--- gdb-7.3.1/gdb/linux-nat.h.orig ++++ gdb-7.3.1/gdb/linux-nat.h +@@ -60,7 +60,7 @@ struct lwp_info @@ -15,3 +88,82 @@ + + /* STOPPED_BY_WATCHPOINT is non-zero if this LWP stopped with a data + watchpoint trap. */ ++@@ -160,7 +160,7 @@ void linux_nat_set_new_thread (struct ta ++ 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)); ++ ++@@ -169,7 +169,7 @@ void linux_nat_set_siginfo_fixup (struct ++ 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); ++--- gdb-7.3.1/gdb/linux-nat.c.orig +++++ gdb-7.3.1/gdb/linux-nat.c ++@@ -214,7 +214,7 @@ static void (*linux_nat_new_thread) (pti ++ /* 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); ++ ++@@ -3945,7 +3945,7 @@ linux_nat_mourn_inferior (struct target_ ++ 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; ++ ++@@ -3957,9 +3957,9 @@ siginfo_fixup (struct siginfo *siginfo, ++ 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)); ++ } ++ } ++ ++@@ -3969,8 +3969,8 @@ linux_xfer_siginfo (struct target_ops *o ++ 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); ++@@ -5784,7 +5784,7 @@ linux_nat_set_new_thread (struct target_ ++ inferior. */ ++ void ++ linux_nat_set_siginfo_fixup (struct target_ops *t, ++- int (*siginfo_fixup) (struct siginfo *, +++ int (*siginfo_fixup) (siginfo_t *, ++ gdb_byte *, ++ int)) ++ { ++@@ -5793,7 +5793,7 @@ linux_nat_set_siginfo_fixup (struct targ ++ } ++ ++ /* 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);