diff --git a/cell-combined.diff b/cell-combined.diff index dd36af6..3f5e764 100644 --- a/cell-combined.diff +++ b/cell-combined.diff @@ -382,6 +382,7 @@ doc/ChangeLog: * gdb.texinfo (Target Descriptions): Document 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. @r{[}@var{architecture}@r{]} @@ -796,7 +797,7 @@ doc/ChangeLog: @r{[}@var{feature}@dots{}@r{]} @end smallexample -@@ -28445,9 +28473,33 @@ An @samp{} element has thi +@@ -28852,9 +28880,33 @@ An @samp{} element has thi @var{arch} @end smallexample @@ -1252,7 +1253,7 @@ doc/ChangeLog: + --- 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 - #include - #include -+#include +@@ -36,8 +36,14 @@ + #include + #include + #include +#include +#include -+#include -+ + #include + +#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 + #include "gdb_dirent.h" + #include "xml-support.h" +#include /* for struct statfs */ +#include /* for DIR etc. */ + @@ -2265,7 +2270,7 @@ doc/ChangeLog: #ifdef HAVE_PERSONALITY # include -@@ -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); } diff --git a/gdb-6.8.50.20081120-cvs.tar.bz2 b/gdb-6.8.50.20081120-cvs.tar.bz2 deleted file mode 100644 index 797f547..0000000 --- a/gdb-6.8.50.20081120-cvs.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5a564086f0390d441d85fdaaf8785135c342a789d0ffd9cb71023b8e33c065e4 -size 15657706 diff --git a/gdb-6.8.50.20090116-cvs.tar.bz2 b/gdb-6.8.50.20090116-cvs.tar.bz2 new file mode 100644 index 0000000..0c07083 --- /dev/null +++ b/gdb-6.8.50.20090116-cvs.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e84512926cedd10534ba70bff7466eb63ab9ec352b5b8440a7da9fe4690d7fbc +size 15819175 diff --git a/gdb.changes b/gdb.changes index ee18760..55f899b 100644 --- a/gdb.changes +++ b/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 diff --git a/gdb.spec b/gdb.spec index 6059b93..763bd18 100644 --- a/gdb.spec +++ b/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) diff --git a/pie-relocate.diff b/pie-relocate.diff index 0555ced..7e39e3d 100644 --- a/pie-relocate.diff +++ b/pie-relocate.diff @@ -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); diff --git a/resume.diff b/resume.diff deleted file mode 100644 index 0158a10..0000000 --- a/resume.diff +++ /dev/null @@ -1,49 +0,0 @@ -2008-11-20 Pedro Alves - - * 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); diff --git a/startup-inferior.diff b/startup-inferior.diff deleted file mode 100644 index 60e0e69..0000000 --- a/startup-inferior.diff +++ /dev/null @@ -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) - { diff --git a/testsuite.diff b/testsuite.diff deleted file mode 100644 index 44c6540..0000000 --- a/testsuite.diff +++ /dev/null @@ -1,82 +0,0 @@ -2008-11-20 Andreas Schwab - - * 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"}