This commit is contained in:
parent
7168e51d73
commit
58512d16aa
@ -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
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8737eb1010fea0ac78a5dd47b4986119ad811cc4b7a3b9ad4245bb78dd68cc94
|
||||
size 15838272
|
3
gdb-6.8.50.20090216-cvs.tar.bz2
Normal file
3
gdb-6.8.50.20090216-cvs.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6c93d11f9695a67fb9b0c26a3fef5afeafdd4b9a4863b0d08514c2548b47fee7
|
||||
size 15831628
|
@ -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
|
||||
|
||||
|
6
gdb.spec
6
gdb.spec
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user