- Upgrade to the FSF GDB gdb-6.8.50 snapshot.

This commit is contained in:
Jan Kratochvil 2009-02-11 00:04:48 +00:00
parent ec0fcb652c
commit 81783d0ff2
19 changed files with 3033 additions and 2064 deletions

View File

@ -1 +1 @@
gdb-6.8.50.20081214.tar.bz2
gdb-6.8.50.20090209.tar.bz2

View File

@ -25,10 +25,10 @@
Port to GDB-6.7.
Index: gdb-6.8.50.20081128/gdb/symfile-mem.c
Index: gdb-6.8.50.20090209/gdb/symfile-mem.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/symfile-mem.c 2008-01-01 23:53:13.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/symfile-mem.c 2008-12-02 22:15:53.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/symfile-mem.c 2009-01-03 06:57:53.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/symfile-mem.c 2009-02-09 15:49:25.000000000 +0100
@@ -56,6 +56,14 @@
#include "elf/common.h"
@ -53,10 +53,10 @@ Index: gdb-6.8.50.20081128/gdb/symfile-mem.c
if (nbfd == NULL)
error (_("Failed to read a valid object file image from memory."));
Index: gdb-6.8.50.20081128/gdb/target.c
Index: gdb-6.8.50.20090209/gdb/target.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/target.c 2008-11-09 12:27:18.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/target.c 2008-12-02 22:17:28.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/target.c 2009-02-06 23:21:26.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/target.c 2009-02-09 15:50:39.000000000 +0100
@@ -57,7 +57,7 @@ static int nosymbol (char *, CORE_ADDR *
static void tcomplain (void) ATTR_NORETURN;
@ -66,7 +66,7 @@ Index: gdb-6.8.50.20081128/gdb/target.c
static int return_zero (void);
@@ -299,7 +299,7 @@ void target_create_inferior (char *exec_
@@ -294,7 +294,7 @@ target_create_inferior (char *exec_file,
}
@ -75,7 +75,7 @@ Index: gdb-6.8.50.20081128/gdb/target.c
nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write,
struct target_ops *t)
{
@@ -530,7 +530,7 @@ update_current_target (void)
@@ -522,7 +522,7 @@ update_current_target (void)
(void (*) (struct regcache *))
noprocess);
de_fault (deprecated_xfer_memory,
@ -84,7 +84,7 @@ Index: gdb-6.8.50.20081128/gdb/target.c
nomemory);
de_fault (to_files_info,
(void (*) (struct target_ops *))
@@ -1250,7 +1250,7 @@ target_xfer_partial (struct target_ops *
@@ -1252,7 +1252,7 @@ target_xfer_partial (struct target_ops *
it makes no progress, and then return how much was transferred). */
int
@ -93,7 +93,7 @@ Index: gdb-6.8.50.20081128/gdb/target.c
{
if (target_read (&current_target, TARGET_OBJECT_MEMORY, NULL,
myaddr, memaddr, len) == len)
@@ -1260,7 +1260,7 @@ target_read_memory (CORE_ADDR memaddr, g
@@ -1262,7 +1262,7 @@ target_read_memory (CORE_ADDR memaddr, g
}
int
@ -102,7 +102,7 @@ Index: gdb-6.8.50.20081128/gdb/target.c
{
if (target_write (&current_target, TARGET_OBJECT_MEMORY, NULL,
myaddr, memaddr, len) == len)
@@ -2690,8 +2690,8 @@ debug_to_prepare_to_store (struct regcac
@@ -2723,8 +2723,8 @@ debug_to_prepare_to_store (struct regcac
fprintf_unfiltered (gdb_stdlog, "target_prepare_to_store ()\n");
}
@ -113,23 +113,22 @@ Index: gdb-6.8.50.20081128/gdb/target.c
int write, struct mem_attrib *attrib,
struct target_ops *target)
{
@@ -2701,9 +2701,9 @@ deprecated_debug_xfer_memory (CORE_ADDR
@@ -2734,8 +2734,8 @@ deprecated_debug_xfer_memory (CORE_ADDR
attrib, target);
fprintf_unfiltered (gdb_stdlog,
- "target_xfer_memory (0x%x, xxx, %d, %s, xxx) = %d",
+ "target_xfer_memory (0x%x, xxx, %ld, %s, xxx) = %d",
(unsigned int) memaddr, /* possable truncate long long */
- len, write ? "write" : "read", retval);
+ (long)len, write ? "write" : "read", retval);
- "target_xfer_memory (%s, xxx, %d, %s, xxx) = %d",
- paddress (memaddr), len, write ? "write" : "read",
+ "target_xfer_memory (%s, xxx, %ld, %s, xxx) = %d",
+ paddress (memaddr), (long) len, write ? "write" : "read",
retval);
if (retval > 0)
{
Index: gdb-6.8.50.20081128/gdb/target.h
Index: gdb-6.8.50.20090209/gdb/target.h
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/target.h 2008-11-09 12:27:18.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/target.h 2008-12-02 22:15:53.000000000 +0100
@@ -358,10 +358,10 @@ struct target_ops
--- gdb-6.8.50.20090209.orig/gdb/target.h 2009-02-06 23:59:01.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/target.h 2009-02-09 15:49:25.000000000 +0100
@@ -360,10 +360,10 @@ struct target_ops
NOTE: cagney/2004-10-01: This has been entirely superseeded by
to_xfer_partial and inferior inheritance. */
@ -144,7 +143,7 @@ Index: gdb-6.8.50.20081128/gdb/target.h
void (*to_files_info) (struct target_ops *);
int (*to_insert_breakpoint) (struct bp_target_info *);
@@ -661,13 +661,14 @@ extern DCACHE *target_dcache;
@@ -663,13 +663,14 @@ extern DCACHE *target_dcache;
extern int target_read_string (CORE_ADDR, char **, int, int *);
@ -163,10 +162,10 @@ Index: gdb-6.8.50.20081128/gdb/target.h
/* Fetches the target's memory map. If one is found it is sorted
and returned, after some consistency checking. Otherwise, NULL
Index: gdb-6.8.50.20081128/gdb/dcache.c
Index: gdb-6.8.50.20090209/gdb/dcache.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/dcache.c 2008-09-23 20:35:29.000000000 +0200
+++ gdb-6.8.50.20081128/gdb/dcache.c 2008-12-02 22:15:53.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/dcache.c 2009-01-03 06:57:51.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/dcache.c 2009-02-09 15:49:25.000000000 +0100
@@ -524,9 +524,9 @@ dcache_free (DCACHE *dcache)
This routine is indended to be called by remote_xfer_ functions. */
@ -179,10 +178,10 @@ Index: gdb-6.8.50.20081128/gdb/dcache.c
{
int i;
int (*xfunc) (DCACHE *dcache, CORE_ADDR addr, gdb_byte *ptr);
Index: gdb-6.8.50.20081128/gdb/dcache.h
Index: gdb-6.8.50.20090209/gdb/dcache.h
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/dcache.h 2008-01-01 23:53:09.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/dcache.h 2008-12-02 22:15:53.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/dcache.h 2009-01-03 06:57:51.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/dcache.h 2009-02-09 15:49:25.000000000 +0100
@@ -35,7 +35,7 @@ void dcache_free (DCACHE *);
/* Simple to call from <remote>_xfer_memory */
@ -193,11 +192,11 @@ Index: gdb-6.8.50.20081128/gdb/dcache.h
+ LONGEST len, int should_write);
#endif /* DCACHE_H */
Index: gdb-6.8.50.20081128/gdb/exec.c
Index: gdb-6.8.50.20090209/gdb/exec.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/exec.c 2008-10-30 19:42:28.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/exec.c 2008-12-02 22:15:53.000000000 +0100
@@ -459,8 +459,8 @@ map_vmap (bfd *abfd, bfd *arch)
--- gdb-6.8.50.20090209.orig/gdb/exec.c 2009-01-08 17:32:29.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/exec.c 2009-02-09 15:49:25.000000000 +0100
@@ -466,8 +466,8 @@ map_vmap (bfd *abfd, bfd *arch)
The same routine is used to handle both core and exec files;
we just tail-call it with more arguments to select between them. */
@ -208,11 +207,11 @@ Index: gdb-6.8.50.20081128/gdb/exec.c
struct mem_attrib *attrib, struct target_ops *target)
{
int res;
Index: gdb-6.8.50.20081128/gdb/linux-nat.c
Index: gdb-6.8.50.20090209/gdb/linux-nat.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/linux-nat.c 2008-12-02 21:11:11.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/linux-nat.c 2008-12-02 22:15:53.000000000 +0100
@@ -4053,7 +4053,7 @@ linux_xfer_partial (struct target_ops *o
--- gdb-6.8.50.20090209.orig/gdb/linux-nat.c 2009-02-09 15:48:46.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/linux-nat.c 2009-02-09 15:49:25.000000000 +0100
@@ -4283,7 +4283,7 @@ linux_xfer_partial (struct target_ops *o
Revert when Bugzilla 147436 is fixed. */
if (iterate_over_lwps (ia64_linux_check_stack_region, &range) != NULL)
{ /* This region contains ia64 rse registers, we have to re-read. */
@ -221,10 +220,10 @@ Index: gdb-6.8.50.20081128/gdb/linux-nat.c
/* Re-read register stack area. */
xxfer = super_xfer_partial (ops, object, annex,
Index: gdb-6.8.50.20081128/gdb/remote.c
Index: gdb-6.8.50.20090209/gdb/remote.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/remote.c 2008-11-24 17:53:44.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/remote.c 2008-12-02 22:17:00.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/remote.c 2009-02-06 23:59:00.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/remote.c 2009-02-09 15:49:25.000000000 +0100
@@ -25,6 +25,7 @@
#include "gdb_string.h"
#include <ctype.h>
@ -233,7 +232,7 @@ Index: gdb-6.8.50.20081128/gdb/remote.c
#include "inferior.h"
#include "bfd.h"
#include "symfile.h"
@@ -5687,12 +5688,19 @@ handle_notification (char *buf, size_t l
@@ -5688,12 +5689,19 @@ handle_notification (char *buf, size_t l
if SHOULD_WRITE is nonzero. Returns length of data written or
read; 0 for error. TARGET is unused. */
@ -255,7 +254,7 @@ Index: gdb-6.8.50.20081128/gdb/remote.c
set_general_thread (inferior_ptid);
@@ -5701,7 +5709,7 @@ remote_xfer_memory (CORE_ADDR mem_addr,
@@ -5702,7 +5710,7 @@ remote_xfer_memory (CORE_ADDR mem_addr,
else
res = remote_read_bytes (mem_addr, buffer, mem_len);
@ -264,11 +263,11 @@ Index: gdb-6.8.50.20081128/gdb/remote.c
}
/* Sends a packet with content determined by the printf format string
Index: gdb-6.8.50.20081128/gdb/remote-sim.c
Index: gdb-6.8.50.20090209/gdb/remote-sim.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/remote-sim.c 2008-11-13 02:26:43.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/remote-sim.c 2008-12-02 22:15:53.000000000 +0100
@@ -763,11 +763,14 @@ gdbsim_prepare_to_store (struct regcache
--- gdb-6.8.50.20090209.orig/gdb/remote-sim.c 2009-02-06 23:21:26.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/remote-sim.c 2009-02-09 15:49:25.000000000 +0100
@@ -757,11 +757,14 @@ gdbsim_prepare_to_store (struct regcache
Returns the number of bytes transferred. */
@ -285,7 +284,7 @@ Index: gdb-6.8.50.20081128/gdb/remote-sim.c
/* If no program is running yet, then ignore the simulator for
memory. Pass the request down to the next target, hopefully
an exec file. */
@@ -783,22 +786,22 @@ gdbsim_xfer_inferior_memory (CORE_ADDR m
@@ -777,22 +780,22 @@ gdbsim_xfer_inferior_memory (CORE_ADDR m
printf_filtered ("gdbsim_xfer_inferior_memory: myaddr 0x");
gdb_print_host_address (myaddr, gdb_stdout);
printf_filtered (", memaddr 0x%s, len %d, write %d\n",

View File

@ -26,11 +26,11 @@
Fix scan_dyntag() for binaries provided by valgrind (BZ 460319).
Index: gdb-6.8.50.20081209/gdb/amd64-tdep.c
Index: gdb-6.8.50.20090209/gdb/amd64-tdep.c
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/amd64-tdep.c 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/amd64-tdep.c 2008-12-14 14:56:49.000000000 +0100
@@ -34,6 +34,7 @@
--- gdb-6.8.50.20090209.orig/gdb/amd64-tdep.c 2009-02-09 16:02:28.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/amd64-tdep.c 2009-02-09 16:21:55.000000000 +0100
@@ -36,6 +36,7 @@
#include "regcache.h"
#include "regset.h"
#include "symfile.h"
@ -38,7 +38,7 @@ Index: gdb-6.8.50.20081209/gdb/amd64-tdep.c
#include "gdb_assert.h"
@@ -906,16 +907,28 @@ amd64_analyze_stack_align (CORE_ADDR pc,
@@ -1597,16 +1598,28 @@ amd64_analyze_stack_align (CORE_ADDR pc,
Any function that doesn't start with this sequence will be assumed
to have no prologue and thus no valid frame pointer in %rbp. */
@ -71,7 +71,7 @@ Index: gdb-6.8.50.20081209/gdb/amd64-tdep.c
pc = amd64_analyze_stack_align (pc, current_pc, cache);
@@ -930,18 +943,57 @@ amd64_analyze_prologue (CORE_ADDR pc, CO
@@ -1621,18 +1634,57 @@ amd64_analyze_prologue (CORE_ADDR pc, CO
/* If that's all, return now. */
if (current_pc <= pc + 1)
@ -132,11 +132,11 @@ Index: gdb-6.8.50.20081209/gdb/amd64-tdep.c
return pc;
}
Index: gdb-6.8.50.20081209/gdb/auxv.c
Index: gdb-6.8.50.20090209/gdb/auxv.c
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/auxv.c 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/auxv.c 2008-12-14 14:57:58.000000000 +0100
@@ -80,7 +80,7 @@ procfs_xfer_auxv (struct target_ops *ops
--- gdb-6.8.50.20090209.orig/gdb/auxv.c 2009-01-03 06:57:50.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/auxv.c 2009-02-09 16:21:55.000000000 +0100
@@ -81,7 +81,7 @@ procfs_xfer_auxv (struct target_ops *ops
Return 1 if an entry was read into *TYPEP and *VALP. */
int
default_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
@ -145,7 +145,7 @@ Index: gdb-6.8.50.20081209/gdb/auxv.c
{
const int sizeof_auxv_field = gdbarch_ptr_bit (target_gdbarch)
/ TARGET_CHAR_BIT;
@@ -107,7 +107,7 @@ default_auxv_parse (struct target_ops *o
@@ -108,7 +108,7 @@ default_auxv_parse (struct target_ops *o
Return 1 if an entry was read into *TYPEP and *VALP. */
int
target_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
@ -154,7 +154,7 @@ Index: gdb-6.8.50.20081209/gdb/auxv.c
{
struct target_ops *t;
for (t = ops; t != NULL; t = t->beneath)
@@ -122,9 +122,10 @@ target_auxv_parse (struct target_ops *op
@@ -123,9 +123,10 @@ target_auxv_parse (struct target_ops *op
an error getting the information. On success, return 1 after
storing the entry's value field in *VALP. */
int
@ -167,7 +167,7 @@ Index: gdb-6.8.50.20081209/gdb/auxv.c
gdb_byte *data;
LONGEST n = target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL, &data);
gdb_byte *ptr = data;
@@ -134,10 +135,10 @@ target_auxv_search (struct target_ops *o
@@ -135,10 +136,10 @@ target_auxv_search (struct target_ops *o
return n;
while (1)
@ -180,7 +180,7 @@ Index: gdb-6.8.50.20081209/gdb/auxv.c
{
xfree (data);
*valp = val;
@@ -160,7 +161,8 @@ target_auxv_search (struct target_ops *o
@@ -161,7 +162,8 @@ target_auxv_search (struct target_ops *o
int
fprint_target_auxv (struct ui_file *file, struct target_ops *ops)
{
@ -190,7 +190,7 @@ Index: gdb-6.8.50.20081209/gdb/auxv.c
gdb_byte *data;
LONGEST len = target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL,
&data);
@@ -170,13 +172,13 @@ fprint_target_auxv (struct ui_file *file
@@ -171,13 +173,13 @@ fprint_target_auxv (struct ui_file *file
if (len <= 0)
return len;
@ -206,7 +206,7 @@ Index: gdb-6.8.50.20081209/gdb/auxv.c
{
#define TAG(tag, text, kind) \
case tag: name = #tag; description = text; flavor = kind; break
@@ -231,7 +233,7 @@ fprint_target_auxv (struct ui_file *file
@@ -232,7 +234,7 @@ fprint_target_auxv (struct ui_file *file
}
fprintf_filtered (file, "%-4s %-20s %-30s ",
@ -215,7 +215,7 @@ Index: gdb-6.8.50.20081209/gdb/auxv.c
switch (flavor)
{
case dec:
@@ -252,7 +254,7 @@ fprint_target_auxv (struct ui_file *file
@@ -253,7 +255,7 @@ fprint_target_auxv (struct ui_file *file
break;
}
++ents;
@ -224,11 +224,11 @@ Index: gdb-6.8.50.20081209/gdb/auxv.c
break;
}
Index: gdb-6.8.50.20081209/gdb/auxv.h
Index: gdb-6.8.50.20090209/gdb/auxv.h
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/auxv.h 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/auxv.h 2008-12-14 14:56:49.000000000 +0100
@@ -35,14 +35,14 @@ struct target_ops; /* Forward declarati
--- gdb-6.8.50.20090209.orig/gdb/auxv.h 2009-01-03 06:57:50.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/auxv.h 2009-02-09 16:21:55.000000000 +0100
@@ -36,14 +36,14 @@ struct target_ops; /* Forward declarati
Return 1 if an entry was read into *TYPEP and *VALP. */
extern int target_auxv_parse (struct target_ops *ops,
gdb_byte **readptr, gdb_byte *endptr,
@ -245,11 +245,11 @@ Index: gdb-6.8.50.20081209/gdb/auxv.h
/* Print the contents of the target's AUXV on the specified file. */
extern int fprint_target_auxv (struct ui_file *file, struct target_ops *ops);
Index: gdb-6.8.50.20081209/gdb/breakpoint.c
Index: gdb-6.8.50.20090209/gdb/breakpoint.c
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/breakpoint.c 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/breakpoint.c 2008-12-14 14:56:49.000000000 +0100
@@ -3861,7 +3861,8 @@ describe_other_breakpoints (CORE_ADDR pc
--- gdb-6.8.50.20090209.orig/gdb/breakpoint.c 2009-02-09 16:12:23.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/breakpoint.c 2009-02-09 16:21:55.000000000 +0100
@@ -3894,7 +3894,8 @@ describe_other_breakpoints (CORE_ADDR pc
printf_filtered (" (thread %d)", b->thread);
printf_filtered ("%s%s ",
((b->enable_state == bp_disabled ||
@ -259,7 +259,7 @@ Index: gdb-6.8.50.20081209/gdb/breakpoint.c
? " (disabled)"
: b->enable_state == bp_permanent
? " (permanent)"
@@ -4692,6 +4693,61 @@ create_catchpoint (int tempflag, char *c
@@ -4725,6 +4726,61 @@ create_catchpoint (int tempflag, char *c
return b;
}
@ -321,10 +321,10 @@ Index: gdb-6.8.50.20081209/gdb/breakpoint.c
static void
create_fork_vfork_event_catchpoint (int tempflag, char *cond_string,
struct breakpoint_ops *ops)
Index: gdb-6.8.50.20081209/gdb/breakpoint.h
Index: gdb-6.8.50.20090209/gdb/breakpoint.h
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/breakpoint.h 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/breakpoint.h 2008-12-14 14:56:49.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/breakpoint.h 2009-01-30 19:28:00.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/breakpoint.h 2009-02-09 16:21:55.000000000 +0100
@@ -126,6 +126,7 @@ enum enable_state
automatically enabled and reset when the call
"lands" (either completes, or stops at another
@ -333,7 +333,7 @@ Index: gdb-6.8.50.20081209/gdb/breakpoint.h
bp_permanent /* There is a breakpoint instruction hard-wired into
the target's code. Don't try to write another
breakpoint instruction on top of it, or restore
@@ -818,6 +819,10 @@ extern void remove_thread_event_breakpoi
@@ -819,6 +820,10 @@ extern void remove_thread_event_breakpoi
extern void disable_breakpoints_in_shlibs (void);
@ -344,11 +344,11 @@ Index: gdb-6.8.50.20081209/gdb/breakpoint.h
/* This function returns TRUE if ep is a catchpoint. */
extern int ep_is_catchpoint (struct breakpoint *);
Index: gdb-6.8.50.20081209/gdb/dwarf2read.c
Index: gdb-6.8.50.20090209/gdb/dwarf2read.c
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/dwarf2read.c 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/dwarf2read.c 2008-12-14 14:56:49.000000000 +0100
@@ -1295,7 +1295,7 @@ dwarf2_build_psymtabs (struct objfile *o
--- gdb-6.8.50.20090209.orig/gdb/dwarf2read.c 2009-02-09 16:12:23.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/dwarf2read.c 2009-02-09 16:21:55.000000000 +0100
@@ -1296,7 +1296,7 @@ dwarf2_build_psymtabs (struct objfile *o
else
dwarf2_per_objfile->loc_buffer = NULL;
@ -357,10 +357,10 @@ Index: gdb-6.8.50.20081209/gdb/dwarf2read.c
|| (objfile->global_psymbols.size == 0
&& objfile->static_psymbols.size == 0))
{
Index: gdb-6.8.50.20081209/gdb/elfread.c
Index: gdb-6.8.50.20090209/gdb/elfread.c
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/elfread.c 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/elfread.c 2008-12-14 14:56:49.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/elfread.c 2009-01-03 06:57:51.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/elfread.c 2009-02-09 16:21:55.000000000 +0100
@@ -680,7 +680,7 @@ elf_symfile_read (struct objfile *objfil
/* If we are reinitializing, or if we have never loaded syms yet,
set table to empty. MAINLINE is cleared so that *_read_psymtab
@ -370,11 +370,11 @@ Index: gdb-6.8.50.20081209/gdb/elfread.c
{
init_psymbol_list (objfile, 0);
mainline = 0;
Index: gdb-6.8.50.20081209/gdb/infrun.c
Index: gdb-6.8.50.20090209/gdb/infrun.c
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/infrun.c 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/infrun.c 2008-12-14 14:56:49.000000000 +0100
@@ -3229,6 +3229,11 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
--- gdb-6.8.50.20090209.orig/gdb/infrun.c 2009-02-09 16:12:23.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/infrun.c 2009-02-09 16:21:55.000000000 +0100
@@ -3278,6 +3278,11 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
#endif
target_terminal_inferior ();
@ -386,10 +386,10 @@ Index: gdb-6.8.50.20081209/gdb/infrun.c
/* If requested, stop when the dynamic linker notifies
gdb of events. This allows the user to get control
and place breakpoints in initializer routines for
Index: gdb-6.8.50.20081209/gdb/objfiles.c
Index: gdb-6.8.50.20090209/gdb/objfiles.c
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/objfiles.c 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/objfiles.c 2008-12-14 14:56:49.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/objfiles.c 2009-01-15 17:35:22.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/objfiles.c 2009-02-09 16:21:55.000000000 +0100
@@ -51,6 +51,9 @@
#include "arch-utils.h"
#include "exec.h"
@ -421,11 +421,21 @@ Index: gdb-6.8.50.20081209/gdb/objfiles.c
}
/* Create the terminating entry of OBJFILE's minimal symbol table.
Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
@@ -458,6 +458,9 @@ free_objfile (struct objfile *objfile)
if (objfile == rt_common_objfile)
rt_common_objfile = NULL;
+ if (objfile == symfile_objfile)
+ symfile_objfile = NULL;
+
/* Before the symbol table code was redone to make it easier to
selectively load and remove information particular to a specific
linkage unit, gdb used to do these things whenever the monolithic
Index: gdb-6.8.50.20090209/gdb/solib-svr4.c
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/solib-svr4.c 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/solib-svr4.c 2008-12-14 14:56:49.000000000 +0100
@@ -44,6 +44,7 @@
--- gdb-6.8.50.20090209.orig/gdb/solib-svr4.c 2009-02-09 16:02:35.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/solib-svr4.c 2009-02-09 16:21:55.000000000 +0100
@@ -45,6 +45,7 @@
#include "exec.h"
#include "auxv.h"
#include "exceptions.h"
@ -433,7 +443,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
static struct link_map_offsets *svr4_fetch_link_map_offsets (void);
static int svr4_have_link_map_offsets (void);
@@ -286,7 +287,9 @@ static CORE_ADDR main_lm_addr;
@@ -287,7 +288,9 @@ static CORE_ADDR main_lm_addr;
/* Local function prototypes */
@ -443,7 +453,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
static CORE_ADDR bfd_lookup_symbol (bfd *, char *);
@@ -520,10 +523,12 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
@@ -521,10 +524,12 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
int arch_size, step, sect_size;
long dyn_tag;
CORE_ADDR dyn_ptr, dyn_addr;
@ -456,7 +466,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
if (abfd == NULL)
return 0;
@@ -531,19 +536,81 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
@@ -532,19 +537,81 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
if (arch_size == -1)
return 0;
@ -540,7 +550,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
/* Iterate over BUF and scan for DYNTAG. If found, set PTR and return. */
step = (arch_size == 32) ? sizeof (Elf32_External_Dyn)
@@ -564,26 +631,105 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
@@ -565,26 +632,105 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
dyn_tag = bfd_h_get_64 (abfd, (bfd_byte *) x_dynp_64->d_tag);
dyn_ptr = bfd_h_get_64 (abfd, (bfd_byte *) x_dynp_64->d_un.d_ptr);
}
@ -665,7 +675,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
}
return 0;
@@ -773,6 +919,10 @@ solib_svr4_r_map (void)
@@ -774,6 +920,10 @@ solib_svr4_r_map (void)
struct link_map_offsets *lmo = svr4_fetch_link_map_offsets ();
struct type *ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr;
@ -676,7 +686,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
return read_memory_typed_address (debug_base + lmo->r_map_offset, ptr_type);
}
@@ -944,6 +1094,11 @@ svr4_current_sos (void)
@@ -945,6 +1095,11 @@ svr4_current_sos (void)
struct so_list *head = 0;
struct so_list **link_ptr = &head;
CORE_ADDR ldsomap = 0;
@ -688,7 +698,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
/* Always locate the debug struct, in case it has moved. */
debug_base = 0;
@@ -952,10 +1107,19 @@ svr4_current_sos (void)
@@ -953,10 +1108,19 @@ svr4_current_sos (void)
/* If we can't find the dynamic linker's base structure, this
must not be a dynamically linked executable. Hmm. */
if (! debug_base)
@ -709,7 +719,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
lm = solib_svr4_r_map ();
while (lm)
@@ -972,26 +1136,104 @@ svr4_current_sos (void)
@@ -973,26 +1137,104 @@ svr4_current_sos (void)
new->lm_info->lm = xzalloc (lmo->link_map_size);
make_cleanup (xfree, new->lm_info->lm);
@ -818,7 +828,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
target_read_string (LM_NAME (new), &buffer,
SO_NAME_MAX_PATH_SIZE - 1, &errcode);
if (errcode != 0)
@@ -999,47 +1241,60 @@ svr4_current_sos (void)
@@ -1000,47 +1242,60 @@ svr4_current_sos (void)
safe_strerror (errcode));
else
{
@ -912,7 +922,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
}
/* On Solaris, the dynamic linker is not in the normal list of
@@ -1055,6 +1310,9 @@ svr4_current_sos (void)
@@ -1056,6 +1311,9 @@ svr4_current_sos (void)
if (head == NULL)
return svr4_default_sos ();
@ -922,7 +932,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
return head;
}
@@ -1086,7 +1344,7 @@ svr4_fetch_objfile_link_map (struct objf
@@ -1087,7 +1345,7 @@ svr4_fetch_objfile_link_map (struct objf
/* On some systems, the only way to recognize the link map entry for
the main executable file is by looking at its name. Return
non-zero iff SONAME matches one of the known main executable names. */
@ -931,7 +941,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
static int
match_main (char *soname)
{
@@ -1100,6 +1358,7 @@ match_main (char *soname)
@@ -1101,6 +1359,7 @@ match_main (char *soname)
return (0);
}
@ -939,7 +949,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
/* Return 1 if PC lies in the dynamic symbol resolution code of the
SVR4 run time loader. */
@@ -1250,15 +1509,29 @@ enable_break (void)
@@ -1251,15 +1510,29 @@ enable_break (void)
/* Find the program interpreter; if not found, warn the user and drop
into the old breakpoint at symbol code. */
interp_name = find_program_interpreter ();
@ -969,7 +979,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
sym_addr = 0;
@@ -1275,6 +1548,9 @@ enable_break (void)
@@ -1276,6 +1549,9 @@ enable_break (void)
{
tmp_bfd = solib_bfd_open (interp_name);
}
@ -979,7 +989,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
if (tmp_bfd == NULL)
goto bkpt_at_symbol;
@@ -1328,16 +1604,16 @@ enable_break (void)
@@ -1329,16 +1605,16 @@ enable_break (void)
interp_sect = bfd_get_section_by_name (tmp_bfd, ".text");
if (interp_sect)
{
@ -1000,7 +1010,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
interp_plt_sect_high =
interp_plt_sect_low + bfd_section_size (tmp_bfd, interp_sect);
}
@@ -1372,7 +1648,11 @@ enable_break (void)
@@ -1373,7 +1649,11 @@ enable_break (void)
if (sym_addr != 0)
{
@ -1013,7 +1023,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
xfree (interp_name);
return 1;
}
@@ -1638,6 +1918,8 @@ svr4_solib_create_inferior_hook (void)
@@ -1639,6 +1919,8 @@ svr4_solib_create_inferior_hook (void)
while (tp->stop_signal != TARGET_SIGNAL_TRAP);
inf->stop_soon = NO_STOP_QUIETLY;
#endif /* defined(_SCO_DS) */
@ -1022,7 +1032,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
}
static void
@@ -1819,6 +2101,75 @@ svr4_lp64_fetch_link_map_offsets (void)
@@ -1820,6 +2102,75 @@ svr4_lp64_fetch_link_map_offsets (void)
return lmp;
}
@ -1098,7 +1108,7 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
struct target_so_ops svr4_so_ops;
@@ -1858,4 +2209,7 @@ _initialize_svr4_solib (void)
@@ -1859,4 +2210,7 @@ _initialize_svr4_solib (void)
svr4_so_ops.in_dynsym_resolve_code = svr4_in_dynsym_resolve_code;
svr4_so_ops.lookup_lib_global_symbol = elf_lookup_lib_symbol;
svr4_so_ops.same = svr4_same;
@ -1106,10 +1116,10 @@ Index: gdb-6.8.50.20081209/gdb/solib-svr4.c
+ add_info ("linkmap", info_linkmap_command,
+ "Display the inferior's linkmap.");
}
Index: gdb-6.8.50.20081209/gdb/solib.c
Index: gdb-6.8.50.20090209/gdb/solib.c
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/solib.c 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/solib.c 2008-12-14 14:56:49.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/solib.c 2009-01-15 17:35:22.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/solib.c 2009-02-09 16:26:02.000000000 +0100
@@ -80,6 +80,8 @@ set_solib_ops (struct gdbarch *gdbarch,
/* external data declarations */
@ -1128,67 +1138,79 @@ Index: gdb-6.8.50.20081209/gdb/solib.c
/*
GLOBAL FUNCTION
@@ -405,7 +409,6 @@ free_so (struct so_list *so)
xfree (so);
}
@@ -425,10 +429,23 @@ free_so (struct so_list *so)
if (so->abfd)
{
- bfd_filename = bfd_get_filename (so->abfd);
- if (! bfd_close (so->abfd))
- warning (_("cannot close \"%s\": %s"),
- bfd_filename, bfd_errmsg (bfd_get_error ()));
+ struct objfile *objfile;
+
+ ALL_OBJFILES (objfile)
+ if (objfile->obfd == so->abfd)
+ {
+ gdb_assert (objfile->flags & OBJF_KEEPBFD);
+ objfile->flags &= ~OBJF_KEEPBFD;
+ break;
+ }
+
+ if (!objfile)
+ {
+ bfd_filename = bfd_get_filename (so->abfd);
+ if (! bfd_close (so->abfd))
+ warning (_("cannot close \"%s\": %s"),
+ bfd_filename, bfd_errmsg (bfd_get_error ()));
+ }
}
-
/* Return address of first so_list entry in master shared object list. */
struct so_list *
master_so_list (void)
@@ -413,7 +416,6 @@ master_so_list (void)
return so_list_head;
}
-
/* A small stub to get us past the arg-passing pinhole of catch_errors. */
static int
@@ -425,15 +427,40 @@ symbol_add_stub (void *arg)
if (bfd_filename)
@@ -459,15 +461,40 @@ symbol_add_stub (void *arg)
/* Have we already loaded this shared object? */
ALL_OBJFILES (so->objfile)
{
- if (strcmp (so->objfile->name, so->so_name) == 0)
+ /* Found an already loaded shared library. */
+ if (strcmp (so->objfile->name, so->so_name) == 0
+ && !so->main)
return 1;
+ && !so->main)
+ return 1;
+ /* Found an already loaded main executable. This could happen in
+ two circumstances.
+ First case: the main file has already been read in
+ as the first thing that gdb does at startup, and the file
+ hasn't been relocated properly yet. Therefor we need to read
+ it in with the proper section info.
+ Second case: it has been read in with the correct relocation,
+ and therefore we need to skip it. */
+ two circumstances.
+ First case: the main file has already been read in
+ as the first thing that gdb does at startup, and the file
+ hasn't been relocated properly yet. Therefor we need to read
+ it in with the proper section info.
+ Second case: it has been read in with the correct relocation,
+ and therefore we need to skip it. */
+ if (strcmp (so->objfile->name, so->so_name) == 0
+ && so->main
+ && so->main_relocated)
+ return 1;
+ && so->main
+ && so->main_relocated)
return 1;
}
sap = build_section_addr_info_from_section_table (so->sections,
so->sections_end);
- so->objfile = symbol_file_add (so->so_name, so->from_tty,
- sap, 0, OBJF_SHARED);
- so->objfile = symbol_file_add_from_bfd (so->abfd, so->from_tty,
- sap, 0, OBJF_SHARED | OBJF_KEEPBFD);
+ if (so->main)
+ {
+ if (debug_solib)
+ fprintf_unfiltered (gdb_stdlog,
+ "symbol_add_stub: adding symbols for main\n");
+ so->objfile = symbol_file_add (so->so_name, /*so->from_tty*/ 0,
+ sap, 1, 0);
+ so->objfile = symbol_file_add_from_bfd (so->abfd, /*so->from_tty*/ 0,
+ sap, 1, OBJF_KEEPBFD);
+ so->main_relocated = 1;
+ }
+ else
+ so->objfile = symbol_file_add (so->so_name, so->from_tty,
+ sap, 0, OBJF_SHARED);
+ so->objfile = symbol_file_add_from_bfd (so->abfd, so->from_tty,
+ sap, 0, OBJF_SHARED | OBJF_KEEPBFD);
+
free_section_addr_info (sap);
return (1);
@@ -565,6 +592,10 @@ update_solib_list (int from_tty, struct
@@ -599,6 +626,10 @@ update_solib_list (int from_tty, struct
}
else
{
@ -1199,7 +1221,7 @@ Index: gdb-6.8.50.20081209/gdb/solib.c
if (! strcmp (gdb->so_original_name, i->so_original_name))
break;
}
@@ -619,28 +650,7 @@ update_solib_list (int from_tty, struct
@@ -653,28 +684,7 @@ update_solib_list (int from_tty, struct
/* Fill in the rest of each of the `struct so_list' nodes. */
for (i = inferior; i; i = i->next)
{
@ -1229,7 +1251,7 @@ Index: gdb-6.8.50.20081209/gdb/solib.c
/* Notify any observer that the shared object has been
loaded now that we've added it to GDB's tables. */
@@ -736,6 +746,41 @@ solib_add (char *pattern, int from_tty,
@@ -770,6 +780,41 @@ solib_add (char *pattern, int from_tty,
}
}
@ -1271,7 +1293,7 @@ Index: gdb-6.8.50.20081209/gdb/solib.c
/*
@@ -1053,4 +1098,12 @@ This takes precedence over the environme
@@ -1087,4 +1132,12 @@ This takes precedence over the environme
reload_shared_libraries,
show_solib_search_path,
&setlist, &showlist);
@ -1284,10 +1306,10 @@ Index: gdb-6.8.50.20081209/gdb/solib.c
+ NULL, NULL,
+ &setdebuglist, &showdebuglist);
}
Index: gdb-6.8.50.20081209/gdb/solist.h
Index: gdb-6.8.50.20090209/gdb/solist.h
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/solist.h 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/solist.h 2008-12-14 14:56:49.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/solist.h 2009-02-04 09:42:11.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/solist.h 2009-02-09 16:21:55.000000000 +0100
@@ -61,6 +61,8 @@ struct so_list
bfd *abfd;
char symbols_loaded; /* flag: symbols read in yet? */
@ -1297,7 +1319,7 @@ Index: gdb-6.8.50.20081209/gdb/solist.h
struct objfile *objfile; /* objfile for loaded lib */
struct section_table *sections;
struct section_table *sections_end;
@@ -138,4 +140,10 @@ struct symbol *solib_global_lookup (cons
@@ -149,4 +151,10 @@ struct symbol *solib_global_lookup (cons
const char *linkage_name,
const domain_enum domain);
@ -1308,10 +1330,10 @@ Index: gdb-6.8.50.20081209/gdb/solist.h
+extern int debug_solib;
+
#endif
Index: gdb-6.8.50.20081209/gdb/symfile-mem.c
Index: gdb-6.8.50.20090209/gdb/symfile-mem.c
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/symfile-mem.c 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/symfile-mem.c 2008-12-14 14:56:49.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/symfile-mem.c 2009-02-09 15:49:25.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/symfile-mem.c 2009-02-09 16:21:55.000000000 +0100
@@ -116,7 +116,7 @@ symbol_file_add_from_memory (struct bfd
}
@ -1321,10 +1343,10 @@ Index: gdb-6.8.50.20081209/gdb/symfile-mem.c
/* This might change our ideas about frames already looked at. */
reinit_frame_cache ();
Index: gdb-6.8.50.20081209/gdb/symfile.c
Index: gdb-6.8.50.20090209/gdb/symfile.c
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/symfile.c 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/symfile.c 2008-12-14 14:56:49.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/symfile.c 2009-02-09 16:03:45.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/symfile.c 2009-02-09 16:21:55.000000000 +0100
@@ -47,6 +47,7 @@
#include "readline/readline.h"
#include "gdb_assert.h"
@ -1351,7 +1373,7 @@ Index: gdb-6.8.50.20081209/gdb/symfile.c
{
asection *lower_sect;
asection *sect;
@@ -916,17 +917,21 @@ new_symfile_objfile (struct objfile *obj
@@ -917,17 +918,21 @@ new_symfile_objfile (struct objfile *obj
/* If this is the main symbol file we have to clean up all users of the
old main symbol file. Otherwise it is sufficient to fixup all the
breakpoints that may have been redefined by this symbol file. */
@ -1375,7 +1397,7 @@ Index: gdb-6.8.50.20081209/gdb/symfile.c
/* We're done reading the symbol file; finish off complaints. */
clear_complaints (&symfile_complaints, 0, verbo);
@@ -969,7 +974,7 @@ symbol_file_add_with_addrs_or_offsets (b
@@ -970,7 +975,7 @@ symbol_file_add_with_addrs_or_offsets (b
interactively wiping out any existing symbols. */
if ((have_full_symbols () || have_partial_symbols ())
@ -1384,7 +1406,7 @@ Index: gdb-6.8.50.20081209/gdb/symfile.c
&& from_tty
&& !query ("Load new symbol table from \"%s\"? ", name))
error (_("Not confirmed."));
@@ -1160,6 +1165,10 @@ symbol_file_clear (int from_tty)
@@ -1161,6 +1166,10 @@ symbol_file_clear (int from_tty)
symfile_objfile->name)
: !query (_("Discard symbol table? "))))
error (_("Not confirmed."));
@ -1395,7 +1417,7 @@ Index: gdb-6.8.50.20081209/gdb/symfile.c
free_all_objfiles ();
/* solib descriptors may have handles to objfiles. Since their
@@ -3259,6 +3268,8 @@ reread_symbols (void)
@@ -3260,6 +3269,8 @@ reread_symbols (void)
/* Discard cleanups as symbol reading was successful. */
discard_cleanups (old_cleanups);
@ -1404,7 +1426,7 @@ Index: gdb-6.8.50.20081209/gdb/symfile.c
/* If the mtime has changed between the time we set new_modtime
and now, we *want* this to be out of date, so don't call stat
again now. */
@@ -3628,6 +3639,7 @@ clear_symtab_users (void)
@@ -3629,6 +3640,7 @@ clear_symtab_users (void)
breakpoint_re_set ();
set_default_breakpoint (0, 0, 0, 0);
clear_pc_function_cache ();
@ -1412,11 +1434,11 @@ Index: gdb-6.8.50.20081209/gdb/symfile.c
observer_notify_new_objfile (NULL);
/* Clear globals which might have pointed into a removed objfile.
Index: gdb-6.8.50.20081209/gdb/varobj.c
Index: gdb-6.8.50.20090209/gdb/varobj.c
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/varobj.c 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/varobj.c 2008-12-14 14:56:49.000000000 +0100
@@ -1116,6 +1116,62 @@ install_new_value (struct varobj *var, s
--- gdb-6.8.50.20090209.orig/gdb/varobj.c 2009-02-05 18:28:21.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/varobj.c 2009-02-09 16:21:55.000000000 +0100
@@ -1123,6 +1123,62 @@ install_new_value (struct varobj *var, s
return changed;
}
@ -1479,10 +1501,10 @@ Index: gdb-6.8.50.20081209/gdb/varobj.c
/* Update the values for a variable and its children. This is a
two-pronged attack. First, re-parse the value for the root's
expression to see if it's changed. Then go all the way
Index: gdb-6.8.50.20081209/gdb/varobj.h
Index: gdb-6.8.50.20090209/gdb/varobj.h
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/varobj.h 2008-12-14 14:55:58.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/varobj.h 2008-12-14 14:56:49.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/varobj.h 2009-01-03 06:57:54.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/varobj.h 2009-02-09 16:21:55.000000000 +0100
@@ -141,4 +141,6 @@ extern int varobj_editable_p (struct var
extern int varobj_floating_p (struct varobj *var);
@ -1490,10 +1512,10 @@ Index: gdb-6.8.50.20081209/gdb/varobj.h
+extern void varobj_refresh(void);
+
#endif /* VAROBJ_H */
Index: gdb-6.8.50.20081209/gdb/target.h
Index: gdb-6.8.50.20090209/gdb/target.h
===================================================================
--- gdb-6.8.50.20081209.orig/gdb/target.h 2008-12-14 11:52:54.000000000 +0100
+++ gdb-6.8.50.20081209/gdb/target.h 2008-12-14 14:57:21.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/target.h 2009-02-09 16:02:42.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/target.h 2009-02-09 16:21:55.000000000 +0100
@@ -524,7 +524,7 @@ struct target_ops
Return -1 if there is insufficient buffer for a whole entry.
Return 1 if an entry was read into *TYPEP and *VALP. */

View File

@ -19,10 +19,10 @@ Proposed upstream but never committed upstream.
(source_command): Update documentation. Check permissions if
FROM_TTY is -1.
Index: gdb-6.8.50.20081128/gdb/cli/cli-cmds.c
Index: gdb-6.8.50.20090209/gdb/cli/cli-cmds.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/cli/cli-cmds.c 2008-12-07 10:12:24.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/cli/cli-cmds.c 2008-12-07 13:04:06.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/cli/cli-cmds.c 2009-01-14 21:40:07.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/cli/cli-cmds.c 2009-02-09 15:45:39.000000000 +0100
@@ -36,6 +36,7 @@
#include "objfiles.h"
#include "source.h"
@ -31,7 +31,7 @@ Index: gdb-6.8.50.20081128/gdb/cli/cli-cmds.c
#include "ui-out.h"
@@ -460,7 +461,7 @@ source_script (char *file, int from_tty)
@@ -462,7 +463,7 @@ source_script (char *file, int from_tty)
if (fd == -1)
{
@ -40,7 +40,7 @@ Index: gdb-6.8.50.20081128/gdb/cli/cli-cmds.c
perror_with_name (file);
else
{
@@ -469,9 +470,33 @@ source_script (char *file, int from_tty)
@@ -471,9 +472,33 @@ source_script (char *file, int from_tty)
}
}
@ -74,10 +74,10 @@ Index: gdb-6.8.50.20081128/gdb/cli/cli-cmds.c
do_cleanups (old_cleanups);
}
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/gdbinit.exp
Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.base/gdbinit.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.base/gdbinit.exp 2008-12-07 10:13:01.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/testsuite/gdb.base/gdbinit.exp 2009-02-09 15:45:39.000000000 +0100
@@ -0,0 +1,98 @@
+# Copyright 2005
+# Free Software Foundation, Inc.
@ -177,31 +177,31 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/gdbinit.exp
+}
+
+remote_exec build "rm .gdbinit"
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/gdbinit.sample
Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.base/gdbinit.sample
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.base/gdbinit.sample 2008-12-07 10:13:01.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/testsuite/gdb.base/gdbinit.sample 2009-02-09 15:45:39.000000000 +0100
@@ -0,0 +1 @@
+echo "\nin gdbinit"
Index: gdb-6.8.50.20081128/gdb/main.c
Index: gdb-6.8.50.20090209/gdb/main.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/main.c 2008-12-07 10:12:24.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/main.c 2008-12-07 12:58:37.000000000 +0100
@@ -690,7 +690,7 @@ Excess command line arguments ignored. (
--- gdb-6.8.50.20090209.orig/gdb/main.c 2009-01-28 16:01:00.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/main.c 2009-02-09 15:46:33.000000000 +0100
@@ -783,7 +783,7 @@ Excess command line arguments ignored. (
debugging or what directory you are in. */
if (!inhibit_gdbinit)
{
- catch_command_errors (source_script, homeinit, 0, RETURN_MASK_ALL);
+ catch_command_errors (source_script, homeinit, -1, RETURN_MASK_ALL);
}
if (home_gdbinit && !inhibit_gdbinit)
- catch_command_errors (source_script, home_gdbinit, 0, RETURN_MASK_ALL);
+ catch_command_errors (source_script, home_gdbinit, -1, RETURN_MASK_ALL);
/* Do stats; no need to do them elsewhere since we'll only
@@ -778,7 +778,7 @@ Can't attach to process and specify a co
|| memcmp ((char *) &homebuf, (char *) &cwdbuf, sizeof (struct stat)))
if (!inhibit_gdbinit)
{
- catch_command_errors (source_script, gdbinit, 0, RETURN_MASK_ALL);
+ catch_command_errors (source_script, gdbinit, -1, RETURN_MASK_ALL);
}
/* Now perform all the actions indicated by the arguments. */
if (cdarg != NULL)
@@ -852,7 +852,7 @@ Can't attach to process and specify a co
/* Read the .gdbinit file in the current directory, *if* it isn't
the same as the $HOME/.gdbinit file (it should exist, also). */
if (local_gdbinit && !inhibit_gdbinit)
- catch_command_errors (source_script, local_gdbinit, 0, RETURN_MASK_ALL);
+ catch_command_errors (source_script, local_gdbinit, -1, RETURN_MASK_ALL);
for (i = 0; i < ncmd; i++)
{

View File

@ -1,234 +0,0 @@
http://sourceware.org/ml/gdb-patches/2008-12/msg00243.html
Check return values of functions declared with warn_unused_result
attribute in GLIBC 2.8.
* cli/cli-cmds.c (pwd_command): Check return value from getcwd.
* inflow.c (check_syscall): New function.
(new_tty): Use check_syscall to check return values from open and dup.
* linux-nat.c (linux_nat_info_proc_cmd): Check return value from fgets.
* main.c (captured_main): Call cwd after setting up gdb_stderr;
check for errors from getcwd.
* mi/mi-cmd-env.c (mi_cmd_env_pwd): Check return value from getcwd.
* ui-file.c (stdio_file_write): Check return value from fwrite.
(stdio_file_fputs): Check return value from fputs.
* utils.c (internal_vproblem): abort if last-ditch error message
write fails.
[ +linespec.c: Fedora patch. ]
[ +top.c: Fedora patch. ]
ui-file.c replaced by:
http://sourceware.org/ml/gdb-patches/2008-12/msg00260.html
---
gdb/ChangeLog | 14 ++++++++++++++
gdb/cli/cli-cmds.c | 4 +++-
gdb/inflow.c | 22 ++++++++++++++--------
gdb/linux-nat.c | 6 ++++--
gdb/main.c | 12 +++++++++---
gdb/mi/mi-cmd-env.c | 5 ++++-
gdb/ui-file.c | 6 ++++--
gdb/utils.c | 8 +++++++-
8 files changed, 59 insertions(+), 18 deletions(-)
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index 806a68a..b80bdfc 100644
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -323,7 +323,9 @@ pwd_command (char *args, int from_tty)
{
if (args)
error (_("The \"pwd\" command does not take an argument: %s"), args);
- getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
+ if (! getcwd (gdb_dirbuf, sizeof (gdb_dirbuf)))
+ error (_("Error finding name of working directory: %s"),
+ safe_strerror (errno));
if (strcmp (gdb_dirbuf, current_directory) != 0)
printf_unfiltered (_("Working directory %s\n (canonically %s).\n"),
diff --git a/gdb/inflow.c b/gdb/inflow.c
index e82514e..7ecb5ab 100644
--- a/gdb/inflow.c
+++ b/gdb/inflow.c
@@ -523,6 +523,16 @@ new_tty_prefork (const char *ttyname)
inferior_thisrun_terminal = ttyname;
}
+static void
+check_syscall (const char *msg, int result)
+{
+ if (result < 0)
+ {
+ print_sys_errmsg (msg, errno);
+ _exit (1);
+ }
+}
+
void
new_tty (void)
{
@@ -549,27 +559,23 @@ new_tty (void)
/* Now open the specified new terminal. */
tty = open (inferior_thisrun_terminal, O_RDWR | O_NOCTTY);
- if (tty == -1)
- {
- print_sys_errmsg (inferior_thisrun_terminal, errno);
- _exit (1);
- }
+ check_syscall (inferior_thisrun_terminal, tty);
/* Avoid use of dup2; doesn't exist on all systems. */
if (tty != 0)
{
close (0);
- dup (tty);
+ check_syscall ("dup'ing tty into fd 0", dup (tty));
}
if (tty != 1)
{
close (1);
- dup (tty);
+ check_syscall ("dup'ing tty into fd 1", dup (tty));
}
if (tty != 2)
{
close (2);
- dup (tty);
+ check_syscall ("dup'ing tty into fd 2", dup (tty));
}
#ifdef TIOCSCTTY
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
index 913bfec..a829eb8 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
@@ -3666,8 +3666,10 @@ linux_nat_info_proc_cmd (char *args, int from_tty)
if ((procfile = fopen (fname1, "r")) != NULL)
{
struct cleanup *cleanup = make_cleanup_fclose (procfile);
- fgets (buffer, sizeof (buffer), procfile);
- printf_filtered ("cmdline = '%s'\n", buffer);
+ if (fgets (buffer, sizeof (buffer), procfile))
+ printf_filtered ("cmdline = '%s'\n", buffer);
+ else
+ warning (_("unable to read '/proc/%lld/cmdline'"), pid);
do_cleanups (cleanup);
}
else
diff --git a/gdb/main.c b/gdb/main.c
index a53002d..a9fd988 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -195,9 +195,6 @@ captured_main (void *data)
line[0] = '\0'; /* Terminate saved (now empty) cmd line */
instream = stdin;
- getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
- current_directory = gdb_dirbuf;
-
gdb_stdout = stdio_fileopen (stdout);
gdb_stderr = stdio_fileopen (stderr);
gdb_stdlog = gdb_stderr; /* for moment */
@@ -206,6 +203,15 @@ captured_main (void *data)
gdb_stdtargerr = gdb_stderr; /* for moment */
gdb_stdtargin = gdb_stdin; /* for moment */
+ if (! getcwd (gdb_dirbuf, sizeof (gdb_dirbuf)))
+ /* Don't use *_filtered or warning() (which relies on
+ current_target) until after initialize_all_files(). */
+ fprintf_unfiltered (gdb_stderr,
+ _("%s: warning: error finding working directory: %s\n"),
+ argv[0], safe_strerror (errno));
+
+ current_directory = gdb_dirbuf;
+
/* Set the sysroot path. */
#ifdef TARGET_SYSTEM_ROOT_RELOCATABLE
gdb_sysroot = make_relative_prefix (argv[0], BINDIR, TARGET_SYSTEM_ROOT);
diff --git a/gdb/mi/mi-cmd-env.c b/gdb/mi/mi-cmd-env.c
index 327ddc5..0103153 100644
--- a/gdb/mi/mi-cmd-env.c
+++ b/gdb/mi/mi-cmd-env.c
@@ -78,7 +78,10 @@ mi_cmd_env_pwd (char *command, char **argv, int argc)
/* Otherwise the mi level is 2 or higher. */
- getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
+ if (! getcwd (gdb_dirbuf, sizeof (gdb_dirbuf)))
+ error (_("mi_cmd_env_pwd: error finding name of working directory: %s"),
+ safe_strerror (errno));
+
ui_out_field_string (uiout, "cwd", gdb_dirbuf);
}
diff --git a/gdb/utils.c b/gdb/utils.c
index d14009f..725f00b 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -865,7 +865,13 @@ internal_vproblem (struct internal_problem *problem,
abort (); /* NOTE: GDB has only three calls to abort(). */
default:
dejavu = 3;
- write (STDERR_FILENO, msg, sizeof (msg));
+ /* Newer GLIBC versions put the warn_unused_result attribute
+ on write, but this is one of those rare cases where
+ ignoring the return value is correct. Casting to (void)
+ does not fix this problem. This is the solution suggested
+ at http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509. */
+ if (write (STDERR_FILENO, msg, sizeof (msg)) != sizeof (msg))
+ abort ();
exit (1);
}
}
Index: gdb-6.7/gdb/linespec.c
===================================================================
--- gdb-6.7.orig/gdb/linespec.c 2007-10-14 23:31:03.000000000 +0200
+++ gdb-6.7/gdb/linespec.c 2007-10-14 23:53:57.000000000 +0200
@@ -1654,7 +1654,7 @@ static struct symtabs_and_lines
find_method (int funfirstline, char ***canonical, char *saved_arg,
char *copy, struct type *t, struct symbol *sym_class)
{
- struct symtabs_and_lines values;
+ struct symtabs_and_lines values = { NULL };
struct symbol *sym = NULL;
int i1; /* Counter for the symbol array. */
struct symbol **sym_arr = alloca (total_number_of_methods (t)
Index: gdb-6.7/gdb/top.c
===================================================================
--- gdb-6.7.orig/gdb/top.c 2007-10-14 23:38:27.000000000 +0200
+++ gdb-6.7/gdb/top.c 2007-10-14 23:42:39.000000000 +0200
@@ -1636,7 +1636,8 @@ gdb_init (char *argv0)
/* Run the init function of each source file */
- getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
+ /* Unused result. */
+ 1 && getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
current_directory = gdb_dirbuf;
#ifdef __MSDOS__
--- ./gdb/ui-file.c 1 Jan 2008 22:53:13 -0000 1.15
+++ ./gdb/ui-file.c 14 Dec 2008 18:16:56 -0000
@@ -481,7 +481,9 @@ stdio_file_write (struct ui_file *file,
if (stdio->magic != &stdio_file_magic)
internal_error (__FILE__, __LINE__,
_("stdio_file_write: bad magic number"));
- fwrite (buf, length_buf, 1, stdio->file);
+ /* Calling error crashes when we are called from the exception framework. */
+ if (fwrite (buf, length_buf, 1, stdio->file))
+ ;
}
static void
@@ -491,7 +493,9 @@ stdio_file_fputs (const char *linebuffer
if (stdio->magic != &stdio_file_magic)
internal_error (__FILE__, __LINE__,
_("stdio_file_fputs: bad magic number"));
- fputs (linebuffer, stdio->file);
+ /* Calling error crashes when we are called from the exception framework. */
+ if (fputs (linebuffer, stdio->file))
+ ;
}
static int

View File

@ -30,11 +30,11 @@ glibc-debuginfo-2.7-2.x86_64: /usr/lib/debug/lib64/libc.so.6.debug:
<81a2> DW_AT_name : (indirect string, offset: 0x280e): __errno_location
<81a8> DW_AT_MIPS_linkage_name: (indirect string, offset: 0x2808): *__GI___errno_location
Index: gdb-6.8.50.20081128/gdb/dwarf2read.c
Index: gdb-6.8.50.20090209/gdb/dwarf2read.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/dwarf2read.c 2008-12-04 10:26:18.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/dwarf2read.c 2008-12-04 10:26:40.000000000 +0100
@@ -5886,8 +5886,8 @@ read_partial_die (struct partial_die_inf
--- gdb-6.8.50.20090209.orig/gdb/dwarf2read.c 2009-02-09 15:50:59.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/dwarf2read.c 2009-02-09 15:51:57.000000000 +0100
@@ -6031,8 +6031,8 @@ read_partial_die (struct partial_die_inf
{
case DW_AT_name:
@ -45,7 +45,7 @@ Index: gdb-6.8.50.20081128/gdb/dwarf2read.c
part_die->name = DW_STRING (&attr);
break;
case DW_AT_comp_dir:
@@ -5895,7 +5895,9 @@ read_partial_die (struct partial_die_inf
@@ -6040,7 +6040,9 @@ read_partial_die (struct partial_die_inf
part_die->dirname = DW_STRING (&attr);
break;
case DW_AT_MIPS_linkage_name:
@ -56,7 +56,7 @@ Index: gdb-6.8.50.20081128/gdb/dwarf2read.c
break;
case DW_AT_low_pc:
has_low_pc_attr = 1;
@@ -8129,9 +8131,13 @@ dwarf2_linkage_name (struct die_info *di
@@ -8278,9 +8280,13 @@ dwarf2_linkage_name (struct die_info *di
{
struct attribute *attr;
@ -73,36 +73,37 @@ Index: gdb-6.8.50.20081128/gdb/dwarf2read.c
attr = dwarf2_attr (die, DW_AT_name, cu);
if (attr && DW_STRING (attr))
return DW_STRING (attr);
Index: gdb-6.8.50.20081128/gdb/gdbtypes.c
Index: gdb-6.8.50.20090209/gdb/gdbtypes.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/gdbtypes.c 2008-11-10 21:53:43.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/gdbtypes.c 2008-12-04 10:26:40.000000000 +0100
@@ -3141,6 +3141,8 @@ gdbtypes_post_init (struct gdbarch *gdba
--- gdb-6.8.50.20090209.orig/gdb/gdbtypes.c 2009-02-09 15:38:54.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/gdbtypes.c 2009-02-09 15:56:14.000000000 +0100
@@ -3643,6 +3643,8 @@ gdbtypes_post_init (struct gdbarch *gdba
init_type (TYPE_CODE_INT,
gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
0, "int", (struct objfile *) NULL);
0, "int", OBJFILE_INTERNAL);
+ builtin_type->builtin_int_ptr =
+ make_pointer_type (builtin_type->builtin_int, NULL);
builtin_type->builtin_unsigned_int =
init_type (TYPE_CODE_INT,
gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
@@ -3250,6 +3252,11 @@ gdbtypes_post_init (struct gdbarch *gdba
"<text variable, no debug info>", NULL);
@@ -3752,6 +3754,12 @@ gdbtypes_post_init (struct gdbarch *gdba
"<text variable, no debug info>", OBJFILE_INTERNAL);
TYPE_TARGET_TYPE (builtin_type->nodebug_text_symbol) =
builtin_type->builtin_int;
+ builtin_type->nodebug_text_symbol_errno_location =
+ init_type (TYPE_CODE_FUNC, 1, 0,
+ "<text variable for __errno_location, no debug info>", NULL);
+ "<text variable for __errno_location, no debug info>",
+ OBJFILE_INTERNAL);
+ TYPE_TARGET_TYPE (builtin_type->nodebug_text_symbol_errno_location) =
+ builtin_type->builtin_int_ptr;
builtin_type->nodebug_data_symbol =
init_type (TYPE_CODE_INT,
gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT, 0,
Index: gdb-6.8.50.20081128/gdb/gdbtypes.h
Index: gdb-6.8.50.20090209/gdb/gdbtypes.h
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/gdbtypes.h 2008-10-28 18:19:56.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/gdbtypes.h 2008-12-04 10:26:40.000000000 +0100
@@ -975,6 +975,7 @@ struct builtin_type
--- gdb-6.8.50.20090209.orig/gdb/gdbtypes.h 2009-02-09 15:38:54.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/gdbtypes.h 2009-02-09 15:51:57.000000000 +0100
@@ -1050,6 +1050,7 @@ struct builtin_type
/* Types used for symbols with no debug information. */
struct type *nodebug_text_symbol;
@ -110,7 +111,7 @@ Index: gdb-6.8.50.20081128/gdb/gdbtypes.h
struct type *nodebug_data_symbol;
struct type *nodebug_unknown_symbol;
struct type *nodebug_tls_symbol;
@@ -987,6 +988,7 @@ struct builtin_type
@@ -1062,6 +1063,7 @@ struct builtin_type
struct type *builtin_char;
struct type *builtin_short;
struct type *builtin_int;
@ -118,10 +119,10 @@ Index: gdb-6.8.50.20081128/gdb/gdbtypes.h
struct type *builtin_long;
struct type *builtin_signed_char;
struct type *builtin_unsigned_char;
Index: gdb-6.8.50.20081128/gdb/parse.c
Index: gdb-6.8.50.20090209/gdb/parse.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/parse.c 2008-11-24 18:05:43.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/parse.c 2008-12-04 10:26:40.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/parse.c 2009-01-03 06:57:52.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/parse.c 2009-02-09 15:51:57.000000000 +0100
@@ -449,7 +449,12 @@ write_exp_msymbol (struct minimal_symbol
case mst_text:
case mst_file_text:
@ -136,11 +137,11 @@ Index: gdb-6.8.50.20081128/gdb/parse.c
break;
case mst_data:
Index: gdb-6.8.50.20081128/gdb/target.c
Index: gdb-6.8.50.20090209/gdb/target.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/target.c 2008-12-04 10:24:58.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/target.c 2008-12-04 10:29:07.000000000 +0100
@@ -850,6 +850,25 @@ pop_all_targets (int quitting)
--- gdb-6.8.50.20090209.orig/gdb/target.c 2009-02-09 15:50:39.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/target.c 2009-02-09 15:51:57.000000000 +0100
@@ -842,6 +842,25 @@ pop_all_targets (int quitting)
pop_all_targets_above (dummy_stratum, quitting);
}
@ -166,7 +167,7 @@ Index: gdb-6.8.50.20081128/gdb/target.c
/* Using the objfile specified in OBJFILE, find the address for the
current thread's thread-local storage with offset OFFSET. */
CORE_ADDR
@@ -931,7 +950,28 @@ target_translate_tls_address (struct obj
@@ -932,7 +951,28 @@ target_translate_tls_address (struct obj
/* It wouldn't be wrong here to try a gdbarch method, too; finding
TLS is an ABI-specific thing. But we don't do that yet. */
else
@ -196,10 +197,10 @@ Index: gdb-6.8.50.20081128/gdb/target.c
return addr;
}
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.dwarf2/dw2-errno.c
Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.dwarf2/dw2-errno.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.dwarf2/dw2-errno.c 2008-12-04 10:26:40.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/testsuite/gdb.dwarf2/dw2-errno.c 2009-02-09 15:51:57.000000000 +0100
@@ -0,0 +1,28 @@
+/* This testcase is part of GDB, the GNU debugger.
+
@ -229,10 +230,10 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.dwarf2/dw2-errno.c
+
+ return 0; /* breakpoint */
+}
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.dwarf2/dw2-errno.exp
Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.dwarf2/dw2-errno.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.dwarf2/dw2-errno.exp 2008-12-04 10:26:40.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/testsuite/gdb.dwarf2/dw2-errno.exp 2009-02-09 15:51:57.000000000 +0100
@@ -0,0 +1,67 @@
+# Copyright 2007 Free Software Foundation, Inc.
+

View File

@ -80,11 +80,9 @@ Index: gdb-6.7.50.20080227/gdb/testsuite/gdb.threads/tls-sepdebug-shared.c
+ bug-gdb@prep.ai.mit.edu */
+
+__thread int var = 42;
Index: gdb-6.7.50.20080227/gdb/testsuite/gdb.threads/tls-sepdebug.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.7.50.20080227/gdb/testsuite/gdb.threads/tls-sepdebug.exp 2008-02-27 09:00:15.000000000 +0100
@@ -0,0 +1,81 @@
--- /dev/null 2009-02-10 00:19:00.494289687 +0100
+++ gdb-6.8.50.20090209-x/gdb/testsuite/gdb.threads/tls-sepdebug.exp 2009-02-10 00:49:38.000000000 +0100
@@ -0,0 +1,86 @@
+# Copyright 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
@ -109,14 +107,17 @@ Index: gdb-6.7.50.20080227/gdb/testsuite/gdb.threads/tls-sepdebug.exp
+set srcmainfile ${testfile}-main.c
+set srcsharedfile ${testfile}-shared.c
+
+# DO NOT use ${objdir} obsolute reference here as we test relative directories
+# below and the absolute pathnames must not get encoded to the binaries.
+set binmainfile ${objdir}/${subdir}/${testfile}-main
+set binsharedbase ${testfile}-shared.so
+set binsharedfile ${objdir}/${subdir}/${binsharedbase}
+set binshareddebugfile ${objdir}/${subdir}/${binsharedbase}.debug
+
+set binmainfile ${testfile}-main
+set binsharedfile ${testfile}-shared.so
+set binshareddebugfile ${testfile}-shared.so.debug
+# Use explicit -soname as otherwise the full path to the library would get
+# encoded into ${binmainfile} making LD_LIBRARY_PATH tests useless.
+
+if { [gdb_compile_shlib "${srcdir}/${subdir}/${srcsharedfile}" "${binsharedfile}" {debug}] != "" } {
+# FIXME: gcc dependency (-Wl,-soname).
+
+if { [gdb_compile_shlib "${srcdir}/${subdir}/${srcsharedfile}" "${binsharedfile}" [list debug additional_flags=-Wl,-soname=${binsharedbase}]] != "" } {
+ untested "Couldn't compile test library"
+ return -1
+}
@ -130,7 +131,9 @@ Index: gdb-6.7.50.20080227/gdb/testsuite/gdb.threads/tls-sepdebug.exp
+ remote_exec build "objcopy --add-gnu-debuglink=${binshareddebugfile} ${binsharedfile}"
+}
+
+if { [gdb_compile_pthreads "${srcdir}/${subdir}/${srcmainfile}" "${binmainfile}" executable [list debug shlib=${binsharedfile}]] != "" } {
+# Do not use `shlib=' as it will automatically add also -rpath for gcc.
+
+if { [gdb_compile_pthreads "${srcdir}/${subdir}/${srcmainfile} ${binsharedfile}" "${binmainfile}" executable {debug}] != "" } {
+ untested "Couldn't compile test program"
+ return -1
+}
@ -141,7 +144,7 @@ Index: gdb-6.7.50.20080227/gdb/testsuite/gdb.threads/tls-sepdebug.exp
+# \$PWD is easy - it is the absolute way
+# ${subdir} would fail on "print var"
+
+foreach ld_library_path { \$PWD ${subdir} } name { absolute relative } {
+foreach ld_library_path [list [pwd]/${subdir} ./${subdir}] name { absolute relative } {
+
+ gdb_exit
+ gdb_start

View File

@ -28,10 +28,10 @@ http://sourceware.org/ml/gdb-patches/2008-01/msg00042.html
* s390-nat.c (s390_fix_watch_points): Fix its compilation failure
- rename it to S390_FIX_WATCH_POINTS_LIST.
Index: gdb-6.8.50.20081128/gdb/amd64-linux-nat.c
Index: gdb-6.8.50.20090209/gdb/amd64-linux-nat.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/amd64-linux-nat.c 2008-12-07 10:09:19.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/amd64-linux-nat.c 2008-12-07 10:10:20.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/amd64-linux-nat.c 2009-02-09 16:02:27.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/amd64-linux-nat.c 2009-02-09 16:03:30.000000000 +0100
@@ -408,25 +408,43 @@ amd64_linux_dr_set (ptid_t ptid, int reg
void
amd64_linux_dr_set_control (unsigned long control)
@ -128,11 +128,10 @@ Index: gdb-6.8.50.20081128/gdb/amd64-linux-nat.c
/* This function is called by libthread_db as part of its handling of
@@ -520,6 +573,43 @@ amd64_linux_child_post_startup_inferior
i386_cleanup_dregs ();
super_post_startup_inferior (ptid);
@@ -755,6 +808,42 @@ amd64_linux_siginfo_fixup (struct siginf
return 0;
}
+
+static int (*amd64_linux_super_follow_fork) (struct target_ops *ops,
+ int follow_child);
+
@ -169,10 +168,10 @@ Index: gdb-6.8.50.20081128/gdb/amd64-linux-nat.c
+ return (*amd64_linux_super_follow_fork) (ops, follow_child);
+}
+
/* Provide a prototype to silence -Wmissing-prototypes. */
@@ -558,6 +648,9 @@ _initialize_amd64_linux_nat (void)
void _initialize_amd64_linux_nat (void);
@@ -791,6 +880,9 @@ _initialize_amd64_linux_nat (void)
linux_elfcore_write_prstatus = amd64_linux_elfcore_write_prstatus;
linux_elfcore_write_prfpreg = amd64_linux_elfcore_write_prfpreg;
@ -182,10 +181,10 @@ Index: gdb-6.8.50.20081128/gdb/amd64-linux-nat.c
/* Register the target. */
linux_nat_add_target (t);
linux_nat_set_new_thread (t, amd64_linux_new_thread);
Index: gdb-6.8.50.20081128/gdb/config/i386/nm-i386.h
Index: gdb-6.8.50.20090209/gdb/config/i386/nm-i386.h
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/config/i386/nm-i386.h 2008-03-01 05:39:36.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/config/i386/nm-i386.h 2008-12-07 10:09:20.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/config/i386/nm-i386.h 2009-01-03 06:57:54.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/config/i386/nm-i386.h 2009-02-09 16:02:42.000000000 +0100
@@ -120,6 +120,8 @@ extern int i386_stopped_by_watchpoint (v
#endif /* I386_WATCHPOINTS_IN_TARGET_VECTOR */
@ -195,10 +194,10 @@ Index: gdb-6.8.50.20081128/gdb/config/i386/nm-i386.h
#endif /* I386_USE_GENERIC_WATCHPOINTS */
#endif /* NM_I386_H */
Index: gdb-6.8.50.20081128/gdb/i386-linux-nat.c
Index: gdb-6.8.50.20090209/gdb/i386-linux-nat.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/i386-linux-nat.c 2008-03-13 13:22:13.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/i386-linux-nat.c 2008-12-07 10:09:20.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/i386-linux-nat.c 2009-01-03 06:57:51.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/i386-linux-nat.c 2009-02-09 16:02:42.000000000 +0100
@@ -634,21 +634,42 @@ i386_linux_dr_set_control (unsigned long
ptid_t ptid;
@ -342,11 +341,11 @@ Index: gdb-6.8.50.20081128/gdb/i386-linux-nat.c
/* Register the target. */
linux_nat_add_target (t);
linux_nat_set_new_thread (t, i386_linux_new_thread);
Index: gdb-6.8.50.20081128/gdb/i386-nat.c
Index: gdb-6.8.50.20090209/gdb/i386-nat.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/i386-nat.c 2008-03-01 05:39:36.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/i386-nat.c 2008-12-07 10:09:20.000000000 +0100
@@ -545,6 +545,17 @@ i386_remove_watchpoint (CORE_ADDR addr,
--- gdb-6.8.50.20090209.orig/gdb/i386-nat.c 2009-01-03 06:57:51.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/i386-nat.c 2009-02-09 16:02:42.000000000 +0100
@@ -546,6 +546,17 @@ i386_remove_watchpoint (CORE_ADDR addr,
return retval;
}
@ -364,10 +363,10 @@ Index: gdb-6.8.50.20081128/gdb/i386-nat.c
/* Return non-zero if we can watch a memory region that starts at
address ADDR and whose length is LEN bytes. */
Index: gdb-6.8.50.20081128/gdb/ia64-linux-nat.c
Index: gdb-6.8.50.20090209/gdb/ia64-linux-nat.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/ia64-linux-nat.c 2008-12-07 10:06:03.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/ia64-linux-nat.c 2008-12-07 10:09:20.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/ia64-linux-nat.c 2009-02-09 15:48:43.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/ia64-linux-nat.c 2009-02-09 16:02:42.000000000 +0100
@@ -583,6 +583,12 @@ ia64_linux_insert_watchpoint (CORE_ADDR
return 0;
}
@ -467,10 +466,10 @@ Index: gdb-6.8.50.20081128/gdb/ia64-linux-nat.c
/* Register the target. */
linux_nat_add_target (t);
linux_nat_set_new_thread (t, ia64_linux_new_thread);
Index: gdb-6.8.50.20081128/gdb/ppc-linux-nat.c
Index: gdb-6.8.50.20090209/gdb/ppc-linux-nat.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/ppc-linux-nat.c 2008-11-18 22:39:47.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/ppc-linux-nat.c 2008-12-07 10:09:20.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/ppc-linux-nat.c 2009-01-03 06:57:52.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/ppc-linux-nat.c 2009-02-09 16:02:42.000000000 +0100
@@ -1118,6 +1118,12 @@ ppc_linux_insert_watchpoint (CORE_ADDR a
return 0;
}
@ -563,10 +562,10 @@ Index: gdb-6.8.50.20081128/gdb/ppc-linux-nat.c
/* Register the target. */
linux_nat_add_target (t);
linux_nat_set_new_thread (t, ppc_linux_new_thread);
Index: gdb-6.8.50.20081128/gdb/s390-nat.c
Index: gdb-6.8.50.20090209/gdb/s390-nat.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/s390-nat.c 2007-11-07 07:36:57.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/s390-nat.c 2008-12-07 10:09:20.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/s390-nat.c 2007-11-07 07:36:57.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/s390-nat.c 2009-02-09 16:02:42.000000000 +0100
@@ -283,21 +283,15 @@ s390_stopped_by_watchpoint (void)
}
@ -721,10 +720,10 @@ Index: gdb-6.8.50.20081128/gdb/s390-nat.c
/* Register the target. */
linux_nat_add_target (t);
linux_nat_set_new_thread (t, s390_fix_watch_points);
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork-forkoff.c
Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork-forkoff.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork-forkoff.c 2008-12-07 10:09:20.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork-forkoff.c 2009-02-09 16:02:42.000000000 +0100
@@ -0,0 +1,172 @@
+/* Test case for forgotten hw-watchpoints after fork()-off of a process.
+
@ -898,10 +897,10 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork-forkoff.c
+#else
+# error "!FOLLOW_PARENT && !FOLLOW_CHILD"
+#endif
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c
Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c 2008-12-07 10:09:20.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c 2009-02-09 16:02:42.000000000 +0100
@@ -0,0 +1,154 @@
+/* Test case for forgotten hw-watchpoints after fork()-off of a process.
+
@ -1057,10 +1056,10 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c
+
+ return 0;
+}
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork.c
Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork.c 2008-12-07 10:09:20.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork.c 2009-02-09 16:02:42.000000000 +0100
@@ -0,0 +1,56 @@
+/* Test case for forgotten hw-watchpoints after fork()-off of a process.
+
@ -1118,10 +1117,10 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork.c
+
+ return 0;
+}
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork.exp
Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork.exp 2008-12-07 10:09:20.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/watchpoint-fork.exp 2009-02-09 16:02:42.000000000 +0100
@@ -0,0 +1,140 @@
+# Copyright 2008 Free Software Foundation, Inc.
+
@ -1263,11 +1262,11 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/watchpoint-fork.exp
+if {[istarget "*-*-linux*"]} {
+ test child FOLLOW_CHILD
+}
Index: gdb-6.8.50.20081128/gdb/doc/gdb.texinfo
Index: gdb-6.8.50.20090209/gdb/doc/gdb.texinfo
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/doc/gdb.texinfo 2008-12-07 10:09:20.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/doc/gdb.texinfo 2008-12-07 10:10:20.000000000 +0100
@@ -3587,6 +3587,14 @@ confident that no other thread can becom
--- gdb-6.8.50.20090209.orig/gdb/doc/gdb.texinfo 2009-02-09 16:02:35.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/doc/gdb.texinfo 2009-02-09 16:02:42.000000000 +0100
@@ -3588,6 +3588,14 @@ confident that no other thread can becom
software watchpoints as usual. However, @value{GDBN} may not notice
when a non-current thread's activity changes the expression. (Hardware
watchpoints, in contrast, watch an expression in all threads.)
@ -1282,11 +1281,11 @@ Index: gdb-6.8.50.20081128/gdb/doc/gdb.texinfo
@end quotation
@xref{set remote hardware-watchpoint-limit}.
Index: gdb-6.8.50.20081128/gdb/config/i386/nm-linux.h
Index: gdb-6.8.50.20090209/gdb/config/i386/nm-linux.h
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/config/i386/nm-linux.h 2008-03-01 05:39:36.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/config/i386/nm-linux.h 2008-12-07 10:09:20.000000000 +0100
@@ -45,6 +45,16 @@ extern void i386_linux_dr_reset_addr (in
--- gdb-6.8.50.20090209.orig/gdb/config/i386/nm-linux.h 2009-01-03 06:57:54.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/config/i386/nm-linux.h 2009-02-09 16:02:42.000000000 +0100
@@ -46,6 +46,16 @@ extern void i386_linux_dr_reset_addr (in
extern unsigned long i386_linux_dr_get_status (void);
#define I386_DR_LOW_GET_STATUS() \
i386_linux_dr_get_status ()
@ -1303,10 +1302,10 @@ Index: gdb-6.8.50.20081128/gdb/config/i386/nm-linux.h
#ifdef HAVE_PTRACE_GETFPXREGS
Index: gdb-6.8.50.20081128/gdb/config/i386/nm-linux64.h
Index: gdb-6.8.50.20090209/gdb/config/i386/nm-linux64.h
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/config/i386/nm-linux64.h 2008-03-01 05:39:36.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/config/i386/nm-linux64.h 2008-12-07 10:09:20.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/config/i386/nm-linux64.h 2009-01-03 06:57:54.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/config/i386/nm-linux64.h 2009-02-09 16:02:42.000000000 +0100
@@ -51,4 +51,14 @@ extern unsigned long amd64_linux_dr_get_
#define I386_DR_LOW_GET_STATUS() \
amd64_linux_dr_get_status ()
@ -1322,11 +1321,11 @@ Index: gdb-6.8.50.20081128/gdb/config/i386/nm-linux64.h
+ amd64_linux_remove_watchpoint (addr, len, type)
+
#endif /* nm-linux64.h */
Index: gdb-6.8.50.20081128/gdb/target.h
Index: gdb-6.8.50.20090209/gdb/target.h
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/target.h 2008-12-07 10:09:19.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/target.h 2008-12-07 10:10:38.000000000 +0100
@@ -1123,7 +1123,9 @@ extern char *normal_pid_to_str (ptid_t p
--- gdb-6.8.50.20090209.orig/gdb/target.h 2009-02-09 15:49:25.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/target.h 2009-02-09 16:02:42.000000000 +0100
@@ -1113,7 +1113,9 @@ extern char *normal_pid_to_str (ptid_t p
#ifndef target_insert_watchpoint
#define target_insert_watchpoint(addr, len, type) \
(*current_target.to_insert_watchpoint) (addr, len, type)

View File

@ -1,3 +1,5 @@
gdb/testsuite/gdb.base/fileio.c:
gdb/testsuite/gdb.base/fileio.exp:
2007-12-08 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.base/fileio.c (ROOTSUBDIR): New macro.
@ -6,6 +8,18 @@
* gdb.base/fileio.exp: Change the startup and finish cleanup.
Change the test file reference to be into the `fileio.dir' directory.
sources/gdb/testsuite/gdb.base/dump.exp:
Found on RHEL-5.s390x.
gdb-6.8.50.20090209/gdb/testsuite/gdb.base/auxv.exp:
random FAIL: gdb.base/auxv.exp: matching auxv data from live and gcore
gdb-6.8.50.20090209/gdb/testsuite/gdb.base/annota1.exp:
frames-invalid can happen asynchronously.
--- ./gdb/testsuite/gdb.base/fileio.c 13 Jun 2006 08:55:22 -0000 1.10
+++ ./gdb/testsuite/gdb.base/fileio.c 8 Dec 2007 16:04:10 -0000
@@ -58,6 +58,8 @@ system (const char * string);
@ -88,11 +102,6 @@
set timeout $oldtimeout
return 0
Found on RHEL-5.s390x.
--- sources/gdb/testsuite/gdb.base/dump.exp-orig 2008-08-28 11:44:40.000000000 +0200
+++ sources/gdb/testsuite/gdb.base/dump.exp 2008-08-28 11:44:49.000000000 +0200
@@ -493,8 +493,10 @@ if ![string compare $is64bitonly "no"] t
@ -107,3 +116,93 @@ Found on RHEL-5.s390x.
"array partial with expressions" 4 "intarray2\[3\]"
gdb_test "print intarray2\[2\] == 0" " = 1" "element 2 not changed, == 4"
--- gdb-6.8.50.20090209/gdb/testsuite/gdb.base/annota1.exp-orig 2009-02-09 16:31:11.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/testsuite/gdb.base/annota1.exp 2009-02-09 21:27:38.000000000 +0100
@@ -286,7 +286,7 @@ if [target_info exists gdb,nosignals] {
} else {
send_gdb "signal SIGUSR1\n"
gdb_expect {
- -re "\r\n\032\032post-prompt\r\nContinuing with signal SIGUSR1.\r\n\r\n\032\032starting\r\n\r\n\032\032frames-invalid\r\n\r\n\032\032breakpoint 2\r\n\r\nBreakpoint 2, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nhandle_USR1\r\n\032\032frame-args\r\n \\(\r\n\032\032arg-begin\r\nsig\r\n\032\032arg-name-end\r\n=\r\n\032\032arg-value -\r\n$decimal\r\n\032\032arg-end\r\n\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n${escapedsrcfile}\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n.*\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*annota1.c:.*:.*:beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" \
+ -re "\r\n\032\032post-prompt\r\nContinuing with signal SIGUSR1.\r\n\r\n\032\032starting\r\n(\r\n\032\032frames-invalid\r\n)*\r\n\032\032breakpoint 2\r\n\r\nBreakpoint 2, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nhandle_USR1\r\n\032\032frame-args\r\n \\(\r\n\032\032arg-begin\r\nsig\r\n\032\032arg-name-end\r\n=\r\n\032\032arg-value -\r\n$decimal\r\n\032\032arg-end\r\n\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n${escapedsrcfile}\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n.*\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*annota1.c:.*:.*:beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" \
{ pass "send SIGUSR1" }
-re "\r\n\032\032post-prompt\r\nContinuing with signal SIGUSR1.\r\n\r\n\032\032starting\r\n\r\n\032\032frames-invalid\r\n\r\n\032\032breakpoint 2\r\n\r\nBreakpoint 2, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nhandle_USR1\r\n\032\032frame-args\r\n \\(\r\n\032\032arg-begin\r\nsig\r\n\032\032arg-name-end\r\n=\r\n\032\032arg-value -\r\n$decimal\r\n\032\032arg-end\r\n\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n.*${srcfile}\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n.*\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*annota1.c:.*:.*:beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" \
{ setup_xfail "*-*-*" 1270
--- ./gdb/testsuite/gdb.base/auxv.exp 2009-02-11 00:54:54.000000000 +0100
+++ ./gdb/testsuite/gdb.base/auxv.exp 2009-02-11 00:51:30.000000000 +0100
@@ -78,8 +78,10 @@ proc fetch_auxv {test} {
set auxv_lines {}
set bad -1
+ # Former trailing `\[\r\n\]+' may eat just \r leaving \n in the buffer
+ # corrupting the next matches.
if {[gdb_test_multiple "info auxv" $test {
- -re "info auxv\[\r\n\]+" {
+ -re "info auxv\r\n" {
exp_continue
}
-ex "The program has no auxiliary information now" {
@@ -94,20 +96,20 @@ proc fetch_auxv {test} {
set bad 1
exp_continue
}
- -re "^\[0-9\]+\[ \t\]+(AT_\[^ \t\]+)\[^\r\n\]+\[\r\n\]+" {
+ -re "^\[0-9\]+\[ \t\]+(AT_\[^ \t\]+)\[^\r\n\]+\r\n" {
lappend auxv_lines $expect_out(0,string)
exp_continue
}
- -re "^\[0-9\]+\[ \t\]+\\?\\?\\?\[^\r\n\]+\[\r\n\]+" {
+ -re "^\[0-9\]+\[ \t\]+\\?\\?\\?\[^\r\n\]+\r\n" {
warning "Unrecognized tag value: $expect_out(0,string)"
set bad 1
lappend auxv_lines $expect_out(0,string)
exp_continue
}
- -re ".*$gdb_prompt $" {
+ -re "$gdb_prompt $" {
incr bad
}
- -re "^\[^\r\n\]+\[\r\n\]+" {
+ -re "^\[^\r\n\]+\r\n" {
if {!$bad} {
warning "Unrecognized output: $expect_out(0,string)"
set bad 1
--- ./gdb/testsuite/gdb.base/callfuncs.exp 2009-01-03 06:58:03.000000000 +0100
+++ ./gdb/testsuite/gdb.base/callfuncs.exp 2009-02-11 00:51:42.000000000 +0100
@@ -249,15 +249,17 @@ proc fetch_all_registers {test} {
set all_registers_lines {}
set bad -1
+ # Former trailing `\[\r\n\]+' may eat just \r leaving \n in the buffer
+ # corrupting the next matches.
if {[gdb_test_multiple "info all-registers" $test {
- -re "info all-registers\[\r\n\]+" {
+ -re "info all-registers\r\n" {
exp_continue
}
-ex "The program has no registers now" {
set bad 1
exp_continue
}
- -re "^bspstore\[ \t\]+\[^\r\n\]+\[\r\n\]+" {
+ -re "^bspstore\[ \t\]+\[^\r\n\]+\r\n" {
if [istarget "ia64-*-*"] {
# Filter out bspstore which is specially tied to bsp,
# giving spurious differences.
@@ -266,14 +268,14 @@ proc fetch_all_registers {test} {
}
exp_continue
}
- -re "^\[^ \t\]+\[ \t\]+\[^\r\n\]+\[\r\n\]+" {
+ -re "^\[^ \t\]+\[ \t\]+\[^\r\n\]+\r\n" {
lappend all_registers_lines $expect_out(0,string)
exp_continue
}
- -re ".*$gdb_prompt $" {
+ -re "$gdb_prompt $" {
incr bad
}
- -re "^\[^\r\n\]+\[\r\n\]+" {
+ -re "^\[^\r\n\]+\r\n" {
if {!$bad} {
warning "Unrecognized output: $expect_out(0,string)"
set bad 1

View File

@ -1,8 +1,8 @@
Index: gdb-6.8.50.20081128/gdb/linux-nat.c
Index: gdb-6.8.50.20090209/gdb/linux-nat.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/linux-nat.c 2008-12-06 21:48:18.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/linux-nat.c 2008-12-06 22:00:42.000000000 +0100
@@ -199,6 +199,9 @@ blocked. */
--- gdb-6.8.50.20090209.orig/gdb/linux-nat.c 2009-02-09 16:12:23.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/linux-nat.c 2009-02-09 16:15:30.000000000 +0100
@@ -204,6 +204,9 @@ blocked. */
static struct target_ops *linux_ops;
static struct target_ops linux_ops_saved;
@ -12,7 +12,7 @@ Index: gdb-6.8.50.20081128/gdb/linux-nat.c
/* The method to call, if any, when a new thread is attached. */
static void (*linux_nat_new_thread) (ptid_t);
@@ -871,7 +874,14 @@ linux_child_follow_fork (struct target_o
@@ -902,7 +905,14 @@ linux_child_follow_fork (struct target_o
fork_save_infrun_state (fp, 0);
}
else
@ -27,8 +27,8 @@ Index: gdb-6.8.50.20081128/gdb/linux-nat.c
+ }
inferior_ptid = ptid_build (child_pid, child_pid, 0);
add_inferior (child_pid);
@@ -1203,6 +1213,7 @@ linux_nat_post_attach_wait (ptid_t ptid,
@@ -1229,6 +1239,7 @@ linux_nat_post_attach_wait (ptid_t ptid,
if (debug_linux_nat)
fprintf_unfiltered (gdb_stdlog,
"LNPAW: Attaching to a stopped process\n");
@ -36,7 +36,7 @@ Index: gdb-6.8.50.20081128/gdb/linux-nat.c
/* The process is definitely stopped. It is in a job control
stop, unless the kernel predates the TASK_STOPPED /
@@ -1535,6 +1546,9 @@ GPT: lwp %s had signal %s, but it is in
@@ -1561,6 +1572,9 @@ GPT: lwp %s had signal %s, but it is in
*status = lp->status;
}
@ -46,16 +46,16 @@ Index: gdb-6.8.50.20081128/gdb/linux-nat.c
return 0;
}
@@ -1631,6 +1645,8 @@ linux_nat_detach (struct target_ops *ops
inferior_ptid = pid_to_ptid (pid);
linux_ops->to_detach (ops, args, from_tty);
+ pid_was_stopped = 0;
@@ -1671,6 +1685,8 @@ linux_nat_detach (struct target_ops *ops
}
else
linux_ops->to_detach (ops, args, from_tty);
+
if (target_can_async_p ())
drain_queued_events (pid);
+ pid_was_stopped = 0;
}
@@ -1787,6 +1803,14 @@ linux_nat_resume (ptid_t ptid, int step_
/* Resume LP. */
@@ -1825,6 +1841,14 @@ linux_nat_resume (ptid_t ptid, int step_
resume_callback. */
lp->stopped = 0;
@ -70,7 +70,7 @@ Index: gdb-6.8.50.20081128/gdb/linux-nat.c
if (resume_all)
iterate_over_lwps (resume_callback, NULL);
@@ -3281,6 +3305,8 @@ linux_nat_mourn_inferior (struct target_
@@ -3316,6 +3340,8 @@ linux_nat_mourn_inferior (struct target_
there are other viable forks to debug. Delete the exiting
one and context-switch to the first available. */
linux_fork_mourn_inferior ();
@ -78,83 +78,12 @@ Index: gdb-6.8.50.20081128/gdb/linux-nat.c
+ pid_was_stopped = 0;
}
static LONGEST
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attach-stopped.c
/* Convert a native/host siginfo object, into/from the siginfo in the
Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/attach-stopped.exp
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/testsuite/gdb.threads/attach-stopped.c 2008-05-01 20:50:14.000000000 +0200
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attach-stopped.c 2008-12-06 21:57:23.000000000 +0100
@@ -1,19 +1,20 @@
/* This testcase is part of GDB, the GNU debugger.
- Copyright 2008 Free Software Foundation, Inc.
+ Copyright 2005-2007 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
+ the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* This program is intended to be started outside of gdb, then
manually stopped via a signal. */
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attach-stopped.exp
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/testsuite/gdb.threads/attach-stopped.exp 2008-05-01 20:50:14.000000000 +0200
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attach-stopped.exp 2008-12-06 21:57:23.000000000 +0100
@@ -1,26 +1,33 @@
-# Copyright 2008
-# Free Software Foundation, Inc.
+# Copyright 2005-2007
# 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
+# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
-#
+#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-#
+#
# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# This test was created by modifying attach.exp.
# This file was created by Jeff Johnston <jjohnstn@redhat.com>.
# This file was updated by Jan Kratochvil <jan.kratochvil@redhat.com>.
+if $tracelevel then {
+ strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
# This test only works on Linux
-if { ![isnative] || [is_remote host] || ![istarget *-linux*] } {
- continue
+if { ![istarget "*-*-linux-gnu*"] } {
+ return 0
}
set testfile "attach-stopped"
@@ -63,7 +70,65 @@ proc corefunc { threadtype } {
--- gdb-6.8.50.20090209.orig/gdb/testsuite/gdb.threads/attach-stopped.exp 2009-01-03 06:58:07.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/attach-stopped.exp 2009-02-09 16:12:41.000000000 +0100
@@ -62,7 +62,65 @@ proc corefunc { threadtype } {
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
@ -221,39 +150,10 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attach-stopped.exp
set test "$threadtype: attach2 to stopped, after setting file"
gdb_test_multiple "attach $testpid" "$test" {
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attachstop-mt.c
Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/attachstop-mt.exp
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/testsuite/gdb.threads/attachstop-mt.c 2008-05-01 20:50:14.000000000 +0200
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attachstop-mt.c 2008-12-06 21:57:23.000000000 +0100
@@ -1,19 +1,20 @@
/* This testcase is part of GDB, the GNU debugger.
- Copyright 2008 Free Software Foundation, Inc.
+ Copyright 2005 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
+ the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* This program is intended to be started outside of gdb, then
manually stopped via a signal. */
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attachstop-mt.exp
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/testsuite/gdb.threads/attachstop-mt.exp 2008-09-28 13:39:45.000000000 +0200
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.threads/attachstop-mt.exp 2008-12-06 21:57:23.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/testsuite/gdb.threads/attachstop-mt.exp 2009-01-03 06:58:07.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/testsuite/gdb.threads/attachstop-mt.exp 2009-02-09 16:12:41.000000000 +0100
@@ -176,12 +176,23 @@ gdb_test "bt" ".*sleep.*(func|main).*" "
# Exit and detach the process.
gdb_exit

File diff suppressed because it is too large Load Diff

View File

@ -121,7 +121,7 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked.exp
+# No locals.
+
+# `abort' can get expressed as `*__GI_abort'.
+gdb_test "bt full" "in \[^ \]*abort \\(.*in func \\(.*\ti = -?\[0-9\].*in main \\(.*" "Backtrace after abort()"
+gdb_test "bt full" "in \[^ \]*abort \\(.*in func \\(.*\r\n\[\t \]+i = -?\[0-9\].*in main \\(.*" "Backtrace after abort()"
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.dwarf2/dw2-loclist-prelinked-main.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000

View File

@ -18,11 +18,11 @@
gdb.base/watchpoint.c (global_ptr_ptr): New variable.
(func4): New testing code for GLOBAL_PTR_PTR.
Index: gdb-6.8.50.20081128/gdb/breakpoint.c
Index: gdb-6.8.50.20090209/gdb/breakpoint.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/breakpoint.c 2008-12-01 16:13:12.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/breakpoint.c 2008-12-03 00:00:08.000000000 +0100
@@ -770,7 +770,15 @@ is_hardware_watchpoint (struct breakpoin
--- gdb-6.8.50.20090209.orig/gdb/breakpoint.c 2009-02-09 15:39:01.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/breakpoint.c 2009-02-09 16:04:10.000000000 +0100
@@ -769,7 +769,15 @@ is_hardware_watchpoint (struct breakpoin
If VAL_CHAIN is non-NULL, *VAL_CHAIN will be released from the
value chain. The caller must free the values individually. If
VAL_CHAIN is NULL, all generated values will be left on the value
@ -39,7 +39,7 @@ Index: gdb-6.8.50.20081128/gdb/breakpoint.c
static void
fetch_watchpoint_value (struct expression *exp, struct value **valp,
@@ -5824,7 +5832,7 @@ watch_command_1 (char *arg, int accessfl
@@ -5862,7 +5870,7 @@ watch_command_1 (char *arg, int accessfl
struct symtab_and_line sal;
struct expression *exp;
struct block *exp_valid_block;
@ -48,7 +48,7 @@ Index: gdb-6.8.50.20081128/gdb/breakpoint.c
struct frame_info *frame;
struct frame_info *prev_frame = NULL;
char *exp_start = NULL;
@@ -5910,6 +5918,27 @@ watch_command_1 (char *arg, int accessfl
@@ -5954,6 +5962,27 @@ watch_command_1 (char *arg, int accessfl
exp_valid_block = innermost_block;
mark = value_mark ();
fetch_watchpoint_value (exp, &val, NULL, NULL);
@ -76,10 +76,10 @@ Index: gdb-6.8.50.20081128/gdb/breakpoint.c
if (val != NULL)
release_value (val);
Index: gdb-6.8.50.20081128/gdb/gdbtypes.h
Index: gdb-6.8.50.20090209/gdb/gdbtypes.h
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/gdbtypes.h 2008-12-02 22:53:14.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/gdbtypes.h 2008-12-03 00:00:08.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/gdbtypes.h 2009-02-09 15:51:57.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/gdbtypes.h 2009-02-09 16:04:10.000000000 +0100
@@ -70,7 +70,22 @@ enum type_code
TYPE_CODE_UNION, /* C union or Pascal variant part */
TYPE_CODE_ENUM, /* Enumeration type */
@ -104,11 +104,11 @@ Index: gdb-6.8.50.20081128/gdb/gdbtypes.h
TYPE_CODE_INT, /* Integer type */
/* Floating type. This is *NOT* a complex type. Beware, there are parts
Index: gdb-6.8.50.20081128/gdb/doc/gdb.texinfo
Index: gdb-6.8.50.20090209/gdb/doc/gdb.texinfo
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/doc/gdb.texinfo 2008-12-02 23:43:49.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/doc/gdb.texinfo 2008-12-03 00:00:08.000000000 +0100
@@ -3479,6 +3479,18 @@ This command prints a list of watchpoint
--- gdb-6.8.50.20090209.orig/gdb/doc/gdb.texinfo 2009-02-09 16:02:42.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/doc/gdb.texinfo 2009-02-09 16:04:10.000000000 +0100
@@ -3480,6 +3480,18 @@ This command prints a list of watchpoint
it is the same as @code{info break} (@pxref{Set Breaks}).
@end table
@ -127,10 +127,10 @@ Index: gdb-6.8.50.20081128/gdb/doc/gdb.texinfo
@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware
watchpoints execute very quickly, and the debugger reports a change in
value at the exact instruction where the change occurs. If @value{GDBN}
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/watchpoint.c
Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.base/watchpoint.c
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/testsuite/gdb.base/watchpoint.c 2008-03-03 14:24:12.000000000 +0100
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.base/watchpoint.c 2008-12-03 00:00:08.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/testsuite/gdb.base/watchpoint.c 2008-03-03 14:24:12.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/testsuite/gdb.base/watchpoint.c 2009-02-09 16:04:10.000000000 +0100
@@ -40,6 +40,7 @@ struct foo struct1, struct2, *ptr1, *ptr
int doread = 0;
@ -150,10 +150,10 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/watchpoint.c
}
int main ()
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/watchpoint.exp
Index: gdb-6.8.50.20090209/gdb/testsuite/gdb.base/watchpoint.exp
===================================================================
--- gdb-6.8.50.20081128.orig/gdb/testsuite/gdb.base/watchpoint.exp 2008-08-06 14:52:07.000000000 +0200
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.base/watchpoint.exp 2008-12-03 00:01:07.000000000 +0100
--- gdb-6.8.50.20090209.orig/gdb/testsuite/gdb.base/watchpoint.exp 2009-01-03 06:58:03.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/testsuite/gdb.base/watchpoint.exp 2009-02-09 16:05:03.000000000 +0100
@@ -641,7 +641,21 @@ proc test_watchpoint_and_breakpoint {} {
}
}
@ -177,9 +177,9 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/watchpoint.exp
proc test_inaccessible_watchpoint {} {
global gdb_prompt
@@ -650,7 +664,8 @@ proc test_inaccessible_watchpoint {} {
@@ -662,7 +676,8 @@ proc test_inaccessible_watchpoint {} {
}
if [runto func4] then {
gdb_test "watch *global_ptr" ".*atchpoint \[0-9\]+: \\*global_ptr"
- gdb_test "next" ".*global_ptr = buf.*"
+ gdb_test "set \$global_ptr_breakpoint_number = \$bpnum" ""
@ -187,7 +187,7 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/watchpoint.exp
gdb_test_multiple "next" "next over ptr init" {
-re ".*atchpoint \[0-9\]+: \\*global_ptr\r\n\r\nOld value = .*\r\nNew value = 3 .*\r\n.*$gdb_prompt $" {
# We can not test for <unknown> here because NULL may be readable.
@@ -663,6 +678,28 @@ proc test_inaccessible_watchpoint {} {
@@ -675,6 +690,28 @@ proc test_inaccessible_watchpoint {} {
pass "next over buffer set"
}
}
@ -216,7 +216,7 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/watchpoint.exp
}
}
@@ -830,6 +867,17 @@ if [initialize] then {
@@ -842,6 +879,17 @@ if [initialize] then {
}
test_watchpoint_and_breakpoint

View File

@ -1,3 +1,10 @@
infcall.c <unwind_on_signal_p>:
Revert the change of: gdb-6.8-inlining.patch
causing: FAIL: gdb.base/unwindonsignal.exp: unwindonsignal, stack unwound
resume() -> target_resume() move of clear_inline_frame_state() is for:
gdb.mi/mi-nsmoribund.exp
Index: gdb-6.8.50.20081214/gdb/testsuite/gdb.opt/inline-bt.c
===================================================================
--- gdb-6.8.50.20081214.orig/gdb/testsuite/gdb.opt/inline-bt.c 2009-02-09 13:28:48.000000000 +0100
@ -597,6 +604,15 @@ Index: gdb-6.8.50.20081214/gdb/infrun.c
===================================================================
--- gdb-6.8.50.20081214.orig/gdb/infrun.c 2009-02-09 13:29:51.000000000 +0100
+++ gdb-6.8.50.20081214/gdb/infrun.c 2009-02-09 13:30:16.000000000 +0100
@@ -1147,8 +1150,6 @@ a command like `return' or `jump' to con
step = 0;
}
- clear_inline_frame_state (resume_ptid);
-
if (debug_displaced
&& use_displaced_stepping (gdbarch)
&& tp->trap_expected)
@@ -1201,6 +1201,8 @@ clear_proceed_status_thread (struct thre
/* Discard any remaining commands or status from previous stop. */
@ -606,6 +622,24 @@ Index: gdb-6.8.50.20081214/gdb/infrun.c
}
static int
--- ./gdb/target.c 2009-02-10 23:45:59.000000000 +0100
+++ ./gdb/target.c 2009-02-10 23:43:29.000000000 +0100
@@ -41,6 +41,7 @@
#include "target-descriptions.h"
#include "gdbthread.h"
#include "solib.h"
+#include "inline-frame.h"
static void target_info (char *, int);
@@ -1938,6 +1939,7 @@ target_pid_to_str (ptid_t ptid)
void
target_resume (ptid_t ptid, int step, enum target_signal signal)
{
+ clear_inline_frame_state (ptid);
dcache_invalidate (target_dcache);
(*current_target.to_resume) (ptid, step, signal);
set_executing (ptid, 1);
Index: gdb-6.8.50.20081214/gdb/inline-frame.h
===================================================================
--- gdb-6.8.50.20081214.orig/gdb/inline-frame.h 2009-02-09 13:28:48.000000000 +0100
@ -621,3 +655,23 @@ Index: gdb-6.8.50.20081214/gdb/inline-frame.h
/* Return the number of hidden functions inlined into the current
frame. */
--- gdb-6.8.50.20090209/gdb/infcall.c 2009-02-10 00:16:10.000000000 +0100
+++ gdb-6.8.50.20090209/gdb/infcall.c-removed 2009-02-10 00:15:58.000000000 +0100
@@ -841,8 +841,15 @@ When the function is done executing, GDB
if (unwind_on_signal_p)
{
- /* The user wants the context restored. Calling error will
- run inf_status_cleanup, which does all the work. */
+ /* The user wants the context restored. */
+
+ /* We must get back to the frame we were before the
+ dummy call. */
+ dummy_frame_pop (dummy_id);
+
+ /* We also need to restore inferior status to that before the
+ dummy call. */
+ restore_inferior_status (inf_status);
/* FIXME: Insert a bunch of wrap_here; name can be very
long if it's a C++ name with arguments and stuff. */

File diff suppressed because it is too large Load Diff

View File

@ -1,56 +0,0 @@
http://sourceware.org/ml/gdb-patches/2008-12/msg00155.html
2008-12-08 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.fortran/subarray.exp: Expect also the strings type output.
* gdb.fortran/derived-type.exp: Likewise. Expect also the kind=X types.
Update for the f-valprint.c modification from 2008-04-22.
--- ./gdb/testsuite/gdb.fortran/derived-type.exp 1 Jan 2008 22:53:19 -0000 1.6
+++ ./gdb/testsuite/gdb.fortran/derived-type.exp 8 Dec 2008 18:04:34 -0000
@@ -42,23 +42,22 @@ if ![runto MAIN__] then {
}
gdb_test "ptype p" \
- "type = Type bar.*int4.*\:\: c.*real.*\:\: d.*End Type bar" \
+ "type = Type bar.*int.*\:\: c.*real.*\:\: d.*End Type bar" \
"ptype p"
gdb_test "ptype q" \
- "type = Type foo.*real.*\:\: a.*Type bar.*int4.*\:\: c.*real.*\:\: d.*End Type bar \:\: x.*character.*\\(7\\) \:\: b.*End Type foo" \
+ "type = Type foo.*real.*\:\: *a.*Type bar.*int.*\:\: *c.*real.*\:\: *d.*End Type bar \:\: *x.*character.*7.* \:\: *b.*End Type foo" \
"type-printing for derived type"
gdb_breakpoint [gdb_get_line_number "print"]
gdb_continue_to_breakpoint "print"
-gdb_test "print p" "\\$\[0-9\]+ = \\{ 1, 2.375\\}"
+gdb_test "print p" "\\$\[0-9\]+ = \\( 1, 2.375 \\)"
gdb_test "print p%c" "\\$\[0-9\]+ = 1"
gdb_test "print p%d" "\\$\[0-9\]+ = 2.375"
gdb_test "print q%a" "\\$\[0-9\]+ = 3.125"
-gdb_test "print q%b" "\\$\[0-9\]+ = \\(.*a.*b.*c.*d.*e.*f.*g.*\\)"
+gdb_test "print q%b" "\\$\[0-9\]+ = (\\(.*a.*b.*c.*d.*e.*f.*g.*\\)|'abcdefg')"
gdb_test "print q%x%c" "\\$\[0-9\]+ = 1"
gdb_test "print q%x%d" "\\$\[0-9\]+ = 2.375"
gdb_test "print q" \
- "\\$\[0-9\]+ = \\{ 3.125, \\{ 1, 2.375\\}, \\(.*a.*b.*c.*d.*e.*f.*g.*\\)\\}" \
+ "\\$\[0-9\]+ = \\( 3.125, \\( 1, 2.375 \\), (\\(.*a.*b.*c.*d.*e.*f.*g.*\\)|'abcdefg') \\)" \
"print q"
-
--- ./gdb/testsuite/gdb.fortran/subarray.exp 1 Jan 2008 22:53:19 -0000 1.6
+++ ./gdb/testsuite/gdb.fortran/subarray.exp 8 Dec 2008 18:04:34 -0000
@@ -53,10 +53,10 @@ gdb_test "continue" \
# Test four different kinds of subarray expression evaluation.
-gdb_test "print str(2:4)" ".*1 = \\(98 'b', 99 'c', 100 'd'\\).*" "print str(2:4)"
-gdb_test "print str(:3)" ".*2 = \\(97 'a', 98 'b', 99 'c'\\).*" "print str(:3)"
-gdb_test "print str(5:)" ".*3 = \\(101 'e', 102 'f', 103 'g'\\).*" "print str(5:)"
-gdb_test "print str(:)" ".*4 = \\(97 'a', 98 'b', 99 'c', 100 'd', 101 'e', 102 'f', 103 'g'\\).*" "print str(:)"
+gdb_test "print str(2:4)" ".*1 = (\\(98 'b', 99 'c', 100 'd'\\)|'bcd').*" "print str(2:4)"
+gdb_test "print str(:3)" ".*2 = (\\(97 'a', 98 'b', 99 'c'\\)|'abc').*" "print str(:3)"
+gdb_test "print str(5:)" ".*3 = (\\(101 'e', 102 'f', 103 'g'\\)|'efg').*" "print str(5:)"
+gdb_test "print str(:)" ".*4 = (\\(97 'a', 98 'b', 99 'c', 100 'd', 101 'e', 102 'f', 103 'g'\\)|'abcdefg').*" "print str(:)"
gdb_test "print array(2:4)" ".*5 = \\(2, 3, 4\\).*" "print array(2:4)"
gdb_test "print array(:3)" ".*6 = \\(1, 2, 3\\).*" "print array(:3)"

View File

@ -1,136 +0,0 @@
2008-12-07 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix hw watchpoints created before the inferior was started.
* breakpoint.c (update_watchpoint): Convert the bp_watchpoint and
bp_hardware_watchpoint types according to the current runtime state.
(insert_breakpoints): Call update_watchpoint even for `bp_watchpoint's.
2008-12-07 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.base/watchpoint-hw.exp, gdb.base/watchpoint-hw.c: New.
--- ./gdb/breakpoint.c 7 Dec 2008 15:59:51 -0000 1.364
+++ ./gdb/breakpoint.c 7 Dec 2008 21:20:54 -0000
@@ -892,6 +892,28 @@ update_watchpoint (struct breakpoint *b,
b->val_valid = 1;
}
+ /* Change the type of breakpoint between hardware assisted or an
+ ordinary watchpoint depending on the hardware support and free
+ hardware slots. */
+ if (b->type == bp_watchpoint || b->type == bp_hardware_watchpoint)
+ {
+ int i, mem_cnt, target_resources_ok, other_type_used;
+
+ i = hw_watchpoint_used_count (bp_hardware_watchpoint,
+ &other_type_used);
+ mem_cnt = can_use_hardware_watchpoint (val_chain);
+
+ /* Hack around 'unused var' error for some targets here. */
+ (void) i;
+ if (mem_cnt)
+ target_resources_ok = TARGET_CAN_USE_HARDWARE_WATCHPOINT
+ (bp_hardware_watchpoint, i + mem_cnt, other_type_used);
+ if (!mem_cnt || target_resources_ok <= 0)
+ b->type = bp_watchpoint;
+ else
+ b->type = bp_hardware_watchpoint;
+ }
+
/* Look at each value on the value chain. */
for (v = val_chain; v; v = next)
{
@@ -1204,8 +1226,9 @@ insert_breakpoints (void)
{
struct breakpoint *bpt;
+ /* Software watchpoint may get converted to hardware ones. */
ALL_BREAKPOINTS (bpt)
- if (is_hardware_watchpoint (bpt))
+ if (is_hardware_watchpoint (bpt) || bpt->type == bp_watchpoint)
update_watchpoint (bpt, 0 /* don't reparse. */);
update_global_location_list (1);
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ./gdb/testsuite/gdb.base/watchpoint-hw.c 7 Dec 2008 21:20:56 -0000
@@ -0,0 +1,27 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2008 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/>.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@prep.ai.mit.edu */
+
+int watchee;
+
+int
+main (void)
+{
+ return 0;
+}
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ./gdb/testsuite/gdb.base/watchpoint-hw.exp 7 Dec 2008 21:20:56 -0000
@@ -0,0 +1,50 @@
+# Copyright 2008 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/>.
+
+if {![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"] && ![istarget "ia64-*-*"]
+ && ![istarget "s390*-*-*"]} then {
+ verbose "Skipping watchpoint-hw test."
+ return
+}
+
+set testfile watchpoint-hw
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
+ untested "Couldn't compile test program"
+ return -1
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+# Create the watchpoint before the inferior gets started. Now the native CPU
+# target is still not active and its `to_can_use_hw_breakpoint' is not
+# installed, therefore only a software watchpoint gets created.
+
+gdb_test "watch watchee" "atchpoint 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"
+
+# Check it is really a `hw'-watchpoint.
+gdb_test "info watchpoints" "1 *hw watchpoint .* watchee"

View File

@ -9,11 +9,11 @@ Name: gdb%{?_with_debug:-debug}
# Set version to contents of gdb/version.in.
# NOTE: the FSF gdb versions are numbered N.M for official releases, like 6.3
# and, since January 2005, X.Y.Z.date for daily snapshots, like 6.3.50.20050112 # (daily snapshot from mailine), or 6.3.0.20040112 (head of the release branch).
Version: 6.8.50.20081214
Version: 6.8.50.20090209
# 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: 2%{?_with_upstream:.upstream}%{?dist}
Release: 1%{?_with_upstream:.upstream}%{?dist}
License: GPLv3+
Group: Development/Debuggers
@ -125,9 +125,6 @@ Patch142: gdb-6.3-terminal-fix-20050214.patch
# Test sibling threads to set threaded watchpoints for x86 and x86-64
Patch145: gdb-6.3-threaded-watchpoints2-20050225.patch
# Fix unexpected compiler warning messages.
Patch147: gdb-6.3-warnings-20050317.patch
# Fix printing of inherited members
Patch148: gdb-6.3-inheritance-20050324.patch
@ -377,12 +374,6 @@ Patch343: gdb-6.8-watchpoint-conditionals-test.patch
# Fix resolving of variables at locations lists in prelinked libs (BZ 466901).
Patch348: gdb-6.8-bz466901-backtrace-full-prelinked.patch
# Enable hardware watchpoints if created before starting inferior.
Patch349: gdb-watchpoint-hw-without-inferior.patch
# Fix upstream testsuite regression + make Fortran tests gfortran compatible.
Patch351: gdb-fortran-testsuite-gfortran.patch
BuildRequires: ncurses-devel texinfo gettext flex bison expat-devel
Requires: readline
BuildRequires: readline-devel
@ -484,7 +475,6 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
%patch259 -p1
%patch142 -p1
%patch145 -p1
%patch147 -p1
%patch148 -p1
%patch150 -p1
%patch151 -p1
@ -569,8 +559,6 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
%patch337 -p1
%patch343 -p1
%patch348 -p1
%patch349 -p1
%patch351 -p1
%patch124 -p1
find -name "*.orig" | xargs rm -f
@ -834,6 +822,9 @@ fi
%endif
%changelog
* Wed Feb 11 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8.50.20090209-1
- Upgrade to the FSF GDB gdb-6.8.50 snapshot.
* Mon Feb 9 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8.50.20081214-2
- Fix crash / implement `finish' into inlined functions (BZ 479781).
- Drop the gdb.threads/attach-into-signal.exp change as obsolete.

View File

@ -1 +1 @@
92a6d781eafdf1412c4516f1bdd979bb gdb-6.8.50.20081214.tar.bz2
9fba745cff7bbcea11795ee45b362f06 gdb-6.8.50.20090209.tar.bz2