OBS User unknown 2009-02-16 13:03:24 +00:00 committed by Git OBS Bridge
parent 7168e51d73
commit 58512d16aa
5 changed files with 108 additions and 92 deletions

View File

@ -1,6 +1,6 @@
--- gdb/Makefile.in
+++ gdb/Makefile.in
@@ -499,7 +499,7 @@ ALL_TARGET_OBS = \
@@ -502,7 +502,7 @@ ALL_TARGET_OBS = \
sh64-tdep.o sh-linux-tdep.o shnbsd-tdep.o sh-tdep.o \
sparc-linux-tdep.o sparcnbsd-tdep.o sparcobsd-tdep.o \
sparc-sol2-tdep.o sparc-tdep.o \
@ -9,7 +9,7 @@
v850-tdep.o \
vaxnbsd-tdep.o vaxobsd-tdep.o vax-tdep.o \
xstormy16-tdep.o \
@@ -1338,7 +1338,7 @@ ALLDEPFILES = \
@@ -1342,7 +1342,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 \
@ -175,7 +175,7 @@
/* 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. */
@@ -7552,6 +7568,37 @@ breakpoint_re_set (void)
@@ -7553,6 +7569,37 @@ breakpoint_re_set (void)
create_overlay_event_breakpoint ("_ovly_debug_event");
}
@ -269,7 +269,7 @@
;;
--- gdb/corelow.c
+++ gdb/corelow.c
@@ -542,6 +542,33 @@ core_files_info (struct target_ops *t)
@@ -560,6 +560,33 @@ core_files_info (struct target_ops *t)
print_section_info (t, core_bfd);
}
@ -303,7 +303,7 @@
static LONGEST
core_xfer_partial (struct target_ops *ops, enum target_object object,
const char *annex, gdb_byte *readbuf,
@@ -634,6 +661,53 @@ core_xfer_partial (struct target_ops *op
@@ -652,6 +679,53 @@ core_xfer_partial (struct target_ops *op
}
/* FALL THROUGH */
@ -357,7 +357,7 @@
default:
if (ops->beneath != NULL)
return ops->beneath->to_xfer_partial (ops->beneath, object, annex,
@@ -673,8 +747,8 @@ core_file_thread_alive (ptid_t tid)
@@ -691,8 +765,8 @@ core_file_thread_alive (ptid_t tid)
static const struct target_desc *
core_read_description (struct target_ops *target)
{
@ -370,7 +370,7 @@
}
--- gdb/doc/gdb.texinfo
+++ gdb/doc/gdb.texinfo
@@ -16834,6 +16834,33 @@ and local store addresses and transfer s
@@ -16910,6 +16910,33 @@ and local store addresses and transfer s
@end table
@ -404,7 +404,7 @@
@node PowerPC
@subsection PowerPC
@cindex PowerPC architecture
@@ -28801,6 +28828,7 @@ are explained further below.
@@ -29271,6 +29298,7 @@ are explained further below.
<!DOCTYPE target SYSTEM "gdb-target.dtd">
<target version="1.0">
@r{[}@var{architecture}@r{]}
@ -412,7 +412,7 @@
@r{[}@var{feature}@dots{}@r{]}
</target>
@end smallexample
@@ -28852,9 +28880,33 @@ An @samp{<architecture>} element has thi
@@ -29322,9 +29350,33 @@ An @samp{<architecture>} element has thi
<architecture>@var{arch}</architecture>
@end smallexample
@ -1047,7 +1047,7 @@
}
else
internal_error (__FILE__, __LINE__, _("No unwind_pc method"));
@@ -647,19 +663,24 @@ get_frame_register (struct frame_info *f
@@ -650,19 +666,24 @@ get_frame_register (struct frame_info *f
struct value *
frame_unwind_register_value (struct frame_info *frame, int regnum)
{
@ -1074,7 +1074,7 @@
/* Find the unwinder. */
if (frame->unwind == NULL)
frame->unwind = frame_unwind_find_by_frame (frame, &frame->prologue_cache);
@@ -692,7 +713,7 @@ frame_unwind_register_value (struct fram
@@ -695,7 +716,7 @@ frame_unwind_register_value (struct fram
fprintf_unfiltered (gdb_stdlog, " bytes=");
fprintf_unfiltered (gdb_stdlog, "[");
@ -1083,7 +1083,7 @@
fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
fprintf_unfiltered (gdb_stdlog, "]");
}
@@ -701,6 +722,7 @@ frame_unwind_register_value (struct fram
@@ -704,6 +725,7 @@ frame_unwind_register_value (struct fram
fprintf_unfiltered (gdb_stdlog, " }\n");
}
@ -1091,7 +1091,7 @@
return value;
}
@@ -715,7 +737,7 @@ frame_unwind_register_signed (struct fra
@@ -718,7 +740,7 @@ frame_unwind_register_signed (struct fra
{
gdb_byte buf[MAX_REGISTER_SIZE];
frame_unwind_register (frame, regnum, buf);
@ -1100,7 +1100,7 @@
regnum));
}
@@ -730,7 +752,7 @@ frame_unwind_register_unsigned (struct f
@@ -733,7 +755,7 @@ frame_unwind_register_unsigned (struct f
{
gdb_byte buf[MAX_REGISTER_SIZE];
frame_unwind_register (frame, regnum, buf);
@ -1109,7 +1109,7 @@
regnum));
}
@@ -1067,6 +1089,8 @@ select_frame (struct frame_info *fi)
@@ -1070,6 +1092,8 @@ select_frame (struct frame_info *fi)
source language of this frame, and switch to it if desired. */
if (fi)
{
@ -1118,7 +1118,7 @@
/* 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
@@ -1721,9 +1745,17 @@ enum frame_type
@@ -1694,9 +1718,17 @@ enum frame_type
get_frame_type (struct frame_info *frame)
{
if (frame->unwind == NULL)
@ -1139,7 +1139,7 @@
return frame->unwind->type;
}
@@ -1790,17 +1822,48 @@ safe_frame_unwind_memory (struct frame_i
@@ -1731,17 +1763,48 @@ safe_frame_unwind_memory (struct frame_i
return !target_read_memory (addr, buf, len);
}
@ -1205,7 +1205,7 @@
/* Sentinel or registers frame. This frame obtains register values
direct from the inferior's registers. */
SENTINEL_FRAME
@@ -518,6 +520,7 @@ extern int safe_frame_unwind_memory (str
@@ -523,6 +525,7 @@ extern int safe_frame_unwind_memory (str
/* Return this frame's architecture. */
extern struct gdbarch *get_frame_arch (struct frame_info *this_frame);
@ -1263,15 +1263,15 @@
else
--- gdb/gdbarch.c
+++ gdb/gdbarch.c
@@ -225,6 +225,7 @@ struct gdbarch
gdbarch_regset_from_core_section_ftype *regset_from_core_section;
@@ -226,6 +226,7 @@ struct gdbarch
int core_reg_section_encodes_pid;
struct core_regset_section * core_regset_sections;
gdbarch_core_xfer_shared_libraries_ftype *core_xfer_shared_libraries;
+ const char * gcore_bfd_target;
int vtable_function_descriptors;
int vbit_in_delta;
gdbarch_skip_permanent_breakpoint_ftype *skip_permanent_breakpoint;
@@ -312,8 +313,8 @@ struct gdbarch startup_gdbarch =
@@ -314,8 +315,8 @@ struct gdbarch startup_gdbarch =
0, /* register_to_value */
0, /* value_to_register */
0, /* value_from_register */
@ -1282,23 +1282,23 @@
0, /* integer_to_address */
0, /* return_value */
0, /* skip_prologue */
@@ -357,6 +358,7 @@ struct gdbarch startup_gdbarch =
0, /* regset_from_core_section */
@@ -360,6 +361,7 @@ struct gdbarch startup_gdbarch =
0, /* core_reg_section_encodes_pid */
0, /* core_regset_sections */
0, /* core_xfer_shared_libraries */
+ 0, /* gcore_bfd_target */
0, /* vtable_function_descriptors */
0, /* vbit_in_delta */
0, /* skip_permanent_breakpoint */
@@ -608,6 +610,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
/* Skip verify of fetch_pointer_argument, has predicate */
@@ -613,6 +615,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
/* Skip verify of regset_from_core_section, has predicate */
/* Skip verify of core_reg_section_encodes_pid, invalid_p == 0 */
/* Skip verify of core_xfer_shared_libraries, has predicate */
+ /* Skip verify of gcore_bfd_target, has predicate */
/* Skip verify of vtable_function_descriptors, invalid_p == 0 */
/* Skip verify of vbit_in_delta, invalid_p == 0 */
/* Skip verify of skip_permanent_breakpoint, has predicate */
@@ -829,6 +832,12 @@ gdbarch_dump (struct gdbarch *gdbarch, s
@@ -838,6 +841,12 @@ gdbarch_dump (struct gdbarch *gdbarch, s
"gdbarch_dump: frame_red_zone_size = %s\n",
plongest (gdbarch->frame_red_zone_size));
fprintf_unfiltered (file,
@ -1311,7 +1311,7 @@
"gdbarch_dump: gdbarch_get_longjmp_target_p() = %d\n",
gdbarch_get_longjmp_target_p (gdbarch));
fprintf_unfiltered (file,
@@ -2055,7 +2064,7 @@ gdbarch_pointer_to_address (struct gdbar
@@ -2070,7 +2079,7 @@ gdbarch_pointer_to_address (struct gdbar
gdb_assert (gdbarch->pointer_to_address != NULL);
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_pointer_to_address called\n");
@ -1320,7 +1320,7 @@
}
void
@@ -2072,7 +2081,7 @@ gdbarch_address_to_pointer (struct gdbar
@@ -2087,7 +2096,7 @@ gdbarch_address_to_pointer (struct gdbar
gdb_assert (gdbarch->address_to_pointer != NULL);
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_address_to_pointer called\n");
@ -1329,7 +1329,7 @@
}
void
@@ -2931,6 +2940,31 @@ set_gdbarch_core_xfer_shared_libraries (
@@ -2963,6 +2972,31 @@ set_gdbarch_core_xfer_shared_libraries (
}
int
@ -1361,7 +1361,7 @@
gdbarch_vtable_function_descriptors (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
@@ -3367,10 +3401,15 @@ gdbarch_data (struct gdbarch *gdbarch, s
@@ -3423,10 +3457,15 @@ gdbarch_data (struct gdbarch *gdbarch, s
(as all fields are valid), but be careful to also detect
recursive references. */
{
@ -1393,7 +1393,7 @@
extern void gdbarch_address_to_pointer (struct gdbarch *gdbarch, struct type *type, gdb_byte *buf, CORE_ADDR addr);
extern void set_gdbarch_address_to_pointer (struct gdbarch *gdbarch, gdbarch_address_to_pointer_ftype *address_to_pointer);
@@ -652,6 +652,13 @@ typedef LONGEST (gdbarch_core_xfer_share
@@ -661,6 +661,13 @@ typedef LONGEST (gdbarch_core_xfer_share
extern LONGEST gdbarch_core_xfer_shared_libraries (struct gdbarch *gdbarch, gdb_byte *readbuf, ULONGEST offset, LONGEST len);
extern void set_gdbarch_core_xfer_shared_libraries (struct gdbarch *gdbarch, gdbarch_core_xfer_shared_libraries_ftype *core_xfer_shared_libraries);
@ -1420,7 +1420,7 @@
M:CORE_ADDR:integer_to_address:struct type *type, const gdb_byte *buf:type, buf
# Return the return-value convention that will be used by FUNCTYPE
@@ -607,6 +607,9 @@ v:struct core_regset_section *:core_regs
@@ -614,6 +614,9 @@ v:struct core_regset_section *:core_regs
# core file into buffer READBUF with length LEN.
M:LONGEST:core_xfer_shared_libraries:gdb_byte *readbuf, ULONGEST offset, LONGEST len:readbuf, offset, len
@ -1430,7 +1430,7 @@
# If the elements of C++ vtables are in-place function descriptors rather
# than normal function pointers (which may point to code or a descriptor),
# set this to one.
@@ -1731,10 +1734,15 @@ gdbarch_data (struct gdbarch *gdbarch, s
@@ -1743,10 +1746,15 @@ gdbarch_data (struct gdbarch *gdbarch, s
(as all fields are valid), but be careful to also detect
recursive references. */
{
@ -1530,7 +1530,7 @@
#ifndef PTRACE_GETSIGINFO
# define PTRACE_GETSIGINFO 0x4202
# define PTRACE_SETSIGINFO 0x4203
@@ -2180,6 +2186,102 @@ linux_qxfer_osdata (const char *annex,
@@ -2218,6 +2224,102 @@ linux_xfer_siginfo (const char *annex, u
return len;
}
@ -1633,7 +1633,7 @@
static struct target_ops linux_target_ops = {
linux_create_inferior,
linux_attach,
@@ -2210,7 +2312,7 @@ static struct target_ops linux_target_op
@@ -2248,7 +2350,7 @@ static struct target_ops linux_target_op
#else
NULL,
#endif
@ -1641,7 +1641,7 @@
+ linux_spu_qxfer_partial,
hostio_last_error_from_errno,
linux_qxfer_osdata,
};
linux_xfer_siginfo,
--- gdb/gdbserver/linux-ppc-low.c
+++ gdb/gdbserver/linux-ppc-low.c
@@ -28,6 +28,7 @@
@ -1847,7 +1847,7 @@
i386_show_dr ("remove_hwbp", addr, 1, hw_execute);
--- gdb/inferior.h
+++ gdb/inferior.h
@@ -142,13 +142,17 @@ extern CORE_ADDR read_pc (void);
@@ -156,13 +156,17 @@ extern CORE_ADDR read_pc (void);
extern void write_pc (CORE_ADDR);
@ -1906,7 +1906,7 @@
#ifdef HAVE_PERSONALITY
# include <sys/personality.h>
@@ -3429,8 +3435,8 @@ linux_nat_do_thread_registers (bfd *obfd
@@ -3529,8 +3535,8 @@ linux_nat_do_thread_registers (bfd *obfd
gdb_gregset_t gregs;
gdb_fpregset_t fpregs;
unsigned long lwp = ptid_get_lwp (ptid);
@ -1917,7 +1917,7 @@
const struct regset *regset;
int core_regset_p;
struct cleanup *old_chain;
@@ -3540,6 +3546,119 @@ linux_nat_corefile_thread_callback (stru
@@ -3640,6 +3646,119 @@ linux_nat_corefile_thread_callback (stru
return 0;
}
@ -2037,7 +2037,7 @@
/* Fills the "to_make_corefile_note" target vector. Builds the note
section for a corefile, and returns it in a malloc buffer. */
@@ -3600,6 +3719,8 @@ linux_nat_make_corefile_notes (bfd *obfd
@@ -3700,6 +3819,8 @@ linux_nat_make_corefile_notes (bfd *obfd
xfree (auxv);
}
@ -2046,7 +2046,7 @@
make_cleanup (xfree, note_data);
return note_data;
}
@@ -3931,6 +4052,99 @@ linux_proc_xfer_partial (struct target_o
@@ -4031,6 +4152,99 @@ linux_proc_xfer_partial (struct target_o
return ret;
}
@ -2146,7 +2146,7 @@
/* Parse LINE as a signal set and add its set bits to SIGS. */
static void
@@ -4136,6 +4350,10 @@ linux_xfer_partial (struct target_ops *o
@@ -4236,6 +4450,10 @@ linux_xfer_partial (struct target_ops *o
return linux_nat_xfer_osdata (ops, object, annex, readbuf, writebuf,
offset, len);
@ -2423,7 +2423,7 @@
return tdesc_powerpc_vsx64l;
else if (altivec)
return tdesc_powerpc_altivec64l;
@@ -1062,6 +1121,249 @@ ppc_linux_core_read_description (struct
@@ -1062,6 +1121,258 @@ ppc_linux_core_read_description (struct
}
}
@ -2481,15 +2481,24 @@
+ if (!ptid_equal (spe_context_cache_ptid, inferior_ptid))
+ {
+ volatile struct gdb_exception ex;
+ struct target_ops *target;
+
+ if (!target_get_thread_local_address_p ())
+ for (target = current_target.beneath;
+ target != NULL;
+ target = target->beneath)
+ {
+ if (target->to_get_thread_local_address != NULL)
+ break;
+ }
+
+ if (target == NULL)
+ return 0;
+
+ TRY_CATCH (ex, RETURN_MASK_ERROR)
+ {
+ spe_context_cache_address
+ = target_get_thread_local_address
+ (inferior_ptid, spe_context_lm_addr, spe_context_offset);
+ = target->to_get_thread_local_address
+ (target, inferior_ptid, spe_context_lm_addr, spe_context_offset);
+
+ spe_context_cache_ptid = inferior_ptid;
+ }
@ -2673,7 +2682,7 @@
static void
ppc_linux_init_abi (struct gdbarch_info info,
struct gdbarch *gdbarch)
@@ -1102,6 +1404,12 @@ ppc_linux_init_abi (struct gdbarch_info
@@ -1102,6 +1413,12 @@ ppc_linux_init_abi (struct gdbarch_info
/* Trampolines. */
tramp_frame_prepend_unwinder (gdbarch, &ppc32_linux_sigaction_tramp_frame);
tramp_frame_prepend_unwinder (gdbarch, &ppc32_linux_sighandler_tramp_frame);
@ -2686,7 +2695,7 @@
}
if (tdep->wordsize == 8)
@@ -1119,6 +1427,12 @@ ppc_linux_init_abi (struct gdbarch_info
@@ -1119,6 +1436,12 @@ ppc_linux_init_abi (struct gdbarch_info
/* Trampolines. */
tramp_frame_prepend_unwinder (gdbarch, &ppc64_linux_sigaction_tramp_frame);
tramp_frame_prepend_unwinder (gdbarch, &ppc64_linux_sighandler_tramp_frame);
@ -2699,7 +2708,7 @@
}
set_gdbarch_regset_from_core_section (gdbarch, ppc_linux_regset_from_core_section);
set_gdbarch_core_read_description (gdbarch, ppc_linux_core_read_description);
@@ -1158,6 +1472,22 @@ ppc_linux_init_abi (struct gdbarch_info
@@ -1158,6 +1481,22 @@ ppc_linux_init_abi (struct gdbarch_info
PPC_TRAP_REGNUM, "trap");
}
}
@ -2722,7 +2731,7 @@
}
void
@@ -1172,15 +1502,23 @@ _initialize_ppc_linux_tdep (void)
@@ -1172,15 +1511,23 @@ _initialize_ppc_linux_tdep (void)
gdbarch_register_osabi (bfd_arch_rs6000, bfd_mach_rs6k, GDB_OSABI_LINUX,
ppc_linux_init_abi);
@ -2766,7 +2775,7 @@
extern struct target_desc *tdesc_powerpc_isa205_altivec64l;
--- gdb/printcmd.c
+++ gdb/printcmd.c
@@ -386,7 +386,7 @@ print_scalar_formatted (const void *vala
@@ -388,7 +388,7 @@ print_scalar_formatted (const void *vala
/* If we are printing it as unsigned, truncate it in case it is actually
a negative signed value (e.g. "print/u (short)-1" should print 65535
(if shorts are 16 bits) instead of 4294967295). */
@ -3197,7 +3206,7 @@
+32:vrsave
--- gdb/remote.c
+++ gdb/remote.c
@@ -4523,7 +4523,7 @@ process_stop_reply (struct stop_reply *s
@@ -4526,7 +4526,7 @@ process_stop_reply (struct stop_reply *s
for (ix = 0;
VEC_iterate(cached_reg_t, stop_reply->regcache, ix, reg);
ix++)
@ -3206,7 +3215,7 @@
reg->num, reg->data);
VEC_free (cached_reg_t, stop_reply->regcache);
}
@@ -6781,7 +6781,7 @@ remote_insert_breakpoint (struct bp_targ
@@ -6785,7 +6785,7 @@ remote_insert_breakpoint (struct bp_targ
switch (packet_ok (rs->buf, &remote_protocol_packets[PACKET_Z0]))
{
case PACKET_ERROR:
@ -3215,7 +3224,7 @@
case PACKET_OK:
bp_tgt->placed_address = addr;
bp_tgt->placed_size = bpsize;
@@ -6968,7 +6968,7 @@ remote_insert_hw_breakpoint (struct bp_t
@@ -6972,7 +6972,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)
@ -3224,7 +3233,7 @@
rs = get_remote_state ();
p = rs->buf;
@@ -6988,7 +6988,7 @@ remote_insert_hw_breakpoint (struct bp_t
@@ -6992,7 +6992,7 @@ remote_insert_hw_breakpoint (struct bp_t
{
case PACKET_ERROR:
case PACKET_UNKNOWN:
@ -3233,7 +3242,7 @@
case PACKET_OK:
return 0;
}
@@ -7005,7 +7005,7 @@ remote_remove_hw_breakpoint (struct bp_t
@@ -7009,7 +7009,7 @@ remote_remove_hw_breakpoint (struct bp_t
char *p = rs->buf;
if (remote_protocol_packets[PACKET_Z1].support == PACKET_DISABLE)
@ -3242,7 +3251,7 @@
*(p++) = 'z';
*(p++) = '1';
@@ -7022,7 +7022,7 @@ remote_remove_hw_breakpoint (struct bp_t
@@ -7026,7 +7026,7 @@ remote_remove_hw_breakpoint (struct bp_t
{
case PACKET_ERROR:
case PACKET_UNKNOWN:
@ -3299,7 +3308,7 @@
const struct frame_unwind *const sentinel_frame_unwind = &sentinel_frame_unwinder;
--- gdb/sol-thread.c
+++ gdb/sol-thread.c
@@ -1093,7 +1093,7 @@ ps_lgetregs (gdb_ps_prochandle_t ph, lwp
@@ -1094,7 +1094,7 @@ ps_lgetregs (gdb_ps_prochandle_t ph, lwp
old_chain = save_inferior_ptid ();
inferior_ptid = BUILD_LWP (lwpid, PIDGET (inferior_ptid));
@ -3308,7 +3317,7 @@
if (target_has_execution)
procfs_ops.to_fetch_registers (regcache, -1);
@@ -1118,7 +1118,7 @@ ps_lsetregs (gdb_ps_prochandle_t ph, lwp
@@ -1119,7 +1119,7 @@ ps_lsetregs (gdb_ps_prochandle_t ph, lwp
old_chain = save_inferior_ptid ();
inferior_ptid = BUILD_LWP (lwpid, PIDGET (inferior_ptid));
@ -3317,7 +3326,7 @@
supply_gregset (regcache, (const gdb_gregset_t *) gregset);
if (target_has_execution)
@@ -1229,7 +1229,7 @@ ps_lgetfpregs (gdb_ps_prochandle_t ph, l
@@ -1230,7 +1230,7 @@ ps_lgetfpregs (gdb_ps_prochandle_t ph, l
old_chain = save_inferior_ptid ();
inferior_ptid = BUILD_LWP (lwpid, PIDGET (inferior_ptid));
@ -3326,7 +3335,7 @@
if (target_has_execution)
procfs_ops.to_fetch_registers (regcache, -1);
@@ -1254,7 +1254,7 @@ ps_lsetfpregs (gdb_ps_prochandle_t ph, l
@@ -1255,7 +1255,7 @@ ps_lsetfpregs (gdb_ps_prochandle_t ph, l
old_chain = save_inferior_ptid ();
inferior_ptid = BUILD_LWP (lwpid, PIDGET (inferior_ptid));
@ -3871,9 +3880,9 @@
ALL_OBJFILES (so->objfile)
--- gdb/solist.h
+++ gdb/solist.h
@@ -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. */
@@ -123,6 +123,10 @@ struct target_so_ops
Falls back to using strcmp on so_original_name field when set
to NULL. */
int (*same) (struct so_list *gdb, struct so_list *inferior);
+
+ /* Extra hook for opening a BFD for a solib. Can be used to
@ -3884,7 +3893,7 @@
/* Free the memory associated with a (so_list *). */
--- gdb/spu-multiarch.c
+++ gdb/spu-multiarch.c
@@ -0,0 +1,461 @@
@@ -0,0 +1,462 @@
+/* Cell SPU GNU/Linux multi-architecture debugging support.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+
@ -4005,16 +4014,17 @@
+
+/* Override the to_wait routine to detect current architecture. */
+static ptid_t
+spu_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
+spu_wait (struct target_ops *ops, ptid_t ptid,
+ struct target_waitstatus *ourstatus)
+{
+ struct target_ops *ops_beneath = find_target_beneath (&spu_ops);
+ struct target_ops *ops_beneath = find_target_beneath (ops);
+
+ /* Always switch to PPU while running the inferior. This allows
+ linux-thread-db.c code to work as expected. */
+ current_gdbarch = target_gdbarch;
+
+ /* Run it. */
+ ptid = ops_beneath->to_wait (ptid, ourstatus);
+ ptid = ops_beneath->to_wait (ops_beneath, ptid, ourstatus);
+
+ /* Detect and switch to current architecture. */
+ if (ourstatus->kind == TARGET_WAITKIND_STOPPED)
@ -4902,7 +4912,7 @@
+/* This handler is called when the inferior has stopped. If it is stopped in
+ SPU architecture then flush the ea cache if used. */
+static void
+spu_attach_normal_stop (struct bpstats *bs)
+spu_attach_normal_stop (struct bpstats *bs, int unused)
+{
+ if (!spu_auto_flush_cache_p)
+ return;
@ -5357,15 +5367,15 @@
static void init_dummy_target (void);
static struct target_ops debug_target;
@@ -485,6 +488,7 @@ update_current_target (void)
@@ -480,6 +483,7 @@ update_current_target (void)
INHERIT (to_find_memory_regions, t);
INHERIT (to_make_corefile_notes, t);
INHERIT (to_get_thread_local_address, t);
/* Do not inherit to_get_thread_local_address. */
+ INHERIT (to_thread_architecture, t);
INHERIT (to_can_execute_reverse, t);
/* Do not inherit to_read_description. */
INHERIT (to_get_ada_task_ptid, t);
@@ -647,6 +651,8 @@ update_current_target (void)
@@ -639,6 +643,8 @@ update_current_target (void)
de_fault (to_async_mask,
(int (*) (int))
return_one);
@ -5374,7 +5384,7 @@
current_target.to_read_description = NULL;
de_fault (to_get_ada_task_ptid,
(ptid_t (*) (long, long))
@@ -2099,7 +2105,8 @@ target_require_runnable (void)
@@ -2134,7 +2140,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. */
@ -5384,7 +5394,7 @@
continue;
error (_("\
@@ -2259,6 +2266,12 @@ default_watchpoint_addr_within_range (st
@@ -2294,6 +2301,12 @@ default_watchpoint_addr_within_range (st
return addr >= start && addr < start + length;
}
@ -5397,7 +5407,7 @@
static int
return_zero (void)
{
@@ -3148,6 +3161,19 @@ debug_to_find_new_threads (void)
@@ -3145,6 +3158,19 @@ debug_to_find_new_threads (void)
fputs_unfiltered ("target_find_new_threads ()\n", gdb_stdlog);
}
@ -5417,7 +5427,7 @@
static void
debug_to_stop (ptid_t ptid)
{
@@ -3233,6 +3259,7 @@ setup_target_debug (void)
@@ -3224,6 +3250,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;
@ -5437,7 +5447,7 @@
};
enum thread_control_capabilities
@@ -535,6 +536,9 @@ struct target_ops
@@ -544,6 +545,9 @@ struct target_ops
simultaneously? */
int (*to_supports_multi_process) (void);
@ -5447,7 +5457,7 @@
int to_magic;
/* Need sub-structure for target machine related rather than comm related?
*/
@@ -1040,6 +1044,11 @@ extern char *normal_pid_to_str (ptid_t p
@@ -1043,6 +1047,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)
@ -5495,7 +5505,7 @@
# If no core registers were specified, assume this target does not
--- gdb/thread.c
+++ gdb/thread.c
@@ -767,6 +767,7 @@ switch_to_thread (ptid_t ptid)
@@ -824,6 +824,7 @@ switch_to_thread (ptid_t ptid)
inferior_ptid = ptid;
reinit_frame_cache ();
registers_changed ();
@ -5505,7 +5515,7 @@
while in the TARGET_RUNNING state, e.g., while handling an
--- gdb/utils.c
+++ gdb/utils.c
@@ -3022,7 +3022,6 @@ core_addr_to_string_nz (const CORE_ADDR
@@ -3119,7 +3119,6 @@ core_addr_to_string_nz (const CORE_ADDR
CORE_ADDR
string_to_core_addr (const char *my_string)
{
@ -5513,7 +5523,7 @@
CORE_ADDR addr = 0;
if (my_string[0] == '0' && tolower (my_string[1]) == 'x')
@@ -3038,17 +3037,6 @@ string_to_core_addr (const char *my_stri
@@ -3135,17 +3134,6 @@ string_to_core_addr (const char *my_stri
else
error (_("invalid hex \"%s\""), my_string);
}
@ -5542,12 +5552,11 @@
if (frame_addr == (CORE_ADDR) 0)
return NULL;
@@ -436,7 +438,17 @@ find_frame_addr_in_frame_chain (CORE_ADD
frame = get_prev_frame (frame);
if (frame == NULL)
return NULL;
@@ -435,7 +437,16 @@ find_frame_addr_in_frame_chain (CORE_ADD
frame != NULL;
frame = get_prev_frame (frame))
{
- if (get_frame_base_address (frame) == frame_addr)
+
+ /* The CORE_ADDR we get as argument was parsed from a string GDB
+ output as $fp. This output got truncated to gdbarch_addr_bit.
+ Truncate the frame base address in the same manner before
@ -5560,7 +5569,7 @@
+ if (frame_base == frame_addr)
return frame;
}
}
--- gdb/xml-tdesc.c
+++ gdb/xml-tdesc.c
@@ -106,6 +106,20 @@ tdesc_end_arch (struct gdb_xml_parser *p

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8737eb1010fea0ac78a5dd47b4986119ad811cc4b7a3b9ad4245bb78dd68cc94
size 15838272

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6c93d11f9695a67fb9b0c26a3fef5afeafdd4b9a4863b0d08514c2548b47fee7
size 15831628

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Mon Feb 16 11:40:00 CET 2009 - schwab@suse.de
- Update to head to trunk.
-------------------------------------------------------------------
Tue Feb 3 18:11:57 CET 2009 - schwab@suse.de

View File

@ -1,5 +1,5 @@
#
# spec file for package gdb (Version 6.8.50.20090203)
# spec file for package gdb (Version 6.8.50.20090216)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@ -19,7 +19,7 @@
Name: gdb
Summary: The GNU Debugger
Version: 6.8.50.20090203
Version: 6.8.50.20090216
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
@ -199,6 +199,8 @@ rm -rf $RPM_BUILD_ROOT
%endif
%changelog
* Mon Feb 16 2009 schwab@suse.de
- Update to head to trunk.
* Tue Feb 03 2009 schwab@suse.de
- Update to head to trunk.
* Thu Jan 22 2009 schwab@suse.de