From 5a6df07a0121e305fb2b55d2b5c9ec32d9c46db3 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Feb 26 2010 01:18:33 +0000 Subject: - Fix gdb.ada/* regressions (Keith Seitz). - Disable addon (finish) due to inline-cmds.exp: up from outer_inline2 assert. - Fix i386+x86_64 rwatch+awatch before run, regression against 6.8 (BZ 541866). - Fix crash on stale addrinfo->sectindex (more sensitive due to the PIE patch). - Remove false gdb_assert on $sp underflow. - Workaround ia64 inferior calls clearing SP. - testsuite: Fix long timeout on arches with failing gdb.base/interrupt.exp. - Fix ia64 part of the bt-clone-stop.exp fix. --- diff --git a/gdb-6.5-bz216711-clone-is-outermost.patch b/gdb-6.5-bz216711-clone-is-outermost.patch index ab0c902..bd03985 100644 --- a/gdb-6.5-bz216711-clone-is-outermost.patch +++ b/gdb-6.5-bz216711-clone-is-outermost.patch @@ -164,7 +164,7 @@ Index: gdb-6.8.50.20090802/gdb/amd64-tdep.c /* Floating-point registers. */ --- a/gdb/ia64-tdep.c +++ b/gdb/ia64-tdep.c -@@ -2122,6 +2122,137 @@ static const struct frame_unwind ia64_frame_unwind = +@@ -2122,6 +2122,138 @@ static const struct frame_unwind ia64_frame_unwind = default_frame_sniffer }; @@ -228,12 +228,13 @@ Index: gdb-6.8.50.20090802/gdb/amd64-tdep.c + if (minsym == NULL) + return 0; + -+ instr = slotN_contents (&buf[LINUX_CLONE_PRE_SLOTS * 16], 2); ++ instr = slotN_contents (&linux_clone2_code[LINUX_CLONE_PRE_SLOTS * 16], 2); + instr &= ~(((1L << 20) - 1) << 13); + /* Address is relative to the jump instruction slot, not the next one. */ + instr |= (((SYMBOL_VALUE_ADDRESS (minsym) - (pc & ~0xfL)) >> 4) + & ((1L << 20) - 1)) << 13; -+ replace_slotN_contents (&buf[LINUX_CLONE_PRE_SLOTS * 16], instr, 2); ++ replace_slotN_contents (&linux_clone2_code[LINUX_CLONE_PRE_SLOTS * 16], instr, ++ 2); + + if (memcmp (&buf[LINUX_CLONE_PRE_SLOTS * 16], + &linux_clone2_code[LINUX_CLONE_PRE_SLOTS * 16], diff --git a/gdb-archer-ada.patch b/gdb-archer-ada.patch new file mode 100644 index 0000000..5ddf545 --- /dev/null +++ b/gdb-archer-ada.patch @@ -0,0 +1,32 @@ +From: Keith Seitz +Message-ID: <4B7F207A.7020102@redhat.com> + +--- gdb-7.0.1-orig/gdb/dwarf2read.c 2010-02-20 01:06:44.000000000 +0100 ++++ gdb-7.0.1/gdb/dwarf2read.c 2010-02-20 01:08:28.000000000 +0100 +@@ -7362,6 +7362,10 @@ read_partial_die (struct partial_die_inf + break; + } + break; ++ case DW_AT_MIPS_linkage_name: ++ if (cu->language == language_ada) ++ part_die->name = DW_STRING (&attr); ++ break; + case DW_AT_comp_dir: + if (part_die->dirname == NULL) + part_die->dirname = DW_STRING (&attr); +@@ -9924,9 +9928,13 @@ dwarf2_canonicalize_name (char *name, st + static char * + dwarf2_name (struct die_info *die, struct dwarf2_cu *cu) + { +- struct attribute *attr; ++ struct attribute *attr = NULL; ++ ++ if (cu->language == language_ada) ++ attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu); + +- attr = dwarf2_attr (die, DW_AT_name, cu); ++ if (!attr) ++ attr = dwarf2_attr (die, DW_AT_name, cu); + if (!attr || !DW_STRING (attr)) + return NULL; + diff --git a/gdb-archer-excessive-files.patch b/gdb-archer-excessive-files.patch new file mode 100644 index 0000000..f99ea62 --- /dev/null +++ b/gdb-archer-excessive-files.patch @@ -0,0 +1,639 @@ +Remove some files accidentally created (and not used) by gdb-archer.patch. + +diff -up -ruNp gdb-7.0.1-orig/gdb/config/i386/nm-i386.h gdb-7.0.1/gdb/config/i386/nm-i386.h +--- gdb-7.0.1-orig/gdb/config/i386/nm-i386.h 2010-02-09 11:22:39.000000000 +0100 ++++ gdb-7.0.1/gdb/config/i386/nm-i386.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,125 +0,0 @@ +-/* Native macro definitions for GDB on an Intel i[3456]86. +- Copyright 2001, 2004, 2007, 2008, 2009 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 3 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, see . */ +- +-#ifndef NM_I386_H +-#define NM_I386_H 1 +- +-/* Hardware-assisted breakpoints and watchpoints. */ +- +-/* Targets should define this to use the generic x86 watchpoint support. */ +-#ifdef I386_USE_GENERIC_WATCHPOINTS +- +-/* Add watchpoint methods to the provided target_ops. Targets which call +- this should also define I386_WATCHPOINTS_IN_TARGET_VECTOR. */ +-struct target_ops; +-void i386_use_watchpoints (struct target_ops *); +- +-/* Clear the reference counts and forget everything we knew about DRi. */ +-extern void i386_cleanup_dregs (void); +- +-/* Insert a watchpoint to watch a memory region which starts at +- address ADDR and whose length is LEN bytes. Watch memory accesses +- of the type TYPE. Return 0 on success, -1 on failure. */ +-extern int i386_insert_watchpoint (CORE_ADDR addr, int len, int type); +- +-/* Remove a watchpoint that watched the memory region which starts at +- address ADDR, whose length is LEN bytes, and for accesses of the +- type TYPE. Return 0 on success, -1 on failure. */ +-extern int i386_remove_watchpoint (CORE_ADDR addr, int len, int type); +- +-/* Return non-zero if we can watch a memory region that starts at +- address ADDR and whose length is LEN bytes. */ +-extern int i386_region_ok_for_watchpoint (CORE_ADDR addr, int len); +- +-/* Return non-zero if the inferior has some break/watchpoint that +- triggered. */ +-extern int i386_stopped_by_hwbp (void); +- +-/* If the inferior has some break/watchpoint that triggered, set +- the address associated with that break/watchpoint and return +- true. Otherwise, return false. */ +-extern int i386_stopped_data_address (struct target_ops *, CORE_ADDR *); +- +-/* Insert a hardware-assisted breakpoint at BP_TGT->placed_address. +- Return 0 on success, EBUSY on failure. */ +-struct bp_target_info; +-extern int i386_insert_hw_breakpoint (struct bp_target_info *bp_tgt); +- +-/* Remove a hardware-assisted breakpoint at BP_TGT->placed_address. +- Return 0 on success, -1 on failure. */ +-extern int i386_remove_hw_breakpoint (struct bp_target_info *bp_tgt); +- +-extern int i386_stopped_by_watchpoint (void); +- +-#ifndef I386_WATCHPOINTS_IN_TARGET_VECTOR +- +-/* Returns the number of hardware watchpoints of type TYPE that we can +- set. Value is positive if we can set CNT watchpoints, zero if +- setting watchpoints of type TYPE is not supported, and negative if +- CNT is more than the maximum number of watchpoints of type TYPE +- that we can support. TYPE is one of bp_hardware_watchpoint, +- bp_read_watchpoint, bp_write_watchpoint, or bp_hardware_breakpoint. +- CNT is the number of such watchpoints used so far (including this +- one). OTHERTYPE is non-zero if other types of watchpoints are +- currently enabled. +- +- We always return 1 here because we don't have enough information +- about possible overlap of addresses that they want to watch. As an +- extreme example, consider the case where all the watchpoints watch +- the same address and the same region length: then we can handle a +- virtually unlimited number of watchpoints, due to debug register +- sharing implemented via reference counts in i386-nat.c. */ +- +-#define TARGET_CAN_USE_HARDWARE_WATCHPOINT(type, cnt, ot) 1 +- +-/* Returns non-zero if we can use hardware watchpoints to watch a +- region whose address is ADDR and whose length is LEN. */ +- +-#define TARGET_REGION_OK_FOR_HW_WATCHPOINT(addr, len) \ +- i386_region_ok_for_watchpoint (addr, len) +- +-/* After a watchpoint trap, the PC points to the instruction after the +- one that caused the trap. Therefore we don't need to step over it. +- But we do need to reset the status register to avoid another trap. */ +- +-#define HAVE_CONTINUABLE_WATCHPOINT 1 +- +-#define STOPPED_BY_WATCHPOINT(W) (i386_stopped_by_watchpoint () != 0) +- +-#define target_stopped_data_address(target, x) \ +- i386_stopped_data_address(target, x) +- +-/* Use these macros for watchpoint insertion/removal. */ +- +-#define target_insert_watchpoint(addr, len, type) \ +- i386_insert_watchpoint (addr, len, type) +- +-#define target_remove_watchpoint(addr, len, type) \ +- i386_remove_watchpoint (addr, len, type) +- +-#define target_insert_hw_breakpoint(bp_tgt) \ +- i386_insert_hw_breakpoint (bp_tgt) +- +-#define target_remove_hw_breakpoint(bp_tgt) \ +- i386_remove_hw_breakpoint (bp_tgt) +- +-#endif /* I386_WATCHPOINTS_IN_TARGET_VECTOR */ +- +-#endif /* I386_USE_GENERIC_WATCHPOINTS */ +- +-#endif /* NM_I386_H */ +diff -up -ruNp gdb-7.0.1-orig/gdb/config/i386/nm-linux64.h gdb-7.0.1/gdb/config/i386/nm-linux64.h +--- gdb-7.0.1-orig/gdb/config/i386/nm-linux64.h 2010-02-09 11:22:39.000000000 +0100 ++++ gdb-7.0.1/gdb/config/i386/nm-linux64.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,54 +0,0 @@ +-/* Native support for GNU/Linux x86-64. +- +- Copyright 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 +- Free Software Foundation, Inc. +- +- Contributed by Jiri Smid, SuSE Labs. +- +- 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 3 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, see . */ +- +-#ifndef NM_LINUX64_H +-#define NM_LINUX64_H +- +-/* GNU/Linux supports the i386 hardware debugging registers. */ +-#define I386_USE_GENERIC_WATCHPOINTS +-#define I386_WATCHPOINTS_IN_TARGET_VECTOR +- +-#include "i386/nm-i386.h" +-#include "config/nm-linux.h" +- +-/* Support for 8-byte wide hardware watchpoints. */ +-#define TARGET_HAS_DR_LEN_8 1 +- +-/* Provide access to the i386 hardware debugging registers. */ +- +-extern void amd64_linux_dr_set_control (unsigned long control); +-#define I386_DR_LOW_SET_CONTROL(control) \ +- amd64_linux_dr_set_control (control) +- +-extern void amd64_linux_dr_set_addr (int regnum, CORE_ADDR addr); +-#define I386_DR_LOW_SET_ADDR(regnum, addr) \ +- amd64_linux_dr_set_addr (regnum, addr) +- +-extern void amd64_linux_dr_reset_addr (int regnum); +-#define I386_DR_LOW_RESET_ADDR(regnum) \ +- amd64_linux_dr_reset_addr (regnum) +- +-extern unsigned long amd64_linux_dr_get_status (void); +-#define I386_DR_LOW_GET_STATUS() \ +- amd64_linux_dr_get_status () +- +-#endif /* nm-linux64.h */ +diff -up -ruNp gdb-7.0.1-orig/gdb/config/mips/nm-irix5.h gdb-7.0.1/gdb/config/mips/nm-irix5.h +--- gdb-7.0.1-orig/gdb/config/mips/nm-irix5.h 2010-02-09 11:22:39.000000000 +0100 ++++ gdb-7.0.1/gdb/config/mips/nm-irix5.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,44 +0,0 @@ +-/* Definitions for native support of irix5. +- +- Copyright 1993, 1996, 1998, 1999, 2000, 2007, 2008, 2009 +- 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 3 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, see . */ +- +-#define TARGET_HAS_HARDWARE_WATCHPOINTS +- +-/* TARGET_CAN_USE_HARDWARE_WATCHPOINT is now defined to go through +- the target vector. For Irix5, procfs_can_use_hw_watchpoint() +- should be invoked. */ +- +-/* When a hardware watchpoint fires off the PC will be left at the +- instruction which caused the watchpoint. It will be necessary for +- GDB to step over the watchpoint. */ +- +-#define STOPPED_BY_WATCHPOINT(W) \ +- procfs_stopped_by_watchpoint(inferior_ptid) +-extern int procfs_stopped_by_watchpoint (ptid_t); +- +-/* Use these macros for watchpoint insertion/deletion. */ +-/* type can be 0: write watch, 1: read watch, 2: access watch (read/write) */ +-#define target_insert_watchpoint(ADDR, LEN, TYPE) \ +- procfs_set_watchpoint (inferior_ptid, ADDR, LEN, TYPE, 0) +-#define target_remove_watchpoint(ADDR, LEN, TYPE) \ +- procfs_set_watchpoint (inferior_ptid, ADDR, 0, 0, 0) +-extern int procfs_set_watchpoint (ptid_t, CORE_ADDR, int, int, int); +- +-#define TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT(SIZE) 1 +- +diff -up -ruNp gdb-7.0.1-orig/gdb/gdbserver/linux-i386-low.c gdb-7.0.1/gdb/gdbserver/linux-i386-low.c +--- gdb-7.0.1-orig/gdb/gdbserver/linux-i386-low.c 2010-02-09 11:22:39.000000000 +0100 ++++ gdb-7.0.1/gdb/gdbserver/linux-i386-low.c 1970-01-01 01:00:00.000000000 +0100 +@@ -1,210 +0,0 @@ +-/* GNU/Linux/i386 specific low level interface, for the remote server for GDB. +- Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, +- 2007, 2008, 2009 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 3 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, see . */ +- +-#include "server.h" +-#include "linux-low.h" +-#include "i387-fp.h" +- +-#include "gdb_proc_service.h" +- +-#include +- +-#ifdef HAVE_SYS_REG_H +-#include +-#endif +- +-#ifndef PTRACE_GET_THREAD_AREA +-#define PTRACE_GET_THREAD_AREA 25 +-#endif +- +-/* Defined in auto-generated file reg-i386-linux.c. */ +-void init_registers_i386_linux (void); +- +- +-/* This module only supports access to the general purpose registers. */ +- +-#define i386_num_regs 16 +- +-/* This stuff comes from i386-linux-nat.c. */ +- +-/* Mapping between the general-purpose registers in `struct user' +- format and GDB's register array layout. */ +-static int i386_regmap[] = +-{ +- EAX * 4, ECX * 4, EDX * 4, EBX * 4, +- UESP * 4, EBP * 4, ESI * 4, EDI * 4, +- EIP * 4, EFL * 4, CS * 4, SS * 4, +- DS * 4, ES * 4, FS * 4, GS * 4 +-}; +- +-/* Called by libthread_db. */ +- +-ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, +- lwpid_t lwpid, int idx, void **base) +-{ +- unsigned int desc[4]; +- +- if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, +- (void *) idx, (unsigned long) &desc) < 0) +- return PS_ERR; +- +- *(int *)base = desc[1]; +- return PS_OK; +-} +- +-static int +-i386_cannot_store_register (int regno) +-{ +- return (regno >= i386_num_regs); +-} +- +-static int +-i386_cannot_fetch_register (int regno) +-{ +- return (regno >= i386_num_regs); +-} +- +- +-#ifdef HAVE_PTRACE_GETREGS +-#include +-#include +- +-static void +-i386_fill_gregset (void *buf) +-{ +- int i; +- +- for (i = 0; i < i386_num_regs; i++) +- collect_register (i, ((char *) buf) + i386_regmap[i]); +- +- collect_register_by_name ("orig_eax", ((char *) buf) + ORIG_EAX * 4); +-} +- +-static void +-i386_store_gregset (const void *buf) +-{ +- int i; +- +- for (i = 0; i < i386_num_regs; i++) +- supply_register (i, ((char *) buf) + i386_regmap[i]); +- +- supply_register_by_name ("orig_eax", ((char *) buf) + ORIG_EAX * 4); +-} +- +-static void +-i386_fill_fpregset (void *buf) +-{ +- i387_cache_to_fsave (buf); +-} +- +-static void +-i386_store_fpregset (const void *buf) +-{ +- i387_fsave_to_cache (buf); +-} +- +-static void +-i386_fill_fpxregset (void *buf) +-{ +- i387_cache_to_fxsave (buf); +-} +- +-static void +-i386_store_fpxregset (const void *buf) +-{ +- i387_fxsave_to_cache (buf); +-} +- +-#endif /* HAVE_PTRACE_GETREGS */ +- +-struct regset_info target_regsets[] = { +-#ifdef HAVE_PTRACE_GETREGS +- { PTRACE_GETREGS, PTRACE_SETREGS, sizeof (elf_gregset_t), +- GENERAL_REGS, +- i386_fill_gregset, i386_store_gregset }, +-# ifdef HAVE_PTRACE_GETFPXREGS +- { PTRACE_GETFPXREGS, PTRACE_SETFPXREGS, sizeof (elf_fpxregset_t), +- EXTENDED_REGS, +- i386_fill_fpxregset, i386_store_fpxregset }, +-# endif +- { PTRACE_GETFPREGS, PTRACE_SETFPREGS, sizeof (elf_fpregset_t), +- FP_REGS, +- i386_fill_fpregset, i386_store_fpregset }, +-#endif /* HAVE_PTRACE_GETREGS */ +- { 0, 0, -1, -1, NULL, NULL } +-}; +- +-static const unsigned char i386_breakpoint[] = { 0xCC }; +-#define i386_breakpoint_len 1 +- +-extern int debug_threads; +- +-static CORE_ADDR +-i386_get_pc () +-{ +- unsigned long pc; +- +- collect_register_by_name ("eip", &pc); +- +- if (debug_threads) +- fprintf (stderr, "stop pc (before any decrement) is %08lx\n", pc); +- return pc; +-} +- +-static void +-i386_set_pc (CORE_ADDR newpc) +-{ +- if (debug_threads) +- fprintf (stderr, "set pc to %08lx\n", (long) newpc); +- supply_register_by_name ("eip", &newpc); +-} +- +-static int +-i386_breakpoint_at (CORE_ADDR pc) +-{ +- unsigned char c; +- +- read_inferior_memory (pc, &c, 1); +- if (c == 0xCC) +- return 1; +- +- return 0; +-} +- +-struct linux_target_ops the_low_target = { +- init_registers_i386_linux, +- i386_num_regs, +- i386_regmap, +- i386_cannot_fetch_register, +- i386_cannot_store_register, +- i386_get_pc, +- i386_set_pc, +- i386_breakpoint, +- i386_breakpoint_len, +- NULL, +- 1, +- i386_breakpoint_at, +- NULL, +- NULL, +- NULL, +- NULL, +- NULL, +- NULL, +-}; +diff -up -ruNp gdb-7.0.1-orig/gdb/gdbserver/linux-x86-64-low.c gdb-7.0.1/gdb/gdbserver/linux-x86-64-low.c +--- gdb-7.0.1-orig/gdb/gdbserver/linux-x86-64-low.c 2010-02-09 11:22:39.000000000 +0100 ++++ gdb-7.0.1/gdb/gdbserver/linux-x86-64-low.c 1970-01-01 01:00:00.000000000 +0100 +@@ -1,184 +0,0 @@ +-/* GNU/Linux/x86-64 specific low level interface, for the remote server +- for GDB. +- Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009 +- 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 3 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, see . */ +- +-#include "server.h" +-#include "linux-low.h" +-#include "i387-fp.h" +- +-#include "gdb_proc_service.h" +- +-/* Defined in auto-generated file reg-x86-64-linux.c. */ +-void init_registers_x86_64_linux (void); +- +-#include +-#include +-#include +- +-/* This definition comes from prctl.h, but some kernels may not have it. */ +-#ifndef PTRACE_ARCH_PRCTL +-#define PTRACE_ARCH_PRCTL 30 +-#endif +- +-/* The following definitions come from prctl.h, but may be absent +- for certain configurations. */ +-#ifndef ARCH_GET_FS +-#define ARCH_SET_GS 0x1001 +-#define ARCH_SET_FS 0x1002 +-#define ARCH_GET_FS 0x1003 +-#define ARCH_GET_GS 0x1004 +-#endif +- +-static int x86_64_regmap[] = { +- RAX * 8, RBX * 8, RCX * 8, RDX * 8, +- RSI * 8, RDI * 8, RBP * 8, RSP * 8, +- R8 * 8, R9 * 8, R10 * 8, R11 * 8, +- R12 * 8, R13 * 8, R14 * 8, R15 * 8, +- RIP * 8, EFLAGS * 8, CS * 8, SS * 8, +- DS * 8, ES * 8, FS * 8, GS * 8, +- -1, -1, -1, -1, -1, -1, -1, -1, +- -1, -1, -1, -1, -1, -1, -1, -1, +- -1, -1, -1, -1, -1, -1, -1, -1, +- -1, -1, -1, -1, -1, -1, -1, -1, -1, +- ORIG_RAX * 8 +-}; +- +-#define X86_64_NUM_GREGS (sizeof(x86_64_regmap)/sizeof(int)) +- +-/* Called by libthread_db. */ +- +-ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, +- lwpid_t lwpid, int idx, void **base) +-{ +- switch (idx) +- { +- case FS: +- if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_FS) == 0) +- return PS_OK; +- break; +- case GS: +- if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_GS) == 0) +- return PS_OK; +- break; +- default: +- return PS_BADADDR; +- } +- return PS_ERR; +-} +- +-static void +-x86_64_fill_gregset (void *buf) +-{ +- int i; +- +- for (i = 0; i < X86_64_NUM_GREGS; i++) +- if (x86_64_regmap[i] != -1) +- collect_register (i, ((char *) buf) + x86_64_regmap[i]); +-} +- +-static void +-x86_64_store_gregset (const void *buf) +-{ +- int i; +- +- for (i = 0; i < X86_64_NUM_GREGS; i++) +- if (x86_64_regmap[i] != -1) +- supply_register (i, ((char *) buf) + x86_64_regmap[i]); +-} +- +-static void +-x86_64_fill_fpregset (void *buf) +-{ +- i387_cache_to_fxsave (buf); +-} +- +-static void +-x86_64_store_fpregset (const void *buf) +-{ +- i387_fxsave_to_cache (buf); +-} +- +-struct regset_info target_regsets[] = { +- { PTRACE_GETREGS, PTRACE_SETREGS, sizeof (elf_gregset_t), +- GENERAL_REGS, +- x86_64_fill_gregset, x86_64_store_gregset }, +- { PTRACE_GETFPREGS, PTRACE_SETFPREGS, sizeof (elf_fpregset_t), +- FP_REGS, +- x86_64_fill_fpregset, x86_64_store_fpregset }, +- { 0, 0, -1, -1, NULL, NULL } +-}; +- +-static const unsigned char x86_64_breakpoint[] = { 0xCC }; +-#define x86_64_breakpoint_len 1 +- +-extern int debug_threads; +- +-static CORE_ADDR +-x86_64_get_pc () +-{ +- unsigned long pc; +- +- collect_register_by_name ("rip", &pc); +- +- if (debug_threads) +- fprintf (stderr, "stop pc (before any decrement) is %08lx\n", pc); +- return pc; +-} +- +-static void +-x86_64_set_pc (CORE_ADDR newpc) +-{ +- if (debug_threads) +- fprintf (stderr, "set pc to %08lx\n", (long) newpc); +- supply_register_by_name ("rip", &newpc); +-} +- +-static int +-x86_64_breakpoint_at (CORE_ADDR pc) +-{ +- unsigned char c; +- +- read_inferior_memory (pc, &c, 1); +- if (c == 0xCC) +- return 1; +- +- return 0; +-} +- +-struct linux_target_ops the_low_target = { +- init_registers_x86_64_linux, +- -1, +- NULL, +- NULL, +- NULL, +- x86_64_get_pc, +- x86_64_set_pc, +- x86_64_breakpoint, +- x86_64_breakpoint_len, +- NULL, +- 1, +- x86_64_breakpoint_at, +- NULL, +- NULL, +- NULL, +- NULL, +- NULL, +- NULL, +-}; diff --git a/gdb-bz541866-rwatch-before-run.patch b/gdb-bz541866-rwatch-before-run.patch new file mode 100644 index 0000000..ae55b66 --- /dev/null +++ b/gdb-bz541866-rwatch-before-run.patch @@ -0,0 +1,194 @@ +[ Rediffed against gdb-7.0.1. ] + +watchpoint-hw-hit-once.c is a part of: +http://sourceware.org/ml/gdb-patches/2009-11/msg00444.html +http://sourceware.org/ml/gdb-cvs/2009-11/msg00178.html +ec27fce19a16df73e763281ce3a6d0cdb718174e + + +--- a/gdb/config/i386/linux64.mh ++++ b/gdb/config/i386/linux64.mh +@@ -2,7 +2,7 @@ + NATDEPFILES= inf-ptrace.o fork-child.o \ + i386-nat.o amd64-nat.o amd64-linux-nat.o linux-nat.o \ + proc-service.o linux-thread-db.o gcore.o linux-fork.o +-NAT_FILE= config/nm-linux.h ++NAT_FILE= nm-linux64.h + + # The dynamically loaded libthread_db needs access to symbols in the + # gdb executable. +--- a/gdb/config/i386/nm-linux.h ++++ b/gdb/config/i386/nm-linux.h +@@ -29,4 +29,7 @@ + #define FILL_FPXREGSET + #endif + ++/* Red Hat backward compatibility with gdb-6.8. */ ++#define target_can_use_hardware_watchpoint(type, cnt, ot) 1 ++ + #endif /* nm-linux.h */ +--- /dev/null ++++ b/gdb/config/i386/nm-linux64.h +@@ -0,0 +1,28 @@ ++/* Native support for GNU/Linux amd64. ++ ++ Copyright 2010 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 3 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, see . */ ++ ++#ifndef NM_LINUX64_H ++#define NM_LINUX64_H ++ ++#include "config/nm-linux.h" ++ ++/* Red Hat backward compatibility with gdb-6.8. */ ++#define target_can_use_hardware_watchpoint(type, cnt, ot) 1 ++ ++#endif /* NM_LINUX64_H */ +--- gdb-7.0.1-orig/gdb/config/ia64/linux.mh 2007-04-26 00:17:48.000000000 +0200 ++++ gdb-7.0.1/gdb/config/ia64/linux.mh 2010-02-24 01:40:21.000000000 +0100 +@@ -1,6 +1,6 @@ + # Host: Intel IA-64 running GNU/Linux + +-NAT_FILE= config/nm-linux.h ++NAT_FILE= nm-linux.h + NATDEPFILES= inf-ptrace.o fork-child.o corelow.o gcore.o \ + core-regset.o ia64-linux-nat.o \ + proc-service.o linux-thread-db.o linux-nat.o linux-fork.o +--- /dev/null ++++ b/gdb/config/ia64/nm-linux.h +@@ -0,0 +1,28 @@ ++/* Native support for GNU/Linux ia64. ++ ++ Copyright 2010 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 3 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, see . */ ++ ++#ifndef NM_LINUX_H ++#define NM_LINUX_H ++ ++#include "config/nm-linux.h" ++ ++/* Red Hat backward compatibility with gdb-6.8. */ ++#define target_can_use_hardware_watchpoint(type, cnt, ot) 1 ++ ++#endif /* NM_LINUX_H */ +--- a/gdb/target.h ++++ b/gdb/target.h +@@ -1257,8 +1257,10 @@ extern char *normal_pid_to_str (ptid_t ptid); + bp_hardware_breakpoint. CNT is the number of such watchpoints used so far + (including this one?). OTHERTYPE is who knows what... */ + ++#ifndef target_can_use_hardware_watchpoint + #define target_can_use_hardware_watchpoint(TYPE,CNT,OTHERTYPE) \ + (*current_target.to_can_use_hw_breakpoint) (TYPE, CNT, OTHERTYPE); ++#endif + + #define target_region_ok_for_hw_watchpoint(addr, len) \ + (*current_target.to_region_ok_for_hw_watchpoint) (addr, len) +--- /dev/null ++++ b/gdb/testsuite/gdb.base/watchpoint-hw-before-run.exp +@@ -0,0 +1,40 @@ ++# Copyright 2009, 2010 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 3 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, see . ++ ++# Arch not supporting hw watchpoints does not imply no_hardware_watchpoints set. ++if {(![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"] ++ && ![istarget "ia64-*-*"]) ++ || [target_info exists gdb,no_hardware_watchpoints]} then { ++ verbose "Skipping watchpoint-hw-before-run test." ++ return ++} ++ ++set test watchpoint-hw-before-run ++set srcfile watchpoint-hw-hit-once.c ++if { [prepare_for_testing ${test}.exp ${test} ${srcfile}] } { ++ return -1 ++} ++ ++gdb_test "rwatch watchee" "ardware read watchpoint 1: watchee" ++ ++# `runto_main' or `runto main' would delete the watchpoint created above. ++ ++if { [gdb_start_cmd] < 0 } { ++ untested start ++ return -1 ++} ++gdb_test "" "main .* at .*" "start" ++ ++gdb_test "continue" "Continuing.\r\nHardware read watchpoint \[0-9\]+: watchee\r\n\r\nValue = 0\r\n.*" +--- /dev/null ++++ b/gdb/testsuite/gdb.base/watchpoint-hw-hit-once.c +@@ -0,0 +1,34 @@ ++/* This testcase is part of GDB, the GNU debugger. ++ ++ Copyright 2009 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 3 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, see . */ ++ ++static int watchee; ++ ++int ++main (void) ++{ ++ volatile int dummy; ++ ++ /* Stub lines are present as no breakpoints/watchpoint gets hit if current PC ++ already stays on the line PC while entering "step"/"continue". */ ++ ++ dummy = 0; /* Stub to catch WATCHEE access after runto_main. */ ++ dummy = watchee; ++ dummy = 1; /* Stub to catch break-at-exit after WATCHEE has been hit. */ ++ dummy = 2; /* break-at-exit */ ++ ++ return 0; ++} diff --git a/gdb-ia64-infcall-workaround.patch b/gdb-ia64-infcall-workaround.patch new file mode 100644 index 0000000..d4a9a2b --- /dev/null +++ b/gdb-ia64-infcall-workaround.patch @@ -0,0 +1,117 @@ +There was a regression by: + +Re: [rfc, v3] Fix frame_id_inner comparison false positives +http://sourceware.org/ml/gdb-patches/2008-08/msg00578.html +http://sourceware.org/ml/gdb-cvs/2008-08/msg00182.html +916dde5d38b45a659514e47942ece70aec04cd78 + +the part: + * stack.c (return_command): Directly pop the selected frame. + +Reproducible on: +hp-diablo-01.rhts.eng.bos.redhat.com +RHEL5.5-Server-20100216.nightly +kernel-2.6.18-187.el5.ia64 + +Not reproducible on: +hp-bl860c-03.rhts.eng.bos.redhat.com +RHEL-4.8 +kernel-2.6.9-89.EL.ia64 + +To make ia64-tdep.c compilable +/- this stack.c check-in one must apply: + +Re: [RFC] Remove addr, endaddr, offset from obj_section +http://sourceware.org/ml/gdb-patches/2008-09/msg00011.html +http://sourceware.org/ml/gdb-cvs/2008-09/msg00009.html +99072369ec3c8f94c9a596e5ce30bf1f1c4bf20e + +It is reproducible by: + gdb.base/call-signal-resume.exp +although one must first remove the gdb_assert by: + gdb-infcall-sp-underflow.patch + +Reproducer: + set confirm no + set breakpoint pending on + set height 0 + set width 0 + # testcase from: gdb-6.8-37.el5.src + file gdb.base/call-signals + break stop_one + run + call gen_signal () + bt + frame 3 + return + p/x $sp + break stop_two + info break + p/x $pc + p/x $sp + bt + set debug infrun 1 + delete 1 + continue + bt + p/x $pc + echo Bug is reproduced if sp is now 0:\n + p/x $sp + kill + quit + + +--- ./gdb/frame.c 2010-02-23 21:35:35.000000000 +0100 ++++ ./gdb/frame.c 2010-02-23 21:46:34.000000000 +0100 +@@ -517,7 +517,7 @@ frame_id_eq (struct frame_id l, struct f + a stack overflow strategy that cause the handler to be run on a + different stack. */ + +-static int ++int + frame_id_inner (struct gdbarch *gdbarch, struct frame_id l, struct frame_id r) + { + int inner; +--- ./gdb/frame.h 2009-09-13 18:28:28.000000000 +0200 ++++ ./gdb/frame.h 2010-02-23 21:46:10.000000000 +0100 +@@ -708,4 +708,7 @@ extern struct frame_info *create_new_fra + extern int frame_unwinder_is (struct frame_info *fi, + const struct frame_unwind *unwinder); + ++extern int frame_id_inner (struct gdbarch *gdbarch, struct frame_id l, ++ struct frame_id r); ++ + #endif /* !defined (FRAME_H) */ +--- ./gdb/stack.c 2010-02-23 21:35:34.000000000 +0100 ++++ ./gdb/stack.c 2010-02-23 21:44:39.000000000 +0100 +@@ -1967,8 +1967,29 @@ If you continue, the return value that y + error (_("Not confirmed")); + } + +- /* Discard the selected frame and all frames inner-to it. */ +- frame_pop (get_selected_frame (NULL)); ++ /* NOTE: cagney/2003-01-18: Is this silly? Rather than pop each ++ frame in turn, should this code just go straight to the relevant ++ frame and pop that? */ ++ ++ /* First discard all frames inner-to the selected frame (making the ++ selected frame current). */ ++ { ++ struct frame_id selected_id = get_frame_id (get_selected_frame (NULL)); ++ while (!frame_id_eq (selected_id, get_frame_id (get_current_frame ()))) ++ { ++ struct frame_info *frame = get_current_frame (); ++ if (frame_id_inner (get_frame_arch (frame), selected_id, ++ get_frame_id (frame))) ++ /* Caught in the safety net, oops! We've gone way past the ++ selected frame. */ ++ error (_("Problem while popping stack frames (corrupt stack?)")); ++ frame_pop (get_current_frame ()); ++ } ++ } ++ ++ /* Second discard the selected frame (which is now also the current ++ frame). */ ++ frame_pop (get_current_frame ()); + + /* Store RETURN_VALUE in the just-returned register set. */ + if (return_value != NULL) diff --git a/gdb-infcall-sp-underflow.patch b/gdb-infcall-sp-underflow.patch new file mode 100644 index 0000000..d602a4f --- /dev/null +++ b/gdb-infcall-sp-underflow.patch @@ -0,0 +1,81 @@ +http://sourceware.org/ml/gdb-patches/2010-02/msg00515.html +Subject: [patch] infcall: Remove gdb_assert ($sp overflow) + +Hi, + +set $sp=0 +call something() +-> +../../gdb/infcall.c:521: internal-error: call_function_by_hand: Assertion +`(gdbarch_inner_than (gdbarch, 1, 2) && sp <= old_sp) || (gdbarch_inner_than +(gdbarch, 2, 1) && sp >= old_sp)' failed. + +as $sp - frame == 0xffffsmth which is not lower than $sp. + +It must not be gdb_assert(). It can be an error() but I left it just to do: + (gdb) set $sp=0 + (gdb) call doubleit (1) + Cannot access memory at address 0xffffffffffffff78 + (gdb) set $sp=-1 + (gdb) call doubleit (1) + Cannot access memory at address 0xffffffffffffff68 + +Unaware how inconvenient is an intentional crash of the testcase on some +embedded/non-MMU systems. +No regressions on {x86_64,x86_64-m32,i686}-fedora12-linux-gnu. + + +Thanks, +Jan + + +gdb/ +2010-02-19 Jan Kratochvil + + * infcall.c (call_function_by_hand): Remove gdb_assert on sp and old_sp. + New comment. + +gdb/testsuite/ +2010-02-19 Jan Kratochvil + + * gdb.base/callfuncs.exp: New tests for $spval 0 and -1. Remove return. + +--- a/gdb/infcall.c ++++ b/gdb/infcall.c +@@ -518,10 +518,9 @@ call_function_by_hand (struct value *function, int nargs, struct value **args) + /* Stack grows up. */ + sp = gdbarch_frame_align (gdbarch, old_sp + 1); + } +- gdb_assert ((gdbarch_inner_than (gdbarch, 1, 2) +- && sp <= old_sp) +- || (gdbarch_inner_than (gdbarch, 2, 1) +- && sp >= old_sp)); ++ /* SP may have overflown address zero here from OLD_SP. Memory access ++ functions will probably fail in such case but that is a target's ++ problem. */ + } + else + /* FIXME: cagney/2002-09-18: Hey, you loose! +--- a/gdb/testsuite/gdb.base/callfuncs.exp ++++ b/gdb/testsuite/gdb.base/callfuncs.exp +@@ -469,5 +469,18 @@ if {$old_reg_content == $new_reg_content} then { + fail "nested call dummies preserve register contents" + } + +-return 0 ++# GDB should not crash by internal error on $sp overflow during the inferior ++# call. It is OK it will stop on some: Cannot access memory at address 0x$hex. + ++foreach spval {0 -1} { ++ set old_ldprefix $pf_prefix ++ lappend pf_prefix "sp=$spval:" ++ ++ gdb_test {set $old_sp = $sp} ++ gdb_test "set \$sp = $spval" ++ ++ gdb_test "call doubleit (1)" ++ ++ gdb_test {set $sp = $old_sp} ++ set pf_prefix $old_ldprefix ++} + diff --git a/gdb-stale-sectindex.patch b/gdb-stale-sectindex.patch new file mode 100644 index 0000000..828b7eb --- /dev/null +++ b/gdb-stale-sectindex.patch @@ -0,0 +1,112 @@ +http://sourceware.org/ml/gdb-patches/2010-02/msg00477.html +Subject: Re: [patch] Fix crash on stale addrinfo->sectindex + +On Fri, 19 Feb 2010 04:01:05 +0100, Tom Tromey wrote: +> >>>>> "Jan" == Jan Kratochvil writes: +> I think you ought to move this comment as well. +> It appears to just be hanging at the end of a block after the patch. + +Yes; forgot. + +> This is ok with that change. Thanks. + +Checked-in. + +On Fri, 19 Feb 2010 04:10:30 +0100, Tom Tromey wrote: +> Oh, by the way, I think this is reasonable for 7.1. It is +> straightforward and fixes a reported crash. If Joel agrees, please put +> it on the branch. Thanks. + +OK for the branch? + + +Thanks, +Jan + + +http://sourceware.org/ml/gdb-cvs/2010-02/msg00162.html + +### src/gdb/ChangeLog 2010/02/19 00:35:53 1.11380 +### src/gdb/ChangeLog 2010/02/19 06:19:44 1.11381 +## -1,3 +1,10 @@ ++2010-02-19 Jan Kratochvil ++ ++ * symfile.c (addr_info_make_relative): Extend comment. Move SECT to ++ a more inner block. Initialize ADDR by LOWER_OFFSET only if it was ++ found by bfd_get_section_by_name. ++ * symfile.h (struct section_addr_info) : New comment. ++ + 2010-02-19 Joel Brobecker + + * NEWS: Add new "[...] since 7.1" section. Rename the "[...] since +--- src/gdb/symfile.c 2010/02/18 19:17:00 1.272 ++++ src/gdb/symfile.c 2010/02/19 06:19:45 1.273 +@@ -562,13 +562,13 @@ + } + + /* Relativize absolute addresses in ADDRS into offsets based on ABFD. Fill-in +- also SECTINDEXes there. */ ++ also SECTINDEXes specific to ABFD there. This function can be used to ++ rebase ADDRS to start referencing different BFD than before. */ + + void + addr_info_make_relative (struct section_addr_info *addrs, bfd *abfd) + { + asection *lower_sect; +- asection *sect; + CORE_ADDR lower_offset; + int i; + +@@ -597,25 +597,29 @@ + + for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++) + { +- if (addrs->other[i].addr != 0) ++ asection *sect = bfd_get_section_by_name (abfd, addrs->other[i].name); ++ ++ if (sect) + { +- sect = bfd_get_section_by_name (abfd, addrs->other[i].name); +- if (sect) ++ /* This is the index used by BFD. */ ++ addrs->other[i].sectindex = sect->index; ++ ++ if (addrs->other[i].addr != 0) + { + addrs->other[i].addr -= bfd_section_vma (abfd, sect); + lower_offset = addrs->other[i].addr; +- /* This is the index used by BFD. */ +- addrs->other[i].sectindex = sect->index; + } + else +- { +- warning (_("section %s not found in %s"), addrs->other[i].name, +- bfd_get_filename (abfd)); +- addrs->other[i].addr = 0; +- } ++ addrs->other[i].addr = lower_offset; + } + else +- addrs->other[i].addr = lower_offset; ++ { ++ warning (_("section %s not found in %s"), addrs->other[i].name, ++ bfd_get_filename (abfd)); ++ addrs->other[i].addr = 0; ++ ++ /* SECTINDEX is invalid if ADDR is zero. */ ++ } + } + } + +--- src/gdb/symfile.h 2010/02/03 14:13:16 1.64 ++++ src/gdb/symfile.h 2010/02/19 06:19:45 1.65 +@@ -80,6 +80,8 @@ + { + CORE_ADDR addr; + char *name; ++ ++ /* SECTINDEX must be valid for associated BFD if ADDR is not zero. */ + int sectindex; + } other[1]; + }; + diff --git a/gdb-test-interrupt.exp-timeout.patch b/gdb-test-interrupt.exp-timeout.patch new file mode 100644 index 0000000..399f952 --- /dev/null +++ b/gdb-test-interrupt.exp-timeout.patch @@ -0,0 +1,17 @@ +commit 03729380c318738d19256b219bcc03d333dc54bf +Author: Daniel Jacobowitz +Date: Mon Feb 1 17:51:18 2010 +0000 + +[...] + * gdb.base/interrupt.exp: Match unexpected gdb prompt. + +--- a/gdb/testsuite/gdb.base/interrupt.exp ++++ b/gdb/testsuite/gdb.base/interrupt.exp +@@ -167,6 +167,7 @@ if ![file exists $binfile] then { + # here. + gdb_expect { + -re "^(\r\n|)data\r\n(|data\r\n)$" { pass "echo data" } ++ -re "Undefined command.*$gdb_prompt " { fail "echo data" } + timeout { fail "echo data (timeout)" } + eof { fail "echo data (eof)" } + } diff --git a/gdb.spec b/gdb.spec index 61f69f2..f671624 100644 --- a/gdb.spec +++ b/gdb.spec @@ -36,7 +36,7 @@ Version: 7.0.1 # The release always contains a leading reserved number, start it at 1. # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing. -Release: 31%{?_with_upstream:.upstream}%{dist} +Release: 32%{?_with_upstream:.upstream}%{dist} License: GPLv3+ Group: Development/Debuggers @@ -349,6 +349,7 @@ Patch326: gdb-6.8-tui-singlebinary.patch # Support transparent debugging of inlined functions for an optimized code. # Disable break-by-name on inlined functions due to a regression on parameters # of inlined functions falsely (BZ 556975 Comment 8). +# Disable addon (finish) due to inline-cmds.exp: up from outer_inline2 assert. Patch350: gdb-6.8-inlining-addon.patch Patch328: gdb-6.8-inlining-by-name.patch @@ -375,6 +376,8 @@ Patch348: gdb-6.8-bz466901-backtrace-full-prelinked.patch # The merged branch `archer' of: http://sourceware.org/gdb/wiki/ProjectArcher Patch349: gdb-archer.patch +Patch418: gdb-archer-excessive-files.patch +Patch420: gdb-archer-ada.patch # Fix parsing elf64-i386 files for kdump PAE vmcore dumps (BZ 457187). # - Turn on 64-bit BFD support, globally enable AC_SYS_LARGEFILE. @@ -450,6 +453,21 @@ Patch414: gdb-bz559414-pie-assert-fix.patch # Fortran: Fix regression on setting breakpoint at toplevel symbols (BZ 559291). Patch416: gdb-bz559291-fortran-module-toplevel.patch +# Fix i386+x86_64 rwatch+awatch before run, regression against 6.8 (BZ 541866). +Patch417: gdb-bz541866-rwatch-before-run.patch + +# testsuite: Fix long timeout on arches with failing gdb.base/interrupt.exp. +Patch419: gdb-test-interrupt.exp-timeout.patch + +# Fix crash on stale addrinfo->sectindex (more sensitive due to the PIE patch). +Patch421: gdb-stale-sectindex.patch + +# Remove false gdb_assert on $sp underflow. +Patch422: gdb-infcall-sp-underflow.patch + +# Workaround ia64 inferior calls clearing SP. +Patch423: gdb-ia64-infcall-workaround.patch + BuildRequires: ncurses-devel%{?_isa} texinfo gettext flex bison expat-devel%{?_isa} Requires: readline%{?_isa} BuildRequires: readline-devel%{?_isa} @@ -581,6 +599,8 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c %patch232 -p1 %patch349 -p1 +%patch418 -p1 +%patch420 -p1 %patch383 -p1 %patch384 -p1 %patch385 -p1 @@ -672,7 +692,7 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c %patch322 -p1 %patch324 -p1 %patch326 -p1 -%patch350 -p1 +###patch350 -p1 ###patch328 -p1 %patch329 -p1 %patch330 -p1 @@ -703,6 +723,11 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c %patch402 -p1 %patch414 -p1 %patch416 -p1 +%patch417 -p1 +%patch419 -p1 +%patch421 -p1 +%patch422 -p1 +%patch423 -p1 # Always verify their applicability. %patch393 -p1 %patch335 -p1 @@ -1028,6 +1053,16 @@ fi %endif %changelog +* Fri Feb 26 2010 Jan Kratochvil - 7.0.1-32.fc12 +- Fix gdb.ada/* regressions (Keith Seitz). +- Disable addon (finish) due to inline-cmds.exp: up from outer_inline2 assert. +- Fix i386+x86_64 rwatch+awatch before run, regression against 6.8 (BZ 541866). +- Fix crash on stale addrinfo->sectindex (more sensitive due to the PIE patch). +- Remove false gdb_assert on $sp underflow. +- Workaround ia64 inferior calls clearing SP. +- testsuite: Fix long timeout on arches with failing gdb.base/interrupt.exp. +- Fix ia64 part of the bt-clone-stop.exp fix. + * Wed Feb 3 2010 Jan Kratochvil - 7.0.1-31.fc12 - Fortran: Fix regression on setting breakpoint at toplevel symbols (BZ 559291).