From eb9d945afa1529476c3e289be9d45b70aa58b1f8 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Thu, 1 Nov 2007 20:24:20 +0000 Subject: [PATCH] - Upgrade to GDB 6.7. Drop redundant patches, forward-port remaining ones. - Fix rereading of the main executable on its change. --- .cvsignore | 2 +- gdb-6.3-bt-past-zero-20051201.patch | 28 +- gdb-6.3-bz140532-ppc-unwinding-fix.patch | 427 ------ gdb-6.3-constructor-20041216.patch | 8 +- gdb-6.3-ctorline-20050120.patch | 139 +- gdb-6.3-dtorfix-20050121.patch | 20 +- gdb-6.3-ia64-gcore-page0-20050421.patch | 5 +- gdb-6.3-ia64-sigaltstack-20050711.patch | 53 +- gdb-6.3-ia64-sigtramp-fp-20050926.patch | 65 +- gdb-6.3-ia64-vsyscall-20050330.patch | 19 - gdb-6.3-large-core-20051206.patch | 137 +- gdb-6.3-linespec-20041213.patch | 119 +- gdb-6.3-nonthreaded-wp-20050117.patch | 42 +- gdb-6.3-pie-20050110.patch | 555 ++++--- gdb-6.3-ppcdotsolib-20041022.patch | 85 +- gdb-6.3-sepcrc-20050402.patch | 9 + gdb-6.3-terminal-fix-20050214.patch | 22 +- gdb-6.3-test-dtorfix-20050121.patch | 48 +- gdb-6.3-test-pie-20050107.patch | 69 +- gdb-6.3-threaded-watchpoints-20041213.patch | 255 ++-- gdb-6.3-threaded-watchpoints2-20050225.patch | 92 +- gdb-6.3-warnings-20050317.patch | 528 ++----- gdb-6.5-bz109921-DW_AT_decl_file-fix.patch | 351 ----- ...CFA_GNU_negative_offset_extended-fix.patch | 30 - ...FA_GNU_negative_offset_extended-test.patch | 509 ------- gdb-6.5-bz181390-memory-address-width.patch | 5 +- gdb-6.5-bz205551-printf-p.patch | 54 - ...bz215816-readline-from-callback-test.patch | 52 - gdb-6.5-bz215816-readline-from-callback.patch | 165 --- gdb-6.5-bz216711-clone-is-outermost.patch | 57 +- gdb-6.5-bz237872-ppc-long-double.patch | 53 + gdb-6.5-dwarf-stack-overflow.patch | 57 +- gdb-6.5-gcore-i386-on-amd64.patch | 132 +- gdb-6.5-relativedebug.patch | 143 -- gdb-6.5-sharedlibrary-path.patch | 182 +-- gdb-6.5-symbols-overlap.patch | 189 --- gdb-6.5-testsuite-log.patch | 43 - gdb-6.6-bfd-core-dump_elf_headers.patch | 116 -- gdb-6.6-buildid-locate.patch | 130 +- gdb-6.6-buildid-verify.patch | 715 --------- gdb-6.6-bz225783-prelink-path.patch | 15 +- gdb-6.6-bz232015-gcore-ppc-on-ppc64.patch | 201 --- ....6-bz233716-empty-structure-override.patch | 325 ----- ...z237572-ppc-atomic-sequence-upstream.patch | 1160 --------------- gdb-6.6-bz238285-gcore-strings-overflow.patch | 151 -- gdb-6.6-glibc-open-fcntl2-compat.patch | 35 - gdb-6.6-libunwind-major-version.patch | 13 - gdb-6.6-readline-system.patch | 298 +--- gdb-6.6-upstream.patch | 1288 ----------------- gdb-6.6-vdso-i386-on-amd64-warning.patch | 55 +- gdb-6.7-charsign-test.patch | 125 ++ gdb-6.7-reread-exec_bfd.patch | 54 + gdb-6.7-upstream.patch | 98 ++ gdb.spec | 93 +- sources | 2 +- 55 files changed, 1705 insertions(+), 7918 deletions(-) delete mode 100644 gdb-6.3-bz140532-ppc-unwinding-fix.patch delete mode 100644 gdb-6.3-ia64-vsyscall-20050330.patch delete mode 100644 gdb-6.5-bz109921-DW_AT_decl_file-fix.patch delete mode 100644 gdb-6.5-bz165025-DW_CFA_GNU_negative_offset_extended-fix.patch delete mode 100644 gdb-6.5-bz165025-DW_CFA_GNU_negative_offset_extended-test.patch delete mode 100644 gdb-6.5-bz205551-printf-p.patch delete mode 100644 gdb-6.5-bz215816-readline-from-callback-test.patch delete mode 100644 gdb-6.5-bz215816-readline-from-callback.patch delete mode 100644 gdb-6.5-relativedebug.patch delete mode 100644 gdb-6.5-symbols-overlap.patch delete mode 100644 gdb-6.5-testsuite-log.patch delete mode 100644 gdb-6.6-bfd-core-dump_elf_headers.patch delete mode 100644 gdb-6.6-buildid-verify.patch delete mode 100644 gdb-6.6-bz232015-gcore-ppc-on-ppc64.patch delete mode 100644 gdb-6.6-bz233716-empty-structure-override.patch delete mode 100644 gdb-6.6-bz237572-ppc-atomic-sequence-upstream.patch delete mode 100644 gdb-6.6-bz238285-gcore-strings-overflow.patch delete mode 100644 gdb-6.6-glibc-open-fcntl2-compat.patch delete mode 100644 gdb-6.6-libunwind-major-version.patch delete mode 100644 gdb-6.6-upstream.patch create mode 100644 gdb-6.7-charsign-test.patch create mode 100644 gdb-6.7-reread-exec_bfd.patch create mode 100644 gdb-6.7-upstream.patch diff --git a/.cvsignore b/.cvsignore index 8756ea5..9ad9df6 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -gdb-6.6.tar.bz2 +gdb-6.7.tar.bz2 diff --git a/gdb-6.3-bt-past-zero-20051201.patch b/gdb-6.3-bt-past-zero-20051201.patch index 5e654bd..4d6e2d8 100644 --- a/gdb-6.3-bt-past-zero-20051201.patch +++ b/gdb-6.3-bt-past-zero-20051201.patch @@ -11,16 +11,14 @@ testsuite/gdb.base: * setshow.exp: Add testing of "set backtrace past-zero-pc" option. -Index: gdb-6.5/gdb/testsuite/gdb.base/setshow.exp +2007-10-15 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/testsuite/gdb.base/setshow.exp =================================================================== ---- gdb-6.5.orig/gdb/testsuite/gdb.base/setshow.exp 2006-07-11 02:46:50.000000000 -0300 -+++ gdb-6.5/gdb/testsuite/gdb.base/setshow.exp 2006-07-11 02:47:24.000000000 -0300 -@@ -1,4 +1,4 @@ --# Copyright 1992, 1994, 1996, 1997, 1998, 2001, 2003 -+# Copyright 1992, 1994, 1996, 1997, 1998, 2001, 2003, 2005 - # Free Software Foundation, Inc. - - # This program is free software; you can redistribute it and/or modify +--- gdb-6.7.orig/gdb/testsuite/gdb.base/setshow.exp 2007-08-23 20:14:17.000000000 +0200 ++++ gdb-6.7/gdb/testsuite/gdb.base/setshow.exp 2007-10-15 21:34:52.000000000 +0200 @@ -106,6 +106,16 @@ if { ![target_info exists use_gdb_stub] delete_breakpoints gdb_test "run" "Starting program:.*foo bar blup baz bubble.*" "passing args" @@ -38,11 +36,11 @@ Index: gdb-6.5/gdb/testsuite/gdb.base/setshow.exp #test set check range on gdb_test "set check range on" "" "set check range on" #test show check range on -Index: gdb-6.5/gdb/frame.c +Index: gdb-6.7/gdb/frame.c =================================================================== ---- gdb-6.5.orig/gdb/frame.c 2006-07-11 02:46:50.000000000 -0300 -+++ gdb-6.5/gdb/frame.c 2006-07-11 02:51:20.000000000 -0300 -@@ -131,6 +131,16 @@ Whether backtraces should continue past +--- gdb-6.7.orig/gdb/frame.c 2007-10-12 22:35:58.000000000 +0200 ++++ gdb-6.7/gdb/frame.c 2007-10-15 21:34:52.000000000 +0200 +@@ -133,6 +133,16 @@ Whether backtraces should continue past value); } @@ -59,7 +57,7 @@ Index: gdb-6.5/gdb/frame.c static int backtrace_past_entry; static void show_backtrace_past_entry (struct ui_file *file, int from_tty, -@@ -1313,9 +1323,7 @@ get_prev_frame (struct frame_info *this_ +@@ -1483,9 +1493,7 @@ get_prev_frame (struct frame_info *this_ } if (this_frame->level > 0 @@ -70,7 +68,7 @@ Index: gdb-6.5/gdb/frame.c && get_frame_type (this_frame) == NORMAL_FRAME && get_frame_type (get_next_frame (this_frame)) == NORMAL_FRAME && get_frame_pc (this_frame) == 0) -@@ -1629,6 +1637,17 @@ the rest of the stack trace."), +@@ -1850,6 +1858,17 @@ the rest of the stack trace."), &set_backtrace_cmdlist, &show_backtrace_cmdlist); diff --git a/gdb-6.3-bz140532-ppc-unwinding-fix.patch b/gdb-6.3-bz140532-ppc-unwinding-fix.patch deleted file mode 100644 index 898dea5..0000000 --- a/gdb-6.3-bz140532-ppc-unwinding-fix.patch +++ /dev/null @@ -1,427 +0,0 @@ -2007-02-08 Joel Brobecker - Jan Kratochvil - Daniel Jacobowitz - - * rs6000-tdep.c (bl_to_blrl_insn_p): New function. - (skip_prologue): Allow bl->blrl used by PIC code. - ---- ./gdb/rs6000-tdep.c 9 Jan 2007 17:58:57 -0000 1.260 -+++ ./gdb/rs6000-tdep.c 8 Feb 2007 14:22:53 -0000 1.261 -@@ -902,6 +902,30 @@ store_param_on_stack_p (unsigned long op - return 0; - } - -+/* Assuming that INSN is a "bl" instruction located at PC, return -+ nonzero if the destination of the branch is a "blrl" instruction. -+ -+ This sequence is sometimes found in certain function prologues. -+ It allows the function to load the LR register with a value that -+ they can use to access PIC data using PC-relative offsets. */ -+ -+static int -+bl_to_blrl_insn_p (CORE_ADDR pc, int insn) -+{ -+ const int opcode = 18; -+ const CORE_ADDR dest = branch_dest (opcode, insn, pc, -1); -+ int dest_insn; -+ -+ if (dest == -1) -+ return 0; /* Should never happen, but just return zero to be safe. */ -+ -+ dest_insn = read_memory_integer (dest, 4); -+ if ((dest_insn & 0xfc00ffff) == 0x4c000021) /* blrl */ -+ return 1; -+ -+ return 0; -+} -+ - static CORE_ADDR - skip_prologue (CORE_ADDR pc, CORE_ADDR lim_pc, struct rs6000_framedata *fdata) - { -@@ -1133,6 +1157,12 @@ skip_prologue (CORE_ADDR pc, CORE_ADDR l - to save fprs??? */ - - fdata->frameless = 0; -+ -+ /* If the return address has already been saved, we can skip -+ calls to blrl (for PIC). */ -+ if (lr_reg != -1 && bl_to_blrl_insn_p (pc, op)) -+ continue; -+ - /* Don't skip over the subroutine call if it is not within - the first three instructions of the prologue and either - we have no line table information or the line info tells - - - -2007-03-27 Andreas Schwab - Daniel Jacobowitz - - * dwarf2-frame.c (dwarf2_frame_eh_frame_regnum): Rename to... - (dwarf2_frame_adjust_regnum): ...this. Make static. Add eh_frame_p - argument. Update all callers. - (struct dwarf2_frame_ops): Replace eh_frame_regnum with adjust_regnum. - (dwarf2_frame_set_eh_frame_regnum): Rename to... - (dwarf2_frame_set_adjust_regnum): ...this. Update argument type. - * dwarf2frame.h (dwarf2_frame_set_eh_frame_regnum): Rename to... - (dwarf2_frame_set_adjust_regnum): ...this. - (dwarf2_frame_eh_frame_regnum): Delete prototype. - * rs6000-tdep.c: Include "dwarf2-frame.h". - (rs6000_adjust_frame_regnum): Define. - (rs6000_gdbarch_init): Enable use of DWARF CFI frame unwinder. - Register rs6000_adjust_frame_regnum. - - * Makefile.in (rs6000-tdep.o): Update dependencies. - ---- ./gdb/dwarf2-frame.c 27 Feb 2007 20:17:18 -0000 1.68 -+++ ./gdb/dwarf2-frame.c 27 Mar 2007 19:02:42 -0000 1.69 -@@ -107,6 +107,9 @@ struct dwarf2_fde - }; - - static struct dwarf2_fde *dwarf2_frame_find_fde (CORE_ADDR *pc); -+ -+static int dwarf2_frame_adjust_regnum (struct gdbarch *gdbarch, int regnum, -+ int eh_frame_p); - - - /* Structure describing a frame state. */ -@@ -314,8 +317,7 @@ execute_cfa_program (gdb_byte *insn_ptr, - else if ((insn & 0xc0) == DW_CFA_offset) - { - reg = insn & 0x3f; -- if (eh_frame_p) -- reg = dwarf2_frame_eh_frame_regnum (gdbarch, reg); -+ reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p); - insn_ptr = read_uleb128 (insn_ptr, insn_end, &utmp); - offset = utmp * fs->data_align; - dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1); -@@ -326,8 +328,7 @@ execute_cfa_program (gdb_byte *insn_ptr, - { - gdb_assert (fs->initial.reg); - reg = insn & 0x3f; -- if (eh_frame_p) -- reg = dwarf2_frame_eh_frame_regnum (gdbarch, reg); -+ reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p); - dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1); - if (reg < fs->initial.num_regs) - fs->regs.reg[reg] = fs->initial.reg[reg]; -@@ -368,8 +369,7 @@ register %s (#%d) at 0x%s"), - - case DW_CFA_offset_extended: - insn_ptr = read_uleb128 (insn_ptr, insn_end, ®); -- if (eh_frame_p) -- reg = dwarf2_frame_eh_frame_regnum (gdbarch, reg); -+ reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p); - insn_ptr = read_uleb128 (insn_ptr, insn_end, &utmp); - offset = utmp * fs->data_align; - dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1); -@@ -380,35 +380,30 @@ register %s (#%d) at 0x%s"), - case DW_CFA_restore_extended: - gdb_assert (fs->initial.reg); - insn_ptr = read_uleb128 (insn_ptr, insn_end, ®); -- if (eh_frame_p) -- reg = dwarf2_frame_eh_frame_regnum (gdbarch, reg); -+ reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p); - dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1); - fs->regs.reg[reg] = fs->initial.reg[reg]; - break; - - case DW_CFA_undefined: - insn_ptr = read_uleb128 (insn_ptr, insn_end, ®); -- if (eh_frame_p) -- reg = dwarf2_frame_eh_frame_regnum (gdbarch, reg); -+ reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p); - dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1); - fs->regs.reg[reg].how = DWARF2_FRAME_REG_UNDEFINED; - break; - - case DW_CFA_same_value: - insn_ptr = read_uleb128 (insn_ptr, insn_end, ®); -- if (eh_frame_p) -- reg = dwarf2_frame_eh_frame_regnum (gdbarch, reg); -+ reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p); - dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1); - fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAME_VALUE; - break; - - case DW_CFA_register: - insn_ptr = read_uleb128 (insn_ptr, insn_end, ®); -- if (eh_frame_p) -- reg = dwarf2_frame_eh_frame_regnum (gdbarch, reg); -+ reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p); - insn_ptr = read_uleb128 (insn_ptr, insn_end, &utmp); -- if (eh_frame_p) -- utmp = dwarf2_frame_eh_frame_regnum (gdbarch, utmp); -+ utmp = dwarf2_frame_adjust_regnum (gdbarch, utmp, eh_frame_p); - dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1); - fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_REG; - fs->regs.reg[reg].loc.reg = utmp; -@@ -456,9 +451,8 @@ bad CFI data; mismatched DW_CFA_restore_ - - case DW_CFA_def_cfa_register: - insn_ptr = read_uleb128 (insn_ptr, insn_end, &fs->cfa_reg); -- if (eh_frame_p) -- fs->cfa_reg = dwarf2_frame_eh_frame_regnum (gdbarch, -- fs->cfa_reg); -+ fs->cfa_reg = dwarf2_frame_adjust_regnum (gdbarch, fs->cfa_reg, -+ eh_frame_p); - fs->cfa_how = CFA_REG_OFFSET; - break; - -@@ -484,8 +478,7 @@ bad CFI data; mismatched DW_CFA_restore_ - - case DW_CFA_expression: - insn_ptr = read_uleb128 (insn_ptr, insn_end, ®); -- if (eh_frame_p) -- reg = dwarf2_frame_eh_frame_regnum (gdbarch, reg); -+ reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p); - dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1); - insn_ptr = read_uleb128 (insn_ptr, insn_end, &utmp); - fs->regs.reg[reg].loc.exp = insn_ptr; -@@ -496,8 +489,7 @@ bad CFI data; mismatched DW_CFA_restore_ - - case DW_CFA_offset_extended_sf: - insn_ptr = read_uleb128 (insn_ptr, insn_end, ®); -- if (eh_frame_p) -- reg = dwarf2_frame_eh_frame_regnum (gdbarch, reg); -+ reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p); - insn_ptr = read_sleb128 (insn_ptr, insn_end, &offset); - offset *= fs->data_align; - dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1); -@@ -535,9 +527,8 @@ bad CFI data; mismatched DW_CFA_restore_ - - case DW_CFA_def_cfa_sf: - insn_ptr = read_uleb128 (insn_ptr, insn_end, &fs->cfa_reg); -- if (eh_frame_p) -- fs->cfa_reg = dwarf2_frame_eh_frame_regnum (gdbarch, -- fs->cfa_reg); -+ fs->cfa_reg = dwarf2_frame_adjust_regnum (gdbarch, fs->cfa_reg, -+ eh_frame_p); - insn_ptr = read_sleb128 (insn_ptr, insn_end, &offset); - fs->cfa_offset = offset * fs->data_align; - fs->cfa_how = CFA_REG_OFFSET; -@@ -581,6 +572,7 @@ bad CFI data; mismatched DW_CFA_restore_ - - case DW_CFA_GNU_negative_offset_extended: - insn_ptr = read_uleb128 (insn_ptr, insn_end, ®); -+ reg = dwarf2_frame_adjust_regnum (gdbarch, reg, eh_frame_p); - insn_ptr = read_uleb128 (insn_ptr, insn_end, &offset); - offset *= fs->data_align; - dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1); -@@ -617,8 +607,9 @@ struct dwarf2_frame_ops - trampoline. */ - int (*signal_frame_p) (struct gdbarch *, struct frame_info *); - -- /* Convert .eh_frame register number to DWARF register number. */ -- int (*eh_frame_regnum) (struct gdbarch *, int); -+ /* Convert .eh_frame register number to DWARF register number, or -+ adjust .debug_frame register number. */ -+ int (*adjust_regnum) (struct gdbarch *, int, int); - }; - - /* Default architecture-specific register state initialization -@@ -726,29 +717,30 @@ dwarf2_frame_signal_frame_p (struct gdba - return ops->signal_frame_p (gdbarch, next_frame); - } - --/* Set the architecture-specific mapping of .eh_frame register numbers to -- DWARF register numbers. */ -+/* Set the architecture-specific adjustment of .eh_frame and .debug_frame -+ register numbers. */ - - void --dwarf2_frame_set_eh_frame_regnum (struct gdbarch *gdbarch, -- int (*eh_frame_regnum) (struct gdbarch *, -- int)) -+dwarf2_frame_set_adjust_regnum (struct gdbarch *gdbarch, -+ int (*adjust_regnum) (struct gdbarch *, -+ int, int)) - { - struct dwarf2_frame_ops *ops = gdbarch_data (gdbarch, dwarf2_frame_data); - -- ops->eh_frame_regnum = eh_frame_regnum; -+ ops->adjust_regnum = adjust_regnum; - } - --/* Translate a .eh_frame register to DWARF register. */ -+/* Translate a .eh_frame register to DWARF register, or adjust a .debug_frame -+ register. */ - --int --dwarf2_frame_eh_frame_regnum (struct gdbarch *gdbarch, int regnum) -+static int -+dwarf2_frame_adjust_regnum (struct gdbarch *gdbarch, int regnum, int eh_frame_p) - { - struct dwarf2_frame_ops *ops = gdbarch_data (gdbarch, dwarf2_frame_data); - -- if (ops->eh_frame_regnum == NULL) -+ if (ops->adjust_regnum == NULL) - return regnum; -- return ops->eh_frame_regnum (gdbarch, regnum); -+ return ops->adjust_regnum (gdbarch, regnum, eh_frame_p); - } - - static void -@@ -1726,10 +1718,10 @@ decode_frame_entry_1 (struct comp_unit * - else - cie->return_address_register = read_unsigned_leb128 (unit->abfd, buf, - &bytes_read); -- if (eh_frame_p) -- cie->return_address_register -- = dwarf2_frame_eh_frame_regnum (current_gdbarch, -- cie->return_address_register); -+ cie->return_address_register -+ = dwarf2_frame_adjust_regnum (current_gdbarch, -+ cie->return_address_register, -+ eh_frame_p); - - buf += bytes_read; - ---- ./gdb/dwarf2-frame.h 9 Jan 2007 17:58:50 -0000 1.14 -+++ ./gdb/dwarf2-frame.h 27 Mar 2007 19:02:42 -0000 1.15 -@@ -94,18 +94,13 @@ extern void - int (*signal_frame_p) (struct gdbarch *, - struct frame_info *)); - --/* Set the architecture-specific mapping of .eh_frame register numbers to -- DWARF register numbers. */ -+/* Set the architecture-specific adjustment of .eh_frame and .debug_frame -+ register numbers. */ - - extern void -- dwarf2_frame_set_eh_frame_regnum (struct gdbarch *gdbarch, -- int (*eh_frame_regnum) (struct gdbarch *, -- int)); -- --/* Translate a .eh_frame register to DWARF register. */ -- --extern int -- dwarf2_frame_eh_frame_regnum (struct gdbarch *gdbarch, int regnum); -+ dwarf2_frame_set_adjust_regnum (struct gdbarch *gdbarch, -+ int (*adjust_regnum) (struct gdbarch *, -+ int, int)); - - /* Return the frame unwind methods for the function that contains PC, - or NULL if it can't be handled by DWARF CFI frame unwinder. */ ---- ./gdb/rs6000-tdep.c 13 Mar 2007 17:34:22 -0000 1.266 -+++ ./gdb/rs6000-tdep.c 27 Mar 2007 19:02:42 -0000 1.267 -@@ -40,6 +40,7 @@ - #include "sim-regno.h" - #include "gdb/sim-ppc.h" - #include "reggroups.h" -+#include "dwarf2-frame.h" - - #include "libbfd.h" /* for bfd_default_set_arch_mach */ - #include "coff/internal.h" /* for libcoff.h */ -@@ -2294,6 +2295,69 @@ rs6000_dwarf2_reg_to_regnum (int num) - } - } - -+/* Translate a .eh_frame register to DWARF register, or adjust a -+ .debug_frame register. */ -+ -+static int -+rs6000_adjust_frame_regnum (struct gdbarch *gdbarch, int num, int eh_frame_p) -+{ -+ /* GCC releases before 3.4 use GCC internal register numbering in -+ .debug_frame (and .debug_info, et cetera). The numbering is -+ different from the standard SysV numbering for everything except -+ for GPRs and FPRs. We can not detect this problem in most cases -+ - to get accurate debug info for variables living in lr, ctr, v0, -+ et cetera, use a newer version of GCC. But we must detect -+ one important case - lr is in column 65 in .debug_frame output, -+ instead of 108. -+ -+ GCC 3.4, and the "hammer" branch, have a related problem. They -+ record lr register saves in .debug_frame as 108, but still record -+ the return column as 65. We fix that up too. -+ -+ We can do this because 65 is assigned to fpsr, and GCC never -+ generates debug info referring to it. To add support for -+ handwritten debug info that restores fpsr, we would need to add a -+ producer version check to this. */ -+ if (!eh_frame_p) -+ { -+ if (num == 65) -+ return 108; -+ else -+ return num; -+ } -+ -+ /* .eh_frame is GCC specific. For binary compatibility, it uses GCC -+ internal register numbering; translate that to the standard DWARF2 -+ register numbering. */ -+ if (0 <= num && num <= 63) /* r0-r31,fp0-fp31 */ -+ return num; -+ else if (68 <= num && num <= 75) /* cr0-cr8 */ -+ return num - 68 + 86; -+ else if (77 <= num && num <= 108) /* vr0-vr31 */ -+ return num - 77 + 1124; -+ else -+ switch (num) -+ { -+ case 64: /* mq */ -+ return 100; -+ case 65: /* lr */ -+ return 108; -+ case 66: /* ctr */ -+ return 109; -+ case 76: /* xer */ -+ return 101; -+ case 109: /* vrsave */ -+ return 356; -+ case 110: /* vscr */ -+ return 67; -+ case 111: /* spe_acc */ -+ return 99; -+ case 112: /* spefscr */ -+ return 612; -+ default: -+ return num; -+ } -+} - - /* Support for CONVERT_FROM_FUNC_PTR_ADDR (ARCH, ADDR, TARG). - -@@ -3428,6 +3492,10 @@ rs6000_gdbarch_init (struct gdbarch_info - (gdbarch, rs6000_in_solib_return_trampoline); - set_gdbarch_skip_trampoline_code (gdbarch, rs6000_skip_trampoline_code); - -+ /* Hook in the DWARF CFI frame unwinder. */ -+ frame_unwind_append_sniffer (gdbarch, dwarf2_frame_sniffer); -+ dwarf2_frame_set_adjust_regnum (gdbarch, rs6000_adjust_frame_regnum); -+ - /* Hook in ABI-specific overrides, if they have been registered. */ - gdbarch_init_osabi (info, gdbarch); - ---- ./gdb/Makefile.in.orig 2007-07-31 16:42:29.000000000 -0400 -+++ ./gdb/Makefile.in 2007-08-01 13:42:51.000000000 -0400 -@@ -2468,7 +2468,7 @@ rs6000-tdep.o: rs6000-tdep.c $(defs_h) $ - $(reggroups_h) $(libbfd_h) $(coff_internal_h) $(libcoff_h) \ - $(coff_xcoff_h) $(libxcoff_h) $(elf_bfd_h) $(solib_svr4_h) \ - $(ppc_tdep_h) $(gdb_assert_h) $(dis_asm_h) $(trad_frame_h) \ -- $(frame_unwind_h) $(frame_base_h) $(rs6000_tdep_h) -+ $(frame_unwind_h) $(frame_base_h) $(rs6000_tdep_h) $(dwarf2_frame_h) - rs6000-aix-tdep.o: rs6000-aix-tdep.c $(defs_h) $(osabi_h) $(rs6000_tdep_h) - s390-nat.o: s390-nat.c $(defs_h) $(tm_h) $(regcache_h) $(inferior_h) \ - $(s390_tdep_h) $(observer_h) $(linux_nat_h) - s390-tdep.o: s390-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) $(inferior_h) \ - - - -2007-04-10 Andreas Schwab - - * rs6000-tdep.c (rs6000_dwarf2_reg_to_regnum): Decode 64 as CR - register. - ---- ./gdb/rs6000-tdep.c 1 Apr 2007 18:24:59 -0000 1.269 -+++ ./gdb/rs6000-tdep.c 10 Apr 2007 16:02:41 -0000 1.270 -@@ -2274,6 +2274,8 @@ rs6000_dwarf2_reg_to_regnum (int num) - else - switch (num) - { -+ case 64: -+ return tdep->ppc_cr_regnum; - case 67: - return tdep->ppc_vrsave_regnum - 1; /* vscr */ - case 99: diff --git a/gdb-6.3-constructor-20041216.patch b/gdb-6.3-constructor-20041216.patch index 1be5b64..f89f08a 100644 --- a/gdb-6.3-constructor-20041216.patch +++ b/gdb-6.3-constructor-20041216.patch @@ -16,10 +16,10 @@ + /* no decoration */ + break; + case gnu_v3_base_object_ctor: -+ d_append_string_constant (dpi, "$base"); ++ d_append_string (dpi, "$base"); + break; + case gnu_v3_complete_object_allocating_ctor: -+ d_append_string_constant (dpi, "$allocate"); ++ d_append_string (dpi, "$allocate"); + break; + } return; @@ -30,13 +30,13 @@ + switch (dc->u.s_dtor.kind) + { + case gnu_v3_deleting_dtor: -+ d_append_string_constant (dpi, "$delete"); ++ d_append_string (dpi, "$delete"); + break; + case gnu_v3_complete_object_dtor: + /* no decoration */ + break; + case gnu_v3_base_object_dtor: -+ d_append_string_constant (dpi, "$base"); ++ d_append_string (dpi, "$base"); + break; + } return; diff --git a/gdb-6.3-ctorline-20050120.patch b/gdb-6.3-ctorline-20050120.patch index f2ac6a1..6171131 100644 --- a/gdb-6.3-ctorline-20050120.patch +++ b/gdb-6.3-ctorline-20050120.patch @@ -43,18 +43,15 @@ (breakpoint_re_set_one): New variables ID_S, ID, PC_LIST, NUM_PC_VALUES. Parse the "%42" suffix of the multiple-PC breakpoints's ADDR_STRINGs. -Index: gdb-6.5/gdb/mi/mi-cmd-disas.c +2007-10-14 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/mi/mi-cmd-disas.c =================================================================== ---- gdb-6.5.orig/gdb/mi/mi-cmd-disas.c 2006-07-11 01:30:43.000000000 -0300 -+++ gdb-6.5/gdb/mi/mi-cmd-disas.c 2006-07-11 02:16:07.000000000 -0300 -@@ -1,5 +1,5 @@ - /* MI Command Set - disassemble commands. -- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. -+ Copyright (C) 2000, 2001, 2002, 2005 Free Software Foundation, Inc. - Contributed by Cygnus Solutions (a Red Hat company). - - This file is part of GDB. -@@ -145,11 +145,18 @@ mi_cmd_disassemble (char *command, char +--- gdb-6.7.orig/gdb/mi/mi-cmd-disas.c 2007-08-23 20:08:48.000000000 +0200 ++++ gdb-6.7/gdb/mi/mi-cmd-disas.c 2007-10-14 23:26:23.000000000 +0200 +@@ -143,11 +143,18 @@ mi_cmd_disassemble (char *command, char if (line_seen && file_seen) { @@ -74,19 +71,11 @@ Index: gdb-6.5/gdb/mi/mi-cmd-disas.c if (find_pc_partial_function (start, NULL, &low, &high) == 0) error (_("mi_cmd_disassemble: No function contains specified address")); } -Index: gdb-6.5/gdb/tui/tui-layout.c +Index: gdb-6.7/gdb/tui/tui-layout.c =================================================================== ---- gdb-6.5.orig/gdb/tui/tui-layout.c 2006-07-11 01:30:43.000000000 -0300 -+++ gdb-6.5/gdb/tui/tui-layout.c 2006-07-11 02:16:07.000000000 -0300 -@@ -1,6 +1,6 @@ - /* TUI layout window management. - -- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software -+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software - Foundation, Inc. - - Contributed by Hewlett-Packard Company. -@@ -511,7 +511,8 @@ extract_display_start_addr (void) +--- gdb-6.7.orig/gdb/tui/tui-layout.c 2007-08-23 20:08:50.000000000 +0200 ++++ gdb-6.7/gdb/tui/tui-layout.c 2007-10-14 23:26:23.000000000 +0200 +@@ -516,7 +516,8 @@ extract_display_start_addr (void) { enum tui_layout_type cur_layout = tui_current_layout (); CORE_ADDR addr; @@ -96,7 +85,7 @@ Index: gdb-6.5/gdb/tui/tui-layout.c struct symtab_and_line cursal = get_current_source_symtab_and_line (); switch (cur_layout) -@@ -520,8 +521,11 @@ extract_display_start_addr (void) +@@ -525,8 +526,11 @@ extract_display_start_addr (void) case SRC_DATA_COMMAND: find_line_pc (cursal.symtab, TUI_SRC_WIN->detail.source_info.start_line_or_addr.u.line_no, @@ -110,19 +99,11 @@ Index: gdb-6.5/gdb/tui/tui-layout.c break; case DISASSEM_COMMAND: case SRC_DISASSEM_COMMAND: -Index: gdb-6.5/gdb/tui/tui-win.c +Index: gdb-6.7/gdb/tui/tui-win.c =================================================================== ---- gdb-6.5.orig/gdb/tui/tui-win.c 2006-07-11 01:30:43.000000000 -0300 -+++ gdb-6.5/gdb/tui/tui-win.c 2006-07-11 02:16:12.000000000 -0300 -@@ -1,6 +1,6 @@ - /* TUI window generic functions. - -- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006 -+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. - - Contributed by Hewlett-Packard Company. -@@ -1342,8 +1342,16 @@ make_visible_with_new_height (struct tui +--- gdb-6.7.orig/gdb/tui/tui-win.c 2007-08-23 20:08:50.000000000 +0200 ++++ gdb-6.7/gdb/tui/tui-win.c 2007-10-14 23:26:23.000000000 +0200 +@@ -1359,8 +1359,16 @@ make_visible_with_new_height (struct tui } else { @@ -140,18 +121,10 @@ Index: gdb-6.5/gdb/tui/tui-win.c } tui_update_source_window (win_info, s, line, TRUE); } -Index: gdb-6.5/gdb/tui/tui-winsource.c +Index: gdb-6.7/gdb/tui/tui-winsource.c =================================================================== ---- gdb-6.5.orig/gdb/tui/tui-winsource.c 2006-07-11 01:30:43.000000000 -0300 -+++ gdb-6.5/gdb/tui/tui-winsource.c 2006-07-11 01:39:20.000000000 -0300 -@@ -1,6 +1,6 @@ - /* TUI display source/assembly window. - -- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006 -+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. - - Contributed by Hewlett-Packard Company. +--- gdb-6.7.orig/gdb/tui/tui-winsource.c 2007-08-23 20:08:50.000000000 +0200 ++++ gdb-6.7/gdb/tui/tui-winsource.c 2007-10-14 23:26:23.000000000 +0200 @@ -173,14 +173,21 @@ tui_update_source_windows_with_addr (COR void tui_update_source_windows_with_line (struct symtab *s, int line) @@ -190,19 +163,10 @@ Index: gdb-6.5/gdb/tui/tui-winsource.c tui_show_disassem (pc); } break; -Index: gdb-6.5/gdb/symtab.c +Index: gdb-6.7/gdb/symtab.c =================================================================== ---- gdb-6.5.orig/gdb/symtab.c 2006-07-11 01:30:43.000000000 -0300 -+++ gdb-6.5/gdb/symtab.c 2006-07-11 02:16:05.000000000 -0300 -@@ -1,7 +1,7 @@ - /* Symbol table lookup for the GNU debugger, GDB. - - Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, -- 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -+ 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 - Free Software Foundation, Inc. - - This file is part of GDB. +--- gdb-6.7.orig/gdb/symtab.c 2007-10-12 22:35:58.000000000 +0200 ++++ gdb-6.7/gdb/symtab.c 2007-10-14 23:26:23.000000000 +0200 @@ -73,7 +73,9 @@ static void sources_info (char *, int); static void output_source_filename (const char *, int *); @@ -214,7 +178,7 @@ Index: gdb-6.5/gdb/symtab.c /* This one is used by linespec.c */ -@@ -2233,6 +2235,9 @@ find_pc_line (CORE_ADDR pc, int notcurre +@@ -2252,6 +2254,9 @@ find_pc_line (CORE_ADDR pc, int notcurre /* Find line number LINE in any symtab whose name is the same as SYMTAB. @@ -224,7 +188,7 @@ Index: gdb-6.5/gdb/symtab.c If found, return the symtab that contains the linetable in which it was found, set *INDEX to the index in the linetable of the best entry found, and set *EXACT_MATCH nonzero if the value returned is an -@@ -2249,13 +2254,19 @@ find_line_symtab (struct symtab *symtab, +@@ -2268,13 +2273,19 @@ find_line_symtab (struct symtab *symtab, so far seen. */ int best_index; @@ -245,7 +209,7 @@ Index: gdb-6.5/gdb/symtab.c if (best_index < 0 || !exact) { /* Didn't find an exact match. So we better keep looking for -@@ -2286,7 +2297,7 @@ find_line_symtab (struct symtab *symtab, +@@ -2305,7 +2316,7 @@ find_line_symtab (struct symtab *symtab, if (strcmp (symtab->filename, s->filename) != 0) continue; l = LINETABLE (s); @@ -254,7 +218,7 @@ Index: gdb-6.5/gdb/symtab.c if (ind >= 0) { if (exact) -@@ -2322,13 +2333,23 @@ done: +@@ -2341,13 +2352,23 @@ done: Returns zero for invalid line number (and sets the PC to 0). The source file is specified with a struct symtab. */ @@ -281,7 +245,7 @@ Index: gdb-6.5/gdb/symtab.c if (symtab == 0) return 0; -@@ -2336,7 +2357,73 @@ find_line_pc (struct symtab *symtab, int +@@ -2355,7 +2376,73 @@ find_line_pc (struct symtab *symtab, int if (symtab != NULL) { l = LINETABLE (symtab); @@ -356,7 +320,7 @@ Index: gdb-6.5/gdb/symtab.c return 1; } else -@@ -2354,12 +2418,22 @@ find_line_pc_range (struct symtab_and_li +@@ -2373,12 +2460,22 @@ find_line_pc_range (struct symtab_and_li CORE_ADDR *endptr) { CORE_ADDR startaddr; @@ -380,7 +344,7 @@ Index: gdb-6.5/gdb/symtab.c /* This whole function is based on address. For example, if line 10 has two parts, one from 0x100 to 0x200 and one from 0x300 to 0x400, then "info line *0x123" should say the line goes from 0x100 to 0x200 -@@ -2389,7 +2463,7 @@ find_line_pc_range (struct symtab_and_li +@@ -2408,7 +2505,7 @@ find_line_pc_range (struct symtab_and_li Set *EXACT_MATCH nonzero if the value returned is an exact match. */ static int @@ -389,7 +353,7 @@ Index: gdb-6.5/gdb/symtab.c int *exact_match) { int i; -@@ -2408,7 +2482,7 @@ find_line_common (struct linetable *l, i +@@ -2427,7 +2524,7 @@ find_line_common (struct linetable *l, i return -1; len = l->nitems; @@ -398,7 +362,7 @@ Index: gdb-6.5/gdb/symtab.c { struct linetable_entry *item = &(l->item[i]); -@@ -2432,6 +2506,52 @@ find_line_common (struct linetable *l, i +@@ -2451,6 +2548,52 @@ find_line_common (struct linetable *l, i return best_index; } @@ -451,20 +415,11 @@ Index: gdb-6.5/gdb/symtab.c int find_pc_line_pc_range (CORE_ADDR pc, CORE_ADDR *startptr, CORE_ADDR *endptr) { -Index: gdb-6.5/gdb/symtab.h +Index: gdb-6.7/gdb/symtab.h =================================================================== ---- gdb-6.5.orig/gdb/symtab.h 2006-07-11 01:30:43.000000000 -0300 -+++ gdb-6.5/gdb/symtab.h 2006-07-11 01:39:20.000000000 -0300 -@@ -1,7 +1,7 @@ - /* Symbol table definitions for GDB. - - Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, -- 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software -+ 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software - Foundation, Inc. - - This file is part of GDB. -@@ -1256,13 +1256,16 @@ extern struct symtab_and_line find_pc_se +--- gdb-6.7.orig/gdb/symtab.h 2007-08-23 20:08:45.000000000 +0200 ++++ gdb-6.7/gdb/symtab.h 2007-10-14 23:26:23.000000000 +0200 +@@ -1271,13 +1271,16 @@ extern struct symtab_and_line find_pc_se /* Given a symtab and line number, return the pc there. */ @@ -482,11 +437,11 @@ Index: gdb-6.5/gdb/symtab.h /* Given a string, return the line specified by it. For commands like "list" and "breakpoint". */ -Index: gdb-6.5/gdb/breakpoint.c +Index: gdb-6.7/gdb/breakpoint.c =================================================================== ---- gdb-6.5.orig/gdb/breakpoint.c 2006-07-11 01:30:53.000000000 -0300 -+++ gdb-6.5/gdb/breakpoint.c 2006-07-11 01:39:20.000000000 -0300 -@@ -5268,12 +5268,70 @@ static void +--- gdb-6.7.orig/gdb/breakpoint.c 2007-10-13 05:29:58.000000000 +0200 ++++ gdb-6.7/gdb/breakpoint.c 2007-10-14 23:26:23.000000000 +0200 +@@ -5325,12 +5325,70 @@ parse_breakpoint_sals (char **address, static void breakpoint_sals_to_pc (struct symtabs_and_lines *sals, @@ -562,7 +517,7 @@ Index: gdb-6.5/gdb/breakpoint.c /* It's possible for the PC to be nonzero, but still an illegal value on some targets. -@@ -5406,6 +5436,10 @@ break_command_1 (char *arg, int flag, in +@@ -5465,6 +5523,10 @@ break_command_1 (char *arg, int flag, in if (!pending) { @@ -573,7 +528,7 @@ Index: gdb-6.5/gdb/breakpoint.c /* Make sure that all storage allocated to SALS gets freed. */ make_cleanup (xfree, sals.sals); -@@ -5436,11 +5470,6 @@ break_command_1 (char *arg, int flag, in +@@ -5495,11 +5557,6 @@ break_command_1 (char *arg, int flag, in make_cleanup (xfree, addr_string[i]); } @@ -585,7 +540,7 @@ Index: gdb-6.5/gdb/breakpoint.c /* Verify that condition can be parsed, before setting any breakpoints. Allocate a separate condition expression for each breakpoint. */ -@@ -5665,7 +5688,7 @@ do_captured_breakpoint (struct ui_out *u +@@ -5675,7 +5732,7 @@ do_captured_breakpoint (struct ui_out *u error (_("Garbage %s following breakpoint address"), address_end); /* Resolve all line numbers to PC's. */ @@ -594,7 +549,7 @@ Index: gdb-6.5/gdb/breakpoint.c /* Verify that conditions can be parsed, before setting any breakpoints. */ -@@ -5670,14 +5699,16 @@ gdb_breakpoint (char *address, char *con +@@ -5732,14 +5789,16 @@ gdb_breakpoint (char *address, char *con void resolve_sal_pc (struct symtab_and_line *sal) { @@ -614,7 +569,7 @@ Index: gdb-6.5/gdb/breakpoint.c } if (sal->section == 0 && sal->symtab != NULL) -@@ -5714,6 +5745,54 @@ resolve_sal_pc (struct symtab_and_line * +@@ -5776,6 +5835,54 @@ resolve_sal_pc (struct symtab_and_line * } } @@ -669,7 +624,7 @@ Index: gdb-6.5/gdb/breakpoint.c void break_command (char *arg, int from_tty) { -@@ -7304,6 +7305,8 @@ breakpoint_re_set_one (void *bint) +@@ -7320,6 +7427,8 @@ breakpoint_re_set_one (void *bint) int *not_found_ptr = NULL; struct symtabs_and_lines sals; char *s; @@ -678,7 +633,7 @@ Index: gdb-6.5/gdb/breakpoint.c enum enable_state save_enable; switch (b->type) -@@ -7364,11 +7367,44 @@ breakpoint_re_set_one (void *bint) +@@ -7380,11 +7489,44 @@ breakpoint_re_set_one (void *bint) set_language (b->language); input_radix = b->input_radix; s = b->addr_string; diff --git a/gdb-6.3-dtorfix-20050121.patch b/gdb-6.3-dtorfix-20050121.patch index 3ff4144..55cd23e 100644 --- a/gdb-6.3-dtorfix-20050121.patch +++ b/gdb-6.3-dtorfix-20050121.patch @@ -4,11 +4,15 @@ destructors as this will be handled in find_methods. (find_methods): Fix ctor check to also check for dtor. -Index: gdb-6.5/gdb/linespec.c +2007-10-14 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/linespec.c =================================================================== ---- gdb-6.5.orig/gdb/linespec.c 2006-07-07 01:04:56.000000000 -0300 -+++ gdb-6.5/gdb/linespec.c 2006-07-07 02:05:35.000000000 -0300 -@@ -377,12 +377,14 @@ add_matching_methods (int method_counter +--- gdb-6.7.orig/gdb/linespec.c 2007-10-13 05:26:33.000000000 +0200 ++++ gdb-6.7/gdb/linespec.c 2007-10-14 23:31:03.000000000 +0200 +@@ -398,12 +398,14 @@ add_matching_methods (int method_counter /* Check for special case of looking for member that doesn't have a mangled name provided. This will happen @@ -24,9 +28,9 @@ Index: gdb-6.5/gdb/linespec.c + || (strlen (phys_name) == strlen (class_name) + 1 + && phys_name[0] == '~')) return add_minsym_members (class_name, phys_name, msym_arr); - + /* Destructor is handled by caller, don't add it to -@@ -1709,6 +1711,11 @@ collect_methods (char *copy, struct type +@@ -1731,6 +1733,11 @@ collect_methods (char *copy, struct type { int i1 = 0; /* Counter for the symbol array. */ @@ -38,11 +42,11 @@ Index: gdb-6.5/gdb/linespec.c if (destructor_name_p (copy, t)) { /* Destructors are a special case. */ -@@ -1727,6 +1734,7 @@ collect_methods (char *copy, struct type +@@ -1749,6 +1756,7 @@ collect_methods (char *copy, struct type } } else +#endif - i1 = find_methods (t, copy, sym_arr, msym_arr); + i1 = find_methods (t, copy, SYMBOL_LANGUAGE (sym_class), sym_arr, msym_arr); return i1; diff --git a/gdb-6.3-ia64-gcore-page0-20050421.patch b/gdb-6.3-ia64-gcore-page0-20050421.patch index 6dea58a..6fad76a 100644 --- a/gdb-6.3-ia64-gcore-page0-20050421.patch +++ b/gdb-6.3-ia64-gcore-page0-20050421.patch @@ -2,7 +2,7 @@ Index: gdb-6.6/gdb/gcore.c =================================================================== --- gdb-6.6.orig/gdb/gcore.c +++ gdb-6.6/gdb/gcore.c -@@ -475,8 +475,13 @@ gcore_copy_callback (bfd *obfd, asection +@@ -475,8 +475,14 @@ gcore_copy_callback (bfd *obfd, asection if (size > total_size) size = total_size; @@ -12,7 +12,8 @@ Index: gdb-6.6/gdb/gcore.c if (target_read_memory (bfd_section_vma (obfd, osec) + offset, - memhunk, size) != 0) + memhunk, size) != 0 -+ && (strcmp (TARGET_ARCHITECTURE->arch_name, "ia64") ++ && (strcmp (gdbarch_bfd_arch_info (current_gdbarch)->arch_name, ++ "ia64") + || bfd_section_vma (obfd, osec) != 0)) { warning (_("Memory read failed for corefile section, %s bytes at 0x%s."), diff --git a/gdb-6.3-ia64-sigaltstack-20050711.patch b/gdb-6.3-ia64-sigaltstack-20050711.patch index eb0b926..1da10ac 100644 --- a/gdb-6.3-ia64-sigaltstack-20050711.patch +++ b/gdb-6.3-ia64-sigaltstack-20050711.patch @@ -17,9 +17,15 @@ (libunwind_frame_prev_register): Support request for getting the cursor address. ---- gdb-6.3/gdb/ia64-tdep.c.fix 2005-07-11 18:13:42.000000000 -0400 -+++ gdb-6.3/gdb/ia64-tdep.c 2005-07-11 18:15:52.000000000 -0400 -@@ -141,7 +141,7 @@ static int lr_regnum = IA64_VRAP_REGNUM; +2007-10-14 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/ia64-tdep.c +=================================================================== +--- gdb-6.7.orig/gdb/ia64-tdep.c 2007-10-14 23:57:38.000000000 +0200 ++++ gdb-6.7/gdb/ia64-tdep.c 2007-10-15 00:05:20.000000000 +0200 +@@ -131,7 +131,7 @@ static int lr_regnum = IA64_VRAP_REGNUM; they may not be accessible via the ptrace register get/set interfaces. */ enum pseudo_regs { FIRST_PSEUDO_REGNUM = NUM_IA64_RAW_REGS, VBOF_REGNUM = IA64_NAT127_REGNUM + 1, V32_REGNUM, V127_REGNUM = V32_REGNUM + 95, @@ -28,7 +34,7 @@ /* Array of register names; There should be ia64_num_regs strings in the initializer. */ -@@ -253,6 +253,7 @@ static char *ia64_register_names[] = +@@ -243,6 +243,7 @@ static char *ia64_register_names[] = "p40", "p41", "p42", "p43", "p44", "p45", "p46", "p47", "p48", "p49", "p50", "p51", "p52", "p53", "p54", "p55", "p56", "p57", "p58", "p59", "p60", "p61", "p62", "p63", @@ -36,7 +42,7 @@ }; struct ia64_frame_cache -@@ -1855,6 +1856,12 @@ ia64_frame_prev_register (struct frame_i +@@ -1856,6 +1857,12 @@ ia64_frame_prev_register (struct frame_i read_memory (addr, valuep, register_size (current_gdbarch, regnum)); } } @@ -49,7 +55,7 @@ else { CORE_ADDR addr = 0; -@@ -2177,6 +2184,12 @@ ia64_sigtramp_frame_prev_register (struc +@@ -2178,6 +2185,12 @@ ia64_sigtramp_frame_prev_register (struc *addrp = pr_addr; } } @@ -62,7 +68,7 @@ else { /* All other registers not listed above. */ -@@ -2296,6 +2309,8 @@ ia64_gdb2uw_regnum (int regnum) +@@ -2299,6 +2312,8 @@ ia64_gdb2uw_regnum (int regnum) return UNW_IA64_AR + (regnum - IA64_AR0_REGNUM); else if ((unsigned) (regnum - IA64_NAT0_REGNUM) < 128) return UNW_IA64_NAT + (regnum - IA64_NAT0_REGNUM); @@ -71,7 +77,7 @@ else return -1; } -@@ -2331,6 +2346,21 @@ ia64_uw2gdb_regnum (int uw_regnum) +@@ -2334,6 +2349,21 @@ ia64_uw2gdb_regnum (int uw_regnum) return -1; } @@ -93,7 +99,7 @@ /* Gdb libunwind-frame callback function to reveal if register is a float register or not. */ static int -@@ -3111,6 +3141,7 @@ static struct libunwind_descr ia64_libun +@@ -3046,6 +3076,7 @@ static struct libunwind_descr ia64_libun ia64_gdb2uw_regnum, ia64_uw2gdb_regnum, ia64_is_fpreg, @@ -101,9 +107,11 @@ &ia64_unw_accessors, &ia64_unw_rse_accessors, }; ---- gdb-6.3/gdb/libunwind-frame.c.fix 2005-07-11 18:17:05.000000000 -0400 -+++ gdb-6.3/gdb/libunwind-frame.c 2005-07-11 18:20:31.000000000 -0400 -@@ -122,6 +122,7 @@ libunwind_frame_set_descr (struct gdbarc +Index: gdb-6.7/gdb/libunwind-frame.c +=================================================================== +--- gdb-6.7.orig/gdb/libunwind-frame.c 2007-08-23 20:08:35.000000000 +0200 ++++ gdb-6.7/gdb/libunwind-frame.c 2007-10-15 00:07:56.000000000 +0200 +@@ -125,6 +125,7 @@ libunwind_frame_set_descr (struct gdbarc arch_descr->is_fpreg = descr->is_fpreg; arch_descr->accessors = descr->accessors; arch_descr->special_accessors = descr->special_accessors; @@ -111,7 +119,7 @@ } static struct libunwind_frame_cache * -@@ -129,6 +130,7 @@ libunwind_frame_cache (struct frame_info +@@ -132,6 +133,7 @@ libunwind_frame_cache (struct frame_info { unw_accessors_t *acc; unw_addr_space_t as; @@ -119,7 +127,7 @@ unw_word_t fp; unw_regnum_t uw_sp_regnum; struct libunwind_frame_cache *cache; -@@ -147,22 +149,33 @@ libunwind_frame_cache (struct frame_info +@@ -153,23 +155,34 @@ libunwind_frame_cache (struct frame_info && get_frame_type (next_frame) != SIGTRAMP_FRAME) return NULL; @@ -151,7 +159,8 @@ + { + acc = descr->accessors; + as = unw_create_addr_space_p (acc, - TARGET_BYTE_ORDER == BFD_ENDIAN_BIG + gdbarch_byte_order (current_gdbarch) + == BFD_ENDIAN_BIG ? __BIG_ENDIAN : __LITTLE_ENDIAN); @@ -162,9 +171,9 @@ + cache->cursor = *cursor_addr; + if (unw_step_p (&cache->cursor) < 0) - return NULL; - -@@ -285,6 +298,16 @@ libunwind_frame_prev_register (struct fr + { + unw_destroy_addr_space_p (as); +@@ -316,6 +329,16 @@ libunwind_frame_prev_register (struct fr if (uw_regnum < 0) return; @@ -181,9 +190,11 @@ /* To get the previous register, we use the libunwind register APIs with the cursor we have already pushed back to the previous frame. */ ---- gdb-6.3/gdb/libunwind-frame.h.fix 2005-07-11 18:17:24.000000000 -0400 -+++ gdb-6.3/gdb/libunwind-frame.h 2005-07-11 18:18:46.000000000 -0400 -@@ -37,6 +37,7 @@ struct libunwind_descr +Index: gdb-6.7/gdb/libunwind-frame.h +=================================================================== +--- gdb-6.7.orig/gdb/libunwind-frame.h 2007-08-23 20:08:35.000000000 +0200 ++++ gdb-6.7/gdb/libunwind-frame.h 2007-10-15 00:05:20.000000000 +0200 +@@ -36,6 +36,7 @@ struct libunwind_descr int (*gdb2uw) (int); int (*uw2gdb) (int); int (*is_fpreg) (int); diff --git a/gdb-6.3-ia64-sigtramp-fp-20050926.patch b/gdb-6.3-ia64-sigtramp-fp-20050926.patch index aa31f24..e96c5b6 100644 --- a/gdb-6.3-ia64-sigtramp-fp-20050926.patch +++ b/gdb-6.3-ia64-sigtramp-fp-20050926.patch @@ -11,20 +11,24 @@ * ia64-tdep.c (ia64_libunwind_sigtramp_frame_this_id): Calculate the base address using the current stack pointer plus a fixed offset. - -Index: gdb-6.5/gdb/libunwind-frame.c + +2007-10-14 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/libunwind-frame.c =================================================================== ---- gdb-6.5.orig/gdb/libunwind-frame.c 2006-07-07 03:04:32.000000000 -0300 -+++ gdb-6.5/gdb/libunwind-frame.c 2006-07-07 03:07:33.000000000 -0300 -@@ -62,6 +62,7 @@ static unw_word_t (*unw_find_dyn_list_p) +--- gdb-6.7.orig/gdb/libunwind-frame.c 2007-10-15 00:08:30.000000000 +0200 ++++ gdb-6.7/gdb/libunwind-frame.c 2007-10-15 00:13:29.000000000 +0200 +@@ -61,6 +61,7 @@ static unw_word_t (*unw_find_dyn_list_p) struct libunwind_frame_cache { CORE_ADDR base; + CORE_ADDR sp; CORE_ADDR func_addr; unw_cursor_t cursor; - }; -@@ -131,7 +132,7 @@ libunwind_frame_cache (struct frame_info + unw_addr_space_t as; +@@ -134,7 +135,7 @@ libunwind_frame_cache (struct frame_info unw_accessors_t *acc; unw_addr_space_t as; unw_cursor_t *cursor_addr; @@ -33,7 +37,7 @@ Index: gdb-6.5/gdb/libunwind-frame.c unw_regnum_t uw_sp_regnum; struct libunwind_frame_cache *cache; struct libunwind_descr *descr; -@@ -176,15 +177,28 @@ libunwind_frame_cache (struct frame_info +@@ -183,14 +184,29 @@ libunwind_frame_cache (struct frame_info else /* make copy */ cache->cursor = *cursor_addr; @@ -46,25 +50,34 @@ Index: gdb-6.5/gdb/libunwind-frame.c + sigaltstack as we want. To handle this, we record the stack + address so the caller may calculate a more correct base address + to use. */ -+ uw_sp_regnum = descr->gdb2uw (SP_REGNUM); ++ uw_sp_regnum = descr->gdb2uw (gdbarch_sp_regnum (current_gdbarch)); + ret = unw_get_reg_p (&cache->cursor, uw_sp_regnum, &sp); + if (ret < 0) -+ error ("Can't get libunwind sp register."); ++ { ++ unw_destroy_addr_space_p (as); ++ error (_("Can't get libunwind sp register.")); ++ } + if (unw_step_p (&cache->cursor) < 0) - return NULL; + { + unw_destroy_addr_space_p (as); + return NULL; + } - /* To get base address, get sp from previous frame. */ -- uw_sp_regnum = descr->gdb2uw (SP_REGNUM); +- uw_sp_regnum = descr->gdb2uw (gdbarch_sp_regnum (current_gdbarch)); ret = unw_get_reg_p (&cache->cursor, uw_sp_regnum, &fp); if (ret < 0) - error (_("Can't get libunwind sp register.")); + { +@@ -198,6 +214,7 @@ libunwind_frame_cache (struct frame_info + error (_("Can't get libunwind sp register.")); + } + cache->sp = (CORE_ADDR)sp; cache->base = (CORE_ADDR)fp; + cache->as = as; - *this_cache = cache; -@@ -371,6 +385,31 @@ libunwind_search_unwind_table (void *as, +@@ -402,6 +419,31 @@ libunwind_search_unwind_table (void *as, di, pi, need_unwind_info, args); } @@ -96,20 +109,20 @@ Index: gdb-6.5/gdb/libunwind-frame.c /* Verify if we are in a sigtramp frame and we can use libunwind to unwind. */ const struct frame_unwind * libunwind_sigtramp_frame_sniffer (struct frame_info *next_frame) -@@ -403,7 +442,7 @@ libunwind_sigtramp_frame_sniffer (struct - /* Check to see if we are in a signal frame. */ +@@ -439,7 +481,7 @@ libunwind_sigtramp_frame_sniffer (struct ret = unw_is_signal_frame_p (&cursor); + unw_destroy_addr_space_p (as); if (ret > 0) - return &libunwind_frame_unwind; + return &libunwind_sigtramp_frame_unwind; return NULL; } -Index: gdb-6.5/gdb/libunwind-frame.h +Index: gdb-6.7/gdb/libunwind-frame.h =================================================================== ---- gdb-6.5.orig/gdb/libunwind-frame.h 2006-07-07 02:51:32.000000000 -0300 -+++ gdb-6.5/gdb/libunwind-frame.h 2006-07-07 03:05:49.000000000 -0300 -@@ -49,6 +49,9 @@ void libunwind_frame_set_descr (struct g +--- gdb-6.7.orig/gdb/libunwind-frame.h 2007-10-15 00:05:20.000000000 +0200 ++++ gdb-6.7/gdb/libunwind-frame.h 2007-10-15 00:08:36.000000000 +0200 +@@ -48,6 +48,9 @@ void libunwind_frame_set_descr (struct g void libunwind_frame_this_id (struct frame_info *next_frame, void **this_cache, struct frame_id *this_id); @@ -119,11 +132,11 @@ Index: gdb-6.5/gdb/libunwind-frame.h void libunwind_frame_prev_register (struct frame_info *next_frame, void **this_cache, int regnum, int *optimizedp, enum lval_type *lvalp, CORE_ADDR *addrp, -Index: gdb-6.5/gdb/ia64-tdep.c +Index: gdb-6.7/gdb/ia64-tdep.c =================================================================== ---- gdb-6.5.orig/gdb/ia64-tdep.c 2006-07-07 02:51:32.000000000 -0300 -+++ gdb-6.5/gdb/ia64-tdep.c 2006-07-07 03:05:49.000000000 -0300 -@@ -3031,7 +3031,7 @@ ia64_libunwind_sigtramp_frame_this_id (s +--- gdb-6.7.orig/gdb/ia64-tdep.c 2007-10-15 00:05:20.000000000 +0200 ++++ gdb-6.7/gdb/ia64-tdep.c 2007-10-15 00:08:36.000000000 +0200 +@@ -2968,7 +2968,7 @@ ia64_libunwind_sigtramp_frame_this_id (s struct frame_id id; CORE_ADDR prev_ip; @@ -132,7 +145,7 @@ Index: gdb-6.5/gdb/ia64-tdep.c if (frame_id_eq (id, null_frame_id)) { (*this_id) = null_frame_id; -@@ -3043,8 +3043,14 @@ ia64_libunwind_sigtramp_frame_this_id (s +@@ -2980,8 +2980,14 @@ ia64_libunwind_sigtramp_frame_this_id (s frame_unwind_register (next_frame, IA64_BSP_REGNUM, buf); bsp = extract_unsigned_integer (buf, 8); diff --git a/gdb-6.3-ia64-vsyscall-20050330.patch b/gdb-6.3-ia64-vsyscall-20050330.patch deleted file mode 100644 index 8a697c6..0000000 --- a/gdb-6.3-ia64-vsyscall-20050330.patch +++ /dev/null @@ -1,19 +0,0 @@ -2005-03-30 Jeff Johnston - - * bfd/elfcode.h: Change code to allow for idiosyncrasies of - ia64 vsyscall page. - -Index: gdb-6.5/bfd/elfcode.h -=================================================================== ---- gdb-6.5.orig/bfd/elfcode.h 2006-05-11 05:57:08.000000000 -0300 -+++ gdb-6.5/bfd/elfcode.h 2006-07-07 02:36:03.000000000 -0300 -@@ -1625,7 +1625,8 @@ NAME(_bfd_elf,bfd_from_remote_memory) - if (segment_end > (bfd_vma) contents_size) - contents_size = segment_end; - -- if ((i_phdrs[i].p_offset & -i_phdrs[i].p_align) == 0) -+ if ((i_phdrs[i].p_offset & -i_phdrs[i].p_align) == 0 -+ && loadbase == ehdr_vma) - loadbase = ehdr_vma - (i_phdrs[i].p_vaddr & -i_phdrs[i].p_align); - - last_phdr = &i_phdrs[i]; diff --git a/gdb-6.3-large-core-20051206.patch b/gdb-6.3-large-core-20051206.patch index a80e41a..1b32fbe 100644 --- a/gdb-6.3-large-core-20051206.patch +++ b/gdb-6.3-large-core-20051206.patch @@ -21,11 +21,15 @@ * remote.h: Ditto. * dcache.h: Ditto. -Index: gdb-6.6/gdb/symfile-mem.c +2007-10-15 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/symfile-mem.c =================================================================== ---- gdb-6.6.orig/gdb/symfile-mem.c 2007-01-20 16:09:05.000000000 +0100 -+++ gdb-6.6/gdb/symfile-mem.c 2007-01-20 16:09:17.000000000 +0100 -@@ -58,6 +58,14 @@ +--- gdb-6.7.orig/gdb/symfile-mem.c 2007-10-13 05:29:58.000000000 +0200 ++++ gdb-6.7/gdb/symfile-mem.c 2007-10-15 21:37:54.000000000 +0200 +@@ -56,6 +56,14 @@ #include "elf/common.h" @@ -40,7 +44,7 @@ Index: gdb-6.6/gdb/symfile-mem.c /* Read inferior memory at ADDR to find the header of a loaded object file and read its in-core symbols out of inferior memory. TEMPL is a bfd representing the target's format. NAME is the name to use for this -@@ -78,7 +86,7 @@ symbol_file_add_from_memory (struct bfd +@@ -76,7 +84,7 @@ symbol_file_add_from_memory (struct bfd error (_("add-symbol-file-from-memory not supported for this target")); nbfd = bfd_elf_bfd_from_remote_memory (templ, addr, &loadbase, @@ -49,11 +53,11 @@ Index: gdb-6.6/gdb/symfile-mem.c if (nbfd == NULL) error (_("Failed to read a valid object file image from memory.")); -Index: gdb-6.6/gdb/target.c +Index: gdb-6.7/gdb/target.c =================================================================== ---- gdb-6.6.orig/gdb/target.c 2007-01-20 16:09:12.000000000 +0100 -+++ gdb-6.6/gdb/target.c 2007-01-20 16:09:17.000000000 +0100 -@@ -56,7 +56,7 @@ static int nosymbol (char *, CORE_ADDR * +--- gdb-6.7.orig/gdb/target.c 2007-10-14 23:42:39.000000000 +0200 ++++ gdb-6.7/gdb/target.c 2007-10-15 21:37:54.000000000 +0200 +@@ -55,7 +55,7 @@ static int nosymbol (char *, CORE_ADDR * static void tcomplain (void) ATTR_NORETURN; @@ -62,7 +66,7 @@ Index: gdb-6.6/gdb/target.c static int return_zero (void); -@@ -284,7 +284,7 @@ target_mourn_inferior (void) +@@ -283,7 +283,7 @@ target_mourn_inferior (void) observer_notify_mourn_inferior (¤t_target); } @@ -71,8 +75,8 @@ Index: gdb-6.6/gdb/target.c nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write, struct target_ops *t) { -@@ -517,7 +517,7 @@ update_current_target (void) - (void (*) (void)) +@@ -518,7 +518,7 @@ update_current_target (void) + (void (*) (struct regcache *)) noprocess); de_fault (deprecated_xfer_memory, - (int (*) (CORE_ADDR, gdb_byte *, int, int, struct mem_attrib *, struct target_ops *)) @@ -80,7 +84,7 @@ Index: gdb-6.6/gdb/target.c nomemory); de_fault (to_files_info, (void (*) (struct target_ops *)) -@@ -1178,7 +1178,7 @@ target_xfer_partial (struct target_ops * +@@ -1195,7 +1195,7 @@ target_xfer_partial (struct target_ops * it makes no progress, and then return how much was transferred). */ int @@ -89,7 +93,7 @@ Index: gdb-6.6/gdb/target.c { if (target_read (¤t_target, TARGET_OBJECT_MEMORY, NULL, myaddr, memaddr, len) == len) -@@ -1188,7 +1188,7 @@ target_read_memory (CORE_ADDR memaddr, g +@@ -1205,7 +1205,7 @@ target_read_memory (CORE_ADDR memaddr, g } int @@ -98,7 +102,7 @@ Index: gdb-6.6/gdb/target.c { if (target_write (¤t_target, TARGET_OBJECT_MEMORY, NULL, myaddr, memaddr, len) == len) -@@ -2186,8 +2186,8 @@ debug_to_prepare_to_store (void) +@@ -2228,8 +2228,8 @@ debug_to_prepare_to_store (struct regcac fprintf_unfiltered (gdb_stdlog, "target_prepare_to_store ()\n"); } @@ -109,7 +113,7 @@ Index: gdb-6.6/gdb/target.c int write, struct mem_attrib *attrib, struct target_ops *target) { -@@ -2197,9 +2197,9 @@ deprecated_debug_xfer_memory (CORE_ADDR +@@ -2239,9 +2239,9 @@ deprecated_debug_xfer_memory (CORE_ADDR attrib, target); fprintf_unfiltered (gdb_stdlog, @@ -121,11 +125,11 @@ Index: gdb-6.6/gdb/target.c if (retval > 0) { -Index: gdb-6.6/gdb/target.h +Index: gdb-6.7/gdb/target.h =================================================================== ---- gdb-6.6.orig/gdb/target.h 2007-01-20 16:09:10.000000000 +0100 -+++ gdb-6.6/gdb/target.h 2007-01-20 16:09:17.000000000 +0100 -@@ -347,10 +347,10 @@ struct target_ops +--- gdb-6.7.orig/gdb/target.h 2007-10-14 23:24:52.000000000 +0200 ++++ gdb-6.7/gdb/target.h 2007-10-15 21:39:20.000000000 +0200 +@@ -351,10 +351,10 @@ struct target_ops NOTE: cagney/2004-10-01: This has been entirely superseeded by to_xfer_partial and inferior inheritance. */ @@ -140,7 +144,7 @@ Index: gdb-6.6/gdb/target.h void (*to_files_info) (struct target_ops *); int (*to_insert_breakpoint) (struct bp_target_info *); -@@ -605,16 +605,17 @@ extern DCACHE *target_dcache; +@@ -615,13 +615,14 @@ extern DCACHE *target_dcache; extern int target_read_string (CORE_ADDR, char **, int, int *); @@ -157,46 +161,13 @@ Index: gdb-6.6/gdb/target.h +extern LONGEST xfer_memory (CORE_ADDR, gdb_byte *, LONGEST, int, + struct mem_attrib *, struct target_ops *); --extern int child_xfer_memory (CORE_ADDR, gdb_byte *, int, int, -- struct mem_attrib *, struct target_ops *); -+extern LONGEST child_xfer_memory (CORE_ADDR, gdb_byte *, LONGEST, int, -+ struct mem_attrib *, struct target_ops *); - /* Fetches the target's memory map. If one is found it is sorted and returned, after some consistency checking. Otherwise, NULL -Index: gdb-6.6/gdb/infptrace.c +Index: gdb-6.7/gdb/dcache.c =================================================================== ---- gdb-6.6.orig/gdb/infptrace.c 2005-12-17 23:34:01.000000000 +0100 -+++ gdb-6.6/gdb/infptrace.c 2007-01-20 16:09:17.000000000 +0100 -@@ -331,17 +331,17 @@ store_inferior_registers (int regnum) - deprecated_child_ops doesn't allow memory operations to cross below - us in the target stack anyway. */ - --int --child_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write, -+LONGEST -+child_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, LONGEST len, int write, - struct mem_attrib *attrib, struct target_ops *target) - { -- int i; -+ LONGEST i; - /* Round starting address down to longword boundary. */ - CORE_ADDR addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_TYPE_RET); - /* Round ending address up; get number of longwords that makes. */ -- int count = ((((memaddr + len) - addr) + sizeof (PTRACE_TYPE_RET) - 1) -- / sizeof (PTRACE_TYPE_RET)); -- int alloc = count * sizeof (PTRACE_TYPE_RET); -+ LONGEST count = ((((memaddr + len) - addr) + sizeof (PTRACE_TYPE_RET) - 1) -+ / sizeof (PTRACE_TYPE_RET)); -+ LONGEST alloc = count * sizeof (PTRACE_TYPE_RET); - PTRACE_TYPE_RET *buffer; - struct cleanup *old_chain = NULL; - -Index: gdb-6.6/gdb/dcache.c -=================================================================== ---- gdb-6.6.orig/gdb/dcache.c 2006-08-15 20:46:24.000000000 +0200 -+++ gdb-6.6/gdb/dcache.c 2007-01-20 16:09:17.000000000 +0100 -@@ -519,9 +519,9 @@ dcache_free (DCACHE *dcache) +--- gdb-6.7.orig/gdb/dcache.c 2007-08-23 20:08:28.000000000 +0200 ++++ gdb-6.7/gdb/dcache.c 2007-10-15 21:37:54.000000000 +0200 +@@ -517,9 +517,9 @@ dcache_free (DCACHE *dcache) This routine is indended to be called by remote_xfer_ functions. */ @@ -208,11 +179,11 @@ Index: gdb-6.6/gdb/dcache.c { int i; int (*xfunc) (DCACHE *dcache, CORE_ADDR addr, gdb_byte *ptr); -Index: gdb-6.6/gdb/dcache.h +Index: gdb-6.7/gdb/dcache.h =================================================================== ---- gdb-6.6.orig/gdb/dcache.h 2005-12-17 23:33:59.000000000 +0100 -+++ gdb-6.6/gdb/dcache.h 2007-01-20 16:09:17.000000000 +0100 -@@ -37,7 +37,7 @@ void dcache_free (DCACHE *); +--- gdb-6.7.orig/gdb/dcache.h 2007-08-23 20:08:28.000000000 +0200 ++++ gdb-6.7/gdb/dcache.h 2007-10-15 21:37:54.000000000 +0200 +@@ -35,7 +35,7 @@ void dcache_free (DCACHE *); /* Simple to call from _xfer_memory */ @@ -222,11 +193,11 @@ Index: gdb-6.6/gdb/dcache.h + LONGEST len, int should_write); #endif /* DCACHE_H */ -Index: gdb-6.6/gdb/exec.c +Index: gdb-6.7/gdb/exec.c =================================================================== ---- gdb-6.6.orig/gdb/exec.c 2006-11-10 20:20:35.000000000 +0100 -+++ gdb-6.6/gdb/exec.c 2007-01-20 16:09:17.000000000 +0100 -@@ -452,8 +452,8 @@ map_vmap (bfd *abfd, bfd *arch) +--- gdb-6.7.orig/gdb/exec.c 2007-08-23 20:08:28.000000000 +0200 ++++ gdb-6.7/gdb/exec.c 2007-10-15 21:37:54.000000000 +0200 +@@ -453,8 +453,8 @@ map_vmap (bfd *abfd, bfd *arch) The same routine is used to handle both core and exec files; we just tail-call it with more arguments to select between them. */ @@ -237,11 +208,11 @@ Index: gdb-6.6/gdb/exec.c struct mem_attrib *attrib, struct target_ops *target) { int res; -Index: gdb-6.6/gdb/linux-nat.c +Index: gdb-6.7/gdb/linux-nat.c =================================================================== ---- gdb-6.6.orig/gdb/linux-nat.c 2007-01-20 16:09:14.000000000 +0100 -+++ gdb-6.6/gdb/linux-nat.c 2007-01-20 16:09:17.000000000 +0100 -@@ -3266,7 +3266,7 @@ linux_xfer_partial (struct target_ops *o +--- gdb-6.7.orig/gdb/linux-nat.c 2007-10-15 00:13:52.000000000 +0200 ++++ gdb-6.7/gdb/linux-nat.c 2007-10-15 21:37:54.000000000 +0200 +@@ -3248,7 +3248,7 @@ linux_xfer_partial (struct target_ops *o Revert when Bugzilla 147436 is fixed. */ if (iterate_over_lwps (ia64_linux_check_stack_region, &range) != NULL) { /* This region contains ia64 rse registers, we have to re-read. */ @@ -250,11 +221,11 @@ Index: gdb-6.6/gdb/linux-nat.c /* Re-read register stack area. */ xxfer = super_xfer_partial (ops, object, annex, -Index: gdb-6.6/gdb/remote.c +Index: gdb-6.7/gdb/remote.c =================================================================== ---- gdb-6.6.orig/gdb/remote.c 2007-01-20 16:09:12.000000000 +0100 -+++ gdb-6.6/gdb/remote.c 2007-01-20 16:09:17.000000000 +0100 -@@ -27,6 +27,7 @@ +--- gdb-6.7.orig/gdb/remote.c 2007-10-14 23:42:39.000000000 +0200 ++++ gdb-6.7/gdb/remote.c 2007-10-15 21:37:54.000000000 +0200 +@@ -25,6 +25,7 @@ #include "gdb_string.h" #include #include @@ -262,7 +233,7 @@ Index: gdb-6.6/gdb/remote.c #include "inferior.h" #include "bfd.h" #include "symfile.h" -@@ -4185,19 +4186,27 @@ remote_read_bytes (CORE_ADDR memaddr, gd +@@ -4484,19 +4485,27 @@ remote_read_bytes (CORE_ADDR memaddr, gd if SHOULD_WRITE is nonzero. Returns length of data written or read; 0 for error. TARGET is unused. */ @@ -293,11 +264,11 @@ Index: gdb-6.6/gdb/remote.c } /* Sends a packet with content determined by the printf format string -Index: gdb-6.6/gdb/remote-sim.c +Index: gdb-6.7/gdb/remote-sim.c =================================================================== ---- gdb-6.6.orig/gdb/remote-sim.c 2006-11-10 20:20:36.000000000 +0100 -+++ gdb-6.6/gdb/remote-sim.c 2007-01-20 16:10:10.000000000 +0100 -@@ -745,11 +745,14 @@ gdbsim_prepare_to_store (void) +--- gdb-6.7.orig/gdb/remote-sim.c 2007-08-23 20:08:36.000000000 +0200 ++++ gdb-6.7/gdb/remote-sim.c 2007-10-15 21:41:33.000000000 +0200 +@@ -747,11 +747,14 @@ gdbsim_prepare_to_store (struct regcache Returns the number of bytes transferred. */ @@ -314,13 +285,13 @@ Index: gdb-6.6/gdb/remote-sim.c /* If no program is running yet, then ignore the simulator for memory. Pass the request down to the next target, hopefully an exec file. */ -@@ -765,22 +768,22 @@ gdbsim_xfer_inferior_memory (CORE_ADDR m +@@ -767,22 +770,22 @@ gdbsim_xfer_inferior_memory (CORE_ADDR m printf_filtered ("gdbsim_xfer_inferior_memory: myaddr 0x"); gdb_print_host_address (myaddr, gdb_stdout); printf_filtered (", memaddr 0x%s, len %d, write %d\n", - paddr_nz (memaddr), len, write); + paddr_nz (memaddr), xfer_len, write); - if (sr_get_debug () && write) + if (remote_debug && write) - dump_mem (myaddr, len); + dump_mem (myaddr, xfer_len); } @@ -333,10 +304,10 @@ Index: gdb-6.6/gdb/remote-sim.c else { - len = sim_read (gdbsim_desc, memaddr, myaddr, len); -- if (sr_get_debug () && len > 0) +- if (remote_debug && len > 0) - dump_mem (myaddr, len); + xfer_len = sim_read (gdbsim_desc, memaddr, myaddr, xfer_len); -+ if (sr_get_debug () && xfer_len > 0) ++ if (remote_debug && xfer_len > 0) + dump_mem (myaddr, xfer_len); } - return len; diff --git a/gdb-6.3-linespec-20041213.patch b/gdb-6.3-linespec-20041213.patch index f33eec3..08beccf 100644 --- a/gdb-6.3-linespec-20041213.patch +++ b/gdb-6.3-linespec-20041213.patch @@ -15,44 +15,49 @@ (decode_variable_not_found): ... a new function here. (decode_variable): New function. -Index: gdb-6.5/gdb/linespec.c +2007-10-31 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/linespec.c =================================================================== ---- gdb-6.5.orig/gdb/linespec.c 2006-01-10 20:14:43.000000000 -0200 -+++ gdb-6.5/gdb/linespec.c 2006-07-07 01:04:56.000000000 -0300 -@@ -37,6 +37,7 @@ - #include "objc-lang.h" +--- gdb-6.7.orig/gdb/linespec.c 2007-08-23 20:08:35.000000000 +0200 ++++ gdb-6.7/gdb/linespec.c 2007-10-13 05:26:33.000000000 +0200 +@@ -36,6 +36,7 @@ #include "linespec.h" #include "exceptions.h" + #include "language.h" +#include "gdb_assert.h" /* We share this one with symtab.c, but it is not exported widely. */ -@@ -75,7 +75,8 @@ static struct symtabs_and_lines find_met - struct symbol *sym_class); +@@ -75,7 +76,8 @@ static struct symtabs_and_lines find_met static int collect_methods (char *copy, struct type *t, + struct symbol *sym_class, - struct symbol **sym_arr); + struct symbol **sym_arr, + struct minimal_symbol **msym_arr); static NORETURN void cplusplus_error (const char *name, const char *fmt, ...) -@@ -83,10 +84,12 @@ static NORETURN void cplusplus_error (co - +@@ -84,11 +86,13 @@ static NORETURN void cplusplus_error (co static int total_number_of_methods (struct type *type); --static int find_methods (struct type *, char *, struct symbol **); -+static int find_methods (struct type *, char *, struct symbol **, + static int find_methods (struct type *, char *, +- enum language, struct symbol **); ++ enum language, struct symbol **, + struct minimal_symbol **); static int add_matching_methods (int method_counter, struct type *t, + enum language language, - struct symbol **sym_arr); + struct symbol **sym_arr, + struct minimal_symbol **msym_arr); static int add_constructors (int method_counter, struct type *t, - struct symbol **sym_arr); -@@ -101,6 +104,9 @@ static int is_objc_method_format (const + enum language language, +@@ -104,6 +108,9 @@ static int is_objc_method_format (const static struct symtabs_and_lines decode_line_2 (struct symbol *[], int, int, char ***); @@ -62,7 +67,7 @@ Index: gdb-6.5/gdb/linespec.c static struct symtab *symtab_from_filename (char **argptr, char *p, int is_quote_enclosed, int *not_found_ptr); -@@ -191,12 +197,18 @@ total_number_of_methods (struct type *ty +@@ -194,13 +201,18 @@ total_number_of_methods (struct type *ty /* Recursive helper function for decode_line_1. Look for methods named NAME in type T. Return number of matches. @@ -77,29 +82,27 @@ Index: gdb-6.5/gdb/linespec.c Note that this function is g++ specific. */ static int --find_methods (struct type *t, char *name, struct symbol **sym_arr) -+find_methods (struct type *t, char *name, struct symbol **sym_arr, -+ struct minimal_symbol **msym_arr) + find_methods (struct type *t, char *name, enum language language, +- struct symbol **sym_arr) ++ struct symbol **sym_arr, struct minimal_symbol **msym_arr) { int i1 = 0; int ibase; -@@ -239,7 +251,8 @@ find_methods (struct type *t, char *name +@@ -243,7 +255,7 @@ find_methods (struct type *t, char *name if (strcmp_iw (name, method_name) == 0) /* Find all the overloaded methods with that name. */ - i1 += add_matching_methods (method_counter, t, + i1 += add_matching_methods (method_counter, t, language, - sym_arr + i1); -+ sym_arr + i1, -+ msym_arr); ++ sym_arr + i1, msym_arr); else if (strncmp (class_name, name, name_len) == 0 && (class_name[name_len] == '\0' || class_name[name_len] == '<')) -@@ -261,21 +274,101 @@ find_methods (struct type *t, char *name - +@@ -266,21 +278,100 @@ find_methods (struct type *t, char *name if (i1 == 0) for (ibase = 0; ibase < TYPE_N_BASECLASSES (t); ibase++) -- i1 += find_methods (TYPE_BASECLASS (t, ibase), name, sym_arr + i1); -+ i1 += find_methods (TYPE_BASECLASS (t, ibase), name, sym_arr + i1, -+ msym_arr); + i1 += find_methods (TYPE_BASECLASS (t, ibase), name, +- language, sym_arr + i1); ++ language, sym_arr + i1, msym_arr); return i1; } @@ -185,8 +188,8 @@ Index: gdb-6.5/gdb/linespec.c static int add_matching_methods (int method_counter, struct type *t, -- struct symbol **sym_arr) -+ struct symbol **sym_arr, +- enum language language, struct symbol **sym_arr) ++ enum language language, struct symbol **sym_arr, + struct minimal_symbol **msym_arr) { int field_counter; @@ -197,11 +200,10 @@ Index: gdb-6.5/gdb/linespec.c for (field_counter = TYPE_FN_FIELDLIST_LENGTH (t, method_counter) - 1; field_counter >= 0; -@@ -299,6 +374,16 @@ add_matching_methods (int method_counter - } +@@ -305,6 +396,16 @@ add_matching_methods (int method_counter else phys_name = TYPE_FN_FIELD_PHYSNAME (f, field_counter); -+ + + /* Check for special case of looking for member that + doesn't have a mangled name provided. This will happen + when we have in-charge and not-in-charge constructors. @@ -211,10 +213,11 @@ Index: gdb-6.5/gdb/linespec.c + table which has the full member name information we need. */ + if (strlen (phys_name) <= strlen (class_name)) + return add_minsym_members (class_name, phys_name, msym_arr); - ++ /* Destructor is handled by caller, don't add it to the list. */ -@@ -324,6 +409,9 @@ add_matching_methods (int method_counter + if (is_destructor_name (phys_name) != 0) +@@ -330,6 +431,9 @@ add_matching_methods (int method_counter } } @@ -224,7 +227,7 @@ Index: gdb-6.5/gdb/linespec.c return i1; } -@@ -603,6 +691,146 @@ decode_line_2 (struct symbol *sym_arr[], +@@ -610,6 +714,146 @@ decode_line_2 (struct symbol *sym_arr[], discard_cleanups (old_chain); return return_values; } @@ -371,20 +374,20 @@ Index: gdb-6.5/gdb/linespec.c /* The parser of linespec itself. */ -@@ -1406,36 +1634,46 @@ find_method (int funfirstline, char ***c - int i1; /* Counter for the symbol array. */ +@@ -1414,35 +1658,46 @@ find_method (int funfirstline, char ***c struct symbol **sym_arr = alloca (total_number_of_methods (t) * sizeof (struct symbol *)); + + struct minimal_symbol **msym_arr = alloca (total_number_of_methods (t) + * sizeof (struct minimal_symbol *)); + + msym_arr[0] = NULL; - ++ /* Find all methods with a matching name, and put them in sym_arr. */ -- i1 = collect_methods (copy, t, sym_arr); -+ i1 = collect_methods (copy, t, sym_arr, msym_arr); +- i1 = collect_methods (copy, t, sym_class, sym_arr); ++ i1 = collect_methods (copy, t, sym_class, sym_arr, msym_arr); if (i1 == 1) { @@ -428,11 +431,11 @@ Index: gdb-6.5/gdb/linespec.c /* There is more than one field with that name (overloaded). Ask the user which one to use. */ + if (msym_arr[0] != NULL) -+ return decode_line_3 (msym_arr, i1, funfirstline, canonical); ++ return decode_line_3 (msym_arr, i1, funfirstline, canonical); return decode_line_2 (sym_arr, i1, funfirstline, canonical); } else -@@ -1462,11 +1700,12 @@ find_method (int funfirstline, char ***c +@@ -1469,11 +1722,12 @@ find_method (int funfirstline, char ***c } /* Find all methods named COPY in the class whose type is T, and put @@ -441,22 +444,22 @@ Index: gdb-6.5/gdb/linespec.c static int collect_methods (char *copy, struct type *t, -- struct symbol **sym_arr) -+ struct symbol **sym_arr, +- struct symbol *sym_class, struct symbol **sym_arr) ++ struct symbol *sym_class, struct symbol **sym_arr, + struct minimal_symbol **msym_arr) { int i1 = 0; /* Counter for the symbol array. */ -@@ -1488,7 +1727,7 @@ collect_methods (char *copy, struct type +@@ -1495,7 +1749,7 @@ collect_methods (char *copy, struct type } } else -- i1 = find_methods (t, copy, sym_arr); -+ i1 = find_methods (t, copy, sym_arr, msym_arr); +- i1 = find_methods (t, copy, SYMBOL_LANGUAGE (sym_class), sym_arr); ++ i1 = find_methods (t, copy, SYMBOL_LANGUAGE (sym_class), sym_arr, msym_arr); return i1; } -@@ -1976,12 +2021,13 @@ decode_dollar (char *copy, int funfirstl +@@ -1717,12 +1971,13 @@ decode_dollar (char *copy, int funfirstl and do not issue an error message. */ static struct symtabs_and_lines @@ -472,7 +475,7 @@ Index: gdb-6.5/gdb/linespec.c struct minimal_symbol *msymbol; -@@ -2001,8 +2047,25 @@ decode_variable (char *copy, int funfirs +@@ -1740,8 +1995,25 @@ decode_variable (char *copy, int funfirs msymbol = lookup_minimal_symbol (copy, NULL, NULL); if (msymbol != NULL) @@ -484,10 +487,10 @@ Index: gdb-6.5/gdb/linespec.c + if (file_symtab == 0) + build_canonical_line_spec (retval.sals, SYMBOL_LINKAGE_NAME (msymbol), + canonical); -+ + + return retval; + } - ++ + retval.nelts = 0; + retval.sals = NULL; + return retval; @@ -499,7 +502,7 @@ Index: gdb-6.5/gdb/linespec.c if (!have_full_symbols () && !have_partial_symbols () && !have_minimal_symbols ()) error (_("No symbol table is loaded. Use the \"file\" command.")); -@@ -2010,6 +2064,132 @@ decode_variable (char *copy, int funfirs +@@ -1751,6 +2023,132 @@ decode_variable (char *copy, int funfirs throw_error (NOT_FOUND_ERROR, _("Function \"%s\" not defined."), copy); } @@ -632,15 +635,17 @@ Index: gdb-6.5/gdb/linespec.c -diff -u -rup gdb-6.6-orig/gdb/Makefile.in gdb-6.6/gdb/Makefile.in ---- gdb-6.6-orig/gdb/Makefile.in 2007-10-05 15:22:37.000000000 +0200 -+++ gdb-6.6/gdb/Makefile.in 2007-10-05 16:29:10.000000000 +0200 -@@ -2266,7 +2266,7 @@ libunwind-frame.o: libunwind-frame.c $(d +Index: gdb-6.7/gdb/Makefile.in +=================================================================== +--- gdb-6.7.orig/gdb/Makefile.in 2007-10-13 05:09:50.000000000 +0200 ++++ gdb-6.7/gdb/Makefile.in 2007-10-13 05:15:13.000000000 +0200 +@@ -2233,7 +2233,8 @@ libunwind-frame.o: libunwind-frame.c $(d linespec.o: linespec.c $(defs_h) $(symtab_h) $(frame_h) $(command_h) \ $(symfile_h) $(objfiles_h) $(source_h) $(demangle_h) $(value_h) \ $(completer_h) $(cp_abi_h) $(parser_defs_h) $(block_h) \ -- $(objc_lang_h) $(linespec_h) $(exceptions_h) -+ $(objc_lang_h) $(linespec_h) $(exceptions_h) $(gdb_assert_h) +- $(objc_lang_h) $(linespec_h) $(exceptions_h) $(language_h) ++ $(objc_lang_h) $(linespec_h) $(exceptions_h) $(language_h) \ ++ $(gdb_assert_h) linux-fork.o: linux-fork.c $(defs_h) $(inferior_h) $(regcache_h) $(gdbcmd_h) \ $(infcall_h) $(gdb_assert_h) $(gdb_string_h) $(linux_fork_h) \ $(linux_nat_h) diff --git a/gdb-6.3-nonthreaded-wp-20050117.patch b/gdb-6.3-nonthreaded-wp-20050117.patch index 7a77a9f..e073b8a 100644 --- a/gdb-6.3-nonthreaded-wp-20050117.patch +++ b/gdb-6.3-nonthreaded-wp-20050117.patch @@ -9,10 +9,14 @@ * gdb.base/follow-child.exp, gdb.base/follow-child.c: New files. -Index: gdb-6.6/gdb/doc/observer.texi +2007-10-16 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/doc/observer.texi =================================================================== ---- gdb-6.6.orig/gdb/doc/observer.texi -+++ gdb-6.6/gdb/doc/observer.texi +--- gdb-6.7.orig/gdb/doc/observer.texi 2007-10-13 05:09:50.000000000 +0200 ++++ gdb-6.7/gdb/doc/observer.texi 2007-10-14 23:24:52.000000000 +0200 @@ -119,6 +119,10 @@ when @value{GDBN} calls this observer, t haven't been loaded yet. @end deftypefun @@ -24,11 +28,11 @@ Index: gdb-6.6/gdb/doc/observer.texi @deftypefun void solib_unloaded (struct so_list *@var{solib}) The shared library specified by @var{solib} has been unloaded. @end deftypefun -Index: gdb-6.6/gdb/linux-nat.c +Index: gdb-6.7/gdb/linux-nat.c =================================================================== ---- gdb-6.6.orig/gdb/linux-nat.c -+++ gdb-6.6/gdb/linux-nat.c -@@ -803,11 +803,26 @@ iterate_over_lwps (int (*callback) (stru +--- gdb-6.7.orig/gdb/linux-nat.c 2007-10-13 05:09:50.000000000 +0200 ++++ gdb-6.7/gdb/linux-nat.c 2007-10-14 23:24:52.000000000 +0200 +@@ -742,11 +742,26 @@ iterate_over_lwps (int (*callback) (stru { struct lwp_info *lp, *lpnext; @@ -58,7 +62,7 @@ Index: gdb-6.6/gdb/linux-nat.c } return NULL; -@@ -3262,6 +3274,18 @@ linux_nat_add_target (struct target_ops +@@ -3272,6 +3284,18 @@ linux_nat_add_target (struct target_ops thread_db_init (t); } @@ -77,7 +81,7 @@ Index: gdb-6.6/gdb/linux-nat.c void _initialize_linux_nat (void) { -@@ -3276,6 +3300,8 @@ Specify any of the following keywords fo +@@ -3286,6 +3310,8 @@ Specify any of the following keywords fo status -- list a different bunch of random process info.\n\ all -- list all available /proc info.")); @@ -86,19 +90,19 @@ Index: gdb-6.6/gdb/linux-nat.c /* Save the original signal mask. */ sigprocmask (SIG_SETMASK, NULL, &normal_mask); -Index: gdb-6.6/gdb/target.c +Index: gdb-6.7/gdb/target.c =================================================================== ---- gdb-6.6.orig/gdb/target.c -+++ gdb-6.6/gdb/target.c -@@ -40,6 +40,7 @@ - #include "gdb_assert.h" +--- gdb-6.7.orig/gdb/target.c 2007-08-23 20:08:45.000000000 +0200 ++++ gdb-6.7/gdb/target.c 2007-10-14 23:25:13.000000000 +0200 +@@ -39,6 +39,7 @@ #include "gdbcore.h" #include "exceptions.h" + #include "target-descriptions.h" +#include "observer.h" static void target_info (char *, int); -@@ -276,6 +277,13 @@ target_load (char *arg, int from_tty) +@@ -275,6 +276,13 @@ target_load (char *arg, int from_tty) (*current_target.to_load) (arg, from_tty); } @@ -112,11 +116,11 @@ Index: gdb-6.6/gdb/target.c static int nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write, struct target_ops *t) -Index: gdb-6.6/gdb/target.h +Index: gdb-6.7/gdb/target.h =================================================================== ---- gdb-6.6.orig/gdb/target.h -+++ gdb-6.6/gdb/target.h -@@ -891,8 +891,7 @@ int target_follow_fork (int follow_child +--- gdb-6.7.orig/gdb/target.h 2007-08-23 20:08:46.000000000 +0200 ++++ gdb-6.7/gdb/target.h 2007-10-14 23:24:52.000000000 +0200 +@@ -864,8 +864,7 @@ int target_follow_fork (int follow_child /* The inferior process has died. Do what is right. */ diff --git a/gdb-6.3-pie-20050110.patch b/gdb-6.3-pie-20050110.patch index d4a3794..e00a671 100644 --- a/gdb-6.3-pie-20050110.patch +++ b/gdb-6.3-pie-20050110.patch @@ -1,8 +1,8 @@ -Index: gdb-6.6/gdb/dwarf2read.c +Index: gdb-6.7/gdb/dwarf2read.c =================================================================== ---- gdb-6.6.orig/gdb/dwarf2read.c -+++ gdb-6.6/gdb/dwarf2read.c -@@ -1219,7 +1219,7 @@ dwarf2_build_psymtabs (struct objfile *o +--- gdb-6.7.orig/gdb/dwarf2read.c 2007-10-13 05:27:15.000000000 +0200 ++++ gdb-6.7/gdb/dwarf2read.c 2007-10-13 05:29:58.000000000 +0200 +@@ -1226,7 +1226,7 @@ dwarf2_build_psymtabs (struct objfile *o else dwarf2_per_objfile->loc_buffer = NULL; @@ -11,11 +11,11 @@ Index: gdb-6.6/gdb/dwarf2read.c || (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)) { -Index: gdb-6.6/gdb/auxv.c +Index: gdb-6.7/gdb/auxv.c =================================================================== ---- gdb-6.6.orig/gdb/auxv.c -+++ gdb-6.6/gdb/auxv.c -@@ -82,7 +82,7 @@ procfs_xfer_auxv (struct target_ops *ops +--- gdb-6.7.orig/gdb/auxv.c 2007-08-23 20:08:26.000000000 +0200 ++++ gdb-6.7/gdb/auxv.c 2007-10-13 05:29:58.000000000 +0200 +@@ -80,7 +80,7 @@ procfs_xfer_auxv (struct target_ops *ops Return 1 if an entry was read into *TYPEP and *VALP. */ int target_auxv_parse (struct target_ops *ops, gdb_byte **readptr, @@ -24,7 +24,7 @@ Index: gdb-6.6/gdb/auxv.c { const int sizeof_auxv_field = TYPE_LENGTH (builtin_type_void_data_ptr); gdb_byte *ptr = *readptr; -@@ -107,9 +107,10 @@ target_auxv_parse (struct target_ops *op +@@ -105,9 +105,10 @@ target_auxv_parse (struct target_ops *op an error getting the information. On success, return 1 after storing the entry's value field in *VALP. */ int @@ -37,7 +37,7 @@ Index: gdb-6.6/gdb/auxv.c gdb_byte *data; LONGEST n = target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL, &data); gdb_byte *ptr = data; -@@ -119,10 +120,10 @@ target_auxv_search (struct target_ops *o +@@ -117,10 +118,10 @@ target_auxv_search (struct target_ops *o return n; while (1) @@ -50,7 +50,7 @@ Index: gdb-6.6/gdb/auxv.c { xfree (data); *valp = val; -@@ -145,7 +146,8 @@ target_auxv_search (struct target_ops *o +@@ -143,7 +144,8 @@ target_auxv_search (struct target_ops *o int fprint_target_auxv (struct ui_file *file, struct target_ops *ops) { @@ -60,7 +60,7 @@ Index: gdb-6.6/gdb/auxv.c gdb_byte *data; LONGEST len = target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL, &data); -@@ -155,14 +157,14 @@ fprint_target_auxv (struct ui_file *file +@@ -153,14 +155,14 @@ fprint_target_auxv (struct ui_file *file if (len <= 0) return len; @@ -77,7 +77,7 @@ Index: gdb-6.6/gdb/auxv.c { #define TAG(tag, text, kind) \ case tag: name = #tag; description = text; flavor = kind; break -@@ -213,7 +215,7 @@ fprint_target_auxv (struct ui_file *file +@@ -211,7 +213,7 @@ fprint_target_auxv (struct ui_file *file } fprintf_filtered (file, "%-4s %-20s %-30s ", @@ -86,11 +86,11 @@ Index: gdb-6.6/gdb/auxv.c switch (flavor) { case dec: -Index: gdb-6.6/gdb/auxv.h +Index: gdb-6.7/gdb/auxv.h =================================================================== ---- gdb-6.6.orig/gdb/auxv.h -+++ gdb-6.6/gdb/auxv.h -@@ -37,14 +37,14 @@ struct target_ops; /* Forward declarati +--- gdb-6.7.orig/gdb/auxv.h 2007-08-23 20:08:26.000000000 +0200 ++++ gdb-6.7/gdb/auxv.h 2007-10-13 05:29:58.000000000 +0200 +@@ -35,14 +35,14 @@ struct target_ops; /* Forward declarati Return 1 if an entry was read into *TYPEP and *VALP. */ extern int target_auxv_parse (struct target_ops *ops, gdb_byte **readptr, gdb_byte *endptr, @@ -107,11 +107,11 @@ Index: gdb-6.6/gdb/auxv.h /* Print the contents of the target's AUXV on the specified file. */ extern int fprint_target_auxv (struct ui_file *file, struct target_ops *ops); -Index: gdb-6.6/gdb/breakpoint.h +Index: gdb-6.7/gdb/breakpoint.h =================================================================== ---- gdb-6.6.orig/gdb/breakpoint.h -+++ gdb-6.6/gdb/breakpoint.h -@@ -159,6 +159,7 @@ enum enable_state +--- gdb-6.7.orig/gdb/breakpoint.h 2007-10-13 05:09:50.000000000 +0200 ++++ gdb-6.7/gdb/breakpoint.h 2007-10-13 05:29:58.000000000 +0200 +@@ -153,6 +153,7 @@ enum enable_state automatically enabled and reset when the call "lands" (either completes, or stops at another eventpoint). */ @@ -121,7 +121,7 @@ Index: gdb-6.6/gdb/breakpoint.h breakpoint instruction on top of it, or restore @@ -807,8 +808,12 @@ extern void remove_thread_event_breakpoi - extern void disable_breakpoints_in_shlibs (int silent); + extern void disable_breakpoints_in_shlibs (void); +extern void disable_breakpoints_at_startup (int silent); + @@ -132,11 +132,11 @@ Index: gdb-6.6/gdb/breakpoint.h extern void create_solib_load_event_breakpoint (char *, int, char *, char *); extern void create_solib_unload_event_breakpoint (char *, int, -Index: gdb-6.6/gdb/symfile-mem.c +Index: gdb-6.7/gdb/symfile-mem.c =================================================================== ---- gdb-6.6.orig/gdb/symfile-mem.c -+++ gdb-6.6/gdb/symfile-mem.c -@@ -110,7 +110,7 @@ symbol_file_add_from_memory (struct bfd +--- gdb-6.7.orig/gdb/symfile-mem.c 2007-08-23 20:08:39.000000000 +0200 ++++ gdb-6.7/gdb/symfile-mem.c 2007-10-13 05:29:58.000000000 +0200 +@@ -108,7 +108,7 @@ symbol_file_add_from_memory (struct bfd } objf = symbol_file_add_from_bfd (nbfd, from_tty, @@ -145,11 +145,11 @@ Index: gdb-6.6/gdb/symfile-mem.c /* This might change our ideas about frames already looked at. */ reinit_frame_cache (); -Index: gdb-6.6/gdb/infrun.c +Index: gdb-6.7/gdb/infrun.c =================================================================== ---- gdb-6.6.orig/gdb/infrun.c -+++ gdb-6.6/gdb/infrun.c -@@ -2249,6 +2249,11 @@ process_event_stop_test: +--- gdb-6.7.orig/gdb/infrun.c 2007-10-13 05:09:50.000000000 +0200 ++++ gdb-6.7/gdb/infrun.c 2007-10-13 05:29:58.000000000 +0200 +@@ -2305,6 +2305,11 @@ process_event_stop_test: code segments in shared libraries might be mapped in now. */ re_enable_breakpoints_in_shlibs (); @@ -161,11 +161,11 @@ Index: gdb-6.6/gdb/infrun.c /* 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 -Index: gdb-6.6/gdb/objfiles.c +Index: gdb-6.7/gdb/objfiles.c =================================================================== ---- gdb-6.6.orig/gdb/objfiles.c -+++ gdb-6.6/gdb/objfiles.c -@@ -50,6 +50,9 @@ +--- gdb-6.7.orig/gdb/objfiles.c 2007-08-23 20:08:36.000000000 +0200 ++++ gdb-6.7/gdb/objfiles.c 2007-10-13 05:29:58.000000000 +0200 +@@ -48,6 +48,9 @@ #include "dictionary.h" #include "source.h" @@ -175,7 +175,7 @@ Index: gdb-6.6/gdb/objfiles.c /* Prototypes for local functions */ static void objfile_alloc_data (struct objfile *objfile); -@@ -261,7 +264,19 @@ init_entry_point_info (struct objfile *o +@@ -259,7 +262,19 @@ init_entry_point_info (struct objfile *o CORE_ADDR entry_point_address (void) { @@ -196,11 +196,11 @@ Index: gdb-6.6/gdb/objfiles.c } /* Create the terminating entry of OBJFILE's minimal symbol table. -Index: gdb-6.6/gdb/solib-svr4.c +Index: gdb-6.7/gdb/solib-svr4.c =================================================================== ---- gdb-6.6.orig/gdb/solib-svr4.c -+++ gdb-6.6/gdb/solib-svr4.c -@@ -34,6 +34,8 @@ +--- gdb-6.7.orig/gdb/solib-svr4.c 2007-10-12 22:34:03.000000000 +0200 ++++ gdb-6.7/gdb/solib-svr4.c 2007-10-14 23:04:45.000000000 +0200 +@@ -31,6 +31,8 @@ #include "gdbcore.h" #include "target.h" #include "inferior.h" @@ -209,7 +209,7 @@ Index: gdb-6.6/gdb/solib-svr4.c #include "gdb_assert.h" -@@ -267,7 +269,9 @@ static char *debug_loader_name; +@@ -249,7 +251,9 @@ static char *debug_loader_name; /* Local function prototypes */ @@ -217,44 +217,57 @@ Index: gdb-6.6/gdb/solib-svr4.c static int match_main (char *); +#endif - static CORE_ADDR bfd_lookup_symbol (bfd *, char *, flagword); + static CORE_ADDR bfd_lookup_symbol (bfd *, char *); -@@ -389,22 +393,79 @@ elf_locate_base (void) - { - struct bfd_section *dyninfo_sect; - int dyninfo_sect_size; -- CORE_ADDR dyninfo_addr; -+ CORE_ADDR dyninfo_addr, relocated_dyninfo_addr, entry_addr; - gdb_byte *buf; - gdb_byte *bufend; - int arch_size; +@@ -352,10 +356,12 @@ scan_dyntag (int dyntag, bfd *abfd, CORE + int arch_size, step, sect_size; + long dyn_tag; + CORE_ADDR dyn_ptr, dyn_addr; ++ CORE_ADDR entry_addr; + gdb_byte *bufend, *bufstart, *buf; + Elf32_External_Dyn *x_dynp_32; + Elf64_External_Dyn *x_dynp_64; + struct bfd_section *sect; + int ret; -+ -+ /* Find the address of the entry point of the program from the -+ auxv vector. */ -+ ret = target_auxv_search (¤t_target, AT_ENTRY, &entry_addr); -+ -+ if (ret == 0 || ret == -1) -+ { -+ /* No auxv info, maybe an older kernel. Fake our way through. */ -+ entry_addr = bfd_get_start_address (exec_bfd); -+ -+ if (debug_solib) -+ fprintf_unfiltered (gdb_stdlog, -+ "elf_locate_base: program entry address not found. Using bfd's 0x%s for %s\n", -+ paddr_nz (entry_addr), exec_bfd->filename); -+ } -+ else -+ { -+ if (debug_solib) -+ fprintf_unfiltered (gdb_stdlog, -+ "elf_locate_base: found program entry address 0x%s for %s\n", -+ paddr_nz (entry_addr), exec_bfd->filename); -+ } + if (abfd == NULL) + return 0; +@@ -363,19 +369,74 @@ scan_dyntag (int dyntag, bfd *abfd, CORE + if (arch_size == -1) + return 0; + ++ /* The auxv vector based relocatable files reading is limited to the main ++ executable. */ ++ gdb_assert (abfd == exec_bfd || ptr == NULL); ++ ++ if (ptr != NULL) ++ { ++ /* Find the address of the entry point of the program from the ++ auxv vector. */ ++ ret = target_auxv_search (¤t_target, AT_ENTRY, &entry_addr); ++ ++ if (ret == 0 || ret == -1) ++ { ++ /* No auxv info, maybe an older kernel. Fake our way through. */ ++ entry_addr = bfd_get_start_address (exec_bfd); ++ ++ if (debug_solib) ++ fprintf_unfiltered (gdb_stdlog, ++ "elf_locate_base: program entry address not found. Using bfd's 0x%s for %s\n", ++ paddr_nz (entry_addr), exec_bfd->filename); ++ } ++ else ++ { ++ if (debug_solib) ++ fprintf_unfiltered (gdb_stdlog, ++ "elf_locate_base: found program entry address 0x%s for %s\n", ++ paddr_nz (entry_addr), exec_bfd->filename); ++ } ++ } ++ /* Find the start address of the .dynamic section. */ - dyninfo_sect = bfd_get_section_by_name (exec_bfd, ".dynamic"); - if (dyninfo_sect == NULL) + sect = bfd_get_section_by_name (abfd, ".dynamic"); + if (sect == NULL) - return 0; + { + if (debug_solib) @@ -271,50 +284,78 @@ Index: gdb-6.6/gdb/solib-svr4.c + exec_bfd->filename); + } + - dyninfo_addr = bfd_section_vma (exec_bfd, dyninfo_sect); + dyn_addr = bfd_section_vma (abfd, sect); + if (debug_solib) + fprintf_unfiltered (gdb_stdlog, -+ "elf_locate_base: unrelocated .dynamic addr 0x%s\n", -+ paddr_nz (dyninfo_addr)); -+ -+ relocated_dyninfo_addr = dyninfo_addr -+ + entry_addr - bfd_get_start_address(exec_bfd); -+ if (debug_solib) -+ fprintf_unfiltered (gdb_stdlog, -+ "elf_locate_base: relocated .dyn addr 0x%s for %s\n", -+ paddr_nz(relocated_dyninfo_addr), exec_bfd->filename); ++ "elf_locate_base: .dynamic addr 0x%s\n", ++ paddr_nz (dyn_addr)); - /* Read in .dynamic section, silently ignore errors. */ - dyninfo_sect_size = bfd_section_size (exec_bfd, dyninfo_sect); - buf = alloca (dyninfo_sect_size); -- if (target_read_memory (dyninfo_addr, buf, dyninfo_sect_size)) -- return 0; + /* Read in .dynamic from the BFD. We will get the actual value + from memory later. */ + sect_size = bfd_section_size (abfd, sect); + buf = bufstart = alloca (sect_size); + if (debug_solib) + fprintf_unfiltered (gdb_stdlog, + "elf_locate_base: read in .dynamic section\n"); -+ if (target_read_memory (relocated_dyninfo_addr, buf, dyninfo_sect_size)) + if (!bfd_get_section_contents (abfd, sect, + buf, 0, sect_size)) +- return 0; + { + if (debug_solib) + fprintf_unfiltered (gdb_stdlog, -+ "elf_locate_base: couldn't read .dynamic section at 0x%s -- return now\n", -+ paddr_nz (relocated_dyninfo_addr)); ++ "elf_locate_base: couldn't read .dynamic section -- return now\n"); + return 0; + } - /* Find the DT_DEBUG entry in the the .dynamic section. - For mips elf we look for DT_MIPS_RLD_MAP, mips elf apparently has -@@ -431,6 +492,10 @@ elf_locate_base (void) - { - dyn_ptr = bfd_h_get_32 (exec_bfd, - (bfd_byte *) x_dynp->d_un.d_ptr); -+ if (debug_solib) -+ fprintf_unfiltered (gdb_stdlog, -+ "elf_locate_base: DT_DEBUG entry has value 0x%s -- return now\n", -+ paddr_nz (dyn_ptr)); - return dyn_ptr; - } - else if (dyn_tag == DT_MIPS_RLD_MAP) -@@ -556,6 +621,10 @@ solib_svr4_r_map (void) + /* Iterate over BUF and scan for DYNTAG. If found, set PTR and return. */ + step = (arch_size == 32) ? sizeof (Elf32_External_Dyn) +@@ -408,9 +469,43 @@ scan_dyntag (int dyntag, bfd *abfd, CORE + CORE_ADDR ptr_addr; + + ptr_addr = dyn_addr + (buf - bufstart) + arch_size / 8; ++ if (ptr != NULL) ++ { ++ if (debug_solib) ++ fprintf_unfiltered (gdb_stdlog, ++ "elf_locate_base: unrelocated ptr addr 0x%s\n", ++ paddr_nz (ptr_addr)); ++ ptr_addr += entry_addr - bfd_get_start_address (exec_bfd); ++ if (debug_solib) ++ fprintf_unfiltered (gdb_stdlog, ++ "elf_locate_base: relocated ptr addr 0x%s" ++ " (auxv entry 0x%s, bfd start address 0x%s)" ++ " for %s\n", ++ paddr_nz (ptr_addr), paddr_nz (entry_addr), ++ paddr_nz (bfd_get_start_address (exec_bfd)), ++ exec_bfd->filename); ++ } + if (target_read_memory (ptr_addr, ptr_buf, arch_size / 8) == 0) +- dyn_ptr = extract_typed_address (ptr_buf, +- builtin_type_void_data_ptr); ++ { ++ dyn_ptr = extract_typed_address (ptr_buf, ++ builtin_type_void_data_ptr); ++ if (ptr != NULL) ++ { ++ if (debug_solib) ++ fprintf_unfiltered (gdb_stdlog, ++ "elf_locate_base: Tag entry has value 0x%s -- return now\n", ++ paddr_nz (dyn_ptr)); ++ } ++ } ++ else ++ { ++ if (ptr != NULL) ++ { ++ if (debug_solib) ++ fprintf_unfiltered (gdb_stdlog, ++ "elf_locate_base: Couldn't read tag entry value -- return now\n"); ++ } ++ } + *ptr = dyn_ptr; + } + return 1; +@@ -547,6 +638,10 @@ solib_svr4_r_map (void) { struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); @@ -325,7 +366,7 @@ Index: gdb-6.6/gdb/solib-svr4.c return read_memory_typed_address (debug_base + lmo->r_map_offset, builtin_type_void_data_ptr); } -@@ -713,6 +782,11 @@ svr4_current_sos (void) +@@ -704,6 +799,11 @@ svr4_current_sos (void) struct so_list **link_ptr = &head; CORE_ADDR ldsomap = 0; @@ -337,7 +378,7 @@ Index: gdb-6.6/gdb/solib-svr4.c /* Make sure we've looked up the inferior's dynamic linker's base structure. */ if (! debug_base) -@@ -722,11 +796,21 @@ svr4_current_sos (void) +@@ -713,11 +813,21 @@ svr4_current_sos (void) /* If we can't find the dynamic linker's base structure, this must not be a dynamically linked executable. Hmm. */ if (! debug_base) @@ -360,7 +401,7 @@ Index: gdb-6.6/gdb/solib-svr4.c lm = solib_svr4_r_map (); while (lm) -@@ -742,23 +826,103 @@ svr4_current_sos (void) +@@ -733,23 +843,103 @@ svr4_current_sos (void) new->lm_info->lm = xzalloc (lmo->link_map_size); make_cleanup (xfree, new->lm_info->lm); @@ -465,15 +506,15 @@ Index: gdb-6.6/gdb/solib-svr4.c target_read_string (LM_NAME (new), &buffer, SO_NAME_MAX_PATH_SIZE - 1, &errcode); if (errcode != 0) -@@ -766,22 +930,37 @@ svr4_current_sos (void) +@@ -757,23 +947,35 @@ svr4_current_sos (void) safe_strerror (errcode)); else { - strncpy (new->so_name, buffer, SO_NAME_MAX_PATH_SIZE - 1); - new->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; -- xfree (buffer); - strcpy (new->so_original_name, new->so_name); - } +- xfree (buffer); - - /* If this entry has no name, or its name matches the name - for the main executable, don't include it in the list. */ @@ -485,22 +526,18 @@ Index: gdb-6.6/gdb/solib-svr4.c - new->next = 0; - *link_ptr = new; - link_ptr = &new->next; -+ if (debug_solib) -+ fprintf_unfiltered (gdb_stdlog, -+ "svr4_current_sos: LM_NAME is <%s>\n", -+ buffer); -+ /* The name could be empty, in which case it is the -+ system supplied DSO. */ -+ if (strcmp (buffer, "") == 0) ++ if (debug_solib) ++ fprintf_unfiltered (gdb_stdlog, ++ "svr4_current_sos: LM_NAME is <%s>\n", ++ buffer); ++ /* The name could be empty, in which case it is the ++ system supplied DSO. */ ++ if (strcmp (buffer, "") == 0) ++ free_so (new); ++ else + { -+ xfree (buffer); -+ free_so (new); -+ } -+ else -+ { + strncpy (new->so_name, buffer, SO_NAME_MAX_PATH_SIZE - 1); + new->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; -+ xfree (buffer); + strcpy (new->so_original_name, new->so_name); + if (debug_solib) + { @@ -517,9 +554,11 @@ Index: gdb-6.6/gdb/solib-svr4.c + link_ptr = &new->next; + } } ++ xfree (buffer); } -@@ -798,6 +977,11 @@ svr4_current_sos (void) + /* On Solaris, the dynamic linker is not in the normal list of +@@ -789,6 +991,11 @@ svr4_current_sos (void) if (head == NULL) return svr4_default_sos (); @@ -531,7 +570,7 @@ Index: gdb-6.6/gdb/solib-svr4.c return head; } -@@ -874,7 +1058,7 @@ svr4_fetch_objfile_link_map (struct objf +@@ -868,7 +1075,7 @@ svr4_fetch_objfile_link_map (struct objf /* On some systems, the only way to recognize the link map entry for the main executable file is by looking at its name. Return non-zero iff SONAME matches one of the known main executable names. */ @@ -540,7 +579,7 @@ Index: gdb-6.6/gdb/solib-svr4.c static int match_main (char *soname) { -@@ -888,6 +1072,7 @@ match_main (char *soname) +@@ -882,6 +1089,7 @@ match_main (char *soname) return (0); } @@ -548,7 +587,7 @@ Index: gdb-6.6/gdb/solib-svr4.c /* Return 1 if PC lies in the dynamic symbol resolution code of the SVR4 run time loader. */ -@@ -987,6 +1172,11 @@ enable_break (void) +@@ -979,6 +1187,11 @@ enable_break (void) /* Find the .interp section; if not found, warn the user and drop into the old breakpoint at symbol code. */ interp_sect = bfd_get_section_by_name (exec_bfd, ".interp"); @@ -560,7 +599,7 @@ Index: gdb-6.6/gdb/solib-svr4.c if (interp_sect) { unsigned int interp_sect_size; -@@ -1025,6 +1215,9 @@ enable_break (void) +@@ -1018,6 +1231,9 @@ enable_break (void) if (tmp_fd >= 0) tmp_bfd = bfd_fopen (tmp_pathname, gnutarget, FOPEN_RB, tmp_fd); @@ -570,7 +609,7 @@ Index: gdb-6.6/gdb/solib-svr4.c if (tmp_bfd == NULL) goto bkpt_at_symbol; -@@ -1111,6 +1304,9 @@ enable_break (void) +@@ -1115,6 +1331,9 @@ enable_break (void) if (sym_addr != 0) { create_solib_event_breakpoint (load_addr + sym_addr); @@ -580,7 +619,7 @@ Index: gdb-6.6/gdb/solib-svr4.c return 1; } -@@ -1372,6 +1568,8 @@ svr4_solib_create_inferior_hook (void) +@@ -1375,6 +1594,8 @@ svr4_solib_create_inferior_hook (void) while (stop_signal != TARGET_SIGNAL_TRAP); stop_soon = NO_STOP_QUIETLY; #endif /* defined(_SCO_DS) */ @@ -589,7 +628,7 @@ Index: gdb-6.6/gdb/solib-svr4.c } static void -@@ -1558,6 +1756,75 @@ svr4_lp64_fetch_link_map_offsets (void) +@@ -1551,6 +1772,75 @@ svr4_lp64_fetch_link_map_offsets (void) return lmp; } @@ -664,8 +703,8 @@ Index: gdb-6.6/gdb/solib-svr4.c + - static struct target_so_ops svr4_so_ops; -@@ -1580,4 +1847,8 @@ _initialize_svr4_solib (void) + struct target_so_ops svr4_so_ops; +@@ -1592,4 +1882,8 @@ _initialize_svr4_solib (void) /* FIXME: Don't do this here. *_gdbarch_init() should set so_ops. */ current_target_so_ops = &svr4_so_ops; @@ -674,12 +713,12 @@ Index: gdb-6.6/gdb/solib-svr4.c + "Display the inferior's linkmap."); + } -Index: gdb-6.6/gdb/varobj.c +Index: gdb-6.7/gdb/varobj.c =================================================================== ---- gdb-6.6.orig/gdb/varobj.c -+++ gdb-6.6/gdb/varobj.c -@@ -870,6 +870,62 @@ varobj_list (struct varobj ***varlist) - return rootcount; +--- gdb-6.7.orig/gdb/varobj.c 2007-08-31 21:01:17.000000000 +0200 ++++ gdb-6.7/gdb/varobj.c 2007-10-13 05:29:58.000000000 +0200 +@@ -1116,6 +1116,62 @@ install_new_value (struct varobj *var, s + return changed; } +void @@ -741,11 +780,11 @@ Index: gdb-6.6/gdb/varobj.c /* Update the values for a variable and its children. This is a two-pronged attack. First, re-parse the value for the root's expression to see if it's changed. Then go all the way -Index: gdb-6.6/gdb/solist.h +Index: gdb-6.7/gdb/solist.h =================================================================== ---- gdb-6.6.orig/gdb/solist.h -+++ gdb-6.6/gdb/solist.h -@@ -62,6 +62,8 @@ struct so_list +--- gdb-6.7.orig/gdb/solist.h 2007-08-23 20:08:38.000000000 +0200 ++++ gdb-6.7/gdb/solist.h 2007-10-13 05:29:58.000000000 +0200 +@@ -61,6 +61,8 @@ struct so_list bfd *abfd; char symbols_loaded; /* flag: symbols read in yet? */ char from_tty; /* flag: print msgs? */ @@ -754,7 +793,7 @@ Index: gdb-6.6/gdb/solist.h struct objfile *objfile; /* objfile for loaded lib */ struct section_table *sections; struct section_table *sections_end; -@@ -113,9 +115,15 @@ void free_so (struct so_list *so); +@@ -123,9 +125,15 @@ void free_so (struct so_list *so); /* Return address of first so_list entry in master shared object list. */ struct so_list *master_so_list (void); @@ -770,29 +809,29 @@ Index: gdb-6.6/gdb/solist.h /* FIXME: gdbarch needs to control this variable */ extern struct target_so_ops *current_target_so_ops; -@@ -126,4 +134,6 @@ extern struct target_so_ops *current_tar - #define TARGET_SO_IN_DYNSYM_RESOLVE_CODE \ - (current_target_so_ops->in_dynsym_resolve_code) +@@ -143,4 +151,6 @@ struct symbol *solib_global_lookup (cons + const domain_enum domain, + struct symtab **symtab); +/* Controls the printing of debugging output. */ +extern int debug_solib; #endif -Index: gdb-6.6/gdb/varobj.h +Index: gdb-6.7/gdb/varobj.h =================================================================== ---- gdb-6.6.orig/gdb/varobj.h -+++ gdb-6.6/gdb/varobj.h -@@ -99,4 +99,6 @@ extern int varobj_list (struct varobj ** +--- gdb-6.7.orig/gdb/varobj.h 2007-08-31 20:52:05.000000000 +0200 ++++ gdb-6.7/gdb/varobj.h 2007-10-13 05:29:58.000000000 +0200 +@@ -114,4 +114,6 @@ extern int varobj_update (struct varobj - extern int varobj_update (struct varobj **varp, struct varobj ***changelist); + extern void varobj_invalidate (void); +extern void varobj_refresh(void); + #endif /* VAROBJ_H */ -Index: gdb-6.6/gdb/symfile.c +Index: gdb-6.7/gdb/symfile.c =================================================================== ---- gdb-6.6.orig/gdb/symfile.c -+++ gdb-6.6/gdb/symfile.c -@@ -49,6 +49,7 @@ +--- gdb-6.7.orig/gdb/symfile.c 2007-09-24 23:48:05.000000000 +0200 ++++ gdb-6.7/gdb/symfile.c 2007-10-13 05:32:14.000000000 +0200 +@@ -47,6 +47,7 @@ #include "readline/readline.h" #include "gdb_assert.h" #include "block.h" @@ -800,7 +839,7 @@ Index: gdb-6.6/gdb/symfile.c #include "observer.h" #include "exec.h" #include "parser-defs.h" -@@ -659,7 +660,7 @@ syms_from_objfile (struct objfile *objfi +@@ -779,7 +780,7 @@ syms_from_objfile (struct objfile *objfi /* Now either addrs or offsets is non-zero. */ @@ -809,7 +848,7 @@ Index: gdb-6.6/gdb/symfile.c { /* We will modify the main symbol table, make sure that all its users will be cleaned up if an error occurs during symbol reading. */ -@@ -687,7 +688,7 @@ syms_from_objfile (struct objfile *objfi +@@ -807,7 +808,7 @@ syms_from_objfile (struct objfile *objfi We no longer warn if the lowest section is not a text segment (as happens for the PA64 port. */ @@ -818,7 +857,7 @@ Index: gdb-6.6/gdb/symfile.c { asection *lower_sect; asection *sect; -@@ -856,17 +857,21 @@ new_symfile_objfile (struct objfile *obj +@@ -976,17 +977,21 @@ 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. */ @@ -842,7 +881,7 @@ Index: gdb-6.6/gdb/symfile.c /* We're done reading the symbol file; finish off complaints. */ clear_complaints (&symfile_complaints, 0, verbo); -@@ -909,7 +914,7 @@ symbol_file_add_with_addrs_or_offsets (b +@@ -1029,7 +1034,7 @@ symbol_file_add_with_addrs_or_offsets (b interactively wiping out any existing symbols. */ if ((have_full_symbols () || have_partial_symbols ()) @@ -851,7 +890,7 @@ Index: gdb-6.6/gdb/symfile.c && from_tty && !query ("Load new symbol table from \"%s\"? ", name)) error (_("Not confirmed.")); -@@ -1090,6 +1095,10 @@ symbol_file_clear (int from_tty) +@@ -1213,6 +1218,10 @@ symbol_file_clear (int from_tty) symfile_objfile->name) : !query (_("Discard symbol table? ")))) error (_("Not confirmed.")); @@ -862,7 +901,7 @@ Index: gdb-6.6/gdb/symfile.c free_all_objfiles (); /* solib descriptors may have handles to objfiles. Since their -@@ -2204,6 +2213,8 @@ reread_symbols (void) +@@ -2470,6 +2479,8 @@ reread_symbols (void) /* Discard cleanups as symbol reading was successful. */ discard_cleanups (old_cleanups); @@ -871,19 +910,19 @@ Index: gdb-6.6/gdb/symfile.c /* If the mtime has changed between the time we set new_modtime and now, we *want* this to be out of date, so don't call stat again now. */ -@@ -2579,6 +2590,7 @@ clear_symtab_users (void) +@@ -2837,6 +2848,7 @@ clear_symtab_users (void) + breakpoint_re_set (); + set_default_breakpoint (0, 0, 0, 0); clear_pc_function_cache (); - if (deprecated_target_new_objfile_hook) - deprecated_target_new_objfile_hook (NULL); + varobj_refresh (); + observer_notify_new_objfile (NULL); /* Clear globals which might have pointed into a removed objfile. - FIXME: It's not clear which of these are supposed to persist -Index: gdb-6.6/gdb/breakpoint.c +Index: gdb-6.7/gdb/breakpoint.c =================================================================== ---- gdb-6.6.orig/gdb/breakpoint.c -+++ gdb-6.6/gdb/breakpoint.c -@@ -781,15 +781,15 @@ insert_watchpoints_for_new_thread (ptid_ +--- gdb-6.7.orig/gdb/breakpoint.c 2007-10-13 05:27:15.000000000 +0200 ++++ gdb-6.7/gdb/breakpoint.c 2007-10-13 05:29:58.000000000 +0200 +@@ -840,15 +840,15 @@ insert_watchpoints_for_new_thread (ptid_ struct value *v = b->owner->val_chain; /* Look at each value on the value chain. */ @@ -902,7 +941,7 @@ Index: gdb-6.6/gdb/breakpoint.c /* We only watch structs and arrays if user asked for it explicitly, never if they just happen to -@@ -801,8 +801,8 @@ insert_watchpoints_for_new_thread (ptid_ +@@ -860,8 +860,8 @@ insert_watchpoints_for_new_thread (ptid_ CORE_ADDR addr; int len, type; @@ -913,7 +952,7 @@ Index: gdb-6.6/gdb/breakpoint.c type = hw_write; if (b->owner->type == bp_read_watchpoint) type = hw_read; -@@ -2682,12 +2682,12 @@ mark_triggered_watchpoints (CORE_ADDR st +@@ -2749,12 +2749,12 @@ mark_triggered_watchpoints (CORE_ADDR st || b->type == bp_read_watchpoint || b->type == bp_access_watchpoint) { @@ -929,7 +968,7 @@ Index: gdb-6.6/gdb/breakpoint.c if (v == b->val_chain || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT -@@ -2695,11 +2695,11 @@ mark_triggered_watchpoints (CORE_ADDR st +@@ -2762,11 +2762,11 @@ mark_triggered_watchpoints (CORE_ADDR st { CORE_ADDR vaddr; @@ -943,7 +982,7 @@ Index: gdb-6.6/gdb/breakpoint.c b->watchpoint_triggered = 1; } } -@@ -2869,12 +2869,12 @@ bpstat_stop_status (CORE_ADDR bp_addr, p +@@ -2936,12 +2936,12 @@ bpstat_stop_status (CORE_ADDR bp_addr, p bs->stop = 0; continue; } @@ -959,7 +998,7 @@ Index: gdb-6.6/gdb/breakpoint.c if (v == b->val_chain || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT -@@ -2882,11 +2882,11 @@ bpstat_stop_status (CORE_ADDR bp_addr, p +@@ -2949,11 +2949,11 @@ bpstat_stop_status (CORE_ADDR bp_addr, p { CORE_ADDR vaddr; @@ -973,7 +1012,7 @@ Index: gdb-6.6/gdb/breakpoint.c must_check_value = 1; } } -@@ -3937,6 +3937,7 @@ describe_other_breakpoints (CORE_ADDR pc +@@ -3996,6 +3996,7 @@ describe_other_breakpoints (CORE_ADDR pc printf_filtered ("%s%s ", ((b->enable_state == bp_disabled || b->enable_state == bp_shlib_disabled || @@ -981,7 +1020,7 @@ Index: gdb-6.6/gdb/breakpoint.c b->enable_state == bp_call_disabled) ? " (disabled)" : b->enable_state == bp_permanent -@@ -4615,6 +4616,62 @@ re_enable_breakpoints_in_shlibs (void) +@@ -4669,6 +4670,62 @@ re_enable_breakpoints_in_shlibs (void) } } @@ -1044,7 +1083,7 @@ Index: gdb-6.6/gdb/breakpoint.c static void solib_load_unload_1 (char *hookname, int tempflag, char *dll_pathname, char *cond_string, enum bptype bp_kind) -@@ -6961,6 +7018,7 @@ delete_breakpoint (struct breakpoint *bp +@@ -7084,6 +7141,7 @@ delete_breakpoint (struct breakpoint *bp && !b->loc->duplicate && b->enable_state != bp_disabled && b->enable_state != bp_shlib_disabled @@ -1052,7 +1091,7 @@ Index: gdb-6.6/gdb/breakpoint.c && !b->pending && b->enable_state != bp_call_disabled) { -@@ -7176,7 +7234,8 @@ breakpoint_re_set_one (void *bint) +@@ -7308,7 +7366,8 @@ breakpoint_re_set_one (void *bint) break; save_enable = b->enable_state; @@ -1062,20 +1101,20 @@ Index: gdb-6.6/gdb/breakpoint.c b->enable_state = bp_disabled; else /* If resetting a shlib-disabled breakpoint, we don't want to -Index: gdb-6.6/gdb/solib.c +Index: gdb-6.7/gdb/solib.c =================================================================== ---- gdb-6.6.orig/gdb/solib.c -+++ gdb-6.6/gdb/solib.c -@@ -72,6 +72,8 @@ solib_ops (struct gdbarch *gdbarch) +--- gdb-6.7.orig/gdb/solib.c 2007-08-23 20:08:38.000000000 +0200 ++++ gdb-6.7/gdb/solib.c 2007-10-13 05:32:46.000000000 +0200 +@@ -78,6 +78,8 @@ set_solib_ops (struct gdbarch *gdbarch, /* external data declarations */ +int debug_solib; + - /* FIXME: gdbarch needs to control this variable */ + /* FIXME: gdbarch needs to control this variable, or else every + configuration needs to call set_solib_ops. */ struct target_so_ops *current_target_so_ops; - -@@ -102,6 +104,8 @@ The search path for loading non-absolute +@@ -105,6 +107,8 @@ The search path for loading non-absolute value); } @@ -1084,7 +1123,7 @@ Index: gdb-6.6/gdb/solib.c /* GLOBAL FUNCTION -@@ -376,7 +380,6 @@ free_so (struct so_list *so) +@@ -394,7 +398,6 @@ free_so (struct so_list *so) xfree (so); } @@ -1092,7 +1131,7 @@ Index: gdb-6.6/gdb/solib.c /* Return address of first so_list entry in master shared object list. */ struct so_list * master_so_list (void) -@@ -384,7 +387,6 @@ master_so_list (void) +@@ -402,7 +405,6 @@ master_so_list (void) return so_list_head; } @@ -1100,7 +1139,7 @@ Index: gdb-6.6/gdb/solib.c /* A small stub to get us past the arg-passing pinhole of catch_errors. */ static int -@@ -396,15 +398,40 @@ symbol_add_stub (void *arg) +@@ -414,15 +416,40 @@ symbol_add_stub (void *arg) /* Have we already loaded this shared object? */ ALL_OBJFILES (so->objfile) { @@ -1144,7 +1183,7 @@ Index: gdb-6.6/gdb/solib.c free_section_addr_info (sap); return (1); -@@ -532,6 +559,10 @@ update_solib_list (int from_tty, struct +@@ -550,6 +577,10 @@ update_solib_list (int from_tty, struct the inferior's current list. */ while (i) { @@ -1155,7 +1194,7 @@ Index: gdb-6.6/gdb/solib.c if (! strcmp (gdb->so_original_name, i->so_original_name)) break; -@@ -585,28 +616,7 @@ update_solib_list (int from_tty, struct +@@ -603,28 +634,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) { @@ -1185,7 +1224,7 @@ Index: gdb-6.6/gdb/solib.c /* Notify any observer that the shared object has been loaded now that we've added it to GDB's tables. */ -@@ -702,6 +712,41 @@ solib_add (char *pattern, int from_tty, +@@ -720,6 +730,41 @@ solib_add (char *pattern, int from_tty, } } @@ -1227,7 +1266,7 @@ Index: gdb-6.6/gdb/solib.c /* -@@ -1006,4 +1051,12 @@ This takes precedence over the environme +@@ -1045,4 +1090,12 @@ This takes precedence over the environme reload_shared_libraries, show_solib_search_path, &setlist, &showlist); @@ -1240,11 +1279,11 @@ Index: gdb-6.6/gdb/solib.c + NULL, NULL, + &setdebuglist, &showdebuglist); } -Index: gdb-6.6/gdb/elfread.c +Index: gdb-6.7/gdb/elfread.c =================================================================== ---- gdb-6.6.orig/gdb/elfread.c -+++ gdb-6.6/gdb/elfread.c -@@ -556,7 +556,7 @@ elf_symfile_read (struct objfile *objfil +--- gdb-6.7.orig/gdb/elfread.c 2007-08-23 20:08:28.000000000 +0200 ++++ gdb-6.7/gdb/elfread.c 2007-10-13 05:29:58.000000000 +0200 +@@ -611,7 +611,7 @@ elf_symfile_read (struct objfile *objfil /* If we are reinitializing, or if we have never loaded syms yet, set table to empty. MAINLINE is cleared so that *_read_psymtab functions do not all also re-initialize the psymbol table. */ @@ -1253,3 +1292,125 @@ Index: gdb-6.6/gdb/elfread.c { init_psymbol_list (objfile, 0); mainline = 0; + +2007-10-31 Jan Kratochvil + + Port to GDB-6.7 - workaround too early breakpoint address analysis. + +diff -u -X /home/jkratoch/.diffi.list -rup gdb-6.7-orig/gdb/Makefile.in gdb-6.7-patched/gdb/Makefile.in +--- gdb-6.7-orig/gdb/Makefile.in 2007-10-31 12:50:10.000000000 +0100 ++++ gdb-6.7-patched/gdb/Makefile.in 2007-10-31 00:38:11.000000000 +0100 +@@ -1824,7 +1824,7 @@ amd64-tdep.o: amd64-tdep.c $(defs_h) $(a + $(dummy_frame_h) $(frame_h) $(frame_base_h) $(frame_unwind_h) \ + $(inferior_h) $(gdbcmd_h) $(gdbcore_h) $(objfiles_h) $(regcache_h) \ + $(regset_h) $(symfile_h) $(gdb_assert_h) $(amd64_tdep_h) \ +- $(i387_tdep_h) ++ $(i387_tdep_h) $(exceptions_h) + annotate.o: annotate.c $(defs_h) $(annotate_h) $(value_h) $(target_h) \ + $(gdbtypes_h) $(breakpoint_h) + arch-utils.o: arch-utils.c $(defs_h) $(arch_utils_h) $(buildsym_h) \ +diff -u -X /home/jkratoch/.diffi.list -rup gdb-6.7-orig/gdb/amd64-tdep.c gdb-6.7-patched/gdb/amd64-tdep.c +--- gdb-6.7-orig/gdb/amd64-tdep.c 2007-10-31 12:50:09.000000000 +0100 ++++ gdb-6.7-patched/gdb/amd64-tdep.c 2007-10-31 00:46:13.000000000 +0100 +@@ -36,6 +36,7 @@ + #include "symfile.h" + #include "dwarf2-frame.h" + #include "gdb_assert.h" ++#include "exceptions.h" + + #include "amd64-tdep.h" + #include "i387-tdep.h" +@@ -734,16 +735,28 @@ amd64_alloc_frame_cache (void) + Any function that doesn't start with this sequence will be assumed + to have no prologue and thus no valid frame pointer in %rbp. */ + +-static CORE_ADDR +-amd64_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc, +- struct amd64_frame_cache *cache) ++struct amd64_analyze_prologue_data ++ { ++ CORE_ADDR pc, current_pc; ++ struct amd64_frame_cache *cache; ++ CORE_ADDR retval; ++ }; ++ ++static int ++amd64_analyze_prologue_1 (void *data_pointer) + { ++ struct amd64_analyze_prologue_data *data = data_pointer; ++ CORE_ADDR pc = data->pc, current_pc = data->current_pc; ++ struct amd64_frame_cache *cache = data->cache; + static gdb_byte proto[3] = { 0x48, 0x89, 0xe5 }; /* movq %rsp, %rbp */ + gdb_byte buf[3]; + gdb_byte op; + + if (current_pc <= pc) +- return current_pc; ++ { ++ data->retval = current_pc; ++ return 1; ++ } + + op = read_memory_unsigned_integer (pc, 1); + +@@ -756,18 +769,57 @@ amd64_analyze_prologue (CORE_ADDR pc, CO + + /* If that's all, return now. */ + if (current_pc <= pc + 1) +- return current_pc; ++ { ++ data->retval = current_pc; ++ return 1; ++ } + + /* Check for `movq %rsp, %rbp'. */ + read_memory (pc + 1, buf, 3); + if (memcmp (buf, proto, 3) != 0) +- return pc + 1; ++ { ++ data->retval = pc + 1; ++ return 1; ++ } + + /* OK, we actually have a frame. */ + cache->frameless_p = 0; +- return pc + 4; ++ data->retval = pc + 4; ++ return 1; + } + ++ data->retval = pc; ++ return 1; ++} ++ ++/* Catch memory read errors and return just PC in such case. ++ It occurs very early on enable_break->new_symfile_objfile-> ++ ->breakpoint_re_set->decode_line_1->decode_variable_1-> ++ ->find_function_start_sal */ ++ ++static CORE_ADDR ++amd64_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc, ++ struct amd64_frame_cache *cache) ++{ ++ int status; ++ struct amd64_analyze_prologue_data data; ++ struct ui_file *saved_gdb_stderr; ++ ++ /* Suppress error messages. */ ++ saved_gdb_stderr = gdb_stderr; ++ gdb_stderr = ui_file_new (); ++ ++ data.pc = pc; ++ data.current_pc = current_pc; ++ data.cache = cache; ++ status = catch_errors (amd64_analyze_prologue_1, &data, "", RETURN_MASK_ALL); ++ ++ /* Stop suppressing error messages. */ ++ ui_file_delete (gdb_stderr); ++ gdb_stderr = saved_gdb_stderr; ++ ++ if (status) ++ return data.retval; + return pc; + } + diff --git a/gdb-6.3-ppcdotsolib-20041022.patch b/gdb-6.3-ppcdotsolib-20041022.patch index 5ea0eb2..046633e 100644 --- a/gdb-6.3-ppcdotsolib-20041022.patch +++ b/gdb-6.3-ppcdotsolib-20041022.patch @@ -3,64 +3,29 @@ * solib-svr4.c (enable_break): Convert a symbol descriptor into the corresponding function entry point. (solib_break_names): Delete "._dl_debug_state", no longer needed. + +2007-10-12 Jan Kratochvil + + Port to GDB-6.7. -*** ./gdb/solib-svr4.c.dist Fri Oct 22 11:50:31 2004 ---- ./gdb/solib-svr4.c Fri Oct 22 11:53:19 2004 -*************** -*** 86,102 **** - "_dl_debug_state", - "rtld_db_dlactivity", - "_rtld_debug_state", -- -- /* On the 64-bit PowerPC, the linker symbol with the same name as -- the C function points to a function descriptor, not to the entry -- point. The linker symbol whose name is the C function name -- prefixed with a '.' points to the function's entry point. So -- when we look through this table, we ignore symbols that point -- into the data section (thus skipping the descriptor's symbol), -- and eventually try this one, giving us the real entry point -- address. */ -- "._dl_debug_state", -- - NULL - }; - ---- 86,91 ---- -*************** -*** 1284,1301 **** - /* Now try to set a breakpoint in the dynamic linker. */ - for (bkpt_namep = solib_break_names; *bkpt_namep != NULL; bkpt_namep++) - { -! /* On ABI's that use function descriptors, there are usually -! two linker symbols associated with each C function: one -! pointing at the actual entry point of the machine code, -! and one pointing at the function's descriptor. The -! latter symbol has the same name as the C function. -! -! What we're looking for here is the machine code entry -! point, so we are only interested in symbols in code -! sections. */ -! sym_addr = bfd_lookup_symbol (tmp_bfd, *bkpt_namep, SEC_CODE); - if (sym_addr != 0) -! break; - } - - /* We're done with both the temporary bfd and target. Remember, ---- 1273,1289 ---- - /* Now try to set a breakpoint in the dynamic linker. */ - for (bkpt_namep = solib_break_names; *bkpt_namep != NULL; bkpt_namep++) - { -! sym_addr = bfd_lookup_symbol (tmp_bfd, *bkpt_namep, 0); - if (sym_addr != 0) -! { -! /* The symbol might be a descriptor, convert to into the -! corresponding code address. */ -! sym_addr = gdbarch_convert_from_func_ptr_addr (current_gdbarch, -! sym_addr, -! tmp_bfd_target); -! if (sym_addr != 0) -! break; -! } - } - - /* We're done with both the temporary bfd and target. Remember, +Index: gdb-6.7/gdb/solib-svr4.c +=================================================================== +--- gdb-6.7.orig/gdb/solib-svr4.c 2007-10-09 20:03:30.000000000 +0200 ++++ gdb-6.7/gdb/solib-svr4.c 2007-10-12 22:34:03.000000000 +0200 +@@ -1089,7 +1089,15 @@ enable_break (void) + { + sym_addr = bfd_lookup_symbol (tmp_bfd, *bkpt_namep); + if (sym_addr != 0) +- break; ++ { ++ /* The symbol might be a descriptor, convert to into the ++ corresponding code address. */ ++ sym_addr = gdbarch_convert_from_func_ptr_addr (current_gdbarch, ++ sym_addr, ++ tmp_bfd_target); ++ if (sym_addr != 0) ++ break; ++ } + } + + if (sym_addr != 0) diff --git a/gdb-6.3-sepcrc-20050402.patch b/gdb-6.3-sepcrc-20050402.patch index 2073eb8..d980536 100644 --- a/gdb-6.3-sepcrc-20050402.patch +++ b/gdb-6.3-sepcrc-20050402.patch @@ -83,3 +83,12 @@ { xfree (basename); xfree (dir); +@@ -1952,7 +1952,7 @@ find_separate_debug_file (struct objfile + strcat (debugfile, "/"); + strcat (debugfile, basename); + +- if (separate_debug_file_exists (debugfile, crc32)) ++ if (separate_debug_file_exists (debugfile, crc32, objfile->name)) + { + xfree (build_id_filename); + xfree (canon_name); diff --git a/gdb-6.3-terminal-fix-20050214.patch b/gdb-6.3-terminal-fix-20050214.patch index 7aadb33..d97d6a2 100644 --- a/gdb-6.3-terminal-fix-20050214.patch +++ b/gdb-6.3-terminal-fix-20050214.patch @@ -3,13 +3,17 @@ * top.c (gdb_readline_wrapper): Ensure terminal is gdb's before calling readline. -Index: gdb-6.5/gdb/top.c +2007-10-14 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/top.c =================================================================== ---- gdb-6.5.orig/gdb/top.c 2006-03-29 19:53:33.000000000 -0300 -+++ gdb-6.5/gdb/top.c 2006-07-07 02:29:42.000000000 -0300 -@@ -728,6 +728,14 @@ gdb_readline_wrapper (char *prompt) - after_char_processing_hook = NULL; - } +--- gdb-6.7.orig/gdb/top.c 2007-09-02 23:13:56.000000000 +0200 ++++ gdb-6.7/gdb/top.c 2007-10-14 23:38:27.000000000 +0200 +@@ -795,6 +795,14 @@ gdb_readline_wrapper (char *prompt) + + back_to = make_cleanup (gdb_readline_wrapper_cleanup, cleanup); + /* Before calling readline, ensure we have the terminal. If we don't + have the terminal and call readline, we risk the possibility of @@ -19,6 +23,6 @@ Index: gdb-6.5/gdb/top.c + a page break prompt. */ + terminal_ours (); + - return readline (prompt); - } - + /* Display our prompt and prevent double prompt display. */ + display_gdb_prompt (prompt); + rl_already_prompted = 1; diff --git a/gdb-6.3-test-dtorfix-20050121.patch b/gdb-6.3-test-dtorfix-20050121.patch index 73c005d..65de72a 100644 --- a/gdb-6.3-test-dtorfix-20050121.patch +++ b/gdb-6.3-test-dtorfix-20050121.patch @@ -1,29 +1,13 @@ -Index: gdb/testsuite/ChangeLog -2005-01-21 Jeff Johnston +[base] - * gdb.cp/constructortest.exp: New test. - * gdb.cp/constructortest.cc: Ditto. - * gdb.cp/templates.exp: Change break of dtor to be fully quoted. +2007-10-14 Jan Kratochvil -2007-09-22 Jan Kratochvil + Port to GDB-6.7. - * gdb.cp/constructortest.exp, gdb.cp/constructortest.cc: Test also the - `$delete' destructor variant. - -2007-09-25 Jan Kratochvil - - * gdb.cp/constructortest.exp: Delete the FIXME workaround of restarting - the whole GDB. - -2007-10-05 Jan Kratochvil - - * gdb.cp/constructortest.exp: Test BREAKPOINT_RE_SET for multiple PCs - by PIE. - * gdb.cp/constructortest.exp: Handle the change of settings breakpoints - always at all the ctor/dtor variants. - ---- gdb-6.3/gdb/testsuite/gdb.cp/constructortest.cc.fix Fri Jan 21 17:06:56 2005 -+++ gdb-6.3/gdb/testsuite/gdb.cp/constructortest.cc Fri Jan 21 17:05:18 2005 +Index: gdb-6.7/gdb/testsuite/gdb.cp/constructortest.cc +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-6.7/gdb/testsuite/gdb.cp/constructortest.cc 2007-10-14 23:29:48.000000000 +0200 @@ -0,0 +1,99 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -124,8 +108,10 @@ Index: gdb/testsuite/ChangeLog +{ + y = 2; /* First line D */ +} ---- gdb-6.3/gdb/testsuite/gdb.cp/constructortest.exp.fix Fri Jan 21 17:07:02 2005 -+++ gdb-6.3/gdb/testsuite/gdb.cp/constructortest.exp Fri Jan 21 17:05:29 2005 +Index: gdb-6.7/gdb/testsuite/gdb.cp/constructortest.exp +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-6.7/gdb/testsuite/gdb.cp/constructortest.exp 2007-10-14 23:29:48.000000000 +0200 @@ -0,0 +1,148 @@ +# This testcase is part of GDB, the GNU debugger. + @@ -275,14 +261,10 @@ Index: gdb/testsuite/ChangeLog +} + +gdb_continue_to_breakpoint "First line ~C" ---- gdb-6.3/gdb/testsuite/gdb.cp/templates.exp.fix Fri Jan 21 17:07:10 2005 -+++ gdb-6.3/gdb/testsuite/gdb.cp/templates.exp Fri Jan 21 17:09:09 2005 -@@ -1,4 +1,4 @@ --# Copyright 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2002, 2003, 2004 -+# Copyright 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 - # Free Software Foundation, Inc. - - # This program is free software; you can redistribute it and/or modify +Index: gdb-6.7/gdb/testsuite/gdb.cp/templates.exp +=================================================================== +--- gdb-6.7.orig/gdb/testsuite/gdb.cp/templates.exp 2007-08-23 20:14:17.000000000 +0200 ++++ gdb-6.7/gdb/testsuite/gdb.cp/templates.exp 2007-10-14 23:29:48.000000000 +0200 @@ -142,7 +142,7 @@ proc test_template_breakpoints {} { # See CLLbs14792 if {$hp_aCC_compiler} {setup_xfail hppa*-*-* CLLbs14792} diff --git a/gdb-6.3-test-pie-20050107.patch b/gdb-6.3-test-pie-20050107.patch index c6a5284..be1c9e9 100644 --- a/gdb-6.3-test-pie-20050107.patch +++ b/gdb-6.3-test-pie-20050107.patch @@ -1,38 +1,43 @@ -Index: gdb-6.5/gdb/testsuite/configure.ac +2007-10-13 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/testsuite/configure.ac =================================================================== ---- gdb-6.5.orig/gdb/testsuite/configure.ac 2006-07-07 01:12:31.000000000 -0300 -+++ gdb-6.5/gdb/testsuite/configure.ac 2006-07-07 01:13:23.000000000 -0300 -@@ -114,4 +114,4 @@ AC_OUTPUT([Makefile \ +--- gdb-6.7.orig/gdb/testsuite/configure.ac 2007-08-23 19:58:44.000000000 +0200 ++++ gdb-6.7/gdb/testsuite/configure.ac 2007-10-13 05:28:28.000000000 +0200 +@@ -114,5 +114,5 @@ AC_OUTPUT([Makefile \ gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile \ gdb.fortran/Makefile gdb.server/Makefile \ gdb.java/Makefile gdb.mi/Makefile \ -- gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile]) -+ gdb.objc/Makefile gdb.pie/Makefile gdb.threads/Makefile gdb.trace/Makefile]) -Index: gdb-6.5/gdb/testsuite/configure +- gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile \ ++ gdb.objc/Makefile gdb.pie/Makefile gdb.threads/Makefile gdb.trace/Makefile \ + gdb.xml/Makefile]) +Index: gdb-6.7/gdb/testsuite/configure =================================================================== ---- gdb-6.5.orig/gdb/testsuite/configure 2006-07-07 01:12:31.000000000 -0300 -+++ gdb-6.5/gdb/testsuite/configure 2006-07-07 01:13:23.000000000 -0300 -@@ -3075,7 +3075,7 @@ done +--- gdb-6.7.orig/gdb/testsuite/configure 2007-01-23 18:11:54.000000000 +0100 ++++ gdb-6.7/gdb/testsuite/configure 2007-10-13 05:29:11.000000000 +0200 +@@ -3102,7 +3102,7 @@ done -- ac_config_files="$ac_config_files Makefile gdb.ada/Makefile gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile gdb.fortran/Makefile gdb.server/Makefile gdb.java/Makefile gdb.mi/Makefile gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile" -+ ac_config_files="$ac_config_files Makefile gdb.ada/Makefile gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile gdb.fortran/Makefile gdb.server/Makefile gdb.java/Makefile gdb.mi/Makefile gdb.objc/Makefile gdb.pie/Makefile gdb.threads/Makefile gdb.trace/Makefile" +- ac_config_files="$ac_config_files Makefile gdb.ada/Makefile gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile gdb.fortran/Makefile gdb.server/Makefile gdb.java/Makefile gdb.mi/Makefile gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile gdb.xml/Makefile" ++ ac_config_files="$ac_config_files Makefile gdb.ada/Makefile gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile gdb.fortran/Makefile gdb.server/Makefile gdb.java/Makefile gdb.mi/Makefile gdb.objc/Makefile gdb.pie/Makefile gdb.threads/Makefile gdb.trace/Makefile gdb.xml/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure -@@ -3639,6 +3639,7 @@ do +@@ -3666,6 +3666,7 @@ do "gdb.java/Makefile" ) CONFIG_FILES="$CONFIG_FILES gdb.java/Makefile" ;; "gdb.mi/Makefile" ) CONFIG_FILES="$CONFIG_FILES gdb.mi/Makefile" ;; "gdb.objc/Makefile" ) CONFIG_FILES="$CONFIG_FILES gdb.objc/Makefile" ;; + "gdb.pie/Makefile" ) CONFIG_FILES="$CONFIG_FILES gdb.pie/Makefile" ;; "gdb.threads/Makefile" ) CONFIG_FILES="$CONFIG_FILES gdb.threads/Makefile" ;; "gdb.trace/Makefile" ) CONFIG_FILES="$CONFIG_FILES gdb.trace/Makefile" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -Index: gdb-6.5/gdb/testsuite/gdb.pie/attach.c + "gdb.xml/Makefile" ) CONFIG_FILES="$CONFIG_FILES gdb.xml/Makefile" ;; +Index: gdb-6.7/gdb/testsuite/gdb.pie/attach.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.5/gdb/testsuite/gdb.pie/attach.c 2006-07-07 01:13:23.000000000 -0300 ++++ gdb-6.7/gdb/testsuite/gdb.pie/attach.c 2007-10-13 05:27:45.000000000 +0200 @@ -0,0 +1,20 @@ +/* This program is intended to be started outside of gdb, and then + attached to by gdb. Thus, it simply spins in a loop. The loop @@ -54,10 +59,10 @@ Index: gdb-6.5/gdb/testsuite/gdb.pie/attach.c + } + return 0; +} -Index: gdb-6.5/gdb/testsuite/gdb.pie/attach2.c +Index: gdb-6.7/gdb/testsuite/gdb.pie/attach2.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.5/gdb/testsuite/gdb.pie/attach2.c 2006-07-07 01:13:23.000000000 -0300 ++++ gdb-6.7/gdb/testsuite/gdb.pie/attach2.c 2007-10-13 05:27:45.000000000 +0200 @@ -0,0 +1,24 @@ +/* This program is intended to be started outside of gdb, and then + attached to by gdb. Thus, it simply spins in a loop. The loop @@ -83,10 +88,10 @@ Index: gdb-6.5/gdb/testsuite/gdb.pie/attach2.c + } + return (0); +} -Index: gdb-6.5/gdb/testsuite/gdb.pie/break.c +Index: gdb-6.7/gdb/testsuite/gdb.pie/break.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.5/gdb/testsuite/gdb.pie/break.c 2006-07-07 01:13:23.000000000 -0300 ++++ gdb-6.7/gdb/testsuite/gdb.pie/break.c 2007-10-13 05:27:45.000000000 +0200 @@ -0,0 +1,146 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -234,10 +239,10 @@ Index: gdb-6.5/gdb/testsuite/gdb.pie/break.c + } + return 0; +} -Index: gdb-6.5/gdb/testsuite/gdb.pie/break1.c +Index: gdb-6.7/gdb/testsuite/gdb.pie/break1.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.5/gdb/testsuite/gdb.pie/break1.c 2006-07-07 01:13:23.000000000 -0300 ++++ gdb-6.7/gdb/testsuite/gdb.pie/break1.c 2007-10-13 05:27:45.000000000 +0200 @@ -0,0 +1,44 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -283,10 +288,10 @@ Index: gdb-6.5/gdb/testsuite/gdb.pie/break1.c +void marker3 (a, b) char *a, *b; {} /* set breakpoint 18 here */ +void marker4 (d) long d; {} /* set breakpoint 13 here */ +#endif -Index: gdb-6.5/gdb/testsuite/gdb.pie/coremaker.c +Index: gdb-6.7/gdb/testsuite/gdb.pie/coremaker.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.5/gdb/testsuite/gdb.pie/coremaker.c 2006-07-07 01:13:23.000000000 -0300 ++++ gdb-6.7/gdb/testsuite/gdb.pie/coremaker.c 2007-10-13 05:27:45.000000000 +0200 @@ -0,0 +1,142 @@ +/* Copyright 1992, 1993, 1994, 1995, 1996, 1999 + Free Software Foundation, Inc. @@ -430,10 +435,10 @@ Index: gdb-6.5/gdb/testsuite/gdb.pie/coremaker.c + return 0; +} + -Index: gdb-6.5/gdb/testsuite/gdb.pie/attach.exp +Index: gdb-6.7/gdb/testsuite/gdb.pie/attach.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.5/gdb/testsuite/gdb.pie/attach.exp 2006-07-07 01:13:23.000000000 -0300 ++++ gdb-6.7/gdb/testsuite/gdb.pie/attach.exp 2007-10-13 05:27:45.000000000 +0200 @@ -0,0 +1,432 @@ +# Copyright 1997, 1999, 2002 Free Software Foundation, Inc. + @@ -867,10 +872,10 @@ Index: gdb-6.5/gdb/testsuite/gdb.pie/attach.exp +do_call_attach_tests + +return 0 -Index: gdb-6.5/gdb/testsuite/gdb.pie/break.exp +Index: gdb-6.7/gdb/testsuite/gdb.pie/break.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.5/gdb/testsuite/gdb.pie/break.exp 2006-07-07 01:13:23.000000000 -0300 ++++ gdb-6.7/gdb/testsuite/gdb.pie/break.exp 2007-10-13 05:27:45.000000000 +0200 @@ -0,0 +1,973 @@ +# Copyright 1988, 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2002, 2003, 2004 @@ -1845,10 +1850,10 @@ Index: gdb-6.5/gdb/testsuite/gdb.pie/break.exp + send_gdb "set args main\n" + gdb_expect -re ".*$gdb_prompt $" {} +} -Index: gdb-6.5/gdb/testsuite/gdb.pie/corefile.exp +Index: gdb-6.7/gdb/testsuite/gdb.pie/corefile.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.5/gdb/testsuite/gdb.pie/corefile.exp 2006-07-07 01:13:23.000000000 -0300 ++++ gdb-6.7/gdb/testsuite/gdb.pie/corefile.exp 2007-10-13 05:27:45.000000000 +0200 @@ -0,0 +1,243 @@ +# Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 +# Free Software Foundation, Inc. @@ -2093,10 +2098,10 @@ Index: gdb-6.5/gdb/testsuite/gdb.pie/corefile.exp +gdb_test "up" "#\[0-9\]* *\[0-9xa-fH'\]* in .* \\(\\).*" "up in corefile.exp (reinit)" + +gdb_test "core" "No core file now." -Index: gdb-6.5/gdb/testsuite/gdb.pie/Makefile.in +Index: gdb-6.7/gdb/testsuite/gdb.pie/Makefile.in =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.5/gdb/testsuite/gdb.pie/Makefile.in 2006-07-07 01:13:23.000000000 -0300 ++++ gdb-6.7/gdb/testsuite/gdb.pie/Makefile.in 2007-10-13 05:27:45.000000000 +0200 @@ -0,0 +1,19 @@ +VPATH = @srcdir@ +srcdir = @srcdir@ diff --git a/gdb-6.3-threaded-watchpoints-20041213.patch b/gdb-6.3-threaded-watchpoints-20041213.patch index 5aa04b8..0e9f97d 100644 --- a/gdb-6.3-threaded-watchpoints-20041213.patch +++ b/gdb-6.3-threaded-watchpoints-20041213.patch @@ -28,15 +28,18 @@ * doc/observer.texi: Add two new observers for linux_new_thread and sigtrap. -Index: gdb-6.5/gdb/doc/observer.texi +2007-10-13 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/doc/observer.texi =================================================================== ---- gdb-6.5.orig/gdb/doc/observer.texi 2006-07-11 12:30:23.000000000 -0300 -+++ gdb-6.5/gdb/doc/observer.texi 2006-07-11 15:00:15.000000000 -0300 -@@ -122,3 +122,13 @@ haven't been loaded yet. - @deftypefun void solib_unloaded (struct so_list *@var{solib}) - The shared library specified by @var{solib} has been unloaded. +--- gdb-6.7.orig/gdb/doc/observer.texi 2007-05-11 21:55:20.000000000 +0200 ++++ gdb-6.7/gdb/doc/observer.texi 2007-10-13 04:51:21.000000000 +0200 +@@ -129,3 +129,12 @@ Called with @var{objfile} equal to @code + previously loaded symbol table data has now been invalidated. @end deftypefun -+ + +@deftypefun void linux_new_thread (ptid_t @var{ptid}) +A new linux thread described by @var{ptid} has been officially attached +to by gdb. @@ -46,11 +49,11 @@ Index: gdb-6.5/gdb/doc/observer.texi +A low-level SIGTRAP has been discovered. This notification can be used to save +additional state necessary if the trap is deferred for later handling. +@end deftypefun -Index: gdb-6.5/gdb/infrun.c +Index: gdb-6.7/gdb/infrun.c =================================================================== ---- gdb-6.5.orig/gdb/infrun.c 2006-07-11 12:30:23.000000000 -0300 -+++ gdb-6.5/gdb/infrun.c 2006-07-11 15:00:17.000000000 -0300 -@@ -1703,9 +1703,19 @@ handle_inferior_event (struct execution_ +--- gdb-6.7.orig/gdb/infrun.c 2007-10-12 22:35:58.000000000 +0200 ++++ gdb-6.7/gdb/infrun.c 2007-10-13 04:50:11.000000000 +0200 +@@ -1784,9 +1784,19 @@ handle_inferior_event (struct execution_ single step over a watchpoint without disabling the watchpoint. */ if (HAVE_STEPPABLE_WATCHPOINT && STOPPED_BY_WATCHPOINT (ecs->ws)) { @@ -71,16 +74,16 @@ Index: gdb-6.5/gdb/infrun.c prepare_to_wait (ecs); return; } -@@ -1715,6 +1725,8 @@ handle_inferior_event (struct execution_ - register or page protection watchpoint scheme need here? */ - if (HAVE_NONSTEPPABLE_WATCHPOINT && STOPPED_BY_WATCHPOINT (ecs->ws)) +@@ -1797,6 +1807,8 @@ handle_inferior_event (struct execution_ + if (gdbarch_have_nonsteppable_watchpoint (current_gdbarch) + && STOPPED_BY_WATCHPOINT (ecs->ws)) { + CORE_ADDR addr = 0; + /* At this point, we are stopped at an instruction which has attempted to write to a piece of memory under control of a watchpoint. The instruction hasn't actually executed -@@ -1722,15 +1734,12 @@ handle_inferior_event (struct execution_ +@@ -1804,15 +1816,12 @@ handle_inferior_event (struct execution_ now, we would get the old value, and therefore no change would seem to have occurred. @@ -102,7 +105,7 @@ Index: gdb-6.5/gdb/infrun.c if (debug_infrun) fprintf_unfiltered (gdb_stdlog, "infrun: STOPPED_BY_WATCHPOINT\n"); -@@ -1801,6 +1810,41 @@ handle_inferior_event (struct execution_ +@@ -1883,6 +1892,41 @@ handle_inferior_event (struct execution_ } } @@ -144,7 +147,7 @@ Index: gdb-6.5/gdb/infrun.c /* Look at the cause of the stop, and decide what to do. The alternatives are: 1) break; to really stop and return to the debugger, -@@ -1852,6 +1896,8 @@ handle_inferior_event (struct execution_ +@@ -1935,6 +1979,8 @@ handle_inferior_event (struct execution_ See more comments in inferior.h. */ if (stop_soon == STOP_QUIETLY_NO_SIGSTOP) { @@ -153,11 +156,11 @@ Index: gdb-6.5/gdb/infrun.c stop_stepping (ecs); if (stop_signal == TARGET_SIGNAL_STOP) stop_signal = TARGET_SIGNAL_0; -Index: gdb-6.5/gdb/breakpoint.c +Index: gdb-6.7/gdb/breakpoint.c =================================================================== ---- gdb-6.5.orig/gdb/breakpoint.c 2006-07-11 12:30:23.000000000 -0300 -+++ gdb-6.5/gdb/breakpoint.c 2006-07-11 15:00:19.000000000 -0300 -@@ -748,6 +748,90 @@ insert_catchpoint (struct ui_out *uo, vo +--- gdb-6.7.orig/gdb/breakpoint.c 2007-08-30 00:07:47.000000000 +0200 ++++ gdb-6.7/gdb/breakpoint.c 2007-10-13 04:50:11.000000000 +0200 +@@ -806,6 +806,90 @@ insert_catchpoint (struct ui_out *uo, vo } } @@ -247,8 +250,8 @@ Index: gdb-6.5/gdb/breakpoint.c + /* Helper routine: free the value chain for a breakpoint (watchpoint). */ - static void free_valchain (struct bp_location *b) -@@ -1190,6 +1274,7 @@ remove_breakpoints (void) + static void +@@ -1294,6 +1378,7 @@ remove_breakpoints (void) { struct bp_location *b; int val; @@ -256,7 +259,7 @@ Index: gdb-6.5/gdb/breakpoint.c ALL_BP_LOCATIONS (b) { -@@ -1197,10 +1282,10 @@ remove_breakpoints (void) +@@ -1301,10 +1386,10 @@ remove_breakpoints (void) { val = remove_breakpoint (b, mark_uninserted); if (val != 0) @@ -269,7 +272,7 @@ Index: gdb-6.5/gdb/breakpoint.c } int -@@ -2126,8 +2211,13 @@ print_it_typical (bpstat bs) +@@ -2187,8 +2272,13 @@ print_it_typical (bpstat bs) break; case bp_thread_event: @@ -285,7 +288,7 @@ Index: gdb-6.5/gdb/breakpoint.c printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n")); return PRINT_NOTHING; break; -@@ -2567,6 +2657,54 @@ which its expression is valid.\n"); +@@ -2636,6 +2726,54 @@ which its expression is valid.\n"); } } @@ -340,7 +343,7 @@ Index: gdb-6.5/gdb/breakpoint.c /* Get a bpstat associated with having just stopped at address BP_ADDR in thread PTID. STOPPED_BY_WATCHPOINT is 1 if the target thinks we stopped due to a hardware watchpoint, 0 if we -@@ -2697,82 +2835,61 @@ bpstat_stop_status (CORE_ADDR bp_addr, p +@@ -2766,82 +2904,61 @@ bpstat_stop_status (CORE_ADDR bp_addr, p bs->stop = 1; bs->print = 1; @@ -468,7 +471,7 @@ Index: gdb-6.5/gdb/breakpoint.c { char *message = xstrprintf ("Error evaluating expression for watchpoint %d\n", b->number); -@@ -2801,6 +2918,15 @@ bpstat_stop_status (CORE_ADDR bp_addr, p +@@ -2870,6 +2987,15 @@ bpstat_stop_status (CORE_ADDR bp_addr, p break; case WP_VALUE_NOT_CHANGED: /* Stop. */ @@ -484,7 +487,7 @@ Index: gdb-6.5/gdb/breakpoint.c ++(b->hit_count); break; default: -@@ -2816,7 +2942,7 @@ bpstat_stop_status (CORE_ADDR bp_addr, p +@@ -2885,7 +3011,7 @@ bpstat_stop_status (CORE_ADDR bp_addr, p break; } } @@ -493,7 +496,7 @@ Index: gdb-6.5/gdb/breakpoint.c { /* This is a case where some watchpoint(s) triggered, but not at the address of this watchpoint (FOUND -@@ -4112,6 +4238,7 @@ set_raw_breakpoint (struct symtab_and_li +@@ -4186,6 +4312,7 @@ set_raw_breakpoint (struct symtab_and_li b->exec_pathname = NULL; b->ops = NULL; b->pending = 0; @@ -501,11 +504,11 @@ Index: gdb-6.5/gdb/breakpoint.c /* Add this breakpoint to the end of the chain so that a list of breakpoints will come out in order -Index: gdb-6.5/gdb/breakpoint.h +Index: gdb-6.7/gdb/breakpoint.h =================================================================== ---- gdb-6.5.orig/gdb/breakpoint.h 2006-07-11 12:30:23.000000000 -0300 -+++ gdb-6.5/gdb/breakpoint.h 2006-07-11 15:00:17.000000000 -0300 -@@ -426,6 +426,11 @@ struct breakpoint +--- gdb-6.7.orig/gdb/breakpoint.h 2007-08-23 20:08:26.000000000 +0200 ++++ gdb-6.7/gdb/breakpoint.h 2007-10-13 04:50:11.000000000 +0200 +@@ -420,6 +420,11 @@ struct breakpoint /* Is breakpoint pending on shlib loads? */ int pending; @@ -517,7 +520,7 @@ Index: gdb-6.5/gdb/breakpoint.h }; /* The following stuff is an abstract data type "bpstat" ("breakpoint -@@ -692,6 +697,14 @@ extern void tbreak_command (char *, int) +@@ -688,6 +693,14 @@ extern void tbreak_command (char *, int) extern int insert_breakpoints (void); @@ -532,11 +535,11 @@ Index: gdb-6.5/gdb/breakpoint.h extern int remove_breakpoints (void); /* This function can be used to physically insert eventpoints from the -Index: gdb-6.5/gdb/linux-nat.c +Index: gdb-6.7/gdb/linux-nat.c =================================================================== ---- gdb-6.5.orig/gdb/linux-nat.c 2006-07-11 12:32:29.000000000 -0300 -+++ gdb-6.5/gdb/linux-nat.c 2006-07-11 15:00:15.000000000 -0300 -@@ -36,6 +36,7 @@ +--- gdb-6.7.orig/gdb/linux-nat.c 2007-10-12 22:35:58.000000000 +0200 ++++ gdb-6.7/gdb/linux-nat.c 2007-10-13 04:50:11.000000000 +0200 +@@ -34,6 +34,7 @@ #include "gdbthread.h" #include "gdbcmd.h" #include "regcache.h" @@ -544,7 +547,7 @@ Index: gdb-6.5/gdb/linux-nat.c #include "regset.h" #include "inf-ptrace.h" #include "auxv.h" -@@ -764,6 +765,9 @@ delete_lwp (ptid_t ptid) +@@ -704,6 +705,9 @@ delete_lwp (ptid_t ptid) else lwp_list = lp->next; @@ -554,7 +557,7 @@ Index: gdb-6.5/gdb/linux-nat.c xfree (lp); } -@@ -1478,6 +1482,13 @@ stop_wait_callback (struct lwp_info *lp, +@@ -1501,6 +1505,13 @@ stop_wait_callback (struct lwp_info *lp, user will delete or disable the breakpoint, but the thread will have already tripped on it. */ @@ -568,7 +571,7 @@ Index: gdb-6.5/gdb/linux-nat.c /* Now resume this LWP and get the SIGSTOP event. */ errno = 0; ptrace (PTRACE_CONT, GET_LWP (lp->ptid), 0, 0); -@@ -2054,6 +2065,14 @@ retry: +@@ -2061,6 +2072,14 @@ retry: target_pid_to_str (lp->ptid)); } @@ -583,11 +586,11 @@ Index: gdb-6.5/gdb/linux-nat.c /* Handle GNU/Linux's extended waitstatus for trace events. */ if (WIFSTOPPED (status) && WSTOPSIG (status) == SIGTRAP && status >> 16 != 0) { -Index: gdb-6.5/gdb/linux-nat.h +Index: gdb-6.7/gdb/linux-nat.h =================================================================== ---- gdb-6.5.orig/gdb/linux-nat.h 2006-07-11 12:30:23.000000000 -0300 -+++ gdb-6.5/gdb/linux-nat.h 2006-07-11 12:32:29.000000000 -0300 -@@ -63,6 +63,18 @@ struct lwp_info +--- gdb-6.7.orig/gdb/linux-nat.h 2007-10-12 22:35:58.000000000 +0200 ++++ gdb-6.7/gdb/linux-nat.h 2007-10-13 04:50:11.000000000 +0200 +@@ -61,6 +61,18 @@ struct lwp_info /* Next LWP in list. */ struct lwp_info *next; @@ -606,41 +609,41 @@ Index: gdb-6.5/gdb/linux-nat.h }; /* Attempt to initialize libthread_db. */ -Index: gdb-6.5/gdb/Makefile.in +Index: gdb-6.7/gdb/Makefile.in =================================================================== ---- gdb-6.5.orig/gdb/Makefile.in 2006-07-11 12:30:23.000000000 -0300 -+++ gdb-6.5/gdb/Makefile.in 2006-07-11 15:00:19.000000000 -0300 -@@ -2113,7 +2113,7 @@ i387-tdep.o: i387-tdep.c $(defs_h) $(dou +--- gdb-6.7.orig/gdb/Makefile.in 2007-09-05 02:14:02.000000000 +0200 ++++ gdb-6.7/gdb/Makefile.in 2007-10-13 04:50:53.000000000 +0200 +@@ -2160,7 +2160,7 @@ i387-tdep.o: i387-tdep.c $(defs_h) $(dou $(gdb_assert_h) $(gdb_string_h) $(i386_tdep_h) $(i387_tdep_h) ia64-linux-nat.o: ia64-linux-nat.c $(defs_h) $(gdb_string_h) $(inferior_h) \ $(target_h) $(gdbcore_h) $(regcache_h) $(ia64_tdep_h) $(gdb_wait_h) \ - $(gregset_h) $(linux_nat_h) + $(gregset_h) $(observer_h) $(linux_nat_h) ia64-linux-tdep.o: ia64-linux-tdep.c $(defs_h) $(ia64_tdep_h) \ - $(arch_utils_h) $(gdbcore_h) $(regcache_h) $(osabi_h) $(solib_svr4_h) - ia64-tdep.o: ia64-tdep.c $(defs_h) $(inferior_h) $(gdbcore_h) \ -@@ -2518,7 +2518,7 @@ rs6000-tdep.o: rs6000-tdep.c $(defs_h) $ - $(frame_unwind_h) $(frame_base_h) $(rs6000_tdep_h) - rs6000-aix-tdep.o: rs6000-aix-tdep.c $(defs_h) $(osabi_h) $(rs6000_tdep_h) - s390-nat.o: s390-nat.c $(defs_h) $(tm_h) $(regcache_h) $(inferior_h) \ + $(arch_utils_h) $(gdbcore_h) $(regcache_h) $(osabi_h) $(solib_svr4_h) \ + $(symtab_h) +@@ -2541,7 +2541,7 @@ rs6000-tdep.o: rs6000-tdep.c $(defs_h) $ + rs6000-aix-tdep.o: rs6000-aix-tdep.c $(defs_h) $(gdb_string_h) $(osabi_h) \ + $(regcache_h) $(regset_h) $(rs6000_tdep_h) $(ppc_tdep_h) + s390-nat.o: s390-nat.c $(defs_h) $(regcache_h) $(inferior_h) \ - $(s390_tdep_h) $(target_h) $(linux_nat_h) -+ $(s390_tdep_h) $(target_h) $(observer_h) $(linux_nat_h) ++ $(s390_tdep_h) $(target_h) $(linux_nat_h) $(observer_h) s390-tdep.o: s390-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) $(inferior_h) \ $(symtab_h) $(target_h) $(gdbcore_h) $(gdbcmd_h) $(objfiles_h) \ $(floatformat_h) $(regcache_h) $(trad_frame_h) $(frame_base_h) \ -Index: gdb-6.5/gdb/linux-thread-db.c +Index: gdb-6.7/gdb/linux-thread-db.c =================================================================== ---- gdb-6.5.orig/gdb/linux-thread-db.c 2006-07-11 12:30:23.000000000 -0300 -+++ gdb-6.5/gdb/linux-thread-db.c 2006-07-11 15:00:18.000000000 -0300 -@@ -36,6 +36,7 @@ +--- gdb-6.7.orig/gdb/linux-thread-db.c 2007-08-23 20:08:35.000000000 +0200 ++++ gdb-6.7/gdb/linux-thread-db.c 2007-10-13 04:53:59.000000000 +0200 +@@ -34,6 +34,7 @@ #include "target.h" #include "regcache.h" #include "solib-svr4.h" +#include "observer.h" #include "gdbcore.h" + #include "observer.h" #include "linux-nat.h" - -@@ -718,6 +719,7 @@ attach_thread (ptid_t ptid, const td_thr +@@ -673,6 +674,7 @@ attach_thread (ptid_t ptid, const td_thr { struct thread_info *tp; td_err_e err; @@ -648,17 +651,21 @@ Index: gdb-6.5/gdb/linux-thread-db.c /* If we're being called after a TD_CREATE event, we may already know about this thread. There are two ways this can happen. We -@@ -753,11 +755,18 @@ attach_thread (ptid_t ptid, const td_thr +@@ -700,8 +702,10 @@ attach_thread (ptid_t ptid, const td_thr if (ti_p->ti_state == TD_THR_UNKNOWN || ti_p->ti_state == TD_THR_ZOMBIE) return; /* A zombie thread -- do not attach. */ + new_ptid = BUILD_LWP (ti_p->ti_lid, GET_PID (ptid)); + /* Under GNU/Linux, we have to attach to each and every thread. */ - #ifdef ATTACH_LWP -- ATTACH_LWP (BUILD_LWP (ti_p->ti_lid, GET_PID (ptid)), 0); -+ ATTACH_LWP (new_ptid, 0); - #endif +- if (lin_lwp_attach_lwp (BUILD_LWP (ti_p->ti_lid, GET_PID (ptid)), 0) < 0) ++ if (lin_lwp_attach_lwp (new_ptid, 0) < 0) + return; + + /* Add the thread to GDB's thread list. */ +@@ -712,6 +716,11 @@ attach_thread (ptid_t ptid, const td_thr + if (verbose) + printf_unfiltered (_("[New %s]\n"), target_pid_to_str (ptid)); + /* Notify any observers of a new linux thread. This + would include any linux platforms that have to insert hardware @@ -668,8 +675,8 @@ Index: gdb-6.5/gdb/linux-thread-db.c /* Enable thread event reporting for this thread. */ err = td_thr_event_enable_p (th_p, 1); if (err != TD_OK) -@@ -946,7 +955,8 @@ thread_db_wait (ptid_t ptid, struct targ - return pid_to_ptid (-1); +@@ -891,7 +900,8 @@ thread_db_wait (ptid_t ptid, struct targ + thread_db_find_new_threads (); if (ourstatus->kind == TARGET_WAITKIND_STOPPED - && ourstatus->value.sig == TARGET_SIGNAL_TRAP) @@ -678,11 +685,11 @@ Index: gdb-6.5/gdb/linux-thread-db.c /* Check for a thread event. */ check_event (ptid); -Index: gdb-6.5/gdb/i386-linux-nat.c +Index: gdb-6.7/gdb/i386-linux-nat.c =================================================================== ---- gdb-6.5.orig/gdb/i386-linux-nat.c 2006-07-11 12:30:23.000000000 -0300 -+++ gdb-6.5/gdb/i386-linux-nat.c 2006-07-11 15:00:09.000000000 -0300 -@@ -619,10 +619,9 @@ i386_linux_dr_get (int regnum) +--- gdb-6.7.orig/gdb/i386-linux-nat.c 2007-08-23 20:08:34.000000000 +0200 ++++ gdb-6.7/gdb/i386-linux-nat.c 2007-10-13 04:50:11.000000000 +0200 +@@ -585,10 +585,9 @@ i386_linux_dr_get (int regnum) int tid; unsigned long value; @@ -696,7 +703,7 @@ Index: gdb-6.5/gdb/i386-linux-nat.c /* FIXME: kettenis/2001-03-27: Calling perror_with_name if the ptrace call fails breaks debugging remote targets. The correct -@@ -647,10 +646,9 @@ i386_linux_dr_set (int regnum, unsigned +@@ -613,10 +612,9 @@ i386_linux_dr_set (int regnum, unsigned { int tid; @@ -710,11 +717,11 @@ Index: gdb-6.5/gdb/i386-linux-nat.c errno = 0; ptrace (PTRACE_POKEUSER, tid, -Index: gdb-6.5/gdb/ia64-linux-nat.c +Index: gdb-6.7/gdb/ia64-linux-nat.c =================================================================== ---- gdb-6.5.orig/gdb/ia64-linux-nat.c 2006-07-11 12:30:23.000000000 -0300 -+++ gdb-6.5/gdb/ia64-linux-nat.c 2006-07-11 15:00:00.000000000 -0300 -@@ -29,6 +29,7 @@ +--- gdb-6.7.orig/gdb/ia64-linux-nat.c 2007-08-23 20:08:35.000000000 +0200 ++++ gdb-6.7/gdb/ia64-linux-nat.c 2007-10-13 05:07:58.000000000 +0200 +@@ -27,6 +27,7 @@ #include "regcache.h" #include "ia64-tdep.h" #include "linux-nat.h" @@ -722,25 +729,27 @@ Index: gdb-6.5/gdb/ia64-linux-nat.c #include #include -@@ -561,8 +562,9 @@ is_power_of_2 (int val) +@@ -550,10 +551,10 @@ is_power_of_2 (int val) return onecount <= 1; } --int --ia64_linux_insert_watchpoint (ptid_t ptid, CORE_ADDR addr, int len, int rw) +/* Internal routine to insert one watchpoint for a specified thread. */ -+static int + static int +-ia64_linux_insert_watchpoint (CORE_ADDR addr, int len, int rw) +ia64_linux_insert_one_watchpoint (ptid_t ptid, CORE_ADDR addr, int len, int rw) { +- ptid_t ptid = inferior_ptid; int idx; long dbr_addr, dbr_mask; -@@ -608,8 +610,38 @@ ia64_linux_insert_watchpoint (ptid_t pti + int max_watchpoints = 4; +@@ -598,10 +599,39 @@ ia64_linux_insert_watchpoint (CORE_ADDR return 0; } +/* Internal callback routine which can be used via iterate_over_lwps + to insert a specific watchpoint from all active threads. */ -+static int + static int +-ia64_linux_remove_watchpoint (CORE_ADDR addr, int len, int type) +ia64_linux_insert_watchpoint_callback (struct lwp_info *lwp, void *data) +{ + struct linux_watchpoint *args = (struct linux_watchpoint *)data; @@ -750,9 +759,8 @@ Index: gdb-6.5/gdb/ia64-linux-nat.c +} + +/* Insert a watchpoint for all threads. */ - int --ia64_linux_remove_watchpoint (ptid_t ptid, CORE_ADDR addr, int len) -+ia64_linux_insert_watchpoint (ptid_t ptid, CORE_ADDR addr, int len, int rw) ++static int ++ia64_linux_insert_watchpoint (CORE_ADDR addr, int len, int rw) +{ + struct linux_watchpoint args; + @@ -770,11 +778,13 @@ Index: gdb-6.5/gdb/ia64-linux-nat.c + +/* Internal routine to remove one watchpoint for a specified thread. */ +static int -+ia64_linux_remove_one_watchpoint (ptid_t ptid, CORE_ADDR addr, int len) ++ia64_linux_remove_one_watchpoint (ptid_t ptid, CORE_ADDR addr, int len, int type) { +- ptid_t ptid = inferior_ptid; int idx; long dbr_addr, dbr_mask; -@@ -632,23 +664,74 @@ ia64_linux_remove_watchpoint (ptid_t pti + int max_watchpoints = 4; +@@ -623,13 +653,55 @@ ia64_linux_remove_watchpoint (CORE_ADDR return -1; } @@ -790,8 +800,8 @@ Index: gdb-6.5/gdb/ia64-linux-nat.c +} + +/* Remove a watchpoint for all threads. */ -+int -+ia64_linux_remove_watchpoint (ptid_t ptid, CORE_ADDR addr, int len) ++static int ++ia64_linux_remove_watchpoint (CORE_ADDR addr, int len) +{ + struct linux_watchpoint args; + @@ -818,8 +828,8 @@ Index: gdb-6.5/gdb/ia64-linux-nat.c + return 0; +} + - int - ia64_linux_stopped_data_address (CORE_ADDR *addr_p) + static int + ia64_linux_stopped_data_address (struct target_ops *ops, CORE_ADDR *addr_p) { CORE_ADDR psr; int tid; @@ -827,9 +837,10 @@ Index: gdb-6.5/gdb/ia64-linux-nat.c + struct siginfo *siginfo_p; ptid_t ptid = inferior_ptid; + struct lwp_info *lp; + struct regcache *regcache = get_current_regcache (); tid = TIDGET(ptid); - if (tid == 0) +@@ -637,10 +709,19 @@ ia64_linux_stopped_data_address (struct tid = PIDGET (ptid); errno = 0; @@ -851,17 +862,17 @@ Index: gdb-6.5/gdb/ia64-linux-nat.c + (siginfo_p->si_code & 0xffff) != 0x0004 /* TRAP_HWBKPT */) return 0; - psr = read_register_pid (IA64_PSR_REGNUM, ptid); -@@ -656,7 +739,7 @@ ia64_linux_stopped_data_address (CORE_AD + regcache_cooked_read_unsigned (regcache, IA64_PSR_REGNUM, &psr); +@@ -648,7 +729,7 @@ ia64_linux_stopped_data_address (struct for the next instruction */ - write_register_pid (IA64_PSR_REGNUM, psr, ptid); + regcache_cooked_write_unsigned (regcache, IA64_PSR_REGNUM, psr); - *addr_p = (CORE_ADDR)siginfo.si_addr; + *addr_p = (CORE_ADDR)siginfo_p->si_addr; return 1; } -@@ -685,6 +768,31 @@ ia64_linux_xfer_partial (struct target_o +@@ -796,6 +877,31 @@ ia64_linux_xfer_partial (struct target_o offset, len); } @@ -893,7 +904,7 @@ Index: gdb-6.5/gdb/ia64-linux-nat.c void _initialize_ia64_linux_nat (void); void -@@ -701,4 +809,7 @@ _initialize_ia64_linux_nat (void) +@@ -834,4 +940,7 @@ _initialize_ia64_linux_nat (void) /* Register the target. */ linux_nat_add_target (t); @@ -901,11 +912,11 @@ Index: gdb-6.5/gdb/ia64-linux-nat.c + observer_attach_linux_new_thread (ia64_linux_new_thread); + observer_attach_sigtrap (ia64_linux_save_sigtrap_info); } -Index: gdb-6.5/gdb/amd64-linux-nat.c +Index: gdb-6.7/gdb/amd64-linux-nat.c =================================================================== ---- gdb-6.5.orig/gdb/amd64-linux-nat.c 2006-07-11 12:30:23.000000000 -0300 -+++ gdb-6.5/gdb/amd64-linux-nat.c 2006-07-11 15:00:09.000000000 -0300 -@@ -234,10 +234,9 @@ amd64_linux_dr_get (int regnum) +--- gdb-6.7.orig/gdb/amd64-linux-nat.c 2007-08-23 20:08:26.000000000 +0200 ++++ gdb-6.7/gdb/amd64-linux-nat.c 2007-10-13 04:50:11.000000000 +0200 +@@ -240,10 +240,9 @@ amd64_linux_dr_get (int regnum) int tid; unsigned long value; @@ -919,7 +930,7 @@ Index: gdb-6.5/gdb/amd64-linux-nat.c /* FIXME: kettenis/2001-03-27: Calling perror_with_name if the ptrace call fails breaks debugging remote targets. The correct -@@ -262,10 +261,9 @@ amd64_linux_dr_set (int regnum, unsigned +@@ -268,10 +267,9 @@ amd64_linux_dr_set (int regnum, unsigned { int tid; @@ -933,11 +944,11 @@ Index: gdb-6.5/gdb/amd64-linux-nat.c errno = 0; ptrace (PT_WRITE_U, tid, offsetof (struct user, u_debugreg[regnum]), value); -Index: gdb-6.5/gdb/s390-nat.c +Index: gdb-6.7/gdb/s390-nat.c =================================================================== ---- gdb-6.5.orig/gdb/s390-nat.c 2006-07-11 12:30:23.000000000 -0300 -+++ gdb-6.5/gdb/s390-nat.c 2006-07-11 15:00:26.000000000 -0300 -@@ -30,6 +30,7 @@ +--- gdb-6.7.orig/gdb/s390-nat.c 2007-08-23 20:08:37.000000000 +0200 ++++ gdb-6.7/gdb/s390-nat.c 2007-10-13 04:50:11.000000000 +0200 +@@ -27,6 +27,7 @@ #include "linux-nat.h" #include "s390-tdep.h" @@ -945,8 +956,8 @@ Index: gdb-6.5/gdb/s390-nat.c #include #include -@@ -114,14 +115,14 @@ fill_fpregset (fpregset_t *regp, int reg - ((char *)regp) + regmap_fpregset[i]); +@@ -111,14 +112,14 @@ fill_fpregset (const struct regcache *re + (char *)regp + regmap_fpregset[i]); } -/* Find the TID for the current inferior thread to use with ptrace. */ @@ -964,25 +975,25 @@ Index: gdb-6.5/gdb/s390-nat.c return tid; } -@@ -205,7 +206,7 @@ store_fpregs (int tid, int regnum) +@@ -202,7 +203,7 @@ store_fpregs (const struct regcache *reg static void - s390_linux_fetch_inferior_registers (int regnum) + s390_linux_fetch_inferior_registers (struct regcache *regcache, int regnum) { - int tid = s390_inferior_tid (); + int tid = s390_tid (inferior_ptid); if (regnum == -1 || (regnum < S390_NUM_REGS && regmap_gregset[regnum] != -1)) -@@ -221,7 +222,7 @@ s390_linux_fetch_inferior_registers (int +@@ -218,7 +219,7 @@ s390_linux_fetch_inferior_registers (str static void - s390_linux_store_inferior_registers (int regnum) + s390_linux_store_inferior_registers (struct regcache *regcache, int regnum) { - int tid = s390_inferior_tid (); + int tid = s390_tid (inferior_ptid); if (regnum == -1 || (regnum < S390_NUM_REGS && regmap_gregset[regnum] != -1)) -@@ -263,7 +264,7 @@ s390_stopped_by_watchpoint (void) +@@ -260,7 +261,7 @@ s390_stopped_by_watchpoint (void) parea.len = sizeof (per_lowcore); parea.process_addr = (addr_t) & per_lowcore; parea.kernel_addr = offsetof (struct user_regs_struct, per_info.lowcore); @@ -991,7 +1002,7 @@ Index: gdb-6.5/gdb/s390-nat.c perror_with_name (_("Couldn't retrieve watchpoint status")); return per_lowcore.perc_storage_alteration == 1 -@@ -271,9 +272,9 @@ s390_stopped_by_watchpoint (void) +@@ -268,9 +269,9 @@ s390_stopped_by_watchpoint (void) } static void @@ -1003,7 +1014,7 @@ Index: gdb-6.5/gdb/s390-nat.c per_struct per_info; ptrace_area parea; -@@ -310,6 +311,16 @@ s390_fix_watch_points (void) +@@ -307,6 +308,16 @@ s390_fix_watch_points (void) perror_with_name (_("Couldn't modify watchpoint status")); } @@ -1020,7 +1031,7 @@ Index: gdb-6.5/gdb/s390-nat.c static int s390_insert_watchpoint (CORE_ADDR addr, int len, int type) { -@@ -323,10 +334,24 @@ s390_insert_watchpoint (CORE_ADDR addr, +@@ -320,10 +331,24 @@ s390_insert_watchpoint (CORE_ADDR addr, area->next = watch_base; watch_base = area; @@ -1046,7 +1057,7 @@ Index: gdb-6.5/gdb/s390-nat.c static int s390_remove_watchpoint (CORE_ADDR addr, int len, int type) { -@@ -348,7 +373,11 @@ s390_remove_watchpoint (CORE_ADDR addr, +@@ -345,7 +370,11 @@ s390_remove_watchpoint (CORE_ADDR addr, *parea = area->next; xfree (area); @@ -1059,7 +1070,7 @@ Index: gdb-6.5/gdb/s390-nat.c return 0; } -@@ -364,6 +393,15 @@ s390_region_ok_for_hw_watchpoint (CORE_A +@@ -361,6 +390,15 @@ s390_region_ok_for_hw_watchpoint (CORE_A return 1; } @@ -1075,7 +1086,7 @@ Index: gdb-6.5/gdb/s390-nat.c void _initialize_s390_nat (void); -@@ -389,4 +427,6 @@ _initialize_s390_nat (void) +@@ -386,4 +424,6 @@ _initialize_s390_nat (void) /* Register the target. */ linux_nat_add_target (t); diff --git a/gdb-6.3-threaded-watchpoints2-20050225.patch b/gdb-6.3-threaded-watchpoints2-20050225.patch index 6567135..e43cb8c 100644 --- a/gdb-6.3-threaded-watchpoints2-20050225.patch +++ b/gdb-6.3-threaded-watchpoints2-20050225.patch @@ -35,11 +35,15 @@ * testsuite/gdb.threads/watchthreads2.c: New test case. * testsuite/gdb.threads/watchthreads2.exp: Ditto. -Index: gdb-6.5/gdb/config/i386/nm-linux64.h +2007-10-14 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/config/i386/nm-linux64.h =================================================================== ---- gdb-6.5.orig/gdb/config/i386/nm-linux64.h 2006-07-12 01:54:10.000000000 -0300 -+++ gdb-6.5/gdb/config/i386/nm-linux64.h 2006-07-12 01:54:29.000000000 -0300 -@@ -35,22 +35,59 @@ +--- gdb-6.7.orig/gdb/config/i386/nm-linux64.h 2007-08-23 20:08:48.000000000 +0200 ++++ gdb-6.7/gdb/config/i386/nm-linux64.h 2007-10-14 23:41:50.000000000 +0200 +@@ -33,20 +33,58 @@ /* Provide access to the i386 hardware debugging registers. */ @@ -66,7 +70,7 @@ Index: gdb-6.5/gdb/config/i386/nm-linux64.h #define I386_DR_LOW_GET_STATUS() \ - amd64_linux_dr_get_status () + amd64_linux_dr_get_status (inferior_ptid) - ++ +/* Watchpoints and hardware breakpoints. */ + +/* Insert a watchpoint to watch a memory region which starts at @@ -105,14 +109,13 @@ Index: gdb-6.5/gdb/config/i386/nm-linux64.h +#define target_remove_hw_breakpoint(bp_tgt) \ + amd64_linux_remove_hw_breakpoint (bp_tgt) - /* Override copies of {fetch,store}_inferior_registers in `infptrace.c'. */ - #define FETCH_INFERIOR_REGISTERS -Index: gdb-6.5/gdb/config/i386/nm-linux.h + #endif /* nm-linux64.h */ +Index: gdb-6.7/gdb/config/i386/nm-linux.h =================================================================== ---- gdb-6.5.orig/gdb/config/i386/nm-linux.h 2006-07-12 01:54:10.000000000 -0300 -+++ gdb-6.5/gdb/config/i386/nm-linux.h 2006-07-12 01:54:29.000000000 -0300 -@@ -46,23 +46,61 @@ extern CORE_ADDR register_u_addr (CORE_A - +--- gdb-6.7.orig/gdb/config/i386/nm-linux.h 2007-08-23 20:08:48.000000000 +0200 ++++ gdb-6.7/gdb/config/i386/nm-linux.h 2007-10-14 23:40:55.000000000 +0200 +@@ -29,21 +29,60 @@ + /* Provide access to the i386 hardware debugging registers. */ -extern void i386_linux_dr_set_control (unsigned long control); @@ -138,8 +141,7 @@ Index: gdb-6.5/gdb/config/i386/nm-linux.h #define I386_DR_LOW_GET_STATUS() \ - i386_linux_dr_get_status () + i386_linux_dr_get_status (inferior_ptid) - - ++ +/* Watchpoints and hardware breakpoints. */ + +/* Insert a watchpoint to watch a memory region which starts at @@ -178,14 +180,14 @@ Index: gdb-6.5/gdb/config/i386/nm-linux.h +#define target_remove_hw_breakpoint(bp_tgt) \ + i386_linux_remove_hw_breakpoint (bp_tgt) + - /* Override copies of {fetch,store}_inferior_registers in `infptrace.c'. */ - #define FETCH_INFERIOR_REGISTERS + -Index: gdb-6.5/gdb/i386-nat.c + #ifdef HAVE_PTRACE_GETFPXREGS +Index: gdb-6.7/gdb/i386-nat.c =================================================================== ---- gdb-6.5.orig/gdb/i386-nat.c 2006-07-12 01:54:10.000000000 -0300 -+++ gdb-6.5/gdb/i386-nat.c 2006-07-12 01:54:29.000000000 -0300 -@@ -21,6 +21,7 @@ +--- gdb-6.7.orig/gdb/i386-nat.c 2007-08-23 20:08:34.000000000 +0200 ++++ gdb-6.7/gdb/i386-nat.c 2007-10-14 23:39:04.000000000 +0200 +@@ -19,6 +19,7 @@ #include "defs.h" #include "breakpoint.h" @@ -193,10 +195,10 @@ Index: gdb-6.5/gdb/i386-nat.c #include "command.h" #include "gdbcmd.h" -Index: gdb-6.5/gdb/testsuite/gdb.threads/watchthreads2.c +Index: gdb-6.7/gdb/testsuite/gdb.threads/watchthreads2.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.5/gdb/testsuite/gdb.threads/watchthreads2.c 2006-07-12 01:54:29.000000000 -0300 ++++ gdb-6.7/gdb/testsuite/gdb.threads/watchthreads2.c 2007-10-14 23:39:04.000000000 +0200 @@ -0,0 +1,66 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -264,10 +266,10 @@ Index: gdb-6.5/gdb/testsuite/gdb.threads/watchthreads2.c + pthread_exit(NULL); +} + -Index: gdb-6.5/gdb/testsuite/gdb.threads/watchthreads2.exp +Index: gdb-6.7/gdb/testsuite/gdb.threads/watchthreads2.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.5/gdb/testsuite/gdb.threads/watchthreads2.exp 2006-07-12 01:54:29.000000000 -0300 ++++ gdb-6.7/gdb/testsuite/gdb.threads/watchthreads2.exp 2007-10-14 23:39:04.000000000 +0200 @@ -0,0 +1,133 @@ +# This testcase is part of GDB, the GNU debugger. + @@ -402,11 +404,11 @@ Index: gdb-6.5/gdb/testsuite/gdb.threads/watchthreads2.exp +} else { + fail $message +} -Index: gdb-6.5/gdb/i386-linux-nat.c +Index: gdb-6.7/gdb/i386-linux-nat.c =================================================================== ---- gdb-6.5.orig/gdb/i386-linux-nat.c 2006-07-12 01:54:28.000000000 -0300 -+++ gdb-6.5/gdb/i386-linux-nat.c 2006-07-12 01:57:19.000000000 -0300 -@@ -24,6 +24,7 @@ +--- gdb-6.7.orig/gdb/i386-linux-nat.c 2007-10-13 05:09:50.000000000 +0200 ++++ gdb-6.7/gdb/i386-linux-nat.c 2007-10-14 23:39:04.000000000 +0200 +@@ -22,6 +22,7 @@ #include "inferior.h" #include "gdbcore.h" #include "regcache.h" @@ -414,7 +416,7 @@ Index: gdb-6.5/gdb/i386-linux-nat.c #include "target.h" #include "linux-nat.h" -@@ -614,14 +615,14 @@ i386_linux_store_inferior_registers (int +@@ -580,14 +581,14 @@ i386_linux_store_inferior_registers (str /* Support for debug registers. */ static unsigned long @@ -432,7 +434,7 @@ Index: gdb-6.5/gdb/i386-linux-nat.c /* FIXME: kettenis/2001-03-27: Calling perror_with_name if the ptrace call fails breaks debugging remote targets. The correct -@@ -642,13 +643,13 @@ i386_linux_dr_get (int regnum) +@@ -608,13 +609,13 @@ i386_linux_dr_get (int regnum) } static void @@ -449,7 +451,7 @@ Index: gdb-6.5/gdb/i386-linux-nat.c errno = 0; ptrace (PTRACE_POKEUSER, tid, -@@ -658,34 +659,158 @@ i386_linux_dr_set (int regnum, unsigned +@@ -624,34 +625,158 @@ i386_linux_dr_set (int regnum, unsigned } void @@ -616,26 +618,26 @@ Index: gdb-6.5/gdb/i386-linux-nat.c /* Called by libthread_db. Returns a pointer to the thread local storage (or its descriptor). */ -@@ -843,4 +968,6 @@ _initialize_i386_linux_nat (void) +@@ -816,4 +941,6 @@ _initialize_i386_linux_nat (void) /* Register the target. */ linux_nat_add_target (t); + + observer_attach_linux_new_thread (i386_linux_new_thread); } -Index: gdb-6.5/gdb/amd64-linux-nat.c +Index: gdb-6.7/gdb/amd64-linux-nat.c =================================================================== ---- gdb-6.5.orig/gdb/amd64-linux-nat.c 2006-07-12 01:54:28.000000000 -0300 -+++ gdb-6.5/gdb/amd64-linux-nat.c 2006-07-12 01:54:29.000000000 -0300 -@@ -25,6 +25,7 @@ +--- gdb-6.7.orig/gdb/amd64-linux-nat.c 2007-10-13 05:09:50.000000000 +0200 ++++ gdb-6.7/gdb/amd64-linux-nat.c 2007-10-14 23:39:04.000000000 +0200 +@@ -23,6 +23,7 @@ #include "inferior.h" #include "gdbcore.h" #include "regcache.h" +#include "observer.h" #include "linux-nat.h" + #include "amd64-linux-tdep.h" - #include "gdb_assert.h" -@@ -229,14 +230,14 @@ amd64_linux_store_inferior_registers (in +@@ -235,14 +236,14 @@ amd64_linux_store_inferior_registers (st static unsigned long @@ -653,7 +655,7 @@ Index: gdb-6.5/gdb/amd64-linux-nat.c /* FIXME: kettenis/2001-03-27: Calling perror_with_name if the ptrace call fails breaks debugging remote targets. The correct -@@ -257,13 +258,13 @@ amd64_linux_dr_get (int regnum) +@@ -263,13 +264,13 @@ amd64_linux_dr_get (int regnum) } static void @@ -670,7 +672,7 @@ Index: gdb-6.5/gdb/amd64-linux-nat.c errno = 0; ptrace (PT_WRITE_U, tid, offsetof (struct user, u_debugreg[regnum]), value); -@@ -272,34 +273,158 @@ amd64_linux_dr_set (int regnum, unsigned +@@ -278,34 +279,158 @@ amd64_linux_dr_set (int regnum, unsigned } void @@ -837,18 +839,18 @@ Index: gdb-6.5/gdb/amd64-linux-nat.c /* This function is called by libthread_db as part of its handling of a request for a thread's local storage address. */ -@@ -399,4 +524,6 @@ _initialize_amd64_linux_nat (void) +@@ -406,4 +531,6 @@ _initialize_amd64_linux_nat (void) /* Register the target. */ linux_nat_add_target (t); + + observer_attach_linux_new_thread (amd64_linux_new_thread); } -Index: gdb-6.5/gdb/testsuite/gdb.threads/watchthreads.c +Index: gdb-6.7/gdb/testsuite/gdb.threads/watchthreads.c =================================================================== ---- gdb-6.5.orig/gdb/testsuite/gdb.threads/watchthreads.c 2006-07-12 01:55:19.000000000 -0300 -+++ gdb-6.5/gdb/testsuite/gdb.threads/watchthreads.c 2006-07-12 01:56:51.000000000 -0300 -@@ -58,7 +58,7 @@ void *thread_function(void *arg) { +--- gdb-6.7.orig/gdb/testsuite/gdb.threads/watchthreads.c 2007-08-23 20:08:50.000000000 +0200 ++++ gdb-6.7/gdb/testsuite/gdb.threads/watchthreads.c 2007-10-14 23:39:04.000000000 +0200 +@@ -56,7 +56,7 @@ void *thread_function(void *arg) { /* Don't run forever. Run just short of it :) */ while (*myp > 0) { diff --git a/gdb-6.3-warnings-20050317.patch b/gdb-6.3-warnings-20050317.patch index a48dcae..4c11873 100644 --- a/gdb-6.3-warnings-20050317.patch +++ b/gdb-6.3-warnings-20050317.patch @@ -1,194 +1,38 @@ -Index: gdb-6.6/gdb/mi/mi-cmd-env.c +[base] + +2007-10-14 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/mi/mi-cmd-env.c =================================================================== ---- gdb-6.6.orig/gdb/mi/mi-cmd-env.c -+++ gdb-6.6/gdb/mi/mi-cmd-env.c -@@ -126,7 +126,7 @@ mi_cmd_env_path (char *command, char **a - static struct mi_opt opts[] = - { - {"r", RESET_OPT, 0}, -- 0 -+ {0} - }; +--- gdb-6.7.orig/gdb/mi/mi-cmd-env.c 2007-10-14 23:42:39.000000000 +0200 ++++ gdb-6.7/gdb/mi/mi-cmd-env.c 2007-10-14 23:42:39.000000000 +0200 +@@ -78,7 +78,8 @@ mi_cmd_env_pwd (char *command, char **ar + + /* Otherwise the mi level is 2 or higher. */ - dont_repeat (); -@@ -198,7 +198,7 @@ mi_cmd_env_dir (char *command, char **ar - static struct mi_opt opts[] = - { - {"r", RESET_OPT, 0}, -- 0 -+ {0} - }; +- getcwd (gdb_dirbuf, sizeof (gdb_dirbuf)); ++ /* Unused result. */ ++ 1 && getcwd (gdb_dirbuf, sizeof (gdb_dirbuf)); + ui_out_field_string (uiout, "cwd", gdb_dirbuf); - dont_repeat (); -Index: gdb-6.6/gdb/mi/mi-getopt.c + return MI_CMD_DONE; +Index: gdb-6.7/gdb/testsuite/gdb.base/move-dir.h =================================================================== ---- gdb-6.6.orig/gdb/mi/mi-getopt.c -+++ gdb-6.6/gdb/mi/mi-getopt.c -@@ -82,7 +82,7 @@ mi_valid_noargs (const char *prefix, int - char *optarg; - static struct mi_opt opts[] = - { -- 0 -+ {0} - }; - - if (mi_getopt (prefix, argc, argv, opts, &optind, &optarg) == -1) -Index: gdb-6.6/gdb/mi/mi-cmd-break.c -=================================================================== ---- gdb-6.6.orig/gdb/mi/mi-cmd-break.c -+++ gdb-6.6/gdb/mi/mi-cmd-break.c -@@ -90,7 +90,7 @@ mi_cmd_break_insert (char *command, char - {"c", CONDITION_OPT, 1}, - {"i", IGNORE_COUNT_OPT, 1}, - {"p", THREAD_OPT, 1}, -- 0 -+ {0} - }; - - /* Parse arguments. It could be -r or -h or -t, or ``--'' -@@ -196,7 +196,7 @@ mi_cmd_break_watch (char *command, char - { - {"r", READ_OPT, 0}, - {"a", ACCESS_OPT, 0}, -- 0 -+ {0} - }; - - /* Parse arguments. */ -Index: gdb-6.6/gdb/mi/mi-cmd-disas.c -=================================================================== ---- gdb-6.6.orig/gdb/mi/mi-cmd-disas.c -+++ gdb-6.6/gdb/mi/mi-cmd-disas.c -@@ -84,7 +84,7 @@ mi_cmd_disassemble (char *command, char - {"n", NUM_OPT, 1}, - {"s", START_OPT, 1}, - {"e", END_OPT, 1}, -- 0 -+ {0} - }; - - /* Get the options with their arguments. Keep track of what we -Index: gdb-6.6/gdb/mi/mi-main.c -=================================================================== ---- gdb-6.6.orig/gdb/mi/mi-main.c -+++ gdb-6.6/gdb/mi/mi-main.c -@@ -773,7 +773,7 @@ mi_cmd_data_read_memory (char *command, - static struct mi_opt opts[] = - { - {"o", OFFSET_OPT, 1}, -- 0 -+ {0} - }; - - while (1) -@@ -973,7 +973,7 @@ mi_cmd_data_write_memory (char *command, - static struct mi_opt opts[] = - { - {"o", OFFSET_OPT, 1}, -- 0 -+ {0} - }; - - while (1) -Index: gdb-6.6/gdb/p-valprint.c -=================================================================== ---- gdb-6.6.orig/gdb/p-valprint.c -+++ gdb-6.6/gdb/p-valprint.c -@@ -753,7 +753,7 @@ pascal_object_print_value_fields (struct - int dont_print_statmem) - { - int i, len, n_baseclasses; -- struct obstack tmp_obstack; -+ struct obstack tmp_obstack = {0}; - char *last_dont_print = obstack_next_free (&dont_print_statmem_obstack); - - CHECK_TYPEDEF (type); -@@ -922,7 +922,7 @@ pascal_object_print_value (struct type * - enum val_prettyprint pretty, - struct type **dont_print_vb) - { -- struct obstack tmp_obstack; -+ struct obstack tmp_obstack = {0}; - struct type **last_dont_print - = (struct type **) obstack_next_free (&dont_print_vb_obstack); - int i, n_baseclasses = TYPE_N_BASECLASSES (type); -Index: gdb-6.6/gdb/cp-valprint.c -=================================================================== ---- gdb-6.6.orig/gdb/cp-valprint.c -+++ gdb-6.6/gdb/cp-valprint.c -@@ -265,7 +265,7 @@ cp_print_value_fields (struct type *type - struct type **dont_print_vb,int dont_print_statmem) - { - int i, len, n_baseclasses; -- struct obstack tmp_obstack; -+ struct obstack tmp_obstack = {0}; - char *last_dont_print = obstack_next_free (&dont_print_statmem_obstack); - int fields_seen = 0; - -@@ -524,7 +524,7 @@ cp_print_value (struct type *type, struc - struct ui_file *stream, int format, int recurse, - enum val_prettyprint pretty, struct type **dont_print_vb) - { -- struct obstack tmp_obstack; -+ struct obstack tmp_obstack = {0}; - struct type **last_dont_print - = (struct type **) obstack_next_free (&dont_print_vb_obstack); - int i, n_baseclasses = TYPE_N_BASECLASSES (type); -Index: gdb-6.6/gdb/tui/tui-layout.c -=================================================================== ---- gdb-6.6.orig/gdb/tui/tui-layout.c -+++ gdb-6.6/gdb/tui/tui-layout.c -@@ -755,7 +755,7 @@ show_source_disasm_command (void) - if (TUI_DISASM_WIN == NULL) - { - make_disasm_window (&TUI_DISASM_WIN, asm_height, src_height - 1); -- init_and_make_win ((void **) & locator, -+ init_and_make_win ((void **)(char *) & locator, - LOCATOR_WIN, - 2 /* 1 */ , - tui_term_width (), -@@ -848,7 +848,7 @@ show_data (enum tui_layout_type new_layo - make_source_window (&tui_win_list[win_type], src_height, data_height - 1); - else - make_disasm_window (&tui_win_list[win_type], src_height, data_height - 1); -- init_and_make_win ((void **) & locator, -+ init_and_make_win ((void **)(char *) & locator, - LOCATOR_WIN, - 2 /* 1 */ , - tui_term_width (), -@@ -963,7 +963,7 @@ make_source_or_disasm_window (struct tui - execution_info = tui_source_exec_info_win_ptr (); - else - execution_info = tui_disassem_exec_info_win_ptr (); -- init_and_make_win ((void **) & execution_info, -+ init_and_make_win ((void **)(char *) & execution_info, - EXEC_INFO_WIN, - height, - 3, -@@ -1013,7 +1013,7 @@ show_source_or_disasm_and_command (enum - make_source_window (win_info_ptr, src_height - 1, 0); - else - make_disasm_window (win_info_ptr, src_height - 1, 0); -- init_and_make_win ((void **) & locator, -+ init_and_make_win ((void **)(char *) & locator, - LOCATOR_WIN, - 2 /* 1 */ , - tui_term_width (), -Index: gdb-6.6/gdb/testsuite/gdb.base/move-dir.h -=================================================================== ---- gdb-6.6.orig/gdb/testsuite/gdb.base/move-dir.h -+++ gdb-6.6/gdb/testsuite/gdb.base/move-dir.h +--- gdb-6.7.orig/gdb/testsuite/gdb.base/move-dir.h 2007-10-14 23:31:22.000000000 +0200 ++++ gdb-6.7/gdb/testsuite/gdb.base/move-dir.h 2007-10-14 23:42:39.000000000 +0200 @@ -1,4 +1,4 @@ -#include +#include void other() { const char* ostring = "other"; -Index: gdb-6.6/gdb/testsuite/gdb.base/sigrepeat.c +Index: gdb-6.7/gdb/testsuite/gdb.base/sigrepeat.c =================================================================== ---- gdb-6.6.orig/gdb/testsuite/gdb.base/sigrepeat.c -+++ gdb-6.6/gdb/testsuite/gdb.base/sigrepeat.c -@@ -22,6 +22,7 @@ +--- gdb-6.7.orig/gdb/testsuite/gdb.base/sigrepeat.c 2007-08-23 20:08:49.000000000 +0200 ++++ gdb-6.7/gdb/testsuite/gdb.base/sigrepeat.c 2007-10-14 23:42:39.000000000 +0200 +@@ -21,6 +21,7 @@ #include #include #include @@ -196,11 +40,11 @@ Index: gdb-6.6/gdb/testsuite/gdb.base/sigrepeat.c #include static volatile int done[2]; -Index: gdb-6.6/gdb/s390-tdep.c +Index: gdb-6.7/gdb/s390-tdep.c =================================================================== ---- gdb-6.6.orig/gdb/s390-tdep.c -+++ gdb-6.6/gdb/s390-tdep.c -@@ -2277,6 +2277,9 @@ s390_return_value (struct gdbarch *gdbar +--- gdb-6.7.orig/gdb/s390-tdep.c 2007-10-02 21:26:42.000000000 +0200 ++++ gdb-6.7/gdb/s390-tdep.c 2007-10-14 23:42:39.000000000 +0200 +@@ -2214,6 +2214,9 @@ s390_return_value (struct gdbarch *gdbar case RETURN_VALUE_STRUCT_CONVENTION: error (_("Cannot set function return value.")); break; @@ -210,7 +54,7 @@ Index: gdb-6.6/gdb/s390-tdep.c } } else if (out) -@@ -2309,6 +2312,9 @@ s390_return_value (struct gdbarch *gdbar +@@ -2246,6 +2249,9 @@ s390_return_value (struct gdbarch *gdbar case RETURN_VALUE_STRUCT_CONVENTION: error (_("Function return value unknown.")); break; @@ -220,27 +64,10 @@ Index: gdb-6.6/gdb/s390-tdep.c } } -Index: gdb-6.6/gdb/remote.c +Index: gdb-6.7/gdb/f-exp.y =================================================================== ---- gdb-6.6.orig/gdb/remote.c -+++ gdb-6.6/gdb/remote.c -@@ -2843,10 +2843,10 @@ cleanup_sigint_signal_handler (void *dum - { - signal (SIGINT, handle_sigint); - if (sigint_remote_twice_token) -- delete_async_signal_handler ((struct async_signal_handler **) -+ delete_async_signal_handler ((struct async_signal_handler **) (char *) - &sigint_remote_twice_token); - if (sigint_remote_token) -- delete_async_signal_handler ((struct async_signal_handler **) -+ delete_async_signal_handler ((struct async_signal_handler **) (char *) - &sigint_remote_token); - } - -Index: gdb-6.6/gdb/f-exp.y -=================================================================== ---- gdb-6.6.orig/gdb/f-exp.y -+++ gdb-6.6/gdb/f-exp.y +--- gdb-6.7.orig/gdb/f-exp.y 2007-06-12 17:33:03.000000000 +0200 ++++ gdb-6.7/gdb/f-exp.y 2007-10-14 23:42:39.000000000 +0200 @@ -567,6 +567,8 @@ ptype : typebase case tp_function: follow_type = lookup_function_type (follow_type); @@ -250,48 +77,11 @@ Index: gdb-6.6/gdb/f-exp.y } $$ = follow_type; } -Index: gdb-6.6/gdb/remote-fileio.c +Index: gdb-6.7/gdb/source.c =================================================================== ---- gdb-6.6.orig/gdb/remote-fileio.c -+++ gdb-6.6/gdb/remote-fileio.c -@@ -1332,19 +1332,19 @@ static struct { - char *name; - void (*func)(char *); - } remote_fio_func_map[] = { -- "open", remote_fileio_func_open, -- "close", remote_fileio_func_close, -- "read", remote_fileio_func_read, -- "write", remote_fileio_func_write, -- "lseek", remote_fileio_func_lseek, -- "rename", remote_fileio_func_rename, -- "unlink", remote_fileio_func_unlink, -- "stat", remote_fileio_func_stat, -- "fstat", remote_fileio_func_fstat, -- "gettimeofday", remote_fileio_func_gettimeofday, -- "isatty", remote_fileio_func_isatty, -- "system", remote_fileio_func_system, -- NULL, NULL -+ {"open", remote_fileio_func_open}, -+ {"close", remote_fileio_func_close}, -+ {"read", remote_fileio_func_read}, -+ {"write", remote_fileio_func_write}, -+ {"lseek", remote_fileio_func_lseek}, -+ {"rename", remote_fileio_func_rename}, -+ {"unlink", remote_fileio_func_unlink}, -+ {"stat", remote_fileio_func_stat}, -+ {"fstat", remote_fileio_func_fstat}, -+ {"gettimeofday", remote_fileio_func_gettimeofday}, -+ {"isatty", remote_fileio_func_isatty}, -+ {"system", remote_fileio_func_system}, -+ {NULL, NULL} - }; - - static int -Index: gdb-6.6/gdb/source.c -=================================================================== ---- gdb-6.6.orig/gdb/source.c -+++ gdb-6.6/gdb/source.c -@@ -172,7 +172,7 @@ get_current_source_symtab_and_line (void +--- gdb-6.7.orig/gdb/source.c 2007-08-23 20:08:38.000000000 +0200 ++++ gdb-6.7/gdb/source.c 2007-10-14 23:42:39.000000000 +0200 +@@ -170,7 +170,7 @@ get_current_source_symtab_and_line (void void set_default_source_symtab_and_line (void) { @@ -300,7 +90,7 @@ Index: gdb-6.6/gdb/source.c if (!have_full_symbols () && !have_partial_symbols ()) error (_("No symbol table is loaded. Use the \"file\" command.")); -@@ -1428,7 +1428,7 @@ static void +@@ -1439,7 +1439,7 @@ static void line_info (char *arg, int from_tty) { struct symtabs_and_lines sals; @@ -309,92 +99,24 @@ Index: gdb-6.6/gdb/source.c CORE_ADDR start_pc, end_pc; int i; -Index: gdb-6.6/gdb/symfile.c +Index: gdb-6.7/gdb/linespec.c =================================================================== ---- gdb-6.6.orig/gdb/symfile.c -+++ gdb-6.6/gdb/symfile.c -@@ -2933,6 +2933,8 @@ add_psymbol_with_dem_name_to_list (char - deprecated_bcache (buf, dem_namelength + 1, objfile->psymbol_cache); - break; - /* FIXME What should be done for the default case? Ignoring for now. */ -+ default: -+ break; - } - - /* val and coreaddr are mutually exclusive, one of them *will* be zero */ -Index: gdb-6.6/gdb/linespec.c -=================================================================== ---- gdb-6.6.orig/gdb/linespec.c -+++ gdb-6.6/gdb/linespec.c -@@ -1631,7 +1631,7 @@ static struct symtabs_and_lines +--- gdb-6.7.orig/gdb/linespec.c 2007-10-14 23:31:03.000000000 +0200 ++++ gdb-6.7/gdb/linespec.c 2007-10-14 23:53:57.000000000 +0200 +@@ -1654,7 +1654,7 @@ static struct symtabs_and_lines find_method (int funfirstline, char ***canonical, char *saved_arg, char *copy, struct type *t, struct symbol *sym_class) { - struct symtabs_and_lines values; -+ struct symtabs_and_lines values = {0}; - struct symbol *sym = 0; ++ struct symtabs_and_lines values = { NULL }; + struct symbol *sym = NULL; int i1; /* Counter for the symbol array. */ struct symbol **sym_arr = alloca (total_number_of_methods (t) -Index: gdb-6.6/gdb/macroscope.c +Index: gdb-6.7/gdb/gdb-events.c =================================================================== ---- gdb-6.6.orig/gdb/macroscope.c -+++ gdb-6.6/gdb/macroscope.c -@@ -33,7 +33,7 @@ - struct macro_scope * - sal_macro_scope (struct symtab_and_line sal) - { -- struct macro_source_file *main, *inclusion; -+ struct macro_source_file *main_sf, *inclusion; - struct macro_scope *ms; - - if (! sal.symtab -@@ -42,8 +42,8 @@ sal_macro_scope (struct symtab_and_line - - ms = (struct macro_scope *) xmalloc (sizeof (*ms)); - -- main = macro_main (sal.symtab->macro_table); -- inclusion = macro_lookup_inclusion (main, sal.symtab->filename); -+ main_sf = macro_main (sal.symtab->macro_table); -+ inclusion = macro_lookup_inclusion (main_sf, sal.symtab->filename); - - if (inclusion) - { -@@ -66,7 +66,7 @@ sal_macro_scope (struct symtab_and_line - - For the time being, though, we'll just treat these as - occurring at the end of the main source file. */ -- ms->file = main; -+ ms->file = main_sf; - ms->line = -1; - - complaint (&symfile_complaints, -@@ -83,7 +83,6 @@ struct macro_scope * - default_macro_scope (void) - { - struct symtab_and_line sal; -- struct macro_source_file *main; - struct macro_scope *ms; - - /* If there's a selected frame, use its PC. */ -Index: gdb-6.6/gdb/target.c -=================================================================== ---- gdb-6.6.orig/gdb/target.c -+++ gdb-6.6/gdb/target.c -@@ -1045,6 +1045,9 @@ memory_xfer_partial (struct target_ops * - if (writebuf != NULL) - error (_("Writing to flash memory forbidden in this context")); - break; -+ -+ default: -+ break; - } - - if (region->attrib.cache) -Index: gdb-6.6/gdb/gdb-events.c -=================================================================== ---- gdb-6.6.orig/gdb/gdb-events.c -+++ gdb-6.6/gdb/gdb-events.c -@@ -321,6 +321,8 @@ gdb_events_deliver (struct gdb_events *v +--- gdb-6.7.orig/gdb/gdb-events.c 2007-08-23 20:08:31.000000000 +0200 ++++ gdb-6.7/gdb/gdb-events.c 2007-10-14 23:42:39.000000000 +0200 +@@ -319,6 +319,8 @@ gdb_events_deliver (struct gdb_events *v case architecture_changed: vector->architecture_changed (); break; @@ -403,11 +125,11 @@ Index: gdb-6.6/gdb/gdb-events.c } delivering_events = event->next; xfree (event); -Index: gdb-6.6/gdb/dwarf2read.c +Index: gdb-6.7/gdb/dwarf2read.c =================================================================== ---- gdb-6.6.orig/gdb/dwarf2read.c -+++ gdb-6.6/gdb/dwarf2read.c -@@ -9307,6 +9307,7 @@ dwarf_decode_macros (struct line_header +--- gdb-6.7.orig/gdb/dwarf2read.c 2007-10-14 23:31:22.000000000 +0200 ++++ gdb-6.7/gdb/dwarf2read.c 2007-10-14 23:42:39.000000000 +0200 +@@ -9585,6 +9585,7 @@ dwarf_decode_macros (struct line_header for (;;) { enum dwarf_macinfo_record_type macinfo_type; @@ -415,7 +137,7 @@ Index: gdb-6.6/gdb/dwarf2read.c /* Do we at least have room for a macinfo type byte? */ if (mac_ptr >= mac_end) -@@ -9318,13 +9319,16 @@ dwarf_decode_macros (struct line_header +@@ -9596,13 +9597,16 @@ dwarf_decode_macros (struct line_header macinfo_type = read_1_byte (abfd, mac_ptr); mac_ptr++; @@ -437,11 +159,11 @@ Index: gdb-6.6/gdb/dwarf2read.c case DW_MACINFO_define: case DW_MACINFO_undef: { -Index: gdb-6.6/gdb/stabsread.c +Index: gdb-6.7/gdb/stabsread.c =================================================================== ---- gdb-6.6.orig/gdb/stabsread.c -+++ gdb-6.6/gdb/stabsread.c -@@ -1794,7 +1794,8 @@ again: +--- gdb-6.7.orig/gdb/stabsread.c 2007-10-09 00:44:32.000000000 +0200 ++++ gdb-6.7/gdb/stabsread.c 2007-10-14 23:42:39.000000000 +0200 +@@ -1842,7 +1842,8 @@ again: struct type *domain = read_type (pp, objfile); struct type *return_type; struct field *args; @@ -451,11 +173,11 @@ Index: gdb-6.6/gdb/stabsread.c if (**pp != ',') /* Invalid member type data format. */ -Index: gdb-6.6/gdb/dwarf2expr.c +Index: gdb-6.7/gdb/dwarf2expr.c =================================================================== ---- gdb-6.6.orig/gdb/dwarf2expr.c -+++ gdb-6.6/gdb/dwarf2expr.c -@@ -559,6 +559,8 @@ execute_stack_op (struct dwarf_expr_cont +--- gdb-6.7.orig/gdb/dwarf2expr.c 2007-08-23 20:08:28.000000000 +0200 ++++ gdb-6.7/gdb/dwarf2expr.c 2007-10-14 23:42:39.000000000 +0200 +@@ -594,6 +594,8 @@ execute_stack_op (struct dwarf_expr_cont op_ptr = read_uleb128 (op_ptr, op_end, ®); result += reg; break; @@ -464,24 +186,11 @@ Index: gdb-6.6/gdb/dwarf2expr.c } break; -Index: gdb-6.6/gdb/varobj.c +Index: gdb-6.7/gdb/varobj.c =================================================================== ---- gdb-6.6.orig/gdb/varobj.c -+++ gdb-6.6/gdb/varobj.c -@@ -325,10 +325,9 @@ struct language_specific - - /* Array of known source language routines. */ - static struct language_specific -- languages[vlang_end][sizeof (struct language_specific)] = { -+ languages[vlang_end] = { - /* Unknown (try treating as C */ -- { -- vlang_unknown, -+ {vlang_unknown, - c_number_of_children, - c_name_of_variable, - c_name_of_child, -@@ -339,8 +338,7 @@ static struct language_specific +--- gdb-6.7.orig/gdb/varobj.c 2007-10-13 05:29:58.000000000 +0200 ++++ gdb-6.7/gdb/varobj.c 2007-10-14 23:42:39.000000000 +0200 +@@ -347,8 +347,7 @@ static struct language_specific language c_value_of_variable} , /* C */ @@ -491,7 +200,7 @@ Index: gdb-6.6/gdb/varobj.c c_number_of_children, c_name_of_variable, c_name_of_child, -@@ -351,8 +349,7 @@ static struct language_specific +@@ -360,8 +359,7 @@ static struct language_specific language c_value_of_variable} , /* C++ */ @@ -501,7 +210,7 @@ Index: gdb-6.6/gdb/varobj.c cplus_number_of_children, cplus_name_of_variable, cplus_name_of_child, -@@ -363,8 +360,7 @@ static struct language_specific +@@ -373,8 +371,7 @@ static struct language_specific language cplus_value_of_variable} , /* Java */ @@ -511,20 +220,11 @@ Index: gdb-6.6/gdb/varobj.c java_number_of_children, java_name_of_variable, java_name_of_child, -@@ -519,7 +515,7 @@ varobj_create (char *objname, - - /* Set language info */ - lang = variable_language (var); -- var->root->lang = languages[lang]; -+ var->root->lang = &languages[lang]; - - /* Set ourselves as our root */ - var->root->rootvar = var; -Index: gdb-6.6/gdb/doublest.c +Index: gdb-6.7/gdb/doublest.c =================================================================== ---- gdb-6.6.orig/gdb/doublest.c -+++ gdb-6.6/gdb/doublest.c -@@ -94,15 +94,10 @@ get_field (const bfd_byte *data, enum fl +--- gdb-6.7.orig/gdb/doublest.c 2007-08-23 20:08:28.000000000 +0200 ++++ gdb-6.7/gdb/doublest.c 2007-10-14 23:42:39.000000000 +0200 +@@ -92,15 +92,10 @@ get_field (const bfd_byte *data, enum fl { result |= (unsigned long)*(data + cur_byte) << cur_bitshift; cur_bitshift += FLOATFORMAT_CHAR_BIT; @@ -544,10 +244,11 @@ Index: gdb-6.6/gdb/doublest.c } if (len < sizeof(result) * FLOATFORMAT_CHAR_BIT) /* Mask out bits which are not part of the field */ -diff -u -rup gdb-6.6-orig/gdb/cli/cli-cmds.c gdb-6.6/gdb/cli/cli-cmds.c ---- gdb-6.6-orig/gdb/cli/cli-cmds.c 2007-04-08 20:49:09.000000000 +0200 -+++ gdb-6.6/gdb/cli/cli-cmds.c 2007-04-08 20:54:49.000000000 +0200 -@@ -323,7 +323,8 @@ pwd_command (char *args, int from_tty) +Index: gdb-6.7/gdb/cli/cli-cmds.c +=================================================================== +--- gdb-6.7.orig/gdb/cli/cli-cmds.c 2007-08-23 20:08:47.000000000 +0200 ++++ gdb-6.7/gdb/cli/cli-cmds.c 2007-10-14 23:42:39.000000000 +0200 +@@ -320,7 +320,8 @@ pwd_command (char *args, int from_tty) { if (args) error (_("The \"pwd\" command does not take an argument: %s"), args); @@ -557,10 +258,11 @@ diff -u -rup gdb-6.6-orig/gdb/cli/cli-cmds.c gdb-6.6/gdb/cli/cli-cmds.c if (strcmp (gdb_dirbuf, current_directory) != 0) printf_unfiltered (_("Working directory %s\n (canonically %s).\n"), -diff -u -rup gdb-6.6-orig/gdb/inflow.c gdb-6.6/gdb/inflow.c ---- gdb-6.6-orig/gdb/inflow.c 2006-02-10 23:01:43.000000000 +0100 -+++ gdb-6.6/gdb/inflow.c 2007-04-08 20:56:48.000000000 +0200 -@@ -549,17 +549,20 @@ new_tty (void) +Index: gdb-6.7/gdb/inflow.c +=================================================================== +--- gdb-6.7.orig/gdb/inflow.c 2007-08-23 20:08:35.000000000 +0200 ++++ gdb-6.7/gdb/inflow.c 2007-10-14 23:42:39.000000000 +0200 +@@ -547,17 +547,20 @@ new_tty (void) if (tty != 0) { close (0); @@ -584,12 +286,13 @@ diff -u -rup gdb-6.6-orig/gdb/inflow.c gdb-6.6/gdb/inflow.c } if (tty > 2) close (tty); -diff -u -rup gdb-6.6-orig/gdb/linux-nat.c gdb-6.6/gdb/linux-nat.c ---- gdb-6.6-orig/gdb/linux-nat.c 2007-04-08 20:49:11.000000000 +0200 -+++ gdb-6.6/gdb/linux-nat.c 2007-04-08 20:54:08.000000000 +0200 -@@ -2972,7 +2972,8 @@ linux_nat_info_proc_cmd (char *args, int +Index: gdb-6.7/gdb/linux-nat.c +=================================================================== +--- gdb-6.7.orig/gdb/linux-nat.c 2007-10-14 23:31:22.000000000 +0200 ++++ gdb-6.7/gdb/linux-nat.c 2007-10-14 23:42:39.000000000 +0200 +@@ -2895,7 +2895,8 @@ linux_nat_info_proc_cmd (char *args, int sprintf (fname1, "/proc/%lld/cmdline", pid); - if ((procfile = fopen (fname1, "r")) > 0) + if ((procfile = fopen (fname1, "r")) != NULL) { - fgets (buffer, sizeof (buffer), procfile); + /* Unused result. */ @@ -597,10 +300,11 @@ diff -u -rup gdb-6.6-orig/gdb/linux-nat.c gdb-6.6/gdb/linux-nat.c printf_filtered ("cmdline = '%s'\n", buffer); fclose (procfile); } -diff -u -rup gdb-6.6-orig/gdb/main.c gdb-6.6/gdb/main.c ---- gdb-6.6-orig/gdb/main.c 2007-04-08 20:49:09.000000000 +0200 -+++ gdb-6.6/gdb/main.c 2007-04-08 20:55:30.000000000 +0200 -@@ -195,7 +195,8 @@ captured_main (void *data) +Index: gdb-6.7/gdb/main.c +=================================================================== +--- gdb-6.7.orig/gdb/main.c 2007-08-23 20:08:36.000000000 +0200 ++++ gdb-6.7/gdb/main.c 2007-10-14 23:42:39.000000000 +0200 +@@ -193,7 +193,8 @@ captured_main (void *data) line[0] = '\0'; /* Terminate saved (now empty) cmd line */ instream = stdin; @@ -610,23 +314,11 @@ diff -u -rup gdb-6.6-orig/gdb/main.c gdb-6.6/gdb/main.c current_directory = gdb_dirbuf; gdb_stdout = stdio_fileopen (stdout); -diff -u -rup gdb-6.6-orig/gdb/mi/mi-cmd-env.c gdb-6.6/gdb/mi/mi-cmd-env.c ---- gdb-6.6-orig/gdb/mi/mi-cmd-env.c 2007-04-08 20:49:09.000000000 +0200 -+++ gdb-6.6/gdb/mi/mi-cmd-env.c 2007-04-08 20:55:11.000000000 +0200 -@@ -80,7 +80,8 @@ mi_cmd_env_pwd (char *command, char **ar - - /* Otherwise the mi level is 2 or higher. */ - -- getcwd (gdb_dirbuf, sizeof (gdb_dirbuf)); -+ /* Unused result. */ -+ 1 && getcwd (gdb_dirbuf, sizeof (gdb_dirbuf)); - ui_out_field_string (uiout, "cwd", gdb_dirbuf); - - return MI_CMD_DONE; -diff -u -rup gdb-6.6-orig/gdb/top.c gdb-6.6/gdb/top.c ---- gdb-6.6-orig/gdb/top.c 2007-04-08 20:49:10.000000000 +0200 -+++ gdb-6.6/gdb/top.c 2007-04-08 20:55:46.000000000 +0200 -@@ -1643,7 +1643,8 @@ gdb_init (char *argv0) +Index: gdb-6.7/gdb/top.c +=================================================================== +--- gdb-6.7.orig/gdb/top.c 2007-10-14 23:38:27.000000000 +0200 ++++ gdb-6.7/gdb/top.c 2007-10-14 23:42:39.000000000 +0200 +@@ -1636,7 +1636,8 @@ gdb_init (char *argv0) /* Run the init function of each source file */ @@ -636,10 +328,11 @@ diff -u -rup gdb-6.6-orig/gdb/top.c gdb-6.6/gdb/top.c current_directory = gdb_dirbuf; #ifdef __MSDOS__ -diff -u -rup gdb-6.6-orig/gdb/ui-file.c gdb-6.6/gdb/ui-file.c ---- gdb-6.6-orig/gdb/ui-file.c 2005-12-17 23:34:03.000000000 +0100 -+++ gdb-6.6/gdb/ui-file.c 2007-04-08 20:56:21.000000000 +0200 -@@ -482,7 +482,8 @@ stdio_file_write (struct ui_file *file, +Index: gdb-6.7/gdb/ui-file.c +=================================================================== +--- gdb-6.7.orig/gdb/ui-file.c 2007-08-23 20:08:46.000000000 +0200 ++++ gdb-6.7/gdb/ui-file.c 2007-10-14 23:42:39.000000000 +0200 +@@ -480,7 +480,8 @@ stdio_file_write (struct ui_file *file, if (stdio->magic != &stdio_file_magic) internal_error (__FILE__, __LINE__, _("stdio_file_write: bad magic number")); @@ -649,10 +342,11 @@ diff -u -rup gdb-6.6-orig/gdb/ui-file.c gdb-6.6/gdb/ui-file.c } static void -diff -u -rup gdb-6.6-orig/gdb/utils.c gdb-6.6/gdb/utils.c ---- gdb-6.6-orig/gdb/utils.c 2007-04-08 20:49:09.000000000 +0200 -+++ gdb-6.6/gdb/utils.c 2007-04-08 20:56:01.000000000 +0200 -@@ -718,7 +718,8 @@ internal_vproblem (struct internal_probl +Index: gdb-6.7/gdb/utils.c +=================================================================== +--- gdb-6.7.orig/gdb/utils.c 2007-08-23 20:08:46.000000000 +0200 ++++ gdb-6.7/gdb/utils.c 2007-10-14 23:42:39.000000000 +0200 +@@ -716,7 +716,8 @@ internal_vproblem (struct internal_probl abort (); /* NOTE: GDB has only three calls to abort(). */ default: dejavu = 3; @@ -662,9 +356,11 @@ diff -u -rup gdb-6.6-orig/gdb/utils.c gdb-6.6/gdb/utils.c exit (1); } } ---- ./gdb/gdbserver/gdbreplay.c 29 Mar 2007 01:06:47 -0000 1.14 -+++ ./gdb/gdbserver/gdbreplay.c 8 Aug 2007 20:32:12 -0000 -@@ -358,7 +358,12 @@ expect (FILE *fp) +Index: gdb-6.7/gdb/gdbserver/gdbreplay.c +=================================================================== +--- gdb-6.7.orig/gdb/gdbserver/gdbreplay.c 2007-08-23 20:08:48.000000000 +0200 ++++ gdb-6.7/gdb/gdbserver/gdbreplay.c 2007-10-14 23:42:39.000000000 +0200 +@@ -356,7 +356,12 @@ expect (FILE *fp) { break; } @@ -678,7 +374,7 @@ diff -u -rup gdb-6.6-orig/gdb/utils.c gdb-6.6/gdb/utils.c } while (fromlog == fromgdb); if (fromlog != EOL) -@@ -385,7 +390,11 @@ play (FILE *fp) +@@ -383,7 +388,11 @@ play (FILE *fp) while ((fromlog = logchar (fp)) != EOL) { ch = fromlog; diff --git a/gdb-6.5-bz109921-DW_AT_decl_file-fix.patch b/gdb-6.5-bz109921-DW_AT_decl_file-fix.patch deleted file mode 100644 index 39a89a4..0000000 --- a/gdb-6.5-bz109921-DW_AT_decl_file-fix.patch +++ /dev/null @@ -1,351 +0,0 @@ -https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 - - -2007-01-09 Jan Kratochvil - - * buildsym.c (start_subfile_index): Renamed `start_subfile' now - supporting the FILE_INDEX parameter. - (start_subfile): Backward compatible stub for `start_subfile_index'. - (end_symtab): Resolve new SYMBOL.FILE.SYMTAB from SYMBOL.FILE.INDEX. - Substitute possibly missing DIRNAME from the CU's main file DIRNAME. - Clear `subfiles' variable as its data have been deallocated. - * buildsym.h (struct subfile): New field `file_index'. - (start_subfile_index): New prototype. - * dwarf2read.c (add_file_name): Ensure subfile has been founded. - (dwarf_decode_lines): Specify the new FILE_INDEX parameter. - (dwarf2_start_subfile): New FILE_INDEX parameter. - (new_symbol): Extract `DW_AT_decl_file' DWARF 2 information entry. - * symtab.c (lookup_symbol): Override by the new SYMBOL.FILE.SYMTAB. - (search_symbols): Likewise. - * symtab.h (struct symbol): New fields FILE.INDEX and FILE.SYMTAB. - (SYMBOL_FILE_INDEX, SYMBOL_FILE_SYMTAB): New macros. - - -Index: gdb-6.6/gdb/buildsym.c -=================================================================== ---- gdb-6.6.orig/gdb/buildsym.c 2006-08-25 18:32:32.000000000 +0200 -+++ gdb-6.6/gdb/buildsym.c 2007-01-20 13:59:48.000000000 +0100 -@@ -540,7 +540,7 @@ make_blockvector (struct objfile *objfil - the directory in which it resides (or NULL if not known). */ - - void --start_subfile (char *name, char *dirname) -+start_subfile_index (char *name, char *dirname, unsigned file_index) - { - struct subfile *subfile; - -@@ -552,6 +552,17 @@ start_subfile (char *name, char *dirname - if (FILENAME_CMP (subfile->name, name) == 0) - { - current_subfile = subfile; -+ -+ if (subfile->file_index != 0 && file_index != 0 -+ && subfile->file_index != file_index) -+ complaint (&symfile_complaints, _("Filenames indexing conflict: " -+ "name \"%s\" dir \"%s\" index %u vs. " -+ "name \"%s\" dir \"%s\" index %u"), -+ subfile->name, subfile->dirname, subfile->file_index, -+ name, dirname, file_index); -+ if (subfile->file_index == 0) -+ subfile->file_index = file_index; -+ - return; - } - } -@@ -567,6 +578,7 @@ start_subfile (char *name, char *dirname - current_subfile = subfile; - - /* Save its name and compilation directory name */ -+ subfile->file_index = file_index; - subfile->name = (name == NULL) ? NULL : savestring (name, strlen (name)); - subfile->dirname = - (dirname == NULL) ? NULL : savestring (dirname, strlen (dirname)); -@@ -622,6 +634,13 @@ start_subfile (char *name, char *dirname - } - } - -+/* Backward compatibility. */ -+void -+start_subfile (char *name, char *dirname) -+{ -+ start_subfile_index (name, dirname, 0); -+} -+ - /* For stabs readers, the first N_SO symbol is assumed to be the - source file name, and the subfile struct is initialized using that - assumption. If another N_SO symbol is later seen, immediately -@@ -821,9 +840,12 @@ end_symtab (CORE_ADDR end_addr, struct o - { - struct symtab *symtab = NULL; - struct blockvector *blockvector; -- struct subfile *subfile; -+ struct subfile *subfile, *subfile_main; - struct context_stack *cstk; - struct subfile *nextsub; -+ int subfiles_count; -+ struct symtab **file_index_to_symtab; -+ size_t file_index_to_symtab_size; - - /* Finish the lexical context of the last function in the file; pop - the context stack. */ -@@ -921,6 +943,18 @@ end_symtab (CORE_ADDR end_addr, struct o - #endif - PROCESS_LINENUMBER_HOOK (); /* Needed for xcoff. */ - -+ /* Get the last subfile s SUBFILE_MAIN which is the main file of CU. -+ Count SUBFILES_COUNT. -+ Start with 1 as we do not iterate past the last item. */ -+ subfiles_count = 1; -+ for (subfile_main = subfiles; subfile_main && subfile_main->next; -+ subfile_main = subfile_main->next) -+ subfiles_count++; -+ -+ file_index_to_symtab_size = sizeof (*file_index_to_symtab) * subfiles_count; -+ file_index_to_symtab = xmalloc (file_index_to_symtab_size); -+ memset ((char *) file_index_to_symtab, 0, file_index_to_symtab_size); -+ - /* Now create the symtab objects proper, one for each subfile. */ - /* (The main file is the last one on the chain.) */ - -@@ -981,6 +1015,16 @@ end_symtab (CORE_ADDR end_addr, struct o - strlen (subfile->dirname) + 1); - strcpy (symtab->dirname, subfile->dirname); - } -+ /* Non-primary subfiles may miss COMP_DIR resulting in NULL -+ DIRNAME and so default it from the CU file - SUBFILE_MAIN. */ -+ else if (subfile_main->dirname) -+ { -+ /* Reallocate the dirname on the symbol obstack */ -+ symtab->dirname = (char *) -+ obstack_alloc (&objfile->objfile_obstack, -+ strlen (subfile_main->dirname) + 1); -+ strcpy (symtab->dirname, subfile_main->dirname); -+ } - else - { - symtab->dirname = NULL; -@@ -1009,6 +1053,13 @@ end_symtab (CORE_ADDR end_addr, struct o - but the main file. */ - - symtab->primary = 0; -+ -+ /* It may be zero for files unlisted in File Table. */ -+ if (subfile->file_index) -+ { -+ gdb_assert (subfile->file_index <= subfiles_count); -+ file_index_to_symtab[subfile->file_index - 1] = symtab; -+ } - } - if (subfile->name != NULL) - { -@@ -1037,9 +1088,40 @@ end_symtab (CORE_ADDR end_addr, struct o - symtab->primary = 1; - } - -+ /* Resolve `struct symbol.file.index' into `struct symbol.file.symtab'. */ -+ if (blockvector) -+ { -+ int block_i; -+ -+ for (block_i = 0; block_i < BLOCKVECTOR_NBLOCKS (blockvector); block_i++) -+ { -+ struct symbol *sym; -+ struct dict_iterator iter; -+ -+ for (sym = dict_iterator_first (BLOCK_DICT -+ (BLOCKVECTOR_BLOCK (blockvector, block_i)), &iter); -+ sym != NULL; -+ sym = dict_iterator_next (&iter)) -+ { -+ /* Beware the ordering as `sym->file' is a union. */ -+ if (SYMBOL_FILE_INDEX (sym) -+ && file_index_to_symtab[SYMBOL_FILE_INDEX (sym) - 1]) -+ SYMBOL_FILE_SYMTAB (sym) = file_index_to_symtab -+ [SYMBOL_FILE_INDEX (sym) - 1]; -+ else -+ { -+ /* Default to the primary symbol table, never use NULL. */ -+ SYMBOL_FILE_SYMTAB (sym) = symtab; -+ } -+ } -+ } -+ } -+ -+ xfree (file_index_to_symtab); - last_source_file = NULL; - current_subfile = NULL; - pending_macros = NULL; -+ subfiles = NULL; - - return symtab; - } -Index: gdb-6.6/gdb/buildsym.h -=================================================================== ---- gdb-6.6.orig/gdb/buildsym.h 2005-12-17 23:33:59.000000000 +0100 -+++ gdb-6.6/gdb/buildsym.h 2007-01-20 13:59:48.000000000 +0100 -@@ -63,6 +63,7 @@ EXTERN CORE_ADDR last_source_start_addr; - struct subfile - { - struct subfile *next; -+ unsigned file_index; - char *name; - char *dirname; - struct linetable *line_vector; -@@ -240,6 +241,9 @@ extern void finish_block (struct symbol - - extern void really_free_pendings (void *dummy); - -+extern void start_subfile_index (char *name, char *dirname, -+ unsigned file_index); -+ - extern void start_subfile (char *name, char *dirname); - - extern void patch_subfile_names (struct subfile *subfile, char *name); -Index: gdb-6.6/gdb/dwarf2read.c -=================================================================== ---- gdb-6.6.orig/gdb/dwarf2read.c 2007-01-20 06:43:04.000000000 +0100 -+++ gdb-6.6/gdb/dwarf2read.c 2007-01-20 14:00:12.000000000 +0100 -@@ -853,7 +853,7 @@ static struct line_header *(dwarf_decode - static void dwarf_decode_lines (struct line_header *, char *, bfd *, - struct dwarf2_cu *, struct partial_symtab *); - --static void dwarf2_start_subfile (char *, char *, char *); -+static void dwarf2_start_subfile (char *, char *, char *, unsigned); - - static struct symbol *new_symbol (struct die_info *, struct type *, - struct dwarf2_cu *); -@@ -6428,6 +6428,7 @@ add_file_name (struct line_header *lh, - unsigned int length) - { - struct file_entry *fe; -+ char *dir = NULL; - - /* Grow the array if necessary. */ - if (lh->file_names_size == 0) -@@ -6450,6 +6451,10 @@ add_file_name (struct line_header *lh, - fe->mod_time = mod_time; - fe->length = length; - fe->included_p = 0; -+ -+ if (dir_index) -+ dir = lh->include_dirs[dir_index - 1]; -+ dwarf2_start_subfile (name, dir, NULL, lh->num_file_names); - } - - -@@ -6668,7 +6673,7 @@ dwarf_decode_lines (struct line_header * - if (fe->dir_index) - dir = lh->include_dirs[fe->dir_index - 1]; - -- dwarf2_start_subfile (fe->name, dir, comp_dir); -+ dwarf2_start_subfile (fe->name, dir, comp_dir, file); - } - - /* Decode the table. */ -@@ -6785,7 +6790,7 @@ dwarf_decode_lines (struct line_header * - if (!decode_for_pst_p) - { - last_subfile = current_subfile; -- dwarf2_start_subfile (fe->name, dir, comp_dir); -+ dwarf2_start_subfile (fe->name, dir, comp_dir, file); - } - } - break; -@@ -6889,7 +6894,8 @@ dwarf_decode_lines (struct line_header * - subfile's name. */ - - static void --dwarf2_start_subfile (char *filename, char *dirname, char *comp_dir) -+dwarf2_start_subfile (char *filename, char *dirname, char *comp_dir, -+ unsigned file_index) - { - char *fullname; - -@@ -6908,7 +6914,7 @@ dwarf2_start_subfile (char *filename, ch - else - fullname = filename; - -- start_subfile (fullname, comp_dir); -+ start_subfile_index (fullname, comp_dir, file_index); - - if (fullname != filename) - xfree (fullname); -@@ -7017,6 +7023,13 @@ new_symbol (struct die_info *die, struct - { - SYMBOL_LINE (sym) = DW_UNSND (attr); - } -+ attr = dwarf2_attr (die, DW_AT_decl_file, cu); -+ if (attr) -+ { -+ /* Do not yet search `objfile->symtabs' here as they still do not -+ have filled in their FILE.INDEX fields. */ -+ SYMBOL_FILE_INDEX (sym) = DW_UNSND (attr); -+ } - switch (die->tag) - { - case DW_TAG_label: -Index: gdb-6.6/gdb/symtab.c -=================================================================== ---- gdb-6.6.orig/gdb/symtab.c 2007-01-20 13:59:25.000000000 +0100 -+++ gdb-6.6/gdb/symtab.c 2007-01-20 13:59:48.000000000 +0100 -@@ -1129,6 +1129,10 @@ lookup_symbol (const char *name, const s - if (needtofreename) - xfree (demangled_name); - -+ /* Override the returned symtab with optional symbol's specific one. */ -+ if (returnval != NULL && symtab != NULL) -+ *symtab = SYMBOL_FILE_SYMTAB (returnval); -+ - return returnval; - } - -@@ -3235,7 +3239,7 @@ search_symbols (char *regexp, domain_enu - ALL_BLOCK_SYMBOLS (b, iter, sym) - { - QUIT; -- if (file_matches (s->filename, files, nfiles) -+ if (file_matches (SYMBOL_FILE_SYMTAB (sym)->filename, files, nfiles) - && ((regexp == NULL - || re_exec (SYMBOL_NATURAL_NAME (sym)) != 0) - && ((kind == VARIABLES_DOMAIN && SYMBOL_CLASS (sym) != LOC_TYPEDEF -@@ -3248,7 +3252,7 @@ search_symbols (char *regexp, domain_enu - /* match */ - psr = (struct symbol_search *) xmalloc (sizeof (struct symbol_search)); - psr->block = i; -- psr->symtab = s; -+ psr->symtab = SYMBOL_FILE_SYMTAB (sym); - psr->symbol = sym; - psr->msymbol = NULL; - psr->next = NULL; -Index: gdb-6.6/gdb/symtab.h -=================================================================== ---- gdb-6.6.orig/gdb/symtab.h 2007-01-20 06:43:00.000000000 +0100 -+++ gdb-6.6/gdb/symtab.h 2007-01-20 13:59:48.000000000 +0100 -@@ -623,6 +623,18 @@ struct symbol - - ENUM_BITFIELD(address_class) aclass : 6; - -+ /* File name it comes from. Use with `line' below. -+ FILE.INDEX is zero if the symbol's specific file is not known and in such -+ case we later default to the main file of the compilation unit. -+ FILE.SYMTAB gets resolved during end_symtab() and it is never NULL. */ -+ -+ union -+ { -+ unsigned index; -+ struct symtab *symtab; -+ } -+ file; -+ - /* Line number of definition. FIXME: Should we really make the assumption - that nobody will try to debug files longer than 64K lines? What about - machine generated programs? */ -@@ -663,6 +675,8 @@ struct symbol - #define SYMBOL_DOMAIN(symbol) (symbol)->domain - #define SYMBOL_CLASS(symbol) (symbol)->aclass - #define SYMBOL_TYPE(symbol) (symbol)->type -+#define SYMBOL_FILE_INDEX(symbol) (symbol)->file.index -+#define SYMBOL_FILE_SYMTAB(symbol) (symbol)->file.symtab - #define SYMBOL_LINE(symbol) (symbol)->line - #define SYMBOL_BASEREG(symbol) (symbol)->aux_value.basereg - #define SYMBOL_OBJFILE(symbol) (symbol)->aux_value.objfile diff --git a/gdb-6.5-bz165025-DW_CFA_GNU_negative_offset_extended-fix.patch b/gdb-6.5-bz165025-DW_CFA_GNU_negative_offset_extended-fix.patch deleted file mode 100644 index 3425c1f..0000000 --- a/gdb-6.5-bz165025-DW_CFA_GNU_negative_offset_extended-fix.patch +++ /dev/null @@ -1,30 +0,0 @@ -2006-12-30 Andrew Cagney - Jan Kratochvil - - * dwarf2-frame.c (execute_cfa_program): New support of - `DW_CFA_GNU_negative_offset_extended'. - - -Index: ./gdb/dwarf2-frame.c -=================================================================== -RCS file: /cvs/src/src/gdb/dwarf2-frame.c,v -retrieving revision 1.64 -diff -u -p -r1.64 dwarf2-frame.c ---- ./gdb/dwarf2-frame.c 28 Nov 2006 17:28:29 -0000 1.64 -+++ ./gdb/dwarf2-frame.c 30 Dec 2006 18:24:58 -0000 -@@ -555,6 +555,15 @@ bad CFI data; mismatched DW_CFA_restore_ - insn_ptr = read_uleb128 (insn_ptr, insn_end, &utmp); - break; - -+ case DW_CFA_GNU_negative_offset_extended: -+ insn_ptr = read_uleb128 (insn_ptr, insn_end, ®); -+ insn_ptr = read_uleb128 (insn_ptr, insn_end, &offset); -+ offset *= fs->data_align; -+ dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1); -+ fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_OFFSET; -+ fs->regs.reg[reg].loc.offset = -offset; -+ break; -+ - default: - internal_error (__FILE__, __LINE__, _("Unknown CFI encountered.")); - } diff --git a/gdb-6.5-bz165025-DW_CFA_GNU_negative_offset_extended-test.patch b/gdb-6.5-bz165025-DW_CFA_GNU_negative_offset_extended-test.patch deleted file mode 100644 index 03a3656..0000000 --- a/gdb-6.5-bz165025-DW_CFA_GNU_negative_offset_extended-test.patch +++ /dev/null @@ -1,509 +0,0 @@ -2006-12-30 Jan Kratochvil - - * gdb.arch/i386-gnu-cfi.exp, gdb.arch/i386-gnu-cfi.c, - gdb.arch/i386-gnu-cfi-asm.S: New files. - - -Index: ./gdb/testsuite/gdb.arch/i386-gnu-cfi-asm.S -=================================================================== -RCS file: ./gdb/testsuite/gdb.arch/i386-gnu-cfi-asm.S -diff -N ./gdb/testsuite/gdb.arch/i386-gnu-cfi-asm.S ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.arch/i386-gnu-cfi-asm.S 30 Dec 2006 18:25:02 -0000 -@@ -0,0 +1,357 @@ -+/* Copyright 2006 Free Software Foundation, Inc. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ * -+ * Please email any bugs, comments, and/or additions to this file to: -+ * bug-gdb@gnu.org -+ * -+ * This file is part of the gdb testsuite. -+ * -+ * It was generated using -+ * "gcc -g -O9 -S -o gate.s gate.c -fasynchronous-unwind-tables", -+ * using the following source file: -+ * -+ * -+ * void *gate (void *(*gate) (void *data), void *data) -+ * { -+ * return 1 + (*gate) (data); -+ * } -+ * -+ * Changes are marked as `CHANGE' below. -+ */ -+ -+ .file "gate.c" -+ .section .debug_abbrev,"",@progbits -+.Ldebug_abbrev0: -+ .section .debug_info,"",@progbits -+.Ldebug_info0: -+ .section .debug_line,"",@progbits -+.Ldebug_line0: -+ .text -+.Ltext0: -+ .p2align 4,,15 -+.globl gate -+ .type gate, @function -+gate: -+.LFB2: -+ .file 1 "gate.c" -+ .loc 1 2 0 -+.LVL0: -+ pushl %ebp -+.LCFI0: -+ movl %esp, %ebp -+.LCFI1: -+ subl $8, %esp -+.LCFI2: -+ .loc 1 3 0 -+ movl 12(%ebp), %eax -+ movl %eax, (%esp) -+ call *8(%ebp) -+ .loc 1 4 0 -+ leave -+ .loc 1 3 0 -+ addl $1, %eax -+ .loc 1 4 0 -+ ret -+.LFE2: -+ .size gate, .-gate -+ .section .debug_frame,"",@progbits -+.Lframe0: -+ .long .LECIE0-.LSCIE0 -+.LSCIE0: -+ .long 0xffffffff -+ .byte 0x1 -+ .string "" -+ .uleb128 0x1 -+ .sleb128 -4 -+ .byte 0x8 -+ .byte 0xc -+ .uleb128 0x4 -+ .uleb128 0x4 -+ .byte 0x88 -+ .uleb128 0x1 -+ .align 4 -+.LECIE0: -+.LSFDE0: -+ .long .LEFDE0-.LASFDE0 -+.LASFDE0: -+ .long .Lframe0 -+ .long .LFB2 -+ .long .LFE2-.LFB2 -+ .byte 0x4 -+ .long .LCFI0-.LFB2 -+ .byte 0xe -+ .uleb128 0x8 -+ .byte 0x85 -+ .uleb128 0x2 -+ -+ /* CHANGE */ -+ .byte 0x2f -+ .uleb128 0x1 -+ .uleb128 0x0 -+ /* CHANGE */ -+ -+ .byte 0x4 -+ .long .LCFI1-.LCFI0 -+ .byte 0xd -+ .uleb128 0x5 -+ .align 4 -+.LEFDE0: -+ .section .eh_frame,"a",@progbits -+.Lframe1: -+ .long .LECIE1-.LSCIE1 -+.LSCIE1: -+ .long 0x0 -+ .byte 0x1 -+ .string "" -+ .uleb128 0x1 -+ .sleb128 -4 -+ .byte 0x8 -+ .byte 0xc -+ .uleb128 0x4 -+ .uleb128 0x4 -+ .byte 0x88 -+ .uleb128 0x1 -+ .align 4 -+.LECIE1: -+.LSFDE1: -+ .long .LEFDE1-.LASFDE1 -+.LASFDE1: -+ .long .LASFDE1-.Lframe1 -+ .long .LFB2 -+ .long .LFE2-.LFB2 -+ .byte 0x4 -+ .long .LCFI0-.LFB2 -+ .byte 0xe -+ .uleb128 0x8 -+ .byte 0x85 -+ .uleb128 0x2 -+ -+ /* CHANGE */ -+ .byte 0x2f -+ .uleb128 0x1 -+ .uleb128 0x0 -+ /* CHANGE */ -+ -+ .byte 0x4 -+ .long .LCFI1-.LCFI0 -+ .byte 0xd -+ .uleb128 0x5 -+ .align 4 -+.LEFDE1: -+ .text -+.Letext0: -+ .section .debug_loc,"",@progbits -+.Ldebug_loc0: -+.LLST0: -+ .long .LFB2-.Ltext0 -+ .long .LCFI0-.Ltext0 -+ .value 0x2 -+ .byte 0x74 -+ .sleb128 4 -+ .long .LCFI0-.Ltext0 -+ .long .LCFI1-.Ltext0 -+ .value 0x2 -+ .byte 0x74 -+ .sleb128 8 -+ .long .LCFI1-.Ltext0 -+ .long .LFE2-.Ltext0 -+ .value 0x2 -+ .byte 0x75 -+ .sleb128 8 -+ .long 0x0 -+ .long 0x0 -+ .section .debug_info -+ .long 0x74 -+ .value 0x2 -+ .long .Ldebug_abbrev0 -+ .byte 0x4 -+ .uleb128 0x1 -+ .long .Ldebug_line0 -+ .long .Letext0 -+ .long .Ltext0 -+ .long .LASF2 -+ .byte 0x1 -+ .long .LASF3 -+ .long .LASF4 -+ .uleb128 0x2 -+ .long 0x5f -+ .byte 0x1 -+ .long .LASF0 -+ .byte 0x1 -+ .byte 0x2 -+ .byte 0x1 -+ .long 0x5f -+ .long .LFB2 -+ .long .LFE2 -+ .long .LLST0 -+ .uleb128 0x3 -+ .long .LASF0 -+ .byte 0x1 -+ .byte 0x1 -+ .long 0x71 -+ .byte 0x2 -+ .byte 0x91 -+ .sleb128 0 -+ .uleb128 0x3 -+ .long .LASF1 -+ .byte 0x1 -+ .byte 0x1 -+ .long 0x5f -+ .byte 0x2 -+ .byte 0x91 -+ .sleb128 4 -+ .byte 0x0 -+ .uleb128 0x4 -+ .byte 0x4 -+ .uleb128 0x5 -+ .long 0x71 -+ .byte 0x1 -+ .long 0x5f -+ .uleb128 0x6 -+ .long 0x5f -+ .byte 0x0 -+ .uleb128 0x7 -+ .byte 0x4 -+ .long 0x61 -+ .byte 0x0 -+ .section .debug_abbrev -+ .uleb128 0x1 -+ .uleb128 0x11 -+ .byte 0x1 -+ .uleb128 0x10 -+ .uleb128 0x6 -+ .uleb128 0x12 -+ .uleb128 0x1 -+ .uleb128 0x11 -+ .uleb128 0x1 -+ .uleb128 0x25 -+ .uleb128 0xe -+ .uleb128 0x13 -+ .uleb128 0xb -+ .uleb128 0x3 -+ .uleb128 0xe -+ .uleb128 0x1b -+ .uleb128 0xe -+ .byte 0x0 -+ .byte 0x0 -+ .uleb128 0x2 -+ .uleb128 0x2e -+ .byte 0x1 -+ .uleb128 0x1 -+ .uleb128 0x13 -+ .uleb128 0x3f -+ .uleb128 0xc -+ .uleb128 0x3 -+ .uleb128 0xe -+ .uleb128 0x3a -+ .uleb128 0xb -+ .uleb128 0x3b -+ .uleb128 0xb -+ .uleb128 0x27 -+ .uleb128 0xc -+ .uleb128 0x49 -+ .uleb128 0x13 -+ .uleb128 0x11 -+ .uleb128 0x1 -+ .uleb128 0x12 -+ .uleb128 0x1 -+ .uleb128 0x40 -+ .uleb128 0x6 -+ .byte 0x0 -+ .byte 0x0 -+ .uleb128 0x3 -+ .uleb128 0x5 -+ .byte 0x0 -+ .uleb128 0x3 -+ .uleb128 0xe -+ .uleb128 0x3a -+ .uleb128 0xb -+ .uleb128 0x3b -+ .uleb128 0xb -+ .uleb128 0x49 -+ .uleb128 0x13 -+ .uleb128 0x2 -+ .uleb128 0xa -+ .byte 0x0 -+ .byte 0x0 -+ .uleb128 0x4 -+ .uleb128 0xf -+ .byte 0x0 -+ .uleb128 0xb -+ .uleb128 0xb -+ .byte 0x0 -+ .byte 0x0 -+ .uleb128 0x5 -+ .uleb128 0x15 -+ .byte 0x1 -+ .uleb128 0x1 -+ .uleb128 0x13 -+ .uleb128 0x27 -+ .uleb128 0xc -+ .uleb128 0x49 -+ .uleb128 0x13 -+ .byte 0x0 -+ .byte 0x0 -+ .uleb128 0x6 -+ .uleb128 0x5 -+ .byte 0x0 -+ .uleb128 0x49 -+ .uleb128 0x13 -+ .byte 0x0 -+ .byte 0x0 -+ .uleb128 0x7 -+ .uleb128 0xf -+ .byte 0x0 -+ .uleb128 0xb -+ .uleb128 0xb -+ .uleb128 0x49 -+ .uleb128 0x13 -+ .byte 0x0 -+ .byte 0x0 -+ .byte 0x0 -+ .section .debug_pubnames,"",@progbits -+ .long 0x17 -+ .value 0x2 -+ .long .Ldebug_info0 -+ .long 0x78 -+ .long 0x25 -+ .string "gate" -+ .long 0x0 -+ .section .debug_aranges,"",@progbits -+ .long 0x1c -+ .value 0x2 -+ .long .Ldebug_info0 -+ .byte 0x4 -+ .byte 0x0 -+ .value 0x0 -+ .value 0x0 -+ .long .Ltext0 -+ .long .Letext0-.Ltext0 -+ .long 0x0 -+ .long 0x0 -+ .section .debug_str,"MS",@progbits,1 -+.LASF1: -+ .string "data" -+.LASF0: -+ .string "gate" -+.LASF3: -+ .string "gate.c" -+.LASF4: -+ .string "/home/jkratoch/redhat/bz165025" -+.LASF2: -+ .string "GNU C 4.1.1 20061213 (Red Hat 4.1.1-46)" -+ .ident "GCC: (GNU) 4.1.1 20061213 (Red Hat 4.1.1-46)" -+ .section .note.GNU-stack,"",@progbits -Index: ./gdb/testsuite/gdb.arch/i386-gnu-cfi.c -=================================================================== -RCS file: ./gdb/testsuite/gdb.arch/i386-gnu-cfi.c -diff -N ./gdb/testsuite/gdb.arch/i386-gnu-cfi.c ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.arch/i386-gnu-cfi.c 30 Dec 2006 18:25:02 -0000 -@@ -0,0 +1,31 @@ -+/* Unwinding of DW_CFA_GNU_negative_offset_extended test program. -+ -+ Copyright 2006, Free Software Foundation, Inc. -+ -+ This file is part of GDB. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. */ -+ -+#include -+ -+/* i386-gnu-cfi-asm.S: */ -+extern void *gate (void *(*gate) (void *data), void *data); -+ -+int main (void) -+{ -+ gate ((void *(*) (void *data)) abort, NULL); -+ return 0; -+} -Index: ./gdb/testsuite/gdb.arch/i386-gnu-cfi.exp -=================================================================== -RCS file: ./gdb/testsuite/gdb.arch/i386-gnu-cfi.exp -diff -N ./gdb/testsuite/gdb.arch/i386-gnu-cfi.exp ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.arch/i386-gnu-cfi.exp 30 Dec 2006 18:25:02 -0000 -@@ -0,0 +1,94 @@ -+# Copyright 2006 Free Software Foundation, Inc. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, write to the Free Software -+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+# Please email any bugs, comments, and/or additions to this file to: -+# bug-gdb@gnu.org -+ -+# This file is part of the gdb testsuite. -+ -+# Unwinding of DW_CFA_GNU_negative_offset_extended test program. -+ -+if $tracelevel { -+ strace $tracelevel -+} -+ -+# Test i386 unwinder. -+ -+set prms_id 0 -+set bug_id 0 -+ -+if ![istarget "i?86-*-*"] then { -+ verbose "Skipping i386 unwinder tests." -+ return -+} -+ -+set testfile "i386-gnu-cfi" -+set srcfilec ${testfile}.c -+set srcfileasm ${testfile}-asm.S -+set binfile ${objdir}/${subdir}/${testfile} -+ -+# some targets have leading underscores on assembly symbols. -+# TODO: detect this automatically -+set additional_flags "" -+if [istarget "i?86-*-cygwin*"] then { -+ set additional_flags "additional_flags=-DSYMBOL_PREFIX=\"_\"" -+} -+ -+if { [gdb_compile "${srcdir}/${subdir}/${srcfilec} ${srcdir}/${subdir}/${srcfileasm}" "${binfile}" executable [list debug $additional_flags]] != "" } { -+ untested i386-gnu-cfi.exp -+ return -1 -+} -+ -+# Get things started. -+ -+gdb_exit -+gdb_start -+gdb_reinitialize_dir $srcdir/$subdir -+gdb_load ${binfile} -+ -+# We should stop in abort(3). -+ -+gdb_test "run" \ -+ "Program received signal SIGABRT,.*" \ -+ "run" -+ -+# Backtrace would crash before. -+ -+gdb_test "bt" \ -+ "main \\(\\) at .*${testfile}.c.*" \ -+ "backtrace" -+ -+# Check we see the inserted `DW_CFA_GNU_negative_offset_extended' CFI. -+# We see there the original CFI-stored filename `gate.c'. -+ -+gdb_test "up 3" \ -+ "gate \\(\[^()\]*\\) at .*gate.c.*" \ -+ "shift up to the modified frame" -+ -+send_gdb "info frame\n"; -+gdb_expect { -+ -re "Stack level 3, frame at (0x\[0-9a-f\]+):.*Saved registers:.* ecx at (0x\[0-9a-f\]+),.*" { -+ pass "Value of the CFI inserted register" -+ if { [string compare $expect_out(1,string) $expect_out(2,string)] } then { -+ fail "Value of the CFI inserted register" -+ } else { -+ pass "Value of the CFI inserted register" -+ } -+ } -+ default { -+ fail "Existence of the CFI inserted register" -+ } -+} diff --git a/gdb-6.5-bz181390-memory-address-width.patch b/gdb-6.5-bz181390-memory-address-width.patch index b955af0..5446728 100644 --- a/gdb-6.5-bz181390-memory-address-width.patch +++ b/gdb-6.5-bz181390-memory-address-width.patch @@ -64,7 +64,7 @@ diff -u -p -r1.36 value.c { /* Assume a CORE_ADDR can fit in a LONGEST (for now). Not sure whether we want this to be true eventually. */ -@@ -1054,6 +1053,33 @@ value_as_address (struct value *val) +@@ -1054,6 +1053,34 @@ value_as_address (struct value *val) return unpack_long (value_type (val), value_contents (val)); #endif } @@ -76,6 +76,7 @@ diff -u -p -r1.36 value.c +value_as_address (struct value *val) +{ + CORE_ADDR addr; ++ int addr_bit; + + addr = value_as_address_core (val); + @@ -88,7 +89,7 @@ diff -u -p -r1.36 value.c + either zero or sign extended. Should ADDRESS_TO_POINTER() or + some ADDRESS_TO_PRINTABLE() be used to do the conversion? */ + -+ int addr_bit = TARGET_ADDR_BIT; ++ addr_bit = gdbarch_addr_bit (current_gdbarch); + + if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT)) + addr &= ((CORE_ADDR) 1 << addr_bit) - 1; diff --git a/gdb-6.5-bz205551-printf-p.patch b/gdb-6.5-bz205551-printf-p.patch deleted file mode 100644 index 971da6a..0000000 --- a/gdb-6.5-bz205551-printf-p.patch +++ /dev/null @@ -1,54 +0,0 @@ -https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=205551 - - -2006-09-10 Jan Kratochvil - - * printcmd.c (printf_command): Handle forgotten "%p". - -2006-09-10 Jan Kratochvil - - * gdb.base/display.exp: New test of `printf' "%p" formatting. - - -diff -u -r sources-clean/gdb/printcmd.c sources-custom/gdb/printcmd.c ---- sources-clean/gdb/printcmd.c 2006-07-29 20:29:26.000000000 +0200 -+++ sources-custom/gdb/printcmd.c 2006-09-12 16:18:55.000000000 +0200 -@@ -43,6 +43,9 @@ - #include "gdb_assert.h" - #include "block.h" - #include "disasm.h" -+#ifdef HAVE_STDINT_H -+#include -+#endif - - #ifdef TUI - #include "tui/tui.h" /* For tui_active et.al. */ -@@ -2065,6 +2068,16 @@ - #else - error (_("long long not supported in printf")); - #endif -+ case ptr_arg: -+#ifdef HAVE_UINTPTR_T -+ { -+ void *val = (void *) (uintptr_t) value_as_address (val_args[i]); -+ printf_filtered (current_substring, val); -+ break; -+ } -+#else -+ error (_("pointer not supported in printf")); -+#endif - case int_arg: - { - int val = value_as_long (val_args[i]); -diff -u -r sources-clean/gdb/testsuite/gdb.base/display.exp sources-custom/gdb/testsuite/gdb.base/display.exp ---- sources-clean/gdb/testsuite/gdb.base/display.exp 2006-08-13 02:53:36.000000000 +0200 -+++ sources-custom/gdb/testsuite/gdb.base/display.exp 2006-09-12 16:17:24.000000000 +0200 -@@ -179,6 +179,8 @@ - gdb_test "printf \"\"" ".*" "re-set term" - gdb_test "printf \"\\w\"" ".*Unrecognized escape character.*" - gdb_test "printf \"%d\" j" ".*Invalid argument syntax.*" -+# 0 or hex vs. dec printing may be platform dependent: -+gdb_test "printf \"<%p>\\n\", (void *)7" ".*7>.*" - - # play with "print", too - # diff --git a/gdb-6.5-bz215816-readline-from-callback-test.patch b/gdb-6.5-bz215816-readline-from-callback-test.patch deleted file mode 100644 index 6b8304b..0000000 --- a/gdb-6.5-bz215816-readline-from-callback-test.patch +++ /dev/null @@ -1,52 +0,0 @@ -https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=215816 - - -2007-01-03 Jan Kratochvil - Daniel Jacobowitz - - * gdb.base/readline.exp: Set $TERM. Test arrow keys in - secondary prompts. - - ---- ./gdb/testsuite/gdb.base/readline.exp 8 Jun 2003 13:14:05 -0000 1.2 -+++ ./gdb/testsuite/gdb.base/readline.exp 3 Jan 2007 21:22:47 -0000 -@@ -1,4 +1,4 @@ --# Copyright 2002 Free Software Foundation, Inc. -+# Copyright 2002, 2003, 2007 Free Software Foundation, Inc. - - # This program is free software; you can redistribute it and/or modify - # it under the terms of the GNU General Public License as published by -@@ -159,6 +159,14 @@ if [info exists env(INPUTRC)] { - } - set env(INPUTRC) "/dev/null" - -+# The arrow key test relies on the standard VT100 bindings, so make -+# sure that an appropriate terminal is selected. The same bug -+# doesn't show up if we use ^P / ^N instead. -+if [info exists env(TERM)] { -+ set old_term $env(TERM) -+} -+set env(TERM) "vt100" -+ - gdb_start - gdb_reinitialize_dir $srcdir/$subdir - -@@ -178,6 +186,18 @@ operate_and_get_next "operate-and-get-ne - "p 5" "" \ - "end" ".* = 5" - -+# Verify that arrow keys work in secondary prompts. The control -+# sequence is a hard-coded VT100 up arrow. -+gdb_test "print 42" "\\\$\[0-9\]* = 42" -+set msg "arrow keys with secondary prompt" -+gdb_test_multiple "if 1 > 0\n\033\[A\033\[A\nend" $msg { -+ -re ".*\\\$\[0-9\]* = 42\r\n$gdb_prompt $" { -+ pass $msg -+ } -+ -re ".*Undefined command:.*$gdb_prompt $" { -+ fail $msg -+ } -+} - - # Now repeat the first test with a history file that fills the entire - # history list. diff --git a/gdb-6.5-bz215816-readline-from-callback.patch b/gdb-6.5-bz215816-readline-from-callback.patch deleted file mode 100644 index fc37ae5..0000000 --- a/gdb-6.5-bz215816-readline-from-callback.patch +++ /dev/null @@ -1,165 +0,0 @@ -https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=215816 - - -2007-01-03 Jan Kratochvil - Daniel Jacobowitz - - * Makefile.in (top.o): Update. - * top.c (gdb_readline_wrapper_done, gdb_readline_wrapper_result) - (saved_after_char_processing_hook, gdb_readline_wrapper_line) - (struct gdb_readline_wrapper_cleanup, gdb_readline_wrapper_cleanup): - New. - (gdb_readline_wrapper): Rewrite to use asynchronous readline. - - ---- ./gdb/Makefile.in 3 Jan 2007 18:05:43 -0000 1.864 -+++ ./gdb/Makefile.in 3 Jan 2007 21:22:46 -0000 -@@ -2782,7 +2782,7 @@ top.o: top.c $(defs_h) $(gdbcmd_h) $(cal - $(annotate_h) $(completer_h) $(top_h) $(version_h) $(serial_h) \ - $(doublest_h) $(gdb_assert_h) $(readline_h) $(readline_history_h) \ - $(event_top_h) $(gdb_string_h) $(gdb_stat_h) $(ui_out_h) \ -- $(cli_out_h) $(main_h) -+ $(cli_out_h) $(main_h) $(event_loop_h) - tracepoint.o: tracepoint.c $(defs_h) $(symtab_h) $(frame_h) $(gdbtypes_h) \ - $(expression_h) $(gdbcmd_h) $(value_h) $(target_h) $(language_h) \ - $(gdb_string_h) $(inferior_h) $(tracepoint_h) $(remote_h) \ ---- ./gdb/top.c 1 Jan 2007 05:57:49 -0000 1.116 -+++ ./gdb/top.c 3 Jan 2007 21:22:47 -0000 -@@ -47,6 +47,7 @@ - #include "doublest.h" - #include "gdb_assert.h" - #include "main.h" -+#include "event-loop.h" - - /* readline include files */ - #include "readline/readline.h" -@@ -710,24 +710,84 @@ - } - - /* This is like readline(), but it has some gdb-specific behavior. -- gdb can use readline in both the synchronous and async modes during -+ gdb may want readline in both the synchronous and async modes during - a single gdb invocation. At the ordinary top-level prompt we might - be using the async readline. That means we can't use - rl_pre_input_hook, since it doesn't work properly in async mode. - However, for a secondary prompt (" >", such as occurs during a -- `define'), gdb just calls readline() directly, running it in -- synchronous mode. So for operate-and-get-next to work in this -- situation, we have to switch the hooks around. That is what -- gdb_readline_wrapper is for. */ -+ `define'), gdb wants a synchronous response. -+ -+ We used to call readline() directly, running it in synchronous -+ mode. But mixing modes this way is not supported, and as of -+ readline 5.x it no longer works; the arrow keys come unbound during -+ the synchronous call. So we make a nested call into the event -+ loop. That's what gdb_readline_wrapper is for. */ -+ -+/* A flag set as soon as gdb_readline_wrapper_line is called; we can't -+ rely on gdb_readline_wrapper_result, which might still be NULL if -+ the user types Control-D for EOF. */ -+static int gdb_readline_wrapper_done; -+ -+/* The result of the current call to gdb_readline_wrapper, once a newline -+ is seen. */ -+static char *gdb_readline_wrapper_result; -+ -+/* Any intercepted hook. Operate-and-get-next sets this, expecting it -+ to be called after the newline is processed (which will redisplay -+ the prompt). But in gdb_readline_wrapper we will not get a new -+ prompt until the next call, or until we return to the event loop. -+ So we disable this hook around the newline and restore it before we -+ return. */ -+static void (*saved_after_char_processing_hook) (void); -+ -+/* This function is called when readline has seen a complete line of -+ text. */ -+ -+static void -+gdb_readline_wrapper_line (char *line) -+{ -+ gdb_assert (!gdb_readline_wrapper_done); -+ gdb_readline_wrapper_result = line; -+ gdb_readline_wrapper_done = 1; -+ -+ /* Prevent operate-and-get-next from acting too early. */ -+ saved_after_char_processing_hook = after_char_processing_hook; -+ after_char_processing_hook = NULL; -+} -+ -+struct gdb_readline_wrapper_cleanup -+ { -+ void (*handler_orig) (char *); -+ char *prompt_orig; -+ int already_prompted_orig; -+ }; -+ -+static void -+gdb_readline_wrapper_cleanup (void *arg) -+{ -+ struct gdb_readline_wrapper_cleanup *cleanup = arg; -+ -+ gdb_assert (rl_already_prompted == 1); -+ rl_already_prompted = cleanup->already_prompted_orig; -+ PROMPT (0) = cleanup->prompt_orig; -+ -+ gdb_assert (input_handler == gdb_readline_wrapper_line); -+ input_handler = cleanup->handler_orig; -+ gdb_readline_wrapper_result = NULL; -+ gdb_readline_wrapper_done = 0; -+ -+ after_char_processing_hook = saved_after_char_processing_hook; -+ saved_after_char_processing_hook = NULL; -+ -+ xfree (cleanup); -+} -+ - char * - gdb_readline_wrapper (char *prompt) - { -- /* Set the hook that works in this case. */ -- if (after_char_processing_hook) -- { -- rl_pre_input_hook = (Function *) after_char_processing_hook; -- after_char_processing_hook = NULL; -- } -+ struct cleanup *back_to; -+ struct gdb_readline_wrapper_cleanup *cleanup; -+ char *retval; - - /* Before calling readline, ensure we have the terminal. If we don't - have the terminal and call readline, we risk the possibility of -@@ -737,7 +797,32 @@ - a page break prompt. */ - terminal_ours (); - -- return readline (prompt); -+ cleanup = xmalloc (sizeof (*cleanup)); -+ cleanup->handler_orig = input_handler; -+ input_handler = gdb_readline_wrapper_line; -+ -+ cleanup->prompt_orig = get_prompt (); -+ PROMPT (0) = prompt; -+ cleanup->already_prompted_orig = rl_already_prompted; -+ -+ back_to = make_cleanup (gdb_readline_wrapper_cleanup, cleanup); -+ -+ /* Display our prompt and prevent double prompt display. */ -+ display_gdb_prompt (NULL); -+ rl_already_prompted = 1; -+ -+ if (after_char_processing_hook) -+ (*after_char_processing_hook) (); -+ gdb_assert (after_char_processing_hook == NULL); -+ -+ /* gdb_do_one_event argument is unused. */ -+ while (gdb_do_one_event (NULL) >= 0) -+ if (gdb_readline_wrapper_done) -+ break; -+ -+ retval = gdb_readline_wrapper_result; -+ do_cleanups (back_to); -+ return retval; - } - - diff --git a/gdb-6.5-bz216711-clone-is-outermost.patch b/gdb-6.5-bz216711-clone-is-outermost.patch index 6d76e54..e410bba 100644 --- a/gdb-6.5-bz216711-clone-is-outermost.patch +++ b/gdb-6.5-bz216711-clone-is-outermost.patch @@ -16,10 +16,15 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=216711 * gdb.threads/bt-clone-stop.exp, gdb.threads/bt-clone-stop.c: New file. +2007-10-16 Jan Kratochvil ---- ./gdb/amd64-linux-tdep.c 19 Aug 2006 15:15:18 -0000 1.12 -+++ ./gdb/amd64-linux-tdep.c 17 Dec 2006 17:59:05 -0000 -@@ -235,6 +235,80 @@ amd64_linux_register_reggroup_p (struct + Port to GDB-6.7. + +Index: gdb-6.7/gdb/amd64-linux-tdep.c +=================================================================== +--- gdb-6.7.orig/gdb/amd64-linux-tdep.c 2007-08-23 20:08:26.000000000 +0200 ++++ gdb-6.7/gdb/amd64-linux-tdep.c 2007-10-16 15:57:03.000000000 +0200 +@@ -234,6 +234,80 @@ amd64_linux_register_reggroup_p (struct /* Set the program counter for process PTID to PC. */ @@ -98,9 +103,9 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=216711 +} + static void - amd64_linux_write_pc (CORE_ADDR pc, ptid_t ptid) + amd64_linux_write_pc (struct regcache *regcache, CORE_ADDR pc) { -@@ -273,6 +342,8 @@ amd64_linux_init_abi (struct gdbarch_inf +@@ -272,6 +346,8 @@ amd64_linux_init_abi (struct gdbarch_inf tdep->sc_reg_offset = amd64_linux_sc_reg_offset; tdep->sc_num_regs = ARRAY_SIZE (amd64_linux_sc_reg_offset); @@ -109,9 +114,11 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=216711 /* GNU/Linux uses SVR4-style shared libraries. */ set_solib_svr4_fetch_link_map_offsets (gdbarch, svr4_lp64_fetch_link_map_offsets); ---- ./gdb/amd64-tdep.c 19 Aug 2006 15:15:18 -0000 1.32 -+++ ./gdb/amd64-tdep.c 17 Dec 2006 17:59:05 -0000 -@@ -879,11 +879,16 @@ amd64_frame_this_id (struct frame_info * +Index: gdb-6.7/gdb/amd64-tdep.c +=================================================================== +--- gdb-6.7.orig/gdb/amd64-tdep.c 2007-10-12 17:48:39.000000000 +0200 ++++ gdb-6.7/gdb/amd64-tdep.c 2007-10-16 15:57:03.000000000 +0200 +@@ -849,11 +849,16 @@ amd64_frame_this_id (struct frame_info * { struct amd64_frame_cache *cache = amd64_frame_cache (next_frame, this_cache); @@ -128,9 +135,11 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=216711 (*this_id) = frame_id_build (cache->base + 16, cache->pc); } ---- ./gdb/i386-tdep.c 8 Aug 2006 21:36:46 -0000 1.225 -+++ ./gdb/i386-tdep.c 17 Dec 2006 17:59:10 -0000 -@@ -2313,6 +2313,9 @@ i386_gdbarch_init (struct gdbarch_info i +Index: gdb-6.7/gdb/i386-tdep.c +=================================================================== +--- gdb-6.7.orig/gdb/i386-tdep.c 2007-10-12 17:48:39.000000000 +0200 ++++ gdb-6.7/gdb/i386-tdep.c 2007-10-16 15:57:03.000000000 +0200 +@@ -2355,6 +2355,9 @@ i386_gdbarch_init (struct gdbarch_info i tdep->sc_pc_offset = -1; tdep->sc_sp_offset = -1; @@ -140,20 +149,24 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=216711 /* The format used for `long double' on almost all i386 targets is the i387 extended floating-point format. In fact, of all targets in the GCC 2.95 tree, only OSF/1 does it different, and insists ---- ./gdb/i386-tdep.h 21 Jan 2006 20:59:50 -0000 1.46 -+++ ./gdb/i386-tdep.h 17 Dec 2006 17:59:10 -0000 -@@ -104,6 +104,9 @@ struct gdbarch_tdep - is deprecated, please use `sc_reg_offset' instead. */ - int sc_pc_offset; - int sc_sp_offset; +Index: gdb-6.7/gdb/i386-tdep.h +=================================================================== +--- gdb-6.7.orig/gdb/i386-tdep.h 2007-08-23 20:08:34.000000000 +0200 ++++ gdb-6.7/gdb/i386-tdep.h 2007-10-16 15:57:32.000000000 +0200 +@@ -106,6 +106,9 @@ struct gdbarch_tdep + /* ISA-specific data types. */ + struct type *i386_mmx_type; + struct type *i386_sse_type; + + /* Detect OS dependent outermost frames; such as `clone'. */ + int (*outermost_frame_p) (struct frame_info *next_frame); }; /* Floating-point registers. */ ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.threads/bt-clone-stop.c 17 Dec 2006 17:59:19 -0000 +Index: gdb-6.7/gdb/testsuite/gdb.threads/bt-clone-stop.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-6.7/gdb/testsuite/gdb.threads/bt-clone-stop.c 2007-10-16 15:57:03.000000000 +0200 @@ -0,0 +1,39 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -194,8 +207,10 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=216711 + for (;;) + pause(); +} ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.threads/bt-clone-stop.exp 17 Dec 2006 17:59:19 -0000 +Index: gdb-6.7/gdb/testsuite/gdb.threads/bt-clone-stop.exp +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-6.7/gdb/testsuite/gdb.threads/bt-clone-stop.exp 2007-10-16 15:57:03.000000000 +0200 @@ -0,0 +1,61 @@ +# Copyright 2006 Free Software Foundation, Inc. + diff --git a/gdb-6.5-bz237872-ppc-long-double.patch b/gdb-6.5-bz237872-ppc-long-double.patch index eae9fa6..19c7a0d 100644 --- a/gdb-6.5-bz237872-ppc-long-double.patch +++ b/gdb-6.5-bz237872-ppc-long-double.patch @@ -122,3 +122,56 @@ Index: ./gdb/ppc-linux-tdep.c if (tdep->wordsize == 4) { + + + +2007-10-17 Jan Kratochvil + + Port to GDB-6.7. + +diff -u -u -X /home/jkratoch/.diffi.list -rup gdb-6.7-patched/gdb/gdbtypes.c gdb-6.7/gdb/gdbtypes.c +--- gdb-6.7-patched/gdb/gdbtypes.c 2007-09-05 02:51:48.000000000 +0200 ++++ gdb-6.7/gdb/gdbtypes.c 2007-10-17 12:09:00.000000000 +0200 +@@ -95,6 +95,10 @@ const struct floatformat *floatformats_v + &floatformat_vax_d, + &floatformat_vax_d + }; ++const struct floatformat *floatformat_ppc64_long_double[BFD_ENDIAN_UNKNOWN] = { ++ &floatformat_ppc64_long_double_big, ++ &floatformat_ppc64_long_double_little ++}; + + struct type *builtin_type_ieee_single; + struct type *builtin_type_ieee_double; +diff -u -u -X /home/jkratoch/.diffi.list -rup gdb-6.7-patched/gdb/gdbtypes.h gdb-6.7/gdb/gdbtypes.h +--- gdb-6.7-patched/gdb/gdbtypes.h 2007-09-05 02:51:48.000000000 +0200 ++++ gdb-6.7/gdb/gdbtypes.h 2007-10-17 12:08:30.000000000 +0200 +@@ -1121,6 +1121,7 @@ extern const struct floatformat *floatfo + extern const struct floatformat *floatformats_ia64_quad[BFD_ENDIAN_UNKNOWN]; + extern const struct floatformat *floatformats_vax_f[BFD_ENDIAN_UNKNOWN]; + extern const struct floatformat *floatformats_vax_d[BFD_ENDIAN_UNKNOWN]; ++extern const struct floatformat *floatformat_ppc64_long_double[BFD_ENDIAN_UNKNOWN]; + + extern struct type *builtin_type_ieee_single; + extern struct type *builtin_type_ieee_double; +diff -u -u -X /home/jkratoch/.diffi.list -rup gdb-6.7-patched/gdb/rs6000-tdep.c gdb-6.7/gdb/rs6000-tdep.c +--- gdb-6.7-patched/gdb/rs6000-tdep.c 2007-10-16 20:52:45.000000000 +0200 ++++ gdb-6.7/gdb/rs6000-tdep.c 2007-10-17 12:07:54.000000000 +0200 +@@ -3755,16 +3755,7 @@ rs6000_gdbarch_init (struct gdbarch_info + set_gdbarch_double_bit (gdbarch, 8 * TARGET_CHAR_BIT); + if (sysv_abi) + { +- int byte_order = gdbarch_byte_order (gdbarch); +- +- if (byte_order == BFD_ENDIAN_BIG) +- set_gdbarch_long_double_format (gdbarch, &floatformat_ppc64_long_double_big); +- else if (byte_order == BFD_ENDIAN_LITTLE) +- set_gdbarch_long_double_format (gdbarch, &floatformat_ppc64_long_double_little); +- else +- internal_error (__FILE__, __LINE__, +- _("rs6000_gdbarch_init: " +- "bad byte order")); ++ set_gdbarch_long_double_format (gdbarch, floatformat_ppc64_long_double); + set_gdbarch_long_double_bit (gdbarch, 16 * TARGET_CHAR_BIT); + } + else diff --git a/gdb-6.5-dwarf-stack-overflow.patch b/gdb-6.5-dwarf-stack-overflow.patch index 9680d28..476bac2 100644 --- a/gdb-6.5-dwarf-stack-overflow.patch +++ b/gdb-6.5-dwarf-stack-overflow.patch @@ -6,11 +6,15 @@ for gdb/ChangeLog: boundaries. * dwarfread.c (locval): Likewise. -Index: gdb-6.5/gdb/dwarf2read.c +2007-10-15 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/dwarf2read.c =================================================================== ---- gdb-6.5.orig/gdb/dwarf2read.c 2006-09-04 02:02:23.000000000 -0300 -+++ gdb-6.5/gdb/dwarf2read.c 2006-09-04 02:02:23.000000000 -0300 -@@ -8667,8 +8667,7 @@ dwarf2_fundamental_type (struct objfile +--- gdb-6.7.orig/gdb/dwarf2read.c 2007-10-15 00:08:30.000000000 +0200 ++++ gdb-6.7/gdb/dwarf2read.c 2007-10-15 21:42:43.000000000 +0200 +@@ -9070,8 +9070,7 @@ dwarf2_fundamental_type (struct objfile callers will only want a very basic result and this can become a complaint. @@ -20,7 +24,7 @@ Index: gdb-6.5/gdb/dwarf2read.c static CORE_ADDR decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu) -@@ -8685,7 +8684,7 @@ decode_locdesc (struct dwarf_block *blk, +@@ -9088,7 +9087,7 @@ decode_locdesc (struct dwarf_block *blk, i = 0; stacki = 0; @@ -29,7 +33,7 @@ Index: gdb-6.5/gdb/dwarf2read.c while (i < size) { -@@ -8864,6 +8863,16 @@ decode_locdesc (struct dwarf_block *blk, +@@ -9270,6 +9269,16 @@ decode_locdesc (struct dwarf_block *blk, dwarf_stack_op_name (op)); return (stack[stacki]); } @@ -46,44 +50,3 @@ Index: gdb-6.5/gdb/dwarf2read.c } return (stack[stacki]); } -Index: gdb-6.5/gdb/dwarfread.c -=================================================================== ---- gdb-6.5.orig/gdb/dwarfread.c 2005-12-17 20:33:59.000000000 -0200 -+++ gdb-6.5/gdb/dwarfread.c 2006-09-04 02:02:23.000000000 -0300 -@@ -2138,9 +2138,7 @@ decode_line_numbers (char *linetable) - - NOTES - -- Note that stack[0] is unused except as a default error return. -- Note that stack overflow is not yet handled. -- */ -+ Note that stack[0] is unused except as a default error return. */ - - static int - locval (struct dieinfo *dip) -@@ -2160,7 +2158,7 @@ locval (struct dieinfo *dip) - loc += nbytes; - end = loc + locsize; - stacki = 0; -- stack[stacki] = 0; -+ stack[++stacki] = 0; - dip->isreg = 0; - dip->offreg = 0; - dip->optimized_out = 1; -@@ -2224,6 +2222,16 @@ locval (struct dieinfo *dip) - stacki--; - break; - } -+ /* Enforce maximum stack depth of size-1 to avoid ++stacki writing -+ outside of the allocated space. Also enforce minimum > 0. -+ -- wad@google.com 14 Aug 2006 */ -+ if (stacki >= sizeof (stack) / sizeof (*stack) - 1) -+ internal_error (__FILE__, __LINE__, -+ _("location description stack too deep: %d"), -+ stacki); -+ if (stacki <= 0) -+ internal_error (__FILE__, __LINE__, -+ _("location description stack too shallow")); - } - return (stack[stacki]); - } diff --git a/gdb-6.5-gcore-i386-on-amd64.patch b/gdb-6.5-gcore-i386-on-amd64.patch index d5b663c..956e84c 100644 --- a/gdb-6.5-gcore-i386-on-amd64.patch +++ b/gdb-6.5-gcore-i386-on-amd64.patch @@ -15,12 +15,15 @@ * linux-nat.h: Likewise. * Makefile.in: Dependencies updated. +2007-10-16 Jan Kratochvil -Index: gdb-6.6/gdb/Makefile.in + Port to GDB-6.7. + +Index: gdb-6.7/gdb/Makefile.in =================================================================== ---- gdb-6.6.orig/gdb/Makefile.in 2007-01-20 06:43:02.000000000 +0100 -+++ gdb-6.6/gdb/Makefile.in 2007-01-20 06:57:16.000000000 +0100 -@@ -705,6 +705,7 @@ gdb_expat_h = gdb_expat.h +--- gdb-6.7.orig/gdb/Makefile.in 2007-10-14 23:57:38.000000000 +0200 ++++ gdb-6.7/gdb/Makefile.in 2007-10-16 15:46:48.000000000 +0200 +@@ -717,6 +717,7 @@ gdb_expat_h = gdb_expat.h gdb_locale_h = gdb_locale.h gdb_obstack_h = gdb_obstack.h $(obstack_h) gdb_proc_service_h = gdb_proc_service.h $(gregset_h) @@ -28,7 +31,7 @@ Index: gdb-6.6/gdb/Makefile.in gdb_ptrace_h = gdb_ptrace.h gdb_regex_h = gdb_regex.h $(xregex_h) gdb_select_h = gdb_select.h -@@ -714,6 +715,7 @@ gdb_string_h = gdb_string.h +@@ -726,6 +727,7 @@ gdb_string_h = gdb_string.h gdb_thread_db_h = gdb_thread_db.h gdbthread_h = gdbthread.h $(breakpoint_h) $(frame_h) gdbtypes_h = gdbtypes.h $(hashtab_h) @@ -36,31 +39,31 @@ Index: gdb-6.6/gdb/Makefile.in gdb_vfork_h = gdb_vfork.h gdb_wait_h = gdb_wait.h glibc_tdep_h = glibc-tdep.h -@@ -1779,7 +1781,8 @@ amd64fbsd-tdep.o: amd64fbsd-tdep.c $(def +@@ -1793,7 +1795,8 @@ amd64fbsd-tdep.o: amd64fbsd-tdep.c $(def amd64-linux-nat.o: amd64-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \ $(regcache_h) $(linux_nat_h) $(gdb_assert_h) $(gdb_string_h) \ $(gdb_proc_service_h) $(gregset_h) $(amd64_tdep_h) \ -- $(i386_linux_tdep_h) $(amd64_nat_h) $(target_h) $(amd64_linux_tdep_h) -+ $(i386_linux_tdep_h) $(amd64_nat_h) $(target_h) $(amd64_linux_tdep_h) \ +- $(i386_linux_tdep_h) $(amd64_nat_h) $(amd64_linux_tdep_h) ++ $(i386_linux_tdep_h) $(amd64_nat_h) $(amd64_linux_tdep_h) \ + $(i387_tdep_h) $(elf_bfd_h) $(gdb_procfs32_h) amd64-linux-tdep.o: amd64-linux-tdep.c $(defs_h) $(frame_h) $(gdbcore_h) \ $(regcache_h) $(osabi_h) $(symtab_h) $(gdb_string_h) $(amd64_tdep_h) \ $(solib_svr4_h) $(gdbtypes_h) $(reggroups_h) $(amd64_linux_tdep_h) -Index: gdb-6.6/gdb/amd64-linux-nat.c +Index: gdb-6.7/gdb/amd64-linux-nat.c =================================================================== ---- gdb-6.6.orig/gdb/amd64-linux-nat.c 2007-01-20 06:43:00.000000000 +0100 -+++ gdb-6.6/gdb/amd64-linux-nat.c 2007-01-20 06:56:21.000000000 +0100 -@@ -53,6 +53,9 @@ +--- gdb-6.7.orig/gdb/amd64-linux-nat.c 2007-10-14 23:39:04.000000000 +0200 ++++ gdb-6.7/gdb/amd64-linux-nat.c 2007-10-16 15:46:18.000000000 +0200 +@@ -51,6 +51,9 @@ #include "amd64-tdep.h" #include "i386-linux-tdep.h" #include "amd64-nat.h" +#include "i387-tdep.h" -+#include "bfd/elf-bfd.h" ++#include "elf-bfd.h" +#include "gdb_procfs32.h" /* Mapping between the general-purpose registers in GNU/Linux x86-64 `struct user' format and GDB's register cache layout. */ -@@ -87,6 +90,35 @@ static int amd64_linux_gregset64_reg_off +@@ -85,6 +88,35 @@ static int amd64_linux_gregset64_reg_off GNU/Linux i386 registers are all 32-bit, but since we're little-endian we get away with that. */ @@ -96,7 +99,7 @@ Index: gdb-6.6/gdb/amd64-linux-nat.c /* From on GNU/Linux i386. */ static int amd64_linux_gregset32_reg_offset[] = { -@@ -105,6 +137,94 @@ static int amd64_linux_gregset32_reg_off +@@ -103,6 +135,96 @@ static int amd64_linux_gregset32_reg_off }; @@ -157,12 +160,13 @@ Index: gdb-6.6/gdb/amd64-linux-nat.c +} + +static char * -+amd64_elfcore_write_prxfpreg32 (bfd *abfd, char *buf, int *bufsiz) ++amd64_elfcore_write_prxfpreg32 (bfd *abfd, char *buf, int *bufsiz, ++ struct regcache *regcache) +{ + char *note_name = "LINUX"; + elf_fpxregset32_t fpxregs32; + -+ i387_fill_fxsave (&fpxregs32, -1); ++ i387_collect_fxsave (regcache, -1, &fpxregs32); + return elfcore_write_note(abfd, buf, bufsiz, + note_name, NT_PRXFPREG, &fpxregs32, + sizeof(fpxregs32)); @@ -170,18 +174,19 @@ Index: gdb-6.6/gdb/amd64-linux-nat.c + +static char * +amd64_linux_elfcore_write_prfpreg (bfd *abfd, char *buf, -+ int *bufsiz, const void *fpregs, int size) ++ int *bufsiz, const void *fpregs, int size, ++ struct regcache *regcache) +{ + if (gdbarch_ptr_bit(current_gdbarch) == 32) + { + char *note_name = "CORE"; + elf_fpregset32_t fpregs32; + -+ i387_fill_fsave (&fpregs32, -1); ++ i387_collect_fsave (regcache, -1, &fpregs32); + buf = elfcore_write_note(abfd, buf, bufsiz, note_name, + NT_FPREGSET, &fpregs32, sizeof(fpregs32)); + -+ return amd64_elfcore_write_prxfpreg32 (abfd, buf, bufsiz); ++ return amd64_elfcore_write_prxfpreg32 (abfd, buf, bufsiz, regcache); + } + else + return elfcore_write_prfpreg (abfd, buf, bufsiz, fpregs, size); @@ -203,11 +208,11 @@ Index: gdb-6.6/gdb/amd64-linux-nat.c /* Register the target. */ linux_nat_add_target (t); -Index: gdb-6.6/gdb/config.in +Index: gdb-6.7/gdb/config.in =================================================================== ---- gdb-6.6.orig/gdb/config.in 2006-08-08 22:32:15.000000000 +0200 -+++ gdb-6.6/gdb/config.in 2007-01-20 06:56:21.000000000 +0100 -@@ -373,6 +373,9 @@ +--- gdb-6.7.orig/gdb/config.in 2007-06-18 17:46:37.000000000 +0200 ++++ gdb-6.7/gdb/config.in 2007-10-16 15:46:18.000000000 +0200 +@@ -385,6 +385,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_POLL_H @@ -217,7 +222,7 @@ Index: gdb-6.6/gdb/config.in /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PROCFS_H -@@ -397,6 +400,9 @@ +@@ -412,6 +415,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H @@ -227,11 +232,11 @@ Index: gdb-6.6/gdb/config.in /* Define to 1 if you have the header file. */ #undef HAVE_SYS_USER_H -Index: gdb-6.6/gdb/configure +Index: gdb-6.7/gdb/configure =================================================================== ---- gdb-6.6.orig/gdb/configure 2007-01-20 06:43:00.000000000 +0100 -+++ gdb-6.6/gdb/configure 2007-01-20 06:56:21.000000000 +0100 -@@ -9966,6 +9966,157 @@ done +--- gdb-6.7.orig/gdb/configure 2007-09-29 22:54:13.000000000 +0200 ++++ gdb-6.7/gdb/configure 2007-10-16 15:46:18.000000000 +0200 +@@ -10439,6 +10439,157 @@ done @@ -389,11 +394,11 @@ Index: gdb-6.6/gdb/configure for ac_header in sys/wait.h wait.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -Index: gdb-6.6/gdb/configure.ac +Index: gdb-6.7/gdb/configure.ac =================================================================== ---- gdb-6.6.orig/gdb/configure.ac 2007-01-20 06:43:01.000000000 +0100 -+++ gdb-6.6/gdb/configure.ac 2007-01-20 06:56:21.000000000 +0100 -@@ -371,6 +371,7 @@ AC_CHECK_HEADERS(sys/user.h, [], [], +--- gdb-6.7.orig/gdb/configure.ac 2007-09-29 22:54:13.000000000 +0200 ++++ gdb-6.7/gdb/configure.ac 2007-10-16 15:46:18.000000000 +0200 +@@ -424,6 +424,7 @@ AC_CHECK_HEADERS(sys/user.h, [], [], # include #endif ]) @@ -401,11 +406,11 @@ Index: gdb-6.6/gdb/configure.ac AC_CHECK_HEADERS(sys/wait.h wait.h) AC_CHECK_HEADERS(termios.h termio.h sgtty.h) AC_CHECK_HEADERS(unistd.h) -Index: gdb-6.6/gdb/gcore.c +Index: gdb-6.7/gdb/gcore.c =================================================================== ---- gdb-6.6.orig/gdb/gcore.c 2007-01-20 06:43:02.000000000 +0100 -+++ gdb-6.6/gdb/gcore.c 2007-01-20 06:56:21.000000000 +0100 -@@ -320,6 +320,11 @@ gcore_create_callback (CORE_ADDR vaddr, +--- gdb-6.7.orig/gdb/gcore.c 2007-10-14 23:57:38.000000000 +0200 ++++ gdb-6.7/gdb/gcore.c 2007-10-16 15:46:18.000000000 +0200 +@@ -317,6 +317,11 @@ gcore_create_callback (CORE_ADDR vaddr, asection *osec; flagword flags = SEC_ALLOC | SEC_HAS_CONTENTS | SEC_LOAD; @@ -417,10 +422,10 @@ Index: gdb-6.6/gdb/gcore.c /* If the memory segment has no permissions set, ignore it, otherwise when we later try to access it for read/write, we'll get an error or jam the kernel. */ -Index: gdb-6.6/gdb/gdb_procfs32.h +Index: gdb-6.7/gdb/gdb_procfs32.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.6/gdb/gdb_procfs32.h 2007-01-20 06:56:21.000000000 +0100 ++++ gdb-6.7/gdb/gdb_procfs32.h 2007-10-16 15:46:18.000000000 +0200 @@ -0,0 +1,128 @@ +#ifdef HAVE_SYS_PROCFS32_H +#include @@ -550,10 +555,10 @@ Index: gdb-6.6/gdb/gdb_procfs32.h +#endif /* _SYS_PROCFS32_H */ + +#endif /* HAVE_SYS_PROCFS32_H */ -Index: gdb-6.6/gdb/gdb_user32.h +Index: gdb-6.7/gdb/gdb_user32.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.6/gdb/gdb_user32.h 2007-01-20 06:56:21.000000000 +0100 ++++ gdb-6.7/gdb/gdb_user32.h 2007-10-16 15:46:18.000000000 +0200 @@ -0,0 +1,108 @@ +#ifdef HAVE_SYS_USER32_H +#include @@ -663,11 +668,11 @@ Index: gdb-6.6/gdb/gdb_user32.h +#endif /* _SYS_USER32_H */ + +#endif /* HAVE_SYS_USER32_H */ -Index: gdb-6.6/gdb/linux-nat.c +Index: gdb-6.7/gdb/linux-nat.c =================================================================== ---- gdb-6.6.orig/gdb/linux-nat.c 2007-01-20 06:43:04.000000000 +0100 -+++ gdb-6.6/gdb/linux-nat.c 2007-01-20 06:56:21.000000000 +0100 -@@ -100,6 +100,15 @@ static LONGEST (*super_xfer_partial) (st +--- gdb-6.7.orig/gdb/linux-nat.c 2007-10-15 21:42:26.000000000 +0200 ++++ gdb-6.7/gdb/linux-nat.c 2007-10-16 15:46:18.000000000 +0200 +@@ -98,6 +98,21 @@ static LONGEST (*super_xfer_partial) (st const gdb_byte *, ULONGEST, LONGEST); @@ -677,15 +682,21 @@ Index: gdb-6.6/gdb/linux-nat.c + (bfd *, char *, int *, const char *, const char *) = elfcore_write_prpsinfo; +char *(*linux_elfcore_write_prstatus) + (bfd *, char *, int *, long, int, const void *) = elfcore_write_prstatus; -+char *(*linux_elfcore_write_prfpreg) -+ (bfd *, char *, int *, const void *, int) = elfcore_write_prfpreg; ++static char * ++linux_elfcore_write_prfpreg_bfd (bfd *abfd, char *buf, int *bufsiz, ++ const void *fpregs, int size, struct regcache *regcache) ++{ ++ return elfcore_write_prfpreg (abfd, buf, bufsiz, fpregs, size); ++} ++char *(*linux_elfcore_write_prfpreg) (bfd *, char *, int *, const void *, int, ++ struct regcache *) = linux_elfcore_write_prfpreg_bfd; + static int debug_linux_nat; static void show_debug_linux_nat (struct ui_file *file, int from_tty, -@@ -2715,11 +2724,11 @@ linux_nat_do_thread_registers (bfd *obfd +@@ -2687,11 +2696,11 @@ linux_nat_do_thread_registers (bfd *obfd else - fill_gregset (&gregs, -1); + fill_gregset (regcache, &gregs, -1); - note_data = (char *) elfcore_write_prstatus (obfd, - note_data, @@ -700,9 +711,9 @@ Index: gdb-6.6/gdb/linux-nat.c if (core_regset_p && (regset = gdbarch_regset_from_core_section (gdbarch, ".reg2", -@@ -2730,10 +2739,10 @@ linux_nat_do_thread_registers (bfd *obfd +@@ -2702,10 +2711,11 @@ linux_nat_do_thread_registers (bfd *obfd else - fill_fpregset (&fpregs, -1); + fill_fpregset (regcache, &fpregs, -1); - note_data = (char *) elfcore_write_prfpreg (obfd, - note_data, @@ -711,13 +722,14 @@ Index: gdb-6.6/gdb/linux-nat.c + note_data = (char *) linux_elfcore_write_prfpreg (obfd, + note_data, + note_size, -+ &fpregs, sizeof (fpregs)); ++ &fpregs, sizeof (fpregs), ++ regcache); #ifdef FILL_FPXREGSET if (core_regset_p -@@ -2828,9 +2837,9 @@ linux_nat_make_corefile_notes (bfd *obfd - strncat (psargs, get_inferior_args (), - sizeof (psargs) - strlen (psargs)); +@@ -2799,9 +2808,9 @@ linux_nat_make_corefile_notes (bfd *obfd + psargs_end - string_end); + } } - note_data = (char *) elfcore_write_prpsinfo (obfd, - note_data, @@ -728,11 +740,11 @@ Index: gdb-6.6/gdb/linux-nat.c } /* Dump information for threads. */ -Index: gdb-6.6/gdb/linux-nat.h +Index: gdb-6.7/gdb/linux-nat.h =================================================================== ---- gdb-6.6.orig/gdb/linux-nat.h 2007-01-20 06:42:58.000000000 +0100 -+++ gdb-6.6/gdb/linux-nat.h 2007-01-20 06:56:21.000000000 +0100 -@@ -108,3 +108,12 @@ void linux_nat_add_target (struct target +--- gdb-6.7.orig/gdb/linux-nat.h 2007-10-13 05:09:50.000000000 +0200 ++++ gdb-6.7/gdb/linux-nat.h 2007-10-16 15:46:18.000000000 +0200 +@@ -110,3 +110,12 @@ void linux_nat_add_target (struct target /* Update linux-nat internal state when changing from one fork to another. */ void linux_nat_switch_fork (ptid_t new_ptid); @@ -744,4 +756,4 @@ Index: gdb-6.6/gdb/linux-nat.h +extern char *(*linux_elfcore_write_prstatus) + (bfd *, char *, int *, long, int, const void *); +extern char *(*linux_elfcore_write_prfpreg) -+ (bfd *, char *, int *, const void *, int); ++ (bfd *, char *, int *, const void *, int, struct regcache *); diff --git a/gdb-6.5-relativedebug.patch b/gdb-6.5-relativedebug.patch deleted file mode 100644 index 3f53ffa..0000000 --- a/gdb-6.5-relativedebug.patch +++ /dev/null @@ -1,143 +0,0 @@ -2006-10-29 Jan Kratochvil - - * gdb/symtab.c (matching_bfd_sections): Fix VMA matching for objects - loaded at a different address than stored on the disk. - -2006-10-29 Jan Kratochvil - - * gdb.base/relativedebug.c, gdb.base/relativedebug.exp: New file, - resolving of PC in libc pause(3) (with possibly different on-disk VMA). - - -Index: ./gdb/symtab.c -=================================================================== ---- ./gdb/symtab.c 17 Oct 2006 20:17:44 -0000 1.148 -+++ ./gdb/symtab.c 29 Oct 2006 22:29:21 -0000 -@@ -739,8 +739,11 @@ matching_bfd_sections (asection *first, - if (bfd_get_section_size (first) != bfd_get_section_size (second)) - return 0; - -+ /* In-memory addresses may start at a different offset, relativize them. */ - if (bfd_get_section_vma (first->owner, first) -- != bfd_get_section_vma (second->owner, second)) -+ - bfd_get_start_address (first->owner) -+ != bfd_get_section_vma (second->owner, second) -+ - bfd_get_start_address (second->owner)) - return 0; - - if (bfd_get_section_name (first->owner, first) == NULL -Index: ./gdb/testsuite/gdb.base/relativedebug.c -=================================================================== ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.base/relativedebug.c 29 Oct 2006 22:29:21 -0000 -@@ -0,0 +1,37 @@ -+/* This testcase is part of GDB, the GNU debugger. -+ -+ Copyright 2006 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -+ 02111-1307, USA. */ -+ -+#include -+#include -+#include -+ -+ -+static void handler (int signo) -+{ -+ abort (); -+} -+ -+int main (void) -+{ -+ signal (SIGALRM, handler); -+ alarm (1); -+ pause (); -+ pause (); -+ return 0; -+} -Index: ./gdb/testsuite/gdb.base/relativedebug.exp -=================================================================== ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.base/relativedebug.exp 29 Oct 2006 22:29:21 -0000 -@@ -0,0 +1,68 @@ -+# Copyright 2006 Free Software Foundation, Inc. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, write to the Free Software -+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+if $tracelevel then { -+ strace $tracelevel -+} -+ -+set testfile relativedebug -+set srcfile ${testfile}.c -+set binfile ${objdir}/${subdir}/${testfile} -+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { -+ untested "Couldn't compile test program" -+ return -1 -+} -+ -+# Get things started. -+ -+gdb_exit -+gdb_start -+gdb_reinitialize_dir $srcdir/$subdir -+gdb_load ${binfile} -+ -+# pause () -> SIGALRM -> handler () -> abort () -+ -+gdb_test "run" \ -+ ".*Program received signal SIGABRT, Aborted..*" \ -+ "run" -+ -+# incorrect (#6): -+# (gdb) bt -+# #0 0x00325402 in __kernel_vsyscall () -+# #1 0x00718f20 in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 -+# #2 0x0071a801 in *__GI_abort () at abort.c:88 -+# #3 0x0804841f in handler (signo=14) at ./gdb.base/relativedebug.c:27 -+# #4 -+# #5 0x00325402 in __kernel_vsyscall () -+# #6 0x0077ebc6 in ?? () from /lib/i686/nosegneg/libc.so.6 -+# #7 0x08048455 in main () at ./gdb.base/relativedebug.c:34 -+# (gdb) -+ -+# correct (#6): -+# (gdb) bt -+# #0 0x00b33402 in __kernel_vsyscall () -+# #1 0x00718f20 in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 -+# #2 0x0071a801 in *__GI_abort () at abort.c:88 -+# #3 0x0804841f in handler (signo=14) at ./gdb.base/relativedebug.c:27 -+# #4 -+# #5 0x00b33402 in __kernel_vsyscall () -+# #6 0x0077ebc6 in __pause_nocancel () from /lib/i686/nosegneg/libc.so.6 -+# #7 0x08048455 in main () at ./gdb.base/relativedebug.c:34 -+# (gdb) -+ -+gdb_test "bt" \ -+ ".*\[^a-zA-Z\]pause\[^a-zA-Z\].*" \ -+ "pause(3) seen there" diff --git a/gdb-6.5-sharedlibrary-path.patch b/gdb-6.5-sharedlibrary-path.patch index fa8ce3d..739a91b 100644 --- a/gdb-6.5-sharedlibrary-path.patch +++ b/gdb-6.5-sharedlibrary-path.patch @@ -12,15 +12,15 @@ The testsuite needs `gdb-6.5-tls-of-separate-debuginfo.patch'. * solib-svr4.c (svr4_fetch_objfile_link_map): Match even absolute requested pathnames to the internal loaded relative pathnames. +2007-10-16 Jan Kratochvil -Index: gdb-6.5/gdb/solib-svr4.c + Port to GDB-6.7. + +Index: gdb-6.7/gdb/solib-svr4.c =================================================================== -RCS file: /cvs/src/src/gdb/solib-svr4.c,v -retrieving revision 1.58 -diff -u -p -r1.58 gdb-6.5/gdb/solib-svr4.c ---- gdb-6.5.orig/gdb/solib-svr4.c 18 May 2006 20:38:56 -0000 1.58 -+++ gdb-6.5/gdb/solib-svr4.c 1 Sep 2006 18:47:10 -0000 -@@ -774,62 +774,81 @@ CORE_ADDR +--- gdb-6.7.orig/gdb/solib-svr4.c 2007-10-14 23:04:45.000000000 +0200 ++++ gdb-6.7/gdb/solib-svr4.c 2007-10-16 15:43:56.000000000 +0200 +@@ -1009,10 +1009,14 @@ CORE_ADDR svr4_fetch_objfile_link_map (struct objfile *objfile) { CORE_ADDR lm; @@ -29,136 +29,48 @@ diff -u -p -r1.58 gdb-6.5/gdb/solib-svr4.c if ((debug_base = locate_base ()) == 0) return 0; /* failed somehow... */ -- /* Position ourselves on the first link map. */ -- lm = solib_svr4_r_map (); -- while (lm) -+ for (resolve = 0; resolve <= 1; resolve++) - { -- /* Get info on the layout of the r_debug and link_map structures. */ -- struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); -- int errcode; -- char *buffer; -- struct lm_info objfile_lm_info; -- struct cleanup *old_chain; -- CORE_ADDR name_address; -- gdb_byte *l_name_buf = xmalloc (lmo->l_name_size); -- old_chain = make_cleanup (xfree, l_name_buf); -- -- /* Set up the buffer to contain the portion of the link_map -- structure that gdb cares about. Note that this is not the -- whole link_map structure. */ -- objfile_lm_info.lm = xzalloc (lmo->link_map_size); -- make_cleanup (xfree, objfile_lm_info.lm); -- -- /* Read the link map into our internal structure. */ -- read_memory (lm, objfile_lm_info.lm, lmo->link_map_size); -- -- /* Read address of name from target memory to GDB. */ -- read_memory (lm + lmo->l_name_offset, l_name_buf, lmo->l_name_size); -- -- /* Extract this object's name. Assume that the address is -- unsigned. */ -- name_address = extract_unsigned_integer (l_name_buf, lmo->l_name_size); -- target_read_string (name_address, &buffer, -- SO_NAME_MAX_PATH_SIZE - 1, &errcode); -- make_cleanup (xfree, buffer); -- if (errcode != 0) -- warning (_("Can't read pathname for load map: %s."), -- safe_strerror (errcode)); -- else -- { -- /* Is this the linkmap for the file we want? */ -- /* If the file is not a shared library and has no name, -- we are sure it is the main executable, so we return that. */ -- if ((buffer && strcmp (buffer, objfile->name) == 0) -- || (!(objfile->flags & OBJF_SHARED) && (strcmp (buffer, "") == 0))) -- { -- do_cleanups (old_chain); -- return lm; -- } -- } -- /* Not the file we wanted, continue checking. Assume that the -- address is unsigned. */ -- lm = extract_unsigned_integer (objfile_lm_info.lm + lmo->l_next_offset, -- lmo->l_next_size); -- do_cleanups (old_chain); -+ /* Position ourselves on the first link map. */ -+ lm = solib_svr4_r_map (); -+ while (lm) -+ { -+ /* Get info on the layout of the r_debug and link_map structures. */ -+ struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); -+ int errcode; -+ char *buffer; -+ struct lm_info objfile_lm_info; -+ struct cleanup *old_chain; -+ CORE_ADDR name_address; -+ gdb_byte *l_name_buf = xmalloc (lmo->l_name_size); -+ old_chain = make_cleanup (xfree, l_name_buf); ++for (resolve = 0; resolve <= 1; resolve++) ++{ + -+ /* Set up the buffer to contain the portion of the link_map -+ structure that gdb cares about. Note that this is not the -+ whole link_map structure. */ -+ objfile_lm_info.lm = xzalloc (lmo->link_map_size); -+ make_cleanup (xfree, objfile_lm_info.lm); -+ -+ /* Read the link map into our internal structure. */ -+ read_memory (lm, objfile_lm_info.lm, lmo->link_map_size); -+ -+ /* Read address of name from target memory to GDB. */ -+ read_memory (lm + lmo->l_name_offset, l_name_buf, lmo->l_name_size); -+ -+ /* Extract this object's name. Assume that the address is -+ unsigned. */ -+ name_address = extract_unsigned_integer (l_name_buf, lmo->l_name_size); -+ target_read_string (name_address, &buffer, -+ SO_NAME_MAX_PATH_SIZE - 1, &errcode); -+ make_cleanup (xfree, buffer); -+ if (errcode != 0) -+ warning (_("Can't read pathname for load map: %s."), -+ safe_strerror (errcode)); -+ else + /* Position ourselves on the first link map. */ + lm = solib_svr4_r_map (); + while (lm) +@@ -1051,6 +1055,21 @@ svr4_fetch_objfile_link_map (struct objf + safe_strerror (errcode)); + else + { ++ /* solib_svr4_r_map() may contain relative pathnames while ++ `objfile->name' is absolute. */ ++ if (resolve && buffer && buffer[0] != '/') + { -+ /* solib_svr4_r_map() may contain relative pathnames while -+ `objfile->name' is absolute. */ -+ if (resolve && buffer && buffer[0] != '/') -+ { -+ char *absolute; -+ int fd; ++ char *absolute; ++ int fd; + -+ fd = solib_open (buffer, &absolute); -+ if (fd != -1) -+ { -+ make_cleanup (xfree, absolute); -+ buffer = absolute; -+ close (fd); -+ } -+ } -+ /* Is this the linkmap for the file we want? */ -+ /* If the file is not a shared library and has no name, -+ we are sure it is the main executable, so we return that. */ -+ if ((buffer && strcmp (buffer, objfile->name) == 0) -+ || (!(objfile->flags & OBJF_SHARED) && (strcmp (buffer, "") == 0))) ++ fd = solib_open (buffer, &absolute); ++ if (fd != -1) + { -+ do_cleanups (old_chain); -+ return lm; ++ make_cleanup (xfree, absolute); ++ buffer = absolute; ++ close (fd); + } + } -+ /* Not the file we wanted, continue checking. Assume that the -+ address is unsigned. */ -+ lm = extract_unsigned_integer (objfile_lm_info.lm + lmo->l_next_offset, -+ lmo->l_next_size); -+ do_cleanups (old_chain); -+ } + /* Is this the linkmap for the file we want? */ + /* If the file is not a shared library and has no name, + we are sure it is the main executable, so we return that. */ +@@ -1069,6 +1088,9 @@ svr4_fetch_objfile_link_map (struct objf + builtin_type_void_data_ptr); + do_cleanups (old_chain); } ++ ++} /* resolve */ ++ return 0; } -Index: gdb-6.5/gdb/testsuite/gdb.threads/tls-sepdebug-main.c + +Index: gdb-6.7/gdb/testsuite/gdb.threads/tls-sepdebug-main.c =================================================================== -RCS file: gdb-6.5/gdb/testsuite/gdb.threads/tls-sepdebug-main.c -diff -N gdb-6.5/gdb/testsuite/gdb.threads/tls-sepdebug-main.c ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ gdb-6.5/gdb/testsuite/gdb.threads/tls-sepdebug-main.c 1 Sep 2006 18:47:14 -0000 +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-6.7/gdb/testsuite/gdb.threads/tls-sepdebug-main.c 2007-10-16 15:40:01.000000000 +0200 @@ -0,0 +1,25 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -185,12 +97,10 @@ diff -N gdb-6.5/gdb/testsuite/gdb.threads/tls-sepdebug-main.c +{ + return 0; +} -Index: gdb-6.5/gdb/testsuite/gdb.threads/tls-sepdebug-shared.c +Index: gdb-6.7/gdb/testsuite/gdb.threads/tls-sepdebug-shared.c =================================================================== -RCS file: gdb-6.5/gdb/testsuite/gdb.threads/tls-sepdebug-shared.c -diff -N gdb-6.5/gdb/testsuite/gdb.threads/tls-sepdebug-shared.c ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ gdb-6.5/gdb/testsuite/gdb.threads/tls-sepdebug-shared.c 1 Sep 2006 18:47:14 -0000 +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-6.7/gdb/testsuite/gdb.threads/tls-sepdebug-shared.c 2007-10-16 15:40:01.000000000 +0200 @@ -0,0 +1,22 @@ +/* This testcase is part of GDB, the GNU debugger. + @@ -214,12 +124,10 @@ diff -N gdb-6.5/gdb/testsuite/gdb.threads/tls-sepdebug-shared.c + bug-gdb@prep.ai.mit.edu */ + +__thread int var = 42; -Index: gdb-6.5/gdb/testsuite/gdb.threads/tls-sepdebug.exp +Index: gdb-6.7/gdb/testsuite/gdb.threads/tls-sepdebug.exp =================================================================== -RCS file: gdb-6.5/gdb/testsuite/gdb.threads/tls-sepdebug.exp -diff -N gdb-6.5/gdb/testsuite/gdb.threads/tls-sepdebug.exp ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ gdb-6.5/gdb/testsuite/gdb.threads/tls-sepdebug.exp 1 Sep 2006 18:47:14 -0000 +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-6.7/gdb/testsuite/gdb.threads/tls-sepdebug.exp 2007-10-16 15:40:01.000000000 +0200 @@ -0,0 +1,81 @@ +# Copyright 2006 Free Software Foundation, Inc. + diff --git a/gdb-6.5-symbols-overlap.patch b/gdb-6.5-symbols-overlap.patch deleted file mode 100644 index 334a2dd..0000000 --- a/gdb-6.5-symbols-overlap.patch +++ /dev/null @@ -1,189 +0,0 @@ -2006-10-30 Jan Kratochvil - - * gdb/minsyms.c (lookup_minimal_symbol_by_pc_section): Handle - overlapping non-zero sized functions (for glibc `__nanosleep'). - -2006-10-30 Jan Kratochvil - - * gdb.arch/i386-size-overlap.c, gdb.arch/i386-size-overlap.exp: New - file, provide nested (overlapping) functions for the PC resolving. - - -Index: ./gdb/minsyms.c -=================================================================== ---- ./gdb/minsyms.c 17 Oct 2006 20:17:44 -0000 1.47 -+++ ./gdb/minsyms.c 30 Oct 2006 12:41:26 -0000 -@@ -511,6 +511,29 @@ lookup_minimal_symbol_by_pc_section (COR - continue; - } - -+ /* We are behind the current symbol's size. -+ Try the previous symbol - if it is non-zero sized one it -+ may overlap the current one and reach our PC. -+ It occurs for GNU/Linux glibc `__nanosleep' overlapping -+ later `__nanosleep_nocancel' with PC at 0077ec66: -+ Num: Value Size Type Bind Vis Ndx Name -+ 7247: 0077ec20 124 FUNC WEAK DEFAULT 11 __nanosleep -+ 4651: 0077ec2a 32 FUNC LOCAL DEFAULT 11 __nanosleep_nocancel -+ Test `gdb.arch/i386-size' + `gdb.arch/i386-unwind'. -+ Limit it only for the overlapping cases as we could harm -+ the zero-sized symbols detection logic around. -+ */ -+ if (hi > 0 -+ && MSYMBOL_SIZE (&msymbol[hi]) != 0 -+ && pc >= (SYMBOL_VALUE_ADDRESS (&msymbol[hi]) -+ + MSYMBOL_SIZE (&msymbol[hi])) -+ && pc < (SYMBOL_VALUE_ADDRESS (&msymbol[hi - 1]) -+ + MSYMBOL_SIZE (&msymbol[hi - 1]))) -+ { -+ hi--; -+ continue; -+ } -+ - /* Otherwise, this symbol must be as good as we're going - to get. */ - break; -Index: ./gdb/testsuite/gdb.arch/i386-size-overlap.c -=================================================================== ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.arch/i386-size-overlap.c 30 Oct 2006 12:41:35 -0000 -@@ -0,0 +1,53 @@ -+/* Overlapping symbol sizes test program. -+ -+ Copyright 2006 Free Software Foundation, Inc. -+ -+ This file is part of GDB. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. */ -+ -+#ifdef SYMBOL_PREFIX -+#define SYMBOL(str) SYMBOL_PREFIX #str -+#else -+#define SYMBOL(str) #str -+#endif -+ -+void -+trap (void) -+{ -+ asm ("int $0x03"); -+} -+ -+/* Jump from a function with its symbol size set, to a function -+ named by a local label. GDB should report the `main' function -+ even for the rest, after the global `inner' ends. */ -+ -+asm(".text\n" -+ " .align 8\n" -+ " .globl " SYMBOL (main) "\n" -+ SYMBOL (main) ":\n" -+ " pushl %ebp\n" -+ " mov %esp, %ebp\n" -+ " call .Lfunc\n" -+ " ret\n" -+ SYMBOL (inner) ":\n" -+ " ret\n" -+ " .size " SYMBOL (inner) ", .-" SYMBOL (inner) "\n" -+ ".Lfunc:\n" -+ " pushl %ebp\n" -+ " mov %esp, %ebp\n" -+ " call " SYMBOL (trap) "\n" -+ " .size " SYMBOL (main) ", .-" SYMBOL (main) "\n"); -Index: gdb/testsuite/gdb.arch/i386-size-overlap.exp -=================================================================== -RCS file: gdb/testsuite/gdb.arch/i386-size-overlap.exp -diff -N ./gdb/testsuite/gdb.arch/i386-size-overlap.exp ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.arch/i386-size-overlap.exp 30 Oct 2006 12:41:35 -0000 -@@ -0,0 +1,79 @@ -+# Copyright 2006 Free Software Foundation, Inc. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, write to the Free Software -+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+# Please email any bugs, comments, and/or additions to this file to: -+# bug-gdb@gnu.org -+ -+# This file is part of the gdb testsuite. -+ -+if $tracelevel { -+ strace $tracelevel -+} -+ -+# Test that GDB can handle overlapping sizes of symbols. -+ -+if ![istarget "i?86-*-*"] then { -+ verbose "Skipping i386 unwinder tests." -+ return -+} -+ -+set testfile "i386-size-overlap" -+set srcfile ${testfile}.c -+set binfile ${objdir}/${subdir}/${testfile} -+ -+# some targets have leading underscores on assembly symbols. -+# TODO: detect this automatically -+set additional_flags "" -+if [istarget "i?86-*-cygwin*"] then { -+ set additional_flags "additional_flags=-DSYMBOL_PREFIX=\"_\"" -+} -+ -+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \ -+ executable [list debug $additional_flags]] != "" } { -+ untested "i386-size" -+ return -1 -+} -+ -+gdb_exit -+gdb_start -+gdb_reinitialize_dir $srcdir/$subdir -+gdb_load ${binfile} -+ -+# We use gdb_run_cmd so this stands a chance to work for remote -+# targets too. -+gdb_run_cmd -+ -+gdb_expect { -+ -re "Program received signal SIGTRAP.*$gdb_prompt $" { -+ pass "run past main" -+ } -+ -re ".*$gdb_prompt $" { -+ fail "run past main" -+ } -+ timeout { -+ fail "run past main (timeout)" -+ } -+} -+ -+set message "backtrace shows the outer function" -+gdb_test_multiple "backtrace 10" $message { -+ -re "#1\[ \t]*$hex in inner.*$gdb_prompt $" { -+ fail $message -+ } -+ -re "#1\[ \t]*$hex in main.*$gdb_prompt $" { -+ pass $message -+ } -+} diff --git a/gdb-6.5-testsuite-log.patch b/gdb-6.5-testsuite-log.patch deleted file mode 100644 index 341d067..0000000 --- a/gdb-6.5-testsuite-log.patch +++ /dev/null @@ -1,43 +0,0 @@ -2007-01-13 Jan Kratochvil - - * lib/gdb.exp (get_compiler_info): Cope with nondefault output logs. - - -diff -u -rupN gdb-6.5-ppc/gdb/testsuite/lib/gdb.exp gdb-6.5/gdb/testsuite/lib/gdb.exp ---- gdb-6.5-ppc/gdb/testsuite/lib/gdb.exp 2007-01-12 14:33:26.000000000 -0500 -+++ gdb-6.5/gdb/testsuite/lib/gdb.exp 2007-01-12 21:15:02.000000000 -0500 -@@ -1351,9 +1351,10 @@ proc get_compiler_info {binfile args} { - - # Run $ifile through the right preprocessor. - # Toggle gdb.log to keep the compiler output out of the log. -+ set log_old [log_file -info] - log_file - set cppout [ gdb_compile "${ifile}" "" preprocess [list "$args" quiet] ] -- log_file -a "$outdir/$tool.log" -+ eval "log_file $log_old" - - # Eval the output. - set unknown 0 - - -2007-01-14 Jan Kratochvil - - * lib/gdb.exp: Abort on missing `site.exp'. - - -diff -u -rup gdb-6.5-orig/gdb/testsuite/lib/gdb.exp gdb-6.5/gdb/testsuite/lib/gdb.exp ---- gdb-6.5-orig/gdb/testsuite/lib/gdb.exp 2006-12-17 11:59:42.000000000 +0100 -+++ gdb-6.5/gdb/testsuite/lib/gdb.exp 2007-01-14 16:27:03.000000000 +0100 -@@ -22,6 +22,12 @@ - # need to be modified for any target, it can be done with a variable - # or by passing arguments. - -+if {$tool == ""} { -+ # Tests would fail, logs on get_compiler_info() would be missing. -+ send_error "`site.exp' not found, run `make site.exp'!\n" -+ exit 2 -+} -+ - load_lib libgloss.exp - - global GDB diff --git a/gdb-6.6-bfd-core-dump_elf_headers.patch b/gdb-6.6-bfd-core-dump_elf_headers.patch deleted file mode 100644 index 083fd8c..0000000 --- a/gdb-6.6-bfd-core-dump_elf_headers.patch +++ /dev/null @@ -1,116 +0,0 @@ -Compatibility with: linux-2.6-elf-core-sysctl.patch -fs.binfmt_elf.core_dump_elf_headers=1 - -2007-08-07 Alan Modra - - * elf.c: (_bfd_elf_make_section_from_phdr): Properly handle - bss segments. - ---- ./bfd/elf.c 6 Aug 2007 18:35:18 -0000 1.405 -+++ ./bfd/elf.c 6 Aug 2007 22:53:27 -0000 1.406 -@@ -2223,7 +2223,7 @@ _bfd_elf_new_section_hook (bfd *abfd, as - for the single program segment. The first has the length specified by - the file size of the segment, and the second has the length specified - by the difference between the two sizes. In effect, the segment is split -- into it's initialized and uninitialized parts. -+ into its initialized and uninitialized parts. - - */ - -@@ -2242,40 +2242,46 @@ _bfd_elf_make_section_from_phdr (bfd *ab - split = ((hdr->p_memsz > 0) - && (hdr->p_filesz > 0) - && (hdr->p_memsz > hdr->p_filesz)); -- sprintf (namebuf, "%s%d%s", typename, index, split ? "a" : ""); -- len = strlen (namebuf) + 1; -- name = bfd_alloc (abfd, len); -- if (!name) -- return FALSE; -- memcpy (name, namebuf, len); -- newsect = bfd_make_section (abfd, name); -- if (newsect == NULL) -- return FALSE; -- newsect->vma = hdr->p_vaddr; -- newsect->lma = hdr->p_paddr; -- newsect->size = hdr->p_filesz; -- newsect->filepos = hdr->p_offset; -- newsect->flags |= SEC_HAS_CONTENTS; -- newsect->alignment_power = bfd_log2 (hdr->p_align); -- if (hdr->p_type == PT_LOAD) -+ -+ if (hdr->p_filesz > 0) - { -- newsect->flags |= SEC_ALLOC; -- newsect->flags |= SEC_LOAD; -- if (hdr->p_flags & PF_X) -+ sprintf (namebuf, "%s%d%s", typename, index, split ? "a" : ""); -+ len = strlen (namebuf) + 1; -+ name = bfd_alloc (abfd, len); -+ if (!name) -+ return FALSE; -+ memcpy (name, namebuf, len); -+ newsect = bfd_make_section (abfd, name); -+ if (newsect == NULL) -+ return FALSE; -+ newsect->vma = hdr->p_vaddr; -+ newsect->lma = hdr->p_paddr; -+ newsect->size = hdr->p_filesz; -+ newsect->filepos = hdr->p_offset; -+ newsect->flags |= SEC_HAS_CONTENTS; -+ newsect->alignment_power = bfd_log2 (hdr->p_align); -+ if (hdr->p_type == PT_LOAD) - { -- /* FIXME: all we known is that it has execute PERMISSION, -- may be data. */ -- newsect->flags |= SEC_CODE; -+ newsect->flags |= SEC_ALLOC; -+ newsect->flags |= SEC_LOAD; -+ if (hdr->p_flags & PF_X) -+ { -+ /* FIXME: all we known is that it has execute PERMISSION, -+ may be data. */ -+ newsect->flags |= SEC_CODE; -+ } -+ } -+ if (!(hdr->p_flags & PF_W)) -+ { -+ newsect->flags |= SEC_READONLY; - } -- } -- if (!(hdr->p_flags & PF_W)) -- { -- newsect->flags |= SEC_READONLY; - } - -- if (split) -+ if (hdr->p_memsz > hdr->p_filesz) - { -- sprintf (namebuf, "%s%db", typename, index); -+ bfd_vma align; -+ -+ sprintf (namebuf, "%s%d%s", typename, index, split ? "b" : ""); - len = strlen (namebuf) + 1; - name = bfd_alloc (abfd, len); - if (!name) -@@ -2287,8 +2293,21 @@ _bfd_elf_make_section_from_phdr (bfd *ab - newsect->vma = hdr->p_vaddr + hdr->p_filesz; - newsect->lma = hdr->p_paddr + hdr->p_filesz; - newsect->size = hdr->p_memsz - hdr->p_filesz; -+ newsect->filepos = hdr->p_offset + hdr->p_filesz; -+ align = newsect->vma & -newsect->vma; -+ if (align == 0 || align > hdr->p_align) -+ align = hdr->p_align; -+ newsect->alignment_power = bfd_log2 (align); - if (hdr->p_type == PT_LOAD) - { -+ /* Hack for gdb. Segments that have not been modified do -+ not have their contents written to a core file, on the -+ assumption that a debugger can find the contents in the -+ executable. We flag this case by setting the fake -+ section size to zero. Note that "real" bss sections will -+ always have their contents dumped to the core file. */ -+ if (bfd_get_format (abfd) == bfd_core) -+ newsect->size = 0; - newsect->flags |= SEC_ALLOC; - if (hdr->p_flags & PF_X) - newsect->flags |= SEC_CODE; diff --git a/gdb-6.6-buildid-locate.patch b/gdb-6.6-buildid-locate.patch index 920b27d..fc106af 100644 --- a/gdb-6.6-buildid-locate.patch +++ b/gdb-6.6-buildid-locate.patch @@ -1,7 +1,14 @@ -diff -u -rup gdb-6.6-orig/gdb/Makefile.in gdb-6.6/gdb/Makefile.in ---- gdb-6.6-orig/gdb/Makefile.in 2007-08-28 15:31:19.000000000 +0200 -+++ gdb-6.6/gdb/Makefile.in 2007-08-28 15:32:40.000000000 +0200 -@@ -1917,7 +1917,8 @@ corelow.o: corelow.c $(defs_h) $(arch_ut +[base] + +2007-10-16 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/Makefile.in +=================================================================== +--- gdb-6.7.orig/gdb/Makefile.in 2007-10-16 16:19:18.000000000 +0200 ++++ gdb-6.7/gdb/Makefile.in 2007-10-16 16:42:34.000000000 +0200 +@@ -1932,7 +1932,8 @@ corelow.o: corelow.c $(defs_h) $(arch_ut $(inferior_h) $(symtab_h) $(command_h) $(bfd_h) $(target_h) \ $(gdbcore_h) $(gdbthread_h) $(regcache_h) $(regset_h) $(symfile_h) \ $(exec_h) $(readline_h) $(gdb_assert_h) \ @@ -9,22 +16,23 @@ diff -u -rup gdb-6.6-orig/gdb/Makefile.in gdb-6.6/gdb/Makefile.in + $(exceptions_h) $(solib_h) $(auxv_h) $(elf_common_h) $(objfiles_h) \ + $(gdbcmd_h) core-regset.o: core-regset.c $(defs_h) $(command_h) $(gdbcore_h) \ - $(inferior_h) $(target_h) $(gdb_string_h) $(gregset_h) + $(inferior_h) $(target_h) $(regcache_h) $(gdb_string_h) $(gregset_h) cp-abi.o: cp-abi.c $(defs_h) $(value_h) $(cp_abi_h) $(command_h) $(gdbcmd_h) \ -@@ -2785,7 +2786,8 @@ symfile.o: symfile.c $(defs_h) $(bfdlink +@@ -2769,7 +2770,8 @@ symfile.o: symfile.c $(defs_h) $(bfdlink $(gdb_stabs_h) $(gdb_obstack_h) $(completer_h) $(bcache_h) \ $(hashtab_h) $(readline_h) $(gdb_assert_h) $(block_h) \ $(gdb_string_h) $(gdb_stat_h) $(observer_h) $(exec_h) \ -- $(parser_defs_h) $(elf_bfd_h) -+ $(parser_defs_h) $(elf_bfd_h) $(gdb_stdint_h) $(libbfd_h) $(elf_bfd_h) \ -+ $(elf_external_h) +- $(parser_defs_h) $(varobj_h) $(elf_bfd_h) ++ $(parser_defs_h) $(varobj_h) $(elf_bfd_h) $(gdb_stdint_h) $(libbfd_h) \ ++ $(elf_bfd_h) $(elf_external_h) symfile-mem.o: symfile-mem.c $(defs_h) $(symtab_h) $(gdbcore_h) \ $(objfiles_h) $(exceptions_h) $(gdbcmd_h) $(target_h) $(value_h) \ $(symfile_h) $(observer_h) $(auxv_h) $(elf_common_h) -diff -u -rup gdb-6.6-orig/gdb/corelow.c gdb-6.6/gdb/corelow.c ---- gdb-6.6-orig/gdb/corelow.c 2006-04-18 21:20:06.000000000 +0200 -+++ gdb-6.6/gdb/corelow.c 2007-08-28 15:31:56.000000000 +0200 -@@ -46,6 +46,10 @@ +Index: gdb-6.7/gdb/corelow.c +=================================================================== +--- gdb-6.7.orig/gdb/corelow.c 2007-09-04 01:06:35.000000000 +0200 ++++ gdb-6.7/gdb/corelow.c 2007-10-16 16:41:50.000000000 +0200 +@@ -44,6 +44,10 @@ #include "gdb_assert.h" #include "exceptions.h" #include "solib.h" @@ -35,7 +43,7 @@ diff -u -rup gdb-6.6-orig/gdb/corelow.c gdb-6.6/gdb/corelow.c #ifndef O_LARGEFILE -@@ -253,6 +257,66 @@ add_to_thread_list (bfd *abfd, asection +@@ -251,6 +255,66 @@ add_to_thread_list (bfd *abfd, asection inferior_ptid = pid_to_ptid (thread_id); /* Yes, make it current */ } @@ -102,7 +110,7 @@ diff -u -rup gdb-6.6-orig/gdb/corelow.c gdb-6.6/gdb/corelow.c /* This routine opens and sets up the core file bfd. */ static void -@@ -417,6 +420,15 @@ core_open (char *filename, int from_tty) +@@ -347,6 +411,15 @@ core_open (char *filename, int from_tty) ontop = !push_target (&core_ops); discard_cleanups (old_chain); @@ -118,7 +126,7 @@ diff -u -rup gdb-6.6-orig/gdb/corelow.c gdb-6.6/gdb/corelow.c /* This is done first, before anything has a chance to query the inferior for information such as symbols. */ post_create_inferior (&core_ops, from_tty); -@@ -662,4 +734,13 @@ _initialize_corelow (void) +@@ -678,4 +751,13 @@ _initialize_corelow (void) if (!coreops_suppress_target) add_target (&core_ops); @@ -132,16 +140,16 @@ diff -u -rup gdb-6.6-orig/gdb/corelow.c gdb-6.6/gdb/corelow.c + show_build_id_core_loads, + &setlist, &showlist); } -diff -u -rup gdb-6.6-orig/gdb/solib-svr4.c gdb-6.6/gdb/solib-svr4.c ---- gdb-6.6-orig/gdb/solib-svr4.c 2007-08-28 15:31:19.000000000 +0200 -+++ gdb-6.6/gdb/solib-svr4.c 2007-08-28 15:34:02.000000000 +0200 -@@ -943,10 +943,35 @@ svr4_current_sos (void) - } - else - { +Index: gdb-6.7/gdb/solib-svr4.c +=================================================================== +--- gdb-6.7.orig/gdb/solib-svr4.c 2007-10-16 15:43:56.000000000 +0200 ++++ gdb-6.7/gdb/solib-svr4.c 2007-10-16 16:44:44.000000000 +0200 +@@ -957,9 +957,35 @@ svr4_current_sos (void) + free_so (new); + else + { - strncpy (new->so_name, buffer, SO_NAME_MAX_PATH_SIZE - 1); - new->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; -- xfree (buffer); - strcpy (new->so_original_name, new->so_name); + struct build_id *build_id; + @@ -175,12 +183,13 @@ diff -u -rup gdb-6.6-orig/gdb/solib-svr4.c gdb-6.6/gdb/solib-svr4.c if (debug_solib) { fprintf_unfiltered (gdb_stdlog, -diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c ---- gdb-6.6-orig/gdb/symfile.c 2007-08-28 15:31:19.000000000 +0200 -+++ gdb-6.6/gdb/symfile.c 2007-08-28 15:36:22.000000000 +0200 -@@ -54,6 +54,9 @@ - #include "exec.h" +Index: gdb-6.7/gdb/symfile.c +=================================================================== +--- gdb-6.7.orig/gdb/symfile.c 2007-10-15 21:42:26.000000000 +0200 ++++ gdb-6.7/gdb/symfile.c 2007-10-16 16:46:30.000000000 +0200 +@@ -53,6 +53,9 @@ #include "parser-defs.h" + #include "varobj.h" #include "elf-bfd.h" +#include "gdb_stdint.h" +#include "libbfd.h" @@ -188,7 +197,7 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c #include #include -@@ -62,6 +65,7 @@ +@@ -61,6 +64,7 @@ #include #include #include @@ -196,7 +205,7 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c int (*deprecated_ui_load_progress_hook) (const char *section, unsigned long num); -@@ -1120,16 +1124,62 @@ symbol_file_clear (int from_tty) +@@ -1238,16 +1242,62 @@ symbol_file_clear (int from_tty) printf_unfiltered (_("No symbol file now.\n")); } @@ -261,7 +270,7 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c { struct build_id *retval; -@@ -1145,6 +1195,348 @@ build_id_bfd_get (bfd *abfd) +@@ -1263,6 +1313,348 @@ build_id_bfd_get (bfd *abfd) return retval; } @@ -610,7 +619,7 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c /* Return if FILENAME has NT_GNU_BUILD_ID matching the CHECK value. */ static int -@@ -1159,7 +1551,7 @@ build_id_verify (const char *filename, s +@@ -1277,7 +1669,7 @@ build_id_verify (const char *filename, s if (abfd == NULL) return 0; @@ -619,9 +628,9 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c if (found == NULL) warning (_("File \"%s\" has no build-id, file skipped"), filename); -@@ -1177,8 +1569,9 @@ build_id_verify (const char *filename, s - - static char *debug_file_directory = NULL; +@@ -1293,8 +1685,9 @@ build_id_verify (const char *filename, s + return retval; + } -static char * -build_id_to_debug_filename (struct build_id *build_id) @@ -631,7 +640,7 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c { char *link, *s, *retval = NULL; gdb_byte *data = build_id->data; -@@ -1186,7 +1579,9 @@ build_id_to_debug_filename (struct build +@@ -1302,7 +1695,9 @@ build_id_to_debug_filename (struct build /* DEBUG_FILE_DIRECTORY/.build-id/ab/cdef */ link = xmalloc (strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1 @@ -642,7 +651,7 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c s = link + sprintf (link, "%s/.build-id/", debug_file_directory); if (size > 0) { -@@ -1197,12 +1592,14 @@ build_id_to_debug_filename (struct build +@@ -1313,12 +1708,14 @@ build_id_to_debug_filename (struct build *s++ = '/'; while (size-- > 0) s += sprintf (s, "%02x", (unsigned) *data++); @@ -659,7 +668,7 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c if (retval != NULL && !build_id_verify (retval, build_id)) { -@@ -1210,6 +1607,11 @@ build_id_to_debug_filename (struct build +@@ -1326,6 +1723,11 @@ build_id_to_debug_filename (struct build retval = NULL; } @@ -671,7 +680,7 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c return retval; } -@@ -1305,23 +1707,27 @@ find_separate_debug_file (struct objfile +@@ -1423,23 +1825,27 @@ find_separate_debug_file (struct objfile unsigned long crc32; int i; struct build_id *build_id; @@ -704,7 +713,7 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c } basename = get_debug_link_info (objfile, &crc32); -@@ -1329,7 +1735,10 @@ find_separate_debug_file (struct objfile +@@ -1447,7 +1853,10 @@ find_separate_debug_file (struct objfile if (basename == NULL) /* There's no separate debug info, hence there's no way we could load it => no warning. */ @@ -716,7 +725,7 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c dir = xstrdup (objfile->name); -@@ -1358,6 +1767,7 @@ find_separate_debug_file (struct objfile +@@ -1476,6 +1885,7 @@ find_separate_debug_file (struct objfile if (separate_debug_file_exists (debugfile, crc32, objfile->name)) { @@ -724,7 +733,7 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c xfree (basename); xfree (dir); return xstrdup (debugfile); -@@ -1371,6 +1781,7 @@ find_separate_debug_file (struct objfile +@@ -1489,6 +1899,7 @@ find_separate_debug_file (struct objfile if (separate_debug_file_exists (debugfile, crc32, objfile->name)) { @@ -732,7 +741,7 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c xfree (basename); xfree (dir); return xstrdup (debugfile); -@@ -1384,11 +1795,20 @@ find_separate_debug_file (struct objfile +@@ -1502,6 +1913,7 @@ find_separate_debug_file (struct objfile if (separate_debug_file_exists (debugfile, crc32, objfile->name)) { @@ -740,8 +749,18 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c xfree (basename); xfree (dir); return xstrdup (debugfile); +@@ -1521,6 +1933,7 @@ find_separate_debug_file (struct objfile + + if (separate_debug_file_exists (debugfile, crc32, objfile->name)) + { ++ xfree (build_id_filename); + xfree (canon_name); + xfree (basename); + xfree (dir); +@@ -1528,6 +1941,14 @@ find_separate_debug_file (struct objfile + } } - + + if (build_id_filename != NULL) + { + fprintf_unfiltered (gdb_stdlog, @@ -750,10 +769,10 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c + xfree (build_id_filename); + } + - xfree (basename); - xfree (dir); - return NULL; -@@ -4024,4 +4443,12 @@ the global debug-file directory prepende + if (canon_name) + xfree (canon_name); + +@@ -4223,4 +4644,12 @@ the global debug-file directory prepende NULL, show_debug_file_directory, &setlist, &showlist); @@ -766,12 +785,13 @@ diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c + show_build_id_debug, + &setdebuglist, &showdebuglist); } -diff -u -rup gdb-6.6-orig/gdb/symfile.h gdb-6.6/gdb/symfile.h ---- gdb-6.6-orig/gdb/symfile.h 2005-12-17 23:34:03.000000000 +0100 -+++ gdb-6.6/gdb/symfile.h 2007-08-28 15:31:56.000000000 +0200 -@@ -322,6 +322,12 @@ extern bfd_byte *symfile_relocate_debug_ - extern void dwarf_build_psymtabs (struct objfile *, int, file_ptr, - unsigned int, file_ptr, unsigned int); +Index: gdb-6.7/gdb/symfile.h +=================================================================== +--- gdb-6.7.orig/gdb/symfile.h 2007-09-24 23:48:05.000000000 +0200 ++++ gdb-6.7/gdb/symfile.h 2007-10-16 16:41:50.000000000 +0200 +@@ -353,6 +353,12 @@ extern int symfile_map_offsets_to_segmen + struct symfile_segment_data *get_symfile_segment_data (bfd *abfd); + void free_symfile_segment_data (struct symfile_segment_data *data); +/* build-id support. */ +struct build_id; diff --git a/gdb-6.6-buildid-verify.patch b/gdb-6.6-buildid-verify.patch deleted file mode 100644 index c806ad7..0000000 --- a/gdb-6.6-buildid-verify.patch +++ /dev/null @@ -1,715 +0,0 @@ -http://sources.redhat.com/ml/gdb-patches/2007-08/msg00478.html -v2 -[ Backported for GDB-6.6. ] - -2007-08-26 Jan Kratochvil - - * Makefile.in (symfile.o): Update dependencies. - * symfile.c (symbol_file_add_with_addrs_or_offsets): Initialize the - DEBUGFILE variable. FIND_SEPARATE_DEBUG_FILE called only if !PSYMTABS. - (struct build_id): New structure. - (build_id_bfd_get, build_id_verify, build_id_to_debug_filename): New. - (find_separate_debug_file): New variable BUILD_ID. - Call BUILD_ID_BFD_GET with BUILD_ID_TO_DEBUG_FILENAME as the first try. - -2007-08-26 Jan Kratochvil - - * lib/gdb.exp (build_id_debug_filename_get): New function. - * gdb.base/sepdebug.exp: Reflect the changes in the heading comment. - Remove the generate DEBUG file for the future testcase runs. - New testcase for the NT_GNU_BUILD_ID retrieval. - Move the final testing step to ... - (test_different_dir): ... a new function. - New parameter XFAIL to XFAIL all the tests performed. - New parameter TEST_DIFFERENT_DIR parametrizing the directory. - New parameter TYPE to PF_PREFIX all the tests performed. - -2007-08-26 Jan Kratochvil - - * gdb.texinfo (Separate Debug Files): Included a BUILD ID description. - Enlisted BUILD ID to the debug file searching example. - Included a BUILD ID `.note.gnu.build-id' section description. - Updated/added the debug files splitting instructions for OBJCOPY. - -diff -u -rup gdb-6.6-orig/gdb/Makefile.in gdb-6.6/gdb/Makefile.in ---- gdb-6.6-orig/gdb/Makefile.in 2007-08-28 14:32:18.000000000 +0200 -+++ gdb-6.6/gdb/Makefile.in 2007-08-28 14:33:56.000000000 +0200 -@@ -2785,7 +2785,7 @@ symfile.o: symfile.c $(defs_h) $(bfdlink - $(gdb_stabs_h) $(gdb_obstack_h) $(completer_h) $(bcache_h) \ - $(hashtab_h) $(readline_h) $(gdb_assert_h) $(block_h) \ - $(gdb_string_h) $(gdb_stat_h) $(observer_h) $(exec_h) \ -- $(parser_defs_h) -+ $(parser_defs_h) $(elf_bfd_h) - symfile-mem.o: symfile-mem.c $(defs_h) $(symtab_h) $(gdbcore_h) \ - $(objfiles_h) $(exceptions_h) $(gdbcmd_h) $(target_h) $(value_h) \ - $(symfile_h) $(observer_h) $(auxv_h) $(elf_common_h) -diff -u -rup gdb-6.6-orig/gdb/doc/gdb.texinfo gdb-6.6/gdb/doc/gdb.texinfo ---- gdb-6.6-orig/gdb/doc/gdb.texinfo 2007-08-28 14:32:18.000000000 +0200 -+++ gdb-6.6/gdb/doc/gdb.texinfo 2007-08-28 14:33:03.000000000 +0200 -@@ -11857,18 +11857,32 @@ than the executable code itself --- some - information for their executables in separate files, which users can - install only when they need to debug a problem. - --If an executable's debugging information has been extracted to a --separate file, the executable should contain a @dfn{debug link} giving --the name of the debugging information file (with no directory --components), and a checksum of its contents. (The exact form of a --debug link is described below.) If the full name of the directory --containing the executable is @var{execdir}, and the executable has a --debug link that specifies the name @var{debugfile}, then @value{GDBN} --will automatically search for the debugging information file in three --places: -+There are two identificators how the separate debug file may be found: - - @itemize @bullet - @item -+@dfn{debug link} is present only in the executable if its debug information has -+been split out. It is not present in the separate debug file. It provides the -+separate debug file filename, usually as @file{executable.debug}. -+@item -+@dfn{build id} is present in all the files (if the operating system supports -+it). The executable file and its separate debug file have the same unique -+@dfn{build id} content. -+@end itemize -+ -+If the full name of the directory containing the executable is @var{execdir}, -+the executable has a debug link that specifies the name @var{debugfile}, -+@var{bu} is the first byte (two hexadecimal characters) of the build id -+content, @var{ild-id} are the remaining bytes / hexadecimal characters and -+@var{globaldebugdir} is the global debug file directory then @value{GDBN} will -+automatically search for the debugging information file in four places: -+ -+@itemize @bullet -+@item -+a specific file in the subdirectory of the global debug file directory -+according to the @dfn{build id} content (if present), the file tried is -+@file{@var{globaldebugdir}/.debug-id/@var{bu}/@var{ild-id}.debug}. -+@item - the directory containing the executable file (that is, it will look - for a file named @file{@var{execdir}/@var{debugfile}}, - @item -@@ -11883,15 +11897,17 @@ executable's full path, and the name fro - @end itemize - @noindent - @value{GDBN} checks under each of these names for a debugging --information file whose checksum matches that given in the link, and --reads the debugging information from the first one it finds. -- --So, for example, if you ask @value{GDBN} to debug @file{/usr/bin/ls}, --which has a link containing the name @file{ls.debug}, and the global --debug directory is @file{/usr/lib/debug}, then @value{GDBN} will look --for debug information in @file{/usr/bin/ls.debug}, --@file{/usr/bin/.debug/ls.debug}, and --@file{/usr/lib/debug/usr/bin/ls.debug}. -+information file with build id content matching the build id content of the -+executable file - or - whose checksum matches the one given in the link in the -+debug link case. In each case @value{GDBN} reads the debugging information -+from the first debug file it finds. -+ -+So, for example, if you ask @value{GDBN} to debug @file{/usr/bin/ls}, which has -+a @dfn{debug link} containing the name @file{ls.debug}, its @dfn{build id} -+value in hexadecimal is @code{abcdef} and the global debug directory is -+@file{/usr/lib/debug}, then @value{GDBN} will look for debug information in -+@file{/usr/lib/debug/.build-id/ab/cdef.debug}, @file{/usr/bin/ls.debug}, -+@file{/usr/bin/.debug/ls.debug}, and @file{/usr/lib/debug/usr/bin/ls.debug}. - - You can set the global debugging info directory's name, and view the - name @value{GDBN} is currently using. -@@ -11933,6 +11949,16 @@ Any executable file format can carry a d - contain a section named @code{.gnu_debuglink} with the contents - described above. - -+@cindex @code{.note.gnu.build-id} sections -+@cindex build id -+Build id is a special section of the executable file named -+@code{.note.gnu.build-id}. The section contains unique identification hash -+derived from the built files - it remains the same across multiple builds of -+the same build tree. The default algorithm SHA1 produces 160 bits (40 -+hexadecimal characters) of the content. The same section and value is present -+in the original built binary with symbols, in its stripped variant and in the -+separate debug information file. -+ - The debugging information file itself should be an ordinary - executable, containing a full set of linker symbols, sections, and - debugging information. The sections of the debugging information file -@@ -11940,18 +11966,21 @@ should have the same names, addresses an - but they need not contain any data --- much like a @code{.bss} section - in an ordinary executable. - --As of December 2002, there is no standard GNU utility to produce --separated executable / debugging information file pairs. Ulrich --Drepper's @file{elfutils} package, starting with version 0.53, --contains a version of the @code{strip} command such that the command --@kbd{strip foo -f foo.debug} removes the debugging information from --the executable file @file{foo}, places it in the file --@file{foo.debug}, and leaves behind a debug link in @file{foo}. -- --Since there are many different ways to compute CRC's (different --polynomials, reversals, byte ordering, etc.), the simplest way to --describe the CRC used in @code{.gnu_debuglink} sections is to give the --complete code for a function that computes it: -+@sc{gnu} binary utilities contain the @samp{objcopy} utility able to produce -+the separated executable / debugging information file pairs by commands -+@kbd{objcopy --only-keep-debug foo foo.debug; strip -g foo; objcopy -+--add-gnu-debuglink="foo.debug" "foo"}. These commands remove the debugging -+information from the executable file @file{foo}, place it in the file -+@file{foo.debug}, and leave behind a debug link in @file{foo}. Ulrich -+Drepper's @file{elfutils} package, starting with version 0.53, contains -+a version of the @code{strip} command such that the command @kbd{strip foo -f -+foo.debug} has the same functionality as the three commands above. -+ -+Since there are many different ways to compute CRC's for the debug link -+(different polynomials, reversals, byte ordering, etc.). This computation does -+not apply to the build id section. The simplest way to describe the CRC used -+in @code{.gnu_debuglink} sections is to give the complete code for a function -+that computes it: - - @kindex gnu_debuglink_crc32 - @smallexample -diff -u -rup gdb-6.6-orig/gdb/symfile.c gdb-6.6/gdb/symfile.c ---- gdb-6.6-orig/gdb/symfile.c 2007-08-28 14:32:17.000000000 +0200 -+++ gdb-6.6/gdb/symfile.c 2007-08-28 14:34:12.000000000 +0200 -@@ -53,6 +53,7 @@ - #include "observer.h" - #include "exec.h" - #include "parser-defs.h" -+#include "elf-bfd.h" - - #include - #include -@@ -904,7 +905,7 @@ symbol_file_add_with_addrs_or_offsets (b - { - struct objfile *objfile; - struct partial_symtab *psymtab; -- char *debugfile; -+ char *debugfile = NULL; - struct section_addr_info *orig_addrs = NULL; - struct cleanup *my_cleanups; - const char *name = bfd_get_filename (abfd); -@@ -968,7 +969,11 @@ symbol_file_add_with_addrs_or_offsets (b - } - } - -- debugfile = find_separate_debug_file (objfile); -+ /* If the file has its own symbol tables it has no separate debug info. -+ `.dynsym'/`.symtab' go to MSYMBOLS, `.debug_info' goes to SYMTABS/PSYMTABS. -+ `.gnu_debuglink' may no longer be present with `.note.gnu.build-id'. */ -+ if (objfile->psymtabs == NULL) -+ debugfile = find_separate_debug_file (objfile); - if (debugfile) - { - if (addrs != NULL) -@@ -1115,6 +1120,99 @@ symbol_file_clear (int from_tty) - printf_unfiltered (_("No symbol file now.\n")); - } - -+struct build_id -+ { -+ size_t size; -+ gdb_byte data[1]; -+ }; -+ -+/* Locate NT_GNU_BUILD_ID from ABFD and return its content. */ -+ -+static struct build_id * -+build_id_bfd_get (bfd *abfd) -+{ -+ struct build_id *retval; -+ -+ if (!bfd_check_format (abfd, bfd_object) -+ || bfd_get_flavour (abfd) != bfd_target_elf_flavour -+ || elf_tdata (abfd)->build_id == NULL) -+ return NULL; -+ -+ retval = xmalloc (sizeof *retval - 1 + elf_tdata (abfd)->build_id_size); -+ retval->size = elf_tdata (abfd)->build_id_size; -+ memcpy (retval->data, elf_tdata (abfd)->build_id, retval->size); -+ -+ return retval; -+} -+ -+/* Return if FILENAME has NT_GNU_BUILD_ID matching the CHECK value. */ -+ -+static int -+build_id_verify (const char *filename, struct build_id *check) -+{ -+ bfd *abfd; -+ struct build_id *found = NULL; -+ int retval = 0; -+ -+ /* We expect to be silent on the non-existing files. */ -+ abfd = bfd_openr (filename, gnutarget); -+ if (abfd == NULL) -+ return 0; -+ -+ found = build_id_bfd_get (abfd); -+ -+ if (found == NULL) -+ warning (_("File \"%s\" has no build-id, file skipped"), filename); -+ else if (found->size != check->size -+ || memcmp (found->data, check->data, found->size) != 0) -+ warning (_("File \"%s\" has a different build-id, file skipped"), filename); -+ else -+ retval = 1; -+ -+ if (!bfd_close (abfd)) -+ warning (_("cannot close \"%s\": %s"), filename, -+ bfd_errmsg (bfd_get_error ())); -+ return retval; -+} -+ -+static char *debug_file_directory = NULL; -+ -+static char * -+build_id_to_debug_filename (struct build_id *build_id) -+{ -+ char *link, *s, *retval = NULL; -+ gdb_byte *data = build_id->data; -+ size_t size = build_id->size; -+ -+ /* DEBUG_FILE_DIRECTORY/.build-id/ab/cdef */ -+ link = xmalloc (strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1 -+ + 2 * size + (sizeof ".debug" - 1) + 1); -+ s = link + sprintf (link, "%s/.build-id/", debug_file_directory); -+ if (size > 0) -+ { -+ size--; -+ s += sprintf (s, "%02x", (unsigned) *data++); -+ } -+ if (size > 0) -+ *s++ = '/'; -+ while (size-- > 0) -+ s += sprintf (s, "%02x", (unsigned) *data++); -+ strcpy (s, ".debug"); -+ -+ /* lrealpath() is expensive even for the usually non-existent files. */ -+ if (access (link, F_OK) == 0) -+ retval = lrealpath (link); -+ xfree (link); -+ -+ if (retval != NULL && !build_id_verify (retval, build_id)) -+ { -+ xfree (retval); -+ retval = NULL; -+ } -+ -+ return retval; -+} -+ - static char * - get_debug_link_info (struct objfile *objfile, unsigned long *crc32_out) - { -@@ -1278,7 +1280,6 @@ separate_debug_file_exists (const char * - return 1; - } - --static char *debug_file_directory = NULL; - static void - show_debug_file_directory (struct ui_file *file, int from_tty, - struct cmd_list_element *c, const char *value) -@@ -1207,6 +1303,25 @@ find_separate_debug_file (struct objfile - bfd_size_type debuglink_size; - unsigned long crc32; - int i; -+ struct build_id *build_id; -+ -+ build_id = build_id_bfd_get (objfile->obfd); -+ if (build_id != NULL) -+ { -+ char *build_id_name; -+ -+ build_id_name = build_id_to_debug_filename (build_id); -+ free (build_id); -+ /* Prevent looping on a stripped .debug file. */ -+ if (build_id_name != NULL && strcmp (build_id_name, objfile->name) == 0) -+ { -+ warning (_("\"%s\": separate debug info file has no debug info"), -+ build_id_name); -+ xfree (build_id_name); -+ } -+ else if (build_id_name != NULL) -+ return build_id_name; -+ } - - basename = get_debug_link_info (objfile, &crc32); - -diff -u -rup gdb-6.6-orig/gdb/testsuite/gdb.base/sepdebug.exp gdb-6.6/gdb/testsuite/gdb.base/sepdebug.exp ---- gdb-6.6-orig/gdb/testsuite/gdb.base/sepdebug.exp 2007-08-28 14:32:17.000000000 +0200 -+++ gdb-6.6/gdb/testsuite/gdb.base/sepdebug.exp 2007-08-28 14:46:38.000000000 +0200 -@@ -21,11 +21,14 @@ - - # Based on break.exp, written by Rob Savoye. (rob@cygnus.com) - # Modified to test gdb's handling of separate debug info files. -+# Modified to test gdb's handling of a debug-id retrieval. - - # This file has two parts. The first is testing that gdb behaves - # normally after reading in an executable and its corresponding - # separate debug file. The second moves the .debug file to a different - # location and tests the "set debug-file-directory" command. -+# The third is for testing build-id retrievel by finding the separate -+# ".debug-id/ab/cdef.debug" file. - - - if $tracelevel then { -@@ -851,110 +854,6 @@ proc test_next_with_recursion {} { - test_next_with_recursion - - --#******** -- --# now move the .debug file to a different location so that we can test --# the "set debug-file-directory" command. -- --remote_exec build "mv ${objdir}/${subdir}/.debug/${testfile}.debug ${objdir}/${subdir}" --gdb_exit --gdb_start --gdb_reinitialize_dir $srcdir/$subdir --gdb_test "set debug-file-directory ${objdir}/${subdir}" ".*" "set separate debug location" --gdb_load ${binfile} -- --if [target_info exists gdb_stub] { -- gdb_step_for_stub; --} -- --# --# test break at function --# --gdb_test "break main" \ -- "Breakpoint.*at.* file .*$srcfile, line.*" \ -- "breakpoint function, optimized file" -- --# --# test break at function --# --gdb_test "break marker4" \ -- "Breakpoint.*at.* file .*$srcfile, line.*" \ -- "breakpoint small function, optimized file" -- --# --# run until the breakpoint at main is hit. For non-stubs-using targets. --# --if ![target_info exists use_gdb_stub] { -- if [istarget "*-*-vxworks*"] then { -- send_gdb "run vxmain \"2\"\n" -- set timeout 120 -- verbose "Timeout is now $timeout seconds" 2 -- } else { -- send_gdb "run\n" -- } -- gdb_expect { -- -re "The program .* has been started already.*y or n. $" { -- send_gdb "y\n" -- exp_continue -- } -- -re "Starting program.*Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$srcfile:$bp_location6.*$bp_location6\[\t \]+if .argc.* \{.*$gdb_prompt $"\ -- { pass "run until function breakpoint, optimized file" } -- -re "Starting program.*Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$gdb_prompt $"\ -- { pass "run until function breakpoint, optimized file (code motion)" } -- -re ".*$gdb_prompt $" { fail "run until function breakpoint, optimized file" } -- timeout { fail "run until function breakpoint, optimized file (timeout)" } -- } --} else { -- if ![target_info exists gdb_stub] { -- gdb_test continue ".*Continuing\\..*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:$bp_location6.*$bp_location6\[\t \]+if .argc.*\{.*" "stub continue, optimized file" -- } --} -- --# --# run until the breakpoint at a small function --# -- --# --# Add a second pass pattern. The behavior differs here between stabs --# and dwarf for one-line functions. Stabs preserves two line symbols --# (one before the prologue and one after) with the same line number, --# but dwarf regards these as duplicates and discards one of them. --# Therefore the address after the prologue (where the breakpoint is) --# has no exactly matching line symbol, and GDB reports the breakpoint --# as if it were in the middle of a line rather than at the beginning. -- --set bp_location13 [gdb_get_line_number "set breakpoint 13 here"] --set bp_location14 [gdb_get_line_number "set breakpoint 14 here"] --send_gdb "continue\n" --gdb_expect { -- -re "Breakpoint $decimal, marker4 \\(d=177601976\\) at .*$srcfile:$bp_location13\[\r\n\]+$bp_location13\[\t \]+void marker4.*" { -- pass "run until breakpoint set at small function, optimized file" -- } -- -re "Breakpoint $decimal, $hex in marker4 \\(d=177601976\\) at .*$srcfile:$bp_location13\[\r\n\]+$bp_location13\[\t \]+void marker4.*" { -- pass "run until breakpoint set at small function, optimized file" -- } -- -re "Breakpoint $decimal, marker4 \\(d=177601976\\) at .*$srcfile:$bp_location14\[\r\n\]+$bp_location14\[\t \]+void marker4.*" { -- # marker4() is defined at line 46 when compiled with -DPROTOTYPES -- pass "run until breakpoint set at small function, optimized file (line bp_location14)" -- } -- -re ".*$gdb_prompt " { -- fail "run until breakpoint set at small function, optimized file" -- } -- timeout { -- fail "run until breakpoint set at small function, optimized file (timeout)" -- } --} -- -- --# Reset the default arguments for VxWorks --if [istarget "*-*-vxworks*"] { -- set timeout 10 -- verbose "Timeout is now $timeout seconds" 2 -- send_gdb "set args main\n" -- gdb_expect -re ".*$gdb_prompt $" {} --} -- -- - # Compile up a second, different, object file. Copy its debug info - # over the top of the new debug info. Note that somewhere in the - # above the "set debug-file-directory" variable is set to -@@ -973,6 +872,7 @@ if [gdb_gnu_strip_debug $binfile] { - unsupported "cannot produce separate debug info files" - return -1 - } -+remote_exec build "cp ${existing_binfile}.debug ${existing_binfile}.debug-backup" - remote_exec build "cp $corrupt_debug_file ${existing_binfile}.debug" - - gdb_exit -@@ -990,3 +890,188 @@ gdb_test_multiple "file $existing_binfil - exp_continue - } - } -+ -+remote_exec build "cp ${existing_binfile}.debug-backup ${existing_binfile}.debug" -+ -+#******** -+ -+proc test_different_dir {type test_different_dir xfail} { -+ global srcdir subdir objdir binfile srcfile timeout gdb_prompt -+ global pf_prefix -+ global bp_location6 decimal hex -+ -+ set pf_prefix "$type:" -+ -+ gdb_exit -+ gdb_start -+ gdb_reinitialize_dir $srcdir/$subdir -+ gdb_test "set debug-file-directory ${test_different_dir}" ".*" "set separate debug location" -+ gdb_load ${binfile} -+ -+ if [target_info exists gdb_stub] { -+ gdb_step_for_stub; -+ } -+ -+ # -+ # test break at function -+ # -+ if {$xfail} { -+ setup_xfail "*-*-*" -+ } -+ gdb_test "break main" \ -+ "Breakpoint.*at.* file .*$srcfile, line.*" \ -+ "breakpoint function, optimized file" -+ -+ # -+ # test break at function -+ # -+ if {$xfail} { -+ setup_xfail "*-*-*" -+ } -+ gdb_test "break marker4" \ -+ "Breakpoint.*at.* file .*$srcfile, line.*" \ -+ "breakpoint small function, optimized file" -+ -+ # -+ # run until the breakpoint at main is hit. For non-stubs-using targets. -+ # -+ gdb_run_cmd -+ if {$xfail} { -+ setup_xfail "*-*-*" -+ } -+ gdb_expect { -+ -re "Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$srcfile:$bp_location6.*$bp_location6\[\t \]+if .argc.* \{.*$gdb_prompt $" { -+ pass "run until function breakpoint, optimized file" -+ } -+ -re "Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$gdb_prompt $" { -+ pass "run until function breakpoint, optimized file (code motion)" -+ } -+ -re "$gdb_prompt $" { -+ fail "run until function breakpoint, optimized file" -+ } -+ timeout { -+ fail "run until function breakpoint, optimized file (timeout)" -+ } -+ } -+ -+ if ![target_info exists use_gdb_stub] { -+ if [istarget "*-*-vxworks*"] then { -+ send_gdb "run vxmain \"2\"\n" -+ set timeout 120 -+ verbose "Timeout is now $timeout seconds" 2 -+ } else { -+ send_gdb "run\n" -+ } -+ if {$xfail} { -+ setup_xfail "*-*-*" -+ } -+ gdb_expect { -+ -re "The program .* has been started already.*y or n. $" { -+ send_gdb "y\n" -+ exp_continue -+ } -+ -re "Starting program.*Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$srcfile:$bp_location6.*$bp_location6\[\t \]+if .argc.* \{.*$gdb_prompt $"\ -+ { pass "run until function breakpoint, optimized file" } -+ -re "Starting program.*Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$gdb_prompt $"\ -+ { pass "run until function breakpoint, optimized file (code motion)" } -+ -re ".*$gdb_prompt $" { fail "run until function breakpoint, optimized file" } -+ timeout { fail "run until function breakpoint, optimized file (timeout)" } -+ } -+ } else { -+ if ![target_info exists gdb_stub] { -+ gdb_test continue ".*Continuing\\..*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:$bp_location6.*$bp_location6\[\t \]+if .argc.*\{.*" "stub continue, optimized file" -+ } -+ } -+ -+ -+ -+ # -+ # run until the breakpoint at a small function -+ # -+ -+ # -+ # Add a second pass pattern. The behavior differs here between stabs -+ # and dwarf for one-line functions. Stabs preserves two line symbols -+ # (one before the prologue and one after) with the same line number, -+ # but dwarf regards these as duplicates and discards one of them. -+ # Therefore the address after the prologue (where the breakpoint is) -+ # has no exactly matching line symbol, and GDB reports the breakpoint -+ # as if it were in the middle of a line rather than at the beginning. -+ -+ set bp_location13 [gdb_get_line_number "set breakpoint 13 here"] -+ set bp_location14 [gdb_get_line_number "set breakpoint 14 here"] -+ send_gdb "continue\n" -+ if {$xfail} { -+ setup_xfail "*-*-*" -+ } -+ gdb_expect { -+ -re "Breakpoint $decimal, marker4 \\(d=177601976\\) at .*$srcfile:$bp_location13\[\r\n\]+$bp_location13\[\t \]+void marker4.*" { -+ pass "run until breakpoint set at small function, optimized file" -+ } -+ -re "Breakpoint $decimal, $hex in marker4 \\(d=177601976\\) at .*$srcfile:$bp_location13\[\r\n\]+$bp_location13\[\t \]+void marker4.*" { -+ pass "run until breakpoint set at small function, optimized file" -+ } -+ -re "Breakpoint $decimal, marker4 \\(d=177601976\\) at .*$srcfile:$bp_location14\[\r\n\]+$bp_location14\[\t \]+void marker4.*" { -+ # marker4() is defined at line 46 when compiled with -DPROTOTYPES -+ pass "run until breakpoint set at small function, optimized file (line bp_location14)" -+ } -+ -re ".*$gdb_prompt " { -+ fail "run until breakpoint set at small function, optimized file" -+ } -+ timeout { -+ fail "run until breakpoint set at small function, optimized file (timeout)" -+ } -+ } -+ -+ -+ # Reset the default arguments for VxWorks -+ if [istarget "*-*-vxworks*"] { -+ set timeout 10 -+ verbose "Timeout is now $timeout seconds" 2 -+ send_gdb "set args main\n" -+ gdb_expect -re ".*$gdb_prompt $" {} -+ } -+ -+ unset pf_prefix -+# proc test_different_dir -+} -+ -+ -+# now move the .debug file to a different location so that we can test -+# the "set debug-file-directory" command. -+ -+remote_exec build "mv ${objdir}/${subdir}/.debug/${testfile}.debug ${objdir}/${subdir}" -+set debugfile "${objdir}/${subdir}/${testfile}.debug" -+ -+test_different_dir debuglink "${objdir}/${subdir}" 0 -+ -+ -+# NT_GNU_BUILD_ID / .note.gnu.build-id test: -+ -+set build_id_debug_filename [build_id_debug_filename_get $binfile] -+if {$build_id_debug_filename eq ""} { -+ unsupported "build-id is not supported by the compiler" -+ -+ # Spare debug files may confuse testsuite runs in the future. -+ remote_exec build "rm -f $debugfile" -+} else { -+ set build_id_debugself_filename [build_id_debug_filename_get $debugfile] -+ set test "build-id support by binutils" -+ set xfail 0 -+ if {$build_id_debugself_filename eq ""} { -+ unsupported $test -+ set xfail 1 -+ } elseif {$build_id_debugself_filename ne $build_id_debug_filename} { -+ fail $test -+ } else { -+ pass $test -+ } -+ -+ file mkdir [file dirname ${objdir}/${subdir}/${build_id_debug_filename}] -+ remote_exec build "mv $debugfile ${objdir}/${subdir}/${build_id_debug_filename}" -+ -+ test_different_dir build-id "${objdir}/${subdir}" $xfail -+ -+ # Spare debug files may confuse testsuite runs in the future. -+ remote_exec build "rm -f ${objdir}/${subdir}/${build_id_debug_filename}" -+} -diff -u -rup gdb-6.6-orig/gdb/testsuite/lib/gdb.exp gdb-6.6/gdb/testsuite/lib/gdb.exp ---- gdb-6.6-orig/gdb/testsuite/lib/gdb.exp 2007-08-28 14:32:18.000000000 +0200 -+++ gdb-6.6/gdb/testsuite/lib/gdb.exp 2007-08-28 14:33:03.000000000 +0200 -@@ -2323,6 +2323,27 @@ proc separate_debug_filename { exec } { - return $debug_file - } - -+# Return the build-id hex string (usually 160 bits as 40 hex characters) -+# converted to the form: .build-id/ab/cdef1234...89.debug -+# Return "" if no build-id found. -+proc build_id_debug_filename_get { exec } { -+ set tmp "${exec}-tmp" -+ exec objcopy -j .note.gnu.build-id -O binary $exec $tmp -+ set fi [open $tmp] -+ # Skip the NOTE header. -+ read $fi 16 -+ set data [read $fi] -+ close $fi -+ file delete $tmp -+ if {$data eq ""} { -+ return "" -+ } -+ # Convert it to hex. -+ binary scan $data H* data -+ set data [regsub {^..} $data {\0/}] -+ return ".build-id/${data}.debug"; -+} -+ - # Create stripped files for DEST, replacing it. If ARGS is passed, it is a - # list of optional flags. The only currently supported flag is no-main, - # which removes the symbol entry for main from the separate debug file. ---- gdb-6.6/gdb/testsuite/gdb.base/sepdebug.exp 2007-08-28 15:27:36.000000000 +0200 -+++ gdb-6.6/gdb/testsuite/gdb.base/sepdebug.exp 2007-08-28 15:25:23.000000000 +0200 -@@ -860,14 +860,14 @@ test_next_with_recursion - # ${objdir}/${subdir} so need to move things there. - - set existing_binfile $binfile --set testfile "sepdebug2" --set srcfile ${testfile}.c --set binfile ${objdir}/${subdir}/${testfile} --set corrupt_debug_file [separate_debug_filename $binfile] --if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != "" } { -+set testfile2 "sepdebug2" -+set srcfile2 ${testfile2}.c -+set binfile2 ${objdir}/${subdir}/${testfile2} -+set corrupt_debug_file [separate_debug_filename $binfile2] -+if { [gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${binfile2}" executable {debug additional_flags=-w}] != "" } { - return -1 - } --if [gdb_gnu_strip_debug $binfile] { -+if [gdb_gnu_strip_debug $binfile2] { - # check that you have a recent version of strip and objcopy installed - unsupported "cannot produce separate debug info files" - return -1 diff --git a/gdb-6.6-bz225783-prelink-path.patch b/gdb-6.6-bz225783-prelink-path.patch index 3e6b091..443ca2f 100644 --- a/gdb-6.6-bz225783-prelink-path.patch +++ b/gdb-6.6-bz225783-prelink-path.patch @@ -1,9 +1,14 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=225783 +2007-10-16 Jan Kratochvil ---- gdb-6.6/gdb/testsuite/gdb.base/prelink.exp.orig 2006-03-08 19:22:09.000000000 -0500 -+++ gdb-6.6/gdb/testsuite/gdb.base/prelink.exp 2007-04-08 13:22:45.000000000 -0400 -@@ -48,7 +48,7 @@ + Port to GDB-6.7. + +Index: gdb-6.7/gdb/testsuite/gdb.base/prelink.exp +=================================================================== +--- gdb-6.7.orig/gdb/testsuite/gdb.base/prelink.exp 2007-08-23 20:14:17.000000000 +0200 ++++ gdb-6.7/gdb/testsuite/gdb.base/prelink.exp 2007-10-16 16:16:51.000000000 +0200 +@@ -47,7 +47,7 @@ if { [gdb_compile "${srcdir}/${subdir}/$ return -1 } @@ -12,13 +17,13 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=225783 # Maybe we don't have prelink. return -1 } -@@ -89,11 +89,11 @@ +@@ -88,11 +88,11 @@ if { $found == 0 } { return 0 } -if {[catch "system \"prelink -uN ${libfile}\""] != 0} { +if {[catch "system \"/usr/sbin/prelink -uN ${libfile}\""] != 0} { - untested "${libfile} was not prelinked, maybe system libraries are not prelinked?" + untested "${testfile}.so was not prelinked, maybe system libraries are not prelinked?" return 0 } -catch "system \"prelink -qNR ${libfile}\"" diff --git a/gdb-6.6-bz232015-gcore-ppc-on-ppc64.patch b/gdb-6.6-bz232015-gcore-ppc-on-ppc64.patch deleted file mode 100644 index 8664be3..0000000 --- a/gdb-6.6-bz232015-gcore-ppc-on-ppc64.patch +++ /dev/null @@ -1,201 +0,0 @@ -https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=232014 - - -Based on `gdb-6.5-gcore-i386-on-amd64.patch'. - - -diff -u -rup gdb-6.6-orig/gdb/Makefile.in gdb-6.6/gdb/Makefile.in ---- gdb-6.6-orig/gdb/Makefile.in 2007-03-12 17:59:56.000000000 -0400 -+++ gdb-6.6/gdb/Makefile.in 2007-04-23 13:05:05.000000000 -0400 -@@ -2481,7 +2481,7 @@ ppcbug-rom.o: ppcbug-rom.c $(defs_h) $(g - ppc-linux-nat.o: ppc-linux-nat.c $(defs_h) $(gdb_string_h) $(frame_h) \ - $(inferior_h) $(gdbcore_h) $(regcache_h) $(gdb_assert_h) \ - $(gdb_wait_h) $(gregset_h) $(ppc_tdep_h) $(target_h) \ -- $(linux_nat_h) -+ $(linux_nat_h) $(elf_bfd_h) $(gdb_procfs32_h) - ppc-linux-tdep.o: ppc-linux-tdep.c $(defs_h) $(frame_h) $(inferior_h) \ - $(symtab_h) $(target_h) $(gdbcore_h) $(gdbcmd_h) $(symfile_h) \ - $(objfiles_h) $(regcache_h) $(value_h) $(osabi_h) $(regset_h) \ -diff -u -rup gdb-6.6-orig/gdb/gdb_procfs32.h gdb-6.6/gdb/gdb_procfs32.h ---- gdb-6.6-orig/gdb/gdb_procfs32.h 2007-03-12 17:59:55.000000000 -0400 -+++ gdb-6.6/gdb/gdb_procfs32.h 2007-04-23 13:07:03.000000000 -0400 -@@ -23,6 +23,8 @@ - #ifndef _SYS_PROCFS32_H - #define _SYS_PROCFS32_H 1 - -+#if defined(__x86_64__) || defined(__ppc64__) || defined(__powerpc64__) -+ - /* This is somewhat modelled after the file of the same name on SVR4 - systems. It provides a definition of the core file format for ELF - used on Linux. It doesn't have anything to do with the /proc file -@@ -49,17 +51,27 @@ typedef unsigned int elf_greg32_t; - user_regs_struct' directly in the typedef, but tradition says that - the register set is an array, which does have some peculiar - semantics, so leave it that way. */ -+#if defined(__x86_64__) - #define ELF_NGREG32 (sizeof (struct user_regs32_struct) / sizeof(elf_greg32_t)) -+#elif defined(__ppc64__) || defined(__powerpc64__) -+#define ELF_NGREG32 48 -+#else -+#error "Unsupported platform" -+#endif - typedef elf_greg32_t elf_gregset32_t[ELF_NGREG32]; - - /* Register set for the floating-point registers. */ --typedef struct user_fpregs32_struct elf_fpregset32_t; -- - /* Register set for the extended floating-point registers. Includes - the Pentium III SSE registers in addition to the classic - floating-point stuff. */ -+#if defined(__x86_64__) -+typedef struct user_fpregs32_struct elf_fpregset32_t; - typedef struct user_fpxregs32_struct elf_fpxregset32_t; -- -+#elif defined(__ppc64__) || defined(__powerpc64__) -+typedef elf_fpregset_t elf_fpregset32_t; -+#else -+#error "Unsupported platform" -+#endif - - /* Definitions to generate Intel SVR4-like core files. These mostly - have the same names as the SVR4 types with "elf_" tacked on the -@@ -100,8 +112,15 @@ - char pr_zomb; /* Zombie. */ - char pr_nice; /* Nice val. */ - unsigned int pr_flag; /* Flags. */ -+#if defined(__x86_64__) - unsigned short int pr_uid; - unsigned short int pr_gid; -+#elif defined(__ppc64__) || defined(__powerpc64__) -+ unsigned int pr_uid; -+ unsigned int pr_gid; -+#else -+#error "Unsupported platform" -+#endif - int pr_pid, pr_ppid, pr_pgrp, pr_sid; - /* Lots missing */ - char pr_fname[16]; /* Filename of executable. */ -@@ -123,6 +135,8 @@ typedef struct elf_prpsinfo32 prpsinfo32 - - __END_DECLS - -+#endif /* defined(__x86_64__) || defined(__ppc64__) || defined(__powerpc64__) */ -+ - #endif /* _SYS_PROCFS32_H */ - - #endif /* HAVE_SYS_PROCFS32_H */ -diff -u -rup gdb-6.6-orig/gdb/gdb_user32.h gdb-6.6/gdb/gdb_user32.h ---- gdb-6.6-orig/gdb/gdb_user32.h 2007-03-12 17:59:55.000000000 -0400 -+++ gdb-6.6/gdb/gdb_user32.h 2007-04-23 13:05:05.000000000 -0400 -@@ -32,6 +32,8 @@ typedef unsigned int gdb_uint32_t; - #ifndef _SYS_USER32_H - #define _SYS_USER32_H 1 - -+#ifdef __x86_64__ -+ - /* These are the 32-bit x86 structures. */ - - struct user_fpregs32_struct -@@ -103,6 +105,8 @@ struct user32 - int u_debugreg [8]; - }; - -+#endif /* __x86_64__ */ -+ - #endif /* _SYS_USER32_H */ - - #endif /* HAVE_SYS_USER32_H */ -diff -u -rup gdb-6.6-orig/gdb/ppc-linux-nat.c gdb-6.6/gdb/ppc-linux-nat.c ---- gdb-6.6-orig/gdb/ppc-linux-nat.c 2006-05-05 16:45:03.000000000 -0400 -+++ gdb-6.6/gdb/ppc-linux-nat.c 2007-04-23 13:16:09.000000000 -0400 -@@ -29,6 +29,8 @@ - #include "gdb_assert.h" - #include "target.h" - #include "linux-nat.h" -+#include "bfd/elf-bfd.h" -+#include "gdb_procfs32.h" - - #include - #include -@@ -1002,6 +1004,68 @@ fill_fpregset (gdb_fpregset_t *fpregsetp - } - } - -+#if defined(__ppc64__) || defined(__powerpc64__) -+ -+/* This functions make ELF32 32-bit elfcore note sections -+ on ppc64 environment. */ -+ -+static char * -+ppc_linux_elfcore_write_prpsinfo (bfd *abfd, char *buf, int *bufsiz, -+ const char *fname, const char *psargs) -+{ -+ if (gdbarch_ptr_bit(current_gdbarch) == 32) -+ { -+ int note_type; -+ char *note_name = "CORE"; -+ struct elf_prpsinfo32 data; -+ note_type = NT_PRPSINFO; -+ -+ memset (&data, 0, sizeof (data)); -+ strncpy (data.pr_fname, fname, sizeof (data.pr_fname)); -+ strncpy (data.pr_psargs, psargs, sizeof (data.pr_psargs)); -+ return elfcore_write_note (abfd, buf, bufsiz, -+ note_name, note_type, &data, sizeof (data)); -+ } -+ else -+ return elfcore_write_prpsinfo (abfd, buf, bufsiz, fname, psargs); -+} -+ -+static void -+ppc_linux_set_registers (const gdb_byte *gregs, gdb_byte *buf) -+{ -+ int i; -+ const int elf_ngreg = 48; -+ -+ /* Copy the ppc registers in the ppc64 layout into ppc layout. */ -+ for (i = 0; i < elf_ngreg; i++) -+ memcpy (buf + 4 * i, gregs + 8 * i + 4, 4); -+ /* CR and XER are an exception as they are shifted left there, -+ see fill_gregset(). */ -+ memcpy (buf + 4 * PT_CCR, gregs + 8 * PT_CCR + 0, 4); -+ memcpy (buf + 4 * PT_XER, gregs + 8 * PT_XER + 0, 4); -+} -+ -+static char * -+ppc_linux_elfcore_write_prstatus (bfd *abfd, char *buf, int *bufsiz, -+ long pid, int cursig, const void *gregs) -+{ -+ if (gdbarch_ptr_bit(current_gdbarch) == 32) -+ { -+ char *note_name = "CORE"; -+ struct elf_prstatus32 prstat; -+ memset (&prstat, 0, sizeof (prstat)); -+ prstat.pr_pid = pid; -+ prstat.pr_cursig = cursig; -+ ppc_linux_set_registers (gregs, (gdb_byte *) &prstat.pr_reg); -+ return elfcore_write_note (abfd, buf, bufsiz, note_name, -+ NT_PRSTATUS, &prstat, sizeof (prstat)); -+ } -+ else -+ return elfcore_write_prstatus (abfd, buf, bufsiz, pid, cursig, gregs); -+} -+ -+#endif /* defined(__ppc64__) || defined(__powerpc64__) */ -+ - void _initialize_ppc_linux_nat (void); - - void -@@ -1024,6 +1084,12 @@ _initialize_ppc_linux_nat (void) - t->to_stopped_by_watchpoint = ppc_linux_stopped_by_watchpoint; - t->to_stopped_data_address = ppc_linux_stopped_data_address; - -+#if defined(__ppc64__) || defined(__powerpc64__) -+ /* This functions make elfcore note sections. */ -+ linux_elfcore_write_prpsinfo = ppc_linux_elfcore_write_prpsinfo; -+ linux_elfcore_write_prstatus = ppc_linux_elfcore_write_prstatus; -+#endif /* defined(__ppc64__) || defined(__powerpc64__) */ -+ - /* Register the target. */ - linux_nat_add_target (t); - } diff --git a/gdb-6.6-bz233716-empty-structure-override.patch b/gdb-6.6-bz233716-empty-structure-override.patch deleted file mode 100644 index d434b1c..0000000 --- a/gdb-6.6-bz233716-empty-structure-override.patch +++ /dev/null @@ -1,325 +0,0 @@ -https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=233716 -http://sources.redhat.com/ml/gdb-patches/2007-03/msg00129.html - - -2007-03-12 Jan Kratochvil - - * gdbtypes.h (TYPE_FLAG_STUB_SUPPORTED, TYPE_STUB_SUPPORTED): New - macros. - (TYPE_IS_OPAQUE): Empty vs. opaque structures are now - distinct on the TYPE_STUB_SUPPORTED debug targets. - * dwarf2read.c (read_structure_type): Set TYPE_FLAG_STUB_SUPPORTED. - * dwarfread.c (struct_type): New comment on TYPE_FLAG_STUB_SUPPORTED. - -2007-03-12 Jan Kratochvil - - * gdb.base/type-opaque-lib.c, gdb.base/type-opaque-main.c, - gdb.base/type-opaque.exp: New files. - - ---- ./gdb/dwarf2read.c 12 Feb 2007 15:19:31 -0000 1.215 -+++ ./gdb/dwarf2read.c 12 Mar 2007 21:33:06 -0000 -@@ -3879,6 +3879,7 @@ read_structure_type (struct die_info *di - TYPE_LENGTH (type) = 0; - } - -+ TYPE_FLAGS (type) |= TYPE_FLAG_STUB_SUPPORTED; - if (die_is_declaration (die, cu)) - TYPE_FLAGS (type) |= TYPE_FLAG_STUB; - ---- ./gdb/dwarfread.c 12 Feb 2007 15:19:31 -0000 1.47 -+++ ./gdb/dwarfread.c 12 Mar 2007 21:33:07 -0000 -@@ -1083,7 +1083,10 @@ struct_type (struct dieinfo *dip, char * - not even have any fields, if this DIE was generated due to a reference - to an anonymous structure or union. In this case, TYPE_FLAG_STUB is - set, which clues gdb in to the fact that it needs to search elsewhere -- for the full structure definition. */ -+ for the full structure definition. -+ As such opaque reference is not distinguishable from an empty STRUCT -+ definition as DWARF1 is missing DW_AT_declaration we cannot set -+ TYPE_FLAG_STUB_SUPPORTED here. */ - if (nfields == 0) - { - TYPE_FLAGS (type) |= TYPE_FLAG_STUB; ---- ./gdb/gdbtypes.h 29 Jan 2007 17:31:06 -0000 1.68 -+++ ./gdb/gdbtypes.h 12 Mar 2007 21:33:08 -0000 -@@ -319,6 +319,14 @@ enum type_code - - #define TYPE_FLAG_FIXED_INSTANCE (1 << 15) - -+/* This debug target supports TYPE_STUB(t). In the unsupported case we have to -+ rely on NFIELDS to be zero etc., see TYPE_IS_OPAQUE (). -+ TYPE_STUB(t) with !TYPE_STUB_SUPPORTED(t) may exist if we only guessed -+ the TYPE_STUB(t) value (see dwarfread.c). */ -+ -+#define TYPE_FLAG_STUB_SUPPORTED (1 << 16) -+#define TYPE_STUB_SUPPORTED(t) (TYPE_FLAGS (t) & TYPE_FLAG_STUB_SUPPORTED) -+ - /* Array bound type. */ - enum array_bound_type - { -@@ -969,7 +977,8 @@ extern void allocate_cplus_struct_type ( - #define TYPE_IS_OPAQUE(thistype) (((TYPE_CODE (thistype) == TYPE_CODE_STRUCT) || \ - (TYPE_CODE (thistype) == TYPE_CODE_UNION)) && \ - (TYPE_NFIELDS (thistype) == 0) && \ -- (TYPE_CPLUS_SPECIFIC (thistype) && (TYPE_NFN_FIELDS (thistype) == 0))) -+ (TYPE_CPLUS_SPECIFIC (thistype) && (TYPE_NFN_FIELDS (thistype) == 0)) && \ -+ (TYPE_STUB (thistype) || !TYPE_STUB_SUPPORTED (thistype))) - - struct builtin_type - { ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.base/type-opaque-lib.c 12 Mar 2007 21:33:09 -0000 -@@ -0,0 +1,56 @@ -+/* Test resolving of an opaque type from the loaded shared library. -+ -+ Copyright 2007, Free Software Foundation, Inc. -+ -+ This file is part of GDB. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. */ -+ -+struct struct_libtype_opaque -+{ -+ int libfield_opaque; -+}; -+struct struct_libtype_opaque struct_libtype_opaque_use; -+ -+struct struct_libtype_empty -+{ -+ int libfield_empty; -+}; -+struct struct_libtype_empty struct_libtype_empty_use; -+ -+struct struct_libtype_filled -+{ -+ int libfield_filled; -+}; -+struct struct_libtype_filled struct_libtype_filled_use; -+ -+union union_libtype_opaque -+{ -+ int libfield_opaque; -+}; -+union union_libtype_opaque union_libtype_opaque_use; -+ -+union union_libtype_empty -+{ -+ int libfield_empty; -+}; -+union union_libtype_empty union_libtype_empty_use; -+ -+union union_libtype_filled -+{ -+ int libfield_filled; -+}; -+union union_libtype_filled union_libtype_filled_use; ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.base/type-opaque-main.c 12 Mar 2007 21:33:09 -0000 -@@ -0,0 +1,56 @@ -+/* Test resolving of an opaque type from the loaded shared library. -+ -+ Copyright 2007, Free Software Foundation, Inc. -+ -+ This file is part of GDB. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. */ -+ -+struct struct_libtype_opaque; -+ -+struct struct_libtype_empty -+ { -+ }; -+ -+struct struct_libtype_filled -+ { -+ long mainfield_filled; -+ }; -+ -+union union_libtype_opaque; -+ -+union union_libtype_empty -+ { -+ }; -+ -+union union_libtype_filled -+ { -+ long mainfield_filled; -+ }; -+ -+int main (void) -+{ -+ volatile struct struct_libtype_opaque *pointer_struct_opaque = (void *) 0; -+ volatile struct struct_libtype_empty *pointer_struct_empty = (void *) 0; -+ volatile struct struct_libtype_filled *pointer_struct_filled = (void *) 0; -+ volatile union union_libtype_opaque *pointer_union_opaque = (void *) 0; -+ volatile union union_libtype_empty *pointer_union_empty = (void *) 0; -+ volatile union union_libtype_filled *pointer_union_filled = (void *) 0; -+ -+ return (long) pointer_struct_opaque + (long) pointer_struct_empty -+ + (long) pointer_struct_filled + (long) pointer_union_opaque -+ + (long) pointer_union_empty + (long) pointer_union_filled; -+} ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.base/type-opaque.exp 12 Mar 2007 21:33:09 -0000 -@@ -0,0 +1,134 @@ -+# Copyright 2004, 2007 Free Software Foundation, Inc. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, write to the Free Software -+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -+ -+# Please email any bugs, comments, and/or additions to this file to: -+# bug-gdb@prep.ai.mit.edu -+ -+# Test resolving of an opaque type from the loaded shared library. -+ -+if $tracelevel then { -+ strace $tracelevel -+} -+ -+set testfile type-opaque-main -+set libfile type-opaque-lib -+set srcfile ${testfile}.c -+set binfile ${objdir}/${subdir}/${testfile} -+ -+set libsrc "${srcdir}/${subdir}/${libfile}.c" -+set libobj "${objdir}/${subdir}/${libfile}.so" -+set execsrc "${srcdir}/${subdir}/${srcfile}" -+ -+remote_exec build "rm -f ${binfile}" -+ -+# Are we on a target board? No support for downloading shared libraries -+# to a target yet. -+if ![isnative] then { -+ return 0 -+} -+ -+# get the value of gcc_compiled -+if [get_compiler_info ${binfile}] { -+ return -1 -+} -+ -+if { [gdb_compile_shlib $libsrc $libobj {debug}] != "" -+ || [gdb_compile $execsrc ${binfile} executable \ -+ [list debug shlib=${libobj}]] != "" } { -+ return -1 -+} -+ -+gdb_exit -+gdb_start -+gdb_reinitialize_dir $srcdir/$subdir -+gdb_load ${binfile} -+ -+if ![runto_main] then { -+ fail "Can't run to main" -+ return 0 -+} -+ -+ -+# DWARF3: An incomplete structure, union or class type is represented by -+# a structure, union or class entry that does not have a byte size attribute -+# and that has a DW_AT_declaration attribute. -+ -+ -+proc body { struct } { -+ global gdb_prompt -+ -+ -+ # <1><15f>: Abbrev Number: 8 (DW_TAG_structure_type) -+ # DW_AT_name : libtype_opaque -+ # DW_AT_declaration : 1 -+ -+ set name "opaque $struct type resolving" -+ gdb_test_multiple "ptype pointer_${struct}_opaque" $name \ -+ { -+ -re "libfield_opaque.*$gdb_prompt $" { -+ pass $name -+ } -+ } -+ -+ -+ # <1><9e>: Abbrev Number: 2 (DW_TAG_structure_type) -+ # DW_AT_name : libtype_empty -+ # DW_AT_byte_size : 0 -+ # DW_AT_decl_file : 1 -+ # DW_AT_decl_line : 25 -+ -+ set name "empty $struct type resolving" -+ gdb_test_multiple "ptype pointer_${struct}_empty" $name \ -+ { -+ -re "\\{\[ \t\r\n\]*\[ \t\r\n\]*\\}.*$gdb_prompt $" { -+ pass $name -+ } -+ -re "libfield_empty.*$gdb_prompt $" { -+ fail $name -+ } -+ } -+ -+ -+ # <1>: Abbrev Number: 3 (DW_TAG_structure_type) -+ # DW_AT_sibling : -+ # DW_AT_name : libtype_filled -+ # DW_AT_byte_size : 4 -+ # DW_AT_decl_file : 1 -+ # DW_AT_decl_line : 29 -+ # <2>: Abbrev Number: 4 (DW_TAG_member) -+ # DW_AT_name : mainfield_filled -+ # DW_AT_decl_file : 1 -+ # DW_AT_decl_line : 30 -+ # DW_AT_type : -+ # DW_AT_data_member_location: 2 byte block: 23 0 (DW_OP_plus_uconst: 0) -+ -+ set name "filled $struct type resolving" -+ gdb_test_multiple "ptype pointer_${struct}_filled" $name \ -+ { -+ -re "mainfield_filled.*$gdb_prompt $" { -+ pass $name -+ } -+ -re "libfield_filled.*$gdb_prompt $" { -+ fail $name -+ } -+ } -+ -+ -+} -+ -+ -+body struct -+body union diff --git a/gdb-6.6-bz237572-ppc-atomic-sequence-upstream.patch b/gdb-6.6-bz237572-ppc-atomic-sequence-upstream.patch deleted file mode 100644 index c215d84..0000000 --- a/gdb-6.6-bz237572-ppc-atomic-sequence-upstream.patch +++ /dev/null @@ -1,1160 +0,0 @@ -https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=235186 - -2007-01-10 Daniel Jacobowitz - - * infrun.c (singlestep_pc): New variable. - (resume): Set singlestep_pc. - (context_switch): Add a debugging message. Flush the frame cache. - (handle_inferior_event): Add debugging messages. Handle thread - hops when a software single step has completed. Let context_switch - handle flushing the frame cache. - ---- ./gdb/infrun.c 9 Jan 2007 17:58:51 -0000 1.218 -+++ ./gdb/infrun.c 10 Jan 2007 20:10:23 -0000 1.219 -@@ -469,6 +469,9 @@ static int singlestep_breakpoints_insert - /* The thread we inserted single-step breakpoints for. */ - static ptid_t singlestep_ptid; - -+/* PC when we started this single-step. */ -+static CORE_ADDR singlestep_pc; -+ - /* If another thread hit the singlestep breakpoint, we save the original - thread here so that we can resume single-stepping it later. */ - static ptid_t saved_singlestep_ptid; -@@ -563,6 +566,7 @@ resume (int step, enum target_signal sig - `wait_for_inferior' */ - singlestep_breakpoints_inserted_p = 1; - singlestep_ptid = inferior_ptid; -+ singlestep_pc = read_pc (); - } - - /* If there were any forks/vforks/execs that were caught and are -@@ -1126,6 +1130,14 @@ context_switch (struct execution_control - be lost. This may happen as a result of the target module - mishandling thread creation. */ - -+ if (debug_infrun) -+ { -+ fprintf_unfiltered (gdb_stdlog, "infrun: Switching context from %s ", -+ target_pid_to_str (inferior_ptid)); -+ fprintf_unfiltered (gdb_stdlog, "to %s\n", -+ target_pid_to_str (ecs->ptid)); -+ } -+ - if (in_thread_list (inferior_ptid) && in_thread_list (ecs->ptid)) - { /* Perform infrun state context switch: */ - /* Save infrun state for the old thread. */ -@@ -1149,6 +1161,7 @@ context_switch (struct execution_control - &ecs->current_line, &ecs->current_symtab); - } - inferior_ptid = ecs->ptid; -+ flush_cached_frames (); - } - - static void -@@ -1609,6 +1622,14 @@ handle_inferior_event (struct execution_ - } - else if (SOFTWARE_SINGLE_STEP_P () && singlestep_breakpoints_inserted_p) - { -+ /* We have not context switched yet, so this should be true -+ no matter which thread hit the singlestep breakpoint. */ -+ gdb_assert (ptid_equal (inferior_ptid, singlestep_ptid)); -+ if (debug_infrun) -+ fprintf_unfiltered (gdb_stdlog, "infrun: software single step " -+ "trap for %s\n", -+ target_pid_to_str (ecs->ptid)); -+ - ecs->random_signal = 0; - /* The call to in_thread_list is necessary because PTIDs sometimes - change when we go from single-threaded to multi-threaded. If -@@ -1617,9 +1638,46 @@ handle_inferior_event (struct execution_ - if (!ptid_equal (singlestep_ptid, ecs->ptid) - && in_thread_list (singlestep_ptid)) - { -- thread_hop_needed = 1; -- stepping_past_singlestep_breakpoint = 1; -- saved_singlestep_ptid = singlestep_ptid; -+ /* If the PC of the thread we were trying to single-step -+ has changed, discard this event (which we were going -+ to ignore anyway), and pretend we saw that thread -+ trap. This prevents us continuously moving the -+ single-step breakpoint forward, one instruction at a -+ time. If the PC has changed, then the thread we were -+ trying to single-step has trapped or been signalled, -+ but the event has not been reported to GDB yet. -+ -+ There might be some cases where this loses signal -+ information, if a signal has arrived at exactly the -+ same time that the PC changed, but this is the best -+ we can do with the information available. Perhaps we -+ should arrange to report all events for all threads -+ when they stop, or to re-poll the remote looking for -+ this particular thread (i.e. temporarily enable -+ schedlock). */ -+ if (read_pc_pid (singlestep_ptid) != singlestep_pc) -+ { -+ if (debug_infrun) -+ fprintf_unfiltered (gdb_stdlog, "infrun: unexpected thread," -+ " but expected thread advanced also\n"); -+ -+ /* The current context still belongs to -+ singlestep_ptid. Don't swap here, since that's -+ the context we want to use. Just fudge our -+ state and continue. */ -+ ecs->ptid = singlestep_ptid; -+ stop_pc = read_pc_pid (ecs->ptid); -+ } -+ else -+ { -+ if (debug_infrun) -+ fprintf_unfiltered (gdb_stdlog, -+ "infrun: unexpected thread\n"); -+ -+ thread_hop_needed = 1; -+ stepping_past_singlestep_breakpoint = 1; -+ saved_singlestep_ptid = singlestep_ptid; -+ } - } - } - -@@ -1702,8 +1760,6 @@ handle_inferior_event (struct execution_ - - if (deprecated_context_hook) - deprecated_context_hook (pid_to_thread_id (ecs->ptid)); -- -- flush_cached_frames (); - } - - if (SOFTWARE_SINGLE_STEP_P () && singlestep_breakpoints_inserted_p) - - - -2007-04-12 Luis Machado - - * gdbarch.sh (software_single_step): Change the return type - from void to int and reformatted some comments to <= 80 - columns. - * gdbarch.c, gdbarch.h: Regenerated. - * alpha-tdep.c (alpha_software_single_step): Likewise. - * alpha-tdep.h (alpha_software_single_step): Likewise. - * arm-tdep.c (arm_software_single_step): Likewise. - * cris-tdep.c (cris_software_single_step): Likewise. - * mips-tdep.c (mips_software_single_step): Likewise. - * mips-tdep.h (mips_software_single_step): Likewise. - * rs6000-tdep.c (rs6000_software_single_step): Likewise. - * rs6000-tdep.h (rs6000_software_single_step): Likewise. - * sparc-tdep.c (sparc_software_single_step): Likewise. - * sparc-tdep.h (sparc_software_single_step): Likewise. -[REMOVED] * spu-tdep.c (spu_software_single_step): Likewise. - * infrun.c (resume): Check the return value from SOFTWARE_SINGLE_STEP - and act accordingly. - ---- ./gdb/alpha-tdep.c 27 Feb 2007 20:17:18 -0000 1.162 -+++ ./gdb/alpha-tdep.c 12 Apr 2007 14:52:19 -0000 1.163 -@@ -1518,7 +1518,7 @@ alpha_next_pc (CORE_ADDR pc) - return (pc + ALPHA_INSN_SIZE); - } - --void -+int - alpha_software_single_step (enum target_signal sig, int insert_breakpoints_p) - { - static CORE_ADDR next_pc; -@@ -1536,6 +1536,7 @@ alpha_software_single_step (enum target_ - remove_single_step_breakpoints (); - write_pc (next_pc); - } -+ return 1; - } - - ---- ./gdb/alpha-tdep.h 9 Jan 2007 17:58:49 -0000 1.27 -+++ ./gdb/alpha-tdep.h 12 Apr 2007 14:52:19 -0000 1.28 -@@ -107,7 +107,7 @@ struct gdbarch_tdep - }; - - extern unsigned int alpha_read_insn (CORE_ADDR pc); --extern void alpha_software_single_step (enum target_signal, int); -+extern int alpha_software_single_step (enum target_signal, int); - extern CORE_ADDR alpha_after_prologue (CORE_ADDR pc); - - extern void alpha_mdebug_init_abi (struct gdbarch_info, struct gdbarch *); ---- ./gdb/arm-tdep.c 30 Mar 2007 22:50:33 -0000 1.225 -+++ ./gdb/arm-tdep.c 12 Apr 2007 14:52:19 -0000 1.226 -@@ -1907,7 +1907,7 @@ arm_get_next_pc (CORE_ADDR pc) - single_step() is also called just after the inferior stops. If we - had set up a simulated single-step, we undo our damage. */ - --static void -+static int - arm_software_single_step (enum target_signal sig, int insert_bpt) - { - /* NOTE: This may insert the wrong breakpoint instruction when -@@ -1922,6 +1922,8 @@ arm_software_single_step (enum target_si - } - else - remove_single_step_breakpoints (); -+ -+ return 1; - } - - #include "bfd-in2.h" ---- ./gdb/cris-tdep.c 27 Feb 2007 20:17:18 -0000 1.138 -+++ ./gdb/cris-tdep.c 12 Apr 2007 14:52:19 -0000 1.139 -@@ -2119,7 +2119,7 @@ find_step_target (inst_env_type *inst_en - digs through the opcodes in order to find all possible targets. - Either one ordinary target or two targets for branches may be found. */ - --static void -+static int - cris_software_single_step (enum target_signal ignore, int insert_breakpoints) - { - inst_env_type inst_env; -@@ -2152,6 +2152,8 @@ cris_software_single_step (enum target_s - } - else - remove_single_step_breakpoints (); -+ -+ return 1; - } - - /* Calculates the prefix value for quick offset addressing mode. */ ---- ./gdb/gdbarch.c 28 Feb 2007 17:34:58 -0000 1.338 -+++ ./gdb/gdbarch.c 12 Apr 2007 14:52:19 -0000 1.339 -@@ -3289,14 +3289,14 @@ gdbarch_software_single_step_p (struct g - return gdbarch->software_single_step != NULL; - } - --void -+int - gdbarch_software_single_step (struct gdbarch *gdbarch, enum target_signal sig, int insert_breakpoints_p) - { - gdb_assert (gdbarch != NULL); - gdb_assert (gdbarch->software_single_step != NULL); - if (gdbarch_debug >= 2) - fprintf_unfiltered (gdb_stdlog, "gdbarch_software_single_step called\n"); -- gdbarch->software_single_step (sig, insert_breakpoints_p); -+ return gdbarch->software_single_step (sig, insert_breakpoints_p); - } - - void ---- ./gdb/gdbarch.h 8 Feb 2007 21:00:29 -0000 1.294 -+++ ./gdb/gdbarch.h 12 Apr 2007 14:52:19 -0000 1.295 -@@ -1144,14 +1144,19 @@ extern void set_gdbarch_smash_text_addre - #define SMASH_TEXT_ADDRESS(addr) (gdbarch_smash_text_address (current_gdbarch, addr)) - #endif - --/* FIXME/cagney/2001-01-18: This should be split in two. A target method that indicates if -- the target needs software single step. An ISA method to implement it. -+/* FIXME/cagney/2001-01-18: This should be split in two. A target method that -+ indicates if the target needs software single step. An ISA method to -+ implement it. - -- FIXME/cagney/2001-01-18: This should be replaced with something that inserts breakpoints -- using the breakpoint system instead of blatting memory directly (as with rs6000). -+ FIXME/cagney/2001-01-18: This should be replaced with something that inserts -+ breakpoints using the breakpoint system instead of blatting memory directly -+ (as with rs6000). - -- FIXME/cagney/2001-01-18: The logic is backwards. It should be asking if the target can -- single step. If not, then implement single step using breakpoints. */ -+ FIXME/cagney/2001-01-18: The logic is backwards. It should be asking if the -+ target can single step. If not, then implement single step using breakpoints. -+ -+ A return value of 1 means that the software_single_step breakpoints -+ were inserted; 0 means they were not. */ - - #if defined (SOFTWARE_SINGLE_STEP) - /* Legacy for systems yet to multi-arch SOFTWARE_SINGLE_STEP */ -@@ -1168,8 +1173,8 @@ extern int gdbarch_software_single_step_ - #define SOFTWARE_SINGLE_STEP_P() (gdbarch_software_single_step_p (current_gdbarch)) - #endif - --typedef void (gdbarch_software_single_step_ftype) (enum target_signal sig, int insert_breakpoints_p); --extern void gdbarch_software_single_step (struct gdbarch *gdbarch, enum target_signal sig, int insert_breakpoints_p); -+typedef int (gdbarch_software_single_step_ftype) (enum target_signal sig, int insert_breakpoints_p); -+extern int gdbarch_software_single_step (struct gdbarch *gdbarch, enum target_signal sig, int insert_breakpoints_p); - extern void set_gdbarch_software_single_step (struct gdbarch *gdbarch, gdbarch_software_single_step_ftype *software_single_step); - #if !defined (GDB_TM_FILE) && defined (SOFTWARE_SINGLE_STEP) - #error "Non multi-arch definition of SOFTWARE_SINGLE_STEP" ---- ./gdb/gdbarch.sh 28 Feb 2007 17:35:00 -0000 1.376 -+++ ./gdb/gdbarch.sh 12 Apr 2007 14:52:19 -0000 1.377 -@@ -614,15 +614,22 @@ f:=:CORE_ADDR:addr_bits_remove:CORE_ADDR - # It is not at all clear why SMASH_TEXT_ADDRESS is not folded into - # ADDR_BITS_REMOVE. - f:=:CORE_ADDR:smash_text_address:CORE_ADDR addr:addr::core_addr_identity::0 --# FIXME/cagney/2001-01-18: This should be split in two. A target method that indicates if --# the target needs software single step. An ISA method to implement it. -+ -+# FIXME/cagney/2001-01-18: This should be split in two. A target method that -+# indicates if the target needs software single step. An ISA method to -+# implement it. -+# -+# FIXME/cagney/2001-01-18: This should be replaced with something that inserts -+# breakpoints using the breakpoint system instead of blatting memory directly -+# (as with rs6000). - # --# FIXME/cagney/2001-01-18: This should be replaced with something that inserts breakpoints --# using the breakpoint system instead of blatting memory directly (as with rs6000). -+# FIXME/cagney/2001-01-18: The logic is backwards. It should be asking if the -+# target can single step. If not, then implement single step using breakpoints. - # --# FIXME/cagney/2001-01-18: The logic is backwards. It should be asking if the target can --# single step. If not, then implement single step using breakpoints. --F:=:void:software_single_step:enum target_signal sig, int insert_breakpoints_p:sig, insert_breakpoints_p -+# A return value of 1 means that the software_single_step breakpoints -+# were inserted; 0 means they were not. -+F:=:int:software_single_step:enum target_signal sig, int insert_breakpoints_p:sig, insert_breakpoints_p -+ - # Return non-zero if the processor is executing a delay slot and a - # further single-step is needed before the instruction finishes. - M::int:single_step_through_delay:struct frame_info *frame:frame ---- ./gdb/infrun.c 29 Mar 2007 07:35:39 -0000 1.225 -+++ ./gdb/infrun.c 12 Apr 2007 14:52:19 -0000 1.226 -@@ -548,14 +548,16 @@ resume (int step, enum target_signal sig - if (SOFTWARE_SINGLE_STEP_P () && step) - { - /* Do it the hard way, w/temp breakpoints */ -- SOFTWARE_SINGLE_STEP (sig, 1 /*insert-breakpoints */ ); -- /* ...and don't ask hardware to do it. */ -- step = 0; -- /* and do not pull these breakpoints until after a `wait' in -- `wait_for_inferior' */ -- singlestep_breakpoints_inserted_p = 1; -- singlestep_ptid = inferior_ptid; -- singlestep_pc = read_pc (); -+ if (SOFTWARE_SINGLE_STEP (sig, 1 /*insert-breakpoints */ )) -+ { -+ /* ...and don't ask hardware to do it. */ -+ step = 0; -+ /* and do not pull these breakpoints until after a `wait' in -+ `wait_for_inferior' */ -+ singlestep_breakpoints_inserted_p = 1; -+ singlestep_ptid = inferior_ptid; -+ singlestep_pc = read_pc (); -+ } - } - - /* If there were any forks/vforks/execs that were caught and are -@@ -1378,7 +1380,7 @@ handle_inferior_event (struct execution_ - (LONGEST) ecs->ws.value.integer)); - gdb_flush (gdb_stdout); - target_mourn_inferior (); -- singlestep_breakpoints_inserted_p = 0; /*SOFTWARE_SINGLE_STEP_P() */ -+ singlestep_breakpoints_inserted_p = 0; /* SOFTWARE_SINGLE_STEP_P() */ - stop_print_frame = 0; - stop_stepping (ecs); - return; -@@ -1398,7 +1400,7 @@ handle_inferior_event (struct execution_ - target_mourn_inferior (); - - print_stop_reason (SIGNAL_EXITED, stop_signal); -- singlestep_breakpoints_inserted_p = 0; /*SOFTWARE_SINGLE_STEP_P() */ -+ singlestep_breakpoints_inserted_p = 0; /* SOFTWARE_SINGLE_STEP_P() */ - stop_stepping (ecs); - return; - -@@ -1569,7 +1571,7 @@ handle_inferior_event (struct execution_ - if (debug_infrun) - fprintf_unfiltered (gdb_stdlog, "infrun: stepping_past_singlestep_breakpoint\n"); - /* Pull the single step breakpoints out of the target. */ -- SOFTWARE_SINGLE_STEP (0, 0); -+ (void) SOFTWARE_SINGLE_STEP (0, 0); - singlestep_breakpoints_inserted_p = 0; - - ecs->random_signal = 0; -@@ -1678,7 +1680,7 @@ handle_inferior_event (struct execution_ - if (SOFTWARE_SINGLE_STEP_P () && singlestep_breakpoints_inserted_p) - { - /* Pull the single step breakpoints out of the target. */ -- SOFTWARE_SINGLE_STEP (0, 0); -+ (void) SOFTWARE_SINGLE_STEP (0, 0); - singlestep_breakpoints_inserted_p = 0; - } - -@@ -1749,7 +1751,7 @@ handle_inferior_event (struct execution_ - if (SOFTWARE_SINGLE_STEP_P () && singlestep_breakpoints_inserted_p) - { - /* Pull the single step breakpoints out of the target. */ -- SOFTWARE_SINGLE_STEP (0, 0); -+ (void) SOFTWARE_SINGLE_STEP (0, 0); - singlestep_breakpoints_inserted_p = 0; - } - ---- ./gdb/mips-tdep.c 30 Mar 2007 22:50:33 -0000 1.407 -+++ ./gdb/mips-tdep.c 12 Apr 2007 14:52:19 -0000 1.408 -@@ -2204,7 +2204,7 @@ mips_addr_bits_remove (CORE_ADDR addr) - single_step is also called just after the inferior stops. If we had - set up a simulated single-step, we undo our damage. */ - --void -+int - mips_software_single_step (enum target_signal sig, int insert_breakpoints_p) - { - CORE_ADDR pc, next_pc; -@@ -2218,6 +2218,8 @@ mips_software_single_step (enum target_s - } - else - remove_single_step_breakpoints (); -+ -+ return 1; - } - - /* Test whether the PC points to the return instruction at the ---- ./gdb/mips-tdep.h 30 Mar 2007 22:50:33 -0000 1.20 -+++ ./gdb/mips-tdep.h 12 Apr 2007 14:52:20 -0000 1.21 -@@ -100,7 +100,7 @@ enum - }; - - /* Single step based on where the current instruction will take us. */ --extern void mips_software_single_step (enum target_signal, int); -+extern int mips_software_single_step (enum target_signal, int); - - /* Tell if the program counter value in MEMADDR is in a MIPS16 - function. */ ---- ./gdb/rs6000-tdep.c 10 Apr 2007 16:02:41 -0000 1.270 -+++ ./gdb/rs6000-tdep.c 12 Apr 2007 14:52:20 -0000 1.271 -@@ -722,7 +722,7 @@ rs6000_breakpoint_from_pc (CORE_ADDR *bp - - /* AIX does not support PT_STEP. Simulate it. */ - --void -+int - rs6000_software_single_step (enum target_signal signal, - int insert_breakpoints_p) - { -@@ -761,6 +761,7 @@ rs6000_software_single_step (enum target - - errno = 0; /* FIXME, don't ignore errors! */ - /* What errors? {read,write}_memory call error(). */ -+ return 1; - } - - ---- ./gdb/rs6000-tdep.h 27 Feb 2007 23:04:28 -0000 1.3 -+++ ./gdb/rs6000-tdep.h 12 Apr 2007 14:52:20 -0000 1.4 -@@ -21,8 +21,8 @@ - - #include "defs.h" - --extern void rs6000_software_single_step (enum target_signal signal, -- int insert_breakpoints_p); -+extern int rs6000_software_single_step (enum target_signal signal, -+ int insert_breakpoints_p); - - /* Hook in rs6000-tdep.c for determining the TOC address when - calling functions in the inferior. */ ---- ./gdb/sparc-tdep.c 11 Apr 2007 07:10:08 -0000 1.179 -+++ ./gdb/sparc-tdep.c 12 Apr 2007 14:52:20 -0000 1.180 -@@ -1329,7 +1329,7 @@ sparc_step_trap (unsigned long insn) - return 0; - } - --void -+int - sparc_software_single_step (enum target_signal sig, int insert_breakpoints_p) - { - struct gdbarch *arch = current_gdbarch; -@@ -1359,6 +1359,8 @@ sparc_software_single_step (enum target_ - } - else - remove_single_step_breakpoints (); -+ -+ return 1; - } - - static void ---- ./gdb/sparc-tdep.h 9 Jan 2007 17:58:58 -0000 1.12 -+++ ./gdb/sparc-tdep.h 12 Apr 2007 14:52:20 -0000 1.13 -@@ -167,8 +167,8 @@ extern struct sparc_frame_cache * - - - --extern void sparc_software_single_step (enum target_signal sig, -- int insert_breakpoints_p); -+extern int sparc_software_single_step (enum target_signal sig, -+ int insert_breakpoints_p); - - extern void sparc_supply_rwindow (struct regcache *regcache, - CORE_ADDR sp, int regnum); - - - -2007-04-14 Ulrich Weigand - - * alpha-tdep.c (alpha_software_single_step): Do not call write_pc - when removing single-step breakpoints. - ---- ./gdb/alpha-tdep.c 12 Apr 2007 14:52:19 -0000 1.163 -+++ ./gdb/alpha-tdep.c 14 Apr 2007 16:17:39 -0000 1.164 -@@ -1521,7 +1521,7 @@ alpha_next_pc (CORE_ADDR pc) - int - alpha_software_single_step (enum target_signal sig, int insert_breakpoints_p) - { -- static CORE_ADDR next_pc; -+ CORE_ADDR next_pc; - CORE_ADDR pc; - - if (insert_breakpoints_p) -@@ -1534,7 +1534,6 @@ alpha_software_single_step (enum target_ - else - { - remove_single_step_breakpoints (); -- write_pc (next_pc); - } - return 1; - } - - - -2007-04-14 Ulrich Weigand - - * gdbarch.sh (software_single_step): Remove "insert_breakpoints_p" and - "sig" arguments, add "regcache" argument. - * gdbarch.c, gdbarch.h: Regenerate. - - * infrun.c (resume): Update SOFTWARE_SINGLE_STEP call arguments. - (handle_inferior_event): Call remove_single_step_breakpoints directly - instead of calling SOFTWARE_SINGLE_STEP to remove breakpoints. - - * alpha-tdep.c (alpha_software_single_step): Update argument list. - Remove handling of !insert_breakpoints_p case. - * arm-tdep.c (arm_software_single_step): Likewise. - * cris-tdep.c (cris_software_single_step): Likewise. - * mips-tdep.c (mips_software_single_step): Likewise. - * rs6000-tdep.c (rs6000_software_single_step): Likewise. - * sparc-tdep.c (sparc_software_single_step): Likewise. -[REMOVED] * spu-tdep.c (spu_software_single_step): Likewise. - - * alpha-tdep.h (alpha_software_single_step): Update prototype. - * mips-tdep.h (mips_software_single_step): Likewise. - * rs6000-tdep.h (rs6000_software_single_step): Likewise. - * sparc-tdep.h (sparc_software_single_step): Likewise. - ---- ./gdb/alpha-tdep.c 14 Apr 2007 16:17:39 -0000 1.164 -+++ ./gdb/alpha-tdep.c 14 Apr 2007 18:10:54 -0000 1.165 -@@ -1391,10 +1391,7 @@ fp_register_sign_bit (LONGEST reg) - /* alpha_software_single_step() is called just before we want to resume - the inferior, if we want to single-step it but there is no hardware - or kernel single-step support (NetBSD on Alpha, for example). We find -- the target of the coming instruction and breakpoint it. -- -- single_step is also called just after the inferior stops. If we had -- set up a simulated single-step, we undo our damage. */ -+ the target of the coming instruction and breakpoint it. */ - - static CORE_ADDR - alpha_next_pc (CORE_ADDR pc) -@@ -1519,22 +1516,14 @@ alpha_next_pc (CORE_ADDR pc) - } - - int --alpha_software_single_step (enum target_signal sig, int insert_breakpoints_p) -+alpha_software_single_step (struct regcache *regcache) - { -- CORE_ADDR next_pc; -- CORE_ADDR pc; -+ CORE_ADDR pc, next_pc; - -- if (insert_breakpoints_p) -- { -- pc = read_pc (); -- next_pc = alpha_next_pc (pc); -+ pc = read_pc (); -+ next_pc = alpha_next_pc (pc); - -- insert_single_step_breakpoint (next_pc); -- } -- else -- { -- remove_single_step_breakpoints (); -- } -+ insert_single_step_breakpoint (next_pc); - return 1; - } - ---- ./gdb/alpha-tdep.h 12 Apr 2007 14:52:19 -0000 1.28 -+++ ./gdb/alpha-tdep.h 14 Apr 2007 18:10:54 -0000 1.29 -@@ -107,7 +107,7 @@ struct gdbarch_tdep - }; - - extern unsigned int alpha_read_insn (CORE_ADDR pc); --extern int alpha_software_single_step (enum target_signal, int); -+extern int alpha_software_single_step (struct regcache *regcache); - extern CORE_ADDR alpha_after_prologue (CORE_ADDR pc); - - extern void alpha_mdebug_init_abi (struct gdbarch_info, struct gdbarch *); ---- ./gdb/arm-tdep.c 12 Apr 2007 14:52:19 -0000 1.226 -+++ ./gdb/arm-tdep.c 14 Apr 2007 18:10:54 -0000 1.227 -@@ -1902,26 +1902,17 @@ arm_get_next_pc (CORE_ADDR pc) - /* single_step() is called just before we want to resume the inferior, - if we want to single-step it but there is no hardware or kernel - single-step support. We find the target of the coming instruction -- and breakpoint it. -- -- single_step() is also called just after the inferior stops. If we -- had set up a simulated single-step, we undo our damage. */ -+ and breakpoint it. */ - - static int --arm_software_single_step (enum target_signal sig, int insert_bpt) -+arm_software_single_step (struct regcache *regcache) - { - /* NOTE: This may insert the wrong breakpoint instruction when - single-stepping over a mode-changing instruction, if the - CPSR heuristics are used. */ - -- if (insert_bpt) -- { -- CORE_ADDR next_pc = arm_get_next_pc (read_register (ARM_PC_REGNUM)); -- -- insert_single_step_breakpoint (next_pc); -- } -- else -- remove_single_step_breakpoints (); -+ CORE_ADDR next_pc = arm_get_next_pc (read_register (ARM_PC_REGNUM)); -+ insert_single_step_breakpoint (next_pc); - - return 1; - } ---- ./gdb/cris-tdep.c 12 Apr 2007 14:52:19 -0000 1.139 -+++ ./gdb/cris-tdep.c 14 Apr 2007 18:10:54 -0000 1.140 -@@ -2120,38 +2120,33 @@ find_step_target (inst_env_type *inst_en - Either one ordinary target or two targets for branches may be found. */ - - static int --cris_software_single_step (enum target_signal ignore, int insert_breakpoints) -+cris_software_single_step (struct regcache *regcache) - { - inst_env_type inst_env; - -- if (insert_breakpoints) -- { -- /* Analyse the present instruction environment and insert -- breakpoints. */ -- int status = find_step_target (&inst_env); -- if (status == -1) -- { -- /* Could not find a target. Things are likely to go downhill -- from here. */ -- warning (_("CRIS software single step could not find a step target.")); -- } -- else -- { -- /* Insert at most two breakpoints. One for the next PC content -- and possibly another one for a branch, jump, etc. */ -- CORE_ADDR next_pc = (CORE_ADDR) inst_env.reg[PC_REGNUM]; -- insert_single_step_breakpoint (next_pc); -- if (inst_env.branch_found -- && (CORE_ADDR) inst_env.branch_break_address != next_pc) -- { -- CORE_ADDR branch_target_address -- = (CORE_ADDR) inst_env.branch_break_address; -- insert_single_step_breakpoint (branch_target_address); -- } -- } -+ /* Analyse the present instruction environment and insert -+ breakpoints. */ -+ int status = find_step_target (&inst_env); -+ if (status == -1) -+ { -+ /* Could not find a target. Things are likely to go downhill -+ from here. */ -+ warning (_("CRIS software single step could not find a step target.")); - } - else -- remove_single_step_breakpoints (); -+ { -+ /* Insert at most two breakpoints. One for the next PC content -+ and possibly another one for a branch, jump, etc. */ -+ CORE_ADDR next_pc = (CORE_ADDR) inst_env.reg[PC_REGNUM]; -+ insert_single_step_breakpoint (next_pc); -+ if (inst_env.branch_found -+ && (CORE_ADDR) inst_env.branch_break_address != next_pc) -+ { -+ CORE_ADDR branch_target_address -+ = (CORE_ADDR) inst_env.branch_break_address; -+ insert_single_step_breakpoint (branch_target_address); -+ } -+ } - - return 1; - } ---- ./gdb/gdbarch.c 12 Apr 2007 14:52:19 -0000 1.339 -+++ ./gdb/gdbarch.c 14 Apr 2007 18:10:54 -0000 1.340 -@@ -1522,8 +1522,8 @@ gdbarch_dump (struct gdbarch *current_gd - #ifdef SOFTWARE_SINGLE_STEP - fprintf_unfiltered (file, - "gdbarch_dump: %s # %s\n", -- "SOFTWARE_SINGLE_STEP(sig, insert_breakpoints_p)", -- XSTRING (SOFTWARE_SINGLE_STEP (sig, insert_breakpoints_p))); -+ "SOFTWARE_SINGLE_STEP(regcache)", -+ XSTRING (SOFTWARE_SINGLE_STEP (regcache))); - #endif - fprintf_unfiltered (file, - "gdbarch_dump: software_single_step = <0x%lx>\n", -@@ -3290,13 +3290,13 @@ gdbarch_software_single_step_p (struct g - } - - int --gdbarch_software_single_step (struct gdbarch *gdbarch, enum target_signal sig, int insert_breakpoints_p) -+gdbarch_software_single_step (struct gdbarch *gdbarch, struct regcache *regcache) - { - gdb_assert (gdbarch != NULL); - gdb_assert (gdbarch->software_single_step != NULL); - if (gdbarch_debug >= 2) - fprintf_unfiltered (gdb_stdlog, "gdbarch_software_single_step called\n"); -- return gdbarch->software_single_step (sig, insert_breakpoints_p); -+ return gdbarch->software_single_step (regcache); - } - - void ---- ./gdb/gdbarch.h 12 Apr 2007 14:52:19 -0000 1.295 -+++ ./gdb/gdbarch.h 14 Apr 2007 18:10:54 -0000 1.296 -@@ -1173,14 +1173,14 @@ extern int gdbarch_software_single_step_ - #define SOFTWARE_SINGLE_STEP_P() (gdbarch_software_single_step_p (current_gdbarch)) - #endif - --typedef int (gdbarch_software_single_step_ftype) (enum target_signal sig, int insert_breakpoints_p); --extern int gdbarch_software_single_step (struct gdbarch *gdbarch, enum target_signal sig, int insert_breakpoints_p); -+typedef int (gdbarch_software_single_step_ftype) (struct regcache *regcache); -+extern int gdbarch_software_single_step (struct gdbarch *gdbarch, struct regcache *regcache); - extern void set_gdbarch_software_single_step (struct gdbarch *gdbarch, gdbarch_software_single_step_ftype *software_single_step); - #if !defined (GDB_TM_FILE) && defined (SOFTWARE_SINGLE_STEP) - #error "Non multi-arch definition of SOFTWARE_SINGLE_STEP" - #endif - #if !defined (SOFTWARE_SINGLE_STEP) --#define SOFTWARE_SINGLE_STEP(sig, insert_breakpoints_p) (gdbarch_software_single_step (current_gdbarch, sig, insert_breakpoints_p)) -+#define SOFTWARE_SINGLE_STEP(regcache) (gdbarch_software_single_step (current_gdbarch, regcache)) - #endif - - /* Return non-zero if the processor is executing a delay slot and a ---- ./gdb/gdbarch.sh 12 Apr 2007 14:52:19 -0000 1.377 -+++ ./gdb/gdbarch.sh 14 Apr 2007 18:10:54 -0000 1.378 -@@ -628,7 +628,7 @@ f:=:CORE_ADDR:smash_text_address:CORE_AD - # - # A return value of 1 means that the software_single_step breakpoints - # were inserted; 0 means they were not. --F:=:int:software_single_step:enum target_signal sig, int insert_breakpoints_p:sig, insert_breakpoints_p -+F:=:int:software_single_step:struct regcache *regcache:regcache - - # Return non-zero if the processor is executing a delay slot and a - # further single-step is needed before the instruction finishes. ---- ./gdb/infrun.c 13 Apr 2007 13:29:42 -0000 1.227 -+++ ./gdb/infrun.c 14 Apr 2007 18:10:54 -0000 1.228 -@@ -548,7 +548,7 @@ resume (int step, enum target_signal sig - if (SOFTWARE_SINGLE_STEP_P () && step) - { - /* Do it the hard way, w/temp breakpoints */ -- if (SOFTWARE_SINGLE_STEP (sig, 1 /*insert-breakpoints */ )) -+ if (SOFTWARE_SINGLE_STEP (current_regcache)) - { - /* ...and don't ask hardware to do it. */ - step = 0; -@@ -1571,7 +1571,7 @@ handle_inferior_event (struct execution_ - if (debug_infrun) - fprintf_unfiltered (gdb_stdlog, "infrun: stepping_past_singlestep_breakpoint\n"); - /* Pull the single step breakpoints out of the target. */ -- (void) SOFTWARE_SINGLE_STEP (0, 0); -+ remove_single_step_breakpoints (); - singlestep_breakpoints_inserted_p = 0; - - ecs->random_signal = 0; -@@ -1680,7 +1680,7 @@ handle_inferior_event (struct execution_ - if (SOFTWARE_SINGLE_STEP_P () && singlestep_breakpoints_inserted_p) - { - /* Pull the single step breakpoints out of the target. */ -- (void) SOFTWARE_SINGLE_STEP (0, 0); -+ remove_single_step_breakpoints (); - singlestep_breakpoints_inserted_p = 0; - } - -@@ -1751,7 +1751,7 @@ handle_inferior_event (struct execution_ - if (SOFTWARE_SINGLE_STEP_P () && singlestep_breakpoints_inserted_p) - { - /* Pull the single step breakpoints out of the target. */ -- (void) SOFTWARE_SINGLE_STEP (0, 0); -+ remove_single_step_breakpoints (); - singlestep_breakpoints_inserted_p = 0; - } - ---- ./gdb/mips-tdep.c 12 Apr 2007 14:52:19 -0000 1.408 -+++ ./gdb/mips-tdep.c 14 Apr 2007 18:10:54 -0000 1.409 -@@ -2199,26 +2199,17 @@ mips_addr_bits_remove (CORE_ADDR addr) - /* mips_software_single_step() is called just before we want to resume - the inferior, if we want to single-step it but there is no hardware - or kernel single-step support (MIPS on GNU/Linux for example). We find -- the target of the coming instruction and breakpoint it. -- -- single_step is also called just after the inferior stops. If we had -- set up a simulated single-step, we undo our damage. */ -+ the target of the coming instruction and breakpoint it. */ - - int --mips_software_single_step (enum target_signal sig, int insert_breakpoints_p) -+mips_software_single_step (struct regcache *regcache) - { - CORE_ADDR pc, next_pc; - -- if (insert_breakpoints_p) -- { -- pc = read_register (mips_regnum (current_gdbarch)->pc); -- next_pc = mips_next_pc (pc); -- -- insert_single_step_breakpoint (next_pc); -- } -- else -- remove_single_step_breakpoints (); -+ pc = read_register (mips_regnum (current_gdbarch)->pc); -+ next_pc = mips_next_pc (pc); - -+ insert_single_step_breakpoint (next_pc); - return 1; - } - ---- ./gdb/mips-tdep.h 12 Apr 2007 14:52:20 -0000 1.21 -+++ ./gdb/mips-tdep.h 14 Apr 2007 18:10:54 -0000 1.22 -@@ -100,7 +100,7 @@ enum - }; - - /* Single step based on where the current instruction will take us. */ --extern int mips_software_single_step (enum target_signal, int); -+extern int mips_software_single_step (struct regcache *regcache); - - /* Tell if the program counter value in MEMADDR is in a MIPS16 - function. */ ---- ./gdb/rs6000-tdep.c 12 Apr 2007 14:52:20 -0000 1.271 -+++ ./gdb/rs6000-tdep.c 14 Apr 2007 18:10:54 -0000 1.272 -@@ -723,8 +723,7 @@ rs6000_breakpoint_from_pc (CORE_ADDR *bp - /* AIX does not support PT_STEP. Simulate it. */ - - int --rs6000_software_single_step (enum target_signal signal, -- int insert_breakpoints_p) -+rs6000_software_single_step (struct regcache *regcache) - { - CORE_ADDR dummy; - int breakp_sz; -@@ -734,30 +733,25 @@ rs6000_software_single_step (enum target - CORE_ADDR breaks[2]; - int opcode; - -- if (insert_breakpoints_p) -- { -- loc = read_pc (); -+ loc = read_pc (); - -- insn = read_memory_integer (loc, 4); -+ insn = read_memory_integer (loc, 4); - -- breaks[0] = loc + breakp_sz; -- opcode = insn >> 26; -- breaks[1] = branch_dest (opcode, insn, loc, breaks[0]); -+ breaks[0] = loc + breakp_sz; -+ opcode = insn >> 26; -+ breaks[1] = branch_dest (opcode, insn, loc, breaks[0]); - -- /* Don't put two breakpoints on the same address. */ -- if (breaks[1] == breaks[0]) -- breaks[1] = -1; -+ /* Don't put two breakpoints on the same address. */ -+ if (breaks[1] == breaks[0]) -+ breaks[1] = -1; - -- for (ii = 0; ii < 2; ++ii) -- { -- /* ignore invalid breakpoint. */ -- if (breaks[ii] == -1) -- continue; -- insert_single_step_breakpoint (breaks[ii]); -- } -+ for (ii = 0; ii < 2; ++ii) -+ { -+ /* ignore invalid breakpoint. */ -+ if (breaks[ii] == -1) -+ continue; -+ insert_single_step_breakpoint (breaks[ii]); - } -- else -- remove_single_step_breakpoints (); - - errno = 0; /* FIXME, don't ignore errors! */ - /* What errors? {read,write}_memory call error(). */ ---- ./gdb/rs6000-tdep.h 12 Apr 2007 14:52:20 -0000 1.4 -+++ ./gdb/rs6000-tdep.h 14 Apr 2007 18:10:54 -0000 1.5 -@@ -21,8 +21,7 @@ - - #include "defs.h" - --extern int rs6000_software_single_step (enum target_signal signal, -- int insert_breakpoints_p); -+extern int rs6000_software_single_step (struct regcache *regcache); - - /* Hook in rs6000-tdep.c for determining the TOC address when - calling functions in the inferior. */ ---- ./gdb/sparc-tdep.c 12 Apr 2007 14:52:20 -0000 1.180 -+++ ./gdb/sparc-tdep.c 14 Apr 2007 18:10:54 -0000 1.181 -@@ -1330,35 +1330,30 @@ sparc_step_trap (unsigned long insn) - } - - int --sparc_software_single_step (enum target_signal sig, int insert_breakpoints_p) -+sparc_software_single_step (struct regcache *regcache) - { - struct gdbarch *arch = current_gdbarch; - struct gdbarch_tdep *tdep = gdbarch_tdep (arch); - CORE_ADDR npc, nnpc; - -- if (insert_breakpoints_p) -- { -- CORE_ADDR pc, orig_npc; -+ CORE_ADDR pc, orig_npc; - -- pc = sparc_address_from_register (tdep->pc_regnum); -- orig_npc = npc = sparc_address_from_register (tdep->npc_regnum); -+ pc = sparc_address_from_register (tdep->pc_regnum); -+ orig_npc = npc = sparc_address_from_register (tdep->npc_regnum); - -- /* Analyze the instruction at PC. */ -- nnpc = sparc_analyze_control_transfer (arch, pc, &npc); -- if (npc != 0) -- insert_single_step_breakpoint (npc); -- -- if (nnpc != 0) -- insert_single_step_breakpoint (nnpc); -- -- /* Assert that we have set at least one breakpoint, and that -- they're not set at the same spot - unless we're going -- from here straight to NULL, i.e. a call or jump to 0. */ -- gdb_assert (npc != 0 || nnpc != 0 || orig_npc == 0); -- gdb_assert (nnpc != npc || orig_npc == 0); -- } -- else -- remove_single_step_breakpoints (); -+ /* Analyze the instruction at PC. */ -+ nnpc = sparc_analyze_control_transfer (arch, pc, &npc); -+ if (npc != 0) -+ insert_single_step_breakpoint (npc); -+ -+ if (nnpc != 0) -+ insert_single_step_breakpoint (nnpc); -+ -+ /* Assert that we have set at least one breakpoint, and that -+ they're not set at the same spot - unless we're going -+ from here straight to NULL, i.e. a call or jump to 0. */ -+ gdb_assert (npc != 0 || nnpc != 0 || orig_npc == 0); -+ gdb_assert (nnpc != npc || orig_npc == 0); - - return 1; - } ---- ./gdb/sparc-tdep.h 12 Apr 2007 14:52:20 -0000 1.13 -+++ ./gdb/sparc-tdep.h 14 Apr 2007 18:10:54 -0000 1.14 -@@ -167,8 +167,7 @@ extern struct sparc_frame_cache * - - - --extern int sparc_software_single_step (enum target_signal sig, -- int insert_breakpoints_p); -+extern int sparc_software_single_step (struct regcache *regcache); - - extern void sparc_supply_rwindow (struct regcache *regcache, - CORE_ADDR sp, int regnum); - - - -2007-05-11 Ulrich Weigand - - * breakpoint.c (single_step_breakpoint_inserted_here_p): New function. - (breakpoint_inserted_here_p): Call it. - (software_breakpoint_inserted_here_p): Likewise. - ---- ./gdb/breakpoint.c 3 May 2007 17:42:25 -0000 1.247 -+++ ./gdb/breakpoint.c 11 May 2007 12:44:34 -0000 1.248 -@@ -202,6 +202,8 @@ static void tcatch_command (char *arg, i - - static void ep_skip_leading_whitespace (char **s); - -+static int single_step_breakpoint_inserted_here_p (CORE_ADDR pc); -+ - /* Prototypes for exported functions. */ - - /* If FALSE, gdb will not use hardware support for watchpoints, even -@@ -1841,6 +1843,10 @@ breakpoint_inserted_here_p (CORE_ADDR pc - } - } - -+ /* Also check for software single-step breakpoints. */ -+ if (single_step_breakpoint_inserted_here_p (pc)) -+ return 1; -+ - return 0; - } - -@@ -1872,6 +1878,10 @@ software_breakpoint_inserted_here_p (COR - } - } - -+ /* Also check for software single-step breakpoints. */ -+ if (single_step_breakpoint_inserted_here_p (pc)) -+ return 1; -+ - return 0; - } - -@@ -7951,6 +7961,23 @@ remove_single_step_breakpoints (void) - } - } - -+/* Check whether a software single-step breakpoint is inserted at PC. */ -+ -+static int -+single_step_breakpoint_inserted_here_p (CORE_ADDR pc) -+{ -+ int i; -+ -+ for (i = 0; i < 2; i++) -+ { -+ struct bp_target_info *bp_tgt = single_step_breakpoints[i]; -+ if (bp_tgt && bp_tgt->placed_address == pc) -+ return 1; -+ } -+ -+ return 0; -+} -+ - - /* This help string is used for the break, hbreak, tbreak and thbreak commands. - It is defined as a macro to prevent duplication. - - - -2007-05-08 Paul Gilliam - Luis Machado - - * rs6000-tdep.c: (LWARX_MASK, LWARX_INSTRUCTION, LDARX_INSTRUCTION, - STWCX_MASK, STWCX_INSTRUCTION, STDCX_INSTRUCTION, BC_MASK, - BC_INSTRUCTION): Define. - (deal_with_atomic_sequence): New function. - (rs6000_software_single_step): Call deal_with_atomic_sequence. - (rs6000_gdbarch_init): Install deal_with_atomic_sequence as - gdbarch_software_single_step routine. - ---- ./gdb/rs6000-tdep.c 7 May 2007 01:25:07 -0000 1.274 -+++ ./gdb/rs6000-tdep.c 8 May 2007 12:49:12 -0000 1.275 -@@ -707,7 +707,95 @@ rs6000_breakpoint_from_pc (CORE_ADDR *bp - } - - --/* AIX does not support PT_STEP. Simulate it. */ -+/* Instruction masks used during single-stepping of atomic sequences. */ -+#define LWARX_MASK 0xfc0007fe -+#define LWARX_INSTRUCTION 0x7c000028 -+#define LDARX_INSTRUCTION 0x7c0000A8 -+#define STWCX_MASK 0xfc0007ff -+#define STWCX_INSTRUCTION 0x7c00012d -+#define STDCX_INSTRUCTION 0x7c0001ad -+#define BC_MASK 0xfc000000 -+#define BC_INSTRUCTION 0x40000000 -+ -+/* Checks for an atomic sequence of instructions beginning with a LWARX/LDARX -+ instruction and ending with a STWCX/STDCX instruction. If such a sequence -+ is found, attempt to step through it. A breakpoint is placed at the end of -+ the sequence. */ -+ -+static int -+deal_with_atomic_sequence (struct regcache *regcache) -+{ -+ CORE_ADDR pc = read_pc (); -+ CORE_ADDR breaks[2] = {-1, -1}; -+ CORE_ADDR loc = pc; -+ CORE_ADDR branch_bp; /* Breakpoint at branch instruction's destination. */ -+ int insn = read_memory_integer (loc, PPC_INSN_SIZE); -+ int insn_count; -+ int index; -+ int last_breakpoint = 0; /* Defaults to 0 (no breakpoints placed). */ -+ const int atomic_sequence_length = 16; /* Instruction sequence length. */ -+ const int opcode = BC_INSTRUCTION; /* Branch instruction's OPcode. */ -+ int bc_insn_count = 0; /* Conditional branch instruction count. */ -+ -+ /* Assume all atomic sequences start with a lwarx/ldarx instruction. */ -+ if ((insn & LWARX_MASK) != LWARX_INSTRUCTION -+ && (insn & LWARX_MASK) != LDARX_INSTRUCTION) -+ return 0; -+ -+ /* Assume that no atomic sequence is longer than "atomic_sequence_length" -+ instructions. */ -+ for (insn_count = 0; insn_count < atomic_sequence_length; ++insn_count) -+ { -+ loc += PPC_INSN_SIZE; -+ insn = read_memory_integer (loc, PPC_INSN_SIZE); -+ -+ /* Assume that there is at most one conditional branch in the atomic -+ sequence. If a conditional branch is found, put a breakpoint in -+ its destination address. */ -+ if ((insn & BC_MASK) == BC_INSTRUCTION) -+ { -+ if (bc_insn_count >= 1) -+ return 0; /* More than one conditional branch found, fallback -+ to the standard single-step code. */ -+ -+ branch_bp = branch_dest (opcode, insn, pc, breaks[0]); -+ -+ if (branch_bp != -1) -+ { -+ breaks[1] = branch_bp; -+ bc_insn_count++; -+ last_breakpoint++; -+ } -+ } -+ -+ if ((insn & STWCX_MASK) == STWCX_INSTRUCTION -+ || (insn & STWCX_MASK) == STDCX_INSTRUCTION) -+ break; -+ } -+ -+ /* Assume that the atomic sequence ends with a stwcx/stdcx instruction. */ -+ if ((insn & STWCX_MASK) != STWCX_INSTRUCTION -+ && (insn & STWCX_MASK) != STDCX_INSTRUCTION) -+ return 0; -+ -+ loc += PPC_INSN_SIZE; -+ insn = read_memory_integer (loc, PPC_INSN_SIZE); -+ -+ /* Insert a breakpoint right after the end of the atomic sequence. */ -+ breaks[0] = loc; -+ -+ /* Check for duplicated breakpoints. */ -+ if (last_breakpoint && (breaks[1] == breaks[0])) -+ last_breakpoint = 0; -+ -+ /* Effectively inserts the breakpoints. */ -+ for (index = 0; index <= last_breakpoint; index++) -+ insert_single_step_breakpoint (breaks[index]); -+ -+ return 1; -+} -+ -+/* AIX does not support PT_STEP. Simulate it. */ - - int - rs6000_software_single_step (struct regcache *regcache) -@@ -724,6 +812,9 @@ rs6000_software_single_step (struct regc - - insn = read_memory_integer (loc, 4); - -+ if (deal_with_atomic_sequence (regcache)) -+ return 1; -+ - breaks[0] = loc + breakp_sz; - opcode = insn >> 26; - breaks[1] = branch_dest (opcode, insn, loc, breaks[0]); -@@ -3448,6 +3539,9 @@ rs6000_gdbarch_init (struct gdbarch_info - set_gdbarch_inner_than (gdbarch, core_addr_lessthan); - set_gdbarch_breakpoint_from_pc (gdbarch, rs6000_breakpoint_from_pc); - -+ /* Handles single stepping of atomic sequences. */ -+ set_gdbarch_software_single_step (gdbarch, deal_with_atomic_sequence); -+ - /* Handle the 64-bit SVR4 minimal-symbol convention of using "FN" - for the descriptor and ".FN" for the entry-point -- a user - specifying "break FN" will unexpectedly end up with a breakpoint diff --git a/gdb-6.6-bz238285-gcore-strings-overflow.patch b/gdb-6.6-bz238285-gcore-strings-overflow.patch deleted file mode 100644 index 78c67db..0000000 --- a/gdb-6.6-bz238285-gcore-strings-overflow.patch +++ /dev/null @@ -1,151 +0,0 @@ -Failing on _FORTIFY_SOURCE=2 for `gdb.base/corefile.exp'. - - ---- gdb-6.6/gdb/linux-nat.c-orig 2007-04-08 21:12:38.000000000 +0200 -+++ gdb-6.6/gdb/linux-nat.c 2007-04-09 20:05:43.000000000 +0200 -@@ -2838,7 +2838,9 @@ linux_nat_make_corefile_notes (bfd *obfd - { - struct linux_nat_corefile_thread_data thread_args; - struct cleanup *old_chain; -+ /* Length must be >= sizeof (prpsinfo_t.pr_fname). */ - char fname[16] = { '\0' }; -+ /* Length must be >= sizeof (prpsinfo_t.pr_psargs). */ - char psargs[80] = { '\0' }; - char *note_data = NULL; - ptid_t current_ptid = inferior_ptid; -@@ -2851,9 +2853,14 @@ linux_nat_make_corefile_notes (bfd *obfd - strncpy (psargs, get_exec_file (0), sizeof (psargs)); - if (get_inferior_args ()) - { -- strncat (psargs, " ", sizeof (psargs) - strlen (psargs)); -- strncat (psargs, get_inferior_args (), -- sizeof (psargs) - strlen (psargs)); -+ /* linux_elfcore_write_prpsinfo () handles zero non-terminated -+ strings right if they provide enough characters for its purposes. -+ Handle to fully filled (=> zero non-terminated) strings here. */ -+ if (memchr (psargs, 0, sizeof (psargs)) != NULL) -+ strncat (psargs, " ", sizeof (psargs) - strlen (psargs) - 1); -+ if (memchr (psargs, 0, sizeof (psargs)) != NULL) -+ strncat (psargs, get_inferior_args (), -+ sizeof (psargs) - strlen (psargs) - 1); - } - note_data = (char *) linux_elfcore_write_prpsinfo (obfd, note_data, - note_size, fname, - - -2007-04-28 Jan Kratochvil - - * gdb.base/gcore-buffer-overflow.c, gdb.base/gcore-buffer-overflow.exp: - New files. - -Index: ./gdb/testsuite/gdb.base/gcore-buffer-overflow.c -=================================================================== -RCS file: gdb/testsuite/gdb.base/gcore-buffer-overflow.c -diff -N gdb/testsuite/gdb.base/gcore-buffer-overflow.c ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.base/gcore-buffer-overflow.c 28 Apr 2007 18:48:15 -0000 -@@ -0,0 +1,27 @@ -+/* Copyright 2007 Free Software Foundation, Inc. -+ -+ This file is part of GDB. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or (at -+ your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, but -+ WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. */ -+ -+/* -+ * Test GDB's internal buffers safety for the GCORE command. -+ */ -+ -+int main (void) -+{ -+ return 0; -+} -Index: ./gdb/testsuite/gdb.base/gcore-buffer-overflow.exp -=================================================================== -RCS file: gdb/testsuite/gdb.base/gcore-buffer-overflow.exp -diff -N gdb/testsuite/gdb.base/gcore-buffer-overflow.exp ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.base/gcore-buffer-overflow.exp 28 Apr 2007 18:48:15 -0000 -@@ -0,0 +1,70 @@ -+# Copyright 2007 Free Software Foundation, Inc. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, write to the Free Software -+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+# Please email any bugs, comments, and/or additions to this file to: -+# bug-gdb@prep.ai.mit.edu -+ -+# Test GDB's internal buffers safety for the GCORE command. -+ -+if $tracelevel then { -+ strace $tracelevel -+} -+ -+set prms_id 0 -+set bug_id 0 -+ -+set testfile "gcore-buffer-overflow" -+set srcfile ${testfile}.c -+# The ${binfile} basename needs to exceed 80 characters (`sizeof (psargs)') -+# plus some additional data to overwrite the stack frame. -+set pattern 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 -+set binfile ${objdir}/${subdir}/${testfile}-${pattern} -+ -+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { -+ untested gcore.exp -+ return -1 -+} -+ -+# Start with a fresh gdb. -+ -+gdb_exit -+gdb_start -+gdb_reinitialize_dir $srcdir/$subdir -+gdb_load ${binfile} -+ -+gdb_test "set args ${pattern}" \ -+ "" \ -+ "Set buffer exceeding arguments" -+ -+if { ! [ runto_main ] } then { -+ untested gcore-buffer-overflow.exp -+ return -1 -+} -+ -+set escapedfilename [string_to_regexp ${objdir}/${subdir}/gcore-buffer-overflow.test] -+ -+set test "save a corefile" -+gdb_test_multiple "gcore ${objdir}/${subdir}/gcore-buffer-overflow.test" $test { -+ -re "Saved corefile ${escapedfilename}\[\r\n\]+$gdb_prompt $" { -+ pass $test -+ } -+ -re "Can't create a corefile\[\r\n\]+$gdb_prompt $" { -+ unsupported $test -+ } -+ eof { -+ fail $test -+ } -+} diff --git a/gdb-6.6-glibc-open-fcntl2-compat.patch b/gdb-6.6-glibc-open-fcntl2-compat.patch deleted file mode 100644 index aeb502c..0000000 --- a/gdb-6.6-glibc-open-fcntl2-compat.patch +++ /dev/null @@ -1,35 +0,0 @@ -2007-08-08 Jan Kratochvil - - * bfd/opncls.c (bfd_openr_iovec): Fix OPEN parameter macro expansion. - ---- ./bfd/opncls.c 24 Jul 2007 19:58:06 -0000 1.48 -+++ ./bfd/opncls.c 8 Aug 2007 19:12:15 -0000 -@@ -545,7 +545,8 @@ bfd_openr_iovec (const char *filename, c - nbfd->filename = filename; - nbfd->direction = read_direction; - -- stream = open (nbfd, open_closure); -+ /* `open (...)' would get expanded by an the open(2) syscall macro. */ -+ stream = (*open) (nbfd, open_closure); - if (stream == NULL) - { - _bfd_delete_bfd (nbfd); - - - -2007-08-08 Jan Kratochvil - - * serial.c (serial_open): Fix OPEN parameter macro expansion. - ---- ./gdb/serial.c 8 Apr 2007 15:20:07 -0000 1.29 -+++ ./gdb/serial.c 8 Aug 2007 20:32:10 -0000 -@@ -213,7 +213,8 @@ serial_open (const char *name) - scb->bufp = scb->buf; - scb->error_fd = -1; - -- if (scb->ops->open (scb, open_name)) -+ /* `...->open (...)' would get expanded by an the open(2) syscall macro. */ -+ if ((*scb->ops->open) (scb, open_name)) - { - xfree (scb); - return NULL; diff --git a/gdb-6.6-libunwind-major-version.patch b/gdb-6.6-libunwind-major-version.patch deleted file mode 100644 index f98ab8d..0000000 --- a/gdb-6.6-libunwind-major-version.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- gdb-6.6-orig/gdb/libunwind-frame.c 2007-04-08 20:49:09.000000000 +0200 -+++ gdb-6.6/gdb/libunwind-frame.c 2007-04-10 23:45:22.000000000 +0200 -@@ -74,7 +74,9 @@ - #define STRINGIFY(name) STRINGIFY2(name) - - #ifndef LIBUNWIND_SO --#define LIBUNWIND_SO "libunwind-" STRINGIFY(UNW_TARGET) ".so" -+/* Use the stable ABI major version number. `libunwind-ia64.so' is a link time -+ only library, not a runtime one. */ -+#define LIBUNWIND_SO "libunwind-" STRINGIFY(UNW_TARGET) ".so.7" - #endif - - static char *get_reg_name = STRINGIFY(UNW_OBJ(get_reg)); diff --git a/gdb-6.6-readline-system.patch b/gdb-6.6-readline-system.patch index fd51c90..02901e7 100644 --- a/gdb-6.6-readline-system.patch +++ b/gdb-6.6-readline-system.patch @@ -1,234 +1,12 @@ -diff -u -rup gdb-6.6-orig/configure gdb-6.6/configure ---- gdb-6.6-orig/configure 2006-11-15 00:26:39.000000000 +0100 -+++ gdb-6.6/configure 2007-07-04 21:04:45.000000000 +0200 -@@ -895,14 +895,14 @@ build_tools="build-texinfo build-byacc b - - # these libraries are used by various programs built for the host environment - # --host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber" -+host_libs="intl mmalloc libiberty opcodes bfd tcl tk itcl libgui zlib libcpp libdecnumber" - - # these tools are built for the host environment - # Note, the powerpc-eabi build depends on sim occurring before gdb in order to - # know that we are building the simulator. - # binutils, gas and ld appear in that order because it makes sense to run - # "make check" in that particular order. --host_tools="texinfo byacc flex bison binutils gas ld fixincludes gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools" -+host_tools="byacc flex bison binutils gas ld fixincludes gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools" - - # libgcj represents the runtime libraries only used by gcj. - libgcj="target-libffi \ -@@ -1110,7 +1110,7 @@ case "${host}" in - noconfigdirs="$noconfigdirs patch diff make tk tcl expect dejagnu autoconf automake texinfo bison send-pr gprof rcs guile perl itcl gnuserv" - ;; - powerpc-*-beos*) -- noconfigdirs="$noconfigdirs tk itcl libgui gdb dejagnu readline" -+ noconfigdirs="$noconfigdirs tk itcl libgui gdb dejagnu" - ;; - esac - -@@ -1290,7 +1290,7 @@ case "${target}" in - noconfigdirs="$noconfigdirs target-newlib" - case "${host}" in - *-*-cygwin*) ;; # keep gdb and readline -- *) noconfigdirs="$noconfigdirs gdb readline" -+ *) noconfigdirs="$noconfigdirs gdb" - ;; - esac - ;; -@@ -1408,11 +1408,11 @@ case "${target}" in - ;; - ia64*-*-elf*) - # No gdb support yet. -- noconfigdirs="$noconfigdirs readline mmalloc libgui itcl gdb" -+ noconfigdirs="$noconfigdirs mmalloc libgui itcl gdb" - ;; - ia64*-**-hpux*) - # No gdb or ld support yet. -- noconfigdirs="$noconfigdirs ${libgcj} readline mmalloc libgui itcl gdb ld" -+ noconfigdirs="$noconfigdirs ${libgcj} mmalloc libgui itcl gdb ld" - ;; - i370-*-opened*) - ;; -diff -u -rup gdb-6.6-orig/configure.in gdb-6.6/configure.in ---- gdb-6.6-orig/configure.in 2006-12-18 08:22:58.000000000 +0100 -+++ gdb-6.6/configure.in 2007-07-04 21:04:43.000000000 +0200 -@@ -123,7 +123,7 @@ build_tools="build-texinfo build-byacc b - - # these libraries are used by various programs built for the host environment - # --host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber" -+host_libs="intl mmalloc libiberty opcodes bfd tcl tk itcl libgui zlib libcpp libdecnumber" - - # these tools are built for the host environment - # Note, the powerpc-eabi build depends on sim occurring before gdb in order to -@@ -294,7 +294,7 @@ case "${host}" in - noconfigdirs="$noconfigdirs patch diff make tk tcl expect dejagnu autoconf automake texinfo bison send-pr gprof rcs guile perl itcl gnuserv" - ;; - powerpc-*-beos*) -- noconfigdirs="$noconfigdirs tk itcl libgui gdb dejagnu readline" -+ noconfigdirs="$noconfigdirs tk itcl libgui gdb dejagnu" - ;; - esac - -@@ -466,7 +466,7 @@ case "${target}" in - noconfigdirs="$noconfigdirs target-newlib" - case "${host}" in - *-*-cygwin*) ;; # keep gdb and readline -- *) noconfigdirs="$noconfigdirs gdb readline" -+ *) noconfigdirs="$noconfigdirs gdb" - ;; - esac - ;; -@@ -584,11 +584,11 @@ case "${target}" in - ;; - ia64*-*-elf*) - # No gdb support yet. -- noconfigdirs="$noconfigdirs readline mmalloc libgui itcl gdb" -+ noconfigdirs="$noconfigdirs mmalloc libgui itcl gdb" - ;; - ia64*-**-hpux*) - # No gdb or ld support yet. -- noconfigdirs="$noconfigdirs ${libgcj} readline mmalloc libgui itcl gdb ld" -+ noconfigdirs="$noconfigdirs ${libgcj} mmalloc libgui itcl gdb ld" - ;; - i370-*-opened*) - ;; -diff -u -rup gdb-6.6-orig/gdb/Makefile.in gdb-6.6/gdb/Makefile.in ---- gdb-6.6-orig/gdb/Makefile.in 2007-07-04 20:50:06.000000000 +0200 -+++ gdb-6.6/gdb/Makefile.in 2007-07-04 20:58:56.000000000 +0200 -@@ -123,10 +123,10 @@ BFD_SRC = $(srcdir)/$(BFD_DIR) - BFD_CFLAGS = -I$(BFD_DIR) -I$(BFD_SRC) - - # Where is the READLINE library? Typically in ../readline. --READLINE_DIR = ../readline --READLINE = $(READLINE_DIR)/libreadline.a --READLINE_SRC = $(srcdir)/$(READLINE_DIR) --READLINE_CFLAGS = -I$(READLINE_SRC)/.. -+# `readline' is required on the host. -+READLINE = -lreadline -+# Workaround a bug linking `bfd/elf-bfd.h' without `-I../bfd/..'. -+READLINE_CFLAGS = -I$(srcdir)/.. - - # Where is expat? This will be empty if expat was not available. - LIBEXPAT = @LIBEXPAT@ -@@ -595,9 +594,9 @@ remote_sim_h = $(INCLUDE_DIR)/gdb/remote - demangle_h = $(INCLUDE_DIR)/demangle.h - obstack_h = $(INCLUDE_DIR)/obstack.h - opcode_m68hc11_h = $(INCLUDE_DIR)/opcode/m68hc11.h --readline_h = $(READLINE_SRC)/readline.h --readline_tilde_h = $(READLINE_SRC)/tilde.h --readline_history_h = $(READLINE_SRC)/history.h -+readline_h = -+readline_tilde_h = -+readline_history_h = - frv_desc_h = $(OPCODES_SRC)/frv-desc.h - sh_opc_h = $(OPCODES_SRC)/sh-opc.h - gdb_callback_h = $(INCLUDE_DIR)/gdb/callback.h -diff -u -rup gdb-6.6-orig/gdb/configure gdb-6.6/gdb/configure ---- gdb-6.6-orig/gdb/configure 2007-07-04 20:50:06.000000000 +0200 -+++ gdb-6.6/gdb/configure 2007-07-04 21:03:52.000000000 +0200 -@@ -5697,6 +5697,61 @@ echo "$as_me: error: no termcap library - { (exit 1); exit 1; }; } - fi - -+# `-lreadline' is provided specifically by `Makefile.in'. -+saved_LIBS="$LIBS" -+LIBS="-lreadline $LIBS" -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ main() -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ : -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ -+ { { echo "$as_me:$LINENO: error: no readline library found" >&5 -+echo "$as_me: error: no readline library found" >&2;} -+ { (exit 1); exit 1; }; } -+ -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS="$saved_LIBS" -+ - - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" -diff -u -rup gdb-6.6-orig/gdb/configure.ac gdb-6.6/gdb/configure.ac ---- gdb-6.6-orig/gdb/configure.ac 2007-07-04 20:50:06.000000000 +0200 -+++ gdb-6.6/gdb/configure.ac 2007-07-04 21:02:41.000000000 +0200 -@@ -321,6 +321,14 @@ if test "$ac_cv_search_tgetent" = no; th - AC_MSG_ERROR([no termcap library found]) - fi - -+# `-lreadline' is provided specifically by `Makefile.in'. -+saved_LIBS="$LIBS" -+LIBS="-lreadline $LIBS" -+AC_TRY_LINK(,[ main() ],,[ -+ AC_MSG_ERROR([no readline library found]) -+]) -+LIBS="$saved_LIBS" -+ - AC_LIB_HAVE_LINKFLAGS([expat], [], [#include "expat.h"], - [XML_Parser p = XML_ParserCreate (0);]) - if test "$HAVE_LIBEXPAT" != yes; then -diff -u -ru gdb-6.6-orig/gdb/doc/Makefile.in gdb-6.6/gdb/doc/Makefile.in ---- gdb-6.6-orig/gdb/doc/Makefile.in 2006-05-05 20:26:11.000000000 +0200 -+++ gdb-6.6/gdb/doc/Makefile.in 2007-07-05 11:58:30.000000000 +0200 -@@ -58,13 +58,14 @@ - - # Where is the source dir for the READLINE library doc? - # Traditionally readline is in .. or . --READLINE_DIR = ${gdbdir}/../readline/doc -+# `readline' is required on the host. -+#READLINE_DIR = ${gdbdir}/../readline/doc - - # The GDB/MI docs come from a sibling directory ../mi - GDBMI_DIR = ${gdbdir}/mi - - SET_TEXINPUTS = \ -- TEXINPUTS=${TEXIDIR}:.:$(srcdir):$(READLINE_DIR):$(GDBMI_DIR):$$TEXINPUTS -+ TEXINPUTS=${TEXIDIR}:.:$(srcdir):$(GDBMI_DIR):$$TEXINPUTS - - # Files which should be generated via 'info' and installed by 'install-info' - INFO_DEPS = gdb.info gdbint.info stabs.info annotate.info -@@ -100,9 +101,7 @@ +2007-10-16 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/doc/Makefile.in +=================================================================== +--- gdb-6.7.orig/gdb/doc/Makefile.in 2007-07-26 12:34:00.000000000 +0200 ++++ gdb-6.7/gdb/doc/Makefile.in 2007-10-16 16:31:08.000000000 +0200 +@@ -109,9 +109,7 @@ DVIPS = dvips GDB_DOC_SOURCE_INCLUDES = \ $(srcdir)/fdl.texi \ $(srcdir)/gpl.texi \ @@ -239,39 +17,22 @@ diff -u -ru gdb-6.6-orig/gdb/doc/Makefile.in gdb-6.6/gdb/doc/Makefile.in GDB_DOC_BUILD_INCLUDES = \ gdb-cfg.texi \ GDBvn.texi -@@ -299,7 +298,7 @@ +Index: gdb-6.7/gdb/doc/gdb.texinfo +=================================================================== +--- gdb-6.7.orig/gdb/doc/gdb.texinfo 2007-10-16 16:19:19.000000000 +0200 ++++ gdb-6.7/gdb/doc/gdb.texinfo 2007-10-16 16:32:10.000000000 +0200 +@@ -158,8 +158,8 @@ software in general. We will miss him. - # GDB MANUAL: info file - gdb.info: ${GDB_DOC_FILES} -- $(MAKEINFO) -I ${READLINE_DIR} -I ${GDBMI_DIR} -I $(srcdir) \ -+ $(MAKEINFO) -I ${GDBMI_DIR} -I $(srcdir) \ - -o gdb.info $(srcdir)/gdb.texinfo - - # GDB MANUAL: roff translations -@@ -375,7 +374,7 @@ - # GDB MANUAL: HTML file - - gdb_toc.html: ${GDB_DOC_FILES} -- $(MAKEHTML) $(MAKEHTMLFLAGS) -I ${READLINE_DIR} -I ${GDBMI_DIR} -I $(srcdir) $(srcdir)/gdb.texinfo -+ $(MAKEHTML) $(MAKEHTMLFLAGS) -I ${GDBMI_DIR} -I $(srcdir) $(srcdir)/gdb.texinfo - - # Clean these up before each run. Avoids a catch 22 with not being - # able to re-generate these files (to fix a corruption) because these -diff -u -ru gdb-6.6-orig/gdb/doc/gdb.texinfo gdb-6.6/gdb/doc/gdb.texinfo ---- gdb-6.6-orig/gdb/doc/gdb.texinfo 2007-07-04 20:50:06.000000000 +0200 -+++ gdb-6.6/gdb/doc/gdb.texinfo 2007-07-05 13:07:55.000000000 +0200 -@@ -153,8 +153,8 @@ * GDB Bugs:: Reporting bugs in @value{GDBN} - * Formatting Documentation:: How to format and print @value{GDBN} documentation -* Command Line Editing:: Command Line Editing -* Using History Interactively:: Using History Interactively +* Command Line Editing: (rluserman). Command Line Editing +* Using History Interactively: (history). Using History Interactively + * Formatting Documentation:: How to format and print @value{GDBN} documentation * Installing GDB:: Installing GDB * Maintenance Commands:: Maintenance Commands - * Remote Protocol:: GDB Remote Serial Protocol -@@ -15728,7 +15728,7 @@ +@@ -15533,7 +15533,7 @@ Disable command line editing. Show whether command line editing is enabled. @end table @@ -280,7 +41,7 @@ diff -u -ru gdb-6.6-orig/gdb/doc/gdb.texinfo gdb-6.6/gdb/doc/gdb.texinfo interface. Users unfamiliar with @sc{gnu} Emacs or @code{vi} are encouraged to read that chapter. -@@ -15743,7 +15743,8 @@ +@@ -15548,7 +15548,8 @@ history facility. @value{GDBN} uses the @sc{gnu} History library, a part of the Readline package, to provide the history facility. @xref{Using History @@ -289,8 +50,8 @@ diff -u -ru gdb-6.6-orig/gdb/doc/gdb.texinfo gdb-6.6/gdb/doc/gdb.texinfo +of the History library. To issue a command to @value{GDBN} without affecting certain aspects of - the state which is seen by users, prefix it with @samp{server }. This -@@ -15794,7 +15795,7 @@ + the state which is seen by users, prefix it with @samp{server } +@@ -15600,7 +15601,7 @@ This defaults to the value of the enviro @end table History expansion assigns special meaning to the character @kbd{!}. @@ -299,16 +60,17 @@ diff -u -ru gdb-6.6-orig/gdb/doc/gdb.texinfo gdb-6.6/gdb/doc/gdb.texinfo @cindex history expansion, turn on/off Since @kbd{!} is also the logical not operator in C, history expansion -@@ -16867,7 +16868,7 @@ +@@ -16660,7 +16661,8 @@ Indicates the current program counter ad @cindex TUI key bindings The TUI installs several key bindings in the readline keymaps --(@pxref{Command Line Editing}). +-(@pxref{Command Line Editing}). The following key bindings +(@pxref{Command Line Editing, , , rluserman, GNU Readline Library}). - They allow to leave or enter in the TUI mode or they operate - directly on the TUI layout and windows. The TUI also provides - a @emph{SingleKey} keymap which binds several keys directly to -@@ -21934,15 +21935,6 @@ ++The following key bindings + are installed for both TUI mode and the @value{GDBN} standard mode. + + @table @kbd +@@ -21937,15 +21939,6 @@ Such guesses are usually wrong. Even we things without first using the debugger to find the facts. @end itemize @@ -324,7 +86,7 @@ diff -u -ru gdb-6.6-orig/gdb/doc/gdb.texinfo gdb-6.6/gdb/doc/gdb.texinfo @node Formatting Documentation @appendix Formatting Documentation -@@ -22111,9 +22103,6 @@ +@@ -22115,9 +22108,6 @@ source for the @samp{-liberty} free soft @item gdb-@value{GDBVN}/opcodes source for the library of opcode tables and disassemblers @@ -334,7 +96,7 @@ diff -u -ru gdb-6.6-orig/gdb/doc/gdb.texinfo gdb-6.6/gdb/doc/gdb.texinfo @item gdb-@value{GDBVN}/glob source for the @sc{gnu} filename pattern-matching subroutine -@@ -22145,7 +22134,7 @@ +@@ -22149,7 +22139,7 @@ where @var{host} is an identifier such a correct value by examining your system.) Running @samp{configure @var{host}} and then running @code{make} builds the @@ -343,9 +105,9 @@ diff -u -ru gdb-6.6-orig/gdb/doc/gdb.texinfo gdb-6.6/gdb/doc/gdb.texinfo libraries, then @code{gdb} itself. The configured source files, and the binaries, are left in the corresponding source directories. -@@ -22170,7 +22159,7 @@ +@@ -22175,7 +22165,7 @@ source tree, the @file{gdb-@var{version- that subdirectory. That is usually not what you want. In particular, - if you run the first @code{configure} from the @file{gdb} subdirectory + if you run the first @file{configure} from the @file{gdb} subdirectory of the @file{gdb-@var{version-number}} directory, you will omit the -configuration of @file{bfd}, @file{readline}, and other sibling +configuration of @file{bfd}, and other sibling diff --git a/gdb-6.6-upstream.patch b/gdb-6.6-upstream.patch deleted file mode 100644 index 686d6c6..0000000 --- a/gdb-6.6-upstream.patch +++ /dev/null @@ -1,1288 +0,0 @@ -2006-12-28 Daniel Jacobowitz - - * ia64-tdep.c (get_kernel_table): Correct signedness in check - for a negative return value. - - ---- ./gdb/ia64-tdep.c 12 Jul 2006 18:13:45 -0000 1.140 -+++ ./gdb/ia64-tdep.c 28 Dec 2006 23:48:51 -0000 1.141 -@@ -2486,13 +2486,14 @@ get_kernel_table (unw_word_t ip, unw_dyn - if (!ktab) - { - gdb_byte *ktab_buf; -- size_t size; -+ LONGEST size; - -- ktab_size = getunwind_table (&ktab_buf); -- if (ktab_size <= 0) -+ size = getunwind_table (&ktab_buf); -+ if (size <= 0) - return -UNW_ENOINFO; -- else -- ktab = (struct ia64_table_entry *) ktab_buf; -+ -+ ktab = (struct ia64_table_entry *) ktab_buf; -+ ktab_size = size; - - for (etab = ktab; etab->start_offset; ++etab) - etab->info_offset += KERNEL_START; - - -2007-01-11 Daniel Jacobowitz - - * frame.c (get_prev_frame_1): Check PC_REGNUM before using it. - - ---- ./gdb/frame.c 9 Jan 2007 20:19:15 -0000 1.218 -+++ ./gdb/frame.c 11 Jan 2007 17:18:22 -0000 1.219 -@@ -1221,10 +1221,17 @@ get_prev_frame_1 (struct frame_info *thi - have different frame IDs, the new frame will be bogus; two - functions can't share a register save slot for the PC. This can - happen when the prologue analyzer finds a stack adjustment, but -- no PC save. This check does assume that the "PC register" is -- roughly a traditional PC, even if the gdbarch_unwind_pc method -- frobs it. */ -+ no PC save. -+ -+ This check does assume that the "PC register" is roughly a -+ traditional PC, even if the gdbarch_unwind_pc method adjusts -+ it (we do not rely on the value, only on the unwound PC being -+ dependent on this value). A potential improvement would be -+ to have the frame prev_pc method and the gdbarch unwind_pc -+ method set the same lval and location information as -+ frame_register_unwind. */ - if (this_frame->level > 0 -+ && PC_REGNUM >= 0 - && get_frame_type (this_frame) == NORMAL_FRAME - && get_frame_type (this_frame->next) == NORMAL_FRAME) - { - - -2007-01-20 Daniel Jacobowitz - - * arch-utils.c (show_endian): Correct reversed condition. - - ---- ./gdb/arch-utils.c 13 Jan 2007 23:24:43 -0000 1.138 -+++ ./gdb/arch-utils.c 20 Jan 2007 18:16:33 -0000 -@@ -322,7 +322,7 @@ static void - show_endian (struct ui_file *file, int from_tty, struct cmd_list_element *c, - const char *value) - { -- if (target_byte_order_user != BFD_ENDIAN_UNKNOWN) -+ if (target_byte_order_user == BFD_ENDIAN_UNKNOWN) - if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) - fprintf_unfiltered (file, _("The target endianness is set automatically " - "(currently big endian)\n")); - - -https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=224128 - - -2007-01-26 Jan Kratochvil - - * c-valprint.c (c_val_print): Require strings to be of no-signed CHARs. - * NEWS: Describe CHAR array vs. string identifcation rules. - -2007-01-26 Jan Kratochvil - Eli Zaretskii - - * gdb.texinfo: Describe CHAR array vs. string identifcation rules. - -2007-01-25 Jan Kratochvil - - * gdb.base/charsign.exp, gdb.base/charsign.c: New files. - * gdb.arch/i386-sse.exp: Check $xmm.v16_int8 printing as a number array. - * gdb.base/printcmds.exp: Sign-provided CHARs now became arrays. - * gdb.base/setvar.exp: Likewise. - - ---- ./gdb/NEWS 21 Jan 2007 17:48:53 -0000 1.211 -+++ ./gdb/NEWS 26 Jan 2007 10:31:48 -0000 -@@ -15,6 +15,9 @@ frequency signals (e.g. SIGALRM) via the - target's overall architecture. GDB can read a description from - a local file or over the remote serial protocol. - -+* Arrays of explicitly SIGNED or UNSIGNED CHARs are now printed as arrays -+ of numbers. -+ - * New commands - - set mem inaccessible-by-default ---- ./gdb/c-valprint.c 9 Jan 2007 17:58:50 -0000 1.41 -+++ ./gdb/c-valprint.c 26 Jan 2007 10:31:48 -0000 -@@ -96,7 +96,7 @@ c_val_print (struct type *type, const gd - } - /* For an array of chars, print with string syntax. */ - if (eltlen == 1 && -- ((TYPE_CODE (elttype) == TYPE_CODE_INT) -+ ((TYPE_CODE (elttype) == TYPE_CODE_INT && TYPE_NOSIGN (elttype)) - || ((current_language->la_language == language_m2) - && (TYPE_CODE (elttype) == TYPE_CODE_CHAR))) - && (format == 0 || format == 's')) ---- ./gdb/doc/gdb.texinfo 26 Jan 2007 08:54:01 -0000 1.380 -+++ ./gdb/doc/gdb.texinfo 26 Jan 2007 10:32:00 -0000 -@@ -5632,6 +5632,26 @@ If you ask to print an object whose cont - by the debug information, @value{GDBN} will say @samp{}. @xref{Symbols, incomplete type}, for more about this. - -+Strings are identified as arrays of @code{char} values without specified -+signedness. Arrays of either @code{signed char} or @code{unsigned char} get -+printed as arrays of 1 byte sized integers. @code{-fsigned-char} or -+@code{-funsigned-char} @value{NGCC} options have no effect as @value{GDBN} -+defines literal string type @code{"char"} as @code{char} without a sign. -+For program code -+ -+@smallexample -+char var0[] = "A"; -+signed char var1[] = "A"; -+@end smallexample -+ -+You get during debugging -+@smallexample -+(gdb) print var0 -+$1 = "A" -+(gdb) print var1 -+$2 = @{65 'A', 0 '\0'@} -+@end smallexample -+ - @node Arrays - @section Artificial arrays - ---- ./gdb/testsuite/gdb.arch/i386-sse.exp 9 Jan 2007 17:59:09 -0000 1.5 -+++ ./gdb/testsuite/gdb.arch/i386-sse.exp 26 Jan 2007 10:32:00 -0000 -@@ -83,7 +83,10 @@ gdb_continue_to_breakpoint "continue to - foreach r {0 1 2 3 4 5 6 7} { - gdb_test "print \$xmm$r.v4_float" \ - ".. = \\{$r, $r.25, $r.5, $r.75\\}.*" \ -- "check contents of %xmm$r" -+ "check float contents of %xmm$r" -+ gdb_test "print \$xmm$r.v16_int8" \ -+ ".. = \\{(-?\[0-9\]+ '.*', ){15}-?\[0-9\]+ '.*'\\}.*" \ -+ "check int8 contents of %xmm$r" - } - - foreach r {0 1 2 3 4 5 6 7} { ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.base/charsign.c 26 Jan 2007 10:32:00 -0000 -@@ -0,0 +1,37 @@ -+/* This testcase is part of GDB, the GNU debugger. -+ -+ Copyright 2007 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+ Please email any bugs, comments, and/or additions to this file to: -+ bug-gdb@prep.ai.mit.edu */ -+ -+int main() -+{ -+ return 0; -+} -+ -+char n[]="A"; -+signed char s[]="A"; -+unsigned char u[]="A"; -+ -+typedef char char_n; -+typedef signed char char_s; -+typedef unsigned char char_u; -+ -+char_n n_typed[]="A"; -+char_s s_typed[]="A"; -+char_u u_typed[]="A"; ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./gdb/testsuite/gdb.base/charsign.exp 26 Jan 2007 10:32:00 -0000 -@@ -0,0 +1,70 @@ -+# Copyright 2007 Free Software Foundation, Inc. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, write to the Free Software -+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+if $tracelevel then { -+ strace $tracelevel -+} -+ -+set prms_id 0 -+set bug_id 0 -+ -+set testfile charsign -+set srcfile ${testfile}.c -+set binfile ${objdir}/${subdir}/${testfile} -+ -+proc do_test { cflags } { -+ global srcdir -+ global binfile -+ global subdir -+ global srcfile -+ global gdb_prompt -+ -+ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug additional_flags=$cflags]] != "" } { -+ untested "Couldn't compile test program" -+ return -1 -+ } -+ -+ # Get things started. -+ -+ gdb_exit -+ gdb_start -+ gdb_reinitialize_dir $srcdir/$subdir -+ gdb_load ${binfile} -+ -+ # For C programs, "start" should stop in main(). -+ -+ gdb_test "p n" \ -+ "= \"A\"" -+ gdb_test "p s" \ -+ "= \\{65 'A', 0 '\\\\0'\\}" -+ gdb_test "p u" \ -+ "= \\{65 'A', 0 '\\\\0'\\}" -+ gdb_test "p n_typed" \ -+ "= \"A\"" -+ gdb_test "p s_typed" \ -+ "= \\{65 'A', 0 '\\\\0'\\}" -+ gdb_test "p u_typed" \ -+ "= \\{65 'A', 0 '\\\\0'\\}" -+} -+ -+# The string identification works despite the compiler flags below due to -+# gdbtypes.c: -+# if (name && strcmp (name, "char") == 0) -+# TYPE_FLAGS (type) |= TYPE_FLAG_NOSIGN; -+ -+do_test {} -+do_test {-fsigned-char} -+do_test {-funsigned-char} ---- ./gdb/testsuite/gdb.base/printcmds.exp 9 Jan 2007 17:59:11 -0000 1.14 -+++ ./gdb/testsuite/gdb.base/printcmds.exp 26 Jan 2007 10:32:01 -0000 -@@ -590,18 +590,18 @@ proc test_print_char_arrays {} { - gdb_test "set print address on" "" - - gdb_test "p arrays" \ -- " = {array1 = \"abc\", array2 = \"d\", array3 = \"e\", array4 = \"fg\", array5 = \"hij\"}" -+ " = \\{array1 = \\{97 'a', 98 'b', 99 'c', 0 '\\\\0'\\}, array2 = \\{100 'd'\\}, array3 = \\{101 'e'\\}, array4 = \\{102 'f', 103 'g'\\}, array5 = \\{104 'h', 105 'i', 106 'j', 0 '\\\\0'\\}\\}" - - gdb_test "p parrays" " = \\(struct some_arrays \\*\\) $hex" -- gdb_test "p parrays->array1" " = \"abc\"" -+ gdb_test "p parrays->array1" " = \\{97 'a', 98 'b', 99 'c', 0 '\\\\0'\\}" - gdb_test "p &parrays->array1" " = \\(unsigned char \\(\\*\\)\\\[4\\\]\\) $hex" -- gdb_test "p parrays->array2" " = \"d\"" -+ gdb_test "p parrays->array2" " = \\{100 'd'\\}" - gdb_test "p &parrays->array2" " = \\(unsigned char \\(\\*\\)\\\[1\\\]\\) $hex" -- gdb_test "p parrays->array3" " = \"e\"" -+ gdb_test "p parrays->array3" " = \\{101 'e'\\}" - gdb_test "p &parrays->array3" " = \\(unsigned char \\(\\*\\)\\\[1\\\]\\) $hex" -- gdb_test "p parrays->array4" " = \"fg\"" -+ gdb_test "p parrays->array4" " = \\{102 'f', 103 'g'\\}" - gdb_test "p &parrays->array4" " = \\(unsigned char \\(\\*\\)\\\[2\\\]\\) $hex" -- gdb_test "p parrays->array5" " = \"hij\"" -+ gdb_test "p parrays->array5" " = \\{104 'h', 105 'i', 106 'j', 0 '\\\\0'\\}" - gdb_test "p &parrays->array5" " = \\(unsigned char \\(\\*\\)\\\[4\\\]\\) $hex" - - gdb_test "set print address off" "" ---- ./gdb/testsuite/gdb.base/setvar.exp 9 Jan 2007 17:59:11 -0000 1.10 -+++ ./gdb/testsuite/gdb.base/setvar.exp 26 Jan 2007 10:32:01 -0000 -@@ -233,11 +233,11 @@ test_set "set variable v_char_array\[0\] - # - # test "set variable" for "signed char array[2]" - # --test_set "set variable v_signed_char_array\[0\]='h'" "set variable v_signed_char_array\[1\]='i'" "print v_signed_char_array" ".*.\[0-9\]* =.*\"hi\"" "set variable signed char array=\"hi\" (string)" -+test_set "set variable v_signed_char_array\[0\]='h'" "set variable v_signed_char_array\[1\]='i'" "print v_signed_char_array" ".*.\[0-9\]* =.*\\{104 'h', 105 'i'\\}" "set variable signed char array=\"hi\" (string)" - # - # test "set variable" for "unsigned char array[2]" - # --test_set "set variable v_unsigned_char_array\[0\]='h'" "set variable v_unsigned_char_array\[1\]='i'" "print v_unsigned_char_array" ".*.\[0-9\]* =.*\"hi\"" "set variable unsigned char array=\"hi\" (string)" -+test_set "set variable v_unsigned_char_array\[0\]='h'" "set variable v_unsigned_char_array\[1\]='i'" "print v_unsigned_char_array" ".*.\[0-9\]* =.*\\{104 'h', 105 'i'\\}" "set variable unsigned char array=\"hi\" (string)" - # - # test "set variable" for "short array[2]" - # -@@ -289,11 +289,11 @@ test_set "set v_char_pointer=v_char_arra - # - # test "set variable" for type "signed char *" - # --test_set "set v_signed_char_pointer=v_signed_char_array" "set variable *(v_signed_char_pointer)='h'" "set variable *(v_signed_char_pointer+1)='i'" "print v_signed_char_array" ".*.\[0-9\]* =.*\"hi\"" "print *(v_signed_char_pointer+1)" ".*.\[0-9\]* = 105 \'i\'" "set variable signed char pointer=\"hi\" (string)" -+test_set "set v_signed_char_pointer=v_signed_char_array" "set variable *(v_signed_char_pointer)='h'" "set variable *(v_signed_char_pointer+1)='i'" "print v_signed_char_array" ".*.\[0-9\]* =.*\\{104 'h', 105 'i'\\}" "print *(v_signed_char_pointer+1)" ".*.\[0-9\]* = 105 \'i\'" "set variable signed char pointer=\"hi\" (string)" - # - # test "set variable" for type "unsigned char *" - # --test_set "set v_unsigned_char_pointer=v_unsigned_char_array" "set variable *(v_unsigned_char_pointer)='h'" "set variable *(v_unsigned_char_pointer+1)='i'" "print v_unsigned_char_array" ".*.\[0-9\]* =.*\"hi\"" "print *(v_unsigned_char_pointer+1)" ".*.\[0-9\]* = 105 \'i\'" "set variable unsigned char pointer=\"hi\" (string)" -+test_set "set v_unsigned_char_pointer=v_unsigned_char_array" "set variable *(v_unsigned_char_pointer)='h'" "set variable *(v_unsigned_char_pointer+1)='i'" "print v_unsigned_char_array" ".*.\[0-9\]* =.*\\{104 'h', 105 'i'\\}" "print *(v_unsigned_char_pointer+1)" ".*.\[0-9\]* = 105 \'i\'" "set variable unsigned char pointer=\"hi\" (string)" - # - # test "set variable" for type "short *" - # - - -https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=209445 - - -[ backported ] -2006-12-31 Daniel Jacobowitz - - * linux-nat.c (lin_lwp_attach_lwp): Return a status. Do not - add the LWP to our list until we are attached. Warn instead - of erroring if the attach fails. - * linux-nat.h (lin_lwp_attach_lwp): New prototype. - * linux-thread-db.c (attach_thread): Call lin_lwp_attach_lwp - directly. Do not add the thread to our list until we are - successfully attached. - * config/nm-linux.h (lin_lwp_attach_lwp, ATTACH_LWP): Delete. - - ---- ./gdb/linux-nat.c 20 Nov 2006 21:47:06 -0000 1.51 -+++ ./gdb/linux-nat.c 31 Dec 2006 21:04:51 -0000 1.52 -@@ -915,12 +915,13 @@ exit_lwp (struct lwp_info *lp) - - /* Attach to the LWP specified by PID. If VERBOSE is non-zero, print - a message telling the user that a new LWP has been added to the -- process. */ -+ process. Return 0 if successful or -1 if the new LWP could not -+ be attached. */ - --void -+int - lin_lwp_attach_lwp (ptid_t ptid, int verbose) - { -- struct lwp_info *lp, *found_lp; -+ struct lwp_info *lp; - - gdb_assert (is_lwp (ptid)); - -@@ -932,12 +933,7 @@ lin_lwp_attach_lwp (ptid_t ptid, int ver - sigprocmask (SIG_BLOCK, &blocked_mask, NULL); - } - -- if (verbose) -- printf_filtered (_("[New %s]\n"), target_pid_to_str (ptid)); -- -- found_lp = lp = find_lwp_pid (ptid); -- if (lp == NULL) -- lp = add_lwp (ptid); -+ lp = find_lwp_pid (ptid); - - /* We assume that we're already attached to any LWP that has an id - equal to the overall process id, and to any LWP that is already -@@ -945,14 +941,25 @@ lin_lwp_attach_lwp (ptid_t ptid, int ver - and we've had PID wraparound since we last tried to stop all threads, - this assumption might be wrong; fortunately, this is very unlikely - to happen. */ -- if (GET_LWP (ptid) != GET_PID (ptid) && found_lp == NULL) -+ if (GET_LWP (ptid) != GET_PID (ptid) && lp == NULL) - { - pid_t pid; - int status; - - if (ptrace (PTRACE_ATTACH, GET_LWP (ptid), 0, 0) < 0) -- error (_("Can't attach %s: %s"), target_pid_to_str (ptid), -- safe_strerror (errno)); -+ { -+ /* If we fail to attach to the thread, issue a warning, -+ but continue. One way this can happen is if thread -+ creation is interrupted; as of Linux 2.6.19, a kernel -+ bug may place threads in the thread list and then fail -+ to create them. */ -+ warning (_("Can't attach %s: %s"), target_pid_to_str (ptid), -+ safe_strerror (errno)); -+ return -1; -+ } -+ -+ if (lp == NULL) -+ lp = add_lwp (ptid); - - if (debug_linux_nat) - fprintf_unfiltered (gdb_stdlog, -@@ -990,8 +997,15 @@ lin_lwp_attach_lwp (ptid_t ptid, int ver - threads. Note that this won't have already been done since - the main thread will have, we assume, been stopped by an - attach from a different layer. */ -+ if (lp == NULL) -+ lp = add_lwp (ptid); - lp->stopped = 1; - } -+ -+ if (verbose) -+ printf_filtered (_("[New %s]\n"), target_pid_to_str (ptid)); -+ -+ return 0; - } - - static void ---- ./gdb/linux-nat.h 20 Nov 2006 21:47:06 -0000 1.13 -+++ ./gdb/linux-nat.h 31 Dec 2006 21:04:51 -0000 1.14 -@@ -80,6 +80,8 @@ extern void linux_enable_event_reporting - extern ptid_t linux_handle_extended_wait (int pid, int status, - struct target_waitstatus *ourstatus); - -+extern int lin_lwp_attach_lwp (ptid_t ptid, int verbose); -+ - /* Iterator function for lin-lwp's lwp list. */ - struct lwp_info *iterate_over_lwps (int (*callback) (struct lwp_info *, - void *), ---- ./gdb/config/nm-linux.h 28 Nov 2006 19:45:07 -0000 1.27 -+++ ./gdb/config/nm-linux.h 31 Dec 2006 21:04:51 -0000 1.28 -@@ -1,6 +1,6 @@ - /* Native support for GNU/Linux. - -- Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005 -+ Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. - - This file is part of GDB. -@@ -25,9 +25,6 @@ struct target_ops; - /* GNU/Linux is SVR4-ish but its /proc file system isn't. */ - #undef USE_PROC_FS - --extern void lin_lwp_attach_lwp (ptid_t ptid, int verbose); --#define ATTACH_LWP(ptid, verbose) lin_lwp_attach_lwp ((ptid), (verbose)) -- - extern void lin_thread_get_thread_signals (sigset_t *mask); - #define GET_THREAD_SIGNALS(mask) lin_thread_get_thread_signals (mask) - ---- gdb-6.6/gdb-orig/linux-thread-db.c 2007-01-30 14:10:38.000000000 -0500 -+++ gdb-6.6/gdb/linux-thread-db.c 2007-01-30 14:16:22.000000000 -0500 -@@ -678,6 +678,13 @@ - - check_thread_signals (); - -+ if (ti_p->ti_state == TD_THR_UNKNOWN || ti_p->ti_state == TD_THR_ZOMBIE) -+ return; /* A zombie thread -- do not attach. */ -+ -+ /* Under GNU/Linux, we have to attach to each and every thread. */ -+ if (lin_lwp_attach_lwp (BUILD_LWP (ti_p->ti_lid, GET_PID (ptid)), 0) < 0) -+ return; -+ - /* Add the thread to GDB's thread list. */ - tp = add_thread (ptid); - tp->private = xmalloc (sizeof (struct private_thread_info)); -@@ -686,20 +693,10 @@ - if (verbose) - printf_unfiltered (_("[New %s]\n"), target_pid_to_str (ptid)); - -- if (ti_p->ti_state == TD_THR_UNKNOWN || ti_p->ti_state == TD_THR_ZOMBIE) -- return; /* A zombie thread -- do not attach. */ -- -- new_ptid = BUILD_LWP (ti_p->ti_lid, GET_PID (ptid)); -- -- /* Under GNU/Linux, we have to attach to each and every thread. */ --#ifdef ATTACH_LWP -- ATTACH_LWP (new_ptid, 0); --#endif -- - /* Notify any observers of a new linux thread. This - would include any linux platforms that have to insert hardware - watchpoints on every thread. */ -- observer_notify_linux_new_thread (new_ptid); -+ observer_notify_linux_new_thread (BUILD_LWP (ti_p->ti_lid, GET_PID (ptid))); - - /* Enable thread event reporting for this thread. */ - err = td_thr_event_enable_p (th_p, 1); - - -https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=230000 - - -2007-02-08 Thiago Jung Bauermann - - * rs6000-tdep.c (gdb_print_insn_powerpc): Set - info->disassembler_options to "any". - - ---- ./gdb/rs6000-tdep.c 8 Feb 2007 14:22:53 -0000 1.261 -+++ ./gdb/rs6000-tdep.c 8 Feb 2007 18:05:23 -0000 1.262 -@@ -2924,6 +2924,9 @@ find_variant_by_arch (enum bfd_architect - static int - gdb_print_insn_powerpc (bfd_vma memaddr, disassemble_info *info) - { -+ if (!info->disassembler_options) -+ info->disassembler_options = "any"; -+ - if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) - return print_insn_big_powerpc (memaddr, info); - else - - -https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=232353 - - -2007-01-27 Daniel Jacobowitz - - * dwarf2loc.h (struct dwarf2_locexpr_baton): Change size to a long. - (struct dwarf2_loclist_baton): Likewise. - - ---- ./gdb/dwarf2loc.h 17 Dec 2005 22:33:59 -0000 1.6 -+++ ./gdb/dwarf2loc.h 5 Jan 2007 15:31:17 -0000 -@@ -39,7 +39,7 @@ struct dwarf2_locexpr_baton - gdb_byte *data; - - /* Length of the location expression. */ -- unsigned short size; -+ unsigned long size; - - /* The objfile containing the symbol whose location we're computing. */ - struct objfile *objfile; -@@ -55,7 +55,7 @@ struct dwarf2_loclist_baton - gdb_byte *data; - - /* Length of the location list. */ -- unsigned short size; -+ unsigned long size; - - /* The objfile containing the symbol whose location we're computing. */ - /* Used (only???) by thread local variables. The objfile in which - - -https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=230000 - - -Fixes embarrassing errors in the ppc dfp instructions committed some -time ago. IBM numbers bits in architecture manuals starting from zero -in the most signifigant bit. Fields are marked by numbering their -most signifigant bit too. This means some translating is required when -filling out new powerpc_operand entries. You can't just plug IBM -numbers into the shift counts. Also, Z_MASK is too big for -instructions that take RMC operands. - - * ppc-opc.c (DCM, DGM, TE, RMC, R, SP, S): Correct shift. - (Z2_MASK): Define. - (powerpc_opcodes): Use Z2_MASK in all insns taking RMC operand. - ---- ./opcodes/ppc-opc.c 19 Apr 2007 01:39:31 -0000 1.91 -+++ ./opcodes/ppc-opc.c 20 Apr 2007 09:52:09 -0000 -@@ -530,8 +530,9 @@ const struct powerpc_operand powerpc_ope - #define SIMM VD + 1 - { 5, 16, NULL, NULL, PPC_OPERAND_SIGNED}, - -- /* The UIMM field in a VX form instruction. */ -+ /* The UIMM field in a VX form instruction, and TE in Z form. */ - #define UIMM SIMM + 1 -+#define TE UIMM - { 5, 16, NULL, NULL, 0 }, - - /* The SHB field in a VA form instruction. */ -@@ -564,31 +565,23 @@ const struct powerpc_operand powerpc_ope - #define A_L MTMSRD_L - { 1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL }, - -- /* The DCM field in a Z form instruction. */ --#define DCM MTMSRD_L + 1 -- { 6, 16, NULL, NULL, 0 }, -- -- /* Likewise, the DGM field in a Z form instruction. */ --#define DGM DCM + 1 -- { 6, 16, NULL, NULL, 0 }, -- --#define TE DGM + 1 -- { 5, 11, NULL, NULL, 0 }, -- --#define RMC TE + 1 -- { 2, 21, NULL, NULL, 0 }, -+#define RMC A_L + 1 -+ { 2, 9, NULL, NULL, 0 }, - - #define R RMC + 1 -- { 1, 15, NULL, NULL, 0 }, -+ { 1, 16, NULL, NULL, 0 }, - - #define SP R + 1 -- { 2, 11, NULL, NULL, 0 }, -+ { 2, 19, NULL, NULL, 0 }, - - #define S SP + 1 -- { 1, 11, NULL, NULL, 0 }, -+ { 1, 20, NULL, NULL, 0 }, - - /* SH field starting at bit position 16. */ - #define SH16 S + 1 -+ /* The DCM and DGM fields in a Z form instruction. */ -+#define DCM SH16 -+#define DGM DCM - { 6, 10, NULL, NULL, 0 }, - - /* The L field in an X form with the RT field fixed instruction. */ -@@ -1683,6 +1676,7 @@ extract_tbr (unsigned long insn, - - /* The mask for a Z form instruction. */ - #define Z_MASK ZRC (0x3f, 0x1ff, 1) -+#define Z2_MASK ZRC (0x3f, 0xff, 1) - - /* An X_MASK with the RA field fixed. */ - #define XRA_MASK (X_MASK | RA_MASK) -@@ -4639,8 +4633,8 @@ const struct powerpc_opcode powerpc_opco - { "dadd", XRC(59,2,0), X_MASK, POWER6, { FRT, FRA, FRB } }, - { "dadd.", XRC(59,2,1), X_MASK, POWER6, { FRT, FRA, FRB } }, - --{ "dqua", ZRC(59,3,0), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, --{ "dqua.", ZRC(59,3,1), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, -+{ "dqua", ZRC(59,3,0), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, -+{ "dqua.", ZRC(59,3,1), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, - - { "fdivs", A(59,18,0), AFRC_MASK, PPC, { FRT, FRA, FRB } }, - { "fdivs.", A(59,18,1), AFRC_MASK, PPC, { FRT, FRA, FRB } }, -@@ -4678,20 +4672,20 @@ const struct powerpc_opcode powerpc_opco - { "dmul", XRC(59,34,0), X_MASK, POWER6, { FRT, FRA, FRB } }, - { "dmul.", XRC(59,34,1), X_MASK, POWER6, { FRT, FRA, FRB } }, - --{ "drrnd", ZRC(59,35,0), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, --{ "drrnd.", ZRC(59,35,1), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, -+{ "drrnd", ZRC(59,35,0), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, -+{ "drrnd.", ZRC(59,35,1), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, - - { "dscli", ZRC(59,66,0), Z_MASK, POWER6, { FRT, FRA, SH16 } }, - { "dscli.", ZRC(59,66,1), Z_MASK, POWER6, { FRT, FRA, SH16 } }, - --{ "dquai", ZRC(59,67,0), Z_MASK, POWER6, { TE, FRT, FRB, RMC } }, --{ "dquai.", ZRC(59,67,1), Z_MASK, POWER6, { TE, FRT, FRB, RMC } }, -+{ "dquai", ZRC(59,67,0), Z2_MASK, POWER6, { TE, FRT, FRB, RMC } }, -+{ "dquai.", ZRC(59,67,1), Z2_MASK, POWER6, { TE, FRT, FRB, RMC } }, - - { "dscri", ZRC(59,98,0), Z_MASK, POWER6, { FRT, FRA, SH16 } }, - { "dscri.", ZRC(59,98,1), Z_MASK, POWER6, { FRT, FRA, SH16 } }, - --{ "drintx", ZRC(59,99,0), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, --{ "drintx.", ZRC(59,99,1), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, -+{ "drintx", ZRC(59,99,0), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, -+{ "drintx.", ZRC(59,99,1), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, - - { "dcmpo", X(59,130), X_MASK, POWER6, { BF, FRA, FRB } }, - -@@ -4699,8 +4693,8 @@ const struct powerpc_opcode powerpc_opco - { "dtstdc", Z(59,194), Z_MASK, POWER6, { BF, FRA, DCM } }, - { "dtstdg", Z(59,226), Z_MASK, POWER6, { BF, FRA, DGM } }, - --{ "drintn", ZRC(59,227,0), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, --{ "drintn.", ZRC(59,227,1), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, -+{ "drintn", ZRC(59,227,0), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, -+{ "drintn.", ZRC(59,227,1), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, - - { "dctdp", XRC(59,258,0), X_MASK, POWER6, { FRT, FRB } }, - { "dctdp.", XRC(59,258,1), X_MASK, POWER6, { FRT, FRB } }, -@@ -4766,8 +4760,8 @@ const struct powerpc_opcode powerpc_opco - { "daddq", XRC(63,2,0), X_MASK, POWER6, { FRT, FRA, FRB } }, - { "daddq.", XRC(63,2,1), X_MASK, POWER6, { FRT, FRA, FRB } }, - --{ "dquaq", ZRC(63,3,0), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, --{ "dquaq.", ZRC(63,3,1), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, -+{ "dquaq", ZRC(63,3,0), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, -+{ "dquaq.", ZRC(63,3,1), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, - - { "fcpsgn", XRC(63,8,0), X_MASK, POWER6, { FRT, FRA, FRB } }, - { "fcpsgn.", XRC(63,8,1), X_MASK, POWER6, { FRT, FRA, FRB } }, -@@ -4842,8 +4836,8 @@ const struct powerpc_opcode powerpc_opco - { "dmulq", XRC(63,34,0), X_MASK, POWER6, { FRT, FRA, FRB } }, - { "dmulq.", XRC(63,34,1), X_MASK, POWER6, { FRT, FRA, FRB } }, - --{ "drrndq", ZRC(63,35,0), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, --{ "drrndq.", ZRC(63,35,1), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, -+{ "drrndq", ZRC(63,35,0), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, -+{ "drrndq.", ZRC(63,35,1), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, - - { "mtfsb1", XRC(63,38,0), XRARB_MASK, COM, { BT } }, - { "mtfsb1.", XRC(63,38,1), XRARB_MASK, COM, { BT } }, -@@ -4856,8 +4850,8 @@ const struct powerpc_opcode powerpc_opco - { "dscliq", ZRC(63,66,0), Z_MASK, POWER6, { FRT, FRA, SH16 } }, - { "dscliq.", ZRC(63,66,1), Z_MASK, POWER6, { FRT, FRA, SH16 } }, - --{ "dquaiq", ZRC(63,67,0), Z_MASK, POWER6, { TE, FRT, FRB, RMC } }, --{ "dquaiq.", ZRC(63,67,1), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, -+{ "dquaiq", ZRC(63,67,0), Z2_MASK, POWER6, { TE, FRT, FRB, RMC } }, -+{ "dquaiq.", ZRC(63,67,1), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, - - { "mtfsb0", XRC(63,70,0), XRARB_MASK, COM, { BT } }, - { "mtfsb0.", XRC(63,70,1), XRARB_MASK, COM, { BT } }, -@@ -4868,8 +4862,8 @@ const struct powerpc_opcode powerpc_opco - { "dscriq", ZRC(63,98,0), Z_MASK, POWER6, { FRT, FRA, SH16 } }, - { "dscriq.", ZRC(63,98,1), Z_MASK, POWER6, { FRT, FRA, SH16 } }, - --{ "drintxq", ZRC(63,99,0), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, --{ "drintxq.",ZRC(63,99,1), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, -+{ "drintxq", ZRC(63,99,0), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, -+{ "drintxq.",ZRC(63,99,1), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, - - { "dcmpoq", X(63,130), X_MASK, POWER6, { BF, FRA, FRB } }, - -@@ -4883,8 +4877,8 @@ const struct powerpc_opcode powerpc_opco - { "dtstdcq", Z(63,194), Z_MASK, POWER6, { BF, FRA, DCM } }, - { "dtstdgq", Z(63,226), Z_MASK, POWER6, { BF, FRA, DGM } }, - --{ "drintnq", ZRC(63,227,0), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, --{ "drintnq.",ZRC(63,227,1), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, -+{ "drintnq", ZRC(63,227,0), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, -+{ "drintnq.",ZRC(63,227,1), Z2_MASK, POWER6, { R, FRT, FRB, RMC } }, - - { "dctqpq", XRC(63,258,0), X_MASK, POWER6, { FRT, FRB } }, - { "dctqpq.", XRC(63,258,1), X_MASK, POWER6, { FRT, FRB } }, - --- -Alan Modra -IBM OzLabs - Linux Technology Centre - - - -2007-05-14 Paul Brook - Daniel Jacobowitz - - * dwarf2read.c (dwarf2_debug_line_missing_file_complaint): New - function. - (dwarf_decode_lines): Check for line info without a file. - ---- src/gdb/dwarf2read.c 2007/04/18 13:25:04 1.218 -+++ src/gdb/dwarf2read.c 2007/05/14 17:15:20 1.219 -@@ -688,6 +688,13 @@ - } - - static void -+dwarf2_debug_line_missing_file_complaint (void) -+{ -+ complaint (&symfile_complaints, -+ _(".debug_line section has line data without a file")); -+} -+ -+static void - dwarf2_complex_location_expr_complaint (void) - { - complaint (&symfile_complaints, _("location expression too complex")); -@@ -6708,19 +6715,24 @@ - address += (adj_opcode / lh->line_range) - * lh->minimum_instruction_length; - line += lh->line_base + (adj_opcode % lh->line_range); -- lh->file_names[file - 1].included_p = 1; -- if (!decode_for_pst_p) -- { -- if (last_subfile != current_subfile) -- { -- if (last_subfile) -- record_line (last_subfile, 0, address); -- last_subfile = current_subfile; -+ if (lh->num_file_names < file) -+ dwarf2_debug_line_missing_file_complaint (); -+ else -+ { -+ lh->file_names[file - 1].included_p = 1; -+ if (!decode_for_pst_p) -+ { -+ if (last_subfile != current_subfile) -+ { -+ if (last_subfile) -+ record_line (last_subfile, 0, address); -+ last_subfile = current_subfile; -+ } -+ /* Append row to matrix using current values. */ -+ record_line (current_subfile, line, -+ check_cu_functions (address, cu)); - } -- /* Append row to matrix using current values. */ -- record_line (current_subfile, line, -- check_cu_functions (address, cu)); -- } -+ } - basic_block = 1; - } - else switch (op_code) -@@ -6734,9 +6746,15 @@ - { - case DW_LNE_end_sequence: - end_sequence = 1; -- lh->file_names[file - 1].included_p = 1; -- if (!decode_for_pst_p) -- record_line (current_subfile, 0, address); -+ -+ if (lh->num_file_names < file) -+ dwarf2_debug_line_missing_file_complaint (); -+ else -+ { -+ lh->file_names[file - 1].included_p = 1; -+ if (!decode_for_pst_p) -+ record_line (current_subfile, 0, address); -+ } - break; - case DW_LNE_set_address: - address = read_address (abfd, line_ptr, cu, &bytes_read); -@@ -6769,17 +6787,22 @@ - } - break; - case DW_LNS_copy: -- lh->file_names[file - 1].included_p = 1; -- if (!decode_for_pst_p) -+ if (lh->num_file_names < file) -+ dwarf2_debug_line_missing_file_complaint (); -+ else - { -- if (last_subfile != current_subfile) -- { -- if (last_subfile) -- record_line (last_subfile, 0, address); -- last_subfile = current_subfile; -- } -- record_line (current_subfile, line, -- check_cu_functions (address, cu)); -+ lh->file_names[file - 1].included_p = 1; -+ if (!decode_for_pst_p) -+ { -+ if (last_subfile != current_subfile) -+ { -+ if (last_subfile) -+ record_line (last_subfile, 0, address); -+ last_subfile = current_subfile; -+ } -+ record_line (current_subfile, line, -+ check_cu_functions (address, cu)); -+ } - } - basic_block = 0; - break; -@@ -6806,15 +6806,19 @@ dwarf_decode_lines (struct line_header * - - file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read); - line_ptr += bytes_read; -- fe = &lh->file_names[file - 1]; -- if (fe->dir_index) -- dir = lh->include_dirs[fe->dir_index - 1]; -- -- if (!decode_for_pst_p) -- { -- last_subfile = current_subfile; -- dwarf2_start_subfile (fe->name, dir, comp_dir, file); -- } -+ if (lh->num_file_names < file) -+ dwarf2_debug_line_missing_file_complaint (); -+ else -+ { -+ fe = &lh->file_names[file - 1]; -+ if (fe->dir_index) -+ dir = lh->include_dirs[fe->dir_index - 1]; -+ if (!decode_for_pst_p) -+ { -+ last_subfile = current_subfile; -+ dwarf2_start_subfile (fe->name, dir, comp_dir, file); -+ } -+ } - } - break; - case DW_LNS_set_column: - - - -http://sourceware.org/ml/binutils/2007-08/msg00296.html - -[ Backported for GDB-6.6. ] - -2007-08-19 Jan Kratochvil - - * bfd/elf-bfd.h (struct elf_obj_tdata): New build_id_size, build_id. - * bfd/elf.c (elfcore_read_notes): Split to ... - (elf_read_notes) ... here ... - (elf_parse_notes): ... and here. Check `bfd_get_format (abfd)' with - the former subfunctions called only for BFD_CORE. - Call ELFOBJ_GROK_GNU_NOTE for BFD_OBJECT files with the owner "GNU". - (_bfd_elf_make_section_from_shdr): Call ELF_PARSE_NOTES for SHT_NOTEs. - (bfd_section_from_phdr): Update the call for renamed ELFCORE_READ_NOTES. - (elfobj_grok_gnu_build_id, elfobj_grok_gnu_note): New functions. - Code advisory: Roland McGrath - ---- gdb-6.6/bfd/elf-bfd.h.orig 2006-11-02 16:20:31.000000000 +0100 -+++ gdb-6.6/bfd/elf-bfd.h 2007-08-28 15:00:42.000000000 +0200 -@@ -1408,6 +1408,10 @@ struct elf_obj_tdata - - /* Symbol buffer. */ - Elf_Internal_Sym *symbuf; -+ -+ /* NT_GNU_BUILD_ID note type. */ -+ bfd_size_type build_id_size; -+ bfd_byte *build_id; - }; - - #define elf_tdata(bfd) ((bfd) -> tdata.elf_obj_data) ---- ./bfd/elf.c 16 Aug 2007 18:49:42 -0000 1.410 -+++ ./bfd/elf.c 19 Aug 2007 20:12:16 -0000 -@@ -48,7 +48,9 @@ static int elf_sort_sections (const void - static bfd_boolean assign_file_positions_except_relocs (bfd *, struct bfd_link_info *); - static bfd_boolean prep_headers (bfd *); - static bfd_boolean swap_out_syms (bfd *, struct bfd_strtab_hash **, int) ; --static bfd_boolean elfcore_read_notes (bfd *, file_ptr, bfd_size_type) ; -+static bfd_boolean elf_read_notes (bfd *, file_ptr, bfd_size_type) ; -+static bfd_boolean elf_parse_notes (bfd *abfd, char *buf, size_t size, -+ file_ptr offset); - - /* Swap version information in and out. The version information is - currently size independent. If that ever changes, this code will -@@ -899,6 +901,28 @@ _bfd_elf_make_section_from_shdr (bfd *ab - if (! bfd_set_section_flags (abfd, newsect, flags)) - return FALSE; - -+ /* We do not parse the PT_NOTE segments as we are interested even in the -+ separate debug info files which may have the segments offsets corrupted. -+ PT_NOTEs from the core files are currently not parsed using BFD. */ -+ if (hdr->sh_type == SHT_NOTE) -+ { -+ char *contents; -+ -+ contents = bfd_malloc (hdr->sh_size); -+ if (!contents) -+ return FALSE; -+ -+ if (!bfd_get_section_contents (abfd, hdr->bfd_section, contents, 0, -+ hdr->sh_size) -+ || !elf_parse_notes (abfd, contents, hdr->sh_size, -1)) -+ { -+ free (contents); -+ return FALSE; -+ } -+ -+ free (contents); -+ } -+ - if ((flags & SEC_ALLOC) != 0) - { - Elf_Internal_Phdr *phdr; -@@ -2341,7 +2365,7 @@ bfd_section_from_phdr (bfd *abfd, Elf_In - case PT_NOTE: - if (! _bfd_elf_make_section_from_phdr (abfd, hdr, index, "note")) - return FALSE; -- if (! elfcore_read_notes (abfd, hdr->p_offset, hdr->p_filesz)) -+ if (! elf_read_notes (abfd, hdr->p_offset, hdr->p_filesz)) - return FALSE; - return TRUE; - -@@ -7713,6 +7737,32 @@ elfcore_grok_note (bfd *abfd, Elf_Intern - } - - static bfd_boolean -+elfobj_grok_gnu_build_id (bfd *abfd, Elf_Internal_Note *note) -+{ -+ elf_tdata (abfd)->build_id_size = note->descsz; -+ elf_tdata (abfd)->build_id = bfd_alloc (abfd, note->descsz); -+ if (elf_tdata (abfd)->build_id == NULL) -+ return FALSE; -+ -+ memcpy (elf_tdata (abfd)->build_id, note->descdata, note->descsz); -+ -+ return TRUE; -+} -+ -+static bfd_boolean -+elfobj_grok_gnu_note (bfd *abfd, Elf_Internal_Note *note) -+{ -+ switch (note->type) -+ { -+ default: -+ return TRUE; -+ -+ case NT_GNU_BUILD_ID: -+ return elfobj_grok_gnu_build_id (abfd, note); -+ } -+} -+ -+static bfd_boolean - elfcore_netbsd_get_lwpid (Elf_Internal_Note *note, int *lwpidp) - { - char *cp; -@@ -8186,28 +8236,10 @@ elfcore_write_prxfpreg (bfd *abfd, - } - - static bfd_boolean --elfcore_read_notes (bfd *abfd, file_ptr offset, bfd_size_type size) -+elf_parse_notes (bfd *abfd, char *buf, size_t size, file_ptr offset) - { -- char *buf; - char *p; - -- if (size <= 0) -- return TRUE; -- -- if (bfd_seek (abfd, offset, SEEK_SET) != 0) -- return FALSE; -- -- buf = bfd_malloc (size); -- if (buf == NULL) -- return FALSE; -- -- if (bfd_bread (buf, size, abfd) != size) -- { -- error: -- free (buf); -- return FALSE; -- } -- - p = buf; - while (p < buf + size) - { -@@ -8312,25 +8344,66 @@ elfcore_read_notes (bfd *abfd, file_ptr - in.descdata = in.namedata + BFD_ALIGN (in.namesz, 4); - in.descpos = offset + (in.descdata - buf); - -- if (CONST_STRNEQ (in.namedata, "NetBSD-CORE")) -+ switch (bfd_get_format (abfd)) - { -- if (! elfcore_grok_netbsd_note (abfd, &in)) -- goto error; -- } -- else if (CONST_STRNEQ (in.namedata, "QNX")) -- { -- if (! elfcore_grok_nto_note (abfd, &in)) -- goto error; -+ default: -+ return TRUE; -+ -+ case bfd_core: -+ if (CONST_STRNEQ (in.namedata, "NetBSD-CORE")) -+ { -+ if (! elfcore_grok_netbsd_note (abfd, &in)) -+ return FALSE; -+ } -+ else if (CONST_STRNEQ (in.namedata, "QNX")) -+ { -+ if (! elfcore_grok_nto_note (abfd, &in)) -+ return FALSE; -+ } -+ else -+ { -+ if (! elfcore_grok_note (abfd, &in)) -+ return FALSE; -+ } -+ break; -+ -+ case bfd_object: -+ if (in.namesz == sizeof "GNU" && strcmp (in.namedata, "GNU") == 0) -+ { -+ if (! elfobj_grok_gnu_note (abfd, &in)) -+ return FALSE; -+ } -+ break; - } -- else -- { -- if (! elfcore_grok_note (abfd, &in)) -- goto error; -- } - - p = in.descdata + BFD_ALIGN (in.descsz, 4); - } - -+ return TRUE; -+} -+ -+static bfd_boolean -+elf_read_notes (bfd *abfd, file_ptr offset, bfd_size_type size) -+{ -+ char *buf; -+ -+ if (size <= 0) -+ return TRUE; -+ -+ if (bfd_seek (abfd, offset, SEEK_SET) != 0) -+ return FALSE; -+ -+ buf = bfd_malloc (size); -+ if (buf == NULL) -+ return FALSE; -+ -+ if (bfd_bread (buf, size, abfd) != size -+ || !elf_parse_notes (abfd, buf, size, offset)) -+ { -+ free (buf); -+ return FALSE; -+ } -+ - free (buf); - return TRUE; - } - - - -2007-07-09 Roland McGrath - - * common.h (NT_GNU_HWCAP, NT_GNU_BUILD_ID): New macros. - ---- ./include/elf/common.h 29 Jun 2007 16:29:16 -0000 1.85 -+++ ./include/elf/common.h 9 Jul 2007 21:17:42 -0000 1.86 -@@ -413,9 +413,13 @@ - #define NT_VERSION 1 /* Contains a version string. */ - #define NT_ARCH 2 /* Contains an architecture string. */ - --/* Values for GNU .note.ABI-tag notes. Note name is "GNU". */ -+/* Values for notes in non-core files using name "GNU". */ - - #define NT_GNU_ABI_TAG 1 -+#define NT_GNU_HWCAP 2 /* Used by ld.so and kernel vDSO. */ -+#define NT_GNU_BUILD_ID 3 /* Generated by ld --build-id. */ -+ -+/* Values used in GNU .note.ABI-tag notes (NT_GNU_ABI_TAG). */ - #define GNU_ABI_TAG_LINUX 0 - #define GNU_ABI_TAG_HURD 1 - #define GNU_ABI_TAG_SOLARIS 2 - - - -2007-09-15 Alan Modra - - * configure.ac: Correct makeinfo version check. - * configure: Regenerate. - -#--- ./configure.ac 14 Sep 2007 14:51:36 -0000 1.25 -#+++ ./configure.ac 14 Sep 2007 15:47:01 -0000 1.26 -#@@ -2462,7 +2462,7 @@ changequote(,) -# # For an installed makeinfo, we require it to be from texinfo 4.4 or -# # higher, else we use the "missing" dummy. -# if ${MAKEINFO} --version \ -#- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then -#+ | egrep 'texinfo[^0-9]*(4\.([4-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then -# : -# else -# MAKEINFO="$MISSING makeinfo" ---- ./configure 14 Sep 2007 14:51:36 -0000 1.277 -+++ ./configure 14 Sep 2007 15:47:01 -0000 1.278 -@@ -6192,7 +6192,7 @@ case " $build_configdirs " in - # For an installed makeinfo, we require it to be from texinfo 4.4 or - # higher, else we use the "missing" dummy. - if ${MAKEINFO} --version \ -- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then -+ | egrep 'texinfo[^0-9]*(4\.([4-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then - : - else - MAKEINFO="$MISSING makeinfo" - - - -https://bugzilla.redhat.com/show_bug.cgi?id=328021 - -2007-06-27 Daniel Jacobowitz - - * thread-db.c (thread_db_find_new_threads): Add prototype. - (thread_db_create_event): Check for the main thread before adding - a new thread. - (maybe_attach_thread): Only enable event reporting if TID == 0. - (thread_db_get_tls_address): Check for new threads. - ---- ./gdb/gdbserver/thread-db.c 9 Jan 2007 17:59:08 -0000 1.9 -+++ ./gdb/gdbserver/thread-db.c 27 Jun 2007 11:52:02 -0000 1.10 -@@ -41,6 +41,7 @@ static struct ps_prochandle proc_handle; - /* Connection to the libthread_db library. */ - static td_thragent_t *thread_agent; - -+static void thread_db_find_new_threads (void); - static int find_new_threads_callback (const td_thrhandle_t *th_p, void *data); - - static char * -@@ -135,6 +136,8 @@ thread_db_create_event (CORE_ADDR where) - td_event_msg_t msg; - td_err_e err; - struct inferior_linux_data *tdata; -+ struct thread_info *inferior; -+ struct process_info *process; - - if (debug_threads) - fprintf (stderr, "Thread creation event.\n"); -@@ -150,6 +153,14 @@ thread_db_create_event (CORE_ADDR where) - fprintf (stderr, "thread getmsg err: %s\n", - thread_db_err_str (err)); - -+ /* If we do not know about the main thread yet, this would be a good time to -+ find it. We need to do this to pick up the main thread before any newly -+ created threads. */ -+ inferior = (struct thread_info *) all_threads.head; -+ process = get_thread_process (inferior); -+ if (process->thread_known == 0) -+ thread_db_find_new_threads (); -+ - /* msg.event == TD_EVENT_CREATE */ - - find_new_threads_callback (msg.th_p, NULL); -@@ -232,8 +243,24 @@ maybe_attach_thread (const td_thrhandle_ - { - inferior = (struct thread_info *) all_threads.head; - process = get_thread_process (inferior); -+ - if (process->thread_known == 0) - { -+ /* If the new thread ID is zero, a final thread ID will be -+ available later. Do not enable thread debugging yet. */ -+ if (ti_p->ti_tid == 0) -+ { -+ err = td_thr_event_enable (th_p, 1); -+ if (err != TD_OK) -+ error ("Cannot enable thread event reporting for %d: %s", -+ ti_p->ti_lid, thread_db_err_str (err)); -+ return; -+ } -+ -+ if (process->lwpid != ti_p->ti_lid) -+ fatal ("PID mismatch! Expected %ld, got %ld", -+ (long) process->lwpid, (long) ti_p->ti_lid); -+ - /* Switch to indexing the threads list by TID. */ - change_inferior_id (&all_threads, ti_p->ti_tid); - goto found; -@@ -332,6 +359,8 @@ thread_db_get_tls_address (struct thread - - process = get_thread_process (thread); - if (!process->thread_known) -+ thread_db_find_new_threads (); -+ if (!process->thread_known) - return TD_NOTHR; - - /* Note the cast through uintptr_t: this interface only works if - - - -http://sources.redhat.com/ml/gdb-patches/2007-07/msg00034.html - -2007-07-02 Daniel Jacobowitz - - * breakpoint.c (reattach_breakpoints): Do not use remove_breakpoint. - Call insert_bp_location. - -[ Backported. ] - ---- gdb-6.6/gdb/breakpoint.c.orig 2007-10-14 17:42:36.000000000 +0200 -+++ gdb-6.6/gdb/breakpoint.c 2007-10-14 17:45:57.000000000 +0200 -@@ -1313,20 +1313,19 @@ - struct bp_location *b; - int val; - struct cleanup *old_chain = save_inferior_ptid (); -+ struct ui_file *tmp_error_stream = mem_fileopen (); -+ int dummy1 = 0, dummy2 = 0, dummy3 = 0; -+ -+ make_cleanup_ui_file_delete (tmp_error_stream); - -- /* Set inferior_ptid; remove_breakpoint uses this global. */ - inferior_ptid = pid_to_ptid (pid); - ALL_BP_LOCATIONS (b) - { - if (b->inserted) - { -- remove_breakpoint (b, mark_inserted); -- if (b->loc_type == bp_loc_hardware_breakpoint) -- val = target_insert_hw_breakpoint (&b->target_info); -- else -- val = target_insert_breakpoint (&b->target_info); -- /* FIXME drow/2003-10-07: This doesn't handle any other kinds of -- breakpoints. It's wrong for watchpoints, for example. */ -+ b->inserted = 0; -+ val = insert_bp_location (b, tmp_error_stream, -+ &dummy1, &dummy2, &dummy3); - if (val != 0) - { - do_cleanups (old_chain); diff --git a/gdb-6.6-vdso-i386-on-amd64-warning.patch b/gdb-6.6-vdso-i386-on-amd64-warning.patch index 5748bad..a58cbb6 100644 --- a/gdb-6.6-vdso-i386-on-amd64-warning.patch +++ b/gdb-6.6-vdso-i386-on-amd64-warning.patch @@ -1,12 +1,18 @@ Fix i386-on-x86_64 debugging giving the warning: warning: Lowest section in system-supplied DSO at 0xffffe000 is .hash at ffffe0b4 -[ Backport for RH GDB-6.6. ] +[base] ---- gdb-6.6/gdb/symfile.c 2007-10-08 19:52:06.000000000 +0200 -+++ gdb-6.6/gdb/symfile.c 2007-10-08 19:49:27.000000000 +0200 -@@ -597,6 +597,37 @@ default_symfile_offsets (struct objfile - init_objfile_sect_indices (objfile); +2007-10-16 Jan Kratochvil + + Port to GDB-6.7. + +Index: gdb-6.7/gdb/symfile.c +=================================================================== +--- gdb-6.7.orig/gdb/symfile.c 2007-10-16 16:46:30.000000000 +0200 ++++ gdb-6.7/gdb/symfile.c 2007-10-16 20:08:42.000000000 +0200 +@@ -717,6 +717,38 @@ default_symfile_segments (bfd *abfd) + return data; } +/* Find lowest loadable section to be used as starting point for continguous @@ -40,10 +46,11 @@ Fix i386-on-x86_64 debugging giving the warning: + else + return 0; +} - ++ /* Process a symbol file, as either the main file or as a dynamically loaded file. -@@ -696,32 +727,11 @@ syms_from_objfile (struct objfile *objfi + +@@ -815,32 +847,11 @@ syms_from_objfile (struct objfile *objfi happens for the PA64 port. */ if (/*!mainline &&*/ addrs && addrs->other[0].name) { @@ -78,30 +85,38 @@ Fix i386-on-x86_64 debugging giving the warning: /* Calculate offsets for the loadable sections. FIXME! Sections must be in order of increasing loadable section so that contiguous sections can use the lower-offset!!! -@@ -743,6 +753,7 @@ syms_from_objfile (struct objfile *objfi +@@ -862,6 +873,7 @@ syms_from_objfile (struct objfile *objfi addrs->other[i].addr -= bfd_section_vma (objfile->obfd, sect); lower_offset = addrs->other[i].addr; -+ lower_offset_set = 1; ++ lower_offset_set = 1; /* This is the index used by BFD. */ addrs->other[i].sectindex = sect->index ; } -@@ -755,7 +766,17 @@ syms_from_objfile (struct objfile *objfi +@@ -874,7 +886,17 @@ syms_from_objfile (struct objfile *objfi } } else - addrs->other[i].addr = lower_offset; -+ { -+ /* Delay finding LOWER_OFFSET only if it is needed. Otherwise -+ we would print a warning to detect a values never used. */ -+ if (!lower_offset_set) -+ { -+ lower_offset = find_lower_offset (objfile); -+ lower_offset_set = 1; -+ } ++ { ++ /* Delay finding LOWER_OFFSET only if it is needed. Otherwise ++ we would print a warning to detect a values never used. */ ++ if (!lower_offset_set) ++ { ++ lower_offset = find_lower_offset (objfile); ++ lower_offset_set = 1; ++ } + -+ addrs->other[i].addr = lower_offset; -+ } ++ addrs->other[i].addr = lower_offset; ++ } } } +@@ -1174,7 +1196,6 @@ symbol_file_add_from_bfd (bfd *abfd, int + mainline, flags); + } + +- + /* Process a symbol file, as either the main file or as a dynamically + loaded file. See symbol_file_add_with_addrs_or_offsets's comments + for details. */ diff --git a/gdb-6.7-charsign-test.patch b/gdb-6.7-charsign-test.patch new file mode 100644 index 0000000..2e289ac --- /dev/null +++ b/gdb-6.7-charsign-test.patch @@ -0,0 +1,125 @@ +https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=224128 + +2007-01-25 Jan Kratochvil + + * gdb.base/charsign.exp, gdb.base/charsign.c: New files. + [ stripped ] + +2007-10-19 Jan Kratochvil + + Port to GDB-6.7 - only the testcase left, patch has been reverted, + char-vectors restricted. + +--- /dev/null 1 Jan 1970 00:00:00 -0000 ++++ ./gdb/testsuite/gdb.base/charsign.c 26 Jan 2007 10:32:00 -0000 +@@ -0,0 +1,37 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2007 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++ Please email any bugs, comments, and/or additions to this file to: ++ bug-gdb@prep.ai.mit.edu */ ++ ++int main() ++{ ++ return 0; ++} ++ ++char n[]="A"; ++signed char s[]="A"; ++unsigned char u[]="A"; ++ ++typedef char char_n; ++typedef signed char char_s; ++typedef unsigned char char_u; ++ ++char_n n_typed[]="A"; ++char_s s_typed[]="A"; ++char_u u_typed[]="A"; +--- /dev/null 1 Jan 1970 00:00:00 -0000 ++++ ./gdb/testsuite/gdb.base/charsign.exp 26 Jan 2007 10:32:00 -0000 +@@ -0,0 +1,70 @@ ++# Copyright 2007 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++if $tracelevel then { ++ strace $tracelevel ++} ++ ++set prms_id 0 ++set bug_id 0 ++ ++set testfile charsign ++set srcfile ${testfile}.c ++set binfile ${objdir}/${subdir}/${testfile} ++ ++proc do_test { cflags } { ++ global srcdir ++ global binfile ++ global subdir ++ global srcfile ++ global gdb_prompt ++ ++ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug additional_flags=$cflags]] != "" } { ++ untested "Couldn't compile test program" ++ return -1 ++ } ++ ++ # Get things started. ++ ++ gdb_exit ++ gdb_start ++ gdb_reinitialize_dir $srcdir/$subdir ++ gdb_load ${binfile} ++ ++ # For C programs, "start" should stop in main(). ++ ++ gdb_test "p n" \ ++ "= \"A\"" ++ gdb_test "p s" \ ++ "= \\{65 'A', 0 '\\\\0'\\}" ++ gdb_test "p u" \ ++ "= \\{65 'A', 0 '\\\\0'\\}" ++ gdb_test "p n_typed" \ ++ "= \"A\"" ++ gdb_test "p s_typed" \ ++ "= \\{65 'A', 0 '\\\\0'\\}" ++ gdb_test "p u_typed" \ ++ "= \\{65 'A', 0 '\\\\0'\\}" ++} ++ ++# The string identification works despite the compiler flags below due to ++# gdbtypes.c: ++# if (name && strcmp (name, "char") == 0) ++# TYPE_FLAGS (type) |= TYPE_FLAG_NOSIGN; ++ ++do_test {} ++do_test {-fsigned-char} ++do_test {-funsigned-char} diff --git a/gdb-6.7-reread-exec_bfd.patch b/gdb-6.7-reread-exec_bfd.patch new file mode 100644 index 0000000..8ca1208 --- /dev/null +++ b/gdb-6.7-reread-exec_bfd.patch @@ -0,0 +1,54 @@ +2007-10-29 Jan Kratochvil + + * symfile.c (reread_symbols): Reread also EXEC_BFD if changed. + +Testcase: Regressed by the gdb-6.7 version of `gdb-6.3-pie-20050110.patch': + Running ../../../gdb/testsuite/gdb.base/reread.exp ... + PASS: gdb.base/reread.exp: breakpoint foo in first file (PRMS 13484) + PASS: gdb.base/reread.exp: run to foo() (PRMS 13484) +-PASS: gdb.base/reread.exp: run to foo() second time ++FAIL: gdb.base/reread.exp: run to foo() second time + PASS: gdb.base/reread.exp: second pass: breakpoint foo in first file +-PASS: gdb.base/reread.exp: second pass: run to foo() +-PASS: gdb.base/reread.exp: second pass: continue to completion +-PASS: gdb.base/reread.exp: second pass: run to foo() second time ++FAIL: gdb.base/reread.exp: second pass: run to foo() ++FAIL: gdb.base/reread.exp: second pass: continue to completion ++FAIL: gdb.base/reread.exp: second pass: run to foo() second time + +--- gdb-6.7-orig/gdb/symfile.c 2007-10-29 01:04:35.000000000 +0100 ++++ gdb-6.7-patched/gdb/symfile.c 2007-10-29 01:03:13.000000000 +0100 +@@ -2810,6 +2810,33 @@ reread_symbols (void) + /* We need to do this whenever any symbols go away. */ + make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/); + ++ if (exec_bfd != NULL && strcmp (bfd_get_filename (objfile->obfd), ++ bfd_get_filename (exec_bfd)) == 0) ++ { ++ char *exec_filename = bfd_get_filename (exec_bfd); ++ bfd *exec_bfd_new; ++ ++ /* We have to leak the memory here as there are stale ++ references to EXEC_BFD, at least by ++ `(struct section_table *)->bfd'. So far we need to update ++ only START_ADDRESS there. */ ++#if 0 ++ if (!bfd_close (exec_bfd)) ++ error (_("Can't close BFD for %s: %s"), exec_filename, ++ bfd_errmsg (bfd_get_error ())); ++#endif ++ exec_bfd_new = bfd_openr (exec_filename, gnutarget); ++ if (exec_bfd_new == NULL) ++ error (_("Can't open %s as a new main executable."), ++ exec_filename); ++ /* bfd_openr sets cacheable to true, which is what we want. */ ++ if (!bfd_check_format (exec_bfd_new, bfd_object)) ++ error (_("Can't reopen the main executable %s: %s."), ++ exec_filename, bfd_errmsg (bfd_get_error ())); ++ /* FIXME: The non-freeing hack. */ ++ memcpy (exec_bfd, exec_bfd_new, sizeof (*exec_bfd)); ++ } ++ + /* Clean up any state BFD has sitting around. We don't need + to close the descriptor but BFD lacks a way of closing the + BFD without closing the descriptor. */ diff --git a/gdb-6.7-upstream.patch b/gdb-6.7-upstream.patch new file mode 100644 index 0000000..9cb994a --- /dev/null +++ b/gdb-6.7-upstream.patch @@ -0,0 +1,98 @@ +2007-09-15 Alan Modra + + * configure.ac: Correct makeinfo version check. + * configure: Regenerate. + +#--- ./configure.ac 14 Sep 2007 14:51:36 -0000 1.25 +#+++ ./configure.ac 14 Sep 2007 15:47:01 -0000 1.26 +#@@ -2462,7 +2462,7 @@ changequote(,) +# # For an installed makeinfo, we require it to be from texinfo 4.4 or +# # higher, else we use the "missing" dummy. +# if ${MAKEINFO} --version \ +#- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then +#+ | egrep 'texinfo[^0-9]*(4\.([4-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then +# : +# else +# MAKEINFO="$MISSING makeinfo" +--- ./configure 14 Sep 2007 14:51:36 -0000 1.277 ++++ ./configure 14 Sep 2007 15:47:01 -0000 1.278 +@@ -6192,7 +6192,7 @@ case " $build_configdirs " in + # For an installed makeinfo, we require it to be from texinfo 4.4 or + # higher, else we use the "missing" dummy. + if ${MAKEINFO} --version \ +- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then ++ | egrep 'texinfo[^0-9]*(4\.([4-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then + : + else + MAKEINFO="$MISSING makeinfo" + + + +Fix: + FAIL: gdb.arch/powerpc-power6.exp: Power6 disassembly dsub + FAIL: gdb.arch/powerpc-power6.exp: Power6 disassembly dmul + FAIL: gdb.arch/powerpc-power6.exp: Power6 disassembly ddiv + FAIL: gdb.arch/powerpc-power6.exp: Power6 disassembly dcmpu + +2007-10-15 Peter Bergner + + * ppc-opc.c (powerpc_opcodes): Fix the first two operands of + dquaiq. to use the TE and FRT macros. + +--- ./opcodes/ppc-opc.c 16 Oct 2007 02:26:30 -0000 1.100 ++++ ./opcodes/ppc-opc.c 16 Oct 2007 02:55:30 -0000 1.101 +@@ -4680,7 +4680,7 @@ const struct powerpc_opcode powerpc_opco + { "dscliq.", ZRC(63,66,1), Z_MASK, POWER6, { FRT, FRA, SH16 } }, + + { "dquaiq", ZRC(63,67,0), Z2_MASK, POWER6, { TE, FRT, FRB, RMC } }, +-{ "dquaiq.", ZRC(63,67,1), Z2_MASK, POWER6, { FRT, FRA, FRB, RMC } }, ++{ "dquaiq.", ZRC(63,67,1), Z2_MASK, POWER6, { TE, FRT, FRB, RMC } }, + + { "mtfsb0", XRC(63,70,0), XRARB_MASK, COM, { BT } }, + { "mtfsb0.", XRC(63,70,1), XRARB_MASK, COM, { BT } }, + +2007-10-15 Peter Bergner + + * ppc-opc.c (TE): Correct signedness. + (powerpc_opcodes): Sort psq_st and psq_stu according to major + opcode number. + +--- ./opcodes/ppc-opc.c 24 Aug 2007 00:56:30 -0000 1.99 ++++ ./opcodes/ppc-opc.c 16 Oct 2007 02:26:30 -0000 1.100 +@@ -492,13 +492,13 @@ const struct powerpc_operand powerpc_ope + #define VS VD + { 0x1f, 21, NULL, NULL, PPC_OPERAND_VR }, + +- /* The SIMM field in a VX form instruction. */ ++ /* The SIMM field in a VX form instruction, and TE in Z form. */ + #define SIMM VD + 1 ++#define TE SIMM + { 0x1f, 16, NULL, NULL, PPC_OPERAND_SIGNED}, + +- /* The UIMM field in a VX form instruction, and TE in Z form. */ ++ /* The UIMM field in a VX form instruction. */ + #define UIMM SIMM + 1 +-#define TE UIMM + { 0x1f, 16, NULL, NULL, 0 }, + + /* The SHB field in a VA form instruction. */ +@@ -4495,9 +4495,6 @@ const struct powerpc_opcode powerpc_opco + { "fnmadds", A(59,31,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, + { "fnmadds.",A(59,31,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, + +-{ "psq_st", OP(60), OP_MASK, PPCPS, { FRS, PSD, RA, PSW, PSQ } }, +-{ "psq_stu", OP(61), OP_MASK, PPCPS, { FRS, PSD, RA, PSW, PSQ } }, +- + { "dmul", XRC(59,34,0), X_MASK, POWER6, { FRT, FRA, FRB } }, + { "dmul.", XRC(59,34,1), X_MASK, POWER6, { FRT, FRA, FRB } }, + +@@ -4561,6 +4558,9 @@ const struct powerpc_opcode powerpc_opco + + { "stfq", OP(60), OP_MASK, POWER2, { FRS, D, RA } }, + ++{ "psq_st", OP(60), OP_MASK, PPCPS, { FRS, PSD, RA, PSW, PSQ } }, ++{ "psq_stu", OP(61), OP_MASK, PPCPS, { FRS, PSD, RA, PSW, PSQ } }, ++ + { "stfqu", OP(61), OP_MASK, POWER2, { FRS, D, RA } }, + + { "stfdp", OP(61), OP_MASK, POWER6, { FRT, D, RA0 } }, diff --git a/gdb.spec b/gdb.spec index eb6b366..32f16da 100644 --- a/gdb.spec +++ b/gdb.spec @@ -8,19 +8,19 @@ Name: gdb # Set version to contents of gdb/version.in. # NOTE: the FSF gdb versions are numbered N.M for official releases, like 6.3 # and, since January 2005, X.Y.Z.date for daily snapshots, like 6.3.50.20050112 # (daily snapshot from mailine), or 6.3.0.20040112 (head of the release branch). -Version: 6.6 +Version: 6.7 # The release always contains a leading reserved number, start it at 1. -Release: 37%{?dist} +Release: 1%{?dist} License: GPL Group: Development/Debuggers -Source: ftp://ftp.gnu.org/gnu/gdb/gdb-6.6.tar.bz2 +Source: ftp://ftp.gnu.org/gnu/gdb/gdb-6.7.tar.bz2 Buildroot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) URL: http://gnu.org/software/gdb/ # For our convenience -%define gdb_src gdb-6.6 +%define gdb_src gdb-%{version} %define gdb_build build-%{_target_platform} # Make sure we get rid of the old package gdb64, now that we have unified @@ -149,9 +149,6 @@ Patch147: gdb-6.3-warnings-20050317.patch # Fix printing of inherited members Patch148: gdb-6.3-inheritance-20050324.patch -# Add vsyscall page support for ia64. -Patch149: gdb-6.3-ia64-vsyscall-20050330.patch - # Print a warning when the separate debug info's CRC doesn't match. Patch150: gdb-6.3-test-sepcrc-20050402.patch Patch151: gdb-6.3-sepcrc-20050402.patch @@ -225,9 +222,6 @@ Patch188: gdb-6.5-bz203661-emit-relocs.patch # CVE-2006-4146 Patch190: gdb-6.5-dwarf-stack-overflow.patch -# Fix gdb printf command argument using "%p" (BZ 205551). -Patch191: gdb-6.5-bz205551-printf-p.patch - # Support TLS symbols (+`errno' suggestion if no pthread is found) (BZ 185337). # FIXME: Still to be updated. Patch194: gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch @@ -252,12 +246,6 @@ Patch201: gdb-6.5-gcore-i386-on-amd64.patch # Testcase for deadlocking on last address space byte; for corrupted backtraces. Patch211: gdb-6.5-last-address-space-byte-test.patch -# Fix "??" resolving of symbols from (non-prelinked) debuginfo packages. -Patch206: gdb-6.5-relativedebug.patch - -# Fix "??" resolving of symbols from overlapping functions (nanosleep(3)). -Patch207: gdb-6.5-symbols-overlap.patch - # Improved testsuite results by the testsuite provided by the courtesy of BEA. Patch208: gdb-6.5-BEA-testsuite.patch @@ -265,10 +253,6 @@ Patch208: gdb-6.5-BEA-testsuite.patch Patch209: gdb-6.5-readline-long-line-crash.patch Patch213: gdb-6.5-readline-long-line-crash-test.patch -# Fix readline history for input mode commands like `command' (BZ 215816). -Patch212: gdb-6.5-bz215816-readline-from-callback.patch -Patch219: gdb-6.5-bz215816-readline-from-callback-test.patch - # Fix bogus 0x0 unwind of the thread's topmost function clone(3) (BZ 216711). Patch214: gdb-6.5-bz216711-clone-is-outermost.patch @@ -279,26 +263,17 @@ Patch216: gdb-6.5-bz218379-ppc-solib-trampoline-test.patch # Fix lockup on trampoline vs. its function lookup; unreproducible (BZ 218379). Patch217: gdb-6.5-bz218379-solib-trampoline-lookup-lock-fix.patch -# Fix unwinding crash on older gcj(1) code (extended CFI support) (BZ 165025). -Patch221: gdb-6.5-bz165025-DW_CFA_GNU_negative_offset_extended-fix.patch -Patch222: gdb-6.5-bz165025-DW_CFA_GNU_negative_offset_extended-test.patch - # Find symbols properly at their original (included) file (BZ 109921). -Patch224: gdb-6.5-bz109921-DW_AT_decl_file-fix.patch Patch225: gdb-6.5-bz109921-DW_AT_decl_file-test.patch # Update PPC unwinding patches to their upstream variants (BZ 140532). -Patch226: gdb-6.3-bz140532-ppc-unwinding-fix.patch Patch229: gdb-6.3-bz140532-ppc-unwinding-test.patch -# Fix missing testsuite .log output of testcases using get_compiler_info(). -Patch230: gdb-6.5-testsuite-log.patch - # Testcase for exec() from threaded program (BZ 202689). Patch231: gdb-6.3-bz202689-exec-from-pthread-test.patch -# Backported post gdb-6.6 release fixups. -Patch232: gdb-6.6-upstream.patch +# Backported post gdb-6.7 release fixups. +Patch232: gdb-6.7-upstream.patch # Testcase for PPC Power6/DFP instructions disassembly (BZ 230000). Patch234: gdb-6.6-bz230000-power6-disassembly-test.patch @@ -309,21 +284,12 @@ Patch235: gdb-6.3-bz231832-obstack-2gb.patch # Suggest SELinux permissions problem; no assertion failure anymore (BZ 232371). Patch236: gdb-6.6-bz232371-selinux-thread-error.patch -# Use definition of an empty structure as it is not an opaque type (BZ 233716). -Patch238: gdb-6.6-bz233716-empty-structure-override.patch - # Fix prelink(8) testcase for non-root $PATH missing `/usr/sbin' (BZ 225783). Patch240: gdb-6.6-bz225783-prelink-path.patch # Fix debugging GDB itself - the compiled in source files paths (BZ 225783). Patch241: gdb-6.6-bz225783-gdb-debuginfo-paths.patch -# Fix harmless GCORE stack buffer overflow, by _FORTIFY_SOURCE=2 (BZ 238285). -Patch243: gdb-6.6-bz238285-gcore-strings-overflow.patch - -# Use the runtime variant of `libunwind-ARCH.so.7' rather than the `.so' one. -Patch244: gdb-6.6-libunwind-major-version.patch - # Allow running `/usr/bin/gcore' with provided but inaccessible tty (BZ 229517). Patch245: gdb-6.6-bz229517-gcore-without-terminal.patch @@ -333,9 +299,6 @@ Patch246: gdb-6.6-bz237096-watchthreads-testcasefix.patch # Notify user of a child forked process being detached (BZ 235197). Patch247: gdb-6.6-bz234468-fork-detach-info.patch -# Fix `gcore' command for 32bit PPC inferiors on 64bit PPC hosts (BZ 232015). -Patch248: gdb-6.6-bz232015-gcore-ppc-on-ppc64.patch - # New testcase for gcore of 32bit inferiors on 64bit hosts. Patch249: gdb-6.6-gcore32-test.patch @@ -350,7 +313,6 @@ Patch254: gdb-6.6-testsuite-timeouts.patch Patch256: gdb-6.6-bz233852-attach-signalled.patch # Support for stepping over PPC atomic instruction sequences (BZ 237572). -Patch257: gdb-6.6-bz237572-ppc-atomic-sequence-upstream.patch Patch258: gdb-6.6-bz237572-ppc-atomic-sequence-test.patch # Link with libreadline provided by the operating system. @@ -363,15 +325,7 @@ Patch263: gdb-6.3-attach-see-vdso-test.patch Patch265: gdb-6.6-bz247354-leader-exit-fix.patch Patch266: gdb-6.6-bz247354-leader-exit-test.patch -# Fixed compatibility with Rawhide kernel fs.binfmt_elf.core_dump_elf_headers=1. -Patch269: gdb-6.6-bfd-core-dump_elf_headers.patch - -# Fixed compatibility with the Rawhide glibc open(2) syscall sanity checking. -Patch272: gdb-6.6-glibc-open-fcntl2-compat.patch - -# New fast verification whether the .debug file matches its peer (build-id). # New locating of the matching binaries from the pure core file (build-id). -Patch273: gdb-6.6-buildid-verify.patch Patch274: gdb-6.6-buildid-locate.patch # Fixed the kernel 8KB VDSO loading (producing `no loadable sections found'). @@ -386,6 +340,12 @@ Patch278: gdb-6.6-cu-ranges.patch # Fix hardware watchpoints after inferior forks-off some process. Patch280: gdb-6.6-multifork-debugreg-for-i386-and-x86_64.patch +# Fix displaying of numeric char arrays as strings (BZ 224128). +Patch282: gdb-6.7-charsign-test.patch + +# Fix rereading of the main executable on its change. +Patch283: gdb-6.7-reread-exec_bfd.patch + BuildRequires: ncurses-devel glibc-devel gcc make gzip texinfo dejagnu gettext BuildRequires: flex bison sharutils expat-devel Requires: readline @@ -461,7 +421,6 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c %patch145 -p1 %patch147 -p1 %patch148 -p1 -%patch149 -p1 %patch150 -p1 %patch151 -p1 %patch153 -p1 @@ -486,65 +445,49 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c %patch187 -p1 %patch188 -p1 %patch190 -p1 -%patch191 -p1 %patch194 -p1 %patch195 -p1 %patch196 -p1 %patch199 -p1 %patch200 -p1 %patch201 -p1 -%patch206 -p1 -%patch207 -p1 %patch208 -p1 %patch209 -p1 %patch211 -p1 -%patch212 -p1 %patch213 -p1 %patch214 -p1 %patch215 -p1 %patch216 -p1 %patch217 -p1 -%patch219 -p1 -%patch221 -p1 -%patch222 -p1 -%patch224 -p1 %patch225 -p1 -%patch226 -p1 %patch229 -p1 -%patch230 -p1 %patch231 -p1 %patch232 -p1 %patch234 -p1 %patch235 -p1 %patch236 -p1 -%patch238 -p1 %patch240 -p1 %patch241 -p1 -%patch243 -p1 -%patch244 -p1 %patch245 -p1 %patch246 -p1 %patch247 -p1 -%patch248 -p1 %patch249 -p1 %patch251 -p1 %patch254 -p1 %patch256 -p1 -%patch257 -p1 %patch258 -p1 %patch260 -p1 %patch261 -p1 %patch263 -p1 %patch265 -p1 %patch266 -p1 -%patch269 -p1 -%patch272 -p1 -%patch273 -p1 %patch274 -p1 %patch276 -p1 %patch277 -p1 %patch278 -p1 %patch280 -p1 +%patch282 -p1 +%patch283 -p1 # Change the version that gets printed at GDB startup, so it is RedHat # specific. @@ -559,9 +502,6 @@ rm -f bfd/doc/*.info-* rm -f gdb/doc/*.info rm -f gdb/doc/*.info-* -# Force the use of system readline includes as we link with the system readline. -rm -rf readline - %build # Identify the build directory with the version of gdb as well as the @@ -595,6 +535,7 @@ enable_build_warnings="$enable_build_warnings,-Werror" $enable_build_warnings \ --with-separate-debug-dir=/usr/lib/debug \ --disable-rpath \ + --with-system-readline \ %ifarch ia64 --with-libunwind \ %else @@ -701,6 +642,10 @@ fi # don't include the files in include, they are part of binutils %changelog +* Thu Nov 1 2007 Jan Kratochvil - 6.7-1 +- Upgrade to GDB 6.7. Drop redundant patches, forward-port remaining ones. +- Fix rereading of the main executable on its change. + * Fri Oct 19 2007 Jan Kratochvil - 6.6-37 - Fix hiding unexpected breakpoints on intentional step/next commands. - Fix s390 compilation warning/failure due to a wrongly sized type-cast. diff --git a/sources b/sources index e3566b3..5b5ccef 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -a4df41d28dd514d64e8ccbfe125fd9a6 gdb-6.6.tar.bz2 +d6e7c0ad7654bc91a3a457fabb6ad6c6 gdb-6.7.tar.bz2