- 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.
This commit is contained in:
parent
29da87712f
commit
5a6df07a01
|
@ -164,7 +164,7 @@ Index: gdb-6.8.50.20090802/gdb/amd64-tdep.c
|
||||||
/* Floating-point registers. */
|
/* Floating-point registers. */
|
||||||
--- a/gdb/ia64-tdep.c
|
--- a/gdb/ia64-tdep.c
|
||||||
+++ b/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
|
default_frame_sniffer
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -228,12 +228,13 @@ Index: gdb-6.8.50.20090802/gdb/amd64-tdep.c
|
||||||
+ if (minsym == NULL)
|
+ if (minsym == NULL)
|
||||||
+ return 0;
|
+ 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);
|
+ instr &= ~(((1L << 20) - 1) << 13);
|
||||||
+ /* Address is relative to the jump instruction slot, not the next one. */
|
+ /* Address is relative to the jump instruction slot, not the next one. */
|
||||||
+ instr |= (((SYMBOL_VALUE_ADDRESS (minsym) - (pc & ~0xfL)) >> 4)
|
+ instr |= (((SYMBOL_VALUE_ADDRESS (minsym) - (pc & ~0xfL)) >> 4)
|
||||||
+ & ((1L << 20) - 1)) << 13;
|
+ & ((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],
|
+ if (memcmp (&buf[LINUX_CLONE_PRE_SLOTS * 16],
|
||||||
+ &linux_clone2_code[LINUX_CLONE_PRE_SLOTS * 16],
|
+ &linux_clone2_code[LINUX_CLONE_PRE_SLOTS * 16],
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
From: Keith Seitz <keiths@redhat.com>
|
||||||
|
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;
|
||||||
|
|
|
@ -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 <http://www.gnu.org/licenses/>. */
|
||||||
|
-
|
||||||
|
-#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 <http://www.gnu.org/licenses/>. */
|
||||||
|
-
|
||||||
|
-#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 <http://www.gnu.org/licenses/>. */
|
||||||
|
-
|
||||||
|
-#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 <http://www.gnu.org/licenses/>. */
|
||||||
|
-
|
||||||
|
-#include "server.h"
|
||||||
|
-#include "linux-low.h"
|
||||||
|
-#include "i387-fp.h"
|
||||||
|
-
|
||||||
|
-#include "gdb_proc_service.h"
|
||||||
|
-
|
||||||
|
-#include <sys/ptrace.h>
|
||||||
|
-
|
||||||
|
-#ifdef HAVE_SYS_REG_H
|
||||||
|
-#include <sys/reg.h>
|
||||||
|
-#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 <sys/procfs.h>
|
||||||
|
-#include <sys/ptrace.h>
|
||||||
|
-
|
||||||
|
-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 <http://www.gnu.org/licenses/>. */
|
||||||
|
-
|
||||||
|
-#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 <sys/reg.h>
|
||||||
|
-#include <sys/procfs.h>
|
||||||
|
-#include <sys/ptrace.h>
|
||||||
|
-
|
||||||
|
-/* 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,
|
||||||
|
-};
|
|
@ -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 <http://www.gnu.org/licenses/>. */
|
||||||
|
+
|
||||||
|
+#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 <http://www.gnu.org/licenses/>. */
|
||||||
|
+
|
||||||
|
+#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 <http://www.gnu.org/licenses/>.
|
||||||
|
+
|
||||||
|
+# 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 <http://www.gnu.org/licenses/>. */
|
||||||
|
+
|
||||||
|
+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;
|
||||||
|
+}
|
|
@ -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)
|
|
@ -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 <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
* infcall.c (call_function_by_hand): Remove gdb_assert on sp and old_sp.
|
||||||
|
New comment.
|
||||||
|
|
||||||
|
gdb/testsuite/
|
||||||
|
2010-02-19 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
* 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
|
||||||
|
+}
|
||||||
|
|
|
@ -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 <jan.kratochvil@redhat.com> 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 <jan.kratochvil@redhat.com>
|
||||||
|
+
|
||||||
|
+ * 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) <sectindex>: New comment.
|
||||||
|
+
|
||||||
|
2010-02-19 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
|
* 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];
|
||||||
|
};
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
commit 03729380c318738d19256b219bcc03d333dc54bf
|
||||||
|
Author: Daniel Jacobowitz <dan@debian.org>
|
||||||
|
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)" }
|
||||||
|
}
|
39
gdb.spec
39
gdb.spec
|
@ -36,7 +36,7 @@ Version: 7.0.1
|
||||||
|
|
||||||
# The release always contains a leading reserved number, start it at 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.
|
# `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+
|
License: GPLv3+
|
||||||
Group: Development/Debuggers
|
Group: Development/Debuggers
|
||||||
|
@ -349,6 +349,7 @@ Patch326: gdb-6.8-tui-singlebinary.patch
|
||||||
# Support transparent debugging of inlined functions for an optimized code.
|
# Support transparent debugging of inlined functions for an optimized code.
|
||||||
# Disable break-by-name on inlined functions due to a regression on parameters
|
# Disable break-by-name on inlined functions due to a regression on parameters
|
||||||
# of inlined functions falsely <optimized out> (BZ 556975 Comment 8).
|
# of inlined functions falsely <optimized out> (BZ 556975 Comment 8).
|
||||||
|
# Disable addon (finish) due to inline-cmds.exp: up from outer_inline2 assert.
|
||||||
Patch350: gdb-6.8-inlining-addon.patch
|
Patch350: gdb-6.8-inlining-addon.patch
|
||||||
Patch328: gdb-6.8-inlining-by-name.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
|
# The merged branch `archer' of: http://sourceware.org/gdb/wiki/ProjectArcher
|
||||||
Patch349: gdb-archer.patch
|
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).
|
# Fix parsing elf64-i386 files for kdump PAE vmcore dumps (BZ 457187).
|
||||||
# - Turn on 64-bit BFD support, globally enable AC_SYS_LARGEFILE.
|
# - 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).
|
# Fortran: Fix regression on setting breakpoint at toplevel symbols (BZ 559291).
|
||||||
Patch416: gdb-bz559291-fortran-module-toplevel.patch
|
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}
|
BuildRequires: ncurses-devel%{?_isa} texinfo gettext flex bison expat-devel%{?_isa}
|
||||||
Requires: readline%{?_isa}
|
Requires: readline%{?_isa}
|
||||||
BuildRequires: readline-devel%{?_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
|
%patch232 -p1
|
||||||
%patch349 -p1
|
%patch349 -p1
|
||||||
|
%patch418 -p1
|
||||||
|
%patch420 -p1
|
||||||
%patch383 -p1
|
%patch383 -p1
|
||||||
%patch384 -p1
|
%patch384 -p1
|
||||||
%patch385 -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
|
%patch322 -p1
|
||||||
%patch324 -p1
|
%patch324 -p1
|
||||||
%patch326 -p1
|
%patch326 -p1
|
||||||
%patch350 -p1
|
###patch350 -p1
|
||||||
###patch328 -p1
|
###patch328 -p1
|
||||||
%patch329 -p1
|
%patch329 -p1
|
||||||
%patch330 -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
|
%patch402 -p1
|
||||||
%patch414 -p1
|
%patch414 -p1
|
||||||
%patch416 -p1
|
%patch416 -p1
|
||||||
|
%patch417 -p1
|
||||||
|
%patch419 -p1
|
||||||
|
%patch421 -p1
|
||||||
|
%patch422 -p1
|
||||||
|
%patch423 -p1
|
||||||
# Always verify their applicability.
|
# Always verify their applicability.
|
||||||
%patch393 -p1
|
%patch393 -p1
|
||||||
%patch335 -p1
|
%patch335 -p1
|
||||||
|
@ -1028,6 +1053,16 @@ fi
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Feb 26 2010 Jan Kratochvil <jan.kratochvil@redhat.com> - 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 <jan.kratochvil@redhat.com> - 7.0.1-31.fc12
|
* Wed Feb 3 2010 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.0.1-31.fc12
|
||||||
- Fortran: Fix regression on setting breakpoint at toplevel symbols (BZ 559291).
|
- Fortran: Fix regression on setting breakpoint at toplevel symbols (BZ 559291).
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue