- 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.6.orig/gdb/gcore.c
+++ gdb-6.5/gdb/gcore.c 2006-07-07 02:41:33.000000000 -0300 +++ gdb-6.6/gdb/gcore.c
@@ -462,8 +462,13 @@ gcore_copy_callback (bfd *obfd, asection @@ -475,8 +475,13 @@ gcore_copy_callback (bfd *obfd, asection
error (_("Not enough memory to create corefile.")); if (size > total_size)
old_chain = make_cleanup (xfree, memhunk); size = total_size;
+ /* Warn if read error occurs except if we were trying to read the + /* 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 + first page for ia64. The first page is marked readable, but it cannot
+ be read. */ + be read. */
if (target_read_memory (bfd_section_vma (obfd, osec), if (target_read_memory (bfd_section_vma (obfd, osec) + offset,
- memhunk, size) != 0) - memhunk, size) != 0)
+ memhunk, size) != 0 + memhunk, size) != 0
+ && (strcmp (TARGET_ARCHITECTURE->arch_name, "ia64") + && (strcmp (TARGET_ARCHITECTURE->arch_name, "ia64")
+ || bfd_section_vma (obfd, osec) != 0)) + || 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))); warning (_("Memory read failed for corefile section, %s bytes at 0x%s."),
if (!bfd_set_section_contents (obfd, osec, memhunk, 0, size)) 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.c: New test.
* gdb.arch/ia64-sigill.exp: Ditto. * 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 --- /dev/null
+++ gdb-6.5/gdb/testsuite/gdb.arch/ia64-sigill.exp 2006-07-07 03:16:54.000000000 -0300 +++ gdb-6.6/gdb/testsuite/gdb.arch/ia64-sigill.exp
@@ -0,0 +1,59 @@ @@ -0,0 +1,59 @@
+# Copyright 2005 Free Software Foundation, Inc. +# 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 "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" +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 --- /dev/null
+++ gdb-6.5/gdb/testsuite/gdb.arch/ia64-sigill.c 2006-07-07 03:16:54.000000000 -0300 +++ gdb-6.6/gdb/testsuite/gdb.arch/ia64-sigill.c
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
+#include <stdio.h> +#include <stdio.h>
+ +
@ -89,25 +89,11 @@ Index: gdb-6.5/gdb/testsuite/gdb.arch/ia64-sigill.c
+ return 0; + 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.6.orig/gdb/linux-nat.c
+++ gdb-6.5/gdb/linux-thread-db.c 2006-07-07 03:16:54.000000000 -0300 +++ gdb-6.6/gdb/linux-nat.c
@@ -926,7 +926,8 @@ thread_db_wait (ptid_t ptid, struct targ @@ -2241,7 +2241,8 @@ retry:
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:
threads can be a bit time-consuming so if we want decent threads can be a bit time-consuming so if we want decent
performance with heavily multi-threaded programs, especially when performance with heavily multi-threaded programs, especially when
they're using a high frequency timer, we'd better avoid it if we 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)) if (WIFSTOPPED (status))
{ {
@@ -2220,7 +2221,9 @@ retry: @@ -2252,7 +2253,9 @@ retry:
if (!lp->step if (!lp->step
&& signal_stop_state (signo) == 0 && signal_stop_state (signo) == 0
&& signal_print_state (signo) == 0 && signal_print_state (signo) == 0

View File

@ -21,10 +21,10 @@
* remote.h: Ditto. * remote.h: Ditto.
* dcache.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.6.orig/gdb/symfile-mem.c 2007-01-20 16:09:05.000000000 +0100
+++ gdb-6.5/gdb/symfile-mem.c 2006-07-11 02:35:49.000000000 -0300 +++ gdb-6.6/gdb/symfile-mem.c 2007-01-20 16:09:17.000000000 +0100
@@ -58,6 +58,14 @@ @@ -58,6 +58,14 @@
#include "elf/common.h" #include "elf/common.h"
@ -49,131 +49,56 @@ Index: gdb-6.5/gdb/symfile-mem.c
if (nbfd == NULL) if (nbfd == NULL)
error (_("Failed to read a valid object file image from memory.")); 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.6.orig/gdb/target.c 2007-01-20 16:09:12.000000000 +0100
+++ gdb-6.5/gdb/target.c 2006-07-11 02:35:49.000000000 -0300 +++ gdb-6.6/gdb/target.c 2007-01-20 16:09:17.000000000 +0100
@@ -83,8 +83,8 @@ static LONGEST default_xfer_partial (str @@ -56,7 +56,7 @@ static int nosymbol (char *, CORE_ADDR *
partial transfers, try either target_read_memory_partial or
target_write_memory_partial). */
-static int target_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, static void tcomplain (void) ATTR_NORETURN;
- int write);
+static int target_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr,
+ LONGEST len, int write);
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) static int return_zero (void);
de_fault (to_prepare_to_store,
(void (*) (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); noprocess);
- de_fault (deprecated_xfer_memory, de_fault (deprecated_xfer_memory,
- (int (*) (CORE_ADDR, gdb_byte *, int, int, struct mem_attrib *, struct target_ops *)) - (int (*) (CORE_ADDR, gdb_byte *, int, int, struct mem_attrib *, struct target_ops *))
+ de_fault (deprecated_xfer_memory,
+ (LONGEST (*) (CORE_ADDR, gdb_byte *, LONGEST, int, struct mem_attrib *, struct target_ops *)) + (LONGEST (*) (CORE_ADDR, gdb_byte *, LONGEST, int, struct mem_attrib *, struct target_ops *))
nomemory); nomemory);
de_fault (to_files_info, de_fault (to_files_info,
(void (*) (struct target_ops *)) (void (*) (struct target_ops *))
@@ -940,7 +940,7 @@ target_xfer_partial (struct target_ops * @@ -1178,7 +1178,7 @@ target_xfer_partial (struct target_ops *
implementing another singluar mechanism (for instance, a generic it makes no progress, and then return how much was transferred). */
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. */
int int
-target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len) -target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
+target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, LONGEST len) +target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, LONGEST len)
{ {
if (target_xfer_partial_p ()) if (target_read (&current_target, TARGET_OBJECT_MEMORY, NULL,
return xfer_using_stratum (TARGET_OBJECT_MEMORY, NULL, myaddr, memaddr, len) == len)
@@ -1015,7 +1015,7 @@ target_read_memory (CORE_ADDR memaddr, g @@ -1188,7 +1188,7 @@ target_read_memory (CORE_ADDR memaddr, g
} }
int int
-target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len) -target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len)
+target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, LONGEST len) +target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, LONGEST len)
{ {
gdb_byte *bytes = alloca (len); if (target_write (&current_target, TARGET_OBJECT_MEMORY, NULL,
memcpy (bytes, myaddr, len); myaddr, memaddr, len) == len)
@@ -1056,11 +1056,11 @@ Mode for reading from readonly sections @@ -2186,8 +2186,8 @@ debug_to_prepare_to_store (void)
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)
fprintf_unfiltered (gdb_stdlog, "target_prepare_to_store ()\n"); 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, int write, struct mem_attrib *attrib,
struct target_ops *target) 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); attrib, target);
fprintf_unfiltered (gdb_stdlog, fprintf_unfiltered (gdb_stdlog,
@ -196,11 +121,11 @@ Index: gdb-6.5/gdb/target.c
if (retval > 0) 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.6.orig/gdb/target.h 2007-01-20 16:09:10.000000000 +0100
+++ gdb-6.5/gdb/target.h 2006-07-11 02:35:49.000000000 -0300 +++ gdb-6.6/gdb/target.h 2007-01-20 16:09:17.000000000 +0100
@@ -332,10 +332,10 @@ struct target_ops @@ -347,10 +347,10 @@ struct target_ops
NOTE: cagney/2004-10-01: This has been entirely superseeded by NOTE: cagney/2004-10-01: This has been entirely superseeded by
to_xfer_partial and inferior inheritance. */ to_xfer_partial and inferior inheritance. */
@ -215,15 +140,7 @@ Index: gdb-6.5/gdb/target.h
void (*to_files_info) (struct target_ops *); void (*to_files_info) (struct target_ops *);
int (*to_insert_breakpoint) (struct bp_target_info *); int (*to_insert_breakpoint) (struct bp_target_info *);
@@ -535,21 +535,23 @@ extern void target_disconnect (char *, i @@ -605,16 +605,17 @@ extern DCACHE *target_dcache;
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);
extern int target_read_string (CORE_ADDR, char **, int, int *); 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, +extern LONGEST child_xfer_memory (CORE_ADDR, gdb_byte *, LONGEST, int,
+ struct mem_attrib *, struct target_ops *); + struct mem_attrib *, struct target_ops *);
/* Make a single attempt at transfering LEN bytes. On a successful /* Fetches the target's memory map. If one is found it is sorted
transfer, the number of bytes actually transfered is returned and and returned, after some consistency checking. Otherwise, NULL
@@ -557,11 +559,11 @@ extern int child_xfer_memory (CORE_ADDR, Index: gdb-6.6/gdb/infptrace.c
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
=================================================================== ===================================================================
--- gdb-6.5.orig/gdb/infptrace.c 2006-07-11 02:35:49.000000000 -0300 --- gdb-6.6.orig/gdb/infptrace.c 2005-12-17 23:34:01.000000000 +0100
+++ gdb-6.5/gdb/infptrace.c 2006-07-11 02:35:49.000000000 -0300 +++ gdb-6.6/gdb/infptrace.c 2007-01-20 16:09:17.000000000 +0100
@@ -368,17 +368,17 @@ store_inferior_registers (int regnum) @@ -331,17 +331,17 @@ store_inferior_registers (int regnum)
deprecated_child_ops doesn't allow memory operations to cross below deprecated_child_ops doesn't allow memory operations to cross below
us in the target stack anyway. */ us in the target stack anyway. */
@ -291,11 +192,11 @@ Index: gdb-6.5/gdb/infptrace.c
PTRACE_TYPE_RET *buffer; PTRACE_TYPE_RET *buffer;
struct cleanup *old_chain = NULL; 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.6.orig/gdb/dcache.c 2006-08-15 20:46:24.000000000 +0200
+++ gdb-6.5/gdb/dcache.c 2006-07-11 02:35:49.000000000 -0300 +++ gdb-6.6/gdb/dcache.c 2007-01-20 16:09:17.000000000 +0100
@@ -527,9 +527,9 @@ dcache_free (DCACHE *dcache) @@ -519,9 +519,9 @@ dcache_free (DCACHE *dcache)
This routine is indended to be called by remote_xfer_ functions. */ 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 i;
int (*xfunc) (DCACHE *dcache, CORE_ADDR addr, gdb_byte *ptr); 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.6.orig/gdb/dcache.h 2005-12-17 23:33:59.000000000 +0100
+++ gdb-6.5/gdb/dcache.h 2006-07-11 02:35:49.000000000 -0300 +++ gdb-6.6/gdb/dcache.h 2007-01-20 16:09:17.000000000 +0100
@@ -37,7 +37,7 @@ void dcache_free (DCACHE *); @@ -37,7 +37,7 @@ void dcache_free (DCACHE *);
/* Simple to call from <remote>_xfer_memory */ /* Simple to call from <remote>_xfer_memory */
@ -321,11 +222,11 @@ Index: gdb-6.5/gdb/dcache.h
+ LONGEST len, int should_write); + LONGEST len, int should_write);
#endif /* DCACHE_H */ #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.6.orig/gdb/exec.c 2006-11-10 20:20:35.000000000 +0100
+++ gdb-6.5/gdb/exec.c 2006-07-11 02:35:49.000000000 -0300 +++ gdb-6.6/gdb/exec.c 2007-01-20 16:09:17.000000000 +0100
@@ -447,8 +447,8 @@ map_vmap (bfd *abfd, bfd *arch) @@ -452,8 +452,8 @@ map_vmap (bfd *abfd, bfd *arch)
The same routine is used to handle both core and exec files; The same routine is used to handle both core and exec files;
we just tail-call it with more arguments to select between them. */ 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) struct mem_attrib *attrib, struct target_ops *target)
{ {
int res; 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.6.orig/gdb/linux-nat.c 2007-01-20 16:09:14.000000000 +0100
+++ gdb-6.5/gdb/linux-nat.c 2006-07-11 02:36:39.000000000 -0300 +++ gdb-6.6/gdb/linux-nat.c 2007-01-20 16:09:17.000000000 +0100
@@ -3264,7 +3264,7 @@ linux_xfer_partial (struct target_ops *o @@ -3266,7 +3266,7 @@ linux_xfer_partial (struct target_ops *o
Revert when Bugzilla 147436 is fixed. */ Revert when Bugzilla 147436 is fixed. */
if (iterate_over_lwps (ia64_linux_check_stack_region, &range) != NULL) if (iterate_over_lwps (ia64_linux_check_stack_region, &range) != NULL)
{ /* This region contains ia64 rse registers, we have to re-read. */ { /* 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. */ /* Re-read register stack area. */
xxfer = super_xfer_partial (ops, object, annex, 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.6.orig/gdb/remote.c 2007-01-20 16:09:12.000000000 +0100
+++ gdb-6.5/gdb/remote.c 2006-07-11 02:37:02.000000000 -0300 +++ gdb-6.6/gdb/remote.c 2007-01-20 16:09:17.000000000 +0100
@@ -27,6 +27,7 @@ @@ -27,6 +27,7 @@
#include "gdb_string.h" #include "gdb_string.h"
#include <ctype.h> #include <ctype.h>
@ -361,7 +262,7 @@ Index: gdb-6.5/gdb/remote.c
#include "inferior.h" #include "inferior.h"
#include "bfd.h" #include "bfd.h"
#include "symfile.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 if SHOULD_WRITE is nonzero. Returns length of data written or
read; 0 for error. TARGET is unused. */ 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, int should_write, struct mem_attrib *attrib,
struct target_ops *target) struct target_ops *target)
{ {
CORE_ADDR targ_addr;
int targ_len;
int res; int res;
+ int len; + int len;
+ +
@ -384,28 +283,21 @@ Index: gdb-6.5/gdb/remote.c
+ +
+ len = (int)mem_len; + len = (int)mem_len;
/* Should this be the selected frame? */ if (should_write)
gdbarch_remote_translate_xfer_address (current_gdbarch, res = remote_write_bytes (mem_addr, buffer, mem_len);
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,
else else
res = remote_read_bytes (targ_addr, buffer, targ_len); res = remote_read_bytes (mem_addr, buffer, mem_len);
- return res; - return res;
+ return (LONGEST)res; + return (LONGEST)res;
} }
static void /* Sends a packet with content determined by the printf format string
Index: gdb-6.5/gdb/remote-sim.c 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.6.orig/gdb/remote-sim.c 2006-11-10 20:20:36.000000000 +0100
+++ gdb-6.5/gdb/remote-sim.c 2006-07-11 02:35:49.000000000 -0300 +++ gdb-6.6/gdb/remote-sim.c 2007-01-20 16:10:10.000000000 +0100
@@ -742,11 +742,14 @@ gdbsim_prepare_to_store (void) @@ -745,11 +745,14 @@ gdbsim_prepare_to_store (void)
Returns the number of bytes transferred. */ 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. */ + /* Convert to len type that sim_read and sim_write can handle. */
+ int xfer_len = (int)len; + int xfer_len = (int)len;
+ +
if (!program_loaded) /* If no program is running yet, then ignore the simulator for
error (_("No program loaded.")); memory. Pass the request down to the next target, hopefully
an exec file. */
@@ -756,22 +759,22 @@ gdbsim_xfer_inferior_memory (CORE_ADDR m @@ -765,22 +768,22 @@ gdbsim_xfer_inferior_memory (CORE_ADDR m
printf_filtered ("gdbsim_xfer_inferior_memory: myaddr 0x"); printf_filtered ("gdbsim_xfer_inferior_memory: myaddr 0x");
gdb_print_host_address (myaddr, gdb_stdout); gdb_print_host_address (myaddr, gdb_stdout);
printf_filtered (", memaddr 0x%s, len %d, write %d\n", 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.6.orig/gdb/doc/observer.texi
+++ gdb-6.5/gdb/doc/observer.texi 2006-07-07 04:19:00.000000000 -0300 +++ gdb-6.6/gdb/doc/observer.texi
@@ -119,6 +119,10 @@ when @value{GDBN} calls this observer, t @@ -119,6 +119,10 @@ when @value{GDBN} calls this observer, t
haven't been loaded yet. haven't been loaded yet.
@end deftypefun @end deftypefun
@ -13,11 +13,11 @@ Index: gdb-6.5/gdb/doc/observer.texi
@deftypefun void solib_unloaded (struct so_list *@var{solib}) @deftypefun void solib_unloaded (struct so_list *@var{solib})
The shared library specified by @var{solib} has been unloaded. The shared library specified by @var{solib} has been unloaded.
@end deftypefun @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.6.orig/gdb/linux-nat.c
+++ gdb-6.5/gdb/linux-nat.c 2006-07-07 04:20:40.000000000 -0300 +++ gdb-6.6/gdb/linux-nat.c
@@ -802,11 +802,23 @@ iterate_over_lwps (int (*callback) (stru @@ -803,11 +803,23 @@ iterate_over_lwps (int (*callback) (stru
{ {
struct lwp_info *lp, *lpnext; struct lwp_info *lp, *lpnext;
@ -72,19 +72,19 @@ Index: gdb-6.5/gdb/linux-nat.c
/* Save the original signal mask. */ /* Save the original signal mask. */
sigprocmask (SIG_SETMASK, NULL, &normal_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.6.orig/gdb/target.c
+++ gdb-6.5/gdb/target.c 2006-07-07 04:19:00.000000000 -0300 +++ gdb-6.6/gdb/target.c
@@ -39,6 +39,7 @@ @@ -40,6 +40,7 @@
#include "regcache.h"
#include "gdb_assert.h" #include "gdb_assert.h"
#include "gdbcore.h" #include "gdbcore.h"
#include "exceptions.h"
+#include "observer.h" +#include "observer.h"
static void target_info (char *, int); 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); (*current_target.to_load) (arg, from_tty);
} }
@ -98,11 +98,11 @@ Index: gdb-6.5/gdb/target.c
static int static int
nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write, nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write,
struct target_ops *t) 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.6.orig/gdb/target.h
+++ gdb-6.5/gdb/target.h 2006-07-07 04:19:00.000000000 -0300 +++ gdb-6.6/gdb/target.h
@@ -783,8 +783,7 @@ int target_follow_fork (int follow_child @@ -891,8 +891,7 @@ int target_follow_fork (int follow_child
/* The inferior process has died. Do what is right. */ /* 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.6.orig/gdb/dwarf2read.c
+++ gdb-6.5/gdb/dwarf2read.c 2006-07-11 02:56:58.000000000 -0300 +++ gdb-6.6/gdb/dwarf2read.c
@@ -1208,7 +1208,7 @@ dwarf2_build_psymtabs (struct objfile *o @@ -1219,7 +1219,7 @@ dwarf2_build_psymtabs (struct objfile *o
else else
dwarf2_per_objfile->loc_buffer = NULL; dwarf2_per_objfile->loc_buffer = NULL;
@ -11,11 +11,11 @@ Index: gdb-6.5/gdb/dwarf2read.c
|| (objfile->global_psymbols.size == 0 || (objfile->global_psymbols.size == 0
&& objfile->static_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.6.orig/gdb/auxv.c
+++ gdb-6.5/gdb/auxv.c 2006-07-11 02:47:11.000000000 -0300 +++ gdb-6.6/gdb/auxv.c
@@ -119,7 +119,7 @@ target_auxv_read (struct target_ops *ops @@ -82,7 +82,7 @@ procfs_xfer_auxv (struct target_ops *ops
Return 1 if an entry was read into *TYPEP and *VALP. */ Return 1 if an entry was read into *TYPEP and *VALP. */
int int
target_auxv_parse (struct target_ops *ops, gdb_byte **readptr, 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); const int sizeof_auxv_field = TYPE_LENGTH (builtin_type_void_data_ptr);
gdb_byte *ptr = *readptr; 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 an error getting the information. On success, return 1 after
storing the entry's value field in *VALP. */ storing the entry's value field in *VALP. */
int int
@ -35,9 +35,9 @@ Index: gdb-6.5/gdb/auxv.c
+ CORE_ADDR val; + CORE_ADDR val;
+ ULONGEST at_type; + ULONGEST at_type;
gdb_byte *data; 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; 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; return n;
while (1) while (1)
@ -50,7 +50,7 @@ Index: gdb-6.5/gdb/auxv.c
{ {
xfree (data); xfree (data);
*valp = val; *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 int
fprint_target_auxv (struct ui_file *file, struct target_ops *ops) 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; + CORE_ADDR val;
+ ULONGEST at_type; + ULONGEST at_type;
gdb_byte *data; gdb_byte *data;
int len = target_auxv_read (ops, &data); LONGEST len = target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL,
gdb_byte *ptr = data; &data);
@@ -191,14 +193,14 @@ fprint_target_auxv (struct ui_file *file @@ -155,14 +157,14 @@ fprint_target_auxv (struct ui_file *file
if (len <= 0) if (len <= 0)
return len; return len;
@ -77,7 +77,7 @@ Index: gdb-6.5/gdb/auxv.c
{ {
#define TAG(tag, text, kind) \ #define TAG(tag, text, kind) \
case tag: name = #tag; description = text; flavor = kind; break 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 ", fprintf_filtered (file, "%-4s %-20s %-30s ",
@ -86,11 +86,11 @@ Index: gdb-6.5/gdb/auxv.c
switch (flavor) switch (flavor)
{ {
case dec: 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.6.orig/gdb/auxv.h
+++ gdb-6.5/gdb/auxv.h 2006-07-11 02:47:11.000000000 -0300 +++ gdb-6.6/gdb/auxv.h
@@ -43,14 +43,14 @@ extern LONGEST target_auxv_read (struct @@ -37,14 +37,14 @@ struct target_ops; /* Forward declarati
Return 1 if an entry was read into *TYPEP and *VALP. */ Return 1 if an entry was read into *TYPEP and *VALP. */
extern int target_auxv_parse (struct target_ops *ops, extern int target_auxv_parse (struct target_ops *ops,
gdb_byte **readptr, gdb_byte *endptr, 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. */ /* 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); 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.6.orig/gdb/breakpoint.h
+++ gdb-6.5/gdb/breakpoint.h 2006-07-11 02:47:11.000000000 -0300 +++ gdb-6.6/gdb/breakpoint.h
@@ -159,6 +159,7 @@ enum enable_state @@ -159,6 +159,7 @@ enum enable_state
automatically enabled and reset when the call automatically enabled and reset when the call
"lands" (either completes, or stops at another "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_load_event_breakpoint (char *, int, char *, char *);
extern void create_solib_unload_event_breakpoint (char *, int, 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.6.orig/gdb/symfile-mem.c
+++ gdb-6.5/gdb/symfile-mem.c 2006-07-11 02:56:55.000000000 -0300 +++ gdb-6.6/gdb/symfile-mem.c
@@ -110,7 +110,7 @@ symbol_file_add_from_memory (struct bfd @@ -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. */ /* This might change our ideas about frames already looked at. */
reinit_frame_cache (); 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.6.orig/gdb/infrun.c
+++ gdb-6.5/gdb/infrun.c 2006-07-11 02:56:58.000000000 -0300 +++ gdb-6.6/gdb/infrun.c
@@ -2230,6 +2230,11 @@ process_event_stop_test: @@ -2249,6 +2249,11 @@ process_event_stop_test:
code segments in shared libraries might be mapped in now. */ code segments in shared libraries might be mapped in now. */
re_enable_breakpoints_in_shlibs (); re_enable_breakpoints_in_shlibs ();
@ -161,11 +161,11 @@ Index: gdb-6.5/gdb/infrun.c
/* If requested, stop when the dynamic linker notifies /* If requested, stop when the dynamic linker notifies
gdb of events. This allows the user to get control gdb of events. This allows the user to get control
and place breakpoints in initializer routines for 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.6.orig/gdb/objfiles.c
+++ gdb-6.5/gdb/objfiles.c 2006-07-11 02:47:11.000000000 -0300 +++ gdb-6.6/gdb/objfiles.c
@@ -47,6 +47,9 @@ @@ -50,6 +50,9 @@
#include "dictionary.h" #include "dictionary.h"
#include "source.h" #include "source.h"
@ -175,7 +175,7 @@ Index: gdb-6.5/gdb/objfiles.c
/* Prototypes for local functions */ /* Prototypes for local functions */
static void objfile_alloc_data (struct objfile *objfile); 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 CORE_ADDR
entry_point_address (void) 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. /* 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.6.orig/gdb/solib-svr4.c
+++ gdb-6.5/gdb/solib-svr4.c 2006-07-11 02:47:11.000000000 -0300 +++ gdb-6.6/gdb/solib-svr4.c
@@ -34,6 +34,8 @@ @@ -34,6 +34,8 @@
#include "gdbcore.h" #include "gdbcore.h"
#include "target.h" #include "target.h"
@ -209,7 +209,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
#include "gdb_assert.h" #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 */ /* Local function prototypes */
@ -219,7 +219,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
static CORE_ADDR bfd_lookup_symbol (bfd *, char *, flagword); 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; struct bfd_section *dyninfo_sect;
int dyninfo_sect_size; 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. /* Find the DT_DEBUG entry in the the .dynamic section.
For mips elf we look for DT_MIPS_RLD_MAP, mips elf apparently has 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, dyn_ptr = bfd_h_get_32 (exec_bfd,
(bfd_byte *) x_dynp->d_un.d_ptr); (bfd_byte *) x_dynp->d_un.d_ptr);
@ -314,7 +314,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
return dyn_ptr; return dyn_ptr;
} }
else if (dyn_tag == DT_MIPS_RLD_MAP) 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 (); 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, return read_memory_typed_address (debug_base + lmo->r_map_offset,
builtin_type_void_data_ptr); 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; struct so_list **link_ptr = &head;
CORE_ADDR ldsomap = 0; 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 /* Make sure we've looked up the inferior's dynamic linker's base
structure. */ structure. */
if (! debug_base) 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 /* If we can't find the dynamic linker's base structure, this
must not be a dynamically linked executable. Hmm. */ must not be a dynamically linked executable. Hmm. */
if (! debug_base) if (! debug_base)
- return 0; - return svr4_default_sos ();
+ { + {
+ if (debug_solib) + if (debug_solib)
+ fprintf_unfiltered (gdb_stdlog, + fprintf_unfiltered (gdb_stdlog,
+ "svr4_current_sos: no DT_DEBUG found in %s -- return now\n", + "svr4_current_sos: no DT_DEBUG found in %s -- return now\n",
+ exec_bfd->filename); + exec_bfd->filename);
+ return 0; + return svr4_default_sos ();
+ } + }
} }
/* Walk the inferior's link map list, and build our list of /* 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", + "svr4_current_sos: walk link map in %s\n",
+ exec_bfd->filename); + exec_bfd->filename);
lm = solib_svr4_r_map (); lm = solib_svr4_r_map ();
while (lm) while (lm)
{ @@ -742,23 +826,103 @@ svr4_current_sos (void)
@@ -697,23 +781,103 @@ svr4_current_sos (void)
new->lm_info->lm = xzalloc (lmo->link_map_size); new->lm_info->lm = xzalloc (lmo->link_map_size);
make_cleanup (xfree, new->lm_info->lm); 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, target_read_string (LM_NAME (new), &buffer,
SO_NAME_MAX_PATH_SIZE - 1, &errcode); SO_NAME_MAX_PATH_SIZE - 1, &errcode);
if (errcode != 0) if (errcode != 0)
@@ -721,22 +885,37 @@ svr4_current_sos (void) @@ -766,22 +930,37 @@ svr4_current_sos (void)
safe_strerror (errcode)); safe_strerror (errcode));
else else
{ {
@ -519,9 +519,9 @@ Index: gdb-6.5/gdb/solib-svr4.c
} }
} }
@@ -750,6 +929,11 @@ svr4_current_sos (void) @@ -798,6 +977,11 @@ svr4_current_sos (void)
discard_cleanups (old_chain); if (head == NULL)
} return svr4_default_sos ();
+ if (debug_solib) + if (debug_solib)
+ fprintf_unfiltered (gdb_stdlog, + fprintf_unfiltered (gdb_stdlog,
@ -531,7 +531,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
return head; 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 /* On some systems, the only way to recognize the link map entry for
the main executable file is by looking at its name. Return the main executable file is by looking at its name. Return
non-zero iff SONAME matches one of the known main executable names. */ 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 static int
match_main (char *soname) match_main (char *soname)
{ {
@@ -840,6 +1024,7 @@ match_main (char *soname) @@ -888,6 +1072,7 @@ match_main (char *soname)
return (0); 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 /* Return 1 if PC lies in the dynamic symbol resolution code of the
SVR4 run time loader. */ 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 /* Find the .interp section; if not found, warn the user and drop
into the old breakpoint at symbol code. */ into the old breakpoint at symbol code. */
interp_sect = bfd_get_section_by_name (exec_bfd, ".interp"); 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) if (interp_sect)
{ {
unsigned int interp_sect_size; unsigned int interp_sect_size;
@@ -972,6 +1162,9 @@ enable_break (void) @@ -1025,6 +1215,9 @@ enable_break (void)
if (tmp_fd >= 0) if (tmp_fd >= 0)
tmp_bfd = bfd_fopen (tmp_pathname, gnutarget, FOPEN_RB, tmp_fd); 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) if (tmp_bfd == NULL)
goto bkpt_at_symbol; goto bkpt_at_symbol;
@@ -1052,6 +1245,9 @@ enable_break (void) @@ -1111,6 +1304,9 @@ enable_break (void)
if (sym_addr != 0) if (sym_addr != 0)
{ {
create_solib_event_breakpoint (load_addr + sym_addr); create_solib_event_breakpoint (load_addr + sym_addr);
@ -580,7 +580,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
return 1; 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); while (stop_signal != TARGET_SIGNAL_TRAP);
stop_soon = NO_STOP_QUIETLY; stop_soon = NO_STOP_QUIETLY;
#endif /* defined(_SCO_DS) */ #endif /* defined(_SCO_DS) */
@ -589,7 +589,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
} }
static void 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; return lmp;
} }
@ -665,7 +665,7 @@ Index: gdb-6.5/gdb/solib-svr4.c
static struct target_so_ops svr4_so_ops; 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. */ /* FIXME: Don't do this here. *_gdbarch_init() should set so_ops. */
current_target_so_ops = &svr4_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."); + "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.6.orig/gdb/varobj.c
+++ gdb-6.5/gdb/varobj.c 2006-07-11 02:56:57.000000000 -0300 +++ gdb-6.6/gdb/varobj.c
@@ -870,6 +870,62 @@ varobj_list (struct varobj ***varlist) @@ -870,6 +870,62 @@ varobj_list (struct varobj ***varlist)
return rootcount; 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 /* Update the values for a variable and its children. This is a
two-pronged attack. First, re-parse the value for the root's two-pronged attack. First, re-parse the value for the root's
expression to see if it's changed. Then go all the way 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.6.orig/gdb/solist.h
+++ gdb-6.5/gdb/solist.h 2006-07-11 02:47:11.000000000 -0300 +++ gdb-6.6/gdb/solist.h
@@ -62,6 +62,8 @@ struct so_list @@ -62,6 +62,8 @@ struct so_list
bfd *abfd; bfd *abfd;
char symbols_loaded; /* flag: symbols read in yet? */ 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. */ +/* Controls the printing of debugging output. */
+extern int debug_solib; +extern int debug_solib;
#endif #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.6.orig/gdb/varobj.h
+++ gdb-6.5/gdb/varobj.h 2006-07-11 02:47:11.000000000 -0300 +++ gdb-6.6/gdb/varobj.h
@@ -99,4 +99,6 @@ extern int varobj_list (struct varobj ** @@ -99,4 +99,6 @@ extern int varobj_list (struct varobj **
extern int varobj_update (struct varobj **varp, struct varobj ***changelist); 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); +extern void varobj_refresh(void);
+ +
#endif /* VAROBJ_H */ #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.6.orig/gdb/symfile.c
+++ gdb-6.5/gdb/symfile.c 2006-07-11 02:56:57.000000000 -0300 +++ gdb-6.6/gdb/symfile.c
@@ -49,6 +49,7 @@ @@ -49,6 +49,7 @@
#include "readline/readline.h" #include "readline/readline.h"
#include "gdb_assert.h" #include "gdb_assert.h"
@ -799,8 +799,8 @@ Index: gdb-6.5/gdb/symfile.c
+#include "varobj.h" +#include "varobj.h"
#include "observer.h" #include "observer.h"
#include "exec.h" #include "exec.h"
#include "parser-defs.h"
@@ -658,7 +659,7 @@ syms_from_objfile (struct objfile *objfi @@ -659,7 +660,7 @@ syms_from_objfile (struct objfile *objfi
/* Now either addrs or offsets is non-zero. */ /* 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 /* We will modify the main symbol table, make sure that all its users
will be cleaned up if an error occurs during symbol reading. */ 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 We no longer warn if the lowest section is not a text segment (as
happens for the PA64 port. */ happens for the PA64 port. */
@ -818,7 +818,7 @@ Index: gdb-6.5/gdb/symfile.c
{ {
asection *lower_sect; asection *lower_sect;
asection *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 /* 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 old main symbol file. Otherwise it is sufficient to fixup all the
breakpoints that may have been redefined by this symbol file. */ 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. */ /* We're done reading the symbol file; finish off complaints. */
clear_complaints (&symfile_complaints, 0, verbo); 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. */ interactively wiping out any existing symbols. */
if ((have_full_symbols () || have_partial_symbols ()) if ((have_full_symbols () || have_partial_symbols ())
@ -851,7 +851,7 @@ Index: gdb-6.5/gdb/symfile.c
&& from_tty && from_tty
&& !query ("Load new symbol table from \"%s\"? ", name)) && !query ("Load new symbol table from \"%s\"? ", name))
error (_("Not confirmed.")); 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) symfile_objfile->name)
: !query (_("Discard symbol table? ")))) : !query (_("Discard symbol table? "))))
error (_("Not confirmed.")); error (_("Not confirmed."));
@ -862,7 +862,7 @@ Index: gdb-6.5/gdb/symfile.c
free_all_objfiles (); free_all_objfiles ();
/* solib descriptors may have handles to objfiles. Since their /* 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 as symbol reading was successful. */
discard_cleanups (old_cleanups); 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 /* 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 and now, we *want* this to be out of date, so don't call stat
again now. */ again now. */
@@ -2529,6 +2540,7 @@ clear_symtab_users (void) @@ -2579,6 +2590,7 @@ clear_symtab_users (void)
clear_pc_function_cache (); clear_pc_function_cache ();
if (deprecated_target_new_objfile_hook) if (deprecated_target_new_objfile_hook)
deprecated_target_new_objfile_hook (NULL); deprecated_target_new_objfile_hook (NULL);
+ varobj_refresh (); + varobj_refresh ();
}
static void /* Clear globals which might have pointed into a removed objfile.
Index: gdb-6.5/gdb/breakpoint.c 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.6.orig/gdb/breakpoint.c
+++ gdb-6.5/gdb/breakpoint.c 2006-07-11 02:56:59.000000000 -0300 +++ gdb-6.6/gdb/breakpoint.c
@@ -782,15 +782,15 @@ insert_watchpoints_for_new_thread (ptid_ @@ -781,15 +781,15 @@ insert_watchpoints_for_new_thread (ptid_
struct value *v = b->owner->val_chain; struct value *v = b->owner->val_chain;
/* Look at each value on the value 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 /* We only watch structs and arrays if user asked
for it explicitly, never if they just happen to 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; CORE_ADDR addr;
int len, type; int len, type;
@ -913,7 +913,7 @@ Index: gdb-6.5/gdb/breakpoint.c
type = hw_write; type = hw_write;
if (b->owner->type == bp_read_watchpoint) if (b->owner->type == bp_read_watchpoint)
type = hw_read; 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_read_watchpoint
|| b->type == bp_access_watchpoint) || b->type == bp_access_watchpoint)
{ {
@ -929,7 +929,7 @@ Index: gdb-6.5/gdb/breakpoint.c
if (v == b->val_chain if (v == b->val_chain
|| (TYPE_CODE (vtype) != TYPE_CODE_STRUCT || (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; CORE_ADDR vaddr;
@ -943,7 +943,7 @@ Index: gdb-6.5/gdb/breakpoint.c
b->watchpoint_triggered = 1; 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; bs->stop = 0;
continue; continue;
} }
@ -959,7 +959,7 @@ Index: gdb-6.5/gdb/breakpoint.c
if (v == b->val_chain if (v == b->val_chain
|| (TYPE_CODE (vtype) != TYPE_CODE_STRUCT || (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; CORE_ADDR vaddr;
@ -973,15 +973,15 @@ Index: gdb-6.5/gdb/breakpoint.c
must_check_value = 1; must_check_value = 1;
} }
} }
@@ -3931,6 +3931,7 @@ describe_other_breakpoints (CORE_ADDR pc @@ -3937,6 +3937,7 @@ describe_other_breakpoints (CORE_ADDR pc
b->number, printf_filtered ("%s%s ",
((b->enable_state == bp_disabled || ((b->enable_state == bp_disabled ||
b->enable_state == bp_shlib_disabled || b->enable_state == bp_shlib_disabled ||
+ b->enable_state == bp_startup_disabled || + b->enable_state == bp_startup_disabled ||
b->enable_state == bp_call_disabled) b->enable_state == bp_call_disabled)
? " (disabled)" ? " (disabled)"
: b->enable_state == bp_permanent : 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 static void
solib_load_unload_1 (char *hookname, int tempflag, char *dll_pathname, solib_load_unload_1 (char *hookname, int tempflag, char *dll_pathname,
char *cond_string, enum bptype bp_kind) 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->loc->duplicate
&& b->enable_state != bp_disabled && b->enable_state != bp_disabled
&& b->enable_state != bp_shlib_disabled && b->enable_state != bp_shlib_disabled
@ -1052,7 +1052,7 @@ Index: gdb-6.5/gdb/breakpoint.c
&& !b->pending && !b->pending
&& b->enable_state != bp_call_disabled) && 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; break;
save_enable = b->enable_state; save_enable = b->enable_state;
@ -1062,10 +1062,10 @@ Index: gdb-6.5/gdb/breakpoint.c
b->enable_state = bp_disabled; b->enable_state = bp_disabled;
else else
/* If resetting a shlib-disabled breakpoint, we don't want to /* 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.6.orig/gdb/solib.c
+++ gdb-6.5/gdb/solib.c 2006-07-11 02:47:11.000000000 -0300 +++ gdb-6.6/gdb/solib.c
@@ -72,6 +72,8 @@ solib_ops (struct gdbarch *gdbarch) @@ -72,6 +72,8 @@ solib_ops (struct gdbarch *gdbarch)
/* external data declarations */ /* external data declarations */
@ -1084,7 +1084,7 @@ Index: gdb-6.5/gdb/solib.c
/* /*
GLOBAL FUNCTION GLOBAL FUNCTION
@@ -372,7 +376,6 @@ free_so (struct so_list *so) @@ -376,7 +380,6 @@ free_so (struct so_list *so)
xfree (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. */ /* Return address of first so_list entry in master shared object list. */
struct so_list * struct so_list *
master_so_list (void) master_so_list (void)
@@ -380,7 +383,6 @@ master_so_list (void) @@ -384,7 +387,6 @@ master_so_list (void)
return so_list_head; 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. */ /* A small stub to get us past the arg-passing pinhole of catch_errors. */
static int 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? */ /* Have we already loaded this shared object? */
ALL_OBJFILES (so->objfile) ALL_OBJFILES (so->objfile)
{ {
@ -1144,7 +1144,7 @@ Index: gdb-6.5/gdb/solib.c
free_section_addr_info (sap); free_section_addr_info (sap);
return (1); 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. */ the inferior's current list. */
while (i) while (i)
{ {
@ -1155,7 +1155,7 @@ Index: gdb-6.5/gdb/solib.c
if (! strcmp (gdb->so_original_name, i->so_original_name)) if (! strcmp (gdb->so_original_name, i->so_original_name))
break; 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. */ /* Fill in the rest of each of the `struct so_list' nodes. */
for (i = inferior; i; i = i->next) 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 /* Notify any observer that the shared object has been
loaded now that we've added it to GDB's tables. */ 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 +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, reload_shared_libraries,
show_solib_search_path, show_solib_search_path,
&setlist, &showlist); &setlist, &showlist);
@ -1240,10 +1240,10 @@ Index: gdb-6.5/gdb/solib.c
+ NULL, NULL, + NULL, NULL,
+ &setdebuglist, &showdebuglist); + &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.6.orig/gdb/elfread.c
+++ gdb-6.5/gdb/elfread.c 2006-07-11 02:47:11.000000000 -0300 +++ gdb-6.6/gdb/elfread.c
@@ -556,7 +556,7 @@ elf_symfile_read (struct objfile *objfil @@ -556,7 +556,7 @@ elf_symfile_read (struct objfile *objfil
/* If we are reinitializing, or if we have never loaded syms yet, /* If we are reinitializing, or if we have never loaded syms yet,
set table to empty. MAINLINE is cleared so that *_read_psymtab set table to empty. MAINLINE is cleared so that *_read_psymtab

View File

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

View File

@ -1,13 +1,8 @@
Index: ./gdb/testsuite/ChangeLog Index: gdb-6.6/gdb/testsuite/gdb.base/sepdebug.exp
2005-04-02 Andrew Cagney <cagney@gnu.org> ===================================================================
--- gdb-6.6.orig/gdb/testsuite/gdb.base/sepdebug.exp 2006-10-17 22:17:45.000000000 +0200
* gdb.base/sepdebug.exp: Check that things fail when the debug +++ gdb-6.6/gdb/testsuite/gdb.base/sepdebug.exp 2007-01-20 18:39:26.000000000 +0100
info is corrupt. @@ -953,3 +953,40 @@ if [istarget "*-*-vxworks*"] {
* 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 @@
send_gdb "set args main\n" send_gdb "set args main\n"
gdb_expect -re ".*$gdb_prompt $" {} gdb_expect -re ".*$gdb_prompt $" {}
} }
@ -33,6 +28,11 @@ Index: ./gdb/testsuite/ChangeLog
+} +}
+remote_exec build "cp $corrupt_debug_file ${existing_binfile}.debug" +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" +set test "A corrupt debug file gets a warning"
+gdb_test_multiple "file $existing_binfile" "$test" { +gdb_test_multiple "file $existing_binfile" "$test" {
+ -re "warning:.*mismatch.*" { + -re "warning:.*mismatch.*" {
@ -43,8 +43,10 @@ Index: ./gdb/testsuite/ChangeLog
+ exp_continue + exp_continue
+ } + }
+} +}
--- /dev/null 2005-04-02 11:30:32.604931736 -0500 Index: gdb-6.6/gdb/testsuite/gdb.base/sepdebug2.c
+++ ./gdb/testsuite/gdb.base/sepdebug2.c 2005-04-02 13:09:31.000000000 -0500 ===================================================================
--- /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 @@ @@ -0,0 +1,5 @@
+int +int
+main (int argc, char *argv[], char *envp[]) +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.6.orig/gdb/configure
+++ gdb-6.5/gdb/configure 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/configure
@@ -20125,7 +20125,8 @@ fi @@ -20991,7 +20991,8 @@ fi
# gdb/doc/gdbint.texinfo. # gdb/doc/gdbint.texinfo.
build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \ build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \
-Wformat -Wparentheses -Wpointer-arith -Wformat-nonliteral \ -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. # GCC supports -Wuninitialized only with -O or -On, n != 0.
if test x${CFLAGS+set} = xset; then 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.6.orig/gdb/mi/mi-cmd-env.c
+++ gdb-6.5/gdb/mi/mi-cmd-env.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/mi/mi-cmd-env.c
@@ -126,7 +126,7 @@ mi_cmd_env_path (char *command, char **a @@ -126,7 +126,7 @@ mi_cmd_env_path (char *command, char **a
static struct mi_opt opts[] = static struct mi_opt opts[] =
{ {
@ -34,10 +34,10 @@ Index: gdb-6.5/gdb/mi/mi-cmd-env.c
}; };
dont_repeat (); 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.6.orig/gdb/mi/mi-getopt.c
+++ gdb-6.5/gdb/mi/mi-getopt.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/mi/mi-getopt.c
@@ -82,7 +82,7 @@ mi_valid_noargs (const char *prefix, int @@ -82,7 +82,7 @@ mi_valid_noargs (const char *prefix, int
char *optarg; char *optarg;
static struct mi_opt opts[] = 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) 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.6.orig/gdb/mi/mi-cmd-break.c
+++ gdb-6.5/gdb/mi/mi-cmd-break.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/mi/mi-cmd-break.c
@@ -90,7 +90,7 @@ mi_cmd_break_insert (char *command, char @@ -90,7 +90,7 @@ mi_cmd_break_insert (char *command, char
{"c", CONDITION_OPT, 1}, {"c", CONDITION_OPT, 1},
{"i", IGNORE_COUNT_OPT, 1}, {"i", IGNORE_COUNT_OPT, 1},
@ -69,10 +69,10 @@ Index: gdb-6.5/gdb/mi/mi-cmd-break.c
}; };
/* Parse arguments. */ /* 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.6.orig/gdb/mi/mi-cmd-disas.c
+++ gdb-6.5/gdb/mi/mi-cmd-disas.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/mi/mi-cmd-disas.c
@@ -84,7 +84,7 @@ mi_cmd_disassemble (char *command, char @@ -84,7 +84,7 @@ mi_cmd_disassemble (char *command, char
{"n", NUM_OPT, 1}, {"n", NUM_OPT, 1},
{"s", START_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 /* 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.6.orig/gdb/mi/mi-main.c
+++ gdb-6.5/gdb/mi/mi-main.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/mi/mi-main.c
@@ -773,7 +773,7 @@ mi_cmd_data_read_memory (char *command, @@ -773,7 +773,7 @@ mi_cmd_data_read_memory (char *command,
static struct mi_opt opts[] = static struct mi_opt opts[] =
{ {
@ -95,7 +95,7 @@ Index: gdb-6.5/gdb/mi/mi-main.c
}; };
while (1) 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[] = static struct mi_opt opts[] =
{ {
{"o", OFFSET_OPT, 1}, {"o", OFFSET_OPT, 1},
@ -104,10 +104,10 @@ Index: gdb-6.5/gdb/mi/mi-main.c
}; };
while (1) 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.6.orig/gdb/p-valprint.c
+++ gdb-6.5/gdb/p-valprint.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/p-valprint.c
@@ -753,7 +753,7 @@ pascal_object_print_value_fields (struct @@ -753,7 +753,7 @@ pascal_object_print_value_fields (struct
int dont_print_statmem) int dont_print_statmem)
{ {
@ -126,10 +126,10 @@ Index: gdb-6.5/gdb/p-valprint.c
struct type **last_dont_print struct type **last_dont_print
= (struct type **) obstack_next_free (&dont_print_vb_obstack); = (struct type **) obstack_next_free (&dont_print_vb_obstack);
int i, n_baseclasses = TYPE_N_BASECLASSES (type); 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.6.orig/gdb/cp-valprint.c
+++ gdb-6.5/gdb/cp-valprint.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/cp-valprint.c
@@ -265,7 +265,7 @@ cp_print_value_fields (struct type *type @@ -265,7 +265,7 @@ cp_print_value_fields (struct type *type
struct type **dont_print_vb,int dont_print_statmem) 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 **last_dont_print
= (struct type **) obstack_next_free (&dont_print_vb_obstack); = (struct type **) obstack_next_free (&dont_print_vb_obstack);
int i, n_baseclasses = TYPE_N_BASECLASSES (type); 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.6.orig/gdb/tui/tui-layout.c
+++ gdb-6.5/gdb/tui/tui-layout.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/tui/tui-layout.c
@@ -755,7 +755,7 @@ show_source_disasm_command (void) @@ -755,7 +755,7 @@ show_source_disasm_command (void)
if (TUI_DISASM_WIN == NULL) if (TUI_DISASM_WIN == NULL)
{ {
@ -188,20 +188,20 @@ Index: gdb-6.5/gdb/tui/tui-layout.c
LOCATOR_WIN, LOCATOR_WIN,
2 /* 1 */ , 2 /* 1 */ ,
tui_term_width (), 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.6.orig/gdb/testsuite/gdb.base/move-dir.h
+++ gdb-6.5/gdb/testsuite/gdb.base/move-dir.h 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/testsuite/gdb.base/move-dir.h
@@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
-#include <stdlib.h> -#include <stdlib.h>
+#include <stdio.h> +#include <stdio.h>
void other() { void other() {
const char* ostring = "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.6.orig/gdb/testsuite/gdb.base/sigrepeat.c
+++ gdb-6.5/gdb/testsuite/gdb.base/sigrepeat.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/testsuite/gdb.base/sigrepeat.c
@@ -22,6 +22,7 @@ @@ -22,6 +22,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@ -210,10 +210,10 @@ Index: gdb-6.5/gdb/testsuite/gdb.base/sigrepeat.c
#include <sys/time.h> #include <sys/time.h>
static volatile int done[2]; 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.6.orig/gdb/s390-tdep.c
+++ gdb-6.5/gdb/s390-tdep.c 2006-07-11 15:02:37.000000000 -0300 +++ gdb-6.6/gdb/s390-tdep.c
@@ -2277,6 +2277,9 @@ s390_return_value (struct gdbarch *gdbar @@ -2277,6 +2277,9 @@ s390_return_value (struct gdbarch *gdbar
case RETURN_VALUE_STRUCT_CONVENTION: case RETURN_VALUE_STRUCT_CONVENTION:
error (_("Cannot set function return value.")); 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.6.orig/gdb/remote.c
+++ gdb-6.5/gdb/remote.c 2006-07-11 15:02:32.000000000 -0300 +++ gdb-6.6/gdb/remote.c
@@ -2523,10 +2523,10 @@ cleanup_sigint_signal_handler (void *dum @@ -2843,10 +2843,10 @@ cleanup_sigint_signal_handler (void *dum
{ {
signal (SIGINT, handle_sigint); signal (SIGINT, handle_sigint);
if (sigint_remote_twice_token) 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 *) + delete_async_signal_handler ((struct async_signal_handler **) (char *)
&sigint_remote_twice_token); &sigint_remote_twice_token);
if (sigint_remote_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 *) + delete_async_signal_handler ((struct async_signal_handler **) (char *)
&sigint_remote_token); &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.6.orig/gdb/f-exp.y
+++ gdb-6.5/gdb/f-exp.y 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/f-exp.y
@@ -567,6 +567,8 @@ ptype : typebase @@ -567,6 +567,8 @@ ptype : typebase
case tp_function: case tp_function:
follow_type = lookup_function_type (follow_type); follow_type = lookup_function_type (follow_type);
@ -264,11 +264,11 @@ Index: gdb-6.5/gdb/f-exp.y
} }
$$ = follow_type; $$ = 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.6.orig/gdb/remote-fileio.c
+++ gdb-6.5/gdb/remote-fileio.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/remote-fileio.c
@@ -1317,19 +1317,19 @@ static struct { @@ -1332,19 +1332,19 @@ static struct {
char *name; char *name;
void (*func)(char *); void (*func)(char *);
} remote_fio_func_map[] = { } remote_fio_func_map[] = {
@ -301,11 +301,11 @@ Index: gdb-6.5/gdb/remote-fileio.c
}; };
static int 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.6.orig/gdb/source.c
+++ gdb-6.5/gdb/source.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/source.c
@@ -160,7 +160,7 @@ get_current_source_symtab_and_line (void @@ -172,7 +172,7 @@ get_current_source_symtab_and_line (void
void void
set_default_source_symtab_and_line (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 ()) if (!have_full_symbols () && !have_partial_symbols ())
error (_("No symbol table is loaded. Use the \"file\" command.")); 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) line_info (char *arg, int from_tty)
{ {
struct symtabs_and_lines sals; struct symtabs_and_lines sals;
@ -323,11 +323,11 @@ Index: gdb-6.5/gdb/source.c
CORE_ADDR start_pc, end_pc; CORE_ADDR start_pc, end_pc;
int i; 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.6.orig/gdb/symfile.c
+++ gdb-6.5/gdb/symfile.c 2006-07-11 15:02:34.000000000 -0300 +++ gdb-6.6/gdb/symfile.c
@@ -2877,6 +2877,8 @@ add_psymbol_with_dem_name_to_list (char @@ -2933,6 +2933,8 @@ add_psymbol_with_dem_name_to_list (char
deprecated_bcache (buf, dem_namelength + 1, objfile->psymbol_cache); deprecated_bcache (buf, dem_namelength + 1, objfile->psymbol_cache);
break; break;
/* FIXME What should be done for the default case? Ignoring for now. */ /* 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 */ /* 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.6.orig/gdb/linespec.c
+++ gdb-6.5/gdb/linespec.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/linespec.c
@@ -1631,7 +1631,7 @@ static struct symtabs_and_lines @@ -1631,7 +1631,7 @@ static struct symtabs_and_lines
find_method (int funfirstline, char ***canonical, char *saved_arg, find_method (int funfirstline, char ***canonical, char *saved_arg,
char *copy, struct type *t, struct symbol *sym_class) char *copy, struct type *t, struct symbol *sym_class)
@ -349,10 +349,10 @@ Index: gdb-6.5/gdb/linespec.c
struct symbol *sym = 0; struct symbol *sym = 0;
int i1; /* Counter for the symbol array. */ int i1; /* Counter for the symbol array. */
struct symbol **sym_arr = alloca (total_number_of_methods (t) 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.6.orig/gdb/macroscope.c
+++ gdb-6.5/gdb/macroscope.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/macroscope.c
@@ -33,7 +33,7 @@ @@ -33,7 +33,7 @@
struct macro_scope * struct macro_scope *
sal_macro_scope (struct symtab_and_line sal) sal_macro_scope (struct symtab_and_line sal)
@ -390,23 +390,13 @@ Index: gdb-6.5/gdb/macroscope.c
struct macro_scope *ms; struct macro_scope *ms;
/* If there's a selected frame, use its PC. */ /* 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.6.orig/gdb/target.c
+++ gdb-6.5/gdb/target.c 2006-07-11 15:02:33.000000000 -0300 +++ gdb-6.6/gdb/target.c
@@ -1142,6 +1142,9 @@ target_xfer_memory (CORE_ADDR memaddr, g @@ -1045,6 +1045,9 @@ memory_xfer_partial (struct target_ops *
if (!write) if (writebuf != NULL)
return EIO; error (_("Writing to flash memory forbidden in this context"));
break;
+
+ default:
+ break;
}
while (reg_len > 0)
@@ -1220,6 +1223,9 @@ target_xfer_memory_partial (CORE_ADDR me
return -1;
}
break; break;
+ +
+ default: + default:
@ -414,10 +404,10 @@ Index: gdb-6.5/gdb/target.c
} }
if (region->attrib.cache) 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.6.orig/gdb/gdb-events.c
+++ gdb-6.5/gdb/gdb-events.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/gdb-events.c
@@ -321,6 +321,8 @@ gdb_events_deliver (struct gdb_events *v @@ -321,6 +321,8 @@ gdb_events_deliver (struct gdb_events *v
case architecture_changed: case architecture_changed:
vector->architecture_changed (); vector->architecture_changed ();
@ -427,11 +417,11 @@ Index: gdb-6.5/gdb/gdb-events.c
} }
delivering_events = event->next; delivering_events = event->next;
xfree (event); 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.6.orig/gdb/dwarf2read.c
+++ gdb-6.5/gdb/dwarf2read.c 2006-07-11 15:02:33.000000000 -0300 +++ gdb-6.6/gdb/dwarf2read.c
@@ -9179,6 +9179,7 @@ dwarf_decode_macros (struct line_header @@ -9307,6 +9307,7 @@ dwarf_decode_macros (struct line_header
for (;;) for (;;)
{ {
enum dwarf_macinfo_record_type macinfo_type; 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? */ /* Do we at least have room for a macinfo type byte? */
if (mac_ptr >= mac_end) 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); macinfo_type = read_1_byte (abfd, mac_ptr);
mac_ptr++; mac_ptr++;
@ -461,10 +451,10 @@ Index: gdb-6.5/gdb/dwarf2read.c
case DW_MACINFO_define: case DW_MACINFO_define:
case DW_MACINFO_undef: 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.6.orig/gdb/stabsread.c
+++ gdb-6.5/gdb/stabsread.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/stabsread.c
@@ -1794,7 +1794,8 @@ again: @@ -1794,7 +1794,8 @@ again:
struct type *domain = read_type (pp, objfile); struct type *domain = read_type (pp, objfile);
struct type *return_type; struct type *return_type;
@ -475,10 +465,10 @@ Index: gdb-6.5/gdb/stabsread.c
if (**pp != ',') if (**pp != ',')
/* Invalid member type data format. */ /* 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.6.orig/gdb/dwarf2expr.c
+++ gdb-6.5/gdb/dwarf2expr.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/dwarf2expr.c
@@ -559,6 +559,8 @@ execute_stack_op (struct dwarf_expr_cont @@ -559,6 +559,8 @@ execute_stack_op (struct dwarf_expr_cont
op_ptr = read_uleb128 (op_ptr, op_end, &reg); op_ptr = read_uleb128 (op_ptr, op_end, &reg);
result += reg; result += reg;
@ -488,10 +478,10 @@ Index: gdb-6.5/gdb/dwarf2expr.c
} }
break; 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.6.orig/gdb/varobj.c
+++ gdb-6.5/gdb/varobj.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/varobj.c
@@ -325,10 +325,9 @@ struct language_specific @@ -325,10 +325,9 @@ struct language_specific
/* Array of known source language routines. */ /* Array of known source language routines. */
@ -544,11 +534,11 @@ Index: gdb-6.5/gdb/varobj.c
/* Set ourselves as our root */ /* Set ourselves as our root */
var->root->rootvar = var; 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.6.orig/gdb/configure.ac
+++ gdb-6.5/gdb/configure.ac 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/configure.ac
@@ -1133,7 +1133,8 @@ fi @@ -1112,7 +1112,8 @@ fi
# gdb/doc/gdbint.texinfo. # gdb/doc/gdbint.texinfo.
build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \ build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \
-Wformat -Wparentheses -Wpointer-arith -Wformat-nonliteral \ -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. # GCC supports -Wuninitialized only with -O or -On, n != 0.
if test x${CFLAGS+set} = xset; then 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.6.orig/gdb/doublest.c
+++ gdb-6.5/gdb/doublest.c 2006-07-11 15:01:23.000000000 -0300 +++ gdb-6.6/gdb/doublest.c
@@ -94,15 +94,10 @@ get_field (const bfd_byte *data, enum fl @@ -94,15 +94,10 @@ get_field (const bfd_byte *data, enum fl
{ {
result |= (unsigned long)*(data + cur_byte) << cur_bitshift; 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. (SYMBOL_FILE_INDEX, SYMBOL_FILE_SYMTAB): New macros.
--- ./gdb/buildsym.c 2005-12-17 22:33:59.000000000 +0000 Index: gdb-6.6/gdb/buildsym.c
+++ ./gdb/buildsym.c 2007-01-09 08:30:38.000000000 +0000 ===================================================================
@@ -535,7 +535,7 @@ make_blockvector (struct objfile *objfil --- 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). */ the directory in which it resides (or NULL if not known). */
void void
@ -32,7 +34,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
{ {
struct subfile *subfile; 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) if (FILENAME_CMP (subfile->name, name) == 0)
{ {
current_subfile = subfile; current_subfile = subfile;
@ -50,7 +52,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
return; return;
} }
} }
@@ -562,6 +573,7 @@ start_subfile (char *name, char *dirname @@ -567,6 +578,7 @@ start_subfile (char *name, char *dirname
current_subfile = subfile; current_subfile = subfile;
/* Save its name and compilation directory name */ /* 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->name = (name == NULL) ? NULL : savestring (name, strlen (name));
subfile->dirname = subfile->dirname =
(dirname == NULL) ? NULL : savestring (dirname, strlen (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 /* For stabs readers, the first N_SO symbol is assumed to be the
source file name, and the subfile struct is initialized using that source file name, and the subfile struct is initialized using that
assumption. If another N_SO symbol is later seen, immediately 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 symtab *symtab = NULL;
struct blockvector *blockvector; 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 /* Finish the lexical context of the last function in the file; pop
the context stack. */ 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 #endif
PROCESS_LINENUMBER_HOOK (); /* Needed for xcoff. */ 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. */ /* Now create the symtab objects proper, one for each subfile. */
/* (The main file is the last one on the chain.) */ /* (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); strlen (subfile->dirname) + 1);
strcpy (symtab->dirname, subfile->dirname); strcpy (symtab->dirname, subfile->dirname);
} }
@ -122,7 +124,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
else else
{ {
symtab->dirname = NULL; 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. */ but the main file. */
symtab->primary = 0; symtab->primary = 0;
@ -136,7 +138,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
} }
if (subfile->name != NULL) 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; symtab->primary = 1;
} }
@ -177,8 +179,10 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
return symtab; return symtab;
} }
--- ./gdb/buildsym.h 2005-12-17 22:33:59.000000000 +0000 Index: gdb-6.6/gdb/buildsym.h
+++ ./gdb/buildsym.h 2007-01-09 08:17:17.000000000 +0000 ===================================================================
--- 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; @@ -63,6 +63,7 @@ EXTERN CORE_ADDR last_source_start_addr;
struct subfile 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 start_subfile (char *name, char *dirname);
extern void patch_subfile_names (struct subfile *subfile, char *name); extern void patch_subfile_names (struct subfile *subfile, char *name);
--- ./gdb/dwarf2read.c 2007-01-08 22:28:24.000000000 +0000 Index: gdb-6.6/gdb/dwarf2read.c
+++ ./gdb/dwarf2read.c 2007-01-09 08:58:41.000000000 +0000 ===================================================================
@@ -847,7 +847,7 @@ static struct line_header *(dwarf_decode --- 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 *, static void dwarf_decode_lines (struct line_header *, char *, bfd *,
struct dwarf2_cu *, struct partial_symtab *); 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 *, static struct symbol *new_symbol (struct die_info *, struct type *,
struct dwarf2_cu *); 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) unsigned int length)
{ {
struct file_entry *fe; struct file_entry *fe;
@ -216,7 +222,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
/* Grow the array if necessary. */ /* Grow the array if necessary. */
if (lh->file_names_size == 0) 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->mod_time = mod_time;
fe->length = length; fe->length = length;
fe->included_p = 0; 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) if (fe->dir_index)
dir = lh->include_dirs[fe->dir_index - 1]; 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. */ /* Decode the table. */
@@ -6661,7 +6666,7 @@ dwarf_decode_lines (struct line_header * @@ -6785,7 +6790,7 @@ dwarf_decode_lines (struct line_header *
dir = lh->include_dirs[fe->dir_index - 1];
if (!decode_for_pst_p) 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; break;
case DW_LNS_set_column: @@ -6889,7 +6894,8 @@ dwarf_decode_lines (struct line_header *
@@ -6764,7 +6769,8 @@ dwarf_decode_lines (struct line_header *
subfile's name. */ subfile's name. */
static void static void
@ -255,7 +261,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
{ {
char *fullname; char *fullname;
@@ -6783,7 +6789,7 @@ dwarf2_start_subfile (char *filename, ch @@ -6908,7 +6914,7 @@ dwarf2_start_subfile (char *filename, ch
else else
fullname = filename; fullname = filename;
@ -264,7 +270,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
if (fullname != filename) if (fullname != filename)
xfree (fullname); 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); SYMBOL_LINE (sym) = DW_UNSND (attr);
} }
@ -278,8 +284,10 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
switch (die->tag) switch (die->tag)
{ {
case DW_TAG_label: case DW_TAG_label:
--- ./gdb/symtab.c 2007-01-08 22:28:25.000000000 +0000 Index: gdb-6.6/gdb/symtab.c
+++ ./gdb/symtab.c 2007-01-09 08:19:05.000000000 +0000 ===================================================================
--- 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 @@ -1129,6 +1129,10 @@ lookup_symbol (const char *name, const s
if (needtofreename) if (needtofreename)
xfree (demangled_name); xfree (demangled_name);
@ -309,8 +317,10 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921
psr->symbol = sym; psr->symbol = sym;
psr->msymbol = NULL; psr->msymbol = NULL;
psr->next = NULL; psr->next = NULL;
--- ./gdb/symtab.h 2007-01-08 22:28:25.000000000 +0000 Index: gdb-6.6/gdb/symtab.h
+++ ./gdb/symtab.h 2007-01-09 08:44:02.000000000 +0000 ===================================================================
--- 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 @@ -623,6 +623,18 @@ struct symbol
ENUM_BITFIELD(address_class) aclass : 6; 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 currently for trivia nonthreaded helloworld with no debug info up to -ggdb2 you
will get: will get:
(gdb) p errno (gdb) p errno
Cannot access memory at address 0x8 [some error]
* with -ggdb3 "errno" gets resolved as _macro_ and the resulting
"(*__errno_location ())" expression is always fine.
* with -ggdb2 and less "errno" in fact does not exist anywhere as it was * 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. 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: (%gs on i386) is not setup and it will result in:
Cannot access memory at address 0x8 Cannot access memory at address 0x8
IMO the right way is to ignore TLS symbols for inferiors without activated Attached suggestion patch how to deal with the most common "errno" symbol
threading. Patch attached.
Also attached suggestion patch how to deal with the most common "errno" symbol
for the most common under-ggdb3 compiled programs. for the most common under-ggdb3 compiled programs.
2006-08-25 Jan Kratochvil <jan.kratochvil@redhat.com> 2006-08-25 Jan Kratochvil <jan.kratochvil@redhat.com>
* dwarf2loc.c (dwarf_expr_tls_address): Code moved out to * target.c (target_translate_tls_address): Provided warnings for TLS
`target_translate_tls_address'. `errno' on non-TLS targets.
* 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.
Index: gdb-6.5/gdb/Makefile.in Index: gdb-6.6/gdb/target.c
=================================================================== ===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v --- gdb-6.6.orig/gdb/target.c 2007-01-17 01:25:31.000000000 +0100
retrieving revision 1.840 +++ gdb-6.6/gdb/target.c 2007-01-20 06:31:36.000000000 +0100
diff -u -p -r1.840 gdb-6.5/gdb/Makefile.in @@ -898,7 +898,18 @@
--- gdb-6.5.org/gdb/Makefile.in 22 Aug 2006 19:08:31 -0000 1.840 /* It wouldn't be wrong here to try a gdbarch method, too; finding
+++ gdb-6.5/gdb/Makefile.in 25 Aug 2006 19:55:35 -0000 TLS is an ABI-specific thing. But we don't do that yet. */
@@ -1977,7 +1977,7 @@ exec.o: exec.c $(defs_h) $(frame_h) $(in else
$(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
- error (_("Cannot find thread-local variables on this target")); - 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; + 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'.")); + " compile the program with `gcc -ggdb3' or `gcc -pthread'."));
+ error (_("Cannot find thread-local variables on this target")); + 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 return addr;
===================================================================
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;
} }
+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. (remote_async_wait): Likewise.
--- gdb-6.5/gdb/remote.c.orig 2006-10-01 08:01:17.000000000 -0400 Index: gdb-6.6/gdb/remote.c
+++ gdb-6.5/gdb/remote.c 2006-10-01 08:03:18.000000000 -0400 ===================================================================
@@ -2789,8 +2789,13 @@ --- 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); 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' + target. gdbserver(1) is not aware of the `set architecture'
+ name itself as it is not using libbfd. */ + name itself as it is not using libbfd. */
if (*p++ != ';') 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" + error (_("Remote register badly formatted: %s\nhere: %s"
+ "\nTry to load the executable by `file' first," + "\nTry to load the executable by `file' first,"
+ "\nyou may also check `set/show architecture'."), + "\nyou may also check `set/show architecture'."),
buf, p); buf, p);
} }
} }
@@ -2983,8 +2988,13 @@ @@ -3307,8 +3312,13 @@ Packet: '%s'\n"),
regcache_raw_supply (current_regcache, reg->regnum, regs); 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 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 Index: gdb-6.6/gdb/minsyms.c
+++ gdb-6.5/gdb/minsyms.c 2006-12-17 16:51:21.000000000 -0500 ===================================================================
@@ -505,6 +505,11 @@ --- gdb-6.6.orig/gdb/minsyms.c 2007-01-20 13:53:48.000000000 +0100
don't fill the bfd_section member, so don't +++ gdb-6.6/gdb/minsyms.c 2007-01-20 13:58:47.000000000 +0100
throw away symbols on those platforms. */ @@ -490,6 +490,11 @@ lookup_minimal_symbol_by_pc_section (COR
&& SYMBOL_BFD_SECTION (&msymbol[hi]) != NULL 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. + /* Don't ignore symbols for solib trampolines.
+ Limit its sideeffects - only for non-0 sized trampolines. + Limit its sideeffects - only for non-0 sized trampolines.
+ Red Hat Bug 200533 with its regression Bug 218379. */ + 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])) + || MSYMBOL_SIZE (&msymbol[hi]))
&& (!matching_bfd_sections && (!matching_bfd_sections
(SYMBOL_BFD_SECTION (&msymbol[hi]), section))) (SYMBOL_BFD_SECTION (&msymbol[hi]), section)))
--hi; {

View File

@ -16,11 +16,11 @@
* Makefile.in: Dependencies updated. * 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.6.orig/gdb/Makefile.in 2007-01-20 06:43:02.000000000 +0100
+++ gdb-6.5/gdb/Makefile.in 1 Oct 2006 16:22:42 -0000 +++ gdb-6.6/gdb/Makefile.in 2007-01-20 06:57:16.000000000 +0100
@@ -696,6 +696,7 @@ gdb_h = gdb.h @@ -705,6 +705,7 @@ gdb_expat_h = gdb_expat.h
gdb_locale_h = gdb_locale.h gdb_locale_h = gdb_locale.h
gdb_obstack_h = gdb_obstack.h $(obstack_h) gdb_obstack_h = gdb_obstack.h $(obstack_h)
gdb_proc_service_h = gdb_proc_service.h $(gregset_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_ptrace_h = gdb_ptrace.h
gdb_regex_h = gdb_regex.h $(xregex_h) gdb_regex_h = gdb_regex.h $(xregex_h)
gdb_select_h = gdb_select.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 gdb_thread_db_h = gdb_thread_db.h
gdbthread_h = gdbthread.h $(breakpoint_h) $(frame_h) gdbthread_h = gdbthread.h $(breakpoint_h) $(frame_h)
gdbtypes_h = gdbtypes.h $(hashtab_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_vfork_h = gdb_vfork.h
gdb_wait_h = gdb_wait.h gdb_wait_h = gdb_wait.h
glibc_tdep_h = glibc-tdep.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) \ 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) \ $(regcache_h) $(linux_nat_h) $(gdb_assert_h) $(gdb_string_h) \
$(gdb_proc_service_h) $(gregset_h) $(amd64_tdep_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) $(amd64_linux_tdep_h)
+ $(i386_linux_tdep_h) $(amd64_nat_h) $(target_h) \ + $(i386_linux_tdep_h) $(amd64_nat_h) $(target_h) $(amd64_linux_tdep_h) \
+ $(i387_tdep_h) $(elf_bfd_h) $(gdb_procfs32_h) + $(i387_tdep_h) $(elf_bfd_h) $(gdb_procfs32_h)
amd64-linux-tdep.o: amd64-linux-tdep.c $(defs_h) $(frame_h) $(gdbcore_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) \ $(regcache_h) $(osabi_h) $(symtab_h) $(gdb_string_h) $(amd64_tdep_h) \
$(solib_svr4_h) $(solib_svr4_h) $(gdbtypes_h) $(reggroups_h) $(amd64_linux_tdep_h)
Index: gdb-6.5/gdb/amd64-linux-nat.c 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.6.orig/gdb/amd64-linux-nat.c 2007-01-20 06:43:00.000000000 +0100
+++ gdb-6.5/gdb/amd64-linux-nat.c 1 Oct 2006 16:22:42 -0000 +++ gdb-6.6/gdb/amd64-linux-nat.c 2007-01-20 06:56:21.000000000 +0100
@@ -52,6 +52,9 @@ @@ -53,6 +53,9 @@
#include "amd64-tdep.h" #include "amd64-tdep.h"
#include "i386-linux-tdep.h" #include "i386-linux-tdep.h"
#include "amd64-nat.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 /* Mapping between the general-purpose registers in GNU/Linux x86-64
`struct user' format and GDB's register cache layout. */ `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 GNU/Linux i386 registers are all 32-bit, but since we're
little-endian we get away with that. */ 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. */ /* From <sys/reg.h> on GNU/Linux i386. */
static int amd64_linux_gregset32_reg_offset[] = 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 /* Transfering the general-purpose registers between GDB, inferiors
and core files. */ 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_fetch_registers = amd64_linux_fetch_inferior_registers;
t->to_store_registers = amd64_linux_store_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. */ /* Register the target. */
linux_nat_add_target (t); 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.6.orig/gdb/config.in 2006-08-08 22:32:15.000000000 +0200
+++ gdb-6.5/gdb/config.in 1 Oct 2006 16:22:42 -0000 +++ gdb-6.6/gdb/config.in 2007-01-20 06:56:21.000000000 +0100
@@ -373,6 +373,9 @@ @@ -373,6 +373,9 @@
/* Define to 1 if you have the <sys/poll.h> header file. */ /* Define to 1 if you have the <sys/poll.h> header file. */
#undef HAVE_SYS_POLL_H #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. */ /* Define to 1 if you have the <sys/user.h> header file. */
#undef HAVE_SYS_USER_H #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.6.orig/gdb/configure 2007-01-20 06:43:00.000000000 +0100
+++ gdb-6.5/gdb/configure 2006-10-01 18:40:44.000000000 +0200 +++ gdb-6.6/gdb/configure 2007-01-20 06:56:21.000000000 +0100
@@ -11949,6 +11949,157 @@ @@ -9966,6 +9966,157 @@ done
@ -389,11 +389,11 @@ Index: gdb-6.5/gdb/configure
for ac_header in sys/wait.h wait.h for ac_header in sys/wait.h wait.h
do do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` 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.6.orig/gdb/configure.ac 2007-01-20 06:43:01.000000000 +0100
+++ gdb-6.5/gdb/configure.ac 1 Oct 2006 16:22:43 -0000 +++ gdb-6.6/gdb/configure.ac 2007-01-20 06:56:21.000000000 +0100
@@ -365,6 +365,7 @@ AC_CHECK_HEADERS(sys/user.h, [], [], @@ -371,6 +371,7 @@ AC_CHECK_HEADERS(sys/user.h, [], [],
# include <sys/param.h> # include <sys/param.h>
#endif #endif
]) ])
@ -401,11 +401,11 @@ Index: gdb-6.5/gdb/configure.ac
AC_CHECK_HEADERS(sys/wait.h wait.h) AC_CHECK_HEADERS(sys/wait.h wait.h)
AC_CHECK_HEADERS(termios.h termio.h sgtty.h) AC_CHECK_HEADERS(termios.h termio.h sgtty.h)
AC_CHECK_HEADERS(unistd.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.6.orig/gdb/gcore.c 2007-01-20 06:43:02.000000000 +0100
+++ gdb-6.5/gdb/gcore.c 1 Oct 2006 16:22:43 -0000 +++ gdb-6.6/gdb/gcore.c 2007-01-20 06:56:21.000000000 +0100
@@ -314,6 +314,11 @@ gcore_create_callback (CORE_ADDR vaddr, @@ -320,6 +320,11 @@ gcore_create_callback (CORE_ADDR vaddr,
asection *osec; asection *osec;
flagword flags = SEC_ALLOC | SEC_HAS_CONTENTS | SEC_LOAD; 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 /* 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 when we later try to access it for read/write, we'll get an error
or jam the kernel. */ 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 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.5/gdb/gdb_procfs32.h 1 Oct 2006 16:22:43 -0000 +++ gdb-6.6/gdb/gdb_procfs32.h 2007-01-20 06:56:21.000000000 +0100
@@ -0,0 +1,128 @@ @@ -0,0 +1,128 @@
+#ifdef HAVE_SYS_PROCFS32_H +#ifdef HAVE_SYS_PROCFS32_H
+#include <sys/procfs32.h> +#include <sys/procfs32.h>
@ -550,10 +550,10 @@ Index: gdb-6.5/gdb/gdb_procfs32.h
+#endif /* _SYS_PROCFS32_H */ +#endif /* _SYS_PROCFS32_H */
+ +
+#endif /* HAVE_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 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.5/gdb/gdb_user32.h 1 Oct 2006 16:22:43 -0000 +++ gdb-6.6/gdb/gdb_user32.h 2007-01-20 06:56:21.000000000 +0100
@@ -0,0 +1,108 @@ @@ -0,0 +1,108 @@
+#ifdef HAVE_SYS_USER32_H +#ifdef HAVE_SYS_USER32_H
+#include <sys/user32.h> +#include <sys/user32.h>
@ -663,11 +663,11 @@ Index: gdb-6.5/gdb/gdb_user32.h
+#endif /* _SYS_USER32_H */ +#endif /* _SYS_USER32_H */
+ +
+#endif /* HAVE_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.6.orig/gdb/linux-nat.c 2007-01-20 06:43:04.000000000 +0100
+++ gdb-6.5/gdb/linux-nat.c 1 Oct 2006 16:22:43 -0000 +++ gdb-6.6/gdb/linux-nat.c 2007-01-20 06:56:21.000000000 +0100
@@ -99,6 +99,15 @@ static LONGEST (*super_xfer_partial) (st @@ -100,6 +100,15 @@ static LONGEST (*super_xfer_partial) (st
const gdb_byte *, const gdb_byte *,
ULONGEST, LONGEST); ULONGEST, LONGEST);
@ -683,7 +683,7 @@ Index: gdb-6.5/gdb/linux-nat.c
static int debug_linux_nat; static int debug_linux_nat;
static void static void
show_debug_linux_nat (struct ui_file *file, int from_tty, 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 else
fill_gregset (&gregs, -1); fill_gregset (&gregs, -1);
@ -700,7 +700,7 @@ Index: gdb-6.5/gdb/linux-nat.c
if (core_regset_p if (core_regset_p
&& (regset = gdbarch_regset_from_core_section (gdbarch, ".reg2", && (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 else
fill_fpregset (&fpregs, -1); fill_fpregset (&fpregs, -1);
@ -715,7 +715,7 @@ Index: gdb-6.5/gdb/linux-nat.c
#ifdef FILL_FPXREGSET #ifdef FILL_FPXREGSET
if (core_regset_p 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 (), strncat (psargs, get_inferior_args (),
sizeof (psargs) - strlen (psargs)); sizeof (psargs) - strlen (psargs));
} }
@ -728,11 +728,11 @@ Index: gdb-6.5/gdb/linux-nat.c
} }
/* Dump information for threads. */ /* 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.6.orig/gdb/linux-nat.h 2007-01-20 06:42:58.000000000 +0100
+++ gdb-6.5/gdb/linux-nat.h 1 Oct 2006 16:22:43 -0000 +++ gdb-6.6/gdb/linux-nat.h 2007-01-20 06:56:21.000000000 +0100
@@ -96,3 +96,12 @@ void linux_nat_add_target (struct target @@ -108,3 +108,12 @@ void linux_nat_add_target (struct target
/* Update linux-nat internal state when changing from one fork /* Update linux-nat internal state when changing from one fork
to another. */ to another. */
void linux_nat_switch_fork (ptid_t new_ptid); void linux_nat_switch_fork (ptid_t new_ptid);

View File

@ -9,24 +9,14 @@
file, provide nested (overlapping) functions for the PC resolving. file, provide nested (overlapping) functions for the PC resolving.
--- gdb-6.5/gdb/minsyms.c-orig 2006-10-31 08:21:32.000000000 -0500 Index: ./gdb/minsyms.c
+++ gdb-6.5/gdb/minsyms.c 2006-10-31 08:24:37.000000000 -0500 ===================================================================
@@ -464,6 +464,7 @@ --- ./gdb/minsyms.c 17 Oct 2006 20:17:44 -0000 1.47
objfile's minimal symbol table. See if it is the best one +++ ./gdb/minsyms.c 30 Oct 2006 12:41:26 -0000
overall. */ @@ -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. + /* We are behind the current symbol's size.
+ Try the previous symbol - if it is non-zero sized one it + Try the previous symbol - if it is non-zero sized one it
+ may overlap the current one and reach our PC. + may overlap the current one and reach our PC.
@ -39,16 +29,20 @@
+ Limit it only for the overlapping cases as we could harm + Limit it only for the overlapping cases as we could harm
+ the zero-sized symbols detection logic around. + the zero-sized symbols detection logic around.
+ */ + */
+ || (hi > 0 + if (hi > 0
+ && MSYMBOL_SIZE (&msymbol[hi]) != 0 + && MSYMBOL_SIZE (&msymbol[hi]) != 0
+ && pc >= (SYMBOL_VALUE_ADDRESS (&msymbol[hi]) + && pc >= (SYMBOL_VALUE_ADDRESS (&msymbol[hi])
+ + MSYMBOL_SIZE (&msymbol[hi])) + + MSYMBOL_SIZE (&msymbol[hi]))
+ && pc < (SYMBOL_VALUE_ADDRESS (&msymbol[hi - 1]) + && pc < (SYMBOL_VALUE_ADDRESS (&msymbol[hi - 1])
+ + MSYMBOL_SIZE (&msymbol[hi - 1]))) + + MSYMBOL_SIZE (&msymbol[hi - 1])))
+ ) + {
--hi; + hi--;
+ continue;
/* If "section" specified, skip any symbol from wrong section */ + }
+
/* Otherwise, this symbol must be as good as we're going
to get. */
break;
Index: ./gdb/testsuite/gdb.arch/i386-size-overlap.c Index: ./gdb/testsuite/gdb.arch/i386-size-overlap.c
=================================================================== ===================================================================
--- /dev/null 1 Jan 1970 00:00:00 -0000 --- /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" + " mov %esp, %ebp\n"
+ " call " SYMBOL (trap) "\n" + " call " SYMBOL (trap) "\n"
+ " .size " SYMBOL (main) ", .-" SYMBOL (main) "\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 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 --- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ./gdb/testsuite/gdb.arch/i386-size-overlap.exp 30 Oct 2006 12:41:35 -0000 +++ ./gdb/testsuite/gdb.arch/i386-size-overlap.exp 30 Oct 2006 12:41:35 -0000
@@ -0,0 +1,79 @@ @@ -0,0 +1,79 @@

View File

@ -8,19 +8,19 @@ Name: gdb
# Set version to contents of gdb/version.in. # Set version to contents of gdb/version.in.
# NOTE: the FSF gdb versions are numbered N.M for official releases, like 6.3 # 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). # 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. # The release always contains a leading reserved number, start it at 1.
Release: 27%{?dist} Release: 1%{?dist}
License: GPL License: GPL
Group: Development/Debuggers 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 Buildroot: %{_tmppath}/%{name}-%{version}-root
URL: http://gnu.org/software/gdb/ URL: http://gnu.org/software/gdb/
# For our convenience # For our convenience
%define gdb_src gdb-6.5 %define gdb_src gdb-6.6
%define gdb_build %{gdb_src}/build-%{_target_platform} %define gdb_build %{gdb_src}/build-%{_target_platform}
# Make sure we get rid of the old package gdb64, now that we have unified # 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 Obsoletes: gdb64
%endif %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 # should include the ChangeLog.RedHat change-log entry; and should be
# created using diff -u ./gdb (not gdb-6.3/gdb). # 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 # Allow option to continue backtracing past a zero pc value
Patch170: gdb-6.3-bt-past-zero-20051201.patch 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. # Use bigger numbers than int.
Patch176: gdb-6.3-large-core-20051206.patch Patch176: gdb-6.3-large-core-20051206.patch
@ -209,33 +203,18 @@ Patch178: gdb-6.3-catch-debug-registers-error-20060527.patch
# ia32el. # ia32el.
Patch179: gdb-6.3-ia32el-fix-waitpid-20060615.patch 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). # Bugfix segv on the source display by ^X 1 (fixes Patch130, BZ 200048).
Patch181: gdb-6.5-bz200048-find_line_pc-segv.patch 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). # Bugfix object names completion (fixes Patch116, BZ 193763).
Patch185: gdb-6.3-bz193763-object-name-completion.patch Patch185: gdb-6.3-bz193763-object-name-completion.patch
# Avoid crash of 'info threads' if stale threads exist (BZ 195429). # Testcase for corrupted or missing location list information (BZ 196439).
Patch186: gdb-6.5-bz195429-stale-threads-crash.patch Patch187: gdb-6.5-bz196439-valgrind-memcheck-compat-test.patch
# Handle corrupted or missing location list information (BZ 196439).
Patch187: gdb-6.5-bz196439-valgrind-memcheck-compat.patch
# Fix debuginfo addresses resolving for --emit-relocs Linux kernels (BZ 203661). # Fix debuginfo addresses resolving for --emit-relocs Linux kernels (BZ 203661).
Patch188: gdb-6.5-bz203661-emit-relocs.patch 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. # Security patch: avoid stack overflows in dwarf expression computation.
# CVE-2006-4146 # CVE-2006-4146
Patch190: gdb-6.5-dwarf-stack-overflow.patch 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). # Fix gdb printf command argument using "%p" (BZ 205551).
Patch191: gdb-6.5-bz205551-printf-p.patch 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 attach to stopped process, supersede `gdb-6.3-attach-stop-20051011.patch'.
# Fix attachment also to a threaded stopped process (BZ 219118). # Fix attachment also to a threaded stopped process (BZ 219118).
Patch193: gdb-6.5-attach-stop.patch 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 Patch195: gdb-6.5-tls-of-separate-debuginfo.patch
# Fix TLS symbols resolving for shared libraries with a relative pathname. # 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'. # The testsuite needs `gdb-6.5-tls-of-separate-debuginfo.patch'.
Patch196: gdb-6.5-sharedlibrary-path.patch Patch196: gdb-6.5-sharedlibrary-path.patch
# Support IPv6 for gdbserver (BZ 198365). # Support IPv6 for gdbserver (BZ 198365).
Patch197: gdb-6.5-bz198365-IPv6.patch 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). # Suggest fixing your target architecture for gdbserver(1) (BZ 190810).
# FIXME: It could be autodetected. # FIXME: It could be autodetected.
Patch199: gdb-6.5-bz190810-gdbserver-arch-advice.patch 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. # Fix `gcore' command for 32bit inferiors on 64bit hosts.
Patch201: gdb-6.5-gcore-i386-on-amd64.patch Patch201: gdb-6.5-gcore-i386-on-amd64.patch
# Fix deadlock accessing last address space byte; for corrupted backtraces. # Testcase for deadlocking on last address space byte; for corrupted backtraces.
Patch203: gdb-6.5-last-address-space-byte.patch
Patch211: gdb-6.5-last-address-space-byte-test.patch Patch211: gdb-6.5-last-address-space-byte-test.patch
# Fix "??" resolving of symbols from (non-prelinked) debuginfo packages. # 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 Patch206: gdb-6.5-relativedebug.patch
# Fix "??" resolving of symbols from overlapping functions (nanosleep(3)). # 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(). # Fix missing testsuite .log output of testcases using get_compiler_info().
Patch230: gdb-6.5-testsuite-log.patch 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: ncurses-devel glibc-devel gcc make gzip texinfo dejagnu gettext
BuildRequires: flex bison sharutils BuildRequires: flex bison sharutils
@ -413,35 +389,24 @@ and printing their data.
%patch166 -p1 %patch166 -p1
%patch169 -p1 %patch169 -p1
%patch170 -p1 %patch170 -p1
%patch173 -p1
%patch174 -p1
%patch176 -p1 %patch176 -p1
%patch177 -p1 %patch177 -p1
%patch178 -p1 %patch178 -p1
%patch179 -p1 %patch179 -p1
%patch180 -p1
%patch181 -p1 %patch181 -p1
%patch183 -p1
%patch184 -p1
%patch185 -p1 %patch185 -p1
%patch186 -p1
%patch187 -p1 %patch187 -p1
%patch188 -p1 %patch188 -p1
%patch189 -p1
%patch190 -p1 %patch190 -p1
%patch191 -p1 %patch191 -p1
%patch192 -p1
%patch193 -p1 %patch193 -p1
%patch194 -p1 %patch194 -p1
%patch195 -p1 %patch195 -p1
%patch196 -p1 %patch196 -p1
#%patch197 -p1 #%patch197 -p1
%patch198 -p1
%patch199 -p1 %patch199 -p1
%patch200 -p1 %patch200 -p1
%patch201 -p1 %patch201 -p1
%patch203 -p1
%patch205 -p1
%patch206 -p1 %patch206 -p1
%patch207 -p1 %patch207 -p1
%patch208 -p1 %patch208 -p1
@ -463,6 +428,9 @@ and printing their data.
%patch228 -p1 %patch228 -p1
%patch229 -p1 %patch229 -p1
%patch230 -p1 %patch230 -p1
%patch231 -p1
%patch232 -p1
%patch233 -p1
# Change the version that gets printed at GDB startup, so it is RedHat # Change the version that gets printed at GDB startup, so it is RedHat
# specific. # specific.
@ -625,6 +593,11 @@ fi
# don't include the files in include, they are part of binutils # don't include the files in include, they are part of binutils
%changelog %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 * 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. - 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