This commit is contained in:
parent
c2ccc3d9f3
commit
a2afc99c64
@ -382,6 +382,7 @@ doc/ChangeLog:
|
||||
* gdb.texinfo (Target Descriptions): Document <compatible> element.
|
||||
|
||||
|
||||
================================================================================
|
||||
--- gdb/Makefile.in
|
||||
+++ gdb/Makefile.in
|
||||
@@ -499,7 +499,7 @@ ALL_TARGET_OBS = \
|
||||
@ -393,7 +394,7 @@ doc/ChangeLog:
|
||||
v850-tdep.o \
|
||||
vaxnbsd-tdep.o vaxobsd-tdep.o vax-tdep.o \
|
||||
xstormy16-tdep.o \
|
||||
@@ -1337,7 +1337,7 @@ ALLDEPFILES = \
|
||||
@@ -1338,7 +1338,7 @@ ALLDEPFILES = \
|
||||
sparc64-tdep.c sparc64fbsd-nat.c sparc64fbsd-tdep.c \
|
||||
sparc64nbsd-nat.c sparc64nbsd-tdep.c sparc64obsd-tdep.c \
|
||||
sparcnbsd-nat.c sparcnbsd-tdep.c sparcobsd-tdep.c \
|
||||
@ -401,7 +402,7 @@ doc/ChangeLog:
|
||||
+ spu-linux-nat.c spu-tdep.c spu-multiarch.c solib-spu.c \
|
||||
v850-tdep.c \
|
||||
vax-nat.c vax-tdep.c vaxbsd-nat.c vaxnbsd-tdep.c \
|
||||
win32-nat.c \
|
||||
windows-nat.c windows-tdep.c \
|
||||
--- gdb/arch-utils.c
|
||||
+++ gdb/arch-utils.c
|
||||
@@ -326,15 +326,24 @@ set_endian (char *ignore_args, int from_
|
||||
@ -520,7 +521,7 @@ doc/ChangeLog:
|
||||
|
||||
--- gdb/breakpoint.c
|
||||
+++ gdb/breakpoint.c
|
||||
@@ -1089,7 +1089,7 @@ Note: automatically using hardware break
|
||||
@@ -1134,7 +1134,7 @@ Note: automatically using hardware break
|
||||
bpt->overlay_target_info = bpt->target_info;
|
||||
bpt->overlay_target_info.placed_address = addr;
|
||||
val = target_insert_breakpoint (&bpt->overlay_target_info);
|
||||
@ -529,7 +530,7 @@ doc/ChangeLog:
|
||||
fprintf_unfiltered (tmp_error_stream,
|
||||
"Overlay breakpoint %d failed: in ROM?",
|
||||
bpt->owner->number);
|
||||
@@ -1112,6 +1112,14 @@ Note: automatically using hardware break
|
||||
@@ -1157,6 +1157,14 @@ Note: automatically using hardware break
|
||||
}
|
||||
}
|
||||
|
||||
@ -544,7 +545,7 @@ doc/ChangeLog:
|
||||
if (val)
|
||||
{
|
||||
/* Can't set the breakpoint. */
|
||||
@@ -1588,6 +1596,14 @@ remove_breakpoint (struct bp_location *b
|
||||
@@ -1626,6 +1634,14 @@ remove_breakpoint (struct bp_location *b
|
||||
}
|
||||
}
|
||||
|
||||
@ -559,7 +560,7 @@ doc/ChangeLog:
|
||||
/* In some cases, we might not be able to remove a breakpoint
|
||||
in a shared library that has already been removed, but we
|
||||
have not yet processed the shlib unload event. */
|
||||
@@ -7490,6 +7506,37 @@ breakpoint_re_set (void)
|
||||
@@ -7552,6 +7568,37 @@ breakpoint_re_set (void)
|
||||
|
||||
create_overlay_event_breakpoint ("_ovly_debug_event");
|
||||
}
|
||||
@ -599,7 +600,7 @@ doc/ChangeLog:
|
||||
|
||||
--- gdb/breakpoint.h
|
||||
+++ gdb/breakpoint.h
|
||||
@@ -674,6 +674,8 @@ extern int breakpoint_thread_match (CORE
|
||||
@@ -670,6 +670,8 @@ extern int breakpoint_thread_match (CORE
|
||||
|
||||
extern void until_break_command (char *, int, int);
|
||||
|
||||
@ -641,7 +642,7 @@ doc/ChangeLog:
|
||||
/* Parse start address (optional). */
|
||||
--- gdb/configure.tgt
|
||||
+++ gdb/configure.tgt
|
||||
@@ -349,7 +349,8 @@ powerpc-*-aix* | rs6000-*-*)
|
||||
@@ -354,7 +354,8 @@ powerpc-*-aix* | rs6000-*-*)
|
||||
powerpc-*-linux* | powerpc64-*-linux*)
|
||||
# Target: PowerPC running Linux
|
||||
gdb_target_obs="rs6000-tdep.o ppc-linux-tdep.o ppc-sysv-tdep.o \
|
||||
@ -754,7 +755,7 @@ doc/ChangeLog:
|
||||
}
|
||||
--- gdb/doc/gdb.texinfo
|
||||
+++ gdb/doc/gdb.texinfo
|
||||
@@ -16787,6 +16787,33 @@ and local store addresses and transfer s
|
||||
@@ -16834,6 +16834,33 @@ and local store addresses and transfer s
|
||||
|
||||
@end table
|
||||
|
||||
@ -788,7 +789,7 @@ doc/ChangeLog:
|
||||
@node PowerPC
|
||||
@subsection PowerPC
|
||||
@cindex PowerPC architecture
|
||||
@@ -28394,6 +28421,7 @@ are explained further below.
|
||||
@@ -28801,6 +28828,7 @@ are explained further below.
|
||||
<!DOCTYPE target SYSTEM "gdb-target.dtd">
|
||||
<target version="1.0">
|
||||
@r{[}@var{architecture}@r{]}
|
||||
@ -796,7 +797,7 @@ doc/ChangeLog:
|
||||
@r{[}@var{feature}@dots{}@r{]}
|
||||
</target>
|
||||
@end smallexample
|
||||
@@ -28445,9 +28473,33 @@ An @samp{<architecture>} element has thi
|
||||
@@ -28852,9 +28880,33 @@ An @samp{<architecture>} element has thi
|
||||
<architecture>@var{arch}</architecture>
|
||||
@end smallexample
|
||||
|
||||
@ -1252,7 +1253,7 @@ doc/ChangeLog:
|
||||
+</target>
|
||||
--- gdb/findvar.c
|
||||
+++ gdb/findvar.c
|
||||
@@ -308,13 +308,15 @@ value_of_register_lazy (struct frame_inf
|
||||
@@ -309,13 +309,15 @@ value_of_register_lazy (struct frame_inf
|
||||
/* Given a pointer of type TYPE in target form in BUF, return the
|
||||
address it represents. */
|
||||
CORE_ADDR
|
||||
@ -1270,7 +1271,7 @@ doc/ChangeLog:
|
||||
{
|
||||
return extract_signed_integer (buf, TYPE_LENGTH (type));
|
||||
}
|
||||
@@ -322,14 +324,15 @@ signed_pointer_to_address (struct type *
|
||||
@@ -323,14 +325,15 @@ signed_pointer_to_address (struct type *
|
||||
/* Given an address, store it as a pointer of type TYPE in target
|
||||
format in BUF. */
|
||||
void
|
||||
@ -1502,7 +1503,7 @@ doc/ChangeLog:
|
||||
/* We retrieve the frame's symtab by using the frame PC. However
|
||||
we cannot use the frame PC as-is, because it usually points to
|
||||
the instruction following the "call", which is sometimes the
|
||||
@@ -1723,9 +1747,17 @@ enum frame_type
|
||||
@@ -1721,9 +1745,17 @@ enum frame_type
|
||||
get_frame_type (struct frame_info *frame)
|
||||
{
|
||||
if (frame->unwind == NULL)
|
||||
@ -1523,7 +1524,7 @@ doc/ChangeLog:
|
||||
return frame->unwind->type;
|
||||
}
|
||||
|
||||
@@ -1792,12 +1824,48 @@ safe_frame_unwind_memory (struct frame_i
|
||||
@@ -1790,17 +1822,48 @@ safe_frame_unwind_memory (struct frame_i
|
||||
return !target_read_memory (addr, buf, len);
|
||||
}
|
||||
|
||||
@ -1533,7 +1534,10 @@ doc/ChangeLog:
|
||||
struct gdbarch *
|
||||
get_frame_arch (struct frame_info *this_frame)
|
||||
{
|
||||
- return current_gdbarch;
|
||||
- /* In the future, this function will return a per-frame
|
||||
- architecture instead of current_gdbarch. Calling the
|
||||
- routine with a NULL value of this_frame is a bug! */
|
||||
- gdb_assert (this_frame);
|
||||
+ return frame_arch_unwind (this_frame->next);
|
||||
+}
|
||||
+
|
||||
@ -1569,7 +1573,8 @@ doc/ChangeLog:
|
||||
+
|
||||
+ do_cleanups (old_chain);
|
||||
+ }
|
||||
+
|
||||
|
||||
- return current_gdbarch;
|
||||
+ return next_frame->prev_arch.arch;
|
||||
}
|
||||
|
||||
@ -1828,7 +1833,7 @@ doc/ChangeLog:
|
||||
/* The architecture initialization hasn't completed - punt -
|
||||
--- gdb/gdbserver/Makefile.in
|
||||
+++ gdb/gdbserver/Makefile.in
|
||||
@@ -214,8 +214,8 @@ clean:
|
||||
@@ -207,8 +207,8 @@ clean:
|
||||
rm -f reg-cris.c reg-crisv32.c reg-x86-64-linux.c reg-xtensa.c
|
||||
rm -f arm-with-iwmmxt.c mips-linux.c mips64-linux.c
|
||||
rm -f powerpc-32l.c powerpc-64l.c powerpc-e500l.c
|
||||
@ -1839,7 +1844,7 @@ doc/ChangeLog:
|
||||
rm -f powerpc-isa205-32l.c powerpc-isa205-64l.c
|
||||
rm -f powerpc-isa205-altivec32l.c powerpc-isa205-vsx32l.c powerpc-isa205-altivec64l.c
|
||||
rm -f powerpc-isa205-vsx64l.c
|
||||
@@ -363,6 +363,9 @@ powerpc-32l.c : $(srcdir)/../regformats/
|
||||
@@ -356,6 +356,9 @@ powerpc-32l.c : $(srcdir)/../regformats/
|
||||
powerpc-altivec32l.o : powerpc-altivec32l.c $(regdef_h)
|
||||
powerpc-altivec32l.c : $(srcdir)/../regformats/rs6000/powerpc-altivec32l.dat $(regdat_sh)
|
||||
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-altivec32l.dat powerpc-altivec32l.c
|
||||
@ -1849,7 +1854,7 @@ doc/ChangeLog:
|
||||
powerpc-vsx32l.o : powerpc-vsx32l.c $(regdef_h)
|
||||
powerpc-vsx32l.c : $(srcdir)/../regformats/rs6000/powerpc-vsx32l.dat $(regdat_sh)
|
||||
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-vsx32l.dat powerpc-vsx32l.c
|
||||
@@ -384,6 +387,9 @@ powerpc-64l.c : $(srcdir)/../regformats/
|
||||
@@ -377,6 +380,9 @@ powerpc-64l.c : $(srcdir)/../regformats/
|
||||
powerpc-altivec64l.o : powerpc-altivec64l.c $(regdef_h)
|
||||
powerpc-altivec64l.c : $(srcdir)/../regformats/rs6000/powerpc-altivec64l.dat $(regdat_sh)
|
||||
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-altivec64l.dat powerpc-altivec64l.c
|
||||
@ -1887,24 +1892,24 @@ doc/ChangeLog:
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec64l.xml"
|
||||
--- gdb/gdbserver/linux-low.c
|
||||
+++ gdb/gdbserver/linux-low.c
|
||||
@@ -33,6 +33,14 @@
|
||||
#include <errno.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <sched.h>
|
||||
+#include <sys/types.h>
|
||||
@@ -36,8 +36,14 @@
|
||||
#include <ctype.h>
|
||||
#include <pwd.h>
|
||||
#include <sys/types.h>
|
||||
+#include <sys/stat.h>
|
||||
+#include <sys/vfs.h>
|
||||
+#include <dirent.h>
|
||||
+
|
||||
#include <dirent.h>
|
||||
|
||||
+#ifndef SPUFS_MAGIC
|
||||
+#define SPUFS_MAGIC 0x23c9b64e
|
||||
+#endif
|
||||
|
||||
+
|
||||
#ifndef PTRACE_GETSIGINFO
|
||||
# define PTRACE_GETSIGINFO 0x4202
|
||||
@@ -2049,6 +2057,102 @@ linux_read_offsets (CORE_ADDR *text_p, C
|
||||
# define PTRACE_SETSIGINFO 0x4203
|
||||
@@ -2180,6 +2186,102 @@ linux_qxfer_osdata (const char *annex,
|
||||
return len;
|
||||
}
|
||||
#endif
|
||||
|
||||
+
|
||||
+/* Enumerate spufs IDs for process PID. */
|
||||
@ -2005,15 +2010,15 @@ doc/ChangeLog:
|
||||
static struct target_ops linux_target_ops = {
|
||||
linux_create_inferior,
|
||||
linux_attach,
|
||||
@@ -2079,7 +2183,7 @@ static struct target_ops linux_target_op
|
||||
@@ -2210,7 +2312,7 @@ static struct target_ops linux_target_op
|
||||
#else
|
||||
NULL,
|
||||
#endif
|
||||
- NULL,
|
||||
+ linux_spu_qxfer_partial,
|
||||
hostio_last_error_from_errno,
|
||||
linux_qxfer_osdata,
|
||||
};
|
||||
|
||||
--- gdb/gdbserver/linux-ppc-low.c
|
||||
+++ gdb/gdbserver/linux-ppc-low.c
|
||||
@@ -28,6 +28,7 @@
|
||||
@ -2187,7 +2192,7 @@ doc/ChangeLog:
|
||||
|
||||
--- gdb/i386-nat.c
|
||||
+++ gdb/i386-nat.c
|
||||
@@ -640,14 +640,14 @@ i386_insert_hw_breakpoint (struct bp_tar
|
||||
@@ -641,14 +641,14 @@ i386_insert_hw_breakpoint (struct bp_tar
|
||||
}
|
||||
|
||||
/* Remove a hardware-assisted breakpoint at BP_TGT->placed_address.
|
||||
@ -2206,7 +2211,7 @@ doc/ChangeLog:
|
||||
i386_show_dr ("remove_hwbp", addr, 1, hw_execute);
|
||||
--- gdb/inferior.h
|
||||
+++ gdb/inferior.h
|
||||
@@ -146,13 +146,17 @@ extern CORE_ADDR read_pc (void);
|
||||
@@ -142,13 +142,17 @@ extern CORE_ADDR read_pc (void);
|
||||
|
||||
extern void write_pc (CORE_ADDR);
|
||||
|
||||
@ -2230,7 +2235,7 @@ doc/ChangeLog:
|
||||
extern void wait_for_inferior (int treat_exec_as_sigtrap);
|
||||
--- gdb/iq2000-tdep.c
|
||||
+++ gdb/iq2000-tdep.c
|
||||
@@ -86,7 +86,8 @@ insn_addr_from_ptr (CORE_ADDR ptr) /* ta
|
||||
@@ -87,7 +87,8 @@ insn_addr_from_ptr (CORE_ADDR ptr) /* ta
|
||||
Convert a target pointer to an address in host (CORE_ADDR) format. */
|
||||
|
||||
static CORE_ADDR
|
||||
@ -2240,7 +2245,7 @@ doc/ChangeLog:
|
||||
{
|
||||
enum type_code target = TYPE_CODE (TYPE_TARGET_TYPE (type));
|
||||
CORE_ADDR addr = extract_unsigned_integer (buf, TYPE_LENGTH (type));
|
||||
@@ -103,7 +104,8 @@ iq2000_pointer_to_address (struct type *
|
||||
@@ -104,7 +105,8 @@ iq2000_pointer_to_address (struct type *
|
||||
Convert a host-format address (CORE_ADDR) into a target pointer. */
|
||||
|
||||
static void
|
||||
@ -2252,10 +2257,10 @@ doc/ChangeLog:
|
||||
|
||||
--- gdb/linux-nat.c
|
||||
+++ gdb/linux-nat.c
|
||||
@@ -49,6 +49,12 @@
|
||||
#include "inf-loop.h"
|
||||
#include "event-loop.h"
|
||||
#include "event-top.h"
|
||||
@@ -53,6 +53,12 @@
|
||||
#include <sys/types.h>
|
||||
#include "gdb_dirent.h"
|
||||
#include "xml-support.h"
|
||||
+#include <sys/vfs.h> /* for struct statfs */
|
||||
+#include <dirent.h> /* for DIR etc. */
|
||||
+
|
||||
@ -2265,7 +2270,7 @@ doc/ChangeLog:
|
||||
|
||||
#ifdef HAVE_PERSONALITY
|
||||
# include <sys/personality.h>
|
||||
@@ -3411,8 +3417,8 @@ linux_nat_do_thread_registers (bfd *obfd
|
||||
@@ -3429,8 +3435,8 @@ linux_nat_do_thread_registers (bfd *obfd
|
||||
gdb_gregset_t gregs;
|
||||
gdb_fpregset_t fpregs;
|
||||
unsigned long lwp = ptid_get_lwp (ptid);
|
||||
@ -2276,7 +2281,7 @@ doc/ChangeLog:
|
||||
const struct regset *regset;
|
||||
int core_regset_p;
|
||||
struct cleanup *old_chain;
|
||||
@@ -3522,6 +3528,119 @@ linux_nat_corefile_thread_callback (stru
|
||||
@@ -3540,6 +3546,119 @@ linux_nat_corefile_thread_callback (stru
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2396,7 +2401,7 @@ doc/ChangeLog:
|
||||
/* Fills the "to_make_corefile_note" target vector. Builds the note
|
||||
section for a corefile, and returns it in a malloc buffer. */
|
||||
|
||||
@@ -3582,6 +3701,8 @@ linux_nat_make_corefile_notes (bfd *obfd
|
||||
@@ -3600,6 +3719,8 @@ linux_nat_make_corefile_notes (bfd *obfd
|
||||
xfree (auxv);
|
||||
}
|
||||
|
||||
@ -2405,7 +2410,7 @@ doc/ChangeLog:
|
||||
make_cleanup (xfree, note_data);
|
||||
return note_data;
|
||||
}
|
||||
@@ -3911,6 +4032,99 @@ linux_proc_xfer_partial (struct target_o
|
||||
@@ -3931,6 +4052,99 @@ linux_proc_xfer_partial (struct target_o
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -2505,9 +2510,9 @@ doc/ChangeLog:
|
||||
/* Parse LINE as a signal set and add its set bits to SIGS. */
|
||||
|
||||
static void
|
||||
@@ -4005,6 +4219,10 @@ linux_xfer_partial (struct target_ops *o
|
||||
return procfs_xfer_auxv (ops, object, annex, readbuf, writebuf,
|
||||
offset, len);
|
||||
@@ -4136,6 +4350,10 @@ linux_xfer_partial (struct target_ops *o
|
||||
return linux_nat_xfer_osdata (ops, object, annex, readbuf, writebuf,
|
||||
offset, len);
|
||||
|
||||
+ if (object == TARGET_OBJECT_SPU)
|
||||
+ return linux_proc_xfer_spu (ops, object, annex, readbuf, writebuf,
|
||||
@ -2518,7 +2523,7 @@ doc/ChangeLog:
|
||||
if (xfer != 0)
|
||||
--- gdb/m32c-tdep.c
|
||||
+++ gdb/m32c-tdep.c
|
||||
@@ -2397,7 +2397,8 @@ m32c_skip_trampoline_code (struct frame_
|
||||
@@ -2401,7 +2401,8 @@ m32c_skip_trampoline_code (struct frame_
|
||||
programmer! :) */
|
||||
|
||||
static void
|
||||
@ -2528,7 +2533,7 @@ doc/ChangeLog:
|
||||
{
|
||||
enum type_code target_code;
|
||||
gdb_assert (TYPE_CODE (type) == TYPE_CODE_PTR ||
|
||||
@@ -2445,7 +2446,8 @@ m32c_m16c_address_to_pointer (struct typ
|
||||
@@ -2449,7 +2450,8 @@ m32c_m16c_address_to_pointer (struct typ
|
||||
|
||||
|
||||
static CORE_ADDR
|
||||
@ -3066,7 +3071,7 @@ doc/ChangeLog:
|
||||
val_long &= ((LONGEST) 1 << HOST_CHAR_BIT * len) - 1;
|
||||
--- gdb/proc-service.c
|
||||
+++ gdb/proc-service.c
|
||||
@@ -257,7 +257,7 @@ ps_lgetregs (gdb_ps_prochandle_t ph, lwp
|
||||
@@ -258,7 +258,7 @@ ps_lgetregs (gdb_ps_prochandle_t ph, lwp
|
||||
struct regcache *regcache;
|
||||
|
||||
inferior_ptid = BUILD_LWP (lwpid, ph->pid);
|
||||
@ -3075,7 +3080,7 @@ doc/ChangeLog:
|
||||
|
||||
target_fetch_registers (regcache, -1);
|
||||
fill_gregset (regcache, (gdb_gregset_t *) gregset, -1);
|
||||
@@ -276,7 +276,7 @@ ps_lsetregs (gdb_ps_prochandle_t ph, lwp
|
||||
@@ -277,7 +277,7 @@ ps_lsetregs (gdb_ps_prochandle_t ph, lwp
|
||||
struct regcache *regcache;
|
||||
|
||||
inferior_ptid = BUILD_LWP (lwpid, ph->pid);
|
||||
@ -3084,7 +3089,7 @@ doc/ChangeLog:
|
||||
|
||||
supply_gregset (regcache, (const gdb_gregset_t *) gregset);
|
||||
target_store_registers (regcache, -1);
|
||||
@@ -296,7 +296,7 @@ ps_lgetfpregs (gdb_ps_prochandle_t ph, l
|
||||
@@ -297,7 +297,7 @@ ps_lgetfpregs (gdb_ps_prochandle_t ph, l
|
||||
struct regcache *regcache;
|
||||
|
||||
inferior_ptid = BUILD_LWP (lwpid, ph->pid);
|
||||
@ -3093,7 +3098,7 @@ doc/ChangeLog:
|
||||
|
||||
target_fetch_registers (regcache, -1);
|
||||
fill_fpregset (regcache, (gdb_fpregset_t *) fpregset, -1);
|
||||
@@ -316,7 +316,7 @@ ps_lsetfpregs (gdb_ps_prochandle_t ph, l
|
||||
@@ -317,7 +317,7 @@ ps_lsetfpregs (gdb_ps_prochandle_t ph, l
|
||||
struct regcache *regcache;
|
||||
|
||||
inferior_ptid = BUILD_LWP (lwpid, ph->pid);
|
||||
@ -3486,7 +3491,7 @@ doc/ChangeLog:
|
||||
+32:vrsave
|
||||
--- gdb/remote.c
|
||||
+++ gdb/remote.c
|
||||
@@ -6747,7 +6747,7 @@ remote_insert_breakpoint (struct bp_targ
|
||||
@@ -6781,7 +6781,7 @@ remote_insert_breakpoint (struct bp_targ
|
||||
switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_Z0]))
|
||||
{
|
||||
case PACKET_ERROR:
|
||||
@ -3495,7 +3500,7 @@ doc/ChangeLog:
|
||||
case PACKET_OK:
|
||||
bp_tgt->placed_address = addr;
|
||||
bp_tgt->placed_size = bpsize;
|
||||
@@ -6934,7 +6934,7 @@ remote_insert_hw_breakpoint (struct bp_t
|
||||
@@ -6968,7 +6968,7 @@ remote_insert_hw_breakpoint (struct bp_t
|
||||
(target_gdbarch, &bp_tgt->placed_address, &bp_tgt->placed_size);
|
||||
|
||||
if (remote_protocol_packets[PACKET_Z1].support == PACKET_DISABLE)
|
||||
@ -3504,7 +3509,7 @@ doc/ChangeLog:
|
||||
|
||||
rs = get_remote_state ();
|
||||
p = rs->buf;
|
||||
@@ -6954,7 +6954,7 @@ remote_insert_hw_breakpoint (struct bp_t
|
||||
@@ -6988,7 +6988,7 @@ remote_insert_hw_breakpoint (struct bp_t
|
||||
{
|
||||
case PACKET_ERROR:
|
||||
case PACKET_UNKNOWN:
|
||||
@ -3513,7 +3518,7 @@ doc/ChangeLog:
|
||||
case PACKET_OK:
|
||||
return 0;
|
||||
}
|
||||
@@ -6971,7 +6971,7 @@ remote_remove_hw_breakpoint (struct bp_t
|
||||
@@ -7005,7 +7005,7 @@ remote_remove_hw_breakpoint (struct bp_t
|
||||
char *p = rs->buf;
|
||||
|
||||
if (remote_protocol_packets[PACKET_Z1].support == PACKET_DISABLE)
|
||||
@ -3522,7 +3527,7 @@ doc/ChangeLog:
|
||||
|
||||
*(p++) = 'z';
|
||||
*(p++) = '1';
|
||||
@@ -6988,7 +6988,7 @@ remote_remove_hw_breakpoint (struct bp_t
|
||||
@@ -7022,7 +7022,7 @@ remote_remove_hw_breakpoint (struct bp_t
|
||||
{
|
||||
case PACKET_ERROR:
|
||||
case PACKET_UNKNOWN:
|
||||
@ -4079,7 +4084,7 @@ doc/ChangeLog:
|
||||
+
|
||||
--- gdb/solib.c
|
||||
+++ gdb/solib.c
|
||||
@@ -311,15 +311,22 @@ static int
|
||||
@@ -345,15 +345,22 @@ static int
|
||||
solib_map_sections (void *arg)
|
||||
{
|
||||
struct so_list *so = (struct so_list *) arg; /* catch_errors bogon */
|
||||
@ -4107,7 +4112,7 @@ doc/ChangeLog:
|
||||
|
||||
/* Leave bfd open, core_xfer_memory and "info files" need it. */
|
||||
so->abfd = abfd;
|
||||
@@ -338,8 +345,6 @@ solib_map_sections (void *arg)
|
||||
@@ -372,8 +379,6 @@ solib_map_sections (void *arg)
|
||||
|
||||
for (p = so->sections; p < so->sections_end; p++)
|
||||
{
|
||||
@ -4116,7 +4121,7 @@ doc/ChangeLog:
|
||||
/* Relocate the section binding addresses as recorded in the shared
|
||||
object's file by the base address to which the object was actually
|
||||
mapped. */
|
||||
@@ -420,7 +425,9 @@ static int
|
||||
@@ -454,7 +459,9 @@ static int
|
||||
symbol_add_stub (void *arg)
|
||||
{
|
||||
struct so_list *so = (struct so_list *) arg; /* catch_errs bogon */
|
||||
@ -4126,30 +4131,9 @@ doc/ChangeLog:
|
||||
|
||||
/* Have we already loaded this shared object? */
|
||||
ALL_OBJFILES (so->objfile)
|
||||
@@ -429,11 +436,18 @@ symbol_add_stub (void *arg)
|
||||
return 1;
|
||||
}
|
||||
|
||||
+ /* Open a second BFD for this file. */
|
||||
+ if (ops->open_bfd)
|
||||
+ abfd = ops->open_bfd (so->so_name);
|
||||
+
|
||||
+ if (!abfd)
|
||||
+ abfd = symfile_bfd_open (so->so_name);
|
||||
+
|
||||
sap = build_section_addr_info_from_section_table (so->sections,
|
||||
so->sections_end);
|
||||
|
||||
- so->objfile = symbol_file_add (so->so_name, so->from_tty,
|
||||
- sap, 0, OBJF_SHARED);
|
||||
+ so->objfile = symbol_file_add_from_bfd (abfd, so->from_tty,
|
||||
+ sap, 0, OBJF_SHARED);
|
||||
free_section_addr_info (sap);
|
||||
|
||||
return (1);
|
||||
--- gdb/solist.h
|
||||
+++ gdb/solist.h
|
||||
@@ -118,6 +118,10 @@ struct target_so_ops
|
||||
@@ -121,6 +121,10 @@ struct target_so_ops
|
||||
and another from the list returned by current_sos, return 1
|
||||
if they represent the same library. */
|
||||
int (*same) (struct so_list *gdb, struct so_list *inferior);
|
||||
@ -5444,7 +5428,7 @@ doc/ChangeLog:
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1440,6 +1458,7 @@ static void
|
||||
@@ -1435,6 +1453,7 @@ static void
|
||||
print_frame_local_vars (struct frame_info *frame, int num_tabs,
|
||||
struct ui_file *stream)
|
||||
{
|
||||
@ -5452,7 +5436,7 @@ doc/ChangeLog:
|
||||
struct block *block = get_frame_block (frame, 0);
|
||||
int values_printed = 0;
|
||||
|
||||
@@ -1449,6 +1468,9 @@ print_frame_local_vars (struct frame_inf
|
||||
@@ -1444,6 +1463,9 @@ print_frame_local_vars (struct frame_inf
|
||||
return;
|
||||
}
|
||||
|
||||
@ -5462,7 +5446,7 @@ doc/ChangeLog:
|
||||
while (block)
|
||||
{
|
||||
if (print_block_frame_locals (block, frame, num_tabs, stream))
|
||||
@@ -1462,6 +1484,8 @@ print_frame_local_vars (struct frame_inf
|
||||
@@ -1457,6 +1479,8 @@ print_frame_local_vars (struct frame_inf
|
||||
|
||||
if (!values_printed)
|
||||
fprintf_filtered (stream, _("No locals.\n"));
|
||||
@ -5641,7 +5625,7 @@ doc/ChangeLog:
|
||||
current_target.to_read_description = NULL;
|
||||
de_fault (to_get_ada_task_ptid,
|
||||
(ptid_t (*) (long, long))
|
||||
@@ -2098,7 +2104,8 @@ target_require_runnable (void)
|
||||
@@ -2099,7 +2105,8 @@ target_require_runnable (void)
|
||||
/* Do not worry about thread_stratum targets that can not
|
||||
create inferiors. Assume they will be pushed again if
|
||||
necessary, and continue to the process_stratum. */
|
||||
@ -5651,7 +5635,7 @@ doc/ChangeLog:
|
||||
continue;
|
||||
|
||||
error (_("\
|
||||
@@ -2238,6 +2245,12 @@ default_watchpoint_addr_within_range (st
|
||||
@@ -2259,6 +2266,12 @@ default_watchpoint_addr_within_range (st
|
||||
return addr >= start && addr < start + length;
|
||||
}
|
||||
|
||||
@ -5664,7 +5648,7 @@ doc/ChangeLog:
|
||||
static int
|
||||
return_zero (void)
|
||||
{
|
||||
@@ -3131,6 +3144,19 @@ debug_to_find_new_threads (void)
|
||||
@@ -3148,6 +3161,19 @@ debug_to_find_new_threads (void)
|
||||
fputs_unfiltered ("target_find_new_threads ()\n", gdb_stdlog);
|
||||
}
|
||||
|
||||
@ -5684,7 +5668,7 @@ doc/ChangeLog:
|
||||
static void
|
||||
debug_to_stop (ptid_t ptid)
|
||||
{
|
||||
@@ -3216,6 +3242,7 @@ setup_target_debug (void)
|
||||
@@ -3233,6 +3259,7 @@ setup_target_debug (void)
|
||||
current_target.to_stop = debug_to_stop;
|
||||
current_target.to_rcmd = debug_to_rcmd;
|
||||
current_target.to_pid_to_exec_file = debug_to_pid_to_exec_file;
|
||||
@ -5704,7 +5688,7 @@ doc/ChangeLog:
|
||||
};
|
||||
|
||||
enum thread_control_capabilities
|
||||
@@ -541,6 +542,9 @@ struct target_ops
|
||||
@@ -535,6 +536,9 @@ struct target_ops
|
||||
simultaneously? */
|
||||
int (*to_supports_multi_process) (void);
|
||||
|
||||
@ -5714,7 +5698,7 @@ doc/ChangeLog:
|
||||
int to_magic;
|
||||
/* Need sub-structure for target machine related rather than comm related?
|
||||
*/
|
||||
@@ -1046,6 +1050,11 @@ extern char *normal_pid_to_str (ptid_t p
|
||||
@@ -1040,6 +1044,11 @@ extern char *normal_pid_to_str (ptid_t p
|
||||
#define target_pid_to_exec_file(pid) \
|
||||
(current_target.to_pid_to_exec_file) (pid)
|
||||
|
||||
@ -5762,7 +5746,7 @@ doc/ChangeLog:
|
||||
# If no core registers were specified, assume this target does not
|
||||
--- gdb/thread.c
|
||||
+++ gdb/thread.c
|
||||
@@ -766,6 +766,7 @@ switch_to_thread (ptid_t ptid)
|
||||
@@ -767,6 +767,7 @@ switch_to_thread (ptid_t ptid)
|
||||
inferior_ptid = ptid;
|
||||
reinit_frame_cache ();
|
||||
registers_changed ();
|
||||
@ -5772,7 +5756,7 @@ doc/ChangeLog:
|
||||
while in the TARGET_RUNNING state, e.g., while handling an
|
||||
--- gdb/utils.c
|
||||
+++ gdb/utils.c
|
||||
@@ -3021,7 +3021,6 @@ core_addr_to_string_nz (const CORE_ADDR
|
||||
@@ -3022,7 +3022,6 @@ core_addr_to_string_nz (const CORE_ADDR
|
||||
CORE_ADDR
|
||||
string_to_core_addr (const char *my_string)
|
||||
{
|
||||
@ -5780,7 +5764,7 @@ doc/ChangeLog:
|
||||
CORE_ADDR addr = 0;
|
||||
|
||||
if (my_string[0] == '0' && tolower (my_string[1]) == 'x')
|
||||
@@ -3037,17 +3036,6 @@ string_to_core_addr (const char *my_stri
|
||||
@@ -3038,17 +3037,6 @@ string_to_core_addr (const char *my_stri
|
||||
else
|
||||
error (_("invalid hex \"%s\""), my_string);
|
||||
}
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5a564086f0390d441d85fdaaf8785135c342a789d0ffd9cb71023b8e33c065e4
|
||||
size 15657706
|
3
gdb-6.8.50.20090116-cvs.tar.bz2
Normal file
3
gdb-6.8.50.20090116-cvs.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e84512926cedd10534ba70bff7466eb63ab9ec352b5b8440a7da9fe4690d7fbc
|
||||
size 15819175
|
11
gdb.changes
11
gdb.changes
@ -1,3 +1,14 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Jan 16 16:02:56 CET 2009 - schwab@suse.de
|
||||
|
||||
- Update to head of trunk.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jan 16 15:30:23 CET 2009 - bwalle@suse.de
|
||||
|
||||
- Recommend Python for GDB to prevent strange error messages to
|
||||
be presented to the user in the default case.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Dec 10 12:34:56 CET 2008 - olh@suse.de
|
||||
|
||||
|
20
gdb.spec
20
gdb.spec
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package gdb (Version 6.8.50.20081120)
|
||||
# spec file for package gdb (Version 6.8.50.20090116)
|
||||
#
|
||||
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -19,8 +19,8 @@
|
||||
|
||||
Name: gdb
|
||||
Summary: The GNU Debugger
|
||||
Version: 6.8.50.20081120
|
||||
Release: 2
|
||||
Version: 6.8.50.20090116
|
||||
Release: 1
|
||||
BuildRequires: bison dejagnu flex gcc-c++ gcc-fortran gcc-java gcc-objc python-devel readline-devel zlib-devel
|
||||
%if 0%{?suse_version} > 1020
|
||||
BuildRequires: libexpat-devel
|
||||
@ -33,6 +33,7 @@ BuildRequires: libunwind-devel
|
||||
%ifnarch ppc64 s390x
|
||||
BuildRequires: gcc-ada
|
||||
%endif
|
||||
Recommends: python
|
||||
Url: http://www.gnu.org/software/gdb/
|
||||
License: GNU Free Documentation License, Version 1.2 (GFDL 1.2); GPL v2 or later; GPL v3 or later
|
||||
Group: Development/Tools/Debuggers
|
||||
@ -53,9 +54,6 @@ Patch7: pie-relocate.diff
|
||||
Patch8: find-separate-debug-file.diff
|
||||
Patch9: fix-gdb-backtrace.diff
|
||||
Patch10: expand-line-sal-maybe.diff
|
||||
Patch11: startup-inferior.diff
|
||||
Patch12: resume.diff
|
||||
Patch13: testsuite.diff
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
|
||||
%description
|
||||
@ -125,9 +123,6 @@ Authors:
|
||||
%patch8
|
||||
%patch9
|
||||
%patch10
|
||||
%patch11
|
||||
%patch12
|
||||
%patch13
|
||||
|
||||
%build
|
||||
%ifarch %ix86 ia64 ppc ppc64 s390 s390x x86_64
|
||||
@ -204,6 +199,11 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Fri Jan 16 2009 schwab@suse.de
|
||||
- Update to head of trunk.
|
||||
* Fri Jan 16 2009 bwalle@suse.de
|
||||
- Recommend Python for GDB to prevent strange error messages to
|
||||
be presented to the user in the default case.
|
||||
* Wed Dec 10 2008 olh@suse.de
|
||||
- use Obsoletes: -XXbit only for ppc64 to help solver during distupgrade
|
||||
(bnc#437293)
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- gdb/breakpoint.c
|
||||
+++ gdb/breakpoint.c
|
||||
@@ -4125,6 +4125,7 @@ describe_other_breakpoints (CORE_ADDR pc
|
||||
@@ -3876,6 +3876,7 @@ describe_other_breakpoints (CORE_ADDR pc
|
||||
printf_filtered (" (thread %d)", b->thread);
|
||||
printf_filtered ("%s%s ",
|
||||
((b->enable_state == bp_disabled ||
|
||||
@ -8,7 +8,7 @@
|
||||
b->enable_state == bp_call_disabled)
|
||||
? " (disabled)"
|
||||
: b->enable_state == bp_permanent
|
||||
@@ -4200,6 +4201,7 @@ check_duplicates_for (CORE_ADDR address,
|
||||
@@ -3947,6 +3948,7 @@ check_duplicates_for (CORE_ADDR address,
|
||||
ALL_BP_LOCATIONS (b)
|
||||
if (b->owner->enable_state != bp_disabled
|
||||
&& b->owner->enable_state != bp_call_disabled
|
||||
@ -16,7 +16,7 @@
|
||||
&& b->enabled
|
||||
&& !b->shlib_disabled
|
||||
&& b->address == address /* address / overlay match */
|
||||
@@ -4235,6 +4237,7 @@ check_duplicates_for (CORE_ADDR address,
|
||||
@@ -3982,6 +3984,7 @@ check_duplicates_for (CORE_ADDR address,
|
||||
{
|
||||
if (b->owner->enable_state != bp_disabled
|
||||
&& b->owner->enable_state != bp_call_disabled
|
||||
@ -24,8 +24,8 @@
|
||||
&& b->enabled && !b->shlib_disabled
|
||||
&& b->address == address /* address / overlay match */
|
||||
&& (!overlay_debugging || b->section == section)
|
||||
@@ -4766,6 +4769,60 @@ disable_breakpoints_in_unloaded_shlib (s
|
||||
}
|
||||
@@ -4707,6 +4710,60 @@ create_catchpoint (int tempflag, char *c
|
||||
return b;
|
||||
}
|
||||
|
||||
+void
|
||||
@ -84,8 +84,8 @@
|
||||
+
|
||||
static void
|
||||
create_fork_vfork_event_catchpoint (int tempflag, char *cond_string,
|
||||
enum bptype bp_kind)
|
||||
@@ -7561,6 +7618,7 @@ breakpoint_re_set_one (void *bint)
|
||||
struct breakpoint_ops *ops)
|
||||
@@ -7435,6 +7492,7 @@ breakpoint_re_set_one (void *bint)
|
||||
if (not_found
|
||||
&& (b->condition_not_parsed
|
||||
|| (b->loc && b->loc->shlib_disabled)
|
||||
@ -95,7 +95,7 @@
|
||||
|
||||
--- gdb/breakpoint.h
|
||||
+++ gdb/breakpoint.h
|
||||
@@ -142,6 +142,7 @@ enum enable_state
|
||||
@@ -126,6 +126,7 @@ enum enable_state
|
||||
automatically enabled and reset when the call
|
||||
"lands" (either completes, or stops at another
|
||||
eventpoint). */
|
||||
@ -103,7 +103,7 @@
|
||||
bp_permanent /* There is a breakpoint instruction hard-wired into
|
||||
the target's code. Don't try to write another
|
||||
breakpoint instruction on top of it, or restore
|
||||
@@ -843,6 +844,10 @@ extern void remove_thread_event_breakpoi
|
||||
@@ -820,6 +821,10 @@ extern void remove_thread_event_breakpoi
|
||||
|
||||
extern void disable_breakpoints_in_shlibs (void);
|
||||
|
||||
@ -116,7 +116,7 @@
|
||||
|
||||
--- gdb/dwarf2read.c
|
||||
+++ gdb/dwarf2read.c
|
||||
@@ -1258,7 +1258,7 @@ dwarf2_build_psymtabs (struct objfile *o
|
||||
@@ -1285,7 +1285,7 @@ dwarf2_build_psymtabs (struct objfile *o
|
||||
else
|
||||
dwarf2_per_objfile->loc_buffer = NULL;
|
||||
|
||||
@ -138,7 +138,7 @@
|
||||
mainline = 0;
|
||||
--- gdb/ia64-tdep.c
|
||||
+++ gdb/ia64-tdep.c
|
||||
@@ -3243,8 +3243,13 @@ ia64_convert_from_func_ptr_addr (struct
|
||||
@@ -3361,8 +3361,13 @@ ia64_convert_from_func_ptr_addr (struct
|
||||
the target address itself points to a section that is executable. */
|
||||
if (s && (s->the_bfd_section->flags & SEC_CODE) == 0)
|
||||
{
|
||||
@ -156,7 +156,7 @@
|
||||
return pc;
|
||||
--- gdb/infrun.c
|
||||
+++ gdb/infrun.c
|
||||
@@ -1972,6 +1972,11 @@ handle_inferior_event (struct execution_
|
||||
@@ -2233,6 +2233,11 @@ handle_inferior_event (struct execution_
|
||||
#endif
|
||||
target_terminal_inferior ();
|
||||
|
||||
@ -168,7 +168,7 @@
|
||||
/* If requested, stop when the dynamic linker notifies
|
||||
gdb of events. This allows the user to get control
|
||||
and place breakpoints in initializer routines for
|
||||
@@ -2896,6 +2901,11 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
|
||||
@@ -3193,6 +3198,11 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
|
||||
#endif
|
||||
target_terminal_inferior ();
|
||||
|
||||
@ -211,7 +211,7 @@
|
||||
/* Create the terminating entry of OBJFILE's minimal symbol table.
|
||||
--- gdb/solib-svr4.c
|
||||
+++ gdb/solib-svr4.c
|
||||
@@ -31,6 +31,7 @@
|
||||
@@ -32,6 +32,7 @@
|
||||
#include "gdbcore.h"
|
||||
#include "target.h"
|
||||
#include "inferior.h"
|
||||
@ -219,7 +219,7 @@
|
||||
#include "gdbthread.h"
|
||||
|
||||
#include "gdb_assert.h"
|
||||
@@ -286,8 +287,6 @@ static CORE_ADDR main_lm_addr;
|
||||
@@ -287,8 +288,6 @@ static CORE_ADDR main_lm_addr;
|
||||
|
||||
/* Local function prototypes */
|
||||
|
||||
@ -228,7 +228,7 @@
|
||||
static CORE_ADDR bfd_lookup_symbol (bfd *, char *);
|
||||
|
||||
/*
|
||||
@@ -524,6 +523,8 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
|
||||
@@ -525,6 +524,8 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
|
||||
Elf32_External_Dyn *x_dynp_32;
|
||||
Elf64_External_Dyn *x_dynp_64;
|
||||
struct bfd_section *sect;
|
||||
@ -237,7 +237,7 @@
|
||||
|
||||
if (abfd == NULL)
|
||||
return 0;
|
||||
@@ -531,11 +532,20 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
|
||||
@@ -532,11 +533,20 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
|
||||
if (arch_size == -1)
|
||||
return 0;
|
||||
|
||||
@ -258,7 +258,7 @@
|
||||
|
||||
/* Read in .dynamic from the BFD. We will get the actual value
|
||||
from memory later. */
|
||||
@@ -577,7 +587,7 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
|
||||
@@ -578,7 +588,7 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
|
||||
CORE_ADDR ptr_addr;
|
||||
|
||||
ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr;
|
||||
@ -267,7 +267,7 @@
|
||||
if (target_read_memory (ptr_addr, ptr_buf, arch_size / 8) == 0)
|
||||
dyn_ptr = extract_typed_address (ptr_buf, ptr_type);
|
||||
*ptr = dyn_ptr;
|
||||
@@ -983,11 +993,55 @@ svr4_current_sos (void)
|
||||
@@ -984,11 +994,55 @@ svr4_current_sos (void)
|
||||
decide when to ignore it. */
|
||||
if (IGNORE_FIRST_LINK_MAP_ENTRY (new) && ldsomap == 0)
|
||||
{
|
||||
@ -324,7 +324,7 @@
|
||||
int errcode;
|
||||
char *buffer;
|
||||
|
||||
@@ -1005,10 +1059,8 @@ svr4_current_sos (void)
|
||||
@@ -1006,10 +1060,8 @@ svr4_current_sos (void)
|
||||
}
|
||||
xfree (buffer);
|
||||
|
||||
@ -337,7 +337,7 @@
|
||||
free_so (new);
|
||||
else
|
||||
{
|
||||
@@ -1059,24 +1111,6 @@ svr4_fetch_objfile_link_map (struct objf
|
||||
@@ -1060,24 +1112,6 @@ svr4_fetch_objfile_link_map (struct objf
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -362,7 +362,7 @@
|
||||
/* Return 1 if PC lies in the dynamic symbol resolution code of the
|
||||
SVR4 run time loader. */
|
||||
static CORE_ADDR interp_text_sect_low;
|
||||
@@ -1606,6 +1640,8 @@ svr4_solib_create_inferior_hook (void)
|
||||
@@ -1607,6 +1641,8 @@ svr4_solib_create_inferior_hook (void)
|
||||
while (tp->stop_signal != TARGET_SIGNAL_TRAP);
|
||||
inf->stop_soon = NO_STOP_QUIETLY;
|
||||
#endif /* defined(_SCO_DS) */
|
||||
@ -373,7 +373,7 @@
|
||||
static void
|
||||
--- gdb/solib.c
|
||||
+++ gdb/solib.c
|
||||
@@ -432,8 +432,22 @@ symbol_add_stub (void *arg)
|
||||
@@ -466,15 +466,37 @@ symbol_add_stub (void *arg)
|
||||
/* Have we already loaded this shared object? */
|
||||
ALL_OBJFILES (so->objfile)
|
||||
{
|
||||
@ -396,26 +396,25 @@
|
||||
+ return 1;
|
||||
}
|
||||
|
||||
/* Open a second BFD for this file. */
|
||||
@@ -446,8 +460,15 @@ symbol_add_stub (void *arg)
|
||||
sap = build_section_addr_info_from_section_table (so->sections,
|
||||
so->sections_end);
|
||||
|
||||
- so->objfile = symbol_file_add_from_bfd (abfd, so->from_tty,
|
||||
- sap, 0, OBJF_SHARED);
|
||||
- so->objfile = symbol_file_add_from_bfd (so->abfd, so->from_tty,
|
||||
- sap, 0, OBJF_SHARED | OBJF_KEEPBFD);
|
||||
+ if (so->main_p)
|
||||
+ {
|
||||
+ so->objfile = symbol_file_add_from_bfd (abfd, 0, sap, 1, 0);
|
||||
+ so->objfile = symbol_file_add_from_bfd (so->abfd, 0,
|
||||
+ sap, 1, OBJF_KEEPBFD);
|
||||
+ so->main_relocated = 1;
|
||||
+ }
|
||||
+ else
|
||||
+ so->objfile = symbol_file_add_from_bfd (abfd, so->from_tty,
|
||||
+ sap, 0, OBJF_SHARED);
|
||||
+ so->objfile = symbol_file_add_from_bfd (so->abfd, so->from_tty,
|
||||
+ sap, 0, OBJF_SHARED | OBJF_KEEPBFD);
|
||||
+
|
||||
free_section_addr_info (sap);
|
||||
|
||||
return (1);
|
||||
@@ -633,28 +654,7 @@ update_solib_list (int from_tty, struct
|
||||
@@ -660,28 +682,7 @@ update_solib_list (int from_tty, struct
|
||||
/* Fill in the rest of each of the `struct so_list' nodes. */
|
||||
for (i = inferior; i; i = i->next)
|
||||
{
|
||||
@ -445,7 +444,7 @@
|
||||
|
||||
/* Notify any observer that the shared object has been
|
||||
loaded now that we've added it to GDB's tables. */
|
||||
@@ -750,6 +750,39 @@ solib_add (char *pattern, int from_tty,
|
||||
@@ -777,6 +778,39 @@ solib_add (char *pattern, int from_tty,
|
||||
}
|
||||
}
|
||||
|
||||
@ -496,7 +495,7 @@
|
||||
struct objfile *objfile; /* objfile for loaded lib */
|
||||
struct section_table *sections;
|
||||
struct section_table *sections_end;
|
||||
@@ -133,6 +135,10 @@ struct so_list *master_so_list (void);
|
||||
@@ -142,6 +144,10 @@ extern bfd *solib_bfd_fopen (char *pathn
|
||||
/* Find solib binary file and open it. */
|
||||
extern bfd *solib_bfd_open (char *in_pathname);
|
||||
|
||||
@ -538,7 +537,7 @@
|
||||
{
|
||||
asection *lower_sect;
|
||||
asection *sect;
|
||||
@@ -918,14 +918,14 @@ new_symfile_objfile (struct objfile *obj
|
||||
@@ -914,14 +914,14 @@ new_symfile_objfile (struct objfile *obj
|
||||
/* If this is the main symbol file we have to clean up all users of the
|
||||
old main symbol file. Otherwise it is sufficient to fixup all the
|
||||
breakpoints that may have been redefined by this symbol file. */
|
||||
@ -555,7 +554,7 @@
|
||||
{
|
||||
breakpoint_re_set ();
|
||||
}
|
||||
@@ -971,7 +971,7 @@ symbol_file_add_with_addrs_or_offsets (b
|
||||
@@ -967,7 +967,7 @@ symbol_file_add_with_addrs_or_offsets (b
|
||||
interactively wiping out any existing symbols. */
|
||||
|
||||
if ((have_full_symbols () || have_partial_symbols ())
|
||||
@ -564,7 +563,7 @@
|
||||
&& from_tty
|
||||
&& !query ("Load new symbol table from \"%s\"? ", name))
|
||||
error (_("Not confirmed."));
|
||||
@@ -1160,6 +1160,11 @@ symbol_file_clear (int from_tty)
|
||||
@@ -1156,6 +1156,11 @@ symbol_file_clear (int from_tty)
|
||||
symfile_objfile->name)
|
||||
: !query (_("Discard symbol table? "))))
|
||||
error (_("Not confirmed."));
|
||||
@ -576,7 +575,7 @@
|
||||
free_all_objfiles ();
|
||||
|
||||
/* solib descriptors may have handles to objfiles. Since their
|
||||
@@ -2454,6 +2459,8 @@ reread_symbols (void)
|
||||
@@ -2442,6 +2447,8 @@ reread_symbols (void)
|
||||
/* Discard cleanups as symbol reading was successful. */
|
||||
discard_cleanups (old_cleanups);
|
||||
|
||||
|
49
resume.diff
49
resume.diff
@ -1,49 +0,0 @@
|
||||
2008-11-20 Pedro Alves <pedro@codesourcery.com>
|
||||
|
||||
* infrun.c (resume): If following a fork, reread the current
|
||||
thread. Avoid dereferencing a possibly dangling pointer.
|
||||
|
||||
--- gdb/infrun.c
|
||||
+++ gdb/infrun.c
|
||||
@@ -965,10 +965,13 @@ resume (int step, enum target_signal sig
|
||||
{
|
||||
int should_resume = 1;
|
||||
struct cleanup *old_cleanups = make_cleanup (resume_cleanups, 0);
|
||||
+
|
||||
+ /* Note that these must be reset if we follow a fork below. */
|
||||
struct regcache *regcache = get_current_regcache ();
|
||||
struct gdbarch *gdbarch = get_regcache_arch (regcache);
|
||||
struct thread_info *tp = inferior_thread ();
|
||||
CORE_ADDR pc = regcache_read_pc (regcache);
|
||||
+
|
||||
QUIT;
|
||||
|
||||
if (debug_infrun)
|
||||
@@ -1053,6 +1056,13 @@ a command like `return' or `jump' to con
|
||||
pending_follow.kind = TARGET_WAITKIND_SPURIOUS;
|
||||
if (follow_fork ())
|
||||
should_resume = 0;
|
||||
+
|
||||
+ /* Following a child fork will change our notion of current
|
||||
+ thread. */
|
||||
+ tp = inferior_thread ();
|
||||
+ regcache = get_current_regcache ();
|
||||
+ gdbarch = get_regcache_arch (regcache);
|
||||
+ pc = regcache_read_pc (regcache);
|
||||
break;
|
||||
|
||||
case TARGET_WAITKIND_EXECD:
|
||||
@@ -1148,11 +1158,11 @@ a command like `return' or `jump' to con
|
||||
displaced_step_dump_bytes (gdb_stdlog, buf, sizeof (buf));
|
||||
}
|
||||
|
||||
- target_resume (resume_ptid, step, sig);
|
||||
-
|
||||
/* Avoid confusing the next resume, if the next stop/resume
|
||||
happens to apply to another thread. */
|
||||
tp->stop_signal = TARGET_SIGNAL_0;
|
||||
+
|
||||
+ target_resume (resume_ptid, step, sig);
|
||||
}
|
||||
|
||||
discard_cleanups (old_cleanups);
|
@ -1,12 +0,0 @@
|
||||
--- gdb/fork-child.c 10 Nov 2008 11:25:09 +0100 1.47
|
||||
+++ gdb/fork-child.c 20 Nov 2008 14:27:26 +0100
|
||||
@@ -494,6 +494,9 @@ startup_inferior (int ntraps)
|
||||
resume_ptid = pid_to_ptid (-1);
|
||||
else
|
||||
resume_ptid = event_ptid;
|
||||
+ /* Update running state now, in case an error occurs during
|
||||
+ resume. */
|
||||
+ set_running (resume_ptid, 0);
|
||||
|
||||
if (resume_signal != TARGET_SIGNAL_TRAP)
|
||||
{
|
@ -1,82 +0,0 @@
|
||||
2008-11-20 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* gdb.base/foll-fork.exp (catch_fork_child_follow): Fix patterns
|
||||
matching syscall entry point.
|
||||
* gdb.base/foll-vfork.exp (tcatch_vfork_then_parent_follow)
|
||||
(tcatch_vfork_then_child_follow): Likewise. Finish through
|
||||
vfork even if we stopped at the syscall trampoline.
|
||||
|
||||
Index: gdb/testsuite/gdb.base/foll-fork.exp
|
||||
===================================================================
|
||||
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/foll-fork.exp,v
|
||||
retrieving revision 1.11
|
||||
diff -u -a -p -u -p -a -r1.11 foll-fork.exp
|
||||
--- gdb/testsuite/gdb.base/foll-fork.exp 16 Oct 2008 16:25:36 -0000 1.11
|
||||
+++ gdb/testsuite/gdb.base/foll-fork.exp 20 Nov 2008 14:24:45 -0000
|
||||
@@ -167,7 +167,7 @@ proc catch_fork_child_follow {} {
|
||||
|
||||
send_gdb "continue\n"
|
||||
gdb_expect {
|
||||
- -re "Catchpoint.*(forked process.*),.*in .*(fork|__kernel_vsyscall).*$gdb_prompt $"\
|
||||
+ -re "Catchpoint.*(forked process.*),.*in .*(fork|__kernel_v?syscall).*$gdb_prompt $"\
|
||||
{pass "explicit child follow, catch fork"}
|
||||
-re "$gdb_prompt $" {fail "explicit child follow, catch fork"}
|
||||
timeout {fail "(timeout) explicit child follow, catch fork"}
|
||||
@@ -239,7 +239,7 @@ proc tcatch_fork_parent_follow {} {
|
||||
|
||||
send_gdb "continue\n"
|
||||
gdb_expect {
|
||||
- -re ".*in .*(fork|__kernel_vsyscall).*$gdb_prompt $"\
|
||||
+ -re ".*in .*(fork|__kernel_v?syscall).*$gdb_prompt $"\
|
||||
{pass "explicit parent follow, tcatch fork"}
|
||||
-re "$gdb_prompt $" {fail "explicit parent follow, tcatch fork"}
|
||||
timeout {fail "(timeout) explicit parent follow, tcatch fork"}
|
||||
Index: gdb/testsuite/gdb.base/foll-vfork.exp
|
||||
===================================================================
|
||||
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/foll-vfork.exp,v
|
||||
retrieving revision 1.8
|
||||
diff -u -a -p -u -p -a -r1.8 foll-vfork.exp
|
||||
--- gdb/testsuite/gdb.base/foll-vfork.exp 29 Jan 2008 22:47:20 -0000 1.8
|
||||
+++ gdb/testsuite/gdb.base/foll-vfork.exp 20 Nov 2008 14:24:45 -0000
|
||||
@@ -264,7 +264,7 @@ proc tcatch_vfork_then_parent_follow {}
|
||||
# HP-UX 10.20 seems to stop you in "vfork", while more recent HP-UXs
|
||||
# stop you in "_vfork".
|
||||
gdb_expect {
|
||||
- -re "0x\[0-9a-fA-F\]*.*vfork.*$gdb_prompt "\
|
||||
+ -re "0x\[0-9a-fA-F\]*.*(vfork|__kernel_v?syscall).*$gdb_prompt "\
|
||||
{pass "vfork parent follow, tcatch vfork"}
|
||||
-re "vfork \\(\\) at.*$gdb_prompt "\
|
||||
{pass "vfork parent follow, tcatch vfork"}
|
||||
@@ -275,6 +275,10 @@ proc tcatch_vfork_then_parent_follow {}
|
||||
gdb_expect {
|
||||
-re "Run till exit from.*vfork.*0x\[0-9a-fA-F\]* in main .* at .*${srcfile}:12.*$gdb_prompt "\
|
||||
{pass "vfork parent follow, finish after tcatch vfork"}
|
||||
+ -re "Run till exit from.*__kernel_v?syscall.*0x\[0-9a-fA-F\]* in vfork .*$gdb_prompt " {
|
||||
+ send_gdb "finish\n"
|
||||
+ exp_continue
|
||||
+ }
|
||||
-re "$gdb_prompt $" {fail "vfork parent follow, finish after tcatch vfork"}
|
||||
timeout {fail "(timeout) vfork parent follow, finish after tcatch vfork" }
|
||||
}
|
||||
@@ -308,9 +312,7 @@ proc tcatch_vfork_then_child_follow {} {
|
||||
gdb_expect {
|
||||
-re "vfork \\(\\) at .*$gdb_prompt $"\
|
||||
{pass "vfork child follow, tcatch vfork"}
|
||||
- -re "0x\[0-9a-fA-F\]*.*vfork.*$gdb_prompt "\
|
||||
- {pass "vfork child follow, tcatch vfork"}
|
||||
- -re "0x\[0-9a-fA-F\]*.*_vfork.*$gdb_prompt "\
|
||||
+ -re "0x\[0-9a-fA-F\]*.*(vfork|__kernel_v?syscall).*$gdb_prompt "\
|
||||
{pass "vfork child follow, tcatch vfork"}
|
||||
-re "$gdb_prompt $" {fail "vfork child follow, tcatch vfork"}
|
||||
timeout {fail "(timeout) vfork child follow, tcatch vfork"}
|
||||
@@ -319,6 +321,10 @@ proc tcatch_vfork_then_child_follow {} {
|
||||
gdb_expect {
|
||||
-re "Run till exit from.*vfork.*${srcfile}:12.*$gdb_prompt "\
|
||||
{pass "vfork child follow, finish after tcatch vfork"}
|
||||
+ -re "Run till exit from.*__kernel_v?syscall.*0x\[0-9a-fA-F\]* in vfork .*$gdb_prompt " {
|
||||
+ send_gdb "finish\n"
|
||||
+ exp_continue
|
||||
+ }
|
||||
-re "Run till exit from.*vfork.*${srcfile2}:9.*$gdb_prompt "\
|
||||
{pass "vfork child follow, finish after tcatch vfork (followed exec)"}
|
||||
-re "$gdb_prompt $" {fail "vfork child follow, finish after tcatch vfork"}
|
Loading…
x
Reference in New Issue
Block a user