diff --git a/.cvsignore b/.cvsignore index 7740cf3..8756ea5 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -gdb-6.5.tar.bz2 +gdb-6.6.tar.bz2 diff --git a/gdb-6.3-bz202689-exec-from-pthread-test.patch b/gdb-6.3-bz202689-exec-from-pthread-test.patch new file mode 100644 index 0000000..1d9c61b --- /dev/null +++ b/gdb-6.3-bz202689-exec-from-pthread-test.patch @@ -0,0 +1,98 @@ +2007-01-17 Jan Kratochvil + + * 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 ++#include ++#include ++#include ++#include ++ ++ ++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" ++ } ++} diff --git a/gdb-6.3-ia64-gcore-page0-20050421.patch b/gdb-6.3-ia64-gcore-page0-20050421.patch index 13bbdc4..6dea58a 100644 --- a/gdb-6.3-ia64-gcore-page0-20050421.patch +++ b/gdb-6.3-ia64-gcore-page0-20050421.patch @@ -1,19 +1,19 @@ -Index: gdb-6.5/gdb/gcore.c +Index: gdb-6.6/gdb/gcore.c =================================================================== ---- gdb-6.5.orig/gdb/gcore.c 2005-12-17 20:33:59.000000000 -0200 -+++ gdb-6.5/gdb/gcore.c 2006-07-07 02:41:33.000000000 -0300 -@@ -462,8 +462,13 @@ gcore_copy_callback (bfd *obfd, asection - error (_("Not enough memory to create corefile.")); - old_chain = make_cleanup (xfree, memhunk); +--- gdb-6.6.orig/gdb/gcore.c ++++ gdb-6.6/gdb/gcore.c +@@ -475,8 +475,13 @@ gcore_copy_callback (bfd *obfd, asection + if (size > total_size) + size = total_size; -+ /* Warn if read error occurs except if we were trying to read the -+ first page for ia64. The first page is marked readable, but it cannot -+ be read. */ - if (target_read_memory (bfd_section_vma (obfd, osec), -- memhunk, size) != 0) -+ memhunk, size) != 0 -+ && (strcmp (TARGET_ARCHITECTURE->arch_name, "ia64") -+ || bfd_section_vma (obfd, osec) != 0)) - warning (_("Memory read failed for corefile section, %s bytes at 0x%s."), - paddr_d (size), paddr (bfd_section_vma (obfd, osec))); - if (!bfd_set_section_contents (obfd, osec, memhunk, 0, size)) ++ /* Warn if read error occurs except if we were trying to read the ++ first page for ia64. The first page is marked readable, but it cannot ++ be read. */ + if (target_read_memory (bfd_section_vma (obfd, osec) + offset, +- memhunk, size) != 0) ++ memhunk, size) != 0 ++ && (strcmp (TARGET_ARCHITECTURE->arch_name, "ia64") ++ || bfd_section_vma (obfd, osec) != 0)) + { + warning (_("Memory read failed for corefile section, %s bytes at 0x%s."), + paddr_d (size), paddr (bfd_section_vma (obfd, osec))); diff --git a/gdb-6.3-ia64-sigill-20051115.patch b/gdb-6.3-ia64-sigill-20051115.patch index b9eb872..d04c684 100644 --- a/gdb-6.3-ia64-sigill-20051115.patch +++ b/gdb-6.3-ia64-sigill-20051115.patch @@ -12,10 +12,10 @@ gdb/testsuite: * gdb.arch/ia64-sigill.c: New test. * gdb.arch/ia64-sigill.exp: Ditto. -Index: gdb-6.5/gdb/testsuite/gdb.arch/ia64-sigill.exp +Index: gdb-6.6/gdb/testsuite/gdb.arch/ia64-sigill.exp =================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.5/gdb/testsuite/gdb.arch/ia64-sigill.exp 2006-07-07 03:16:54.000000000 -0300 +--- /dev/null ++++ gdb-6.6/gdb/testsuite/gdb.arch/ia64-sigill.exp @@ -0,0 +1,59 @@ +# Copyright 2005 Free Software Foundation, Inc. + @@ -76,10 +76,10 @@ Index: gdb-6.5/gdb/testsuite/gdb.arch/ia64-sigill.exp +gdb_test "handle SIGILL nostop noprint" "SIGILL.*No.*No.*Yes.*" "handle sigill" +gdb_test "run" "Starting program.*ia64-sigill.*\[New thread.*\].*hello world.*Program exited normally." "run to exit" + -Index: gdb-6.5/gdb/testsuite/gdb.arch/ia64-sigill.c +Index: gdb-6.6/gdb/testsuite/gdb.arch/ia64-sigill.c =================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.5/gdb/testsuite/gdb.arch/ia64-sigill.c 2006-07-07 03:16:54.000000000 -0300 +--- /dev/null ++++ gdb-6.6/gdb/testsuite/gdb.arch/ia64-sigill.c @@ -0,0 +1,8 @@ +#include + @@ -89,25 +89,11 @@ Index: gdb-6.5/gdb/testsuite/gdb.arch/ia64-sigill.c + return 0; +} + -Index: gdb-6.5/gdb/linux-thread-db.c +Index: gdb-6.6/gdb/linux-nat.c =================================================================== ---- gdb-6.5.orig/gdb/linux-thread-db.c 2006-07-07 01:06:36.000000000 -0300 -+++ gdb-6.5/gdb/linux-thread-db.c 2006-07-07 03:16:54.000000000 -0300 -@@ -926,7 +926,8 @@ thread_db_wait (ptid_t ptid, struct targ - post-processing and bail out early. */ - return ptid; - -- if (ourstatus->kind == TARGET_WAITKIND_EXITED) -+ if (ourstatus->kind == TARGET_WAITKIND_EXITED -+ || ourstatus->kind == TARGET_WAITKIND_SIGNALLED) - return pid_to_ptid (-1); - - if (ourstatus->kind == TARGET_WAITKIND_STOPPED -Index: gdb-6.5/gdb/linux-nat.c -=================================================================== ---- gdb-6.5.orig/gdb/linux-nat.c 2006-07-07 03:03:55.000000000 -0300 -+++ gdb-6.5/gdb/linux-nat.c 2006-07-07 03:16:54.000000000 -0300 -@@ -2209,7 +2209,8 @@ retry: +--- gdb-6.6.orig/gdb/linux-nat.c ++++ gdb-6.6/gdb/linux-nat.c +@@ -2241,7 +2241,8 @@ retry: threads can be a bit time-consuming so if we want decent performance with heavily multi-threaded programs, especially when they're using a high frequency timer, we'd better avoid it if we @@ -117,7 +103,7 @@ Index: gdb-6.5/gdb/linux-nat.c if (WIFSTOPPED (status)) { -@@ -2220,7 +2221,9 @@ retry: +@@ -2252,7 +2253,9 @@ retry: if (!lp->step && signal_stop_state (signo) == 0 && signal_print_state (signo) == 0 diff --git a/gdb-6.3-large-core-20051206.patch b/gdb-6.3-large-core-20051206.patch index 7e349d3..a80e41a 100644 --- a/gdb-6.3-large-core-20051206.patch +++ b/gdb-6.3-large-core-20051206.patch @@ -21,10 +21,10 @@ * remote.h: Ditto. * dcache.h: Ditto. -Index: gdb-6.5/gdb/symfile-mem.c +Index: gdb-6.6/gdb/symfile-mem.c =================================================================== ---- gdb-6.5.orig/gdb/symfile-mem.c 2006-07-11 02:35:34.000000000 -0300 -+++ gdb-6.5/gdb/symfile-mem.c 2006-07-11 02:35:49.000000000 -0300 +--- gdb-6.6.orig/gdb/symfile-mem.c 2007-01-20 16:09:05.000000000 +0100 ++++ gdb-6.6/gdb/symfile-mem.c 2007-01-20 16:09:17.000000000 +0100 @@ -58,6 +58,14 @@ #include "elf/common.h" @@ -49,131 +49,56 @@ Index: gdb-6.5/gdb/symfile-mem.c if (nbfd == NULL) error (_("Failed to read a valid object file image from memory.")); -Index: gdb-6.5/gdb/target.c +Index: gdb-6.6/gdb/target.c =================================================================== ---- gdb-6.5.orig/gdb/target.c 2006-07-11 02:35:49.000000000 -0300 -+++ gdb-6.5/gdb/target.c 2006-07-11 02:35:49.000000000 -0300 -@@ -83,8 +83,8 @@ static LONGEST default_xfer_partial (str - partial transfers, try either target_read_memory_partial or - target_write_memory_partial). */ +--- gdb-6.6.orig/gdb/target.c 2007-01-20 16:09:12.000000000 +0100 ++++ gdb-6.6/gdb/target.c 2007-01-20 16:09:17.000000000 +0100 +@@ -56,7 +56,7 @@ static int nosymbol (char *, CORE_ADDR * --static int target_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, -- int write); -+static int target_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, -+ LONGEST len, int write); + static void tcomplain (void) ATTR_NORETURN; - static void init_dummy_target (void); +-static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *); ++static LONGEST nomemory (CORE_ADDR, char *, int, int, struct target_ops *); -@@ -511,8 +511,8 @@ update_current_target (void) - de_fault (to_prepare_to_store, - (void (*) (void)) + static int return_zero (void); + +@@ -284,7 +284,7 @@ target_mourn_inferior (void) + observer_notify_mourn_inferior (¤t_target); + } + +-static int ++static LONGEST + nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write, + struct target_ops *t) + { +@@ -517,7 +517,7 @@ update_current_target (void) + (void (*) (void)) noprocess); -- de_fault (deprecated_xfer_memory, -- (int (*) (CORE_ADDR, gdb_byte *, int, int, struct mem_attrib *, struct target_ops *)) -+ de_fault (deprecated_xfer_memory, + de_fault (deprecated_xfer_memory, +- (int (*) (CORE_ADDR, gdb_byte *, int, int, struct mem_attrib *, struct target_ops *)) + (LONGEST (*) (CORE_ADDR, gdb_byte *, LONGEST, int, struct mem_attrib *, struct target_ops *)) nomemory); - de_fault (to_files_info, - (void (*) (struct target_ops *)) -@@ -940,7 +940,7 @@ target_xfer_partial (struct target_ops * - implementing another singluar mechanism (for instance, a generic - object:annex onto inferior:object:annex say). */ - --static LONGEST -+static int - xfer_using_stratum (enum target_object object, const char *annex, - ULONGEST offset, LONGEST len, void *readbuf, - const void *writebuf) -@@ -1005,7 +1005,7 @@ xfer_using_stratum (enum target_object o - deal with partial reads should call target_read_memory_partial. */ + de_fault (to_files_info, + (void (*) (struct target_ops *)) +@@ -1178,7 +1178,7 @@ target_xfer_partial (struct target_ops * + it makes no progress, and then return how much was transferred). */ int -target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len) +target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, LONGEST len) { - if (target_xfer_partial_p ()) - return xfer_using_stratum (TARGET_OBJECT_MEMORY, NULL, -@@ -1015,7 +1015,7 @@ target_read_memory (CORE_ADDR memaddr, g + if (target_read (¤t_target, TARGET_OBJECT_MEMORY, NULL, + myaddr, memaddr, len) == len) +@@ -1188,7 +1188,7 @@ target_read_memory (CORE_ADDR memaddr, g } int -target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, int len) +target_write_memory (CORE_ADDR memaddr, const gdb_byte *myaddr, LONGEST len) { - gdb_byte *bytes = alloca (len); - memcpy (bytes, myaddr, len); -@@ -1056,11 +1056,11 @@ Mode for reading from readonly sections - - Result is -1 on error, or the number of bytes transfered. */ - --int --do_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write, -+LONGEST -+do_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, LONGEST len, int write, - struct mem_attrib *attrib) - { -- int res; -+ LONGEST res; - int done = 0; - struct target_ops *t; - -@@ -1118,10 +1118,11 @@ do_xfer_memory (CORE_ADDR memaddr, gdb_b - Result is 0 or errno value. */ - - static int --target_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write) -+target_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, -+ LONGEST len, int write) - { -- int res; -- int reg_len; -+ LONGEST res; -+ LONGEST reg_len; - struct mem_region *region; - - /* Zero length requests are ok and require no work. */ -@@ -1192,12 +1193,12 @@ target_xfer_memory (CORE_ADDR memaddr, g - If we succeed, set *ERR to zero and return the number of bytes transferred. - If we fail, set *ERR to a non-zero errno value, and return -1. */ - --static int --target_xfer_memory_partial (CORE_ADDR memaddr, gdb_byte *myaddr, int len, -+static LONGEST -+target_xfer_memory_partial (CORE_ADDR memaddr, gdb_byte *myaddr, LONGEST len, - int write_p, int *err) - { -- int res; -- int reg_len; -+ LONGEST res; -+ LONGEST reg_len; - struct mem_region *region; - - /* Zero length requests are ok and require no work. */ -@@ -1256,9 +1257,9 @@ target_xfer_memory_partial (CORE_ADDR me - return res; - } - --int -+LONGEST - target_read_memory_partial (CORE_ADDR memaddr, gdb_byte *buf, -- int len, int *err) -+ LONGEST len, int *err) - { - if (target_xfer_partial_p ()) - { -@@ -1285,9 +1286,9 @@ target_read_memory_partial (CORE_ADDR me - return target_xfer_memory_partial (memaddr, buf, len, 0, err); - } - --int -+LONGEST - target_write_memory_partial (CORE_ADDR memaddr, gdb_byte *buf, -- int len, int *err) -+ LONGEST len, int *err) - { - if (target_xfer_partial_p ()) - { -@@ -2044,8 +2045,8 @@ debug_to_prepare_to_store (void) + if (target_write (¤t_target, TARGET_OBJECT_MEMORY, NULL, + myaddr, memaddr, len) == len) +@@ -2186,8 +2186,8 @@ debug_to_prepare_to_store (void) fprintf_unfiltered (gdb_stdlog, "target_prepare_to_store ()\n"); } @@ -184,7 +109,7 @@ Index: gdb-6.5/gdb/target.c int write, struct mem_attrib *attrib, struct target_ops *target) { -@@ -2055,9 +2056,9 @@ deprecated_debug_xfer_memory (CORE_ADDR +@@ -2197,9 +2197,9 @@ deprecated_debug_xfer_memory (CORE_ADDR attrib, target); fprintf_unfiltered (gdb_stdlog, @@ -196,11 +121,11 @@ Index: gdb-6.5/gdb/target.c if (retval > 0) { -Index: gdb-6.5/gdb/target.h +Index: gdb-6.6/gdb/target.h =================================================================== ---- gdb-6.5.orig/gdb/target.h 2006-07-11 02:35:48.000000000 -0300 -+++ gdb-6.5/gdb/target.h 2006-07-11 02:35:49.000000000 -0300 -@@ -332,10 +332,10 @@ struct target_ops +--- gdb-6.6.orig/gdb/target.h 2007-01-20 16:09:10.000000000 +0100 ++++ gdb-6.6/gdb/target.h 2007-01-20 16:09:17.000000000 +0100 +@@ -347,10 +347,10 @@ struct target_ops NOTE: cagney/2004-10-01: This has been entirely superseeded by to_xfer_partial and inferior inheritance. */ @@ -215,15 +140,7 @@ Index: gdb-6.5/gdb/target.h void (*to_files_info) (struct target_ops *); int (*to_insert_breakpoint) (struct bp_target_info *); -@@ -535,21 +535,23 @@ extern void target_disconnect (char *, i - - extern DCACHE *target_dcache; - --extern int do_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, -- int write, struct mem_attrib *attrib); -+extern LONGEST do_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, -+ LONGEST len, int write, -+ struct mem_attrib *attrib); +@@ -605,16 +605,17 @@ extern DCACHE *target_dcache; extern int target_read_string (CORE_ADDR, char **, int, int *); @@ -245,29 +162,13 @@ Index: gdb-6.5/gdb/target.h +extern LONGEST child_xfer_memory (CORE_ADDR, gdb_byte *, LONGEST, int, + struct mem_attrib *, struct target_ops *); - /* Make a single attempt at transfering LEN bytes. On a successful - transfer, the number of bytes actually transfered is returned and -@@ -557,11 +559,11 @@ extern int child_xfer_memory (CORE_ADDR, - of bytes actually transfered is not defined) and ERR is set to a - non-zero error indication. */ - --extern int target_read_memory_partial (CORE_ADDR addr, gdb_byte *buf, -- int len, int *err); -+extern LONGEST target_read_memory_partial (CORE_ADDR addr, gdb_byte *buf, -+ LONGEST len, int *err); - --extern int target_write_memory_partial (CORE_ADDR addr, gdb_byte *buf, -- int len, int *err); -+extern LONGEST target_write_memory_partial (CORE_ADDR addr, gdb_byte *buf, -+ LONGEST len, int *err); - - extern char *child_pid_to_exec_file (int); - -Index: gdb-6.5/gdb/infptrace.c + /* Fetches the target's memory map. If one is found it is sorted + and returned, after some consistency checking. Otherwise, NULL +Index: gdb-6.6/gdb/infptrace.c =================================================================== ---- gdb-6.5.orig/gdb/infptrace.c 2006-07-11 02:35:49.000000000 -0300 -+++ gdb-6.5/gdb/infptrace.c 2006-07-11 02:35:49.000000000 -0300 -@@ -368,17 +368,17 @@ store_inferior_registers (int regnum) +--- gdb-6.6.orig/gdb/infptrace.c 2005-12-17 23:34:01.000000000 +0100 ++++ gdb-6.6/gdb/infptrace.c 2007-01-20 16:09:17.000000000 +0100 +@@ -331,17 +331,17 @@ store_inferior_registers (int regnum) deprecated_child_ops doesn't allow memory operations to cross below us in the target stack anyway. */ @@ -291,11 +192,11 @@ Index: gdb-6.5/gdb/infptrace.c PTRACE_TYPE_RET *buffer; struct cleanup *old_chain = NULL; -Index: gdb-6.5/gdb/dcache.c +Index: gdb-6.6/gdb/dcache.c =================================================================== ---- gdb-6.5.orig/gdb/dcache.c 2006-07-11 02:35:34.000000000 -0300 -+++ gdb-6.5/gdb/dcache.c 2006-07-11 02:35:49.000000000 -0300 -@@ -527,9 +527,9 @@ dcache_free (DCACHE *dcache) +--- gdb-6.6.orig/gdb/dcache.c 2006-08-15 20:46:24.000000000 +0200 ++++ gdb-6.6/gdb/dcache.c 2007-01-20 16:09:17.000000000 +0100 +@@ -519,9 +519,9 @@ dcache_free (DCACHE *dcache) This routine is indended to be called by remote_xfer_ functions. */ @@ -307,10 +208,10 @@ Index: gdb-6.5/gdb/dcache.c { int i; int (*xfunc) (DCACHE *dcache, CORE_ADDR addr, gdb_byte *ptr); -Index: gdb-6.5/gdb/dcache.h +Index: gdb-6.6/gdb/dcache.h =================================================================== ---- gdb-6.5.orig/gdb/dcache.h 2006-07-11 02:35:34.000000000 -0300 -+++ gdb-6.5/gdb/dcache.h 2006-07-11 02:35:49.000000000 -0300 +--- gdb-6.6.orig/gdb/dcache.h 2005-12-17 23:33:59.000000000 +0100 ++++ gdb-6.6/gdb/dcache.h 2007-01-20 16:09:17.000000000 +0100 @@ -37,7 +37,7 @@ void dcache_free (DCACHE *); /* Simple to call from _xfer_memory */ @@ -321,11 +222,11 @@ Index: gdb-6.5/gdb/dcache.h + LONGEST len, int should_write); #endif /* DCACHE_H */ -Index: gdb-6.5/gdb/exec.c +Index: gdb-6.6/gdb/exec.c =================================================================== ---- gdb-6.5.orig/gdb/exec.c 2006-07-11 02:35:34.000000000 -0300 -+++ gdb-6.5/gdb/exec.c 2006-07-11 02:35:49.000000000 -0300 -@@ -447,8 +447,8 @@ map_vmap (bfd *abfd, bfd *arch) +--- gdb-6.6.orig/gdb/exec.c 2006-11-10 20:20:35.000000000 +0100 ++++ gdb-6.6/gdb/exec.c 2007-01-20 16:09:17.000000000 +0100 +@@ -452,8 +452,8 @@ map_vmap (bfd *abfd, bfd *arch) The same routine is used to handle both core and exec files; we just tail-call it with more arguments to select between them. */ @@ -336,11 +237,11 @@ Index: gdb-6.5/gdb/exec.c struct mem_attrib *attrib, struct target_ops *target) { int res; -Index: gdb-6.5/gdb/linux-nat.c +Index: gdb-6.6/gdb/linux-nat.c =================================================================== ---- gdb-6.5.orig/gdb/linux-nat.c 2006-07-11 02:35:49.000000000 -0300 -+++ gdb-6.5/gdb/linux-nat.c 2006-07-11 02:36:39.000000000 -0300 -@@ -3264,7 +3264,7 @@ linux_xfer_partial (struct target_ops *o +--- gdb-6.6.orig/gdb/linux-nat.c 2007-01-20 16:09:14.000000000 +0100 ++++ gdb-6.6/gdb/linux-nat.c 2007-01-20 16:09:17.000000000 +0100 +@@ -3266,7 +3266,7 @@ linux_xfer_partial (struct target_ops *o Revert when Bugzilla 147436 is fixed. */ if (iterate_over_lwps (ia64_linux_check_stack_region, &range) != NULL) { /* This region contains ia64 rse registers, we have to re-read. */ @@ -349,10 +250,10 @@ Index: gdb-6.5/gdb/linux-nat.c /* Re-read register stack area. */ xxfer = super_xfer_partial (ops, object, annex, -Index: gdb-6.5/gdb/remote.c +Index: gdb-6.6/gdb/remote.c =================================================================== ---- gdb-6.5.orig/gdb/remote.c 2006-07-11 02:35:48.000000000 -0300 -+++ gdb-6.5/gdb/remote.c 2006-07-11 02:37:02.000000000 -0300 +--- gdb-6.6.orig/gdb/remote.c 2007-01-20 16:09:12.000000000 +0100 ++++ gdb-6.6/gdb/remote.c 2007-01-20 16:09:17.000000000 +0100 @@ -27,6 +27,7 @@ #include "gdb_string.h" #include @@ -361,7 +262,7 @@ Index: gdb-6.5/gdb/remote.c #include "inferior.h" #include "bfd.h" #include "symfile.h" -@@ -3701,19 +3702,27 @@ remote_read_bytes (CORE_ADDR memaddr, gd +@@ -4185,19 +4186,27 @@ remote_read_bytes (CORE_ADDR memaddr, gd if SHOULD_WRITE is nonzero. Returns length of data written or read; 0 for error. TARGET is unused. */ @@ -372,8 +273,6 @@ Index: gdb-6.5/gdb/remote.c int should_write, struct mem_attrib *attrib, struct target_ops *target) { - CORE_ADDR targ_addr; - int targ_len; int res; + int len; + @@ -384,28 +283,21 @@ Index: gdb-6.5/gdb/remote.c + + len = (int)mem_len; - /* Should this be the selected frame? */ - gdbarch_remote_translate_xfer_address (current_gdbarch, - current_regcache, -- mem_addr, mem_len, -+ mem_addr, len, - &targ_addr, &targ_len); - if (targ_len <= 0) - return 0; -@@ -3723,7 +3732,7 @@ remote_xfer_memory (CORE_ADDR mem_addr, + if (should_write) + res = remote_write_bytes (mem_addr, buffer, mem_len); else - res = remote_read_bytes (targ_addr, buffer, targ_len); + res = remote_read_bytes (mem_addr, buffer, mem_len); - return res; + return (LONGEST)res; } - static void -Index: gdb-6.5/gdb/remote-sim.c + /* Sends a packet with content determined by the printf format string +Index: gdb-6.6/gdb/remote-sim.c =================================================================== ---- gdb-6.5.orig/gdb/remote-sim.c 2006-07-11 02:35:34.000000000 -0300 -+++ gdb-6.5/gdb/remote-sim.c 2006-07-11 02:35:49.000000000 -0300 -@@ -742,11 +742,14 @@ gdbsim_prepare_to_store (void) +--- gdb-6.6.orig/gdb/remote-sim.c 2006-11-10 20:20:36.000000000 +0100 ++++ gdb-6.6/gdb/remote-sim.c 2007-01-20 16:10:10.000000000 +0100 +@@ -745,11 +745,14 @@ gdbsim_prepare_to_store (void) Returns the number of bytes transferred. */ @@ -419,10 +311,10 @@ Index: gdb-6.5/gdb/remote-sim.c + /* Convert to len type that sim_read and sim_write can handle. */ + int xfer_len = (int)len; + - if (!program_loaded) - error (_("No program loaded.")); - -@@ -756,22 +759,22 @@ gdbsim_xfer_inferior_memory (CORE_ADDR m + /* If no program is running yet, then ignore the simulator for + memory. Pass the request down to the next target, hopefully + an exec file. */ +@@ -765,22 +768,22 @@ gdbsim_xfer_inferior_memory (CORE_ADDR m printf_filtered ("gdbsim_xfer_inferior_memory: myaddr 0x"); gdb_print_host_address (myaddr, gdb_stdout); printf_filtered (", memaddr 0x%s, len %d, write %d\n", diff --git a/gdb-6.3-nonthreaded-wp-20050117.patch b/gdb-6.3-nonthreaded-wp-20050117.patch index 5b4b3f3..fb78305 100644 --- a/gdb-6.3-nonthreaded-wp-20050117.patch +++ b/gdb-6.3-nonthreaded-wp-20050117.patch @@ -1,7 +1,7 @@ -Index: gdb-6.5/gdb/doc/observer.texi +Index: gdb-6.6/gdb/doc/observer.texi =================================================================== ---- gdb-6.5.orig/gdb/doc/observer.texi 2006-07-07 04:08:37.000000000 -0300 -+++ gdb-6.5/gdb/doc/observer.texi 2006-07-07 04:19:00.000000000 -0300 +--- gdb-6.6.orig/gdb/doc/observer.texi ++++ gdb-6.6/gdb/doc/observer.texi @@ -119,6 +119,10 @@ when @value{GDBN} calls this observer, t haven't been loaded yet. @end deftypefun @@ -13,11 +13,11 @@ Index: gdb-6.5/gdb/doc/observer.texi @deftypefun void solib_unloaded (struct so_list *@var{solib}) The shared library specified by @var{solib} has been unloaded. @end deftypefun -Index: gdb-6.5/gdb/linux-nat.c +Index: gdb-6.6/gdb/linux-nat.c =================================================================== ---- gdb-6.5.orig/gdb/linux-nat.c 2006-07-07 04:00:05.000000000 -0300 -+++ gdb-6.5/gdb/linux-nat.c 2006-07-07 04:20:40.000000000 -0300 -@@ -802,11 +802,23 @@ iterate_over_lwps (int (*callback) (stru +--- gdb-6.6.orig/gdb/linux-nat.c ++++ gdb-6.6/gdb/linux-nat.c +@@ -803,11 +803,23 @@ iterate_over_lwps (int (*callback) (stru { struct lwp_info *lp, *lpnext; @@ -72,19 +72,19 @@ Index: gdb-6.5/gdb/linux-nat.c /* Save the original signal mask. */ sigprocmask (SIG_SETMASK, NULL, &normal_mask); -Index: gdb-6.5/gdb/target.c +Index: gdb-6.6/gdb/target.c =================================================================== ---- gdb-6.5.orig/gdb/target.c 2006-07-07 03:52:38.000000000 -0300 -+++ gdb-6.5/gdb/target.c 2006-07-07 04:19:00.000000000 -0300 -@@ -39,6 +39,7 @@ - #include "regcache.h" +--- gdb-6.6.orig/gdb/target.c ++++ gdb-6.6/gdb/target.c +@@ -40,6 +40,7 @@ #include "gdb_assert.h" #include "gdbcore.h" + #include "exceptions.h" +#include "observer.h" static void target_info (char *, int); -@@ -267,6 +268,13 @@ target_load (char *arg, int from_tty) +@@ -276,6 +277,13 @@ target_load (char *arg, int from_tty) (*current_target.to_load) (arg, from_tty); } @@ -98,11 +98,11 @@ Index: gdb-6.5/gdb/target.c static int nomemory (CORE_ADDR memaddr, char *myaddr, int len, int write, struct target_ops *t) -Index: gdb-6.5/gdb/target.h +Index: gdb-6.6/gdb/target.h =================================================================== ---- gdb-6.5.orig/gdb/target.h 2006-07-07 03:52:40.000000000 -0300 -+++ gdb-6.5/gdb/target.h 2006-07-07 04:19:00.000000000 -0300 -@@ -783,8 +783,7 @@ int target_follow_fork (int follow_child +--- gdb-6.6.orig/gdb/target.h ++++ gdb-6.6/gdb/target.h +@@ -891,8 +891,7 @@ int target_follow_fork (int follow_child /* The inferior process has died. Do what is right. */ diff --git a/gdb-6.3-pie-20050110.patch b/gdb-6.3-pie-20050110.patch index 2954f5b..d4a3794 100644 --- a/gdb-6.3-pie-20050110.patch +++ b/gdb-6.3-pie-20050110.patch @@ -1,8 +1,8 @@ -Index: gdb-6.5/gdb/dwarf2read.c +Index: gdb-6.6/gdb/dwarf2read.c =================================================================== ---- gdb-6.5.orig/gdb/dwarf2read.c 2006-07-11 02:47:11.000000000 -0300 -+++ gdb-6.5/gdb/dwarf2read.c 2006-07-11 02:56:58.000000000 -0300 -@@ -1208,7 +1208,7 @@ dwarf2_build_psymtabs (struct objfile *o +--- gdb-6.6.orig/gdb/dwarf2read.c ++++ gdb-6.6/gdb/dwarf2read.c +@@ -1219,7 +1219,7 @@ dwarf2_build_psymtabs (struct objfile *o else dwarf2_per_objfile->loc_buffer = NULL; @@ -11,11 +11,11 @@ Index: gdb-6.5/gdb/dwarf2read.c || (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)) { -Index: gdb-6.5/gdb/auxv.c +Index: gdb-6.6/gdb/auxv.c =================================================================== ---- gdb-6.5.orig/gdb/auxv.c 2006-07-11 02:47:06.000000000 -0300 -+++ gdb-6.5/gdb/auxv.c 2006-07-11 02:47:11.000000000 -0300 -@@ -119,7 +119,7 @@ target_auxv_read (struct target_ops *ops +--- gdb-6.6.orig/gdb/auxv.c ++++ gdb-6.6/gdb/auxv.c +@@ -82,7 +82,7 @@ procfs_xfer_auxv (struct target_ops *ops Return 1 if an entry was read into *TYPEP and *VALP. */ int target_auxv_parse (struct target_ops *ops, gdb_byte **readptr, @@ -24,7 +24,7 @@ Index: gdb-6.5/gdb/auxv.c { const int sizeof_auxv_field = TYPE_LENGTH (builtin_type_void_data_ptr); gdb_byte *ptr = *readptr; -@@ -144,9 +144,10 @@ target_auxv_parse (struct target_ops *op +@@ -107,9 +107,10 @@ target_auxv_parse (struct target_ops *op an error getting the information. On success, return 1 after storing the entry's value field in *VALP. */ int @@ -35,9 +35,9 @@ Index: gdb-6.5/gdb/auxv.c + CORE_ADDR val; + ULONGEST at_type; gdb_byte *data; - int n = target_auxv_read (ops, &data); + LONGEST n = target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL, &data); gdb_byte *ptr = data; -@@ -156,10 +157,10 @@ target_auxv_search (struct target_ops *o +@@ -119,10 +120,10 @@ target_auxv_search (struct target_ops *o return n; while (1) @@ -50,7 +50,7 @@ Index: gdb-6.5/gdb/auxv.c { xfree (data); *valp = val; -@@ -182,7 +183,8 @@ target_auxv_search (struct target_ops *o +@@ -145,7 +146,8 @@ target_auxv_search (struct target_ops *o int fprint_target_auxv (struct ui_file *file, struct target_ops *ops) { @@ -58,9 +58,9 @@ Index: gdb-6.5/gdb/auxv.c + CORE_ADDR val; + ULONGEST at_type; gdb_byte *data; - int len = target_auxv_read (ops, &data); - gdb_byte *ptr = data; -@@ -191,14 +193,14 @@ fprint_target_auxv (struct ui_file *file + LONGEST len = target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL, + &data); +@@ -155,14 +157,14 @@ fprint_target_auxv (struct ui_file *file if (len <= 0) return len; @@ -77,7 +77,7 @@ Index: gdb-6.5/gdb/auxv.c { #define TAG(tag, text, kind) \ case tag: name = #tag; description = text; flavor = kind; break -@@ -249,7 +251,7 @@ fprint_target_auxv (struct ui_file *file +@@ -213,7 +215,7 @@ fprint_target_auxv (struct ui_file *file } fprintf_filtered (file, "%-4s %-20s %-30s ", @@ -86,11 +86,11 @@ Index: gdb-6.5/gdb/auxv.c switch (flavor) { case dec: -Index: gdb-6.5/gdb/auxv.h +Index: gdb-6.6/gdb/auxv.h =================================================================== ---- gdb-6.5.orig/gdb/auxv.h 2006-07-11 02:47:06.000000000 -0300 -+++ gdb-6.5/gdb/auxv.h 2006-07-11 02:47:11.000000000 -0300 -@@ -43,14 +43,14 @@ extern LONGEST target_auxv_read (struct +--- gdb-6.6.orig/gdb/auxv.h ++++ gdb-6.6/gdb/auxv.h +@@ -37,14 +37,14 @@ struct target_ops; /* Forward declarati Return 1 if an entry was read into *TYPEP and *VALP. */ extern int target_auxv_parse (struct target_ops *ops, gdb_byte **readptr, gdb_byte *endptr, @@ -107,10 +107,10 @@ Index: gdb-6.5/gdb/auxv.h /* Print the contents of the target's AUXV on the specified file. */ extern int fprint_target_auxv (struct ui_file *file, struct target_ops *ops); -Index: gdb-6.5/gdb/breakpoint.h +Index: gdb-6.6/gdb/breakpoint.h =================================================================== ---- gdb-6.5.orig/gdb/breakpoint.h 2006-07-11 02:47:06.000000000 -0300 -+++ gdb-6.5/gdb/breakpoint.h 2006-07-11 02:47:11.000000000 -0300 +--- gdb-6.6.orig/gdb/breakpoint.h ++++ gdb-6.6/gdb/breakpoint.h @@ -159,6 +159,7 @@ enum enable_state automatically enabled and reset when the call "lands" (either completes, or stops at another @@ -132,10 +132,10 @@ Index: gdb-6.5/gdb/breakpoint.h extern void create_solib_load_event_breakpoint (char *, int, char *, char *); extern void create_solib_unload_event_breakpoint (char *, int, -Index: gdb-6.5/gdb/symfile-mem.c +Index: gdb-6.6/gdb/symfile-mem.c =================================================================== ---- gdb-6.5.orig/gdb/symfile-mem.c 2006-07-11 02:47:06.000000000 -0300 -+++ gdb-6.5/gdb/symfile-mem.c 2006-07-11 02:56:55.000000000 -0300 +--- gdb-6.6.orig/gdb/symfile-mem.c ++++ gdb-6.6/gdb/symfile-mem.c @@ -110,7 +110,7 @@ symbol_file_add_from_memory (struct bfd } @@ -145,11 +145,11 @@ Index: gdb-6.5/gdb/symfile-mem.c /* This might change our ideas about frames already looked at. */ reinit_frame_cache (); -Index: gdb-6.5/gdb/infrun.c +Index: gdb-6.6/gdb/infrun.c =================================================================== ---- gdb-6.5.orig/gdb/infrun.c 2006-07-11 02:47:06.000000000 -0300 -+++ gdb-6.5/gdb/infrun.c 2006-07-11 02:56:58.000000000 -0300 -@@ -2230,6 +2230,11 @@ process_event_stop_test: +--- gdb-6.6.orig/gdb/infrun.c ++++ gdb-6.6/gdb/infrun.c +@@ -2249,6 +2249,11 @@ process_event_stop_test: code segments in shared libraries might be mapped in now. */ re_enable_breakpoints_in_shlibs (); @@ -161,11 +161,11 @@ Index: gdb-6.5/gdb/infrun.c /* If requested, stop when the dynamic linker notifies gdb of events. This allows the user to get control and place breakpoints in initializer routines for -Index: gdb-6.5/gdb/objfiles.c +Index: gdb-6.6/gdb/objfiles.c =================================================================== ---- gdb-6.5.orig/gdb/objfiles.c 2006-07-11 02:47:06.000000000 -0300 -+++ gdb-6.5/gdb/objfiles.c 2006-07-11 02:47:11.000000000 -0300 -@@ -47,6 +47,9 @@ +--- gdb-6.6.orig/gdb/objfiles.c ++++ gdb-6.6/gdb/objfiles.c +@@ -50,6 +50,9 @@ #include "dictionary.h" #include "source.h" @@ -175,7 +175,7 @@ Index: gdb-6.5/gdb/objfiles.c /* Prototypes for local functions */ static void objfile_alloc_data (struct objfile *objfile); -@@ -258,7 +261,19 @@ init_entry_point_info (struct objfile *o +@@ -261,7 +264,19 @@ init_entry_point_info (struct objfile *o CORE_ADDR entry_point_address (void) { @@ -196,10 +196,10 @@ Index: gdb-6.5/gdb/objfiles.c } /* Create the terminating entry of OBJFILE's minimal symbol table. -Index: gdb-6.5/gdb/solib-svr4.c +Index: gdb-6.6/gdb/solib-svr4.c =================================================================== ---- gdb-6.5.orig/gdb/solib-svr4.c 2006-07-11 02:47:06.000000000 -0300 -+++ gdb-6.5/gdb/solib-svr4.c 2006-07-11 02:47:11.000000000 -0300 +--- gdb-6.6.orig/gdb/solib-svr4.c ++++ gdb-6.6/gdb/solib-svr4.c @@ -34,6 +34,8 @@ #include "gdbcore.h" #include "target.h" @@ -209,7 +209,7 @@ Index: gdb-6.5/gdb/solib-svr4.c #include "gdb_assert.h" -@@ -254,7 +256,9 @@ static CORE_ADDR breakpoint_addr; /* Add +@@ -267,7 +269,9 @@ static char *debug_loader_name; /* Local function prototypes */ @@ -219,7 +219,7 @@ Index: gdb-6.5/gdb/solib-svr4.c static CORE_ADDR bfd_lookup_symbol (bfd *, char *, flagword); -@@ -376,22 +380,79 @@ elf_locate_base (void) +@@ -389,22 +393,79 @@ elf_locate_base (void) { struct bfd_section *dyninfo_sect; int dyninfo_sect_size; @@ -303,7 +303,7 @@ Index: gdb-6.5/gdb/solib-svr4.c /* Find the DT_DEBUG entry in the the .dynamic section. For mips elf we look for DT_MIPS_RLD_MAP, mips elf apparently has -@@ -418,6 +479,10 @@ elf_locate_base (void) +@@ -431,6 +492,10 @@ elf_locate_base (void) { dyn_ptr = bfd_h_get_32 (exec_bfd, (bfd_byte *) x_dynp->d_un.d_ptr); @@ -314,7 +314,7 @@ Index: gdb-6.5/gdb/solib-svr4.c return dyn_ptr; } else if (dyn_tag == DT_MIPS_RLD_MAP) -@@ -543,6 +608,10 @@ solib_svr4_r_map (void) +@@ -556,6 +621,10 @@ solib_svr4_r_map (void) { struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); @@ -325,7 +325,7 @@ Index: gdb-6.5/gdb/solib-svr4.c return read_memory_typed_address (debug_base + lmo->r_map_offset, builtin_type_void_data_ptr); } -@@ -669,6 +738,11 @@ svr4_current_sos (void) +@@ -713,6 +782,11 @@ svr4_current_sos (void) struct so_list **link_ptr = &head; CORE_ADDR ldsomap = 0; @@ -337,18 +337,18 @@ Index: gdb-6.5/gdb/solib-svr4.c /* Make sure we've looked up the inferior's dynamic linker's base structure. */ if (! debug_base) -@@ -678,11 +752,21 @@ svr4_current_sos (void) +@@ -722,11 +796,21 @@ svr4_current_sos (void) /* If we can't find the dynamic linker's base structure, this must not be a dynamically linked executable. Hmm. */ if (! debug_base) -- return 0; -+ { +- return svr4_default_sos (); ++ { + if (debug_solib) + fprintf_unfiltered (gdb_stdlog, + "svr4_current_sos: no DT_DEBUG found in %s -- return now\n", + exec_bfd->filename); -+ return 0; -+ } ++ return svr4_default_sos (); ++ } } /* Walk the inferior's link map list, and build our list of @@ -358,9 +358,9 @@ Index: gdb-6.5/gdb/solib-svr4.c + "svr4_current_sos: walk link map in %s\n", + exec_bfd->filename); lm = solib_svr4_r_map (); + while (lm) - { -@@ -697,23 +781,103 @@ svr4_current_sos (void) +@@ -742,23 +826,103 @@ svr4_current_sos (void) new->lm_info->lm = xzalloc (lmo->link_map_size); make_cleanup (xfree, new->lm_info->lm); @@ -465,7 +465,7 @@ Index: gdb-6.5/gdb/solib-svr4.c target_read_string (LM_NAME (new), &buffer, SO_NAME_MAX_PATH_SIZE - 1, &errcode); if (errcode != 0) -@@ -721,22 +885,37 @@ svr4_current_sos (void) +@@ -766,22 +930,37 @@ svr4_current_sos (void) safe_strerror (errcode)); else { @@ -519,9 +519,9 @@ Index: gdb-6.5/gdb/solib-svr4.c } } -@@ -750,6 +929,11 @@ svr4_current_sos (void) - discard_cleanups (old_chain); - } +@@ -798,6 +977,11 @@ svr4_current_sos (void) + if (head == NULL) + return svr4_default_sos (); + if (debug_solib) + fprintf_unfiltered (gdb_stdlog, @@ -531,7 +531,7 @@ Index: gdb-6.5/gdb/solib-svr4.c return head; } -@@ -826,7 +1010,7 @@ svr4_fetch_objfile_link_map (struct objf +@@ -874,7 +1058,7 @@ svr4_fetch_objfile_link_map (struct objf /* On some systems, the only way to recognize the link map entry for the main executable file is by looking at its name. Return non-zero iff SONAME matches one of the known main executable names. */ @@ -540,7 +540,7 @@ Index: gdb-6.5/gdb/solib-svr4.c static int match_main (char *soname) { -@@ -840,6 +1024,7 @@ match_main (char *soname) +@@ -888,6 +1072,7 @@ match_main (char *soname) return (0); } @@ -548,7 +548,7 @@ Index: gdb-6.5/gdb/solib-svr4.c /* Return 1 if PC lies in the dynamic symbol resolution code of the SVR4 run time loader. */ -@@ -939,6 +1124,11 @@ enable_break (void) +@@ -987,6 +1172,11 @@ enable_break (void) /* Find the .interp section; if not found, warn the user and drop into the old breakpoint at symbol code. */ interp_sect = bfd_get_section_by_name (exec_bfd, ".interp"); @@ -560,7 +560,7 @@ Index: gdb-6.5/gdb/solib-svr4.c if (interp_sect) { unsigned int interp_sect_size; -@@ -972,6 +1162,9 @@ enable_break (void) +@@ -1025,6 +1215,9 @@ enable_break (void) if (tmp_fd >= 0) tmp_bfd = bfd_fopen (tmp_pathname, gnutarget, FOPEN_RB, tmp_fd); @@ -570,7 +570,7 @@ Index: gdb-6.5/gdb/solib-svr4.c if (tmp_bfd == NULL) goto bkpt_at_symbol; -@@ -1052,6 +1245,9 @@ enable_break (void) +@@ -1111,6 +1304,9 @@ enable_break (void) if (sym_addr != 0) { create_solib_event_breakpoint (load_addr + sym_addr); @@ -580,7 +580,7 @@ Index: gdb-6.5/gdb/solib-svr4.c return 1; } -@@ -1311,6 +1507,8 @@ svr4_solib_create_inferior_hook (void) +@@ -1372,6 +1568,8 @@ svr4_solib_create_inferior_hook (void) while (stop_signal != TARGET_SIGNAL_TRAP); stop_soon = NO_STOP_QUIETLY; #endif /* defined(_SCO_DS) */ @@ -589,7 +589,7 @@ Index: gdb-6.5/gdb/solib-svr4.c } static void -@@ -1493,6 +1691,75 @@ svr4_lp64_fetch_link_map_offsets (void) +@@ -1558,6 +1756,75 @@ svr4_lp64_fetch_link_map_offsets (void) return lmp; } @@ -665,7 +665,7 @@ Index: gdb-6.5/gdb/solib-svr4.c static struct target_so_ops svr4_so_ops; -@@ -1515,4 +1782,8 @@ _initialize_svr4_solib (void) +@@ -1580,4 +1847,8 @@ _initialize_svr4_solib (void) /* FIXME: Don't do this here. *_gdbarch_init() should set so_ops. */ current_target_so_ops = &svr4_so_ops; @@ -674,10 +674,10 @@ Index: gdb-6.5/gdb/solib-svr4.c + "Display the inferior's linkmap."); + } -Index: gdb-6.5/gdb/varobj.c +Index: gdb-6.6/gdb/varobj.c =================================================================== ---- gdb-6.5.orig/gdb/varobj.c 2006-07-11 02:47:06.000000000 -0300 -+++ gdb-6.5/gdb/varobj.c 2006-07-11 02:56:57.000000000 -0300 +--- gdb-6.6.orig/gdb/varobj.c ++++ gdb-6.6/gdb/varobj.c @@ -870,6 +870,62 @@ varobj_list (struct varobj ***varlist) return rootcount; } @@ -741,10 +741,10 @@ Index: gdb-6.5/gdb/varobj.c /* Update the values for a variable and its children. This is a two-pronged attack. First, re-parse the value for the root's expression to see if it's changed. Then go all the way -Index: gdb-6.5/gdb/solist.h +Index: gdb-6.6/gdb/solist.h =================================================================== ---- gdb-6.5.orig/gdb/solist.h 2006-07-11 02:47:06.000000000 -0300 -+++ gdb-6.5/gdb/solist.h 2006-07-11 02:47:11.000000000 -0300 +--- gdb-6.6.orig/gdb/solist.h ++++ gdb-6.6/gdb/solist.h @@ -62,6 +62,8 @@ struct so_list bfd *abfd; char symbols_loaded; /* flag: symbols read in yet? */ @@ -777,10 +777,10 @@ Index: gdb-6.5/gdb/solist.h +/* Controls the printing of debugging output. */ +extern int debug_solib; #endif -Index: gdb-6.5/gdb/varobj.h +Index: gdb-6.6/gdb/varobj.h =================================================================== ---- gdb-6.5.orig/gdb/varobj.h 2006-07-11 02:47:06.000000000 -0300 -+++ gdb-6.5/gdb/varobj.h 2006-07-11 02:47:11.000000000 -0300 +--- gdb-6.6.orig/gdb/varobj.h ++++ gdb-6.6/gdb/varobj.h @@ -99,4 +99,6 @@ extern int varobj_list (struct varobj ** extern int varobj_update (struct varobj **varp, struct varobj ***changelist); @@ -788,10 +788,10 @@ Index: gdb-6.5/gdb/varobj.h +extern void varobj_refresh(void); + #endif /* VAROBJ_H */ -Index: gdb-6.5/gdb/symfile.c +Index: gdb-6.6/gdb/symfile.c =================================================================== ---- gdb-6.5.orig/gdb/symfile.c 2006-07-11 02:47:06.000000000 -0300 -+++ gdb-6.5/gdb/symfile.c 2006-07-11 02:56:57.000000000 -0300 +--- gdb-6.6.orig/gdb/symfile.c ++++ gdb-6.6/gdb/symfile.c @@ -49,6 +49,7 @@ #include "readline/readline.h" #include "gdb_assert.h" @@ -799,8 +799,8 @@ Index: gdb-6.5/gdb/symfile.c +#include "varobj.h" #include "observer.h" #include "exec.h" - -@@ -658,7 +659,7 @@ syms_from_objfile (struct objfile *objfi + #include "parser-defs.h" +@@ -659,7 +660,7 @@ syms_from_objfile (struct objfile *objfi /* Now either addrs or offsets is non-zero. */ @@ -809,7 +809,7 @@ Index: gdb-6.5/gdb/symfile.c { /* We will modify the main symbol table, make sure that all its users will be cleaned up if an error occurs during symbol reading. */ -@@ -686,7 +687,7 @@ syms_from_objfile (struct objfile *objfi +@@ -687,7 +688,7 @@ syms_from_objfile (struct objfile *objfi We no longer warn if the lowest section is not a text segment (as happens for the PA64 port. */ @@ -818,7 +818,7 @@ Index: gdb-6.5/gdb/symfile.c { asection *lower_sect; asection *sect; -@@ -855,17 +856,21 @@ new_symfile_objfile (struct objfile *obj +@@ -856,17 +857,21 @@ new_symfile_objfile (struct objfile *obj /* If this is the main symbol file we have to clean up all users of the old main symbol file. Otherwise it is sufficient to fixup all the breakpoints that may have been redefined by this symbol file. */ @@ -842,7 +842,7 @@ Index: gdb-6.5/gdb/symfile.c /* We're done reading the symbol file; finish off complaints. */ clear_complaints (&symfile_complaints, 0, verbo); -@@ -908,7 +913,7 @@ symbol_file_add_with_addrs_or_offsets (b +@@ -909,7 +914,7 @@ symbol_file_add_with_addrs_or_offsets (b interactively wiping out any existing symbols. */ if ((have_full_symbols () || have_partial_symbols ()) @@ -851,7 +851,7 @@ Index: gdb-6.5/gdb/symfile.c && from_tty && !query ("Load new symbol table from \"%s\"? ", name)) error (_("Not confirmed.")); -@@ -1089,6 +1094,10 @@ symbol_file_clear (int from_tty) +@@ -1090,6 +1095,10 @@ symbol_file_clear (int from_tty) symfile_objfile->name) : !query (_("Discard symbol table? ")))) error (_("Not confirmed.")); @@ -862,7 +862,7 @@ Index: gdb-6.5/gdb/symfile.c free_all_objfiles (); /* solib descriptors may have handles to objfiles. Since their -@@ -2154,6 +2163,8 @@ reread_symbols (void) +@@ -2204,6 +2213,8 @@ reread_symbols (void) /* Discard cleanups as symbol reading was successful. */ discard_cleanups (old_cleanups); @@ -871,19 +871,19 @@ Index: gdb-6.5/gdb/symfile.c /* If the mtime has changed between the time we set new_modtime and now, we *want* this to be out of date, so don't call stat again now. */ -@@ -2529,6 +2540,7 @@ clear_symtab_users (void) +@@ -2579,6 +2590,7 @@ clear_symtab_users (void) clear_pc_function_cache (); if (deprecated_target_new_objfile_hook) deprecated_target_new_objfile_hook (NULL); + varobj_refresh (); - } - static void -Index: gdb-6.5/gdb/breakpoint.c + /* Clear globals which might have pointed into a removed objfile. + FIXME: It's not clear which of these are supposed to persist +Index: gdb-6.6/gdb/breakpoint.c =================================================================== ---- gdb-6.5.orig/gdb/breakpoint.c 2006-07-11 02:47:11.000000000 -0300 -+++ gdb-6.5/gdb/breakpoint.c 2006-07-11 02:56:59.000000000 -0300 -@@ -782,15 +782,15 @@ insert_watchpoints_for_new_thread (ptid_ +--- gdb-6.6.orig/gdb/breakpoint.c ++++ gdb-6.6/gdb/breakpoint.c +@@ -781,15 +781,15 @@ insert_watchpoints_for_new_thread (ptid_ struct value *v = b->owner->val_chain; /* Look at each value on the value chain. */ @@ -902,7 +902,7 @@ Index: gdb-6.5/gdb/breakpoint.c /* We only watch structs and arrays if user asked for it explicitly, never if they just happen to -@@ -802,8 +802,8 @@ insert_watchpoints_for_new_thread (ptid_ +@@ -801,8 +801,8 @@ insert_watchpoints_for_new_thread (ptid_ CORE_ADDR addr; int len, type; @@ -913,7 +913,7 @@ Index: gdb-6.5/gdb/breakpoint.c type = hw_write; if (b->owner->type == bp_read_watchpoint) type = hw_read; -@@ -2680,12 +2680,12 @@ mark_triggered_watchpoints (CORE_ADDR st +@@ -2682,12 +2682,12 @@ mark_triggered_watchpoints (CORE_ADDR st || b->type == bp_read_watchpoint || b->type == bp_access_watchpoint) { @@ -929,7 +929,7 @@ Index: gdb-6.5/gdb/breakpoint.c if (v == b->val_chain || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT -@@ -2693,11 +2693,11 @@ mark_triggered_watchpoints (CORE_ADDR st +@@ -2695,11 +2695,11 @@ mark_triggered_watchpoints (CORE_ADDR st { CORE_ADDR vaddr; @@ -943,7 +943,7 @@ Index: gdb-6.5/gdb/breakpoint.c b->watchpoint_triggered = 1; } } -@@ -2867,12 +2867,12 @@ bpstat_stop_status (CORE_ADDR bp_addr, p +@@ -2869,12 +2869,12 @@ bpstat_stop_status (CORE_ADDR bp_addr, p bs->stop = 0; continue; } @@ -959,7 +959,7 @@ Index: gdb-6.5/gdb/breakpoint.c if (v == b->val_chain || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT -@@ -2880,11 +2880,11 @@ bpstat_stop_status (CORE_ADDR bp_addr, p +@@ -2882,11 +2882,11 @@ bpstat_stop_status (CORE_ADDR bp_addr, p { CORE_ADDR vaddr; @@ -973,15 +973,15 @@ Index: gdb-6.5/gdb/breakpoint.c must_check_value = 1; } } -@@ -3931,6 +3931,7 @@ describe_other_breakpoints (CORE_ADDR pc - b->number, +@@ -3937,6 +3937,7 @@ describe_other_breakpoints (CORE_ADDR pc + printf_filtered ("%s%s ", ((b->enable_state == bp_disabled || b->enable_state == bp_shlib_disabled || + b->enable_state == bp_startup_disabled || b->enable_state == bp_call_disabled) - ? " (disabled)" + ? " (disabled)" : b->enable_state == bp_permanent -@@ -4609,6 +4610,62 @@ re_enable_breakpoints_in_shlibs (void) +@@ -4615,6 +4616,62 @@ re_enable_breakpoints_in_shlibs (void) } } @@ -1044,7 +1044,7 @@ Index: gdb-6.5/gdb/breakpoint.c static void solib_load_unload_1 (char *hookname, int tempflag, char *dll_pathname, char *cond_string, enum bptype bp_kind) -@@ -6955,6 +7012,7 @@ delete_breakpoint (struct breakpoint *bp +@@ -6961,6 +7018,7 @@ delete_breakpoint (struct breakpoint *bp && !b->loc->duplicate && b->enable_state != bp_disabled && b->enable_state != bp_shlib_disabled @@ -1052,7 +1052,7 @@ Index: gdb-6.5/gdb/breakpoint.c && !b->pending && b->enable_state != bp_call_disabled) { -@@ -7170,7 +7228,8 @@ breakpoint_re_set_one (void *bint) +@@ -7176,7 +7234,8 @@ breakpoint_re_set_one (void *bint) break; save_enable = b->enable_state; @@ -1062,10 +1062,10 @@ Index: gdb-6.5/gdb/breakpoint.c b->enable_state = bp_disabled; else /* If resetting a shlib-disabled breakpoint, we don't want to -Index: gdb-6.5/gdb/solib.c +Index: gdb-6.6/gdb/solib.c =================================================================== ---- gdb-6.5.orig/gdb/solib.c 2006-07-11 02:47:06.000000000 -0300 -+++ gdb-6.5/gdb/solib.c 2006-07-11 02:47:11.000000000 -0300 +--- gdb-6.6.orig/gdb/solib.c ++++ gdb-6.6/gdb/solib.c @@ -72,6 +72,8 @@ solib_ops (struct gdbarch *gdbarch) /* external data declarations */ @@ -1084,7 +1084,7 @@ Index: gdb-6.5/gdb/solib.c /* GLOBAL FUNCTION -@@ -372,7 +376,6 @@ free_so (struct so_list *so) +@@ -376,7 +380,6 @@ free_so (struct so_list *so) xfree (so); } @@ -1092,7 +1092,7 @@ Index: gdb-6.5/gdb/solib.c /* Return address of first so_list entry in master shared object list. */ struct so_list * master_so_list (void) -@@ -380,7 +383,6 @@ master_so_list (void) +@@ -384,7 +387,6 @@ master_so_list (void) return so_list_head; } @@ -1100,7 +1100,7 @@ Index: gdb-6.5/gdb/solib.c /* A small stub to get us past the arg-passing pinhole of catch_errors. */ static int -@@ -392,15 +394,40 @@ symbol_add_stub (void *arg) +@@ -396,15 +398,40 @@ symbol_add_stub (void *arg) /* Have we already loaded this shared object? */ ALL_OBJFILES (so->objfile) { @@ -1144,7 +1144,7 @@ Index: gdb-6.5/gdb/solib.c free_section_addr_info (sap); return (1); -@@ -523,6 +550,10 @@ update_solib_list (int from_tty, struct +@@ -532,6 +559,10 @@ update_solib_list (int from_tty, struct the inferior's current list. */ while (i) { @@ -1155,7 +1155,7 @@ Index: gdb-6.5/gdb/solib.c if (! strcmp (gdb->so_original_name, i->so_original_name)) break; -@@ -576,28 +607,7 @@ update_solib_list (int from_tty, struct +@@ -585,28 +616,7 @@ update_solib_list (int from_tty, struct /* Fill in the rest of each of the `struct so_list' nodes. */ for (i = inferior; i; i = i->next) { @@ -1185,8 +1185,8 @@ Index: gdb-6.5/gdb/solib.c /* Notify any observer that the shared object has been loaded now that we've added it to GDB's tables. */ -@@ -606,6 +616,41 @@ update_solib_list (int from_tty, struct - } +@@ -702,6 +712,41 @@ solib_add (char *pattern, int from_tty, + } } +void @@ -1225,9 +1225,9 @@ Index: gdb-6.5/gdb/solib.c + } +} - /* GLOBAL FUNCTION + /* -@@ -978,4 +1023,12 @@ This takes precedence over the environme +@@ -1006,4 +1051,12 @@ This takes precedence over the environme reload_shared_libraries, show_solib_search_path, &setlist, &showlist); @@ -1240,10 +1240,10 @@ Index: gdb-6.5/gdb/solib.c + NULL, NULL, + &setdebuglist, &showdebuglist); } -Index: gdb-6.5/gdb/elfread.c +Index: gdb-6.6/gdb/elfread.c =================================================================== ---- gdb-6.5.orig/gdb/elfread.c 2006-07-11 02:47:06.000000000 -0300 -+++ gdb-6.5/gdb/elfread.c 2006-07-11 02:47:11.000000000 -0300 +--- gdb-6.6.orig/gdb/elfread.c ++++ gdb-6.6/gdb/elfread.c @@ -556,7 +556,7 @@ elf_symfile_read (struct objfile *objfil /* If we are reinitializing, or if we have never loaded syms yet, set table to empty. MAINLINE is cleared so that *_read_psymtab diff --git a/gdb-6.3-security-errata-20050610.patch b/gdb-6.3-security-errata-20050610.patch index 70f50c5..756fbcc 100644 --- a/gdb-6.3-security-errata-20050610.patch +++ b/gdb-6.3-security-errata-20050610.patch @@ -16,10 +16,10 @@ (source_command): Update documentation. Check permissions if FROM_TTY is -1. -Index: gdb-6.5/gdb/cli/cli-cmds.c +Index: gdb-6.6/gdb/cli/cli-cmds.c =================================================================== ---- gdb-6.5.orig/gdb/cli/cli-cmds.c 2006-07-11 03:22:45.000000000 -0300 -+++ gdb-6.5/gdb/cli/cli-cmds.c 2006-07-11 03:26:36.000000000 -0300 +--- gdb-6.6.orig/gdb/cli/cli-cmds.c ++++ gdb-6.6/gdb/cli/cli-cmds.c @@ -38,6 +38,7 @@ #include "objfiles.h" #include "source.h" @@ -28,7 +28,7 @@ Index: gdb-6.5/gdb/cli/cli-cmds.c #include "ui-out.h" -@@ -453,12 +454,31 @@ source_command (char *args, int from_tty +@@ -461,12 +462,31 @@ source_script (char *file, int from_tty) if (fd == -1) { @@ -61,10 +61,10 @@ Index: gdb-6.5/gdb/cli/cli-cmds.c stream = fdopen (fd, FOPEN_RT); script_from_file (stream, file); -Index: gdb-6.5/gdb/testsuite/gdb.base/gdbinit.exp +Index: gdb-6.6/gdb/testsuite/gdb.base/gdbinit.exp =================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.5/gdb/testsuite/gdb.base/gdbinit.exp 2006-07-11 03:22:48.000000000 -0300 +--- /dev/null ++++ gdb-6.6/gdb/testsuite/gdb.base/gdbinit.exp @@ -0,0 +1,98 @@ +# Copyright 2005 +# Free Software Foundation, Inc. @@ -164,39 +164,39 @@ Index: gdb-6.5/gdb/testsuite/gdb.base/gdbinit.exp +} + +remote_exec build "rm .gdbinit" -Index: gdb-6.5/gdb/testsuite/gdb.base/gdbinit.sample +Index: gdb-6.6/gdb/testsuite/gdb.base/gdbinit.sample =================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.5/gdb/testsuite/gdb.base/gdbinit.sample 2006-07-11 03:22:48.000000000 -0300 +--- /dev/null ++++ gdb-6.6/gdb/testsuite/gdb.base/gdbinit.sample @@ -0,0 +1 @@ +echo "\nin gdbinit" -Index: gdb-6.5/gdb/main.c +Index: gdb-6.6/gdb/main.c =================================================================== ---- gdb-6.5.orig/gdb/main.c 2006-07-11 03:22:45.000000000 -0300 -+++ gdb-6.5/gdb/main.c 2006-07-11 03:27:03.000000000 -0300 -@@ -643,7 +643,7 @@ extern int gdbtk_test (char *); +--- gdb-6.6.orig/gdb/main.c ++++ gdb-6.6/gdb/main.c +@@ -644,7 +644,7 @@ extern int gdbtk_test (char *); if (!inhibit_gdbinit) { -- catch_command_errors (source_command, homeinit, 0, RETURN_MASK_ALL); -+ catch_command_errors (source_command, homeinit, -1, RETURN_MASK_ALL); +- catch_command_errors (source_script, homeinit, 0, RETURN_MASK_ALL); ++ catch_command_errors (source_script, homeinit, -1, RETURN_MASK_ALL); } /* Do stats; no need to do them elsewhere since we'll only -@@ -730,7 +730,7 @@ extern int gdbtk_test (char *); +@@ -722,7 +722,7 @@ extern int gdbtk_test (char *); || memcmp ((char *) &homebuf, (char *) &cwdbuf, sizeof (struct stat))) if (!inhibit_gdbinit) { -- catch_command_errors (source_command, gdbinit, 0, RETURN_MASK_ALL); -+ catch_command_errors (source_command, gdbinit, -1, RETURN_MASK_ALL); +- catch_command_errors (source_script, gdbinit, 0, RETURN_MASK_ALL); ++ catch_command_errors (source_script, gdbinit, -1, RETURN_MASK_ALL); } for (i = 0; i < ncmd; i++) -Index: gdb-6.5/gdb/Makefile.in +Index: gdb-6.6/gdb/Makefile.in =================================================================== ---- gdb-6.5.orig/gdb/Makefile.in 2006-07-11 03:22:45.000000000 -0300 -+++ gdb-6.5/gdb/Makefile.in 2006-07-11 03:22:48.000000000 -0300 -@@ -2859,7 +2859,7 @@ cli-cmds.o: $(srcdir)/cli/cli-cmds.c $(d +--- gdb-6.6.orig/gdb/Makefile.in ++++ gdb-6.6/gdb/Makefile.in +@@ -2927,7 +2927,7 @@ cli-cmds.o: $(srcdir)/cli/cli-cmds.c $(d $(expression_h) $(frame_h) $(value_h) $(language_h) $(filenames_h) \ $(objfiles_h) $(source_h) $(disasm_h) $(ui_out_h) $(top_h) \ $(cli_decode_h) $(cli_script_h) $(cli_setshow_h) $(cli_cmds_h) \ diff --git a/gdb-6.3-test-sepcrc-20050402.patch b/gdb-6.3-test-sepcrc-20050402.patch index a26ab72..25afdf5 100644 --- a/gdb-6.3-test-sepcrc-20050402.patch +++ b/gdb-6.3-test-sepcrc-20050402.patch @@ -1,13 +1,8 @@ -Index: ./gdb/testsuite/ChangeLog -2005-04-02 Andrew Cagney - - * gdb.base/sepdebug.exp: Check that things fail when the debug - info is corrupt. - * gdb.base/sepdebug2.c (main): New file. - ---- ../gdb-6.3/./gdb/testsuite/gdb.base/sepdebug.exp 2004-01-14 10:09:37.000000000 -0500 -+++ ./gdb/testsuite/gdb.base/sepdebug.exp 2005-04-02 15:57:17.000000000 -0500 -@@ -985,3 +985,35 @@ +Index: gdb-6.6/gdb/testsuite/gdb.base/sepdebug.exp +=================================================================== +--- gdb-6.6.orig/gdb/testsuite/gdb.base/sepdebug.exp 2006-10-17 22:17:45.000000000 +0200 ++++ gdb-6.6/gdb/testsuite/gdb.base/sepdebug.exp 2007-01-20 18:39:26.000000000 +0100 +@@ -953,3 +953,40 @@ if [istarget "*-*-vxworks*"] { send_gdb "set args main\n" gdb_expect -re ".*$gdb_prompt $" {} } @@ -33,6 +28,11 @@ Index: ./gdb/testsuite/ChangeLog +} +remote_exec build "cp $corrupt_debug_file ${existing_binfile}.debug" + ++gdb_exit ++gdb_start ++gdb_reinitialize_dir $srcdir/$subdir ++gdb_load ${binfile} ++ +set test "A corrupt debug file gets a warning" +gdb_test_multiple "file $existing_binfile" "$test" { + -re "warning:.*mismatch.*" { @@ -43,8 +43,10 @@ Index: ./gdb/testsuite/ChangeLog + exp_continue + } +} ---- /dev/null 2005-04-02 11:30:32.604931736 -0500 -+++ ./gdb/testsuite/gdb.base/sepdebug2.c 2005-04-02 13:09:31.000000000 -0500 +Index: gdb-6.6/gdb/testsuite/gdb.base/sepdebug2.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-6.6/gdb/testsuite/gdb.base/sepdebug2.c 2007-01-20 18:41:35.000000000 +0100 @@ -0,0 +1,5 @@ +int +main (int argc, char *argv[], char *envp[]) diff --git a/gdb-6.3-warnings-20050317.patch b/gdb-6.3-warnings-20050317.patch index 248e491..a92aced 100644 --- a/gdb-6.3-warnings-20050317.patch +++ b/gdb-6.3-warnings-20050317.patch @@ -1,8 +1,8 @@ -Index: gdb-6.5/gdb/configure +Index: gdb-6.6/gdb/configure =================================================================== ---- gdb-6.5.orig/gdb/configure 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/configure 2006-07-11 15:01:23.000000000 -0300 -@@ -20125,7 +20125,8 @@ fi +--- gdb-6.6.orig/gdb/configure ++++ gdb-6.6/gdb/configure +@@ -20991,7 +20991,8 @@ fi # gdb/doc/gdbint.texinfo. build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \ -Wformat -Wparentheses -Wpointer-arith -Wformat-nonliteral \ @@ -12,10 +12,10 @@ Index: gdb-6.5/gdb/configure # GCC supports -Wuninitialized only with -O or -On, n != 0. if test x${CFLAGS+set} = xset; then -Index: gdb-6.5/gdb/mi/mi-cmd-env.c +Index: gdb-6.6/gdb/mi/mi-cmd-env.c =================================================================== ---- gdb-6.5.orig/gdb/mi/mi-cmd-env.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/mi/mi-cmd-env.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/mi/mi-cmd-env.c ++++ gdb-6.6/gdb/mi/mi-cmd-env.c @@ -126,7 +126,7 @@ mi_cmd_env_path (char *command, char **a static struct mi_opt opts[] = { @@ -34,10 +34,10 @@ Index: gdb-6.5/gdb/mi/mi-cmd-env.c }; dont_repeat (); -Index: gdb-6.5/gdb/mi/mi-getopt.c +Index: gdb-6.6/gdb/mi/mi-getopt.c =================================================================== ---- gdb-6.5.orig/gdb/mi/mi-getopt.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/mi/mi-getopt.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/mi/mi-getopt.c ++++ gdb-6.6/gdb/mi/mi-getopt.c @@ -82,7 +82,7 @@ mi_valid_noargs (const char *prefix, int char *optarg; static struct mi_opt opts[] = @@ -47,10 +47,10 @@ Index: gdb-6.5/gdb/mi/mi-getopt.c }; if (mi_getopt (prefix, argc, argv, opts, &optind, &optarg) == -1) -Index: gdb-6.5/gdb/mi/mi-cmd-break.c +Index: gdb-6.6/gdb/mi/mi-cmd-break.c =================================================================== ---- gdb-6.5.orig/gdb/mi/mi-cmd-break.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/mi/mi-cmd-break.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/mi/mi-cmd-break.c ++++ gdb-6.6/gdb/mi/mi-cmd-break.c @@ -90,7 +90,7 @@ mi_cmd_break_insert (char *command, char {"c", CONDITION_OPT, 1}, {"i", IGNORE_COUNT_OPT, 1}, @@ -69,10 +69,10 @@ Index: gdb-6.5/gdb/mi/mi-cmd-break.c }; /* Parse arguments. */ -Index: gdb-6.5/gdb/mi/mi-cmd-disas.c +Index: gdb-6.6/gdb/mi/mi-cmd-disas.c =================================================================== ---- gdb-6.5.orig/gdb/mi/mi-cmd-disas.c 2006-07-11 15:01:22.000000000 -0300 -+++ gdb-6.5/gdb/mi/mi-cmd-disas.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/mi/mi-cmd-disas.c ++++ gdb-6.6/gdb/mi/mi-cmd-disas.c @@ -84,7 +84,7 @@ mi_cmd_disassemble (char *command, char {"n", NUM_OPT, 1}, {"s", START_OPT, 1}, @@ -82,10 +82,10 @@ Index: gdb-6.5/gdb/mi/mi-cmd-disas.c }; /* Get the options with their arguments. Keep track of what we -Index: gdb-6.5/gdb/mi/mi-main.c +Index: gdb-6.6/gdb/mi/mi-main.c =================================================================== ---- gdb-6.5.orig/gdb/mi/mi-main.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/mi/mi-main.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/mi/mi-main.c ++++ gdb-6.6/gdb/mi/mi-main.c @@ -773,7 +773,7 @@ mi_cmd_data_read_memory (char *command, static struct mi_opt opts[] = { @@ -95,7 +95,7 @@ Index: gdb-6.5/gdb/mi/mi-main.c }; while (1) -@@ -975,7 +975,7 @@ mi_cmd_data_write_memory (char *command, +@@ -973,7 +973,7 @@ mi_cmd_data_write_memory (char *command, static struct mi_opt opts[] = { {"o", OFFSET_OPT, 1}, @@ -104,10 +104,10 @@ Index: gdb-6.5/gdb/mi/mi-main.c }; while (1) -Index: gdb-6.5/gdb/p-valprint.c +Index: gdb-6.6/gdb/p-valprint.c =================================================================== ---- gdb-6.5.orig/gdb/p-valprint.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/p-valprint.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/p-valprint.c ++++ gdb-6.6/gdb/p-valprint.c @@ -753,7 +753,7 @@ pascal_object_print_value_fields (struct int dont_print_statmem) { @@ -126,10 +126,10 @@ Index: gdb-6.5/gdb/p-valprint.c struct type **last_dont_print = (struct type **) obstack_next_free (&dont_print_vb_obstack); int i, n_baseclasses = TYPE_N_BASECLASSES (type); -Index: gdb-6.5/gdb/cp-valprint.c +Index: gdb-6.6/gdb/cp-valprint.c =================================================================== ---- gdb-6.5.orig/gdb/cp-valprint.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/cp-valprint.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/cp-valprint.c ++++ gdb-6.6/gdb/cp-valprint.c @@ -265,7 +265,7 @@ cp_print_value_fields (struct type *type struct type **dont_print_vb,int dont_print_statmem) { @@ -148,10 +148,10 @@ Index: gdb-6.5/gdb/cp-valprint.c struct type **last_dont_print = (struct type **) obstack_next_free (&dont_print_vb_obstack); int i, n_baseclasses = TYPE_N_BASECLASSES (type); -Index: gdb-6.5/gdb/tui/tui-layout.c +Index: gdb-6.6/gdb/tui/tui-layout.c =================================================================== ---- gdb-6.5.orig/gdb/tui/tui-layout.c 2006-07-11 15:01:22.000000000 -0300 -+++ gdb-6.5/gdb/tui/tui-layout.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/tui/tui-layout.c ++++ gdb-6.6/gdb/tui/tui-layout.c @@ -755,7 +755,7 @@ show_source_disasm_command (void) if (TUI_DISASM_WIN == NULL) { @@ -188,20 +188,20 @@ Index: gdb-6.5/gdb/tui/tui-layout.c LOCATOR_WIN, 2 /* 1 */ , tui_term_width (), -Index: gdb-6.5/gdb/testsuite/gdb.base/move-dir.h +Index: gdb-6.6/gdb/testsuite/gdb.base/move-dir.h =================================================================== ---- gdb-6.5.orig/gdb/testsuite/gdb.base/move-dir.h 2006-07-11 15:01:23.000000000 -0300 -+++ gdb-6.5/gdb/testsuite/gdb.base/move-dir.h 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/testsuite/gdb.base/move-dir.h ++++ gdb-6.6/gdb/testsuite/gdb.base/move-dir.h @@ -1,4 +1,4 @@ -#include +#include void other() { const char* ostring = "other"; -Index: gdb-6.5/gdb/testsuite/gdb.base/sigrepeat.c +Index: gdb-6.6/gdb/testsuite/gdb.base/sigrepeat.c =================================================================== ---- gdb-6.5.orig/gdb/testsuite/gdb.base/sigrepeat.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/testsuite/gdb.base/sigrepeat.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/testsuite/gdb.base/sigrepeat.c ++++ gdb-6.6/gdb/testsuite/gdb.base/sigrepeat.c @@ -22,6 +22,7 @@ #include #include @@ -210,10 +210,10 @@ Index: gdb-6.5/gdb/testsuite/gdb.base/sigrepeat.c #include static volatile int done[2]; -Index: gdb-6.5/gdb/s390-tdep.c +Index: gdb-6.6/gdb/s390-tdep.c =================================================================== ---- gdb-6.5.orig/gdb/s390-tdep.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/s390-tdep.c 2006-07-11 15:02:37.000000000 -0300 +--- gdb-6.6.orig/gdb/s390-tdep.c ++++ gdb-6.6/gdb/s390-tdep.c @@ -2277,6 +2277,9 @@ s390_return_value (struct gdbarch *gdbar case RETURN_VALUE_STRUCT_CONVENTION: error (_("Cannot set function return value.")); @@ -234,27 +234,27 @@ Index: gdb-6.5/gdb/s390-tdep.c } } -Index: gdb-6.5/gdb/remote.c +Index: gdb-6.6/gdb/remote.c =================================================================== ---- gdb-6.5.orig/gdb/remote.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/remote.c 2006-07-11 15:02:32.000000000 -0300 -@@ -2523,10 +2523,10 @@ cleanup_sigint_signal_handler (void *dum +--- gdb-6.6.orig/gdb/remote.c ++++ gdb-6.6/gdb/remote.c +@@ -2843,10 +2843,10 @@ cleanup_sigint_signal_handler (void *dum { signal (SIGINT, handle_sigint); if (sigint_remote_twice_token) -- delete_async_signal_handler ((struct async_signal_handler **) +- delete_async_signal_handler ((struct async_signal_handler **) + delete_async_signal_handler ((struct async_signal_handler **) (char *) &sigint_remote_twice_token); if (sigint_remote_token) -- delete_async_signal_handler ((struct async_signal_handler **) +- delete_async_signal_handler ((struct async_signal_handler **) + delete_async_signal_handler ((struct async_signal_handler **) (char *) &sigint_remote_token); } -Index: gdb-6.5/gdb/f-exp.y +Index: gdb-6.6/gdb/f-exp.y =================================================================== ---- gdb-6.5.orig/gdb/f-exp.y 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/f-exp.y 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/f-exp.y ++++ gdb-6.6/gdb/f-exp.y @@ -567,6 +567,8 @@ ptype : typebase case tp_function: follow_type = lookup_function_type (follow_type); @@ -264,11 +264,11 @@ Index: gdb-6.5/gdb/f-exp.y } $$ = follow_type; } -Index: gdb-6.5/gdb/remote-fileio.c +Index: gdb-6.6/gdb/remote-fileio.c =================================================================== ---- gdb-6.5.orig/gdb/remote-fileio.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/remote-fileio.c 2006-07-11 15:01:23.000000000 -0300 -@@ -1317,19 +1317,19 @@ static struct { +--- gdb-6.6.orig/gdb/remote-fileio.c ++++ gdb-6.6/gdb/remote-fileio.c +@@ -1332,19 +1332,19 @@ static struct { char *name; void (*func)(char *); } remote_fio_func_map[] = { @@ -301,11 +301,11 @@ Index: gdb-6.5/gdb/remote-fileio.c }; static int -Index: gdb-6.5/gdb/source.c +Index: gdb-6.6/gdb/source.c =================================================================== ---- gdb-6.5.orig/gdb/source.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/source.c 2006-07-11 15:01:23.000000000 -0300 -@@ -160,7 +160,7 @@ get_current_source_symtab_and_line (void +--- gdb-6.6.orig/gdb/source.c ++++ gdb-6.6/gdb/source.c +@@ -172,7 +172,7 @@ get_current_source_symtab_and_line (void void set_default_source_symtab_and_line (void) { @@ -314,7 +314,7 @@ Index: gdb-6.5/gdb/source.c if (!have_full_symbols () && !have_partial_symbols ()) error (_("No symbol table is loaded. Use the \"file\" command.")); -@@ -1314,7 +1314,7 @@ static void +@@ -1428,7 +1428,7 @@ static void line_info (char *arg, int from_tty) { struct symtabs_and_lines sals; @@ -323,11 +323,11 @@ Index: gdb-6.5/gdb/source.c CORE_ADDR start_pc, end_pc; int i; -Index: gdb-6.5/gdb/symfile.c +Index: gdb-6.6/gdb/symfile.c =================================================================== ---- gdb-6.5.orig/gdb/symfile.c 2006-07-11 15:01:22.000000000 -0300 -+++ gdb-6.5/gdb/symfile.c 2006-07-11 15:02:34.000000000 -0300 -@@ -2877,6 +2877,8 @@ add_psymbol_with_dem_name_to_list (char +--- gdb-6.6.orig/gdb/symfile.c ++++ gdb-6.6/gdb/symfile.c +@@ -2933,6 +2933,8 @@ add_psymbol_with_dem_name_to_list (char deprecated_bcache (buf, dem_namelength + 1, objfile->psymbol_cache); break; /* FIXME What should be done for the default case? Ignoring for now. */ @@ -336,10 +336,10 @@ Index: gdb-6.5/gdb/symfile.c } /* val and coreaddr are mutually exclusive, one of them *will* be zero */ -Index: gdb-6.5/gdb/linespec.c +Index: gdb-6.6/gdb/linespec.c =================================================================== ---- gdb-6.5.orig/gdb/linespec.c 2006-07-11 15:01:23.000000000 -0300 -+++ gdb-6.5/gdb/linespec.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/linespec.c ++++ gdb-6.6/gdb/linespec.c @@ -1631,7 +1631,7 @@ static struct symtabs_and_lines find_method (int funfirstline, char ***canonical, char *saved_arg, char *copy, struct type *t, struct symbol *sym_class) @@ -349,10 +349,10 @@ Index: gdb-6.5/gdb/linespec.c struct symbol *sym = 0; int i1; /* Counter for the symbol array. */ struct symbol **sym_arr = alloca (total_number_of_methods (t) -Index: gdb-6.5/gdb/macroscope.c +Index: gdb-6.6/gdb/macroscope.c =================================================================== ---- gdb-6.5.orig/gdb/macroscope.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/macroscope.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/macroscope.c ++++ gdb-6.6/gdb/macroscope.c @@ -33,7 +33,7 @@ struct macro_scope * sal_macro_scope (struct symtab_and_line sal) @@ -390,23 +390,13 @@ Index: gdb-6.5/gdb/macroscope.c struct macro_scope *ms; /* If there's a selected frame, use its PC. */ -Index: gdb-6.5/gdb/target.c +Index: gdb-6.6/gdb/target.c =================================================================== ---- gdb-6.5.orig/gdb/target.c 2006-07-11 15:01:22.000000000 -0300 -+++ gdb-6.5/gdb/target.c 2006-07-11 15:02:33.000000000 -0300 -@@ -1142,6 +1142,9 @@ target_xfer_memory (CORE_ADDR memaddr, g - if (!write) - return EIO; - break; -+ -+ default: -+ break; - } - - while (reg_len > 0) -@@ -1220,6 +1223,9 @@ target_xfer_memory_partial (CORE_ADDR me - return -1; - } +--- gdb-6.6.orig/gdb/target.c ++++ gdb-6.6/gdb/target.c +@@ -1045,6 +1045,9 @@ memory_xfer_partial (struct target_ops * + if (writebuf != NULL) + error (_("Writing to flash memory forbidden in this context")); break; + + default: @@ -414,10 +404,10 @@ Index: gdb-6.5/gdb/target.c } if (region->attrib.cache) -Index: gdb-6.5/gdb/gdb-events.c +Index: gdb-6.6/gdb/gdb-events.c =================================================================== ---- gdb-6.5.orig/gdb/gdb-events.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/gdb-events.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/gdb-events.c ++++ gdb-6.6/gdb/gdb-events.c @@ -321,6 +321,8 @@ gdb_events_deliver (struct gdb_events *v case architecture_changed: vector->architecture_changed (); @@ -427,11 +417,11 @@ Index: gdb-6.5/gdb/gdb-events.c } delivering_events = event->next; xfree (event); -Index: gdb-6.5/gdb/dwarf2read.c +Index: gdb-6.6/gdb/dwarf2read.c =================================================================== ---- gdb-6.5.orig/gdb/dwarf2read.c 2006-07-11 15:01:23.000000000 -0300 -+++ gdb-6.5/gdb/dwarf2read.c 2006-07-11 15:02:33.000000000 -0300 -@@ -9179,6 +9179,7 @@ dwarf_decode_macros (struct line_header +--- gdb-6.6.orig/gdb/dwarf2read.c ++++ gdb-6.6/gdb/dwarf2read.c +@@ -9307,6 +9307,7 @@ dwarf_decode_macros (struct line_header for (;;) { enum dwarf_macinfo_record_type macinfo_type; @@ -439,7 +429,7 @@ Index: gdb-6.5/gdb/dwarf2read.c /* Do we at least have room for a macinfo type byte? */ if (mac_ptr >= mac_end) -@@ -9190,13 +9191,16 @@ dwarf_decode_macros (struct line_header +@@ -9318,13 +9319,16 @@ dwarf_decode_macros (struct line_header macinfo_type = read_1_byte (abfd, mac_ptr); mac_ptr++; @@ -461,10 +451,10 @@ Index: gdb-6.5/gdb/dwarf2read.c case DW_MACINFO_define: case DW_MACINFO_undef: { -Index: gdb-6.5/gdb/stabsread.c +Index: gdb-6.6/gdb/stabsread.c =================================================================== ---- gdb-6.5.orig/gdb/stabsread.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/stabsread.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/stabsread.c ++++ gdb-6.6/gdb/stabsread.c @@ -1794,7 +1794,8 @@ again: struct type *domain = read_type (pp, objfile); struct type *return_type; @@ -475,10 +465,10 @@ Index: gdb-6.5/gdb/stabsread.c if (**pp != ',') /* Invalid member type data format. */ -Index: gdb-6.5/gdb/dwarf2expr.c +Index: gdb-6.6/gdb/dwarf2expr.c =================================================================== ---- gdb-6.5.orig/gdb/dwarf2expr.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/dwarf2expr.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/dwarf2expr.c ++++ gdb-6.6/gdb/dwarf2expr.c @@ -559,6 +559,8 @@ execute_stack_op (struct dwarf_expr_cont op_ptr = read_uleb128 (op_ptr, op_end, ®); result += reg; @@ -488,10 +478,10 @@ Index: gdb-6.5/gdb/dwarf2expr.c } break; -Index: gdb-6.5/gdb/varobj.c +Index: gdb-6.6/gdb/varobj.c =================================================================== ---- gdb-6.5.orig/gdb/varobj.c 2006-07-11 15:01:22.000000000 -0300 -+++ gdb-6.5/gdb/varobj.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/varobj.c ++++ gdb-6.6/gdb/varobj.c @@ -325,10 +325,9 @@ struct language_specific /* Array of known source language routines. */ @@ -544,11 +534,11 @@ Index: gdb-6.5/gdb/varobj.c /* Set ourselves as our root */ var->root->rootvar = var; -Index: gdb-6.5/gdb/configure.ac +Index: gdb-6.6/gdb/configure.ac =================================================================== ---- gdb-6.5.orig/gdb/configure.ac 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/configure.ac 2006-07-11 15:01:23.000000000 -0300 -@@ -1133,7 +1133,8 @@ fi +--- gdb-6.6.orig/gdb/configure.ac ++++ gdb-6.6/gdb/configure.ac +@@ -1112,7 +1112,8 @@ fi # gdb/doc/gdbint.texinfo. build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \ -Wformat -Wparentheses -Wpointer-arith -Wformat-nonliteral \ @@ -558,10 +548,10 @@ Index: gdb-6.5/gdb/configure.ac # GCC supports -Wuninitialized only with -O or -On, n != 0. if test x${CFLAGS+set} = xset; then -Index: gdb-6.5/gdb/doublest.c +Index: gdb-6.6/gdb/doublest.c =================================================================== ---- gdb-6.5.orig/gdb/doublest.c 2006-07-11 15:00:08.000000000 -0300 -+++ gdb-6.5/gdb/doublest.c 2006-07-11 15:01:23.000000000 -0300 +--- gdb-6.6.orig/gdb/doublest.c ++++ gdb-6.6/gdb/doublest.c @@ -94,15 +94,10 @@ get_field (const bfd_byte *data, enum fl { result |= (unsigned long)*(data + cur_byte) << cur_bitshift; diff --git a/gdb-6.5-bz109921-DW_AT_decl_file-fix.patch b/gdb-6.5-bz109921-DW_AT_decl_file-fix.patch index 3313d54..39a89a4 100644 --- a/gdb-6.5-bz109921-DW_AT_decl_file-fix.patch +++ b/gdb-6.5-bz109921-DW_AT_decl_file-fix.patch @@ -21,9 +21,11 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 (SYMBOL_FILE_INDEX, SYMBOL_FILE_SYMTAB): New macros. ---- ./gdb/buildsym.c 2005-12-17 22:33:59.000000000 +0000 -+++ ./gdb/buildsym.c 2007-01-09 08:30:38.000000000 +0000 -@@ -535,7 +535,7 @@ make_blockvector (struct objfile *objfil +Index: gdb-6.6/gdb/buildsym.c +=================================================================== +--- gdb-6.6.orig/gdb/buildsym.c 2006-08-25 18:32:32.000000000 +0200 ++++ gdb-6.6/gdb/buildsym.c 2007-01-20 13:59:48.000000000 +0100 +@@ -540,7 +540,7 @@ make_blockvector (struct objfile *objfil the directory in which it resides (or NULL if not known). */ void @@ -32,7 +34,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 { struct subfile *subfile; -@@ -547,6 +547,17 @@ start_subfile (char *name, char *dirname +@@ -552,6 +552,17 @@ start_subfile (char *name, char *dirname if (FILENAME_CMP (subfile->name, name) == 0) { current_subfile = subfile; @@ -50,7 +52,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 return; } } -@@ -562,6 +573,7 @@ start_subfile (char *name, char *dirname +@@ -567,6 +578,7 @@ start_subfile (char *name, char *dirname current_subfile = subfile; /* Save its name and compilation directory name */ @@ -58,7 +60,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 subfile->name = (name == NULL) ? NULL : savestring (name, strlen (name)); subfile->dirname = (dirname == NULL) ? NULL : savestring (dirname, strlen (dirname)); -@@ -617,6 +629,13 @@ start_subfile (char *name, char *dirname +@@ -622,6 +634,13 @@ start_subfile (char *name, char *dirname } } @@ -72,7 +74,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 /* For stabs readers, the first N_SO symbol is assumed to be the source file name, and the subfile struct is initialized using that assumption. If another N_SO symbol is later seen, immediately -@@ -816,9 +835,12 @@ end_symtab (CORE_ADDR end_addr, struct o +@@ -821,9 +840,12 @@ end_symtab (CORE_ADDR end_addr, struct o { struct symtab *symtab = NULL; struct blockvector *blockvector; @@ -86,7 +88,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 /* Finish the lexical context of the last function in the file; pop the context stack. */ -@@ -916,6 +938,18 @@ end_symtab (CORE_ADDR end_addr, struct o +@@ -921,6 +943,18 @@ end_symtab (CORE_ADDR end_addr, struct o #endif PROCESS_LINENUMBER_HOOK (); /* Needed for xcoff. */ @@ -105,7 +107,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 /* Now create the symtab objects proper, one for each subfile. */ /* (The main file is the last one on the chain.) */ -@@ -976,6 +1010,16 @@ end_symtab (CORE_ADDR end_addr, struct o +@@ -981,6 +1015,16 @@ end_symtab (CORE_ADDR end_addr, struct o strlen (subfile->dirname) + 1); strcpy (symtab->dirname, subfile->dirname); } @@ -122,7 +124,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 else { symtab->dirname = NULL; -@@ -1004,6 +1048,13 @@ end_symtab (CORE_ADDR end_addr, struct o +@@ -1009,6 +1053,13 @@ end_symtab (CORE_ADDR end_addr, struct o but the main file. */ symtab->primary = 0; @@ -136,7 +138,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 } if (subfile->name != NULL) { -@@ -1032,9 +1083,40 @@ end_symtab (CORE_ADDR end_addr, struct o +@@ -1037,9 +1088,40 @@ end_symtab (CORE_ADDR end_addr, struct o symtab->primary = 1; } @@ -177,8 +179,10 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 return symtab; } ---- ./gdb/buildsym.h 2005-12-17 22:33:59.000000000 +0000 -+++ ./gdb/buildsym.h 2007-01-09 08:17:17.000000000 +0000 +Index: gdb-6.6/gdb/buildsym.h +=================================================================== +--- gdb-6.6.orig/gdb/buildsym.h 2005-12-17 23:33:59.000000000 +0100 ++++ gdb-6.6/gdb/buildsym.h 2007-01-20 13:59:48.000000000 +0100 @@ -63,6 +63,7 @@ EXTERN CORE_ADDR last_source_start_addr; struct subfile { @@ -197,9 +201,11 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 extern void start_subfile (char *name, char *dirname); extern void patch_subfile_names (struct subfile *subfile, char *name); ---- ./gdb/dwarf2read.c 2007-01-08 22:28:24.000000000 +0000 -+++ ./gdb/dwarf2read.c 2007-01-09 08:58:41.000000000 +0000 -@@ -847,7 +847,7 @@ static struct line_header *(dwarf_decode +Index: gdb-6.6/gdb/dwarf2read.c +=================================================================== +--- gdb-6.6.orig/gdb/dwarf2read.c 2007-01-20 06:43:04.000000000 +0100 ++++ gdb-6.6/gdb/dwarf2read.c 2007-01-20 14:00:12.000000000 +0100 +@@ -853,7 +853,7 @@ static struct line_header *(dwarf_decode static void dwarf_decode_lines (struct line_header *, char *, bfd *, struct dwarf2_cu *, struct partial_symtab *); @@ -208,7 +214,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 static struct symbol *new_symbol (struct die_info *, struct type *, struct dwarf2_cu *); -@@ -6321,6 +6321,7 @@ add_file_name (struct line_header *lh, +@@ -6428,6 +6428,7 @@ add_file_name (struct line_header *lh, unsigned int length) { struct file_entry *fe; @@ -216,7 +222,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 /* Grow the array if necessary. */ if (lh->file_names_size == 0) -@@ -6343,6 +6344,10 @@ add_file_name (struct line_header *lh, +@@ -6450,6 +6451,10 @@ add_file_name (struct line_header *lh, fe->mod_time = mod_time; fe->length = length; fe->included_p = 0; @@ -227,7 +233,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 } -@@ -6560,7 +6565,7 @@ dwarf_decode_lines (struct line_header * +@@ -6668,7 +6673,7 @@ dwarf_decode_lines (struct line_header * if (fe->dir_index) dir = lh->include_dirs[fe->dir_index - 1]; @@ -236,16 +242,16 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 } /* Decode the table. */ -@@ -6661,7 +6666,7 @@ dwarf_decode_lines (struct line_header * - dir = lh->include_dirs[fe->dir_index - 1]; - +@@ -6785,7 +6790,7 @@ dwarf_decode_lines (struct line_header * if (!decode_for_pst_p) -- dwarf2_start_subfile (fe->name, dir, comp_dir); -+ dwarf2_start_subfile (fe->name, dir, comp_dir, file); + { + last_subfile = current_subfile; +- dwarf2_start_subfile (fe->name, dir, comp_dir); ++ dwarf2_start_subfile (fe->name, dir, comp_dir, file); + } } break; - case DW_LNS_set_column: -@@ -6764,7 +6769,8 @@ dwarf_decode_lines (struct line_header * +@@ -6889,7 +6894,8 @@ dwarf_decode_lines (struct line_header * subfile's name. */ static void @@ -255,7 +261,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 { char *fullname; -@@ -6783,7 +6789,7 @@ dwarf2_start_subfile (char *filename, ch +@@ -6908,7 +6914,7 @@ dwarf2_start_subfile (char *filename, ch else fullname = filename; @@ -264,7 +270,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 if (fullname != filename) xfree (fullname); -@@ -6892,6 +6898,13 @@ new_symbol (struct die_info *die, struct +@@ -7017,6 +7023,13 @@ new_symbol (struct die_info *die, struct { SYMBOL_LINE (sym) = DW_UNSND (attr); } @@ -278,8 +284,10 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 switch (die->tag) { case DW_TAG_label: ---- ./gdb/symtab.c 2007-01-08 22:28:25.000000000 +0000 -+++ ./gdb/symtab.c 2007-01-09 08:19:05.000000000 +0000 +Index: gdb-6.6/gdb/symtab.c +=================================================================== +--- gdb-6.6.orig/gdb/symtab.c 2007-01-20 13:59:25.000000000 +0100 ++++ gdb-6.6/gdb/symtab.c 2007-01-20 13:59:48.000000000 +0100 @@ -1129,6 +1129,10 @@ lookup_symbol (const char *name, const s if (needtofreename) xfree (demangled_name); @@ -309,8 +317,10 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109921 psr->symbol = sym; psr->msymbol = NULL; psr->next = NULL; ---- ./gdb/symtab.h 2007-01-08 22:28:25.000000000 +0000 -+++ ./gdb/symtab.h 2007-01-09 08:44:02.000000000 +0000 +Index: gdb-6.6/gdb/symtab.h +=================================================================== +--- gdb-6.6.orig/gdb/symtab.h 2007-01-20 06:43:00.000000000 +0100 ++++ gdb-6.6/gdb/symtab.h 2007-01-20 13:59:48.000000000 +0100 @@ -623,6 +623,18 @@ struct symbol ENUM_BITFIELD(address_class) aclass : 6; diff --git a/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch b/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch index 05387ad..22f345e 100644 --- a/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch +++ b/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch @@ -4,10 +4,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=185337 currently for trivia nonthreaded helloworld with no debug info up to -ggdb2 you will get: (gdb) p errno - Cannot access memory at address 0x8 - -* with -ggdb3 "errno" gets resolved as _macro_ and the resulting - "(*__errno_location ())" expression is always fine. + [some error] * with -ggdb2 and less "errno" in fact does not exist anywhere as it was compiled to "(*__errno_location ())" and the macro definition is not present. @@ -16,554 +13,25 @@ will get: (%gs on i386) is not setup and it will result in: Cannot access memory at address 0x8 -IMO the right way is to ignore TLS symbols for inferiors without activated -threading. Patch attached. - -Also attached suggestion patch how to deal with the most common "errno" symbol +Attached suggestion patch how to deal with the most common "errno" symbol for the most common under-ggdb3 compiled programs. 2006-08-25 Jan Kratochvil - * dwarf2loc.c (dwarf_expr_tls_address): Code moved out to - `target_translate_tls_address'. - * target.c (target_translate_tls_address): Moved here. - Provided warnings for TLS `errno' on non-TLS targets. - * target.h (target_translate_tls_address): Moved here. - * eval.c (evaluate_subexp_standard): New `UNOP_MEMVAL_TLS'. - * expprint.c (print_subexp_standard): New `UNOP_MEMVAL_TLS'. - (op_name_standard): New `UNOP_MEMVAL_TLS'. - (dump_subexp_body_standard): New `UNOP_MEMVAL_TLS'. - * expression.h (enum exp_opcode): New `UNOP_MEMVAL_TLS'. - (union exp_element): New `objfile' type. - * parse.c (write_exp_elt_objfile): New `objfile' setter. - (write_exp_msymbol): Support new `UNOP_MEMVAL_TLS'. - (msym_text_tls_symbol_type, msym_data_tls_symbol_type, - msym_unknown_tls_symbol_type, build_parse): New TLS types. - (operator_length_standard): New `UNOP_MEMVAL_TLS'. - * parser-defs.h (write_exp_elt_objfile): New `objfile' setter. - * valops.c (value_at_lazy): Pass control to `value_at_lazy_tls'. - (value_at_lazy_tls): Provide TLS `struct objfile *' storage. - (value_fetch_lazy): Resolve TLS `struct objfile *' storage. - (value_assign): Resolve TLS `struct objfile *' storage. - * value.c (struct value, allocate_value, value_tls_objfile, - set_value_tls_objfile): Provide TLS `struct objfile *' storage. - * value.h (value_tls_objfile, set_value_tls_objfile, - value_at_lazy_tls): Provide TLS `struct objfile *' storage. - * Makefile.in: Updated dependencies. - -2006-08-25 Jan Kratochvil - - * gdb.threads/tls-nodebug.c: New file, test TLS symbols on gcc -s. - * gdb.threads/tls-nodebug.exp: New file, test TLS symbols on gcc -s. + * target.c (target_translate_tls_address): Provided warnings for TLS + `errno' on non-TLS targets. -Index: gdb-6.5/gdb/Makefile.in +Index: gdb-6.6/gdb/target.c =================================================================== -RCS file: /cvs/src/src/gdb/Makefile.in,v -retrieving revision 1.840 -diff -u -p -r1.840 gdb-6.5/gdb/Makefile.in ---- gdb-6.5.org/gdb/Makefile.in 22 Aug 2006 19:08:31 -0000 1.840 -+++ gdb-6.5/gdb/Makefile.in 25 Aug 2006 19:55:35 -0000 -@@ -1977,7 +1977,7 @@ exec.o: exec.c $(defs_h) $(frame_h) $(in - $(xcoffsolib_h) $(observer_h) - expprint.o: expprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \ - $(value_h) $(language_h) $(parser_defs_h) $(user_regs_h) $(target_h) \ -- $(gdb_string_h) $(block_h) -+ $(gdb_string_h) $(block_h) $(objfiles_h) - fbsd-nat.o: fbsd-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) $(regcache_h) \ - $(regset_h) $(gdb_assert_h) $(gdb_string_h) $(elf_bfd_h) \ - $(fbsd_nat_h) -@@ -2422,7 +2422,7 @@ osabi.o: osabi.c $(defs_h) $(gdb_assert_ - parse.o: parse.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \ - $(frame_h) $(expression_h) $(value_h) $(command_h) $(language_h) \ - $(f_lang_h) $(parser_defs_h) $(gdbcmd_h) $(symfile_h) $(inferior_h) \ -- $(doublest_h) $(gdb_assert_h) $(block_h) $(source_h) -+ $(doublest_h) $(gdb_assert_h) $(block_h) $(source_h) $(objfiles_h) - p-exp.o: p-exp.c $(defs_h) $(gdb_string_h) $(expression_h) $(value_h) \ - $(parser_defs_h) $(language_h) $(p_lang_h) $(bfd_h) $(symfile_h) \ - $(objfiles_h) $(block_h) -@@ -2750,7 +2750,8 @@ symtab.o: symtab.c $(defs_h) $(symtab_h) - $(gdb_stat_h) $(cp_abi_h) $(observer_h) - target.o: target.c $(defs_h) $(gdb_string_h) $(target_h) $(gdbcmd_h) \ - $(symtab_h) $(inferior_h) $(bfd_h) $(symfile_h) $(objfiles_h) \ -- $(gdb_wait_h) $(dcache_h) $(regcache_h) $(gdb_assert_h) $(gdbcore_h) -+ $(gdb_wait_h) $(dcache_h) $(regcache_h) $(gdb_assert_h) $(gdbcore_h) \ -+ $(exceptions_h) - thread.o: thread.c $(defs_h) $(symtab_h) $(frame_h) $(inferior_h) \ - $(environ_h) $(value_h) $(target_h) $(gdbthread_h) $(exceptions_h) \ - $(command_h) $(gdbcmd_h) $(regcache_h) $(gdb_h) $(gdb_string_h) \ -Index: gdb-6.5/gdb/dwarf2loc.c -=================================================================== -RCS file: /cvs/src/src/gdb/dwarf2loc.c,v -retrieving revision 1.33 -diff -u -p -r1.33 gdb-6.5/gdb/dwarf2loc.c ---- gdb-6.5.org/gdb/dwarf2loc.c 17 Dec 2005 22:33:59 -0000 1.33 -+++ gdb-6.5/gdb/dwarf2loc.c 25 Aug 2006 19:55:36 -0000 -@@ -189,86 +189,8 @@ static CORE_ADDR - dwarf_expr_tls_address (void *baton, CORE_ADDR offset) - { - struct dwarf_expr_baton *debaton = (struct dwarf_expr_baton *) baton; -- volatile CORE_ADDR addr = 0; - -- if (target_get_thread_local_address_p () -- && gdbarch_fetch_tls_load_module_address_p (current_gdbarch)) -- { -- ptid_t ptid = inferior_ptid; -- struct objfile *objfile = debaton->objfile; -- volatile struct gdb_exception ex; -- -- TRY_CATCH (ex, RETURN_MASK_ALL) -- { -- CORE_ADDR lm_addr; -- -- /* Fetch the load module address for this objfile. */ -- lm_addr = gdbarch_fetch_tls_load_module_address (current_gdbarch, -- objfile); -- /* If it's 0, throw the appropriate exception. */ -- if (lm_addr == 0) -- throw_error (TLS_LOAD_MODULE_NOT_FOUND_ERROR, -- _("TLS load module not found")); -- -- addr = target_get_thread_local_address (ptid, lm_addr, offset); -- } -- /* If an error occurred, print TLS related messages here. Otherwise, -- throw the error to some higher catcher. */ -- if (ex.reason < 0) -- { -- int objfile_is_library = (objfile->flags & OBJF_SHARED); -- -- switch (ex.error) -- { -- case TLS_NO_LIBRARY_SUPPORT_ERROR: -- error (_("Cannot find thread-local variables in this thread library.")); -- break; -- case TLS_LOAD_MODULE_NOT_FOUND_ERROR: -- if (objfile_is_library) -- error (_("Cannot find shared library `%s' in dynamic" -- " linker's load module list"), objfile->name); -- else -- error (_("Cannot find executable file `%s' in dynamic" -- " linker's load module list"), objfile->name); -- break; -- case TLS_NOT_ALLOCATED_YET_ERROR: -- if (objfile_is_library) -- error (_("The inferior has not yet allocated storage for" -- " thread-local variables in\n" -- "the shared library `%s'\n" -- "for %s"), -- objfile->name, target_pid_to_str (ptid)); -- else -- error (_("The inferior has not yet allocated storage for" -- " thread-local variables in\n" -- "the executable `%s'\n" -- "for %s"), -- objfile->name, target_pid_to_str (ptid)); -- break; -- case TLS_GENERIC_ERROR: -- if (objfile_is_library) -- error (_("Cannot find thread-local storage for %s, " -- "shared library %s:\n%s"), -- target_pid_to_str (ptid), -- objfile->name, ex.message); -- else -- error (_("Cannot find thread-local storage for %s, " -- "executable file %s:\n%s"), -- target_pid_to_str (ptid), -- objfile->name, ex.message); -- break; -- default: -- throw_exception (ex); -- break; -- } -- } -- } -- /* It wouldn't be wrong here to try a gdbarch method, too; finding -- TLS is an ABI-specific thing. But we don't do that yet. */ -- else +--- gdb-6.6.orig/gdb/target.c 2007-01-17 01:25:31.000000000 +0100 ++++ gdb-6.6/gdb/target.c 2007-01-20 06:31:36.000000000 +0100 +@@ -898,7 +898,18 @@ + /* It wouldn't be wrong here to try a gdbarch method, too; finding + TLS is an ABI-specific thing. But we don't do that yet. */ + else - error (_("Cannot find thread-local variables on this target")); -- -- return addr; -+ return target_translate_tls_address (debaton->objfile, offset); - } - - /* Evaluate a location description, starting at DATA and with length -Index: gdb-6.5/gdb/eval.c -=================================================================== -RCS file: /cvs/src/src/gdb/eval.c,v -retrieving revision 1.63 -diff -u -p -r1.63 gdb-6.5/gdb/eval.c ---- gdb-6.5.org/gdb/eval.c 25 Jul 2006 04:24:50 -0000 1.63 -+++ gdb-6.5/gdb/eval.c 25 Aug 2006 19:55:38 -0000 -@@ -2019,6 +2019,18 @@ evaluate_subexp_standard (struct type *e - return value_at_lazy (exp->elts[pc + 1].type, - value_as_address (arg1)); - -+ case UNOP_MEMVAL_TLS: -+ (*pos) += 3; -+ arg1 = evaluate_subexp (expect_type, exp, pos, noside); -+ if (noside == EVAL_SKIP) -+ goto nosideret; -+ if (noside == EVAL_AVOID_SIDE_EFFECTS) -+ return value_zero (exp->elts[pc + 2].type, lval_memory); -+ else -+ return value_at_lazy_tls (exp->elts[pc + 2].type, -+ value_as_address (arg1), -+ exp->elts[pc + 1].objfile); -+ - case UNOP_PREINCREMENT: - arg1 = evaluate_subexp (expect_type, exp, pos, noside); - if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS) -Index: gdb-6.5/gdb/expprint.c -=================================================================== -RCS file: /cvs/src/src/gdb/expprint.c,v -retrieving revision 1.24 -diff -u -p -r1.24 gdb-6.5/gdb/expprint.c ---- gdb-6.5.org/gdb/expprint.c 7 Aug 2006 03:30:54 -0000 1.24 -+++ gdb-6.5/gdb/expprint.c 25 Aug 2006 19:55:39 -0000 -@@ -31,6 +31,7 @@ - #include "target.h" - #include "gdb_string.h" - #include "block.h" -+#include "objfiles.h" - - #ifdef HAVE_CTYPE_H - #include -@@ -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, - "", - NULL); -+ -+ msym_text_tls_symbol_type = -+ init_type (TYPE_CODE_FUNC, 1, 0, "", 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, -+ "", NULL); -+ msym_unknown_tls_symbol_type = -+ init_type (TYPE_CODE_INT, 1, 0, -+ "", -+ NULL); - } - - /* This function avoids direct calls to fprintf -Index: gdb-6.5/gdb/parser-defs.h -=================================================================== -RCS file: /cvs/src/src/gdb/parser-defs.h,v -retrieving revision 1.20 -diff -u -p -r1.20 gdb-6.5/gdb/parser-defs.h ---- gdb-6.5.org/gdb/parser-defs.h 17 Dec 2005 22:34:01 -0000 1.20 -+++ gdb-6.5/gdb/parser-defs.h 25 Aug 2006 19:55:41 -0000 -@@ -131,6 +131,8 @@ extern void write_exp_bitstring (struct - - extern void write_exp_elt_block (struct block *); - -+extern void write_exp_elt_objfile (struct objfile *objfile); -+ - extern void write_exp_msymbol (struct minimal_symbol *, - struct type *, struct type *); - ---- gdb-6.5.org/gdb/target.c 16 Aug 2006 18:31:03 -0000 1.124 -+++ gdb-6.5/gdb/target.c 25 Aug 2006 19:55:43 -0000 -@@ -40,6 +40,7 @@ - #include "gdb_assert.h" - #include "gdbcore.h" - #include "observer.h" -+#include "exceptions.h" - - static void target_info (char *, int); - -@@ -755,6 +756,103 @@ pop_target (void) - internal_error (__FILE__, __LINE__, _("failed internal consistency check")); - } - -+/* Using the objfile specified in BATON, find the address for the -+ current thread's thread-local storage with offset OFFSET. */ -+CORE_ADDR -+target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset) -+{ -+ volatile CORE_ADDR addr = 0; -+ -+ if (target_get_thread_local_address_p () -+ && gdbarch_fetch_tls_load_module_address_p (current_gdbarch)) -+ { -+ ptid_t ptid = inferior_ptid; -+ volatile struct gdb_exception ex; -+ -+ TRY_CATCH (ex, RETURN_MASK_ALL) -+ { -+ CORE_ADDR lm_addr; -+ -+ /* Fetch the load module address for this objfile. */ -+ lm_addr = gdbarch_fetch_tls_load_module_address (current_gdbarch, -+ objfile); -+ /* If it's 0, throw the appropriate exception. */ -+ if (lm_addr == 0) -+ throw_error (TLS_LOAD_MODULE_NOT_FOUND_ERROR, -+ _("TLS load module not found")); -+ -+ addr = target_get_thread_local_address (ptid, lm_addr, offset); -+ } -+ /* If an error occurred, print TLS related messages here. Otherwise, -+ throw the error to some higher catcher. */ -+ if (ex.reason < 0) -+ { -+ int objfile_is_library = (objfile->flags & OBJF_SHARED); -+ -+ switch (ex.error) -+ { -+ case TLS_NO_LIBRARY_SUPPORT_ERROR: -+ error (_("Cannot find thread-local variables in this thread library.")); -+ break; -+ case TLS_LOAD_MODULE_NOT_FOUND_ERROR: -+ if (objfile_is_library) -+ error (_("Cannot find shared library `%s' in dynamic" -+ " linker's load module list"), objfile->name); -+ else -+ error (_("Cannot find executable file `%s' in dynamic" -+ " linker's load module list"), objfile->name); -+ break; -+ case TLS_NOT_ALLOCATED_YET_ERROR: -+ if (objfile_is_library) -+ error (_("The inferior has not yet allocated storage for" -+ " thread-local variables in\n" -+ "the shared library `%s'\n" -+ "for %s"), -+ objfile->name, target_pid_to_str (ptid)); -+ else -+ error (_("The inferior has not yet allocated storage for" -+ " thread-local variables in\n" -+ "the executable `%s'\n" -+ "for %s"), -+ objfile->name, target_pid_to_str (ptid)); -+ break; -+ case TLS_GENERIC_ERROR: -+ if (objfile_is_library) -+ error (_("Cannot find thread-local storage for %s, " -+ "shared library %s:\n%s"), -+ target_pid_to_str (ptid), -+ objfile->name, ex.message); -+ else -+ error (_("Cannot find thread-local storage for %s, " -+ "executable file %s:\n%s"), -+ target_pid_to_str (ptid), -+ objfile->name, ex.message); -+ break; -+ default: -+ throw_exception (ex); -+ break; -+ } -+ } -+ } -+ /* It wouldn't be wrong here to try a gdbarch method, too; finding -+ TLS is an ABI-specific thing. But we don't do that yet. */ -+ else + { + struct minimal_symbol *msymbol; + @@ -576,250 +44,6 @@ diff -u -p -r1.20 gdb-6.5/gdb/parser-defs.h + " compile the program with `gcc -ggdb3' or `gcc -pthread'.")); + error (_("Cannot find thread-local variables on this target")); + } -+ -+ return addr; -+} -+ - #undef MIN - #define MIN(A, B) (((A) <= (B)) ? (A) : (B)) -Index: gdb-6.5/gdb/target.h -=================================================================== -RCS file: /cvs/src/src/gdb/target.h,v -retrieving revision 1.87 -diff -u -p -r1.87 gdb-6.5/gdb/target.h ---- gdb-6.5.org/gdb/target.h 15 Aug 2006 18:46:25 -0000 1.87 -+++ gdb-6.5/gdb/target.h 25 Aug 2006 19:55:44 -0000 -@@ -1131,6 +1131,9 @@ extern void target_preopen (int); - - extern void pop_target (void); - -+extern CORE_ADDR target_translate_tls_address (struct objfile *objfile, -+ CORE_ADDR offset); -+ - /* Struct section_table maps address ranges to file sections. It is - mostly used with BFD files, but can be used without (e.g. for handling - raw disks, or files not in formats handled by BFD). */ -Index: gdb-6.5/gdb/valops.c -=================================================================== -RCS file: /cvs/src/src/gdb/valops.c,v -retrieving revision 1.164 -diff -u -p -r1.164 gdb-6.5/gdb/valops.c ---- gdb-6.5.org/gdb/valops.c 13 Jul 2006 04:31:42 -0000 1.164 -+++ gdb-6.5/gdb/valops.c 25 Aug 2006 19:55:46 -0000 -@@ -501,7 +501,8 @@ value_at (struct type *type, CORE_ADDR a - /* Return a lazy value with type TYPE located at ADDR (cf. value_at). */ - - struct value * --value_at_lazy (struct type *type, CORE_ADDR addr) -+value_at_lazy_tls (struct type *type, CORE_ADDR addr, -+ struct objfile *tls_objfile) - { - struct value *val; - -@@ -512,11 +513,19 @@ value_at_lazy (struct type *type, CORE_A - - VALUE_LVAL (val) = lval_memory; - VALUE_ADDRESS (val) = addr; -+ if (tls_objfile != NULL) -+ set_value_tls_objfile (val, tls_objfile); - set_value_lazy (val, 1); - - return val; + return addr; } - -+struct value * -+value_at_lazy (struct type *type, CORE_ADDR addr) -+{ -+ return value_at_lazy_tls (type, addr, NULL); -+} -+ - /* Called only from the value_contents and value_contents_all() - macros, if the current data for a variable needs to be loaded into - value_contents(VAL). Fetches the data from the user's process, and -@@ -538,7 +547,17 @@ value_fetch_lazy (struct value *val) - - struct type *type = value_type (val); - if (length) -- read_memory (addr, value_contents_all_raw (val), length); -+ { -+ struct objfile *tls_objfile = value_tls_objfile (val); -+ -+ if (tls_objfile != NULL) -+ { -+ /* `target_translate_tls_address' uses `inferior_ptid'. */ -+ addr = target_translate_tls_address (tls_objfile, addr); -+ } -+ -+ read_memory (addr, value_contents_all_raw (val), length); -+ } - - set_value_lazy (val, 0); - return 0; -@@ -596,6 +615,7 @@ value_assign (struct value *toval, struc - CORE_ADDR changed_addr; - int changed_len; - gdb_byte buffer[sizeof (LONGEST)]; -+ struct objfile *tls_objfile = value_tls_objfile (toval); - - if (value_bitsize (toval)) - { -@@ -624,6 +644,13 @@ value_assign (struct value *toval, struc - dest_buffer = value_contents (fromval); - } - -+ if (tls_objfile != NULL) -+ { -+ /* `target_translate_tls_address' uses `inferior_ptid'. */ -+ changed_addr = target_translate_tls_address (tls_objfile, -+ changed_addr); -+ } -+ - write_memory (changed_addr, dest_buffer, changed_len); - if (deprecated_memory_changed_hook) - deprecated_memory_changed_hook (changed_addr, changed_len); -Index: gdb-6.5/gdb/value.c -=================================================================== -RCS file: /cvs/src/src/gdb/value.c,v -retrieving revision 1.36 -diff -u -p -r1.36 gdb-6.5/gdb/value.c ---- gdb-6.5.org/gdb/value.c 31 Mar 2006 10:36:18 -0000 1.36 -+++ gdb-6.5/gdb/value.c 25 Aug 2006 19:55:47 -0000 -@@ -158,6 +158,9 @@ struct value - actually exist in the program. */ - char optimized_out; - -+ /* TLS owner. */ -+ struct objfile *tls_objfile; -+ - /* Actual contents of the value. For use of this value; setting it - uses the stuff above. Not valid if lazy is nonzero. Target - byte-order. We force it to be aligned properly for any possible -@@ -230,6 +233,7 @@ allocate_value (struct type *type) - VALUE_REGNUM (val) = -1; - val->lazy = 0; - val->optimized_out = 0; -+ val->tls_objfile = NULL; - val->embedded_offset = 0; - val->pointed_to_offset = 0; - val->modifiable = 1; -@@ -344,6 +348,18 @@ set_value_lazy (struct value *value, int - value->lazy = val; - } - -+struct objfile * -+value_tls_objfile (struct value *value) -+{ -+ return value->tls_objfile; -+} -+ -+void -+set_value_tls_objfile (struct value *value, struct objfile *tls_objfile) -+{ -+ value->tls_objfile = tls_objfile; -+} -+ - const gdb_byte * - value_contents (struct value *value) - { -Index: gdb-6.5/gdb/value.h -=================================================================== -RCS file: /cvs/src/src/gdb/value.h,v -retrieving revision 1.92 -diff -u -p -r1.92 gdb-6.5/gdb/value.h ---- gdb-6.5.org/gdb/value.h 13 Jul 2006 04:31:42 -0000 1.92 -+++ gdb-6.5/gdb/value.h 25 Aug 2006 19:55:48 -0000 -@@ -154,6 +154,10 @@ extern void set_value_embedded_offset (s - extern int value_lazy (struct value *); - extern void set_value_lazy (struct value *value, int val); - -+extern struct objfile *value_tls_objfile (struct value *value); -+extern void set_value_tls_objfile (struct value *value, -+ struct objfile *tls_objfile); -+ - /* value_contents() and value_contents_raw() both return the address - of the gdb buffer used to hold a copy of the contents of the lval. - value_contents() is used when the contents of the buffer are needed -@@ -277,6 +281,8 @@ extern struct value *value_from_double ( - extern struct value *value_from_string (char *string); - - extern struct value *value_at (struct type *type, CORE_ADDR addr); -+extern struct value *value_at_lazy_tls (struct type *type, CORE_ADDR addr, -+ struct objfile *tls_objfile); - extern struct value *value_at_lazy (struct type *type, CORE_ADDR addr); - - extern struct value *value_from_register (struct type *type, int regnum, -Index: gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.c -=================================================================== -RCS file: gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.c -diff -N gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.c ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.c 25 Aug 2006 19:55:48 -0000 -@@ -0,0 +1,8 @@ -+/* Test accessing TLS based variable without any debug info compiled. */ -+ -+__thread int thread_local = 42; -+ -+int main(void) -+{ -+ return 0; -+} -Index: gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.exp -=================================================================== -RCS file: gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.exp -diff -N gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.exp ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ gdb-6.5/gdb/testsuite/gdb.threads/tls-nodebug.exp 25 Aug 2006 19:55:49 -0000 -@@ -0,0 +1,52 @@ -+# tls.exp -- Expect script to test thread-local storage without debuginfo -+# Copyright (C) 2006 Free Software Foundation, Inc. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, write to the Free Software -+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -+ -+# Please email any bugs, comments, and/or additions to this file to: -+# bug-gdb@prep.ai.mit.edu -+ -+set testfile tls-nodebug -+set srcfile ${testfile}.c -+set binfile ${objdir}/${subdir}/${testfile} -+ -+if [istarget "*-*-linux"] then { -+ set target_cflags "-D_MIT_POSIX_THREADS" -+} else { -+ set target_cflags "" -+} -+ -+if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable $options] != "" } { -+ return -1 -+} -+ -+gdb_exit -+gdb_start -+gdb_reinitialize_dir $srcdir/$subdir -+ -+gdb_load ${binfile} -+if ![runto_main] then { -+ fail "Can't run to main" -+ return 0 -+} -+ -+# Formerly: Cannot access memory at address 0x0 -+gdb_test "p thread_local" "= 42" "thread local storage" -+ -+# Done! -+# -+gdb_exit -+ -+return 0 diff --git a/gdb-6.5-bz190810-gdbserver-arch-advice.patch b/gdb-6.5-bz190810-gdbserver-arch-advice.patch index 7e97f25..c54c8ba 100644 --- a/gdb-6.5-bz190810-gdbserver-arch-advice.patch +++ b/gdb-6.5-bz190810-gdbserver-arch-advice.patch @@ -7,9 +7,11 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=190810 (remote_async_wait): Likewise. ---- gdb-6.5/gdb/remote.c.orig 2006-10-01 08:01:17.000000000 -0400 -+++ gdb-6.5/gdb/remote.c 2006-10-01 08:03:18.000000000 -0400 -@@ -2789,8 +2789,13 @@ +Index: gdb-6.6/gdb/remote.c +=================================================================== +--- gdb-6.6.orig/gdb/remote.c 2007-01-20 06:43:04.000000000 +0100 ++++ gdb-6.6/gdb/remote.c 2007-01-20 06:55:50.000000000 +0100 +@@ -3111,8 +3111,13 @@ Packet: '%s'\n"), reg->regnum, regs); } @@ -17,14 +19,14 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=190810 + target. gdbserver(1) is not aware of the `set architecture' + name itself as it is not using libbfd. */ if (*p++ != ';') -- error (_("Remote register badly formatted: %s\nhere: %s"), +- error (_("Remote register badly formatted: %s\nhere: %s"), + error (_("Remote register badly formatted: %s\nhere: %s" + "\nTry to load the executable by `file' first," + "\nyou may also check `set/show architecture'."), buf, p); } } -@@ -2983,8 +2988,13 @@ +@@ -3307,8 +3312,13 @@ Packet: '%s'\n"), regcache_raw_supply (current_regcache, reg->regnum, regs); } diff --git a/gdb-6.5-bz196439-valgrind-memcheck-compat-test.patch b/gdb-6.5-bz196439-valgrind-memcheck-compat-test.patch new file mode 100644 index 0000000..f62551a --- /dev/null +++ b/gdb-6.5-bz196439-valgrind-memcheck-compat-test.patch @@ -0,0 +1,146 @@ +https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=196439 + + +2006-08-26 Jan Kratochvil + + * 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" diff --git a/gdb-6.5-bz218379-ppc-solib-trampoline-fix.patch b/gdb-6.5-bz218379-ppc-solib-trampoline-fix.patch index 3ebe291..b757aef 100644 --- a/gdb-6.5-bz218379-ppc-solib-trampoline-fix.patch +++ b/gdb-6.5-bz218379-ppc-solib-trampoline-fix.patch @@ -1,12 +1,14 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=218379 ---- gdb-6.5-depatched/gdb/minsyms.c 2006-12-17 16:10:53.000000000 -0500 -+++ gdb-6.5/gdb/minsyms.c 2006-12-17 16:51:21.000000000 -0500 -@@ -505,6 +505,11 @@ - don't fill the bfd_section member, so don't - throw away symbols on those platforms. */ - && SYMBOL_BFD_SECTION (&msymbol[hi]) != NULL +Index: gdb-6.6/gdb/minsyms.c +=================================================================== +--- gdb-6.6.orig/gdb/minsyms.c 2007-01-20 13:53:48.000000000 +0100 ++++ gdb-6.6/gdb/minsyms.c 2007-01-20 13:58:47.000000000 +0100 +@@ -490,6 +490,11 @@ lookup_minimal_symbol_by_pc_section (COR + don't fill the bfd_section member, so don't + throw away symbols on those platforms. */ + && SYMBOL_BFD_SECTION (&msymbol[hi]) != NULL + /* Don't ignore symbols for solib trampolines. + Limit its sideeffects - only for non-0 sized trampolines. + Red Hat Bug 200533 with its regression Bug 218379. */ @@ -14,4 +16,4 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=218379 + || MSYMBOL_SIZE (&msymbol[hi])) && (!matching_bfd_sections (SYMBOL_BFD_SECTION (&msymbol[hi]), section))) - --hi; + { diff --git a/gdb-6.5-gcore-i386-on-amd64.patch b/gdb-6.5-gcore-i386-on-amd64.patch index fab2fbc..d5b663c 100644 --- a/gdb-6.5-gcore-i386-on-amd64.patch +++ b/gdb-6.5-gcore-i386-on-amd64.patch @@ -16,11 +16,11 @@ * Makefile.in: Dependencies updated. -Index: gdb-6.5/gdb/Makefile.in +Index: gdb-6.6/gdb/Makefile.in =================================================================== ---- gdb-6.5.orig/gdb/Makefile.in 21 Sep 2006 14:00:53 -0000 1.844 -+++ gdb-6.5/gdb/Makefile.in 1 Oct 2006 16:22:42 -0000 -@@ -696,6 +696,7 @@ gdb_h = gdb.h +--- gdb-6.6.orig/gdb/Makefile.in 2007-01-20 06:43:02.000000000 +0100 ++++ gdb-6.6/gdb/Makefile.in 2007-01-20 06:57:16.000000000 +0100 +@@ -705,6 +705,7 @@ gdb_expat_h = gdb_expat.h gdb_locale_h = gdb_locale.h gdb_obstack_h = gdb_obstack.h $(obstack_h) gdb_proc_service_h = gdb_proc_service.h $(gregset_h) @@ -28,7 +28,7 @@ Index: gdb-6.5/gdb/Makefile.in gdb_ptrace_h = gdb_ptrace.h gdb_regex_h = gdb_regex.h $(xregex_h) gdb_select_h = gdb_select.h -@@ -705,6 +706,7 @@ gdb_string_h = gdb_string.h +@@ -714,6 +715,7 @@ gdb_string_h = gdb_string.h gdb_thread_db_h = gdb_thread_db.h gdbthread_h = gdbthread.h $(breakpoint_h) $(frame_h) gdbtypes_h = gdbtypes.h $(hashtab_h) @@ -36,21 +36,21 @@ Index: gdb-6.5/gdb/Makefile.in gdb_vfork_h = gdb_vfork.h gdb_wait_h = gdb_wait.h glibc_tdep_h = glibc-tdep.h -@@ -1743,7 +1745,8 @@ amd64fbsd-tdep.o: amd64fbsd-tdep.c $(def +@@ -1779,7 +1781,8 @@ amd64fbsd-tdep.o: amd64fbsd-tdep.c $(def amd64-linux-nat.o: amd64-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \ $(regcache_h) $(linux_nat_h) $(gdb_assert_h) $(gdb_string_h) \ $(gdb_proc_service_h) $(gregset_h) $(amd64_tdep_h) \ -- $(i386_linux_tdep_h) $(amd64_nat_h) $(target_h) -+ $(i386_linux_tdep_h) $(amd64_nat_h) $(target_h) \ +- $(i386_linux_tdep_h) $(amd64_nat_h) $(target_h) $(amd64_linux_tdep_h) ++ $(i386_linux_tdep_h) $(amd64_nat_h) $(target_h) $(amd64_linux_tdep_h) \ + $(i387_tdep_h) $(elf_bfd_h) $(gdb_procfs32_h) amd64-linux-tdep.o: amd64-linux-tdep.c $(defs_h) $(frame_h) $(gdbcore_h) \ $(regcache_h) $(osabi_h) $(symtab_h) $(gdb_string_h) $(amd64_tdep_h) \ - $(solib_svr4_h) -Index: gdb-6.5/gdb/amd64-linux-nat.c + $(solib_svr4_h) $(gdbtypes_h) $(reggroups_h) $(amd64_linux_tdep_h) +Index: gdb-6.6/gdb/amd64-linux-nat.c =================================================================== ---- gdb-6.5.orig/gdb/amd64-linux-nat.c 19 Aug 2006 15:15:18 -0000 1.13 -+++ gdb-6.5/gdb/amd64-linux-nat.c 1 Oct 2006 16:22:42 -0000 -@@ -52,6 +52,9 @@ +--- gdb-6.6.orig/gdb/amd64-linux-nat.c 2007-01-20 06:43:00.000000000 +0100 ++++ gdb-6.6/gdb/amd64-linux-nat.c 2007-01-20 06:56:21.000000000 +0100 +@@ -53,6 +53,9 @@ #include "amd64-tdep.h" #include "i386-linux-tdep.h" #include "amd64-nat.h" @@ -60,7 +60,7 @@ Index: gdb-6.5/gdb/amd64-linux-nat.c /* Mapping between the general-purpose registers in GNU/Linux x86-64 `struct user' format and GDB's register cache layout. */ -@@ -86,6 +89,35 @@ static int amd64_linux_gregset64_reg_off +@@ -87,6 +90,35 @@ static int amd64_linux_gregset64_reg_off GNU/Linux i386 registers are all 32-bit, but since we're little-endian we get away with that. */ @@ -96,7 +96,7 @@ Index: gdb-6.5/gdb/amd64-linux-nat.c /* From on GNU/Linux i386. */ static int amd64_linux_gregset32_reg_offset[] = { -@@ -104,6 +136,94 @@ static int amd64_linux_gregset32_reg_off +@@ -105,6 +137,94 @@ static int amd64_linux_gregset32_reg_off }; @@ -191,7 +191,7 @@ Index: gdb-6.5/gdb/amd64-linux-nat.c /* Transfering the general-purpose registers between GDB, inferiors and core files. */ -@@ -406,6 +526,11 @@ _initialize_amd64_linux_nat (void) +@@ -529,6 +649,11 @@ _initialize_amd64_linux_nat (void) t->to_fetch_registers = amd64_linux_fetch_inferior_registers; t->to_store_registers = amd64_linux_store_inferior_registers; @@ -202,11 +202,11 @@ Index: gdb-6.5/gdb/amd64-linux-nat.c + /* Register the target. */ linux_nat_add_target (t); - } -Index: gdb-6.5/gdb/config.in + +Index: gdb-6.6/gdb/config.in =================================================================== ---- gdb-6.5.orig/gdb/config.in 8 Aug 2006 20:32:15 -0000 1.84 -+++ gdb-6.5/gdb/config.in 1 Oct 2006 16:22:42 -0000 +--- gdb-6.6.orig/gdb/config.in 2006-08-08 22:32:15.000000000 +0200 ++++ gdb-6.6/gdb/config.in 2007-01-20 06:56:21.000000000 +0100 @@ -373,6 +373,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_POLL_H @@ -227,11 +227,11 @@ Index: gdb-6.5/gdb/config.in /* Define to 1 if you have the header file. */ #undef HAVE_SYS_USER_H -Index: gdb-6.5/gdb/configure +Index: gdb-6.6/gdb/configure =================================================================== ---- gdb-6.5.orig/gdb/configure 2006-10-01 18:43:40.000000000 +0200 -+++ gdb-6.5/gdb/configure 2006-10-01 18:40:44.000000000 +0200 -@@ -11949,6 +11949,157 @@ +--- gdb-6.6.orig/gdb/configure 2007-01-20 06:43:00.000000000 +0100 ++++ gdb-6.6/gdb/configure 2007-01-20 06:56:21.000000000 +0100 +@@ -9966,6 +9966,157 @@ done @@ -389,11 +389,11 @@ Index: gdb-6.5/gdb/configure for ac_header in sys/wait.h wait.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -Index: gdb-6.5/gdb/configure.ac +Index: gdb-6.6/gdb/configure.ac =================================================================== ---- gdb-6.5.orig/gdb/configure.ac 8 Aug 2006 20:26:23 -0000 1.34 -+++ gdb-6.5/gdb/configure.ac 1 Oct 2006 16:22:43 -0000 -@@ -365,6 +365,7 @@ AC_CHECK_HEADERS(sys/user.h, [], [], +--- gdb-6.6.orig/gdb/configure.ac 2007-01-20 06:43:01.000000000 +0100 ++++ gdb-6.6/gdb/configure.ac 2007-01-20 06:56:21.000000000 +0100 +@@ -371,6 +371,7 @@ AC_CHECK_HEADERS(sys/user.h, [], [], # include #endif ]) @@ -401,11 +401,11 @@ Index: gdb-6.5/gdb/configure.ac AC_CHECK_HEADERS(sys/wait.h wait.h) AC_CHECK_HEADERS(termios.h termio.h sgtty.h) AC_CHECK_HEADERS(unistd.h) -Index: gdb-6.5/gdb/gcore.c +Index: gdb-6.6/gdb/gcore.c =================================================================== ---- gdb-6.5.orig/gdb/gcore.c 17 Dec 2005 22:33:59 -0000 1.18 -+++ gdb-6.5/gdb/gcore.c 1 Oct 2006 16:22:43 -0000 -@@ -314,6 +314,11 @@ gcore_create_callback (CORE_ADDR vaddr, +--- gdb-6.6.orig/gdb/gcore.c 2007-01-20 06:43:02.000000000 +0100 ++++ gdb-6.6/gdb/gcore.c 2007-01-20 06:56:21.000000000 +0100 +@@ -320,6 +320,11 @@ gcore_create_callback (CORE_ADDR vaddr, asection *osec; flagword flags = SEC_ALLOC | SEC_HAS_CONTENTS | SEC_LOAD; @@ -417,10 +417,10 @@ Index: gdb-6.5/gdb/gcore.c /* If the memory segment has no permissions set, ignore it, otherwise when we later try to access it for read/write, we'll get an error or jam the kernel. */ -Index: gdb-6.5/gdb/gdb_procfs32.h +Index: gdb-6.6/gdb/gdb_procfs32.h =================================================================== ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ gdb-6.5/gdb/gdb_procfs32.h 1 Oct 2006 16:22:43 -0000 +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-6.6/gdb/gdb_procfs32.h 2007-01-20 06:56:21.000000000 +0100 @@ -0,0 +1,128 @@ +#ifdef HAVE_SYS_PROCFS32_H +#include @@ -550,10 +550,10 @@ Index: gdb-6.5/gdb/gdb_procfs32.h +#endif /* _SYS_PROCFS32_H */ + +#endif /* HAVE_SYS_PROCFS32_H */ -Index: gdb-6.5/gdb/gdb_user32.h +Index: gdb-6.6/gdb/gdb_user32.h =================================================================== ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ gdb-6.5/gdb/gdb_user32.h 1 Oct 2006 16:22:43 -0000 +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gdb-6.6/gdb/gdb_user32.h 2007-01-20 06:56:21.000000000 +0100 @@ -0,0 +1,108 @@ +#ifdef HAVE_SYS_USER32_H +#include @@ -663,11 +663,11 @@ Index: gdb-6.5/gdb/gdb_user32.h +#endif /* _SYS_USER32_H */ + +#endif /* HAVE_SYS_USER32_H */ -Index: gdb-6.5/gdb/linux-nat.c +Index: gdb-6.6/gdb/linux-nat.c =================================================================== ---- gdb-6.5.orig/gdb/linux-nat.c 16 Sep 2006 09:48:12 -0000 1.50 -+++ gdb-6.5/gdb/linux-nat.c 1 Oct 2006 16:22:43 -0000 -@@ -99,6 +99,15 @@ static LONGEST (*super_xfer_partial) (st +--- gdb-6.6.orig/gdb/linux-nat.c 2007-01-20 06:43:04.000000000 +0100 ++++ gdb-6.6/gdb/linux-nat.c 2007-01-20 06:56:21.000000000 +0100 +@@ -100,6 +100,15 @@ static LONGEST (*super_xfer_partial) (st const gdb_byte *, ULONGEST, LONGEST); @@ -683,7 +683,7 @@ Index: gdb-6.5/gdb/linux-nat.c static int debug_linux_nat; static void show_debug_linux_nat (struct ui_file *file, int from_tty, -@@ -2562,11 +2571,11 @@ linux_nat_do_thread_registers (bfd *obfd +@@ -2715,11 +2724,11 @@ linux_nat_do_thread_registers (bfd *obfd else fill_gregset (&gregs, -1); @@ -700,7 +700,7 @@ Index: gdb-6.5/gdb/linux-nat.c if (core_regset_p && (regset = gdbarch_regset_from_core_section (gdbarch, ".reg2", -@@ -2577,10 +2586,10 @@ linux_nat_do_thread_registers (bfd *obfd +@@ -2730,10 +2739,10 @@ linux_nat_do_thread_registers (bfd *obfd else fill_fpregset (&fpregs, -1); @@ -715,7 +715,7 @@ Index: gdb-6.5/gdb/linux-nat.c #ifdef FILL_FPXREGSET if (core_regset_p -@@ -2675,9 +2684,9 @@ linux_nat_make_corefile_notes (bfd *obfd +@@ -2828,9 +2837,9 @@ linux_nat_make_corefile_notes (bfd *obfd strncat (psargs, get_inferior_args (), sizeof (psargs) - strlen (psargs)); } @@ -728,11 +728,11 @@ Index: gdb-6.5/gdb/linux-nat.c } /* Dump information for threads. */ -Index: gdb-6.5/gdb/linux-nat.h +Index: gdb-6.6/gdb/linux-nat.h =================================================================== ---- gdb-6.5.orig/gdb/linux-nat.h 23 Jul 2006 21:21:01 -0000 1.12 -+++ gdb-6.5/gdb/linux-nat.h 1 Oct 2006 16:22:43 -0000 -@@ -96,3 +96,12 @@ void linux_nat_add_target (struct target +--- gdb-6.6.orig/gdb/linux-nat.h 2007-01-20 06:42:58.000000000 +0100 ++++ gdb-6.6/gdb/linux-nat.h 2007-01-20 06:56:21.000000000 +0100 +@@ -108,3 +108,12 @@ void linux_nat_add_target (struct target /* Update linux-nat internal state when changing from one fork to another. */ void linux_nat_switch_fork (ptid_t new_ptid); diff --git a/gdb-6.5-symbols-overlap.patch b/gdb-6.5-symbols-overlap.patch index 9cfa29d..334a2dd 100644 --- a/gdb-6.5-symbols-overlap.patch +++ b/gdb-6.5-symbols-overlap.patch @@ -9,24 +9,14 @@ file, provide nested (overlapping) functions for the PC resolving. ---- gdb-6.5/gdb/minsyms.c-orig 2006-10-31 08:21:32.000000000 -0500 -+++ gdb-6.5/gdb/minsyms.c 2006-10-31 08:24:37.000000000 -0500 -@@ -464,6 +464,7 @@ - objfile's minimal symbol table. See if it is the best one - overall. */ +Index: ./gdb/minsyms.c +=================================================================== +--- ./gdb/minsyms.c 17 Oct 2006 20:17:44 -0000 1.47 ++++ ./gdb/minsyms.c 30 Oct 2006 12:41:26 -0000 +@@ -511,6 +511,29 @@ lookup_minimal_symbol_by_pc_section (COR + continue; + } -+ while (0 - /* Skip any absolute symbols. This is apparently what adb - and dbx do, and is needed for the CM-5. There are two - known possible problems: (1) on ELF, apparently end, edata, -@@ -473,8 +474,27 @@ - NeXT are absolute. If we want special handling for this - it probably should be triggered by a special - mst_abs_or_lib or some such. */ -- while (hi >= 0 -- && msymbol[hi].type == mst_abs) -+ || (hi >= 0 -+ && msymbol[hi].type == mst_abs) + /* We are behind the current symbol's size. + Try the previous symbol - if it is non-zero sized one it + may overlap the current one and reach our PC. @@ -39,16 +29,20 @@ + Limit it only for the overlapping cases as we could harm + the zero-sized symbols detection logic around. + */ -+ || (hi > 0 -+ && MSYMBOL_SIZE (&msymbol[hi]) != 0 -+ && pc >= (SYMBOL_VALUE_ADDRESS (&msymbol[hi]) -+ + MSYMBOL_SIZE (&msymbol[hi])) -+ && pc < (SYMBOL_VALUE_ADDRESS (&msymbol[hi - 1]) -+ + MSYMBOL_SIZE (&msymbol[hi - 1]))) -+ ) - --hi; - - /* If "section" specified, skip any symbol from wrong section */ ++ if (hi > 0 ++ && MSYMBOL_SIZE (&msymbol[hi]) != 0 ++ && pc >= (SYMBOL_VALUE_ADDRESS (&msymbol[hi]) ++ + MSYMBOL_SIZE (&msymbol[hi])) ++ && pc < (SYMBOL_VALUE_ADDRESS (&msymbol[hi - 1]) ++ + MSYMBOL_SIZE (&msymbol[hi - 1]))) ++ { ++ hi--; ++ continue; ++ } ++ + /* Otherwise, this symbol must be as good as we're going + to get. */ + break; Index: ./gdb/testsuite/gdb.arch/i386-size-overlap.c =================================================================== --- /dev/null 1 Jan 1970 00:00:00 -0000 @@ -107,10 +101,10 @@ Index: ./gdb/testsuite/gdb.arch/i386-size-overlap.c + " mov %esp, %ebp\n" + " call " SYMBOL (trap) "\n" + " .size " SYMBOL (main) ", .-" SYMBOL (main) "\n"); -Index: ./gdb/testsuite/gdb.arch/i386-size-overlap.exp +Index: gdb/testsuite/gdb.arch/i386-size-overlap.exp =================================================================== RCS file: gdb/testsuite/gdb.arch/i386-size-overlap.exp -diff -N gdb/testsuite/gdb.arch/i386-size-overlap.exp +diff -N ./gdb/testsuite/gdb.arch/i386-size-overlap.exp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ./gdb/testsuite/gdb.arch/i386-size-overlap.exp 30 Oct 2006 12:41:35 -0000 @@ -0,0 +1,79 @@ diff --git a/gdb.spec b/gdb.spec index 58d8fcc..b9e2f86 100644 --- a/gdb.spec +++ b/gdb.spec @@ -8,19 +8,19 @@ Name: gdb # Set version to contents of gdb/version.in. # NOTE: the FSF gdb versions are numbered N.M for official releases, like 6.3 # and, since January 2005, X.Y.Z.date for daily snapshots, like 6.3.50.20050112 # (daily snapshot from mailine), or 6.3.0.20040112 (head of the release branch). -Version: 6.5 +Version: 6.6 -# The release always contains a leading reserved number, start it at 0. -Release: 27%{?dist} +# The release always contains a leading reserved number, start it at 1. +Release: 1%{?dist} License: GPL Group: Development/Debuggers -Source: ftp://ftp.gnu.org/gnu/gdb/gdb-6.5.tar.bz2 +Source: ftp://ftp.gnu.org/gnu/gdb/gdb-6.6.tar.bz2 Buildroot: %{_tmppath}/%{name}-%{version}-root URL: http://gnu.org/software/gdb/ # For our convenience -%define gdb_src gdb-6.5 +%define gdb_src gdb-6.6 %define gdb_build %{gdb_src}/build-%{_target_platform} # Make sure we get rid of the old package gdb64, now that we have unified @@ -29,7 +29,7 @@ URL: http://gnu.org/software/gdb/ Obsoletes: gdb64 %endif -# GDB patches have the format gdb---.patch; +# GDB patches have the format gdb--bz-.patch; # should include the ChangeLog.RedHat change-log entry; and should be # created using diff -u ./gdb (not gdb-6.3/gdb). @@ -189,12 +189,6 @@ Patch169: gdb-6.3-ia64-sigill-20051115.patch # Allow option to continue backtracing past a zero pc value Patch170: gdb-6.3-bt-past-zero-20051201.patch -# Enable gdb to recognize stack frames annotated with the "S" augmentation. -Patch173: gdb-6.3-augmS-20060303.patch - -# Enable gdb to recognize CFA value expressions introduced in Dwarf3. -Patch174: gdb-6.3-cfaval-20060303.patch - # Use bigger numbers than int. Patch176: gdb-6.3-large-core-20051206.patch @@ -209,33 +203,18 @@ Patch178: gdb-6.3-catch-debug-registers-error-20060527.patch # ia32el. Patch179: gdb-6.3-ia32el-fix-waitpid-20060615.patch -# Backport GNU .hash support. -Patch180: gdb-6.5-bfd-hash-style-20060714.patch - # Bugfix segv on the source display by ^X 1 (fixes Patch130, BZ 200048). Patch181: gdb-6.5-bz200048-find_line_pc-segv.patch -# Fix exec() from threaded program, partial CVS backport (BZ 182116). -Patch183: gdb-6.3-bz182116-exec-from-pthread.patch - -# Fix occasional failure to load shared libraries (BZ 146810). -Patch184: gdb-6.3-bz146810-solib_absolute_prefix_is_empty.patch - # Bugfix object names completion (fixes Patch116, BZ 193763). Patch185: gdb-6.3-bz193763-object-name-completion.patch -# Avoid crash of 'info threads' if stale threads exist (BZ 195429). -Patch186: gdb-6.5-bz195429-stale-threads-crash.patch - -# Handle corrupted or missing location list information (BZ 196439). -Patch187: gdb-6.5-bz196439-valgrind-memcheck-compat.patch +# Testcase for corrupted or missing location list information (BZ 196439). +Patch187: gdb-6.5-bz196439-valgrind-memcheck-compat-test.patch # Fix debuginfo addresses resolving for --emit-relocs Linux kernels (BZ 203661). Patch188: gdb-6.5-bz203661-emit-relocs.patch -# Add support for memory nops on x86. -Patch189: gdb-6.5-opcodes-i386-nopmem.patch - # Security patch: avoid stack overflows in dwarf expression computation. # CVE-2006-4146 Patch190: gdb-6.5-dwarf-stack-overflow.patch @@ -243,9 +222,6 @@ Patch190: gdb-6.5-dwarf-stack-overflow.patch # Fix gdb printf command argument using "%p" (BZ 205551). Patch191: gdb-6.5-bz205551-printf-p.patch -# Fix crash on C++ symbol failing to be demangled (BZ 206813). -Patch192: gdb-6.5-bz206813-cplusplus-symbol-null.patch - # Fix attach to stopped process, supersede `gdb-6.3-attach-stop-20051011.patch'. # Fix attachment also to a threaded stopped process (BZ 219118). Patch193: gdb-6.5-attach-stop.patch @@ -258,16 +234,12 @@ Patch194: gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch Patch195: gdb-6.5-tls-of-separate-debuginfo.patch # Fix TLS symbols resolving for shared libraries with a relative pathname. -# The testsuite needs `gdb-6.3-bz146810-solib_absolute_prefix_is_empty.patch'. # The testsuite needs `gdb-6.5-tls-of-separate-debuginfo.patch'. Patch196: gdb-6.5-sharedlibrary-path.patch # Support IPv6 for gdbserver (BZ 198365). Patch197: gdb-6.5-bz198365-IPv6.patch -# No longer disassemble invalid i386 opcodes of movQ/movA (BZ 172034). -Patch198: gdb-6.5-bz172034-disasm-i386-C6-C7.patch - # Suggest fixing your target architecture for gdbserver(1) (BZ 190810). # FIXME: It could be autodetected. Patch199: gdb-6.5-bz190810-gdbserver-arch-advice.patch @@ -278,13 +250,10 @@ Patch200: gdb-6.5-bz181390-memory-address-width.patch # Fix `gcore' command for 32bit inferiors on 64bit hosts. Patch201: gdb-6.5-gcore-i386-on-amd64.patch -# Fix deadlock accessing last address space byte; for corrupted backtraces. -Patch203: gdb-6.5-last-address-space-byte.patch +# Testcase for deadlocking on last address space byte; for corrupted backtraces. Patch211: gdb-6.5-last-address-space-byte-test.patch # Fix "??" resolving of symbols from (non-prelinked) debuginfo packages. -# "gdb-6.5-matching_bfd_sections.patch" is a prerequisited CVS backport. -Patch205: gdb-6.5-matching_bfd_sections.patch Patch206: gdb-6.5-relativedebug.patch # Fix "??" resolving of symbols from overlapping functions (nanosleep(3)). @@ -330,6 +299,13 @@ Patch229: gdb-6.5-bz140532-ppc-debug_frame-return_address-test.patch # Fix missing testsuite .log output of testcases using get_compiler_info(). Patch230: gdb-6.5-testsuite-log.patch +# Testcase for exec() from threaded program (BZ 202689). +Patch231: gdb-6.3-bz202689-exec-from-pthread-test.patch + +# Backported post gdb-6.6 release ia64 unwinding fixups. +Patch232: gdb-6.6-ia64-kernel-unwind.patch +Patch233: gdb-6.6-ia64-pc-unwind.patch + BuildRequires: ncurses-devel glibc-devel gcc make gzip texinfo dejagnu gettext BuildRequires: flex bison sharutils @@ -413,35 +389,24 @@ and printing their data. %patch166 -p1 %patch169 -p1 %patch170 -p1 -%patch173 -p1 -%patch174 -p1 %patch176 -p1 %patch177 -p1 %patch178 -p1 %patch179 -p1 -%patch180 -p1 %patch181 -p1 -%patch183 -p1 -%patch184 -p1 %patch185 -p1 -%patch186 -p1 %patch187 -p1 %patch188 -p1 -%patch189 -p1 %patch190 -p1 %patch191 -p1 -%patch192 -p1 %patch193 -p1 %patch194 -p1 %patch195 -p1 %patch196 -p1 #%patch197 -p1 -%patch198 -p1 %patch199 -p1 %patch200 -p1 %patch201 -p1 -%patch203 -p1 -%patch205 -p1 %patch206 -p1 %patch207 -p1 %patch208 -p1 @@ -463,6 +428,9 @@ and printing their data. %patch228 -p1 %patch229 -p1 %patch230 -p1 +%patch231 -p1 +%patch232 -p1 +%patch233 -p1 # Change the version that gets printed at GDB startup, so it is RedHat # specific. @@ -625,6 +593,11 @@ fi # don't include the files in include, they are part of binutils %changelog +* Sat Jan 20 2007 Jan Kratochvil - 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 - 6.5-27 - Fix the testsuite results broken in 6.5-26, stop invalid testsuite runs. diff --git a/sources b/sources index 0946ff9..e3566b3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -af6c8335230d7604aee0803b1df14f54 gdb-6.5.tar.bz2 +a4df41d28dd514d64e8ccbfe125fd9a6 gdb-6.6.tar.bz2