- Upgrade to GDB 6.6. Drop redundant patches, forward-port remaining ones.

- Backported post gdb-6.6 release ia64 unwinding fixups.
- Testcase for exec() from threaded program (BZ 202689).
- Resolves: rhbz#221125
- Related: rhbz#202689
This commit is contained in:
Jan Kratochvil 2007-01-21 01:53:01 +00:00
parent 376c4280d4
commit aefb0e1e23
19 changed files with 782 additions and 1463 deletions

View File

@ -1 +1 @@
gdb-6.5.tar.bz2
gdb-6.6.tar.bz2

View File

@ -0,0 +1,98 @@
2007-01-17 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.threads/threaded-exec.exp, gdb.threads/threaded-exec.c: New files.
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ./gdb/testsuite/gdb.threads/threaded-exec.c 17 Jan 2007 23:10:22 -0000
@@ -0,0 +1,46 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include <stddef.h>
+#include <pthread.h>
+#include <assert.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+
+static void *
+threader (void *arg)
+{
+ return NULL;
+}
+
+int
+main (void)
+{
+ pthread_t t1;
+ int i;
+
+ i = pthread_create (&t1, NULL, threader, (void *) NULL);
+ assert (i == 0);
+ i = pthread_join (t1, NULL);
+ assert (i == 0);
+
+ execl ("/bin/true", "/bin/true", NULL);
+ abort ();
+}
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ./gdb/testsuite/gdb.threads/threaded-exec.exp 17 Jan 2007 23:10:22 -0000
@@ -0,0 +1,41 @@
+# threaded-exec.exp -- Check reset of the tracked threads on exec*(2)
+# Copyright (C) 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-gdb@prep.ai.mit.edu
+
+set testfile threaded-exec
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+
+if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable []] != "" } {
+ return -1
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+
+gdb_load ${binfile}
+
+gdb_run_cmd
+
+gdb_test_multiple {} "Program exited" {
+ -re "\r\nProgram exited normally.\r\n$gdb_prompt $" {
+ pass "Program exited"
+ }
+}

View File

@ -1,19 +1,19 @@
Index: gdb-6.5/gdb/gcore.c
Index: gdb-6.6/gdb/gcore.c
===================================================================
--- gdb-6.5.orig/gdb/gcore.c 2005-12-17 20:33:59.000000000 -0200
+++ gdb-6.5/gdb/gcore.c 2006-07-07 02:41:33.000000000 -0300
@@ -462,8 +462,13 @@ gcore_copy_callback (bfd *obfd, asection
error (_("Not enough memory to create corefile."));
old_chain = make_cleanup (xfree, memhunk);
--- gdb-6.6.orig/gdb/gcore.c
+++ gdb-6.6/gdb/gcore.c
@@ -475,8 +475,13 @@ gcore_copy_callback (bfd *obfd, asection
if (size > total_size)
size = total_size;
+ /* Warn if read error occurs except if we were trying to read the
+ first page for ia64. The first page is marked readable, but it cannot
+ be read. */
if (target_read_memory (bfd_section_vma (obfd, osec),
- memhunk, size) != 0)
+ memhunk, size) != 0
+ && (strcmp (TARGET_ARCHITECTURE->arch_name, "ia64")
+ || bfd_section_vma (obfd, osec) != 0))
warning (_("Memory read failed for corefile section, %s bytes at 0x%s."),
paddr_d (size), paddr (bfd_section_vma (obfd, osec)));
if (!bfd_set_section_contents (obfd, osec, memhunk, 0, size))
+ /* Warn if read error occurs except if we were trying to read the
+ first page for ia64. The first page is marked readable, but it cannot
+ be read. */
if (target_read_memory (bfd_section_vma (obfd, osec) + offset,
- memhunk, size) != 0)
+ memhunk, size) != 0
+ && (strcmp (TARGET_ARCHITECTURE->arch_name, "ia64")
+ || bfd_section_vma (obfd, osec) != 0))
{
warning (_("Memory read failed for corefile section, %s bytes at 0x%s."),
paddr_d (size), paddr (bfd_section_vma (obfd, osec)));

View File

@ -12,10 +12,10 @@ gdb/testsuite:
* gdb.arch/ia64-sigill.c: New test.
* gdb.arch/ia64-sigill.exp: Ditto.
Index: gdb-6.5/gdb/testsuite/gdb.arch/ia64-sigill.exp
Index: gdb-6.6/gdb/testsuite/gdb.arch/ia64-sigill.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.5/gdb/testsuite/gdb.arch/ia64-sigill.exp 2006-07-07 03:16:54.000000000 -0300
--- /dev/null
+++ gdb-6.6/gdb/testsuite/gdb.arch/ia64-sigill.exp
@@ -0,0 +1,59 @@
+# Copyright 2005 Free Software Foundation, Inc.
+
@ -76,10 +76,10 @@ Index: gdb-6.5/gdb/testsuite/gdb.arch/ia64-sigill.exp
+gdb_test "handle SIGILL nostop noprint" "SIGILL.*No.*No.*Yes.*" "handle sigill"
+gdb_test "run" "Starting program.*ia64-sigill.*\[New thread.*\].*hello world.*Program exited normally." "run to exit"
+
Index: gdb-6.5/gdb/testsuite/gdb.arch/ia64-sigill.c
Index: gdb-6.6/gdb/testsuite/gdb.arch/ia64-sigill.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.5/gdb/testsuite/gdb.arch/ia64-sigill.c 2006-07-07 03:16:54.000000000 -0300
--- /dev/null
+++ gdb-6.6/gdb/testsuite/gdb.arch/ia64-sigill.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+
@ -89,25 +89,11 @@ Index: gdb-6.5/gdb/testsuite/gdb.arch/ia64-sigill.c
+ return 0;
+}
+
Index: gdb-6.5/gdb/linux-thread-db.c
Index: gdb-6.6/gdb/linux-nat.c
===================================================================
--- gdb-6.5.orig/gdb/linux-thread-db.c 2006-07-07 01:06:36.000000000 -0300
+++ gdb-6.5/gdb/linux-thread-db.c 2006-07-07 03:16:54.000000000 -0300
@@ -926,7 +926,8 @@ thread_db_wait (ptid_t ptid, struct targ
post-processing and bail out early. */
return ptid;
- if (ourstatus->kind == TARGET_WAITKIND_EXITED)
+ if (ourstatus->kind == TARGET_WAITKIND_EXITED
+ || ourstatus->kind == TARGET_WAITKIND_SIGNALLED)
return pid_to_ptid (-1);
if (ourstatus->kind == TARGET_WAITKIND_STOPPED
Index: gdb-6.5/gdb/linux-nat.c
===================================================================
--- gdb-6.5.orig/gdb/linux-nat.c 2006-07-07 03:03:55.000000000 -0300
+++ gdb-6.5/gdb/linux-nat.c 2006-07-07 03:16:54.000000000 -0300
@@ -2209,7 +2209,8 @@ retry:
--- gdb-6.6.orig/gdb/linux-nat.c
+++ gdb-6.6/gdb/linux-nat.c
@@ -2241,7 +2241,8 @@ retry:
threads can be a bit time-consuming so if we want decent
performance with heavily multi-threaded programs, especially when
they're using a high frequency timer, we'd better avoid it if we
@ -117,7 +103,7 @@ Index: gdb-6.5/gdb/linux-nat.c
if (WIFSTOPPED (status))
{
@@ -2220,7 +2221,9 @@ retry:
@@ -2252,7 +2253,9 @@ retry:
if (!lp->step
&& signal_stop_state (signo) == 0
&& signal_print_state (signo) == 0

View File

@ -21,10 +21,10 @@
* remote.h: Ditto.
* dcache.h: Ditto.
Index: gdb-6.5/gdb/symfile-mem.c
Index: gdb-6.6/gdb/symfile-mem.c
===================================================================
--- gdb-6.5.orig/gdb/symfile-mem.c 2006-07-11 02:35:34.000000000 -0300
+++ gdb-6.5/gdb/symfile-mem.c 2006-07-11 02:35:49.000000000 -0300
--- gdb-6.6.orig/gdb/symfile-mem.c 2007-01-20 16:09:05.000000000 +0100
+++ gdb-6.6/gdb/symfile-mem.c 2007-01-20 16:09:17.000000000 +0100
@@ -58,6 +58,14 @@
#include "elf/common.h"
@ -49,131 +49,56 @@ Index: gdb-6.5/gdb/symfile-mem.c
if (nbfd == NULL)
error (_("Failed to read a valid object file image from memory."));
Index: gdb-6.5/gdb/target.c
Index: gdb-6.6/gdb/target.c
===================================================================
--- gdb-6.5.orig/gdb/target.c 2006-07-11 02:35:49.000000000 -0300
+++ gdb-6.5/gdb/target.c 2006-07-11 02:35:49.000000000 -0300
@@ -83,8 +83,8 @@ static LONGEST default_xfer_partial (str
partial transfers, try either target_read_memory_partial or
target_write_memory_partial). */
--- gdb-6.6.orig/gdb/target.c 2007-01-20 16:09:12.000000000 +0100
+++ gdb-6.6/gdb/target.c 2007-01-20 16:09:17.000000000 +0100
@@ -56,7 +56,7 @@ static int nosymbol (char *, CORE_ADDR *
-static int target_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len,
- int write);
+static int target_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr,
+ LONGEST len, int write);
static void tcomplain (void) ATTR_NORETURN;
static void init_dummy_target (void);
-static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *);
+static LONGEST nomemory (CORE_ADDR, char *, int, int, struct target_ops *);
@@ -511,8 +511,8 @@ update_current_target (void)
de_fault (to_prepare_to_store,
(void (*) (void))
static int return_zero (void);
@@ -284,7 +284,7 @@ target_mourn_inferior (void)
observer_notify_mourn_inferior (&current_target);
}
-static int
+static LONGEST
nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write,
struct target_ops *t)
{
@@ -517,7 +517,7 @@ update_current_target (void)
(void (*) (void))
noprocess);
- de_fault (deprecated_xfer_memory,
- (int (*) (CORE_ADDR, gdb_byte *, int, int, struct mem_attrib *, struct target_ops *))
+ de_fault (deprecated_xfer_memory,
de_fault (deprecated_xfer_memory,
- (int (*) (CORE_ADDR, gdb_byte *, int, int, struct mem_attrib *, struct target_ops *))
+ (LONGEST (*) (CORE_ADDR, gdb_byte *, LONGEST, int, struct mem_attrib *, struct target_ops *))
nomemory);
de_fault (to_files_info,
(void (*) (struct target_ops *))
@@ -940,7 +940,7 @@ target_xfer_partial (struct target_ops *
implementing another singluar mechanism (for instance, a generic
object:annex onto inferior:object:annex say). */
-static LONGEST
+static int
xfer_using_stratum (enum target_object object, const char *annex,
ULONGEST offset, LONGEST len, void *readbuf,
const void *writebuf)
@@ -1005,7 +1005,7 @@ xfer_using_stratum (enum target_object o
deal with partial reads should call target_read_memory_partial. */
de_fault (to_files_info,
(void (*) (struct target_ops *))
@@ -1178,7 +1178,7 @@ target_xfer_partial (struct target_ops *
it makes no progress, and then return how much was transferred). */
int
-target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
+target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, LONGEST len)
{
if (target_xfer_partial_p ())
return xfer_using_stratum (TARGET_OBJECT_MEMORY, NULL,
@@ -1015,7 +1015,7 @@ target_read_memory (CORE_ADDR memaddr, g
if (target_read (&current_target, TARGET_OBJECT_MEMORY, NULL,
myaddr, memaddr, len) == len)
@@ -1188,7 +1188,7 @@ target_read_memory (CORE_ADDR memaddr, g
}
int
-target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len)
+target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, LONGEST len)
{
gdb_byte *bytes = alloca (len);
memcpy (bytes, myaddr, len);
@@ -1056,11 +1056,11 @@ Mode for reading from readonly sections
Result is -1 on error, or the number of bytes transfered. */
-int
-do_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write,
+LONGEST
+do_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, LONGEST len, int write,
struct mem_attrib *attrib)
{
- int res;
+ LONGEST res;
int done = 0;
struct target_ops *t;
@@ -1118,10 +1118,11 @@ do_xfer_memory (CORE_ADDR memaddr, gdb_b
Result is 0 or errno value. */
static int
-target_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write)
+target_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr,
+ LONGEST len, int write)
{
- int res;
- int reg_len;
+ LONGEST res;
+ LONGEST reg_len;
struct mem_region *region;
/* Zero length requests are ok and require no work. */
@@ -1192,12 +1193,12 @@ target_xfer_memory (CORE_ADDR memaddr, g
If we succeed, set *ERR to zero and return the number of bytes transferred.
If we fail, set *ERR to a non-zero errno value, and return -1. */
-static int
-target_xfer_memory_partial (CORE_ADDR memaddr, gdb_byte *myaddr, int len,
+static LONGEST
+target_xfer_memory_partial (CORE_ADDR memaddr, gdb_byte *myaddr, LONGEST len,
int write_p, int *err)
{
- int res;
- int reg_len;
+ LONGEST res;
+ LONGEST reg_len;
struct mem_region *region;
/* Zero length requests are ok and require no work. */
@@ -1256,9 +1257,9 @@ target_xfer_memory_partial (CORE_ADDR me
return res;
}
-int
+LONGEST
target_read_memory_partial (CORE_ADDR memaddr, gdb_byte *buf,
- int len, int *err)
+ LONGEST len, int *err)
{
if (target_xfer_partial_p ())
{
@@ -1285,9 +1286,9 @@ target_read_memory_partial (CORE_ADDR me
return target_xfer_memory_partial (memaddr, buf, len, 0, err);
}
-int
+LONGEST
target_write_memory_partial (CORE_ADDR memaddr, gdb_byte *buf,
- int len, int *err)
+ LONGEST len, int *err)
{
if (target_xfer_partial_p ())
{
@@ -2044,8 +2045,8 @@ debug_to_prepare_to_store (void)
if (target_write (&current_target, TARGET_OBJECT_MEMORY, NULL,
myaddr, memaddr, len) == len)
@@ -2186,8 +2186,8 @@ debug_to_prepare_to_store (void)
fprintf_unfiltered (gdb_stdlog, "target_prepare_to_store ()\n");
}
@ -184,7 +109,7 @@ Index: gdb-6.5/gdb/target.c
int write, struct mem_attrib *attrib,
struct target_ops *target)
{
@@ -2055,9 +2056,9 @@ deprecated_debug_xfer_memory (CORE_ADDR
@@ -2197,9 +2197,9 @@ deprecated_debug_xfer_memory (CORE_ADDR
attrib, target);
fprintf_unfiltered (gdb_stdlog,
@ -196,11 +121,11 @@ Index: gdb-6.5/gdb/target.c
if (retval > 0)
{
Index: gdb-6.5/gdb/target.h
Index: gdb-6.6/gdb/target.h
===================================================================
--- gdb-6.5.orig/gdb/target.h 2006-07-11 02:35:48.000000000 -0300
+++ gdb-6.5/gdb/target.h 2006-07-11 02:35:49.000000000 -0300
@@ -332,10 +332,10 @@ struct target_ops
--- gdb-6.6.orig/gdb/target.h 2007-01-20 16:09:10.000000000 +0100
+++ gdb-6.6/gdb/target.h 2007-01-20 16:09:17.000000000 +0100
@@ -347,10 +347,10 @@ struct target_ops
NOTE: cagney/2004-10-01: This has been entirely superseeded by
to_xfer_partial and inferior inheritance. */
@ -215,15 +140,7 @@ Index: gdb-6.5/gdb/target.h
void (*to_files_info) (struct target_ops *);
int (*to_insert_breakpoint) (struct bp_target_info *);
@@ -535,21 +535,23 @@ extern void target_disconnect (char *, i
extern DCACHE *target_dcache;
-extern int do_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len,
- int write, struct mem_attrib *attrib);
+extern LONGEST do_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr,
+ LONGEST len, int write,
+ struct mem_attrib *attrib);
@@ -605,16 +605,17 @@ extern DCACHE *target_dcache;
extern int target_read_string (CORE_ADDR, char **, int, int *);
@ -245,29 +162,13 @@ Index: gdb-6.5/gdb/target.h
+extern LONGEST child_xfer_memory (CORE_ADDR, gdb_byte *, LONGEST, int,
+ struct mem_attrib *, struct target_ops *);
/* Make a single attempt at transfering LEN bytes. On a successful
transfer, the number of bytes actually transfered is returned and
@@ -557,11 +559,11 @@ extern int child_xfer_memory (CORE_ADDR,
of bytes actually transfered is not defined) and ERR is set to a
non-zero error indication. */
-extern int target_read_memory_partial (CORE_ADDR addr, gdb_byte *buf,
- int len, int *err);
+extern LONGEST target_read_memory_partial (CORE_ADDR addr, gdb_byte *buf,
+ LONGEST len, int *err);
-extern int target_write_memory_partial (CORE_ADDR addr, gdb_byte *buf,
- int len, int *err);
+extern LONGEST target_write_memory_partial (CORE_ADDR addr, gdb_byte *buf,
+ LONGEST len, int *err);
extern char *child_pid_to_exec_file (int);
Index: gdb-6.5/gdb/infptrace.c
/* Fetches the target's memory map. If one is found it is sorted
and returned, after some consistency checking. Otherwise, NULL
Index: gdb-6.6/gdb/infptrace.c
===================================================================
--- gdb-6.5.orig/gdb/infptrace.c 2006-07-11 02:35:49.000000000 -0300
+++ gdb-6.5/gdb/infptrace.c 2006-07-11 02:35:49.000000000 -0300
@@ -368,17 +368,17 @@ store_inferior_registers (int regnum)
--- gdb-6.6.orig/gdb/infptrace.c 2005-12-17 23:34:01.000000000 +0100
+++ gdb-6.6/gdb/infptrace.c 2007-01-20 16:09:17.000000000 +0100
@@ -331,17 +331,17 @@ store_inferior_registers (int regnum)
deprecated_child_ops doesn't allow memory operations to cross below
us in the target stack anyway. */
@ -291,11 +192,11 @@ Index: gdb-6.5/gdb/infptrace.c
PTRACE_TYPE_RET *buffer;
struct cleanup *old_chain = NULL;
Index: gdb-6.5/gdb/dcache.c
Index: gdb-6.6/gdb/dcache.c
===================================================================
--- gdb-6.5.orig/gdb/dcache.c 2006-07-11 02:35:34.000000000 -0300
+++ gdb-6.5/gdb/dcache.c 2006-07-11 02:35:49.000000000 -0300
@@ -527,9 +527,9 @@ dcache_free (DCACHE *dcache)
--- gdb-6.6.orig/gdb/dcache.c 2006-08-15 20:46:24.000000000 +0200
+++ gdb-6.6/gdb/dcache.c 2007-01-20 16:09:17.000000000 +0100
@@ -519,9 +519,9 @@ dcache_free (DCACHE *dcache)
This routine is indended to be called by remote_xfer_ functions. */
@ -307,10 +208,10 @@ Index: gdb-6.5/gdb/dcache.c
{
int i;
int (*xfunc) (DCACHE *dcache, CORE_ADDR addr, gdb_byte *ptr);
Index: gdb-6.5/gdb/dcache.h
Index: gdb-6.6/gdb/dcache.h
===================================================================
--- gdb-6.5.orig/gdb/dcache.h 2006-07-11 02:35:34.000000000 -0300
+++ gdb-6.5/gdb/dcache.h 2006-07-11 02:35:49.000000000 -0300
--- gdb-6.6.orig/gdb/dcache.h 2005-12-17 23:33:59.000000000 +0100
+++ gdb-6.6/gdb/dcache.h 2007-01-20 16:09:17.000000000 +0100
@@ -37,7 +37,7 @@ void dcache_free (DCACHE *);
/* Simple to call from <remote>_xfer_memory */
@ -321,11 +222,11 @@ Index: gdb-6.5/gdb/dcache.h
+ LONGEST len, int should_write);
#endif /* DCACHE_H */
Index: gdb-6.5/gdb/exec.c
Index: gdb-6.6/gdb/exec.c
===================================================================
--- gdb-6.5.orig/gdb/exec.c 2006-07-11 02:35:34.000000000 -0300
+++ gdb-6.5/gdb/exec.c 2006-07-11 02:35:49.000000000 -0300
@@ -447,8 +447,8 @@ map_vmap (bfd *abfd, bfd *arch)
--- gdb-6.6.orig/gdb/exec.c 2006-11-10 20:20:35.000000000 +0100
+++ gdb-6.6/gdb/exec.c 2007-01-20 16:09:17.000000000 +0100
@@ -452,8 +452,8 @@ map_vmap (bfd *abfd, bfd *arch)
The same routine is used to handle both core and exec files;
we just tail-call it with more arguments to select between them. */
@ -336,11 +237,11 @@ Index: gdb-6.5/gdb/exec.c
struct mem_attrib *attrib, struct target_ops *target)
{
int res;
Index: gdb-6.5/gdb/linux-nat.c
Index: gdb-6.6/gdb/linux-nat.c
===================================================================
--- gdb-6.5.orig/gdb/linux-nat.c 2006-07-11 02:35:49.000000000 -0300
+++ gdb-6.5/gdb/linux-nat.c 2006-07-11 02:36:39.000000000 -0300
@@ -3264,7 +3264,7 @@ linux_xfer_partial (struct target_ops *o
--- gdb-6.6.orig/gdb/linux-nat.c 2007-01-20 16:09:14.000000000 +0100
+++ gdb-6.6/gdb/linux-nat.c 2007-01-20 16:09:17.000000000 +0100
@@ -3266,7 +3266,7 @@ linux_xfer_partial (struct target_ops *o
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. */
@ -349,10 +250,10 @@ Index: gdb-6.5/gdb/linux-nat.c
/* Re-read register stack area. */
xxfer = super_xfer_partial (ops, object, annex,
Index: gdb-6.5/gdb/remote.c
Index: gdb-6.6/gdb/remote.c
===================================================================
--- gdb-6.5.orig/gdb/remote.c 2006-07-11 02:35:48.000000000 -0300
+++ gdb-6.5/gdb/remote.c 2006-07-11 02:37:02.000000000 -0300
--- gdb-6.6.orig/gdb/remote.c 2007-01-20 16:09:12.000000000 +0100
+++ gdb-6.6/gdb/remote.c 2007-01-20 16:09:17.000000000 +0100
@@ -27,6 +27,7 @@
#include "gdb_string.h"
#include <ctype.h>
@ -361,7 +262,7 @@ Index: gdb-6.5/gdb/remote.c
#include "inferior.h"
#include "bfd.h"
#include "symfile.h"
@@ -3701,19 +3702,27 @@ remote_read_bytes (CORE_ADDR memaddr, gd
@@ -4185,19 +4186,27 @@ remote_read_bytes (CORE_ADDR memaddr, gd
if SHOULD_WRITE is nonzero. Returns length of data written or
read; 0 for error. TARGET is unused. */
@ -372,8 +273,6 @@ Index: gdb-6.5/gdb/remote.c
int should_write, struct mem_attrib *attrib,
struct target_ops *target)
{
CORE_ADDR targ_addr;
int targ_len;
int res;
+ int len;
+
@ -384,28 +283,21 @@ Index: gdb-6.5/gdb/remote.c
+
+ len = (int)mem_len;
/* Should this be the selected frame? */
gdbarch_remote_translate_xfer_address (current_gdbarch,
current_regcache,
- mem_addr, mem_len,
+ mem_addr, len,
&targ_addr, &targ_len);
if (targ_len <= 0)
return 0;
@@ -3723,7 +3732,7 @@ remote_xfer_memory (CORE_ADDR mem_addr,
if (should_write)
res = remote_write_bytes (mem_addr, buffer, mem_len);
else
res = remote_read_bytes (targ_addr, buffer, targ_len);
res = remote_read_bytes (mem_addr, buffer, mem_len);
- return res;
+ return (LONGEST)res;
}
static void
Index: gdb-6.5/gdb/remote-sim.c
/* Sends a packet with content determined by the printf format string
Index: gdb-6.6/gdb/remote-sim.c
===================================================================
--- gdb-6.5.orig/gdb/remote-sim.c 2006-07-11 02:35:34.000000000 -0300
+++ gdb-6.5/gdb/remote-sim.c 2006-07-11 02:35:49.000000000 -0300
@@ -742,11 +742,14 @@ gdbsim_prepare_to_store (void)
--- gdb-6.6.orig/gdb/remote-sim.c 2006-11-10 20:20:36.000000000 +0100
+++ gdb-6.6/gdb/remote-sim.c 2007-01-20 16:10:10.000000000 +0100
@@ -745,11 +745,14 @@ gdbsim_prepare_to_store (void)
Returns the number of bytes transferred. */
@ -419,10 +311,10 @@ Index: gdb-6.5/gdb/remote-sim.c
+ /* Convert to len type that sim_read and sim_write can handle. */
+ int xfer_len = (int)len;
+
if (!program_loaded)
error (_("No program loaded."));
@@ -756,22 +759,22 @@ gdbsim_xfer_inferior_memory (CORE_ADDR m
/* If no program is running yet, then ignore the simulator for
memory. Pass the request down to the next target, hopefully
an exec file. */
@@ -765,22 +768,22 @@ gdbsim_xfer_inferior_memory (CORE_ADDR m
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

@ -1,7 +1,7 @@
Index: gdb-6.5/gdb/doc/observer.texi
Index: gdb-6.6/gdb/doc/observer.texi
===================================================================
--- gdb-6.5.orig/gdb/doc/observer.texi 2006-07-07 04:08:37.000000000 -0300
+++ gdb-6.5/gdb/doc/observer.texi 2006-07-07 04:19:00.000000000 -0300
--- gdb-6.6.orig/gdb/doc/observer.texi
+++ gdb-6.6/gdb/doc/observer.texi
@@ -119,6 +119,10 @@ when @value{GDBN} calls this observer, t
haven't been loaded yet.
@end deftypefun
@ -13,11 +13,11 @@ Index: gdb-6.5/gdb/doc/observer.texi
@deftypefun void solib_unloaded (struct so_list *@var{solib})
The shared library specified by @var{solib} has been unloaded.
@end deftypefun
Index: gdb-6.5/gdb/linux-nat.c
Index: gdb-6.6/gdb/linux-nat.c
===================================================================
--- gdb-6.5.orig/gdb/linux-nat.c 2006-07-07 04:00:05.000000000 -0300
+++ gdb-6.5/gdb/linux-nat.c 2006-07-07 04:20:40.000000000 -0300
@@ -802,11 +802,23 @@ iterate_over_lwps (int (*callback) (stru
--- gdb-6.6.orig/gdb/linux-nat.c
+++ gdb-6.6/gdb/linux-nat.c
@@ -803,11 +803,23 @@ iterate_over_lwps (int (*callback) (stru
{
struct lwp_info *lp, *lpnext;
@ -72,19 +72,19 @@ Index: gdb-6.5/gdb/linux-nat.c
/* Save the original signal mask. */
sigprocmask (SIG_SETMASK, NULL, &normal_mask);
Index: gdb-6.5/gdb/target.c
Index: gdb-6.6/gdb/target.c
===================================================================
--- gdb-6.5.orig/gdb/target.c 2006-07-07 03:52:38.000000000 -0300
+++ gdb-6.5/gdb/target.c 2006-07-07 04:19:00.000000000 -0300
@@ -39,6 +39,7 @@
#include "regcache.h"
--- gdb-6.6.orig/gdb/target.c
+++ gdb-6.6/gdb/target.c
@@ -40,6 +40,7 @@
#include "gdb_assert.h"
#include "gdbcore.h"
#include "exceptions.h"
+#include "observer.h"
static void target_info (char *, int);
@@ -267,6 +268,13 @@ target_load (char *arg, int from_tty)
@@ -276,6 +277,13 @@ target_load (char *arg, int from_tty)
(*current_target.to_load) (arg, from_tty);
}
@ -98,11 +98,11 @@ Index: gdb-6.5/gdb/target.c
static int
nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write,
struct target_ops *t)
Index: gdb-6.5/gdb/target.h
Index: gdb-6.6/gdb/target.h
===================================================================
--- gdb-6.5.orig/gdb/target.h 2006-07-07 03:52:40.000000000 -0300
+++ gdb-6.5/gdb/target.h 2006-07-07 04:19:00.000000000 -0300
@@ -783,8 +783,7 @@ int target_follow_fork (int follow_child
--- gdb-6.6.orig/gdb/target.h
+++ gdb-6.6/gdb/target.h
@@ -891,8 +891,7 @@ int target_follow_fork (int follow_child
/* The inferior process has died. Do what is right. */

View File

@ -1,8 +1,8 @@
Index: gdb-6.5/gdb/dwarf2read.c
Index: gdb-6.6/gdb/dwarf2read.c
===================================================================
--- gdb-6.5.orig/gdb/dwarf2read.c 2006-07-11 02:47:11.000000000 -0300
+++ gdb-6.5/gdb/dwarf2read.c 2006-07-11 02:56:58.000000000 -0300
@@ -1208,7 +1208,7 @@ dwarf2_build_psymtabs (struct objfile *o
--- gdb-6.6.orig/gdb/dwarf2read.c
+++ gdb-6.6/gdb/dwarf2read.c
@@ -1219,7 +1219,7 @@ dwarf2_build_psymtabs (struct objfile *o
else
dwarf2_per_objfile->loc_buffer = NULL;
@ -11,11 +11,11 @@ Index: gdb-6.5/gdb/dwarf2read.c
|| (objfile->global_psymbols.size == 0
&& objfile->static_psymbols.size == 0))
{
Index: gdb-6.5/gdb/auxv.c
Index: gdb-6.6/gdb/auxv.c
===================================================================
--- gdb-6.5.orig/gdb/auxv.c 2006-07-11 02:47:06.000000000 -0300
+++ gdb-6.5/gdb/auxv.c 2006-07-11 02:47:11.000000000 -0300
@@ -119,7 +119,7 @@ target_auxv_read (struct target_ops *ops
--- gdb-6.6.orig/gdb/auxv.c
+++ gdb-6.6/gdb/auxv.c
@@ -82,7 +82,7 @@ procfs_xfer_auxv (struct target_ops *ops
Return 1 if an entry was read into *TYPEP and *VALP. */
int
target_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
@ -24,7 +24,7 @@ Index: gdb-6.5/gdb/auxv.c
{
const int sizeof_auxv_field = TYPE_LENGTH (builtin_type_void_data_ptr);
gdb_byte *ptr = *readptr;
@@ -144,9 +144,10 @@ target_auxv_parse (struct target_ops *op
@@ -107,9 +107,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
@ -35,9 +35,9 @@ Index: gdb-6.5/gdb/auxv.c
+ CORE_ADDR val;
+ ULONGEST at_type;
gdb_byte *data;
int n = target_auxv_read (ops, &data);
LONGEST n = target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL, &data);
gdb_byte *ptr = data;
@@ -156,10 +157,10 @@ target_auxv_search (struct target_ops *o
@@ -119,10 +120,10 @@ target_auxv_search (struct target_ops *o
return n;
while (1)
@ -50,7 +50,7 @@ Index: gdb-6.5/gdb/auxv.c
{
xfree (data);
*valp = val;
@@ -182,7 +183,8 @@ target_auxv_search (struct target_ops *o
@@ -145,7 +146,8 @@ target_auxv_search (struct target_ops *o
int
fprint_target_auxv (struct ui_file *file, struct target_ops *ops)
{
@ -58,9 +58,9 @@ Index: gdb-6.5/gdb/auxv.c
+ CORE_ADDR val;
+ ULONGEST at_type;
gdb_byte *data;
int len = target_auxv_read (ops, &data);
gdb_byte *ptr = data;
@@ -191,14 +193,14 @@ fprint_target_auxv (struct ui_file *file
LONGEST len = target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL,
&data);
@@ -155,14 +157,14 @@ fprint_target_auxv (struct ui_file *file
if (len <= 0)
return len;
@ -77,7 +77,7 @@ Index: gdb-6.5/gdb/auxv.c
{
#define TAG(tag, text, kind) \
case tag: name = #tag; description = text; flavor = kind; break
@@ -249,7 +251,7 @@ fprint_target_auxv (struct ui_file *file
@@ -213,7 +215,7 @@ fprint_target_auxv (struct ui_file *file
}
fprintf_filtered (file, "%-4s %-20s %-30s ",
@ -86,11 +86,11 @@ Index: gdb-6.5/gdb/auxv.c
switch (flavor)
{
case dec:
Index: gdb-6.5/gdb/auxv.h
Index: gdb-6.6/gdb/auxv.h
===================================================================
--- gdb-6.5.orig/gdb/auxv.h 2006-07-11 02:47:06.000000000 -0300
+++ gdb-6.5/gdb/auxv.h 2006-07-11 02:47:11.000000000 -0300
@@ -43,14 +43,14 @@ extern LONGEST target_auxv_read (struct
--- gdb-6.6.orig/gdb/auxv.h
+++ gdb-6.6/gdb/auxv.h
@@ -37,14 +37,14 @@ struct target_ops; /* Forward declarati
Return 1 if an entry was read into *TYPEP and *VALP. */
extern int target_auxv_parse (struct target_ops *ops,
gdb_byte **readptr, gdb_byte *endptr,
@ -107,10 +107,10 @@ Index: gdb-6.5/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.5/gdb/breakpoint.h
Index: gdb-6.6/gdb/breakpoint.h
===================================================================
--- gdb-6.5.orig/gdb/breakpoint.h 2006-07-11 02:47:06.000000000 -0300
+++ gdb-6.5/gdb/breakpoint.h 2006-07-11 02:47:11.000000000 -0300
--- gdb-6.6.orig/gdb/breakpoint.h
+++ gdb-6.6/gdb/breakpoint.h
@@ -159,6 +159,7 @@ enum enable_state
automatically enabled and reset when the call
"lands" (either completes, or stops at another
@ -132,10 +132,10 @@ Index: gdb-6.5/gdb/breakpoint.h
extern void create_solib_load_event_breakpoint (char *, int, char *, char *);
extern void create_solib_unload_event_breakpoint (char *, int,
Index: gdb-6.5/gdb/symfile-mem.c
Index: gdb-6.6/gdb/symfile-mem.c
===================================================================
--- gdb-6.5.orig/gdb/symfile-mem.c 2006-07-11 02:47:06.000000000 -0300
+++ gdb-6.5/gdb/symfile-mem.c 2006-07-11 02:56:55.000000000 -0300
--- gdb-6.6.orig/gdb/symfile-mem.c
+++ gdb-6.6/gdb/symfile-mem.c
@@ -110,7 +110,7 @@ symbol_file_add_from_memory (struct bfd
}
@ -145,11 +145,11 @@ Index: gdb-6.5/gdb/symfile-mem.c
/* This might change our ideas about frames already looked at. */
reinit_frame_cache ();
Index: gdb-6.5/gdb/infrun.c
Index: gdb-6.6/gdb/infrun.c
===================================================================
--- gdb-6.5.orig/gdb/infrun.c 2006-07-11 02:47:06.000000000 -0300
+++ gdb-6.5/gdb/infrun.c 2006-07-11 02:56:58.000000000 -0300
@@ -2230,6 +2230,11 @@ process_event_stop_test:
--- gdb-6.6.orig/gdb/infrun.c
+++ gdb-6.6/gdb/infrun.c
@@ -2249,6 +2249,11 @@ process_event_stop_test:
code segments in shared libraries might be mapped in now. */
re_enable_breakpoints_in_shlibs ();
@ -161,11 +161,11 @@ Index: gdb-6.5/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.5/gdb/objfiles.c
Index: gdb-6.6/gdb/objfiles.c
===================================================================
--- gdb-6.5.orig/gdb/objfiles.c 2006-07-11 02:47:06.000000000 -0300
+++ gdb-6.5/gdb/objfiles.c 2006-07-11 02:47:11.000000000 -0300
@@ -47,6 +47,9 @@
--- gdb-6.6.orig/gdb/objfiles.c
+++ gdb-6.6/gdb/objfiles.c
@@ -50,6 +50,9 @@
#include "dictionary.h"
#include "source.h"
@ -175,7 +175,7 @@ Index: gdb-6.5/gdb/objfiles.c
/* Prototypes for local functions */
static void objfile_alloc_data (struct objfile *objfile);
@@ -258,7 +261,19 @@ init_entry_point_info (struct objfile *o
@@ -261,7 +264,19 @@ init_entry_point_info (struct objfile *o
CORE_ADDR
entry_point_address (void)
{
@ -196,10 +196,10 @@ Index: gdb-6.5/gdb/objfiles.c
}
/* Create the terminating entry of OBJFILE's minimal symbol table.
Index: gdb-6.5/gdb/solib-svr4.c
Index: gdb-6.6/gdb/solib-svr4.c
===================================================================
--- gdb-6.5.orig/gdb/solib-svr4.c 2006-07-11 02:47:06.000000000 -0300
+++ gdb-6.5/gdb/solib-svr4.c 2006-07-11 02:47:11.000000000 -0300
--- gdb-6.6.orig/gdb/solib-svr4.c
+++ gdb-6.6/gdb/solib-svr4.c
@@ -34,6 +34,8 @@
#include "gdbcore.h"
#include "target.h"
@ -209,7 +209,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
#include "gdb_assert.h"
@@ -254,7 +256,9 @@ static CORE_ADDR breakpoint_addr; /* Add
@@ -267,7 +269,9 @@ static char *debug_loader_name;
/* Local function prototypes */
@ -219,7 +219,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
static CORE_ADDR bfd_lookup_symbol (bfd *, char *, flagword);
@@ -376,22 +380,79 @@ elf_locate_base (void)
@@ -389,22 +393,79 @@ elf_locate_base (void)
{
struct bfd_section *dyninfo_sect;
int dyninfo_sect_size;
@ -303,7 +303,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
/* Find the DT_DEBUG entry in the the .dynamic section.
For mips elf we look for DT_MIPS_RLD_MAP, mips elf apparently has
@@ -418,6 +479,10 @@ elf_locate_base (void)
@@ -431,6 +492,10 @@ elf_locate_base (void)
{
dyn_ptr = bfd_h_get_32 (exec_bfd,
(bfd_byte *) x_dynp->d_un.d_ptr);
@ -314,7 +314,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
return dyn_ptr;
}
else if (dyn_tag == DT_MIPS_RLD_MAP)
@@ -543,6 +608,10 @@ solib_svr4_r_map (void)
@@ -556,6 +621,10 @@ solib_svr4_r_map (void)
{
struct link_map_offsets *lmo = svr4_fetch_link_map_offsets ();
@ -325,7 +325,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
return read_memory_typed_address (debug_base + lmo->r_map_offset,
builtin_type_void_data_ptr);
}
@@ -669,6 +738,11 @@ svr4_current_sos (void)
@@ -713,6 +782,11 @@ svr4_current_sos (void)
struct so_list **link_ptr = &head;
CORE_ADDR ldsomap = 0;
@ -337,18 +337,18 @@ Index: gdb-6.5/gdb/solib-svr4.c
/* Make sure we've looked up the inferior's dynamic linker's base
structure. */
if (! debug_base)
@@ -678,11 +752,21 @@ svr4_current_sos (void)
@@ -722,11 +796,21 @@ svr4_current_sos (void)
/* If we can't find the dynamic linker's base structure, this
must not be a dynamically linked executable. Hmm. */
if (! debug_base)
- return 0;
+ {
- return svr4_default_sos ();
+ {
+ if (debug_solib)
+ fprintf_unfiltered (gdb_stdlog,
+ "svr4_current_sos: no DT_DEBUG found in %s -- return now\n",
+ exec_bfd->filename);
+ return 0;
+ }
+ return svr4_default_sos ();
+ }
}
/* Walk the inferior's link map list, and build our list of
@ -358,9 +358,9 @@ Index: gdb-6.5/gdb/solib-svr4.c
+ "svr4_current_sos: walk link map in %s\n",
+ exec_bfd->filename);
lm = solib_svr4_r_map ();
while (lm)
{
@@ -697,23 +781,103 @@ svr4_current_sos (void)
@@ -742,23 +826,103 @@ svr4_current_sos (void)
new->lm_info->lm = xzalloc (lmo->link_map_size);
make_cleanup (xfree, new->lm_info->lm);
@ -465,7 +465,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
target_read_string (LM_NAME (new), &buffer,
SO_NAME_MAX_PATH_SIZE - 1, &errcode);
if (errcode != 0)
@@ -721,22 +885,37 @@ svr4_current_sos (void)
@@ -766,22 +930,37 @@ svr4_current_sos (void)
safe_strerror (errcode));
else
{
@ -519,9 +519,9 @@ Index: gdb-6.5/gdb/solib-svr4.c
}
}
@@ -750,6 +929,11 @@ svr4_current_sos (void)
discard_cleanups (old_chain);
}
@@ -798,6 +977,11 @@ svr4_current_sos (void)
if (head == NULL)
return svr4_default_sos ();
+ if (debug_solib)
+ fprintf_unfiltered (gdb_stdlog,
@ -531,7 +531,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
return head;
}
@@ -826,7 +1010,7 @@ svr4_fetch_objfile_link_map (struct objf
@@ -874,7 +1058,7 @@ svr4_fetch_objfile_link_map (struct objf
/* On some systems, the only way to recognize the link map entry for
the main executable file is by looking at its name. Return
non-zero iff SONAME matches one of the known main executable names. */
@ -540,7 +540,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
static int
match_main (char *soname)
{
@@ -840,6 +1024,7 @@ match_main (char *soname)
@@ -888,6 +1072,7 @@ match_main (char *soname)
return (0);
}
@ -548,7 +548,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
/* Return 1 if PC lies in the dynamic symbol resolution code of the
SVR4 run time loader. */
@@ -939,6 +1124,11 @@ enable_break (void)
@@ -987,6 +1172,11 @@ enable_break (void)
/* Find the .interp section; if not found, warn the user and drop
into the old breakpoint at symbol code. */
interp_sect = bfd_get_section_by_name (exec_bfd, ".interp");
@ -560,7 +560,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
if (interp_sect)
{
unsigned int interp_sect_size;
@@ -972,6 +1162,9 @@ enable_break (void)
@@ -1025,6 +1215,9 @@ enable_break (void)
if (tmp_fd >= 0)
tmp_bfd = bfd_fopen (tmp_pathname, gnutarget, FOPEN_RB, tmp_fd);
@ -570,7 +570,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
if (tmp_bfd == NULL)
goto bkpt_at_symbol;
@@ -1052,6 +1245,9 @@ enable_break (void)
@@ -1111,6 +1304,9 @@ enable_break (void)
if (sym_addr != 0)
{
create_solib_event_breakpoint (load_addr + sym_addr);
@ -580,7 +580,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
return 1;
}
@@ -1311,6 +1507,8 @@ svr4_solib_create_inferior_hook (void)
@@ -1372,6 +1568,8 @@ svr4_solib_create_inferior_hook (void)
while (stop_signal != TARGET_SIGNAL_TRAP);
stop_soon = NO_STOP_QUIETLY;
#endif /* defined(_SCO_DS) */
@ -589,7 +589,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
}
static void
@@ -1493,6 +1691,75 @@ svr4_lp64_fetch_link_map_offsets (void)
@@ -1558,6 +1756,75 @@ svr4_lp64_fetch_link_map_offsets (void)
return lmp;
}
@ -665,7 +665,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
static struct target_so_ops svr4_so_ops;
@@ -1515,4 +1782,8 @@ _initialize_svr4_solib (void)
@@ -1580,4 +1847,8 @@ _initialize_svr4_solib (void)
/* FIXME: Don't do this here. *_gdbarch_init() should set so_ops. */
current_target_so_ops = &svr4_so_ops;
@ -674,10 +674,10 @@ Index: gdb-6.5/gdb/solib-svr4.c
+ "Display the inferior's linkmap.");
+
}
Index: gdb-6.5/gdb/varobj.c
Index: gdb-6.6/gdb/varobj.c
===================================================================
--- gdb-6.5.orig/gdb/varobj.c 2006-07-11 02:47:06.000000000 -0300
+++ gdb-6.5/gdb/varobj.c 2006-07-11 02:56:57.000000000 -0300
--- gdb-6.6.orig/gdb/varobj.c
+++ gdb-6.6/gdb/varobj.c
@@ -870,6 +870,62 @@ varobj_list (struct varobj ***varlist)
return rootcount;
}
@ -741,10 +741,10 @@ Index: gdb-6.5/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.5/gdb/solist.h
Index: gdb-6.6/gdb/solist.h
===================================================================
--- gdb-6.5.orig/gdb/solist.h 2006-07-11 02:47:06.000000000 -0300
+++ gdb-6.5/gdb/solist.h 2006-07-11 02:47:11.000000000 -0300
--- gdb-6.6.orig/gdb/solist.h
+++ gdb-6.6/gdb/solist.h
@@ -62,6 +62,8 @@ struct so_list
bfd *abfd;
char symbols_loaded; /* flag: symbols read in yet? */
@ -777,10 +777,10 @@ Index: gdb-6.5/gdb/solist.h
+/* Controls the printing of debugging output. */
+extern int debug_solib;
#endif
Index: gdb-6.5/gdb/varobj.h
Index: gdb-6.6/gdb/varobj.h
===================================================================
--- gdb-6.5.orig/gdb/varobj.h 2006-07-11 02:47:06.000000000 -0300
+++ gdb-6.5/gdb/varobj.h 2006-07-11 02:47:11.000000000 -0300
--- gdb-6.6.orig/gdb/varobj.h
+++ gdb-6.6/gdb/varobj.h
@@ -99,4 +99,6 @@ extern int varobj_list (struct varobj **
extern int varobj_update (struct varobj **varp, struct varobj ***changelist);
@ -788,10 +788,10 @@ Index: gdb-6.5/gdb/varobj.h
+extern void varobj_refresh(void);
+
#endif /* VAROBJ_H */
Index: gdb-6.5/gdb/symfile.c
Index: gdb-6.6/gdb/symfile.c
===================================================================
--- gdb-6.5.orig/gdb/symfile.c 2006-07-11 02:47:06.000000000 -0300
+++ gdb-6.5/gdb/symfile.c 2006-07-11 02:56:57.000000000 -0300
--- gdb-6.6.orig/gdb/symfile.c
+++ gdb-6.6/gdb/symfile.c
@@ -49,6 +49,7 @@
#include "readline/readline.h"
#include "gdb_assert.h"
@ -799,8 +799,8 @@ Index: gdb-6.5/gdb/symfile.c
+#include "varobj.h"
#include "observer.h"
#include "exec.h"
@@ -658,7 +659,7 @@ syms_from_objfile (struct objfile *objfi
#include "parser-defs.h"
@@ -659,7 +660,7 @@ syms_from_objfile (struct objfile *objfi
/* Now either addrs or offsets is non-zero. */
@ -809,7 +809,7 @@ Index: gdb-6.5/gdb/symfile.c
{
/* We will modify the main symbol table, make sure that all its users
will be cleaned up if an error occurs during symbol reading. */
@@ -686,7 +687,7 @@ syms_from_objfile (struct objfile *objfi
@@ -687,7 +688,7 @@ syms_from_objfile (struct objfile *objfi
We no longer warn if the lowest section is not a text segment (as
happens for the PA64 port. */
@ -818,7 +818,7 @@ Index: gdb-6.5/gdb/symfile.c
{
asection *lower_sect;
asection *sect;
@@ -855,17 +856,21 @@ new_symfile_objfile (struct objfile *obj
@@ -856,17 +857,21 @@ new_symfile_objfile (struct objfile *obj
/* If this is the main symbol file we have to clean up all users of the
old main symbol file. Otherwise it is sufficient to fixup all the
breakpoints that may have been redefined by this symbol file. */
@ -842,7 +842,7 @@ Index: gdb-6.5/gdb/symfile.c
/* We're done reading the symbol file; finish off complaints. */
clear_complaints (&symfile_complaints, 0, verbo);
@@ -908,7 +913,7 @@ symbol_file_add_with_addrs_or_offsets (b
@@ -909,7 +914,7 @@ symbol_file_add_with_addrs_or_offsets (b
interactively wiping out any existing symbols. */
if ((have_full_symbols () || have_partial_symbols ())
@ -851,7 +851,7 @@ Index: gdb-6.5/gdb/symfile.c
&& from_tty
&& !query ("Load new symbol table from \"%s\"? ", name))
error (_("Not confirmed."));
@@ -1089,6 +1094,10 @@ symbol_file_clear (int from_tty)
@@ -1090,6 +1095,10 @@ symbol_file_clear (int from_tty)
symfile_objfile->name)
: !query (_("Discard symbol table? "))))
error (_("Not confirmed."));
@ -862,7 +862,7 @@ Index: gdb-6.5/gdb/symfile.c
free_all_objfiles ();
/* solib descriptors may have handles to objfiles. Since their
@@ -2154,6 +2163,8 @@ reread_symbols (void)
@@ -2204,6 +2213,8 @@ reread_symbols (void)
/* Discard cleanups as symbol reading was successful. */
discard_cleanups (old_cleanups);
@ -871,19 +871,19 @@ Index: gdb-6.5/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. */
@@ -2529,6 +2540,7 @@ clear_symtab_users (void)
@@ -2579,6 +2590,7 @@ clear_symtab_users (void)
clear_pc_function_cache ();
if (deprecated_target_new_objfile_hook)
deprecated_target_new_objfile_hook (NULL);
+ varobj_refresh ();
}
static void
Index: gdb-6.5/gdb/breakpoint.c
/* Clear globals which might have pointed into a removed objfile.
FIXME: It's not clear which of these are supposed to persist
Index: gdb-6.6/gdb/breakpoint.c
===================================================================
--- gdb-6.5.orig/gdb/breakpoint.c 2006-07-11 02:47:11.000000000 -0300
+++ gdb-6.5/gdb/breakpoint.c 2006-07-11 02:56:59.000000000 -0300
@@ -782,15 +782,15 @@ insert_watchpoints_for_new_thread (ptid_
--- gdb-6.6.orig/gdb/breakpoint.c
+++ gdb-6.6/gdb/breakpoint.c
@@ -781,15 +781,15 @@ insert_watchpoints_for_new_thread (ptid_
struct value *v = b->owner->val_chain;
/* Look at each value on the value chain. */
@ -902,7 +902,7 @@ Index: gdb-6.5/gdb/breakpoint.c
/* We only watch structs and arrays if user asked
for it explicitly, never if they just happen to
@@ -802,8 +802,8 @@ insert_watchpoints_for_new_thread (ptid_
@@ -801,8 +801,8 @@ insert_watchpoints_for_new_thread (ptid_
CORE_ADDR addr;
int len, type;
@ -913,7 +913,7 @@ Index: gdb-6.5/gdb/breakpoint.c
type = hw_write;
if (b->owner->type == bp_read_watchpoint)
type = hw_read;
@@ -2680,12 +2680,12 @@ mark_triggered_watchpoints (CORE_ADDR st
@@ -2682,12 +2682,12 @@ mark_triggered_watchpoints (CORE_ADDR st
|| b->type == bp_read_watchpoint
|| b->type == bp_access_watchpoint)
{
@ -929,7 +929,7 @@ Index: gdb-6.5/gdb/breakpoint.c
if (v == b->val_chain
|| (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
@@ -2693,11 +2693,11 @@ mark_triggered_watchpoints (CORE_ADDR st
@@ -2695,11 +2695,11 @@ mark_triggered_watchpoints (CORE_ADDR st
{
CORE_ADDR vaddr;
@ -943,7 +943,7 @@ Index: gdb-6.5/gdb/breakpoint.c
b->watchpoint_triggered = 1;
}
}
@@ -2867,12 +2867,12 @@ bpstat_stop_status (CORE_ADDR bp_addr, p
@@ -2869,12 +2869,12 @@ bpstat_stop_status (CORE_ADDR bp_addr, p
bs->stop = 0;
continue;
}
@ -959,7 +959,7 @@ Index: gdb-6.5/gdb/breakpoint.c
if (v == b->val_chain
|| (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
@@ -2880,11 +2880,11 @@ bpstat_stop_status (CORE_ADDR bp_addr, p
@@ -2882,11 +2882,11 @@ bpstat_stop_status (CORE_ADDR bp_addr, p
{
CORE_ADDR vaddr;
@ -973,15 +973,15 @@ Index: gdb-6.5/gdb/breakpoint.c
must_check_value = 1;
}
}
@@ -3931,6 +3931,7 @@ describe_other_breakpoints (CORE_ADDR pc
b->number,
@@ -3937,6 +3937,7 @@ describe_other_breakpoints (CORE_ADDR pc
printf_filtered ("%s%s ",
((b->enable_state == bp_disabled ||
b->enable_state == bp_shlib_disabled ||
+ b->enable_state == bp_startup_disabled ||
b->enable_state == bp_call_disabled)
? " (disabled)"
? " (disabled)"
: b->enable_state == bp_permanent
@@ -4609,6 +4610,62 @@ re_enable_breakpoints_in_shlibs (void)
@@ -4615,6 +4616,62 @@ re_enable_breakpoints_in_shlibs (void)
}
}
@ -1044,7 +1044,7 @@ Index: gdb-6.5/gdb/breakpoint.c
static void
solib_load_unload_1 (char *hookname, int tempflag, char *dll_pathname,
char *cond_string, enum bptype bp_kind)
@@ -6955,6 +7012,7 @@ delete_breakpoint (struct breakpoint *bp
@@ -6961,6 +7018,7 @@ delete_breakpoint (struct breakpoint *bp
&& !b->loc->duplicate
&& b->enable_state != bp_disabled
&& b->enable_state != bp_shlib_disabled
@ -1052,7 +1052,7 @@ Index: gdb-6.5/gdb/breakpoint.c
&& !b->pending
&& b->enable_state != bp_call_disabled)
{
@@ -7170,7 +7228,8 @@ breakpoint_re_set_one (void *bint)
@@ -7176,7 +7234,8 @@ breakpoint_re_set_one (void *bint)
break;
save_enable = b->enable_state;
@ -1062,10 +1062,10 @@ Index: gdb-6.5/gdb/breakpoint.c
b->enable_state = bp_disabled;
else
/* If resetting a shlib-disabled breakpoint, we don't want to
Index: gdb-6.5/gdb/solib.c
Index: gdb-6.6/gdb/solib.c
===================================================================
--- gdb-6.5.orig/gdb/solib.c 2006-07-11 02:47:06.000000000 -0300
+++ gdb-6.5/gdb/solib.c 2006-07-11 02:47:11.000000000 -0300
--- gdb-6.6.orig/gdb/solib.c
+++ gdb-6.6/gdb/solib.c
@@ -72,6 +72,8 @@ solib_ops (struct gdbarch *gdbarch)
/* external data declarations */
@ -1084,7 +1084,7 @@ Index: gdb-6.5/gdb/solib.c
/*
GLOBAL FUNCTION
@@ -372,7 +376,6 @@ free_so (struct so_list *so)
@@ -376,7 +380,6 @@ free_so (struct so_list *so)
xfree (so);
}
@ -1092,7 +1092,7 @@ Index: gdb-6.5/gdb/solib.c
/* Return address of first so_list entry in master shared object list. */
struct so_list *
master_so_list (void)
@@ -380,7 +383,6 @@ master_so_list (void)
@@ -384,7 +387,6 @@ master_so_list (void)
return so_list_head;
}
@ -1100,7 +1100,7 @@ Index: gdb-6.5/gdb/solib.c
/* A small stub to get us past the arg-passing pinhole of catch_errors. */
static int
@@ -392,15 +394,40 @@ symbol_add_stub (void *arg)
@@ -396,15 +398,40 @@ symbol_add_stub (void *arg)
/* Have we already loaded this shared object? */
ALL_OBJFILES (so->objfile)
{
@ -1144,7 +1144,7 @@ Index: gdb-6.5/gdb/solib.c
free_section_addr_info (sap);
return (1);
@@ -523,6 +550,10 @@ update_solib_list (int from_tty, struct
@@ -532,6 +559,10 @@ update_solib_list (int from_tty, struct
the inferior's current list. */
while (i)
{
@ -1155,7 +1155,7 @@ Index: gdb-6.5/gdb/solib.c
if (! strcmp (gdb->so_original_name, i->so_original_name))
break;
@@ -576,28 +607,7 @@ update_solib_list (int from_tty, struct
@@ -585,28 +616,7 @@ update_solib_list (int from_tty, struct
/* Fill in the rest of each of the `struct so_list' nodes. */
for (i = inferior; i; i = i->next)
{
@ -1185,8 +1185,8 @@ Index: gdb-6.5/gdb/solib.c
/* Notify any observer that the shared object has been
loaded now that we've added it to GDB's tables. */
@@ -606,6 +616,41 @@ update_solib_list (int from_tty, struct
}
@@ -702,6 +712,41 @@ solib_add (char *pattern, int from_tty,
}
}
+void
@ -1225,9 +1225,9 @@ Index: gdb-6.5/gdb/solib.c
+ }
+}
/* GLOBAL FUNCTION
/*
@@ -978,4 +1023,12 @@ This takes precedence over the environme
@@ -1006,4 +1051,12 @@ This takes precedence over the environme
reload_shared_libraries,
show_solib_search_path,
&setlist, &showlist);
@ -1240,10 +1240,10 @@ Index: gdb-6.5/gdb/solib.c
+ NULL, NULL,
+ &setdebuglist, &showdebuglist);
}
Index: gdb-6.5/gdb/elfread.c
Index: gdb-6.6/gdb/elfread.c
===================================================================
--- gdb-6.5.orig/gdb/elfread.c 2006-07-11 02:47:06.000000000 -0300
+++ gdb-6.5/gdb/elfread.c 2006-07-11 02:47:11.000000000 -0300
--- gdb-6.6.orig/gdb/elfread.c
+++ gdb-6.6/gdb/elfread.c
@@ -556,7 +556,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

View File

@ -16,10 +16,10 @@
(source_command): Update documentation. Check permissions if
FROM_TTY is -1.
Index: gdb-6.5/gdb/cli/cli-cmds.c
Index: gdb-6.6/gdb/cli/cli-cmds.c
===================================================================
--- gdb-6.5.orig/gdb/cli/cli-cmds.c 2006-07-11 03:22:45.000000000 -0300
+++ gdb-6.5/gdb/cli/cli-cmds.c 2006-07-11 03:26:36.000000000 -0300
--- gdb-6.6.orig/gdb/cli/cli-cmds.c
+++ gdb-6.6/gdb/cli/cli-cmds.c
@@ -38,6 +38,7 @@
#include "objfiles.h"
#include "source.h"
@ -28,7 +28,7 @@ Index: gdb-6.5/gdb/cli/cli-cmds.c
#include "ui-out.h"
@@ -453,12 +454,31 @@ source_command (char *args, int from_tty
@@ -461,12 +462,31 @@ source_script (char *file, int from_tty)
if (fd == -1)
{
@ -61,10 +61,10 @@ Index: gdb-6.5/gdb/cli/cli-cmds.c
stream = fdopen (fd, FOPEN_RT);
script_from_file (stream, file);
Index: gdb-6.5/gdb/testsuite/gdb.base/gdbinit.exp
Index: gdb-6.6/gdb/testsuite/gdb.base/gdbinit.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.5/gdb/testsuite/gdb.base/gdbinit.exp 2006-07-11 03:22:48.000000000 -0300
--- /dev/null
+++ gdb-6.6/gdb/testsuite/gdb.base/gdbinit.exp
@@ -0,0 +1,98 @@
+# Copyright 2005
+# Free Software Foundation, Inc.
@ -164,39 +164,39 @@ Index: gdb-6.5/gdb/testsuite/gdb.base/gdbinit.exp
+}
+
+remote_exec build "rm .gdbinit"
Index: gdb-6.5/gdb/testsuite/gdb.base/gdbinit.sample
Index: gdb-6.6/gdb/testsuite/gdb.base/gdbinit.sample
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.5/gdb/testsuite/gdb.base/gdbinit.sample 2006-07-11 03:22:48.000000000 -0300
--- /dev/null
+++ gdb-6.6/gdb/testsuite/gdb.base/gdbinit.sample
@@ -0,0 +1 @@
+echo "\nin gdbinit"
Index: gdb-6.5/gdb/main.c
Index: gdb-6.6/gdb/main.c
===================================================================
--- gdb-6.5.orig/gdb/main.c 2006-07-11 03:22:45.000000000 -0300
+++ gdb-6.5/gdb/main.c 2006-07-11 03:27:03.000000000 -0300
@@ -643,7 +643,7 @@ extern int gdbtk_test (char *);
--- gdb-6.6.orig/gdb/main.c
+++ gdb-6.6/gdb/main.c
@@ -644,7 +644,7 @@ extern int gdbtk_test (char *);
if (!inhibit_gdbinit)
{
- catch_command_errors (source_command, homeinit, 0, RETURN_MASK_ALL);
+ catch_command_errors (source_command, homeinit, -1, RETURN_MASK_ALL);
- catch_command_errors (source_script, homeinit, 0, RETURN_MASK_ALL);
+ catch_command_errors (source_script, homeinit, -1, RETURN_MASK_ALL);
}
/* Do stats; no need to do them elsewhere since we'll only
@@ -730,7 +730,7 @@ extern int gdbtk_test (char *);
@@ -722,7 +722,7 @@ extern int gdbtk_test (char *);
|| memcmp ((char *) &homebuf, (char *) &cwdbuf, sizeof (struct stat)))
if (!inhibit_gdbinit)
{
- catch_command_errors (source_command, gdbinit, 0, RETURN_MASK_ALL);
+ catch_command_errors (source_command, gdbinit, -1, RETURN_MASK_ALL);
- catch_command_errors (source_script, gdbinit, 0, RETURN_MASK_ALL);
+ catch_command_errors (source_script, gdbinit, -1, RETURN_MASK_ALL);
}
for (i = 0; i < ncmd; i++)
Index: gdb-6.5/gdb/Makefile.in
Index: gdb-6.6/gdb/Makefile.in
===================================================================
--- gdb-6.5.orig/gdb/Makefile.in 2006-07-11 03:22:45.000000000 -0300
+++ gdb-6.5/gdb/Makefile.in 2006-07-11 03:22:48.000000000 -0300
@@ -2859,7 +2859,7 @@ cli-cmds.o: $(srcdir)/cli/cli-cmds.c $(d
--- gdb-6.6.orig/gdb/Makefile.in
+++ gdb-6.6/gdb/Makefile.in
@@ -2927,7 +2927,7 @@ cli-cmds.o: $(srcdir)/cli/cli-cmds.c $(d
$(expression_h) $(frame_h) $(value_h) $(language_h) $(filenames_h) \
$(objfiles_h) $(source_h) $(disasm_h) $(ui_out_h) $(top_h) \
$(cli_decode_h) $(cli_script_h) $(cli_setshow_h) $(cli_cmds_h) \

View File

@ -1,13 +1,8 @@
Index: ./gdb/testsuite/ChangeLog
2005-04-02 Andrew Cagney <cagney@gnu.org>
* gdb.base/sepdebug.exp: Check that things fail when the debug
info is corrupt.
* gdb.base/sepdebug2.c (main): New file.
--- ../gdb-6.3/./gdb/testsuite/gdb.base/sepdebug.exp 2004-01-14 10:09:37.000000000 -0500
+++ ./gdb/testsuite/gdb.base/sepdebug.exp 2005-04-02 15:57:17.000000000 -0500
@@ -985,3 +985,35 @@
Index: gdb-6.6/gdb/testsuite/gdb.base/sepdebug.exp
===================================================================
--- gdb-6.6.orig/gdb/testsuite/gdb.base/sepdebug.exp 2006-10-17 22:17:45.000000000 +0200
+++ gdb-6.6/gdb/testsuite/gdb.base/sepdebug.exp 2007-01-20 18:39:26.000000000 +0100
@@ -953,3 +953,40 @@ if [istarget "*-*-vxworks*"] {
send_gdb "set args main\n"
gdb_expect -re ".*$gdb_prompt $" {}
}
@ -33,6 +28,11 @@ Index: ./gdb/testsuite/ChangeLog
+}
+remote_exec build "cp $corrupt_debug_file ${existing_binfile}.debug"
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+set test "A corrupt debug file gets a warning"
+gdb_test_multiple "file $existing_binfile" "$test" {
+ -re "warning:.*mismatch.*" {
@ -43,8 +43,10 @@ Index: ./gdb/testsuite/ChangeLog
+ exp_continue
+ }
+}
--- /dev/null 2005-04-02 11:30:32.604931736 -0500
+++ ./gdb/testsuite/gdb.base/sepdebug2.c 2005-04-02 13:09:31.000000000 -0500
Index: gdb-6.6/gdb/testsuite/gdb.base/sepdebug2.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.6/gdb/testsuite/gdb.base/sepdebug2.c 2007-01-20 18:41:35.000000000 +0100
@@ -0,0 +1,5 @@
+int
+main (int argc, char *argv[], char *envp[])

View File

@ -1,8 +1,8 @@
Index: gdb-6.5/gdb/configure
Index: gdb-6.6/gdb/configure
===================================================================
--- gdb-6.5.orig/gdb/configure 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/configure 2006-07-11 15:01:23.000000000 -0300
@@ -20125,7 +20125,8 @@ fi
--- gdb-6.6.orig/gdb/configure
+++ gdb-6.6/gdb/configure
@@ -20991,7 +20991,8 @@ fi
# gdb/doc/gdbint.texinfo.
build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \
-Wformat -Wparentheses -Wpointer-arith -Wformat-nonliteral \
@ -12,10 +12,10 @@ Index: gdb-6.5/gdb/configure
# GCC supports -Wuninitialized only with -O or -On, n != 0.
if test x${CFLAGS+set} = xset; then
Index: gdb-6.5/gdb/mi/mi-cmd-env.c
Index: gdb-6.6/gdb/mi/mi-cmd-env.c
===================================================================
--- gdb-6.5.orig/gdb/mi/mi-cmd-env.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/mi/mi-cmd-env.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/mi/mi-cmd-env.c
+++ gdb-6.6/gdb/mi/mi-cmd-env.c
@@ -126,7 +126,7 @@ mi_cmd_env_path (char *command, char **a
static struct mi_opt opts[] =
{
@ -34,10 +34,10 @@ Index: gdb-6.5/gdb/mi/mi-cmd-env.c
};
dont_repeat ();
Index: gdb-6.5/gdb/mi/mi-getopt.c
Index: gdb-6.6/gdb/mi/mi-getopt.c
===================================================================
--- gdb-6.5.orig/gdb/mi/mi-getopt.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/mi/mi-getopt.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/mi/mi-getopt.c
+++ gdb-6.6/gdb/mi/mi-getopt.c
@@ -82,7 +82,7 @@ mi_valid_noargs (const char *prefix, int
char *optarg;
static struct mi_opt opts[] =
@ -47,10 +47,10 @@ Index: gdb-6.5/gdb/mi/mi-getopt.c
};
if (mi_getopt (prefix, argc, argv, opts, &optind, &optarg) == -1)
Index: gdb-6.5/gdb/mi/mi-cmd-break.c
Index: gdb-6.6/gdb/mi/mi-cmd-break.c
===================================================================
--- gdb-6.5.orig/gdb/mi/mi-cmd-break.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/mi/mi-cmd-break.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/mi/mi-cmd-break.c
+++ gdb-6.6/gdb/mi/mi-cmd-break.c
@@ -90,7 +90,7 @@ mi_cmd_break_insert (char *command, char
{"c", CONDITION_OPT, 1},
{"i", IGNORE_COUNT_OPT, 1},
@ -69,10 +69,10 @@ Index: gdb-6.5/gdb/mi/mi-cmd-break.c
};
/* Parse arguments. */
Index: gdb-6.5/gdb/mi/mi-cmd-disas.c
Index: gdb-6.6/gdb/mi/mi-cmd-disas.c
===================================================================
--- gdb-6.5.orig/gdb/mi/mi-cmd-disas.c 2006-07-11 15:01:22.000000000 -0300
+++ gdb-6.5/gdb/mi/mi-cmd-disas.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/mi/mi-cmd-disas.c
+++ gdb-6.6/gdb/mi/mi-cmd-disas.c
@@ -84,7 +84,7 @@ mi_cmd_disassemble (char *command, char
{"n", NUM_OPT, 1},
{"s", START_OPT, 1},
@ -82,10 +82,10 @@ Index: gdb-6.5/gdb/mi/mi-cmd-disas.c
};
/* Get the options with their arguments. Keep track of what we
Index: gdb-6.5/gdb/mi/mi-main.c
Index: gdb-6.6/gdb/mi/mi-main.c
===================================================================
--- gdb-6.5.orig/gdb/mi/mi-main.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/mi/mi-main.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/mi/mi-main.c
+++ gdb-6.6/gdb/mi/mi-main.c
@@ -773,7 +773,7 @@ mi_cmd_data_read_memory (char *command,
static struct mi_opt opts[] =
{
@ -95,7 +95,7 @@ Index: gdb-6.5/gdb/mi/mi-main.c
};
while (1)
@@ -975,7 +975,7 @@ mi_cmd_data_write_memory (char *command,
@@ -973,7 +973,7 @@ mi_cmd_data_write_memory (char *command,
static struct mi_opt opts[] =
{
{"o", OFFSET_OPT, 1},
@ -104,10 +104,10 @@ Index: gdb-6.5/gdb/mi/mi-main.c
};
while (1)
Index: gdb-6.5/gdb/p-valprint.c
Index: gdb-6.6/gdb/p-valprint.c
===================================================================
--- gdb-6.5.orig/gdb/p-valprint.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/p-valprint.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/p-valprint.c
+++ gdb-6.6/gdb/p-valprint.c
@@ -753,7 +753,7 @@ pascal_object_print_value_fields (struct
int dont_print_statmem)
{
@ -126,10 +126,10 @@ Index: gdb-6.5/gdb/p-valprint.c
struct type **last_dont_print
= (struct type **) obstack_next_free (&dont_print_vb_obstack);
int i, n_baseclasses = TYPE_N_BASECLASSES (type);
Index: gdb-6.5/gdb/cp-valprint.c
Index: gdb-6.6/gdb/cp-valprint.c
===================================================================
--- gdb-6.5.orig/gdb/cp-valprint.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/cp-valprint.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/cp-valprint.c
+++ gdb-6.6/gdb/cp-valprint.c
@@ -265,7 +265,7 @@ cp_print_value_fields (struct type *type
struct type **dont_print_vb,int dont_print_statmem)
{
@ -148,10 +148,10 @@ Index: gdb-6.5/gdb/cp-valprint.c
struct type **last_dont_print
= (struct type **) obstack_next_free (&dont_print_vb_obstack);
int i, n_baseclasses = TYPE_N_BASECLASSES (type);
Index: gdb-6.5/gdb/tui/tui-layout.c
Index: gdb-6.6/gdb/tui/tui-layout.c
===================================================================
--- gdb-6.5.orig/gdb/tui/tui-layout.c 2006-07-11 15:01:22.000000000 -0300
+++ gdb-6.5/gdb/tui/tui-layout.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/tui/tui-layout.c
+++ gdb-6.6/gdb/tui/tui-layout.c
@@ -755,7 +755,7 @@ show_source_disasm_command (void)
if (TUI_DISASM_WIN == NULL)
{
@ -188,20 +188,20 @@ Index: gdb-6.5/gdb/tui/tui-layout.c
LOCATOR_WIN,
2 /* 1 */ ,
tui_term_width (),
Index: gdb-6.5/gdb/testsuite/gdb.base/move-dir.h
Index: gdb-6.6/gdb/testsuite/gdb.base/move-dir.h
===================================================================
--- gdb-6.5.orig/gdb/testsuite/gdb.base/move-dir.h 2006-07-11 15:01:23.000000000 -0300
+++ gdb-6.5/gdb/testsuite/gdb.base/move-dir.h 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/testsuite/gdb.base/move-dir.h
+++ gdb-6.6/gdb/testsuite/gdb.base/move-dir.h
@@ -1,4 +1,4 @@
-#include <stdlib.h>
+#include <stdio.h>
void other() {
const char* ostring = "other";
Index: gdb-6.5/gdb/testsuite/gdb.base/sigrepeat.c
Index: gdb-6.6/gdb/testsuite/gdb.base/sigrepeat.c
===================================================================
--- gdb-6.5.orig/gdb/testsuite/gdb.base/sigrepeat.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/testsuite/gdb.base/sigrepeat.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/testsuite/gdb.base/sigrepeat.c
+++ gdb-6.6/gdb/testsuite/gdb.base/sigrepeat.c
@@ -22,6 +22,7 @@
#include <stdlib.h>
#include <string.h>
@ -210,10 +210,10 @@ Index: gdb-6.5/gdb/testsuite/gdb.base/sigrepeat.c
#include <sys/time.h>
static volatile int done[2];
Index: gdb-6.5/gdb/s390-tdep.c
Index: gdb-6.6/gdb/s390-tdep.c
===================================================================
--- gdb-6.5.orig/gdb/s390-tdep.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/s390-tdep.c 2006-07-11 15:02:37.000000000 -0300
--- gdb-6.6.orig/gdb/s390-tdep.c
+++ gdb-6.6/gdb/s390-tdep.c
@@ -2277,6 +2277,9 @@ s390_return_value (struct gdbarch *gdbar
case RETURN_VALUE_STRUCT_CONVENTION:
error (_("Cannot set function return value."));
@ -234,27 +234,27 @@ Index: gdb-6.5/gdb/s390-tdep.c
}
}
Index: gdb-6.5/gdb/remote.c
Index: gdb-6.6/gdb/remote.c
===================================================================
--- gdb-6.5.orig/gdb/remote.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/remote.c 2006-07-11 15:02:32.000000000 -0300
@@ -2523,10 +2523,10 @@ cleanup_sigint_signal_handler (void *dum
--- gdb-6.6.orig/gdb/remote.c
+++ gdb-6.6/gdb/remote.c
@@ -2843,10 +2843,10 @@ cleanup_sigint_signal_handler (void *dum
{
signal (SIGINT, handle_sigint);
if (sigint_remote_twice_token)
- delete_async_signal_handler ((struct async_signal_handler **)
- delete_async_signal_handler ((struct async_signal_handler **)
+ delete_async_signal_handler ((struct async_signal_handler **) (char *)
&sigint_remote_twice_token);
if (sigint_remote_token)
- delete_async_signal_handler ((struct async_signal_handler **)
- delete_async_signal_handler ((struct async_signal_handler **)
+ delete_async_signal_handler ((struct async_signal_handler **) (char *)
&sigint_remote_token);
}
Index: gdb-6.5/gdb/f-exp.y
Index: gdb-6.6/gdb/f-exp.y
===================================================================
--- gdb-6.5.orig/gdb/f-exp.y 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/f-exp.y 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/f-exp.y
+++ gdb-6.6/gdb/f-exp.y
@@ -567,6 +567,8 @@ ptype : typebase
case tp_function:
follow_type = lookup_function_type (follow_type);
@ -264,11 +264,11 @@ Index: gdb-6.5/gdb/f-exp.y
}
$$ = follow_type;
}
Index: gdb-6.5/gdb/remote-fileio.c
Index: gdb-6.6/gdb/remote-fileio.c
===================================================================
--- gdb-6.5.orig/gdb/remote-fileio.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/remote-fileio.c 2006-07-11 15:01:23.000000000 -0300
@@ -1317,19 +1317,19 @@ static struct {
--- gdb-6.6.orig/gdb/remote-fileio.c
+++ gdb-6.6/gdb/remote-fileio.c
@@ -1332,19 +1332,19 @@ static struct {
char *name;
void (*func)(char *);
} remote_fio_func_map[] = {
@ -301,11 +301,11 @@ Index: gdb-6.5/gdb/remote-fileio.c
};
static int
Index: gdb-6.5/gdb/source.c
Index: gdb-6.6/gdb/source.c
===================================================================
--- gdb-6.5.orig/gdb/source.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/source.c 2006-07-11 15:01:23.000000000 -0300
@@ -160,7 +160,7 @@ get_current_source_symtab_and_line (void
--- gdb-6.6.orig/gdb/source.c
+++ gdb-6.6/gdb/source.c
@@ -172,7 +172,7 @@ get_current_source_symtab_and_line (void
void
set_default_source_symtab_and_line (void)
{
@ -314,7 +314,7 @@ Index: gdb-6.5/gdb/source.c
if (!have_full_symbols () && !have_partial_symbols ())
error (_("No symbol table is loaded. Use the \"file\" command."));
@@ -1314,7 +1314,7 @@ static void
@@ -1428,7 +1428,7 @@ static void
line_info (char *arg, int from_tty)
{
struct symtabs_and_lines sals;
@ -323,11 +323,11 @@ Index: gdb-6.5/gdb/source.c
CORE_ADDR start_pc, end_pc;
int i;
Index: gdb-6.5/gdb/symfile.c
Index: gdb-6.6/gdb/symfile.c
===================================================================
--- gdb-6.5.orig/gdb/symfile.c 2006-07-11 15:01:22.000000000 -0300
+++ gdb-6.5/gdb/symfile.c 2006-07-11 15:02:34.000000000 -0300
@@ -2877,6 +2877,8 @@ add_psymbol_with_dem_name_to_list (char
--- gdb-6.6.orig/gdb/symfile.c
+++ gdb-6.6/gdb/symfile.c
@@ -2933,6 +2933,8 @@ add_psymbol_with_dem_name_to_list (char
deprecated_bcache (buf, dem_namelength + 1, objfile->psymbol_cache);
break;
/* FIXME What should be done for the default case? Ignoring for now. */
@ -336,10 +336,10 @@ Index: gdb-6.5/gdb/symfile.c
}
/* val and coreaddr are mutually exclusive, one of them *will* be zero */
Index: gdb-6.5/gdb/linespec.c
Index: gdb-6.6/gdb/linespec.c
===================================================================
--- gdb-6.5.orig/gdb/linespec.c 2006-07-11 15:01:23.000000000 -0300
+++ gdb-6.5/gdb/linespec.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/linespec.c
+++ gdb-6.6/gdb/linespec.c
@@ -1631,7 +1631,7 @@ static struct symtabs_and_lines
find_method (int funfirstline, char ***canonical, char *saved_arg,
char *copy, struct type *t, struct symbol *sym_class)
@ -349,10 +349,10 @@ Index: gdb-6.5/gdb/linespec.c
struct symbol *sym = 0;
int i1; /* Counter for the symbol array. */
struct symbol **sym_arr = alloca (total_number_of_methods (t)
Index: gdb-6.5/gdb/macroscope.c
Index: gdb-6.6/gdb/macroscope.c
===================================================================
--- gdb-6.5.orig/gdb/macroscope.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/macroscope.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/macroscope.c
+++ gdb-6.6/gdb/macroscope.c
@@ -33,7 +33,7 @@
struct macro_scope *
sal_macro_scope (struct symtab_and_line sal)
@ -390,23 +390,13 @@ Index: gdb-6.5/gdb/macroscope.c
struct macro_scope *ms;
/* If there's a selected frame, use its PC. */
Index: gdb-6.5/gdb/target.c
Index: gdb-6.6/gdb/target.c
===================================================================
--- gdb-6.5.orig/gdb/target.c 2006-07-11 15:01:22.000000000 -0300
+++ gdb-6.5/gdb/target.c 2006-07-11 15:02:33.000000000 -0300
@@ -1142,6 +1142,9 @@ target_xfer_memory (CORE_ADDR memaddr, g
if (!write)
return EIO;
break;
+
+ default:
+ break;
}
while (reg_len > 0)
@@ -1220,6 +1223,9 @@ target_xfer_memory_partial (CORE_ADDR me
return -1;
}
--- gdb-6.6.orig/gdb/target.c
+++ gdb-6.6/gdb/target.c
@@ -1045,6 +1045,9 @@ memory_xfer_partial (struct target_ops *
if (writebuf != NULL)
error (_("Writing to flash memory forbidden in this context"));
break;
+
+ default:
@ -414,10 +404,10 @@ Index: gdb-6.5/gdb/target.c
}
if (region->attrib.cache)
Index: gdb-6.5/gdb/gdb-events.c
Index: gdb-6.6/gdb/gdb-events.c
===================================================================
--- gdb-6.5.orig/gdb/gdb-events.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/gdb-events.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/gdb-events.c
+++ gdb-6.6/gdb/gdb-events.c
@@ -321,6 +321,8 @@ gdb_events_deliver (struct gdb_events *v
case architecture_changed:
vector->architecture_changed ();
@ -427,11 +417,11 @@ Index: gdb-6.5/gdb/gdb-events.c
}
delivering_events = event->next;
xfree (event);
Index: gdb-6.5/gdb/dwarf2read.c
Index: gdb-6.6/gdb/dwarf2read.c
===================================================================
--- gdb-6.5.orig/gdb/dwarf2read.c 2006-07-11 15:01:23.000000000 -0300
+++ gdb-6.5/gdb/dwarf2read.c 2006-07-11 15:02:33.000000000 -0300
@@ -9179,6 +9179,7 @@ dwarf_decode_macros (struct line_header
--- gdb-6.6.orig/gdb/dwarf2read.c
+++ gdb-6.6/gdb/dwarf2read.c
@@ -9307,6 +9307,7 @@ dwarf_decode_macros (struct line_header
for (;;)
{
enum dwarf_macinfo_record_type macinfo_type;
@ -439,7 +429,7 @@ Index: gdb-6.5/gdb/dwarf2read.c
/* Do we at least have room for a macinfo type byte? */
if (mac_ptr >= mac_end)
@@ -9190,13 +9191,16 @@ dwarf_decode_macros (struct line_header
@@ -9318,13 +9319,16 @@ dwarf_decode_macros (struct line_header
macinfo_type = read_1_byte (abfd, mac_ptr);
mac_ptr++;
@ -461,10 +451,10 @@ Index: gdb-6.5/gdb/dwarf2read.c
case DW_MACINFO_define:
case DW_MACINFO_undef:
{
Index: gdb-6.5/gdb/stabsread.c
Index: gdb-6.6/gdb/stabsread.c
===================================================================
--- gdb-6.5.orig/gdb/stabsread.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/stabsread.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/stabsread.c
+++ gdb-6.6/gdb/stabsread.c
@@ -1794,7 +1794,8 @@ again:
struct type *domain = read_type (pp, objfile);
struct type *return_type;
@ -475,10 +465,10 @@ Index: gdb-6.5/gdb/stabsread.c
if (**pp != ',')
/* Invalid member type data format. */
Index: gdb-6.5/gdb/dwarf2expr.c
Index: gdb-6.6/gdb/dwarf2expr.c
===================================================================
--- gdb-6.5.orig/gdb/dwarf2expr.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/dwarf2expr.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/dwarf2expr.c
+++ gdb-6.6/gdb/dwarf2expr.c
@@ -559,6 +559,8 @@ execute_stack_op (struct dwarf_expr_cont
op_ptr = read_uleb128 (op_ptr, op_end, &reg);
result += reg;
@ -488,10 +478,10 @@ Index: gdb-6.5/gdb/dwarf2expr.c
}
break;
Index: gdb-6.5/gdb/varobj.c
Index: gdb-6.6/gdb/varobj.c
===================================================================
--- gdb-6.5.orig/gdb/varobj.c 2006-07-11 15:01:22.000000000 -0300
+++ gdb-6.5/gdb/varobj.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/varobj.c
+++ gdb-6.6/gdb/varobj.c
@@ -325,10 +325,9 @@ struct language_specific
/* Array of known source language routines. */
@ -544,11 +534,11 @@ Index: gdb-6.5/gdb/varobj.c
/* Set ourselves as our root */
var->root->rootvar = var;
Index: gdb-6.5/gdb/configure.ac
Index: gdb-6.6/gdb/configure.ac
===================================================================
--- gdb-6.5.orig/gdb/configure.ac 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/configure.ac 2006-07-11 15:01:23.000000000 -0300
@@ -1133,7 +1133,8 @@ fi
--- gdb-6.6.orig/gdb/configure.ac
+++ gdb-6.6/gdb/configure.ac
@@ -1112,7 +1112,8 @@ fi
# gdb/doc/gdbint.texinfo.
build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \
-Wformat -Wparentheses -Wpointer-arith -Wformat-nonliteral \
@ -558,10 +548,10 @@ Index: gdb-6.5/gdb/configure.ac
# GCC supports -Wuninitialized only with -O or -On, n != 0.
if test x${CFLAGS+set} = xset; then
Index: gdb-6.5/gdb/doublest.c
Index: gdb-6.6/gdb/doublest.c
===================================================================
--- gdb-6.5.orig/gdb/doublest.c 2006-07-11 15:00:08.000000000 -0300
+++ gdb-6.5/gdb/doublest.c 2006-07-11 15:01:23.000000000 -0300
--- gdb-6.6.orig/gdb/doublest.c
+++ gdb-6.6/gdb/doublest.c
@@ -94,15 +94,10 @@ get_field (const bfd_byte *data, enum fl
{
result |= (unsigned long)*(data + cur_byte) << cur_bitshift;

View File

@ -21,9 +21,11 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
(SYMBOL_FILE_INDEX, SYMBOL_FILE_SYMTAB): New macros.
--- ./gdb/buildsym.c 2005-12-17 22:33:59.000000000 +0000
+++ ./gdb/buildsym.c 2007-01-09 08:30:38.000000000 +0000
@@ -535,7 +535,7 @@ make_blockvector (struct objfile *objfil
Index: gdb-6.6/gdb/buildsym.c
===================================================================
--- gdb-6.6.orig/gdb/buildsym.c 2006-08-25 18:32:32.000000000 +0200
+++ gdb-6.6/gdb/buildsym.c 2007-01-20 13:59:48.000000000 +0100
@@ -540,7 +540,7 @@ make_blockvector (struct objfile *objfil
the directory in which it resides (or NULL if not known). */
void
@ -32,7 +34,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
{
struct subfile *subfile;
@@ -547,6 +547,17 @@ start_subfile (char *name, char *dirname
@@ -552,6 +552,17 @@ start_subfile (char *name, char *dirname
if (FILENAME_CMP (subfile->name, name) == 0)
{
current_subfile = subfile;
@ -50,7 +52,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
return;
}
}
@@ -562,6 +573,7 @@ start_subfile (char *name, char *dirname
@@ -567,6 +578,7 @@ start_subfile (char *name, char *dirname
current_subfile = subfile;
/* Save its name and compilation directory name */
@ -58,7 +60,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
subfile->name = (name == NULL) ? NULL : savestring (name, strlen (name));
subfile->dirname =
(dirname == NULL) ? NULL : savestring (dirname, strlen (dirname));
@@ -617,6 +629,13 @@ start_subfile (char *name, char *dirname
@@ -622,6 +634,13 @@ start_subfile (char *name, char *dirname
}
}
@ -72,7 +74,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
/* For stabs readers, the first N_SO symbol is assumed to be the
source file name, and the subfile struct is initialized using that
assumption. If another N_SO symbol is later seen, immediately
@@ -816,9 +835,12 @@ end_symtab (CORE_ADDR end_addr, struct o
@@ -821,9 +840,12 @@ end_symtab (CORE_ADDR end_addr, struct o
{
struct symtab *symtab = NULL;
struct blockvector *blockvector;
@ -86,7 +88,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
/* Finish the lexical context of the last function in the file; pop
the context stack. */
@@ -916,6 +938,18 @@ end_symtab (CORE_ADDR end_addr, struct o
@@ -921,6 +943,18 @@ end_symtab (CORE_ADDR end_addr, struct o
#endif
PROCESS_LINENUMBER_HOOK (); /* Needed for xcoff. */
@ -105,7 +107,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
/* Now create the symtab objects proper, one for each subfile. */
/* (The main file is the last one on the chain.) */
@@ -976,6 +1010,16 @@ end_symtab (CORE_ADDR end_addr, struct o
@@ -981,6 +1015,16 @@ end_symtab (CORE_ADDR end_addr, struct o
strlen (subfile->dirname) + 1);
strcpy (symtab->dirname, subfile->dirname);
}
@ -122,7 +124,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
else
{
symtab->dirname = NULL;
@@ -1004,6 +1048,13 @@ end_symtab (CORE_ADDR end_addr, struct o
@@ -1009,6 +1053,13 @@ end_symtab (CORE_ADDR end_addr, struct o
but the main file. */
symtab->primary = 0;
@ -136,7 +138,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
}
if (subfile->name != NULL)
{
@@ -1032,9 +1083,40 @@ end_symtab (CORE_ADDR end_addr, struct o
@@ -1037,9 +1088,40 @@ end_symtab (CORE_ADDR end_addr, struct o
symtab->primary = 1;
}
@ -177,8 +179,10 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
return symtab;
}
--- ./gdb/buildsym.h 2005-12-17 22:33:59.000000000 +0000
+++ ./gdb/buildsym.h 2007-01-09 08:17:17.000000000 +0000
Index: gdb-6.6/gdb/buildsym.h
===================================================================
--- gdb-6.6.orig/gdb/buildsym.h 2005-12-17 23:33:59.000000000 +0100
+++ gdb-6.6/gdb/buildsym.h 2007-01-20 13:59:48.000000000 +0100
@@ -63,6 +63,7 @@ EXTERN CORE_ADDR last_source_start_addr;
struct subfile
{
@ -197,9 +201,11 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
extern void start_subfile (char *name, char *dirname);
extern void patch_subfile_names (struct subfile *subfile, char *name);
--- ./gdb/dwarf2read.c 2007-01-08 22:28:24.000000000 +0000
+++ ./gdb/dwarf2read.c 2007-01-09 08:58:41.000000000 +0000
@@ -847,7 +847,7 @@ static struct line_header *(dwarf_decode
Index: gdb-6.6/gdb/dwarf2read.c
===================================================================
--- gdb-6.6.orig/gdb/dwarf2read.c 2007-01-20 06:43:04.000000000 +0100
+++ gdb-6.6/gdb/dwarf2read.c 2007-01-20 14:00:12.000000000 +0100
@@ -853,7 +853,7 @@ static struct line_header *(dwarf_decode
static void dwarf_decode_lines (struct line_header *, char *, bfd *,
struct dwarf2_cu *, struct partial_symtab *);
@ -208,7 +214,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
static struct symbol *new_symbol (struct die_info *, struct type *,
struct dwarf2_cu *);
@@ -6321,6 +6321,7 @@ add_file_name (struct line_header *lh,
@@ -6428,6 +6428,7 @@ add_file_name (struct line_header *lh,
unsigned int length)
{
struct file_entry *fe;
@ -216,7 +222,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
/* Grow the array if necessary. */
if (lh->file_names_size == 0)
@@ -6343,6 +6344,10 @@ add_file_name (struct line_header *lh,
@@ -6450,6 +6451,10 @@ add_file_name (struct line_header *lh,
fe->mod_time = mod_time;
fe->length = length;
fe->included_p = 0;
@ -227,7 +233,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
}
@@ -6560,7 +6565,7 @@ dwarf_decode_lines (struct line_header *
@@ -6668,7 +6673,7 @@ dwarf_decode_lines (struct line_header *
if (fe->dir_index)
dir = lh->include_dirs[fe->dir_index - 1];
@ -236,16 +242,16 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
}
/* Decode the table. */
@@ -6661,7 +6666,7 @@ dwarf_decode_lines (struct line_header *
dir = lh->include_dirs[fe->dir_index - 1];
@@ -6785,7 +6790,7 @@ dwarf_decode_lines (struct line_header *
if (!decode_for_pst_p)
- dwarf2_start_subfile (fe->name, dir, comp_dir);
+ dwarf2_start_subfile (fe->name, dir, comp_dir, file);
{
last_subfile = current_subfile;
- dwarf2_start_subfile (fe->name, dir, comp_dir);
+ dwarf2_start_subfile (fe->name, dir, comp_dir, file);
}
}
break;
case DW_LNS_set_column:
@@ -6764,7 +6769,8 @@ dwarf_decode_lines (struct line_header *
@@ -6889,7 +6894,8 @@ dwarf_decode_lines (struct line_header *
subfile's name. */
static void
@ -255,7 +261,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
{
char *fullname;
@@ -6783,7 +6789,7 @@ dwarf2_start_subfile (char *filename, ch
@@ -6908,7 +6914,7 @@ dwarf2_start_subfile (char *filename, ch
else
fullname = filename;
@ -264,7 +270,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
if (fullname != filename)
xfree (fullname);
@@ -6892,6 +6898,13 @@ new_symbol (struct die_info *die, struct
@@ -7017,6 +7023,13 @@ new_symbol (struct die_info *die, struct
{
SYMBOL_LINE (sym) = DW_UNSND (attr);
}
@ -278,8 +284,10 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
switch (die->tag)
{
case DW_TAG_label:
--- ./gdb/symtab.c 2007-01-08 22:28:25.000000000 +0000
+++ ./gdb/symtab.c 2007-01-09 08:19:05.000000000 +0000
Index: gdb-6.6/gdb/symtab.c
===================================================================
--- gdb-6.6.orig/gdb/symtab.c 2007-01-20 13:59:25.000000000 +0100
+++ gdb-6.6/gdb/symtab.c 2007-01-20 13:59:48.000000000 +0100
@@ -1129,6 +1129,10 @@ lookup_symbol (const char *name, const s
if (needtofreename)
xfree (demangled_name);
@ -309,8 +317,10 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
psr->symbol = sym;
psr->msymbol = NULL;
psr->next = NULL;
--- ./gdb/symtab.h 2007-01-08 22:28:25.000000000 +0000
+++ ./gdb/symtab.h 2007-01-09 08:44:02.000000000 +0000
Index: gdb-6.6/gdb/symtab.h
===================================================================
--- gdb-6.6.orig/gdb/symtab.h 2007-01-20 06:43:00.000000000 +0100
+++ gdb-6.6/gdb/symtab.h 2007-01-20 13:59:48.000000000 +0100
@@ -623,6 +623,18 @@ struct symbol
ENUM_BITFIELD(address_class) aclass : 6;

View File

@ -4,10 +4,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=185337
currently for trivia nonthreaded helloworld with no debug info up to -ggdb2 you
will get:
(gdb) p errno
Cannot access memory at address 0x8
* with -ggdb3 "errno" gets resolved as _macro_ and the resulting
"(*__errno_location ())" expression is always fine.
[some error]
* with -ggdb2 and less "errno" in fact does not exist anywhere as it was
compiled to "(*__errno_location ())" and the macro definition is not present.
@ -16,554 +13,25 @@ will get:
(%gs on i386) is not setup and it will result in:
Cannot access memory at address 0x8
IMO the right way is to ignore TLS symbols for inferiors without activated
threading. Patch attached.
Also attached suggestion patch how to deal with the most common "errno" symbol
Attached suggestion patch how to deal with the most common "errno" symbol
for the most common under-ggdb3 compiled programs.
2006-08-25 Jan Kratochvil <jan.kratochvil@redhat.com>
* dwarf2loc.c (dwarf_expr_tls_address): Code moved out to
`target_translate_tls_address'.
* target.c (target_translate_tls_address): Moved here.
Provided warnings for TLS `errno' on non-TLS targets.
* target.h (target_translate_tls_address): Moved here.
* eval.c (evaluate_subexp_standard): New `UNOP_MEMVAL_TLS'.
* expprint.c (print_subexp_standard): New `UNOP_MEMVAL_TLS'.
(op_name_standard): New `UNOP_MEMVAL_TLS'.
(dump_subexp_body_standard): New `UNOP_MEMVAL_TLS'.
* expression.h (enum exp_opcode): New `UNOP_MEMVAL_TLS'.
(union exp_element): New `objfile' type.
* parse.c (write_exp_elt_objfile): New `objfile' setter.
(write_exp_msymbol): Support new `UNOP_MEMVAL_TLS'.
(msym_text_tls_symbol_type, msym_data_tls_symbol_type,
msym_unknown_tls_symbol_type, build_parse): New TLS types.
(operator_length_standard): New `UNOP_MEMVAL_TLS'.
* parser-defs.h (write_exp_elt_objfile): New `objfile' setter.
* valops.c (value_at_lazy): Pass control to `value_at_lazy_tls'.
(value_at_lazy_tls): Provide TLS `struct objfile *' storage.
(value_fetch_lazy): Resolve TLS `struct objfile *' storage.
(value_assign): Resolve TLS `struct objfile *' storage.
* value.c (struct value, allocate_value, value_tls_objfile,
set_value_tls_objfile): Provide TLS `struct objfile *' storage.
* value.h (value_tls_objfile, set_value_tls_objfile,
value_at_lazy_tls): Provide TLS `struct objfile *' storage.
* Makefile.in: Updated dependencies.
2006-08-25 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.threads/tls-nodebug.c: New file, test TLS symbols on gcc -s.
* gdb.threads/tls-nodebug.exp: New file, test TLS symbols on gcc -s.
* target.c (target_translate_tls_address): Provided warnings for TLS
`errno' on non-TLS targets.
Index: gdb-6.5/gdb/Makefile.in
Index: gdb-6.6/gdb/target.c
===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v
retrieving revision 1.840
diff -u -p -r1.840 gdb-6.5/gdb/Makefile.in
--- gdb-6.5.org/gdb/Makefile.in 22 Aug 2006 19:08:31 -0000 1.840
+++ gdb-6.5/gdb/Makefile.in 25 Aug 2006 19:55:35 -0000
@@ -1977,7 +1977,7 @@ exec.o: exec.c $(defs_h) $(frame_h) $(in
$(xcoffsolib_h) $(observer_h)
expprint.o: expprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
$(value_h) $(language_h) $(parser_defs_h) $(user_regs_h) $(target_h) \
- $(gdb_string_h) $(block_h)
+ $(gdb_string_h) $(block_h) $(objfiles_h)
fbsd-nat.o: fbsd-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) $(regcache_h) \
$(regset_h) $(gdb_assert_h) $(gdb_string_h) $(elf_bfd_h) \
$(fbsd_nat_h)
@@ -2422,7 +2422,7 @@ osabi.o: osabi.c $(defs_h) $(gdb_assert_
parse.o: parse.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
$(frame_h) $(expression_h) $(value_h) $(command_h) $(language_h) \
$(f_lang_h) $(parser_defs_h) $(gdbcmd_h) $(symfile_h) $(inferior_h) \
- $(doublest_h) $(gdb_assert_h) $(block_h) $(source_h)
+ $(doublest_h) $(gdb_assert_h) $(block_h) $(source_h) $(objfiles_h)
p-exp.o: p-exp.c $(defs_h) $(gdb_string_h) $(expression_h) $(value_h) \
$(parser_defs_h) $(language_h) $(p_lang_h) $(bfd_h) $(symfile_h) \
$(objfiles_h) $(block_h)
@@ -2750,7 +2750,8 @@ symtab.o: symtab.c $(defs_h) $(symtab_h)
$(gdb_stat_h) $(cp_abi_h) $(observer_h)
target.o: target.c $(defs_h) $(gdb_string_h) $(target_h) $(gdbcmd_h) \
$(symtab_h) $(inferior_h) $(bfd_h) $(symfile_h) $(objfiles_h) \
- $(gdb_wait_h) $(dcache_h) $(regcache_h) $(gdb_assert_h) $(gdbcore_h)
+ $(gdb_wait_h) $(dcache_h) $(regcache_h) $(gdb_assert_h) $(gdbcore_h) \
+ $(exceptions_h)
thread.o: thread.c $(defs_h) $(symtab_h) $(frame_h) $(inferior_h) \
$(environ_h) $(value_h) $(target_h) $(gdbthread_h) $(exceptions_h) \
$(command_h) $(gdbcmd_h) $(regcache_h) $(gdb_h) $(gdb_string_h) \
Index: gdb-6.5/gdb/dwarf2loc.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2loc.c,v
retrieving revision 1.33
diff -u -p -r1.33 gdb-6.5/gdb/dwarf2loc.c
--- gdb-6.5.org/gdb/dwarf2loc.c 17 Dec 2005 22:33:59 -0000 1.33
+++ gdb-6.5/gdb/dwarf2loc.c 25 Aug 2006 19:55:36 -0000
@@ -189,86 +189,8 @@ static CORE_ADDR
dwarf_expr_tls_address (void *baton, CORE_ADDR offset)
{
struct dwarf_expr_baton *debaton = (struct dwarf_expr_baton *) baton;
- volatile CORE_ADDR addr = 0;
- if (target_get_thread_local_address_p ()
- && gdbarch_fetch_tls_load_module_address_p (current_gdbarch))
- {
- ptid_t ptid = inferior_ptid;
- struct objfile *objfile = debaton->objfile;
- volatile struct gdb_exception ex;
-
- TRY_CATCH (ex, RETURN_MASK_ALL)
- {
- CORE_ADDR lm_addr;
-
- /* Fetch the load module address for this objfile. */
- lm_addr = gdbarch_fetch_tls_load_module_address (current_gdbarch,
- objfile);
- /* If it's 0, throw the appropriate exception. */
- if (lm_addr == 0)
- throw_error (TLS_LOAD_MODULE_NOT_FOUND_ERROR,
- _("TLS load module not found"));
-
- addr = target_get_thread_local_address (ptid, lm_addr, offset);
- }
- /* If an error occurred, print TLS related messages here. Otherwise,
- throw the error to some higher catcher. */
- if (ex.reason < 0)
- {
- int objfile_is_library = (objfile->flags & OBJF_SHARED);
-
- switch (ex.error)
- {
- case TLS_NO_LIBRARY_SUPPORT_ERROR:
- error (_("Cannot find thread-local variables in this thread library."));
- break;
- case TLS_LOAD_MODULE_NOT_FOUND_ERROR:
- if (objfile_is_library)
- error (_("Cannot find shared library `%s' in dynamic"
- " linker's load module list"), objfile->name);
- else
- error (_("Cannot find executable file `%s' in dynamic"
- " linker's load module list"), objfile->name);
- break;
- case TLS_NOT_ALLOCATED_YET_ERROR:
- if (objfile_is_library)
- error (_("The inferior has not yet allocated storage for"
- " thread-local variables in\n"
- "the shared library `%s'\n"
- "for %s"),
- objfile->name, target_pid_to_str (ptid));
- else
- error (_("The inferior has not yet allocated storage for"
- " thread-local variables in\n"
- "the executable `%s'\n"
- "for %s"),
- objfile->name, target_pid_to_str (ptid));
- break;
- case TLS_GENERIC_ERROR:
- if (objfile_is_library)
- error (_("Cannot find thread-local storage for %s, "
- "shared library %s:\n%s"),
- target_pid_to_str (ptid),
- objfile->name, ex.message);
- else
- error (_("Cannot find thread-local storage for %s, "
- "executable file %s:\n%s"),
- target_pid_to_str (ptid),
- objfile->name, ex.message);
- break;
- default:
- throw_exception (ex);
- break;
- }
- }
- }
- /* 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
--- gdb-6.6.orig/gdb/target.c 2007-01-17 01:25:31.000000000 +0100
+++ gdb-6.6/gdb/target.c 2007-01-20 06:31:36.000000000 +0100
@@ -898,7 +898,18 @@
/* 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
- error (_("Cannot find thread-local variables on this target"));
-
- return addr;
+ return target_translate_tls_address (debaton->objfile, offset);
}
/* Evaluate a location description, starting at DATA and with length
Index: gdb-6.5/gdb/eval.c
===================================================================
RCS file: /cvs/src/src/gdb/eval.c,v
retrieving revision 1.63
diff -u -p -r1.63 gdb-6.5/gdb/eval.c
--- gdb-6.5.org/gdb/eval.c 25 Jul 2006 04:24:50 -0000 1.63
+++ gdb-6.5/gdb/eval.c 25 Aug 2006 19:55:38 -0000
@@ -2019,6 +2019,18 @@ evaluate_subexp_standard (struct type *e
return value_at_lazy (exp->elts[pc + 1].type,
value_as_address (arg1));
+ case UNOP_MEMVAL_TLS:
+ (*pos) += 3;
+ arg1 = evaluate_subexp (expect_type, exp, pos, noside);
+ if (noside == EVAL_SKIP)
+ goto nosideret;
+ if (noside == EVAL_AVOID_SIDE_EFFECTS)
+ return value_zero (exp->elts[pc + 2].type, lval_memory);
+ else
+ return value_at_lazy_tls (exp->elts[pc + 2].type,
+ value_as_address (arg1),
+ exp->elts[pc + 1].objfile);
+
case UNOP_PREINCREMENT:
arg1 = evaluate_subexp (expect_type, exp, pos, noside);
if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
Index: gdb-6.5/gdb/expprint.c
===================================================================
RCS file: /cvs/src/src/gdb/expprint.c,v
retrieving revision 1.24
diff -u -p -r1.24 gdb-6.5/gdb/expprint.c
--- gdb-6.5.org/gdb/expprint.c 7 Aug 2006 03:30:54 -0000 1.24
+++ gdb-6.5/gdb/expprint.c 25 Aug 2006 19:55:39 -0000
@@ -31,6 +31,7 @@
#include "target.h"
#include "gdb_string.h"
#include "block.h"
+#include "objfiles.h"
#ifdef HAVE_CTYPE_H
#include <ctype.h>
@@ -414,6 +415,33 @@ print_subexp_standard (struct expression
fputs_filtered (")", stream);
return;
+ case UNOP_MEMVAL_TLS:
+ (*pos) += 3;
+ if ((int) prec > (int) PREC_PREFIX)
+ fputs_filtered ("(", stream);
+ if (TYPE_CODE (exp->elts[pc + 2].type) == TYPE_CODE_FUNC &&
+ exp->elts[pc + 4].opcode == OP_LONG)
+ {
+ /* We have a minimal symbol fn, probably. It's encoded
+ as a UNOP_MEMVAL (function-type) of an OP_LONG (int, address).
+ Swallow the OP_LONG (including both its opcodes); ignore
+ its type; print the value in the type of the MEMVAL. */
+ (*pos) += 4;
+ val = value_at_lazy (exp->elts[pc + 2].type,
+ (CORE_ADDR) exp->elts[pc + 6].longconst);
+ value_print (val, stream, 0, Val_no_prettyprint);
+ }
+ else
+ {
+ fputs_filtered ("{", stream);
+ type_print (exp->elts[pc + 2].type, "", stream, 0);
+ fputs_filtered ("} ", stream);
+ print_subexp (exp, pos, stream, PREC_PREFIX);
+ }
+ if ((int) prec > (int) PREC_PREFIX)
+ fputs_filtered (")", stream);
+ return;
+
case BINOP_ASSIGN_MODIFY:
opcode = exp->elts[pc + 1].opcode;
(*pos) += 2;
@@ -694,6 +722,8 @@ op_name_standard (enum exp_opcode opcode
return "UNOP_CAST";
case UNOP_MEMVAL:
return "UNOP_MEMVAL";
+ case UNOP_MEMVAL_TLS:
+ return "UNOP_MEMVAL_TLS";
case UNOP_NEG:
return "UNOP_NEG";
case UNOP_LOGICAL_NOT:
@@ -999,6 +1029,16 @@ dump_subexp_body_standard (struct expres
fprintf_filtered (stream, ")");
elt = dump_subexp (exp, stream, elt + 2);
break;
+ case UNOP_MEMVAL_TLS:
+ fprintf_filtered (stream, "TLS type @");
+ gdb_print_host_address (exp->elts[elt + 1].type, stream);
+ fprintf_filtered (stream, " (__thread /* \"%s\" */ ",
+ (exp->elts[elt].objfile == NULL ? "(null)"
+ : exp->elts[elt].objfile->name));
+ type_print (exp->elts[elt + 1].type, NULL, stream, 0);
+ fprintf_filtered (stream, ")");
+ elt = dump_subexp (exp, stream, elt + 3);
+ break;
case OP_TYPE:
fprintf_filtered (stream, "Type @");
gdb_print_host_address (exp->elts[elt].type, stream);
Index: gdb-6.5/gdb/expression.h
===================================================================
RCS file: /cvs/src/src/gdb/expression.h,v
retrieving revision 1.18
diff -u -p -r1.18 gdb-6.5/gdb/expression.h
--- gdb-6.5.org/gdb/expression.h 17 Dec 2005 22:33:59 -0000 1.18
+++ gdb-6.5/gdb/expression.h 25 Aug 2006 19:55:40 -0000
@@ -234,6 +234,13 @@ enum exp_opcode
following subexpression. */
UNOP_MEMVAL,
+ /* UNOP_MEMVAL_TLS is followed by a `struct objfile' pointer in the next
+ exp_element and a type pointer in the following exp_element.
+ With another UNOP_MEMVAL_TLS at the end, this makes four exp_elements.
+ It casts the contents of the word offsetted by the value of the
+ following subexpression from the TLS specified by `struct objfile'. */
+ UNOP_MEMVAL_TLS,
+
/* UNOP_... operate on one value from a following subexpression
and replace it with a result. They take no immediate arguments. */
@@ -360,6 +367,7 @@ union exp_element
struct type *type;
struct internalvar *internalvar;
struct block *block;
+ struct objfile *objfile;
};
struct expression
Index: gdb-6.5/gdb/parse.c
===================================================================
RCS file: /cvs/src/src/gdb/parse.c,v
retrieving revision 1.53
diff -u -p -r1.53 gdb-6.5/gdb/parse.c
--- gdb-6.5.org/gdb/parse.c 6 Jul 2006 14:00:48 -0000 1.53
+++ gdb-6.5/gdb/parse.c 25 Aug 2006 19:55:41 -0000
@@ -53,6 +53,7 @@
#include "gdb_assert.h"
#include "block.h"
#include "source.h"
+#include "objfiles.h"
/* Standard set of definitions for printing, dumping, prefixifying,
* and evaluating expressions. */
@@ -219,6 +220,15 @@ write_exp_elt_block (struct block *b)
}
void
+write_exp_elt_objfile (struct objfile *objfile)
+{
+ union exp_element tmp;
+ memset (&tmp, 0, sizeof (union exp_element));
+ tmp.objfile = objfile;
+ write_exp_elt (tmp);
+}
+
+void
write_exp_elt_longcst (LONGEST expelt)
{
union exp_element tmp;
@@ -378,6 +388,9 @@ write_exp_bitstring (struct stoken str)
static struct type *msym_text_symbol_type;
static struct type *msym_data_symbol_type;
static struct type *msym_unknown_symbol_type;
+static struct type *msym_text_tls_symbol_type;
+static struct type *msym_data_tls_symbol_type;
+static struct type *msym_unknown_tls_symbol_type;
void
write_exp_msymbol (struct minimal_symbol *msymbol,
@@ -385,6 +398,8 @@ write_exp_msymbol (struct minimal_symbol
struct type *data_symbol_type)
{
CORE_ADDR addr;
+ int tls = SYMBOL_BFD_SECTION (msymbol)->flags & SEC_THREAD_LOCAL;
+ enum exp_opcode opcode = tls ? UNOP_MEMVAL_TLS : UNOP_MEMVAL;
write_exp_elt_opcode (OP_LONG);
/* Let's make the type big enough to hold a 64-bit address. */
@@ -397,27 +412,49 @@ write_exp_msymbol (struct minimal_symbol
write_exp_elt_opcode (OP_LONG);
- write_exp_elt_opcode (UNOP_MEMVAL);
+ write_exp_elt_opcode (opcode);
+
+ if (opcode == UNOP_MEMVAL_TLS)
+ {
+ bfd *bfd = SYMBOL_BFD_SECTION (msymbol)->owner;
+ struct objfile *ofp;
+
+ ALL_OBJFILES (ofp)
+ if (ofp->obfd == bfd)
+ break;
+ write_exp_elt_objfile (ofp);
+ }
+
switch (msymbol->type)
{
case mst_text:
case mst_file_text:
case mst_solib_trampoline:
- write_exp_elt_type (msym_text_symbol_type);
+ if (tls)
+ write_exp_elt_type (msym_text_tls_symbol_type);
+ else
+ write_exp_elt_type (msym_text_symbol_type);
break;
case mst_data:
case mst_file_data:
case mst_bss:
case mst_file_bss:
- write_exp_elt_type (msym_data_symbol_type);
+ if (tls)
+ write_exp_elt_type (msym_data_tls_symbol_type);
+ else
+ write_exp_elt_type (msym_data_symbol_type);
break;
default:
- write_exp_elt_type (msym_unknown_symbol_type);
+ if (tls)
+ write_exp_elt_type (msym_unknown_tls_symbol_type);
+ else
+ write_exp_elt_type (msym_unknown_symbol_type);
break;
}
- write_exp_elt_opcode (UNOP_MEMVAL);
+
+ write_exp_elt_opcode (opcode);
}
/* Recognize tokens that start with '$'. These include:
@@ -904,6 +941,11 @@ operator_length_standard (struct express
args = 1;
break;
+ case UNOP_MEMVAL_TLS:
+ oplen = 4;
+ args = 1;
+ break;
+
case UNOP_ABS:
case UNOP_CAP:
case UNOP_CHR:
@@ -1341,6 +1383,17 @@ build_parse (void)
init_type (TYPE_CODE_INT, 1, 0,
"<variable (not text or data), no debug info>",
NULL);
+
+ msym_text_tls_symbol_type =
+ init_type (TYPE_CODE_FUNC, 1, 0, "<TLS-based text variable, no debug info>", NULL);
+ TYPE_TARGET_TYPE (msym_text_tls_symbol_type) = builtin_type_int;
+ msym_data_tls_symbol_type =
+ init_type (TYPE_CODE_INT, TARGET_INT_BIT / HOST_CHAR_BIT, 0,
+ "<TLS-based data variable, no debug info>", NULL);
+ msym_unknown_tls_symbol_type =
+ init_type (TYPE_CODE_INT, 1, 0,
+ "<TLS-based variable (not text or data), no debug info>",
+ NULL);
}
/* This function avoids direct calls to fprintf
Index: gdb-6.5/gdb/parser-defs.h
===================================================================
RCS file: /cvs/src/src/gdb/parser-defs.h,v
retrieving revision 1.20
diff -u -p -r1.20 gdb-6.5/gdb/parser-defs.h
--- gdb-6.5.org/gdb/parser-defs.h 17 Dec 2005 22:34:01 -0000 1.20
+++ gdb-6.5/gdb/parser-defs.h 25 Aug 2006 19:55:41 -0000
@@ -131,6 +131,8 @@ extern void write_exp_bitstring (struct
extern void write_exp_elt_block (struct block *);
+extern void write_exp_elt_objfile (struct objfile *objfile);
+
extern void write_exp_msymbol (struct minimal_symbol *,
struct type *, struct type *);
--- gdb-6.5.org/gdb/target.c 16 Aug 2006 18:31:03 -0000 1.124
+++ gdb-6.5/gdb/target.c 25 Aug 2006 19:55:43 -0000
@@ -40,6 +40,7 @@
#include "gdb_assert.h"
#include "gdbcore.h"
#include "observer.h"
+#include "exceptions.h"
static void target_info (char *, int);
@@ -755,6 +756,103 @@ pop_target (void)
internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
}
+/* Using the objfile specified in BATON, find the address for the
+ current thread's thread-local storage with offset OFFSET. */
+CORE_ADDR
+target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset)
+{
+ volatile CORE_ADDR addr = 0;
+
+ if (target_get_thread_local_address_p ()
+ && gdbarch_fetch_tls_load_module_address_p (current_gdbarch))
+ {
+ ptid_t ptid = inferior_ptid;
+ volatile struct gdb_exception ex;
+
+ TRY_CATCH (ex, RETURN_MASK_ALL)
+ {
+ CORE_ADDR lm_addr;
+
+ /* Fetch the load module address for this objfile. */
+ lm_addr = gdbarch_fetch_tls_load_module_address (current_gdbarch,
+ objfile);
+ /* If it's 0, throw the appropriate exception. */
+ if (lm_addr == 0)
+ throw_error (TLS_LOAD_MODULE_NOT_FOUND_ERROR,
+ _("TLS load module not found"));
+
+ addr = target_get_thread_local_address (ptid, lm_addr, offset);
+ }
+ /* If an error occurred, print TLS related messages here. Otherwise,
+ throw the error to some higher catcher. */
+ if (ex.reason < 0)
+ {
+ int objfile_is_library = (objfile->flags & OBJF_SHARED);
+
+ switch (ex.error)
+ {
+ case TLS_NO_LIBRARY_SUPPORT_ERROR:
+ error (_("Cannot find thread-local variables in this thread library."));
+ break;
+ case TLS_LOAD_MODULE_NOT_FOUND_ERROR:
+ if (objfile_is_library)
+ error (_("Cannot find shared library `%s' in dynamic"
+ " linker's load module list"), objfile->name);
+ else
+ error (_("Cannot find executable file `%s' in dynamic"
+ " linker's load module list"), objfile->name);
+ break;
+ case TLS_NOT_ALLOCATED_YET_ERROR:
+ if (objfile_is_library)
+ error (_("The inferior has not yet allocated storage for"
+ " thread-local variables in\n"
+ "the shared library `%s'\n"
+ "for %s"),
+ objfile->name, target_pid_to_str (ptid));
+ else
+ error (_("The inferior has not yet allocated storage for"
+ " thread-local variables in\n"
+ "the executable `%s'\n"
+ "for %s"),
+ objfile->name, target_pid_to_str (ptid));
+ break;
+ case TLS_GENERIC_ERROR:
+ if (objfile_is_library)
+ error (_("Cannot find thread-local storage for %s, "
+ "shared library %s:\n%s"),
+ target_pid_to_str (ptid),
+ objfile->name, ex.message);
+ else
+ error (_("Cannot find thread-local storage for %s, "
+ "executable file %s:\n%s"),
+ target_pid_to_str (ptid),
+ objfile->name, ex.message);
+ break;
+ default:
+ throw_exception (ex);
+ break;
+ }
+ }
+ }
+ /* 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
+ {
+ struct minimal_symbol *msymbol;
+
@ -576,250 +44,6 @@ diff -u -p -r1.20 gdb-6.5/gdb/parser-defs.h
+ " compile the program with `gcc -ggdb3' or `gcc -pthread'."));
+ error (_("Cannot find thread-local variables on this target"));
+ }
+
+ return addr;
+}
+
#undef MIN
#define MIN(A, B) (((A) <= (B)) ? (A) : (B))
Index: gdb-6.5/gdb/target.h
===================================================================
RCS file: /cvs/src/src/gdb/target.h,v
retrieving revision 1.87
diff -u -p -r1.87 gdb-6.5/gdb/target.h
--- gdb-6.5.org/gdb/target.h 15 Aug 2006 18:46:25 -0000 1.87
+++ gdb-6.5/gdb/target.h 25 Aug 2006 19:55:44 -0000
@@ -1131,6 +1131,9 @@ extern void target_preopen (int);
extern void pop_target (void);
+extern CORE_ADDR target_translate_tls_address (struct objfile *objfile,
+ CORE_ADDR offset);
+
/* Struct section_table maps address ranges to file sections. It is
mostly used with BFD files, but can be used without (e.g. for handling
raw disks, or files not in formats handled by BFD). */
Index: gdb-6.5/gdb/valops.c
===================================================================
RCS file: /cvs/src/src/gdb/valops.c,v
retrieving revision 1.164
diff -u -p -r1.164 gdb-6.5/gdb/valops.c
--- gdb-6.5.org/gdb/valops.c 13 Jul 2006 04:31:42 -0000 1.164
+++ gdb-6.5/gdb/valops.c 25 Aug 2006 19:55:46 -0000
@@ -501,7 +501,8 @@ value_at (struct type *type, CORE_ADDR a
/* Return a lazy value with type TYPE located at ADDR (cf. value_at). */
struct value *
-value_at_lazy (struct type *type, CORE_ADDR addr)
+value_at_lazy_tls (struct type *type, CORE_ADDR addr,
+ struct objfile *tls_objfile)
{
struct value *val;
@@ -512,11 +513,19 @@ value_at_lazy (struct type *type, CORE_A
VALUE_LVAL (val) = lval_memory;
VALUE_ADDRESS (val) = addr;
+ if (tls_objfile != NULL)
+ set_value_tls_objfile (val, tls_objfile);
set_value_lazy (val, 1);
return val;
return addr;
}
+struct value *
+value_at_lazy (struct type *type, CORE_ADDR addr)
+{
+ return value_at_lazy_tls (type, addr, NULL);
+}
+
/* Called only from the value_contents and value_contents_all()
macros, if the current data for a variable needs to be loaded into
value_contents(VAL). Fetches the data from the user's process, and
@@ -538,7 +547,17 @@ value_fetch_lazy (struct value *val)
struct type *type = value_type (val);
if (length)
- read_memory (addr, value_contents_all_raw (val), length);
+ {
+ struct objfile *tls_objfile = value_tls_objfile (val);
+
+ if (tls_objfile != NULL)
+ {
+ /* `target_translate_tls_address' uses `inferior_ptid'. */
+ addr = target_translate_tls_address (tls_objfile, addr);
+ }
+
+ read_memory (addr, value_contents_all_raw (val), length);
+ }
set_value_lazy (val, 0);
return 0;
@@ -596,6 +615,7 @@ value_assign (struct value *toval, struc
CORE_ADDR changed_addr;
int changed_len;
gdb_byte buffer[sizeof (LONGEST)];
+ struct objfile *tls_objfile = value_tls_objfile (toval);
if (value_bitsize (toval))
{
@@ -624,6 +644,13 @@ value_assign (struct value *toval, struc
dest_buffer = value_contents (fromval);
}
+ if (tls_objfile != NULL)
+ {
+ /* `target_translate_tls_address' uses `inferior_ptid'. */
+ changed_addr = target_translate_tls_address (tls_objfile,
+ changed_addr);
+ }
+
write_memory (changed_addr, dest_buffer, changed_len);
if (deprecated_memory_changed_hook)
deprecated_memory_changed_hook (changed_addr, changed_len);
Index: gdb-6.5/gdb/value.c
===================================================================
RCS file: /cvs/src/src/gdb/value.c,v
retrieving revision 1.36
diff -u -p -r1.36 gdb-6.5/gdb/value.c
--- gdb-6.5.org/gdb/value.c 31 Mar 2006 10:36:18 -0000 1.36
+++ gdb-6.5/gdb/value.c 25 Aug 2006 19:55:47 -0000
@@ -158,6 +158,9 @@ struct value
actually exist in the program. */
char optimized_out;
+ /* TLS owner. */
+ struct objfile *tls_objfile;
+
/* Actual contents of the value. For use of this value; setting it
uses the stuff above. Not valid if lazy is nonzero. Target
byte-order. We force it to be aligned properly for any possible
@@ -230,6 +233,7 @@ allocate_value (struct type *type)
VALUE_REGNUM (val) = -1;
val->lazy = 0;
val->optimized_out = 0;
+ val->tls_objfile = NULL;
val->embedded_offset = 0;
val->pointed_to_offset = 0;
val->modifiable = 1;
@@ -344,6 +348,18 @@ set_value_lazy (struct value *value, int
value->lazy = val;
}
+struct objfile *
+value_tls_objfile (struct value *value)
+{
+ return value->tls_objfile;
+}
+
+void
+set_value_tls_objfile (struct value *value, struct objfile *tls_objfile)
+{
+ value->tls_objfile = tls_objfile;
+}
+
const gdb_byte *
value_contents (struct value *value)
{
Index: gdb-6.5/gdb/value.h
===================================================================
RCS file: /cvs/src/src/gdb/value.h,v
retrieving revision 1.92
diff -u -p -r1.92 gdb-6.5/gdb/value.h
--- gdb-6.5.org/gdb/value.h 13 Jul 2006 04:31:42 -0000 1.92
+++ gdb-6.5/gdb/value.h 25 Aug 2006 19:55:48 -0000
@@ -154,6 +154,10 @@ extern void set_value_embedded_offset (s
extern int value_lazy (struct value *);
extern void set_value_lazy (struct value *value, int val);
+extern struct objfile *value_tls_objfile (struct value *value);
+extern void set_value_tls_objfile (struct value *value,
+ struct objfile *tls_objfile);
+
/* value_contents() and value_contents_raw() both return the address
of the gdb buffer used to hold a copy of the contents of the lval.
value_contents() is used when the contents of the buffer are needed
@@ -277,6 +281,8 @@ extern struct value *value_from_double (
extern struct value *value_from_string (char *string);
extern struct value *value_at (struct type *type, CORE_ADDR addr);
+extern struct value *value_at_lazy_tls (struct type *type, CORE_ADDR addr,
+ struct objfile *tls_objfile);
extern struct value *value_at_lazy (struct type *type, CORE_ADDR addr);
extern struct value *value_from_register (struct type *type, int regnum,
Index: gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.c
===================================================================
RCS file: gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.c
diff -N gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.c 25 Aug 2006 19:55:48 -0000
@@ -0,0 +1,8 @@
+/* Test accessing TLS based variable without any debug info compiled. */
+
+__thread int thread_local = 42;
+
+int main(void)
+{
+ return 0;
+}
Index: gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.exp
===================================================================
RCS file: gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.exp
diff -N gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.exp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.exp 25 Aug 2006 19:55:49 -0000
@@ -0,0 +1,52 @@
+# tls.exp -- Expect script to test thread-local storage without debuginfo
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-gdb@prep.ai.mit.edu
+
+set testfile tls-nodebug
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+
+if [istarget "*-*-linux"] then {
+ set target_cflags "-D_MIT_POSIX_THREADS"
+} else {
+ set target_cflags ""
+}
+
+if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable $options] != "" } {
+ return -1
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+
+gdb_load ${binfile}
+if ![runto_main] then {
+ fail "Can't run to main"
+ return 0
+}
+
+# Formerly: Cannot access memory at address 0x0
+gdb_test "p thread_local" "= 42" "thread local storage"
+
+# Done!
+#
+gdb_exit
+
+return 0

View File

@ -7,9 +7,11 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=190810
(remote_async_wait): Likewise.
--- gdb-6.5/gdb/remote.c.orig 2006-10-01 08:01:17.000000000 -0400
+++ gdb-6.5/gdb/remote.c 2006-10-01 08:03:18.000000000 -0400
@@ -2789,8 +2789,13 @@
Index: gdb-6.6/gdb/remote.c
===================================================================
--- gdb-6.6.orig/gdb/remote.c 2007-01-20 06:43:04.000000000 +0100
+++ gdb-6.6/gdb/remote.c 2007-01-20 06:55:50.000000000 +0100
@@ -3111,8 +3111,13 @@ Packet: '%s'\n"),
reg->regnum, regs);
}
@ -17,14 +19,14 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=190810
+ target. gdbserver(1) is not aware of the `set architecture'
+ name itself as it is not using libbfd. */
if (*p++ != ';')
- error (_("Remote register badly formatted: %s\nhere: %s"),
- error (_("Remote register badly formatted: %s\nhere: %s"),
+ error (_("Remote register badly formatted: %s\nhere: %s"
+ "\nTry to load the executable by `file' first,"
+ "\nyou may also check `set/show architecture'."),
buf, p);
}
}
@@ -2983,8 +2988,13 @@
@@ -3307,8 +3312,13 @@ Packet: '%s'\n"),
regcache_raw_supply (current_regcache, reg->regnum, regs);
}

View File

@ -0,0 +1,146 @@
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=196439
2006-08-26 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.dwarf2/dw2-stripped.exp: New file, Handle corrupted
or missing location list information.
* gdb.dwarf2/dw2-stripped.c: New file, Handle corrupted
or missing location list information.
Index: gdb-6.5/gdb/testsuite/gdb.dwarf2/dw2-stripped.c
===================================================================
RCS file: gdb-6.5/gdb/testsuite/gdb.dwarf2/dw2-stripped.c
diff -N gdb-6.5/gdb/testsuite/gdb.dwarf2/dw2-stripped.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gdb-6.5/gdb/testsuite/gdb.dwarf2/dw2-stripped.c 26 Aug 2006 11:47:26 -0000
@@ -0,0 +1,42 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ USA. */
+
+
+/* The function `func1' traced into must have debug info on offset > 0;
+ (DW_UNSND (attr)). This is the reason of `func0' existence. */
+
+void
+func0(int a, int b)
+{
+}
+
+/* `func1' being traced into must have some arguments to dump. */
+
+void
+func1(int a, int b)
+{
+ func0 (a,b);
+}
+
+int
+main(void)
+{
+ func1 (1, 2);
+ return 0;
+}
Index: gdb-6.5/gdb/testsuite/gdb.dwarf2/dw2-stripped.exp
===================================================================
RCS file: gdb-6.5/gdb/testsuite/gdb.dwarf2/dw2-stripped.exp
diff -N gdb-6.5/gdb/testsuite/gdb.dwarf2/dw2-stripped.exp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gdb-6.5/gdb/testsuite/gdb.dwarf2/dw2-stripped.exp 26 Aug 2006 11:47:27 -0000
@@ -0,0 +1,79 @@
+# Copyright 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Minimal DWARF-2 unit test
+
+# This test can only be run on targets which support DWARF-2.
+# For now pick a sampling of likely targets.
+if {![istarget *-*-linux*]
+ && ![istarget *-*-gnu*]
+ && ![istarget *-*-elf*]
+ && ![istarget *-*-openbsd*]
+ && ![istarget arm-*-eabi*]
+ && ![istarget powerpc-*-eabi*]} {
+ return 0
+}
+
+set testfile "dw2-stripped"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}.x
+
+remote_exec build "rm -f ${binfile}"
+
+# get the value of gcc_compiled
+if [get_compiler_info ${binfile}] {
+ return -1
+}
+
+# This test can only be run on gcc as we use additional_flags=FIXME
+if {$gcc_compiled == 0} {
+ return 0
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-ggdb3}] != "" } {
+ return -1
+}
+
+remote_exec build "objcopy -R .debug_loc ${binfile}"
+set strip_output [remote_exec build "objdump -h ${binfile}"]
+
+set test "stripping test file preservation"
+if [ regexp ".debug_info " $strip_output] {
+ pass "$test (.debug_info preserved)"
+} else {
+ fail "$test (.debug_info got also stripped)"
+}
+
+set test "stripping test file functionality"
+if [ regexp ".debug_loc " $strip_output] {
+ fail "$test (.debug_loc still present)"
+} else {
+ pass "$test (.debug_loc stripped)"
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+# For C programs, "start" should stop in main().
+
+gdb_test "start" \
+ ".*main \\(\\) at .*" \
+ "start"
+gdb_test "step" \
+ "func.* \\(.*\\) at .*" \
+ "step"

View File

@ -1,12 +1,14 @@
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=218379
--- gdb-6.5-depatched/gdb/minsyms.c 2006-12-17 16:10:53.000000000 -0500
+++ gdb-6.5/gdb/minsyms.c 2006-12-17 16:51:21.000000000 -0500
@@ -505,6 +505,11 @@
don't fill the bfd_section member, so don't
throw away symbols on those platforms. */
&& SYMBOL_BFD_SECTION (&msymbol[hi]) != NULL
Index: gdb-6.6/gdb/minsyms.c
===================================================================
--- gdb-6.6.orig/gdb/minsyms.c 2007-01-20 13:53:48.000000000 +0100
+++ gdb-6.6/gdb/minsyms.c 2007-01-20 13:58:47.000000000 +0100
@@ -490,6 +490,11 @@ lookup_minimal_symbol_by_pc_section (COR
don't fill the bfd_section member, so don't
throw away symbols on those platforms. */
&& SYMBOL_BFD_SECTION (&msymbol[hi]) != NULL
+ /* Don't ignore symbols for solib trampolines.
+ Limit its sideeffects - only for non-0 sized trampolines.
+ Red Hat Bug 200533 with its regression Bug 218379. */
@ -14,4 +16,4 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=218379
+ || MSYMBOL_SIZE (&msymbol[hi]))
&& (!matching_bfd_sections
(SYMBOL_BFD_SECTION (&msymbol[hi]), section)))
--hi;
{

View File

@ -16,11 +16,11 @@
* Makefile.in: Dependencies updated.
Index: gdb-6.5/gdb/Makefile.in
Index: gdb-6.6/gdb/Makefile.in
===================================================================
--- gdb-6.5.orig/gdb/Makefile.in 21 Sep 2006 14:00:53 -0000 1.844
+++ gdb-6.5/gdb/Makefile.in 1 Oct 2006 16:22:42 -0000
@@ -696,6 +696,7 @@ gdb_h = gdb.h
--- gdb-6.6.orig/gdb/Makefile.in 2007-01-20 06:43:02.000000000 +0100
+++ gdb-6.6/gdb/Makefile.in 2007-01-20 06:57:16.000000000 +0100
@@ -705,6 +705,7 @@ gdb_expat_h = gdb_expat.h
gdb_locale_h = gdb_locale.h
gdb_obstack_h = gdb_obstack.h $(obstack_h)
gdb_proc_service_h = gdb_proc_service.h $(gregset_h)
@ -28,7 +28,7 @@ Index: gdb-6.5/gdb/Makefile.in
gdb_ptrace_h = gdb_ptrace.h
gdb_regex_h = gdb_regex.h $(xregex_h)
gdb_select_h = gdb_select.h
@@ -705,6 +706,7 @@ gdb_string_h = gdb_string.h
@@ -714,6 +715,7 @@ gdb_string_h = gdb_string.h
gdb_thread_db_h = gdb_thread_db.h
gdbthread_h = gdbthread.h $(breakpoint_h) $(frame_h)
gdbtypes_h = gdbtypes.h $(hashtab_h)
@ -36,21 +36,21 @@ Index: gdb-6.5/gdb/Makefile.in
gdb_vfork_h = gdb_vfork.h
gdb_wait_h = gdb_wait.h
glibc_tdep_h = glibc-tdep.h
@@ -1743,7 +1745,8 @@ amd64fbsd-tdep.o: amd64fbsd-tdep.c $(def
@@ -1779,7 +1781,8 @@ amd64fbsd-tdep.o: amd64fbsd-tdep.c $(def
amd64-linux-nat.o: amd64-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
$(regcache_h) $(linux_nat_h) $(gdb_assert_h) $(gdb_string_h) \
$(gdb_proc_service_h) $(gregset_h) $(amd64_tdep_h) \
- $(i386_linux_tdep_h) $(amd64_nat_h) $(target_h)
+ $(i386_linux_tdep_h) $(amd64_nat_h) $(target_h) \
- $(i386_linux_tdep_h) $(amd64_nat_h) $(target_h) $(amd64_linux_tdep_h)
+ $(i386_linux_tdep_h) $(amd64_nat_h) $(target_h) $(amd64_linux_tdep_h) \
+ $(i387_tdep_h) $(elf_bfd_h) $(gdb_procfs32_h)
amd64-linux-tdep.o: amd64-linux-tdep.c $(defs_h) $(frame_h) $(gdbcore_h) \
$(regcache_h) $(osabi_h) $(symtab_h) $(gdb_string_h) $(amd64_tdep_h) \
$(solib_svr4_h)
Index: gdb-6.5/gdb/amd64-linux-nat.c
$(solib_svr4_h) $(gdbtypes_h) $(reggroups_h) $(amd64_linux_tdep_h)
Index: gdb-6.6/gdb/amd64-linux-nat.c
===================================================================
--- gdb-6.5.orig/gdb/amd64-linux-nat.c 19 Aug 2006 15:15:18 -0000 1.13
+++ gdb-6.5/gdb/amd64-linux-nat.c 1 Oct 2006 16:22:42 -0000
@@ -52,6 +52,9 @@
--- gdb-6.6.orig/gdb/amd64-linux-nat.c 2007-01-20 06:43:00.000000000 +0100
+++ gdb-6.6/gdb/amd64-linux-nat.c 2007-01-20 06:56:21.000000000 +0100
@@ -53,6 +53,9 @@
#include "amd64-tdep.h"
#include "i386-linux-tdep.h"
#include "amd64-nat.h"
@ -60,7 +60,7 @@ Index: gdb-6.5/gdb/amd64-linux-nat.c
/* Mapping between the general-purpose registers in GNU/Linux x86-64
`struct user' format and GDB's register cache layout. */
@@ -86,6 +89,35 @@ static int amd64_linux_gregset64_reg_off
@@ -87,6 +90,35 @@ static int amd64_linux_gregset64_reg_off
GNU/Linux i386 registers are all 32-bit, but since we're
little-endian we get away with that. */
@ -96,7 +96,7 @@ Index: gdb-6.5/gdb/amd64-linux-nat.c
/* From <sys/reg.h> on GNU/Linux i386. */
static int amd64_linux_gregset32_reg_offset[] =
{
@@ -104,6 +136,94 @@ static int amd64_linux_gregset32_reg_off
@@ -105,6 +137,94 @@ static int amd64_linux_gregset32_reg_off
};
@ -191,7 +191,7 @@ Index: gdb-6.5/gdb/amd64-linux-nat.c
/* Transfering the general-purpose registers between GDB, inferiors
and core files. */
@@ -406,6 +526,11 @@ _initialize_amd64_linux_nat (void)
@@ -529,6 +649,11 @@ _initialize_amd64_linux_nat (void)
t->to_fetch_registers = amd64_linux_fetch_inferior_registers;
t->to_store_registers = amd64_linux_store_inferior_registers;
@ -202,11 +202,11 @@ Index: gdb-6.5/gdb/amd64-linux-nat.c
+
/* Register the target. */
linux_nat_add_target (t);
}
Index: gdb-6.5/gdb/config.in
Index: gdb-6.6/gdb/config.in
===================================================================
--- gdb-6.5.orig/gdb/config.in 8 Aug 2006 20:32:15 -0000 1.84
+++ gdb-6.5/gdb/config.in 1 Oct 2006 16:22:42 -0000
--- gdb-6.6.orig/gdb/config.in 2006-08-08 22:32:15.000000000 +0200
+++ gdb-6.6/gdb/config.in 2007-01-20 06:56:21.000000000 +0100
@@ -373,6 +373,9 @@
/* Define to 1 if you have the <sys/poll.h> header file. */
#undef HAVE_SYS_POLL_H
@ -227,11 +227,11 @@ Index: gdb-6.5/gdb/config.in
/* Define to 1 if you have the <sys/user.h> header file. */
#undef HAVE_SYS_USER_H
Index: gdb-6.5/gdb/configure
Index: gdb-6.6/gdb/configure
===================================================================
--- gdb-6.5.orig/gdb/configure 2006-10-01 18:43:40.000000000 +0200
+++ gdb-6.5/gdb/configure 2006-10-01 18:40:44.000000000 +0200
@@ -11949,6 +11949,157 @@
--- gdb-6.6.orig/gdb/configure 2007-01-20 06:43:00.000000000 +0100
+++ gdb-6.6/gdb/configure 2007-01-20 06:56:21.000000000 +0100
@@ -9966,6 +9966,157 @@ done
@ -389,11 +389,11 @@ Index: gdb-6.5/gdb/configure
for ac_header in sys/wait.h wait.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
Index: gdb-6.5/gdb/configure.ac
Index: gdb-6.6/gdb/configure.ac
===================================================================
--- gdb-6.5.orig/gdb/configure.ac 8 Aug 2006 20:26:23 -0000 1.34
+++ gdb-6.5/gdb/configure.ac 1 Oct 2006 16:22:43 -0000
@@ -365,6 +365,7 @@ AC_CHECK_HEADERS(sys/user.h, [], [],
--- gdb-6.6.orig/gdb/configure.ac 2007-01-20 06:43:01.000000000 +0100
+++ gdb-6.6/gdb/configure.ac 2007-01-20 06:56:21.000000000 +0100
@@ -371,6 +371,7 @@ AC_CHECK_HEADERS(sys/user.h, [], [],
# include <sys/param.h>
#endif
])
@ -401,11 +401,11 @@ Index: gdb-6.5/gdb/configure.ac
AC_CHECK_HEADERS(sys/wait.h wait.h)
AC_CHECK_HEADERS(termios.h termio.h sgtty.h)
AC_CHECK_HEADERS(unistd.h)
Index: gdb-6.5/gdb/gcore.c
Index: gdb-6.6/gdb/gcore.c
===================================================================
--- gdb-6.5.orig/gdb/gcore.c 17 Dec 2005 22:33:59 -0000 1.18
+++ gdb-6.5/gdb/gcore.c 1 Oct 2006 16:22:43 -0000
@@ -314,6 +314,11 @@ gcore_create_callback (CORE_ADDR vaddr,
--- gdb-6.6.orig/gdb/gcore.c 2007-01-20 06:43:02.000000000 +0100
+++ gdb-6.6/gdb/gcore.c 2007-01-20 06:56:21.000000000 +0100
@@ -320,6 +320,11 @@ gcore_create_callback (CORE_ADDR vaddr,
asection *osec;
flagword flags = SEC_ALLOC | SEC_HAS_CONTENTS | SEC_LOAD;
@ -417,10 +417,10 @@ Index: gdb-6.5/gdb/gcore.c
/* If the memory segment has no permissions set, ignore it, otherwise
when we later try to access it for read/write, we'll get an error
or jam the kernel. */
Index: gdb-6.5/gdb/gdb_procfs32.h
Index: gdb-6.6/gdb/gdb_procfs32.h
===================================================================
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gdb-6.5/gdb/gdb_procfs32.h 1 Oct 2006 16:22:43 -0000
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.6/gdb/gdb_procfs32.h 2007-01-20 06:56:21.000000000 +0100
@@ -0,0 +1,128 @@
+#ifdef HAVE_SYS_PROCFS32_H
+#include <sys/procfs32.h>
@ -550,10 +550,10 @@ Index: gdb-6.5/gdb/gdb_procfs32.h
+#endif /* _SYS_PROCFS32_H */
+
+#endif /* HAVE_SYS_PROCFS32_H */
Index: gdb-6.5/gdb/gdb_user32.h
Index: gdb-6.6/gdb/gdb_user32.h
===================================================================
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gdb-6.5/gdb/gdb_user32.h 1 Oct 2006 16:22:43 -0000
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.6/gdb/gdb_user32.h 2007-01-20 06:56:21.000000000 +0100
@@ -0,0 +1,108 @@
+#ifdef HAVE_SYS_USER32_H
+#include <sys/user32.h>
@ -663,11 +663,11 @@ Index: gdb-6.5/gdb/gdb_user32.h
+#endif /* _SYS_USER32_H */
+
+#endif /* HAVE_SYS_USER32_H */
Index: gdb-6.5/gdb/linux-nat.c
Index: gdb-6.6/gdb/linux-nat.c
===================================================================
--- gdb-6.5.orig/gdb/linux-nat.c 16 Sep 2006 09:48:12 -0000 1.50
+++ gdb-6.5/gdb/linux-nat.c 1 Oct 2006 16:22:43 -0000
@@ -99,6 +99,15 @@ static LONGEST (*super_xfer_partial) (st
--- gdb-6.6.orig/gdb/linux-nat.c 2007-01-20 06:43:04.000000000 +0100
+++ gdb-6.6/gdb/linux-nat.c 2007-01-20 06:56:21.000000000 +0100
@@ -100,6 +100,15 @@ static LONGEST (*super_xfer_partial) (st
const gdb_byte *,
ULONGEST, LONGEST);
@ -683,7 +683,7 @@ Index: gdb-6.5/gdb/linux-nat.c
static int debug_linux_nat;
static void
show_debug_linux_nat (struct ui_file *file, int from_tty,
@@ -2562,11 +2571,11 @@ linux_nat_do_thread_registers (bfd *obfd
@@ -2715,11 +2724,11 @@ linux_nat_do_thread_registers (bfd *obfd
else
fill_gregset (&gregs, -1);
@ -700,7 +700,7 @@ Index: gdb-6.5/gdb/linux-nat.c
if (core_regset_p
&& (regset = gdbarch_regset_from_core_section (gdbarch, ".reg2",
@@ -2577,10 +2586,10 @@ linux_nat_do_thread_registers (bfd *obfd
@@ -2730,10 +2739,10 @@ linux_nat_do_thread_registers (bfd *obfd
else
fill_fpregset (&fpregs, -1);
@ -715,7 +715,7 @@ Index: gdb-6.5/gdb/linux-nat.c
#ifdef FILL_FPXREGSET
if (core_regset_p
@@ -2675,9 +2684,9 @@ linux_nat_make_corefile_notes (bfd *obfd
@@ -2828,9 +2837,9 @@ linux_nat_make_corefile_notes (bfd *obfd
strncat (psargs, get_inferior_args (),
sizeof (psargs) - strlen (psargs));
}
@ -728,11 +728,11 @@ Index: gdb-6.5/gdb/linux-nat.c
}
/* Dump information for threads. */
Index: gdb-6.5/gdb/linux-nat.h
Index: gdb-6.6/gdb/linux-nat.h
===================================================================
--- gdb-6.5.orig/gdb/linux-nat.h 23 Jul 2006 21:21:01 -0000 1.12
+++ gdb-6.5/gdb/linux-nat.h 1 Oct 2006 16:22:43 -0000
@@ -96,3 +96,12 @@ void linux_nat_add_target (struct target
--- gdb-6.6.orig/gdb/linux-nat.h 2007-01-20 06:42:58.000000000 +0100
+++ gdb-6.6/gdb/linux-nat.h 2007-01-20 06:56:21.000000000 +0100
@@ -108,3 +108,12 @@ void linux_nat_add_target (struct target
/* Update linux-nat internal state when changing from one fork
to another. */
void linux_nat_switch_fork (ptid_t new_ptid);

View File

@ -9,24 +9,14 @@
file, provide nested (overlapping) functions for the PC resolving.
--- gdb-6.5/gdb/minsyms.c-orig 2006-10-31 08:21:32.000000000 -0500
+++ gdb-6.5/gdb/minsyms.c 2006-10-31 08:24:37.000000000 -0500
@@ -464,6 +464,7 @@
objfile's minimal symbol table. See if it is the best one
overall. */
Index: ./gdb/minsyms.c
===================================================================
--- ./gdb/minsyms.c 17 Oct 2006 20:17:44 -0000 1.47
+++ ./gdb/minsyms.c 30 Oct 2006 12:41:26 -0000
@@ -511,6 +511,29 @@ lookup_minimal_symbol_by_pc_section (COR
continue;
}
+ while (0
/* Skip any absolute symbols. This is apparently what adb
and dbx do, and is needed for the CM-5. There are two
known possible problems: (1) on ELF, apparently end, edata,
@@ -473,8 +474,27 @@
NeXT are absolute. If we want special handling for this
it probably should be triggered by a special
mst_abs_or_lib or some such. */
- while (hi >= 0
- && msymbol[hi].type == mst_abs)
+ || (hi >= 0
+ && msymbol[hi].type == mst_abs)
+ /* We are behind the current symbol's size.
+ Try the previous symbol - if it is non-zero sized one it
+ may overlap the current one and reach our PC.
@ -39,16 +29,20 @@
+ Limit it only for the overlapping cases as we could harm
+ the zero-sized symbols detection logic around.
+ */
+ || (hi > 0
+ && MSYMBOL_SIZE (&msymbol[hi]) != 0
+ && pc >= (SYMBOL_VALUE_ADDRESS (&msymbol[hi])
+ + MSYMBOL_SIZE (&msymbol[hi]))
+ && pc < (SYMBOL_VALUE_ADDRESS (&msymbol[hi - 1])
+ + MSYMBOL_SIZE (&msymbol[hi - 1])))
+ )
--hi;
/* If "section" specified, skip any symbol from wrong section */
+ if (hi > 0
+ && MSYMBOL_SIZE (&msymbol[hi]) != 0
+ && pc >= (SYMBOL_VALUE_ADDRESS (&msymbol[hi])
+ + MSYMBOL_SIZE (&msymbol[hi]))
+ && pc < (SYMBOL_VALUE_ADDRESS (&msymbol[hi - 1])
+ + MSYMBOL_SIZE (&msymbol[hi - 1])))
+ {
+ hi--;
+ continue;
+ }
+
/* Otherwise, this symbol must be as good as we're going
to get. */
break;
Index: ./gdb/testsuite/gdb.arch/i386-size-overlap.c
===================================================================
--- /dev/null 1 Jan 1970 00:00:00 -0000
@ -107,10 +101,10 @@ Index: ./gdb/testsuite/gdb.arch/i386-size-overlap.c
+ " mov %esp, %ebp\n"
+ " call " SYMBOL (trap) "\n"
+ " .size " SYMBOL (main) ", .-" SYMBOL (main) "\n");
Index: ./gdb/testsuite/gdb.arch/i386-size-overlap.exp
Index: gdb/testsuite/gdb.arch/i386-size-overlap.exp
===================================================================
RCS file: gdb/testsuite/gdb.arch/i386-size-overlap.exp
diff -N gdb/testsuite/gdb.arch/i386-size-overlap.exp
diff -N ./gdb/testsuite/gdb.arch/i386-size-overlap.exp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ./gdb/testsuite/gdb.arch/i386-size-overlap.exp 30 Oct 2006 12:41:35 -0000
@@ -0,0 +1,79 @@

View File

@ -8,19 +8,19 @@ Name: gdb
# Set version to contents of gdb/version.in.
# NOTE: the FSF gdb versions are numbered N.M for official releases, like 6.3
# and, since January 2005, X.Y.Z.date for daily snapshots, like 6.3.50.20050112 # (daily snapshot from mailine), or 6.3.0.20040112 (head of the release branch).
Version: 6.5
Version: 6.6
# The release always contains a leading reserved number, start it at 0.
Release: 27%{?dist}
# The release always contains a leading reserved number, start it at 1.
Release: 1%{?dist}
License: GPL
Group: Development/Debuggers
Source: ftp://ftp.gnu.org/gnu/gdb/gdb-6.5.tar.bz2
Source: ftp://ftp.gnu.org/gnu/gdb/gdb-6.6.tar.bz2
Buildroot: %{_tmppath}/%{name}-%{version}-root
URL: http://gnu.org/software/gdb/
# For our convenience
%define gdb_src gdb-6.5
%define gdb_src gdb-6.6
%define gdb_build %{gdb_src}/build-%{_target_platform}
# Make sure we get rid of the old package gdb64, now that we have unified
@ -29,7 +29,7 @@ URL: http://gnu.org/software/gdb/
Obsoletes: gdb64
%endif
# GDB patches have the format gdb-<version>-<desc>-<YYYYMMDD>.patch;
# GDB patches have the format gdb-<version>-bz<red-hat-bz-#>-<desc>.patch;
# should include the ChangeLog.RedHat change-log entry; and should be
# created using diff -u ./gdb (not gdb-6.3/gdb).
@ -189,12 +189,6 @@ Patch169: gdb-6.3-ia64-sigill-20051115.patch
# Allow option to continue backtracing past a zero pc value
Patch170: gdb-6.3-bt-past-zero-20051201.patch
# Enable gdb to recognize stack frames annotated with the "S" augmentation.
Patch173: gdb-6.3-augmS-20060303.patch
# Enable gdb to recognize CFA value expressions introduced in Dwarf3.
Patch174: gdb-6.3-cfaval-20060303.patch
# Use bigger numbers than int.
Patch176: gdb-6.3-large-core-20051206.patch
@ -209,33 +203,18 @@ Patch178: gdb-6.3-catch-debug-registers-error-20060527.patch
# ia32el.
Patch179: gdb-6.3-ia32el-fix-waitpid-20060615.patch
# Backport GNU .hash support.
Patch180: gdb-6.5-bfd-hash-style-20060714.patch
# Bugfix segv on the source display by ^X 1 (fixes Patch130, BZ 200048).
Patch181: gdb-6.5-bz200048-find_line_pc-segv.patch
# Fix exec() from threaded program, partial CVS backport (BZ 182116).
Patch183: gdb-6.3-bz182116-exec-from-pthread.patch
# Fix occasional failure to load shared libraries (BZ 146810).
Patch184: gdb-6.3-bz146810-solib_absolute_prefix_is_empty.patch
# Bugfix object names completion (fixes Patch116, BZ 193763).
Patch185: gdb-6.3-bz193763-object-name-completion.patch
# Avoid crash of 'info threads' if stale threads exist (BZ 195429).
Patch186: gdb-6.5-bz195429-stale-threads-crash.patch
# Handle corrupted or missing location list information (BZ 196439).
Patch187: gdb-6.5-bz196439-valgrind-memcheck-compat.patch
# Testcase for corrupted or missing location list information (BZ 196439).
Patch187: gdb-6.5-bz196439-valgrind-memcheck-compat-test.patch
# Fix debuginfo addresses resolving for --emit-relocs Linux kernels (BZ 203661).
Patch188: gdb-6.5-bz203661-emit-relocs.patch
# Add support for memory nops on x86.
Patch189: gdb-6.5-opcodes-i386-nopmem.patch
# Security patch: avoid stack overflows in dwarf expression computation.
# CVE-2006-4146
Patch190: gdb-6.5-dwarf-stack-overflow.patch
@ -243,9 +222,6 @@ Patch190: gdb-6.5-dwarf-stack-overflow.patch
# Fix gdb printf command argument using "%p" (BZ 205551).
Patch191: gdb-6.5-bz205551-printf-p.patch
# Fix crash on C++ symbol failing to be demangled (BZ 206813).
Patch192: gdb-6.5-bz206813-cplusplus-symbol-null.patch
# Fix attach to stopped process, supersede `gdb-6.3-attach-stop-20051011.patch'.
# Fix attachment also to a threaded stopped process (BZ 219118).
Patch193: gdb-6.5-attach-stop.patch
@ -258,16 +234,12 @@ Patch194: gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch
Patch195: gdb-6.5-tls-of-separate-debuginfo.patch
# Fix TLS symbols resolving for shared libraries with a relative pathname.
# The testsuite needs `gdb-6.3-bz146810-solib_absolute_prefix_is_empty.patch'.
# The testsuite needs `gdb-6.5-tls-of-separate-debuginfo.patch'.
Patch196: gdb-6.5-sharedlibrary-path.patch
# Support IPv6 for gdbserver (BZ 198365).
Patch197: gdb-6.5-bz198365-IPv6.patch
# No longer disassemble invalid i386 opcodes of movQ/movA (BZ 172034).
Patch198: gdb-6.5-bz172034-disasm-i386-C6-C7.patch
# Suggest fixing your target architecture for gdbserver(1) (BZ 190810).
# FIXME: It could be autodetected.
Patch199: gdb-6.5-bz190810-gdbserver-arch-advice.patch
@ -278,13 +250,10 @@ Patch200: gdb-6.5-bz181390-memory-address-width.patch
# Fix `gcore' command for 32bit inferiors on 64bit hosts.
Patch201: gdb-6.5-gcore-i386-on-amd64.patch
# Fix deadlock accessing last address space byte; for corrupted backtraces.
Patch203: gdb-6.5-last-address-space-byte.patch
# Testcase for deadlocking on last address space byte; for corrupted backtraces.
Patch211: gdb-6.5-last-address-space-byte-test.patch
# Fix "??" resolving of symbols from (non-prelinked) debuginfo packages.
# "gdb-6.5-matching_bfd_sections.patch" is a prerequisited CVS backport.
Patch205: gdb-6.5-matching_bfd_sections.patch
Patch206: gdb-6.5-relativedebug.patch
# Fix "??" resolving of symbols from overlapping functions (nanosleep(3)).
@ -330,6 +299,13 @@ Patch229: gdb-6.5-bz140532-ppc-debug_frame-return_address-test.patch
# Fix missing testsuite .log output of testcases using get_compiler_info().
Patch230: gdb-6.5-testsuite-log.patch
# Testcase for exec() from threaded program (BZ 202689).
Patch231: gdb-6.3-bz202689-exec-from-pthread-test.patch
# Backported post gdb-6.6 release ia64 unwinding fixups.
Patch232: gdb-6.6-ia64-kernel-unwind.patch
Patch233: gdb-6.6-ia64-pc-unwind.patch
BuildRequires: ncurses-devel glibc-devel gcc make gzip texinfo dejagnu gettext
BuildRequires: flex bison sharutils
@ -413,35 +389,24 @@ and printing their data.
%patch166 -p1
%patch169 -p1
%patch170 -p1
%patch173 -p1
%patch174 -p1
%patch176 -p1
%patch177 -p1
%patch178 -p1
%patch179 -p1
%patch180 -p1
%patch181 -p1
%patch183 -p1
%patch184 -p1
%patch185 -p1
%patch186 -p1
%patch187 -p1
%patch188 -p1
%patch189 -p1
%patch190 -p1
%patch191 -p1
%patch192 -p1
%patch193 -p1
%patch194 -p1
%patch195 -p1
%patch196 -p1
#%patch197 -p1
%patch198 -p1
%patch199 -p1
%patch200 -p1
%patch201 -p1
%patch203 -p1
%patch205 -p1
%patch206 -p1
%patch207 -p1
%patch208 -p1
@ -463,6 +428,9 @@ and printing their data.
%patch228 -p1
%patch229 -p1
%patch230 -p1
%patch231 -p1
%patch232 -p1
%patch233 -p1
# Change the version that gets printed at GDB startup, so it is RedHat
# specific.
@ -625,6 +593,11 @@ fi
# don't include the files in include, they are part of binutils
%changelog
* Sat Jan 20 2007 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.6-1
- Upgrade to GDB 6.6. Drop redundant patches, forward-port remaining ones.
- Backported post gdb-6.6 release ia64 unwinding fixups.
- Testcase for exec() from threaded program (BZ 202689).
* Mon Jan 15 2007 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.5-27
- Fix the testsuite results broken in 6.5-26, stop invalid testsuite runs.

View File

@ -1 +1 @@
af6c8335230d7604aee0803b1df14f54 gdb-6.5.tar.bz2
a4df41d28dd514d64e8ccbfe125fd9a6 gdb-6.6.tar.bz2