Rebase to FSF GDB 7.2.50.20110320 (which is a 7.3 pre-release).

Merge archer-sergiodj-stap, the SystemTap probes breakpoints feature.
[stap] Fix -O2 warnings.
Fix Ada support crash on uninitialized gdbarch.
This commit is contained in:
Jan Kratochvil 2011-03-20 21:44:20 +01:00
parent d5159132e2
commit 48cf710500
20 changed files with 4769 additions and 1810 deletions

2
.gitignore vendored
View File

@ -1,2 +1,2 @@
/libstdc++-v3-python-r155978.tar.bz2 /libstdc++-v3-python-r155978.tar.bz2
/gdb-7.2.50.20110305.tar.bz2 /gdb-7.2.50.20110320.tar.bz2

View File

@ -92,7 +92,7 @@
+gdb_run_cmd +gdb_run_cmd
+ +
+gdb_test_multiple {} "Program exited" { +gdb_test_multiple {} "Program exited" {
+ -re "\r\nProgram exited normally.\r\n$gdb_prompt $" { + -re "\r\n\\\[Inferior .* exited normally\\\]\r\n$gdb_prompt $" {
+ pass "Program exited" + pass "Program exited"
+ } + }
+} +}

View File

@ -9,10 +9,10 @@
* gdb.base/attach-32.exp: Fix forgotten $GDBFLAGS as set. * gdb.base/attach-32.exp: Fix forgotten $GDBFLAGS as set.
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/attach-32.c Index: gdb-7.2.50.20110320/gdb/testsuite/gdb.base/attach-32.c
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.base/attach-32.c 2008-12-07 10:06:03.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/gdb.base/attach-32.c 2011-03-20 20:15:57.000000000 +0100
@@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
+/* This program is intended to be started outside of gdb, and then +/* This program is intended to be started outside of gdb, and then
+ attached to by gdb. Thus, it simply spins in a loop. The loop + attached to by gdb. Thus, it simply spins in a loop. The loop
@ -34,10 +34,10 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/attach-32.c
+ } + }
+ return 0; + return 0;
+} +}
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/attach-32.exp Index: gdb-7.2.50.20110320/gdb/testsuite/gdb.base/attach-32.exp
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.base/attach-32.exp 2008-12-07 10:08:52.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/gdb.base/attach-32.exp 2011-03-20 20:20:03.000000000 +0100
@@ -0,0 +1,245 @@ @@ -0,0 +1,245 @@
+# Copyright 2005 Free Software Foundation, Inc. +# Copyright 2005 Free Software Foundation, Inc.
+ +
@ -153,7 +153,7 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/attach-32.exp
+ +
+ # Allow the test process to exit, to cleanup after ourselves. + # Allow the test process to exit, to cleanup after ourselves.
+ +
+ gdb_test "continue" "Program exited normally." "after attach-32, exit" + gdb_test "continue" {\[Inferior .* exited normally\]} "after attach-32, exit"
+ +
+ # Make sure we don't leave a process around to confuse + # Make sure we don't leave a process around to confuse
+ # the next test run (and prevent the compile by keeping + # the next test run (and prevent the compile by keeping
@ -234,7 +234,7 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/attach-32.exp
+ # Get rid of the process + # Get rid of the process
+ +
+ gdb_test "p should_exit = 1" + gdb_test "p should_exit = 1"
+ gdb_test "c" "Program exited normally." + gdb_test "c" {\[Inferior .* exited normally\]}
+ +
+ # Be paranoid + # Be paranoid
+ +
@ -284,10 +284,10 @@ Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/attach-32.exp
+do_call_attach_tests +do_call_attach_tests
+ +
+return 0 +return 0
Index: gdb-6.8.50.20081128/gdb/testsuite/gdb.base/attach-32b.c Index: gdb-7.2.50.20110320/gdb/testsuite/gdb.base/attach-32b.c
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-6.8.50.20081128/gdb/testsuite/gdb.base/attach-32b.c 2008-12-07 10:06:03.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/gdb.base/attach-32b.c 2011-03-20 20:15:57.000000000 +0100
@@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
+/* This program is intended to be started outside of gdb, and then +/* This program is intended to be started outside of gdb, and then
+ attached to by gdb. Thus, it simply spins in a loop. The loop + attached to by gdb. Thus, it simply spins in a loop. The loop

View File

@ -1,7 +1,7 @@
Index: gdb-7.2.50.20110305/gdb/testsuite/configure.ac Index: gdb-7.2.50.20110320/gdb/testsuite/configure.ac
=================================================================== ===================================================================
--- gdb-7.2.50.20110305.orig/gdb/testsuite/configure.ac 2011-03-03 17:57:55.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/testsuite/configure.ac 2011-03-03 17:57:55.000000000 +0100
+++ gdb-7.2.50.20110305/gdb/testsuite/configure.ac 2011-03-05 08:26:53.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/configure.ac 2011-03-20 20:21:43.000000000 +0100
@@ -97,6 +97,6 @@ AC_OUTPUT([Makefile \ @@ -97,6 +97,6 @@ AC_OUTPUT([Makefile \
gdb.hp/gdb.aCC/Makefile gdb.hp/gdb.compat/Makefile \ gdb.hp/gdb.aCC/Makefile gdb.hp/gdb.compat/Makefile \
gdb.hp/gdb.defects/Makefile \ gdb.hp/gdb.defects/Makefile \
@ -10,10 +10,10 @@ Index: gdb-7.2.50.20110305/gdb/testsuite/configure.ac
+ gdb.objc/Makefile gdb.opencl/Makefile gdb.opt/Makefile gdb.pascal/Makefile gdb.pie/Makefile \ + gdb.objc/Makefile gdb.opencl/Makefile gdb.opt/Makefile gdb.pascal/Makefile gdb.pie/Makefile \
gdb.python/Makefile gdb.reverse/Makefile gdb.stabs/Makefile \ gdb.python/Makefile gdb.reverse/Makefile gdb.stabs/Makefile \
gdb.threads/Makefile gdb.trace/Makefile gdb.xml/Makefile]) gdb.threads/Makefile gdb.trace/Makefile gdb.xml/Makefile])
Index: gdb-7.2.50.20110305/gdb/testsuite/configure Index: gdb-7.2.50.20110320/gdb/testsuite/configure
=================================================================== ===================================================================
--- gdb-7.2.50.20110305.orig/gdb/testsuite/configure 2011-03-03 17:57:55.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/testsuite/configure 2011-03-03 17:57:55.000000000 +0100
+++ gdb-7.2.50.20110305/gdb/testsuite/configure 2011-03-05 08:26:58.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/configure 2011-03-20 20:21:43.000000000 +0100
@@ -3448,7 +3448,7 @@ done @@ -3448,7 +3448,7 @@ done
@ -31,10 +31,10 @@ Index: gdb-7.2.50.20110305/gdb/testsuite/configure
"gdb.python/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.python/Makefile" ;; "gdb.python/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.python/Makefile" ;;
"gdb.reverse/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.reverse/Makefile" ;; "gdb.reverse/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.reverse/Makefile" ;;
"gdb.stabs/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.stabs/Makefile" ;; "gdb.stabs/Makefile") CONFIG_FILES="$CONFIG_FILES gdb.stabs/Makefile" ;;
Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/attach.c Index: gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/attach.c
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/attach.c 2011-03-05 08:26:28.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/attach.c 2011-03-20 20:21:43.000000000 +0100
@@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
+/* This program is intended to be started outside of gdb, and then +/* This program is intended to be started outside of gdb, and then
+ attached to by gdb. Thus, it simply spins in a loop. The loop + attached to by gdb. Thus, it simply spins in a loop. The loop
@ -56,10 +56,10 @@ Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/attach.c
+ } + }
+ return 0; + return 0;
+} +}
Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/attach2.c Index: gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/attach2.c
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/attach2.c 2011-03-05 08:26:28.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/attach2.c 2011-03-20 20:21:43.000000000 +0100
@@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
+/* This program is intended to be started outside of gdb, and then +/* This program is intended to be started outside of gdb, and then
+ attached to by gdb. Thus, it simply spins in a loop. The loop + attached to by gdb. Thus, it simply spins in a loop. The loop
@ -85,10 +85,10 @@ Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/attach2.c
+ } + }
+ return (0); + return (0);
+} +}
Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/break.c Index: gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/break.c
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/break.c 2011-03-05 08:26:28.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/break.c 2011-03-20 20:21:43.000000000 +0100
@@ -0,0 +1,146 @@ @@ -0,0 +1,146 @@
+/* This testcase is part of GDB, the GNU debugger. +/* This testcase is part of GDB, the GNU debugger.
+ +
@ -236,10 +236,10 @@ Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/break.c
+ } + }
+ return 0; + return 0;
+} +}
Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/break1.c Index: gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/break1.c
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/break1.c 2011-03-05 08:26:28.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/break1.c 2011-03-20 20:21:43.000000000 +0100
@@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
+/* This testcase is part of GDB, the GNU debugger. +/* This testcase is part of GDB, the GNU debugger.
+ +
@ -285,10 +285,10 @@ Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/break1.c
+void marker3 (a, b) char *a, *b; {} /* set breakpoint 18 here */ +void marker3 (a, b) char *a, *b; {} /* set breakpoint 18 here */
+void marker4 (d) long d; {} /* set breakpoint 13 here */ +void marker4 (d) long d; {} /* set breakpoint 13 here */
+#endif +#endif
Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/coremaker.c Index: gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/coremaker.c
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/coremaker.c 2011-03-05 08:26:28.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/coremaker.c 2011-03-20 20:21:43.000000000 +0100
@@ -0,0 +1,142 @@ @@ -0,0 +1,142 @@
+/* Copyright 1992, 1993, 1994, 1995, 1996, 1999 +/* Copyright 1992, 1993, 1994, 1995, 1996, 1999
+ Free Software Foundation, Inc. + Free Software Foundation, Inc.
@ -432,11 +432,11 @@ Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/coremaker.c
+ return 0; + return 0;
+} +}
+ +
Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/attach.exp Index: gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/attach.exp
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/attach.exp 2011-03-05 08:26:28.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/attach.exp 2011-03-20 20:25:53.000000000 +0100
@@ -0,0 +1,423 @@ @@ -0,0 +1,417 @@
+# Copyright 1997, 1999, 2002 Free Software Foundation, Inc. +# Copyright 1997, 1999, 2002 Free Software Foundation, Inc.
+ +
+# This program is free software; you can redistribute it and/or modify +# This program is free software; you can redistribute it and/or modify
@ -699,13 +699,7 @@ Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/attach.exp
+ +
+ # Allow the test process to exit, to cleanup after ourselves. + # Allow the test process to exit, to cleanup after ourselves.
+ # + #
+ send_gdb "continue\n" + gdb_test "continue" {\[Inferior .* exited normally\]} "after attach2, exit"
+ gdb_expect {
+ -re "Program exited normally.*$gdb_prompt $"\
+ {pass "after attach2, exit"}
+ -re "$gdb_prompt $" {fail "after attach2, exit"}
+ timeout {fail "(timeout) after attach2, exit"}
+ }
+ +
+ # Make sure we don't leave a process around to confuse + # Make sure we don't leave a process around to confuse
+ # the next test run (and prevent the compile by keeping + # the next test run (and prevent the compile by keeping
@ -831,7 +825,7 @@ Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/attach.exp
+ # Get rid of the process + # Get rid of the process
+ # + #
+ gdb_test "p should_exit = 1" ".*" + gdb_test "p should_exit = 1" ".*"
+ gdb_test "c" ".*Program exited normally.*" + gdb_test "c" {\[Inferior .* exited normally\]}
+ +
+ # Be paranoid + # Be paranoid
+ # + #
@ -860,10 +854,10 @@ Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/attach.exp
+do_call_attach_tests +do_call_attach_tests
+ +
+return 0 +return 0
Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/break.exp Index: gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/break.exp
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/break.exp 2011-03-05 08:26:28.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/break.exp 2011-03-20 20:21:43.000000000 +0100
@@ -0,0 +1,966 @@ @@ -0,0 +1,966 @@
+# Copyright 1988, 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, +# Copyright 1988, 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2002, 2003, 2004 +# 2000, 2002, 2003, 2004
@ -1831,10 +1825,10 @@ Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/break.exp
+ send_gdb "set args main\n" + send_gdb "set args main\n"
+ gdb_expect -re ".*$gdb_prompt $" {} + gdb_expect -re ".*$gdb_prompt $" {}
+} +}
Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/corefile.exp Index: gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/corefile.exp
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/corefile.exp 2011-03-05 08:26:28.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/corefile.exp 2011-03-20 20:21:43.000000000 +0100
@@ -0,0 +1,233 @@ @@ -0,0 +1,233 @@
+# Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 +# Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+# Free Software Foundation, Inc. +# Free Software Foundation, Inc.
@ -2069,10 +2063,10 @@ Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/corefile.exp
+gdb_test "up" "#\[0-9\]* *\[0-9xa-fH'\]* in .* \\(.*\\).*" "up in corefile.exp (reinit)" +gdb_test "up" "#\[0-9\]* *\[0-9xa-fH'\]* in .* \\(.*\\).*" "up in corefile.exp (reinit)"
+ +
+gdb_test "core" "No core file now." +gdb_test "core" "No core file now."
Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/Makefile.in Index: gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/Makefile.in
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110305/gdb/testsuite/gdb.pie/Makefile.in 2011-03-05 08:26:28.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/gdb.pie/Makefile.in 2011-03-20 20:21:43.000000000 +0100
@@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
+VPATH = @srcdir@ +VPATH = @srcdir@
+srcdir = @srcdir@ +srcdir = @srcdir@

View File

@ -1,7 +1,7 @@
Index: gdb-7.2.50.20110213/gdb/event-top.c Index: gdb-7.2.50.20110320/gdb/event-top.c
=================================================================== ===================================================================
--- gdb-7.2.50.20110213.orig/gdb/event-top.c 2011-01-01 16:33:03.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/event-top.c 2011-03-16 16:18:58.000000000 +0100
+++ gdb-7.2.50.20110213/gdb/event-top.c 2011-02-13 19:21:49.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/event-top.c 2011-03-20 15:22:51.000000000 +0100
@@ -33,6 +33,7 @@ @@ -33,6 +33,7 @@
#include "cli/cli-script.h" /* for reset_command_nest_depth */ #include "cli/cli-script.h" /* for reset_command_nest_depth */
#include "main.h" #include "main.h"
@ -28,11 +28,11 @@ Index: gdb-7.2.50.20110213/gdb/event-top.c
/* Each interpreter has its own rules on displaying the command /* Each interpreter has its own rules on displaying the command
prompt. */ prompt. */
if (!current_interp_display_prompt_p ()) if (!current_interp_display_prompt_p ())
Index: gdb-7.2.50.20110213/gdb/elfread.c Index: gdb-7.2.50.20110320/gdb/elfread.c
=================================================================== ===================================================================
--- gdb-7.2.50.20110213.orig/gdb/elfread.c 2011-02-13 19:21:44.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/elfread.c 2011-03-20 15:22:34.000000000 +0100
+++ gdb-7.2.50.20110213/gdb/elfread.c 2011-02-13 19:21:49.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/elfread.c 2011-03-20 15:22:51.000000000 +0100
@@ -42,6 +42,7 @@ @@ -49,6 +49,7 @@
#include "gdbcore.h" #include "gdbcore.h"
#include "gdbcmd.h" #include "gdbcmd.h"
#include "observer.h" #include "observer.h"
@ -40,7 +40,7 @@ Index: gdb-7.2.50.20110213/gdb/elfread.c
extern void _initialize_elfread (void); extern void _initialize_elfread (void);
@@ -1374,8 +1375,361 @@ build_id_to_filename (struct build_id *b @@ -1623,8 +1624,361 @@ build_id_to_filename (struct build_id *b
return retval; return retval;
} }
@ -403,7 +403,7 @@ Index: gdb-7.2.50.20110213/gdb/elfread.c
avoidance. */ avoidance. */
struct missing_filepair struct missing_filepair
@@ -1429,11 +1783,17 @@ missing_filepair_change (void) @@ -1678,11 +2032,17 @@ missing_filepair_change (void)
/* All their memory came just from missing_filepair_OBSTACK. */ /* All their memory came just from missing_filepair_OBSTACK. */
missing_filepair_hash = NULL; missing_filepair_hash = NULL;
} }
@ -421,7 +421,7 @@ Index: gdb-7.2.50.20110213/gdb/elfread.c
missing_filepair_change (); missing_filepair_change ();
} }
@@ -1500,14 +1860,35 @@ debug_print_missing (const char *binary, @@ -1749,14 +2109,35 @@ debug_print_missing (const char *binary,
*slot = missing_filepair; *slot = missing_filepair;
@ -464,11 +464,11 @@ Index: gdb-7.2.50.20110213/gdb/elfread.c
} }
static char * static char *
Index: gdb-7.2.50.20110213/gdb/symfile.h Index: gdb-7.2.50.20110320/gdb/symfile.h
=================================================================== ===================================================================
--- gdb-7.2.50.20110213.orig/gdb/symfile.h 2011-02-13 19:21:44.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/symfile.h 2011-03-20 15:19:52.000000000 +0100
+++ gdb-7.2.50.20110213/gdb/symfile.h 2011-02-13 19:21:49.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/symfile.h 2011-03-20 15:22:51.000000000 +0100
@@ -560,6 +560,8 @@ extern struct build_id *build_id_addr_ge @@ -617,6 +617,8 @@ extern struct build_id *build_id_addr_ge
extern char *build_id_to_filename (struct build_id *build_id, extern char *build_id_to_filename (struct build_id *build_id,
char **link_return, int add_debug_suffix); char **link_return, int add_debug_suffix);
extern void debug_print_missing (const char *binary, const char *debug); extern void debug_print_missing (const char *binary, const char *debug);
@ -477,11 +477,11 @@ Index: gdb-7.2.50.20110213/gdb/symfile.h
/* From dwarf2read.c */ /* From dwarf2read.c */
Index: gdb-7.2.50.20110213/gdb/testsuite/lib/gdb.exp Index: gdb-7.2.50.20110320/gdb/testsuite/lib/gdb.exp
=================================================================== ===================================================================
--- gdb-7.2.50.20110213.orig/gdb/testsuite/lib/gdb.exp 2011-02-13 19:21:44.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/testsuite/lib/gdb.exp 2011-03-20 15:19:52.000000000 +0100
+++ gdb-7.2.50.20110213/gdb/testsuite/lib/gdb.exp 2011-02-13 19:21:49.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/lib/gdb.exp 2011-03-20 15:22:51.000000000 +0100
@@ -1395,7 +1395,7 @@ proc default_gdb_start { } { @@ -1397,7 +1397,7 @@ proc default_gdb_start { } {
warning "Couldn't set the width to 0." warning "Couldn't set the width to 0."
} }
} }
@ -490,10 +490,10 @@ Index: gdb-7.2.50.20110213/gdb/testsuite/lib/gdb.exp
send_gdb "set build-id-verbose 0\n" send_gdb "set build-id-verbose 0\n"
gdb_expect 10 { gdb_expect 10 {
-re "$gdb_prompt $" { -re "$gdb_prompt $" {
Index: gdb-7.2.50.20110213/gdb/testsuite/lib/mi-support.exp Index: gdb-7.2.50.20110320/gdb/testsuite/lib/mi-support.exp
=================================================================== ===================================================================
--- gdb-7.2.50.20110213.orig/gdb/testsuite/lib/mi-support.exp 2011-02-13 19:21:44.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/testsuite/lib/mi-support.exp 2011-03-20 15:19:52.000000000 +0100
+++ gdb-7.2.50.20110213/gdb/testsuite/lib/mi-support.exp 2011-02-13 19:21:49.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/lib/mi-support.exp 2011-03-20 15:22:51.000000000 +0100
@@ -221,7 +221,7 @@ proc default_mi_gdb_start { args } { @@ -221,7 +221,7 @@ proc default_mi_gdb_start { args } {
} }
} }
@ -503,10 +503,10 @@ Index: gdb-7.2.50.20110213/gdb/testsuite/lib/mi-support.exp
send_gdb "190-gdb-set build-id-verbose 0\n" send_gdb "190-gdb-set build-id-verbose 0\n"
gdb_expect 10 { gdb_expect 10 {
-re ".*190-gdb-set build-id-verbose 0\r\n190\\\^done\r\n$mi_gdb_prompt$" { -re ".*190-gdb-set build-id-verbose 0\r\n190\\\^done\r\n$mi_gdb_prompt$" {
Index: gdb-7.2.50.20110213/gdb/tui/tui-interp.c Index: gdb-7.2.50.20110320/gdb/tui/tui-interp.c
=================================================================== ===================================================================
--- gdb-7.2.50.20110213.orig/gdb/tui/tui-interp.c 2011-01-01 16:33:52.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/tui/tui-interp.c 2011-01-01 16:33:52.000000000 +0100
+++ gdb-7.2.50.20110213/gdb/tui/tui-interp.c 2011-02-13 19:21:49.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/tui/tui-interp.c 2011-03-20 15:22:51.000000000 +0100
@@ -31,6 +31,7 @@ @@ -31,6 +31,7 @@
#include "tui/tui.h" #include "tui/tui.h"
#include "tui/tui-io.h" #include "tui/tui-io.h"
@ -524,10 +524,10 @@ Index: gdb-7.2.50.20110213/gdb/tui/tui-interp.c
/* Tell readline what the prompt to display is and what function /* Tell readline what the prompt to display is and what function
it will need to call after a whole line is read. This also it will need to call after a whole line is read. This also
displays the first prompt. */ displays the first prompt. */
Index: gdb-7.2.50.20110213/gdb/aclocal.m4 Index: gdb-7.2.50.20110320/gdb/aclocal.m4
=================================================================== ===================================================================
--- gdb-7.2.50.20110213.orig/gdb/aclocal.m4 2010-05-23 02:56:59.000000000 +0200 --- gdb-7.2.50.20110320.orig/gdb/aclocal.m4 2011-02-15 22:05:53.000000000 +0100
+++ gdb-7.2.50.20110213/gdb/aclocal.m4 2011-02-13 19:21:49.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/aclocal.m4 2011-03-20 15:22:51.000000000 +0100
@@ -19,6 +19,162 @@ You have another version of autoconf. I @@ -19,6 +19,162 @@ You have another version of autoconf. I
If you have problems, you may need to regenerate the build system entirely. If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically `autoreconf'.])]) To do so, use the procedure documented by the package, typically `autoreconf'.])])
@ -691,10 +691,10 @@ Index: gdb-7.2.50.20110213/gdb/aclocal.m4
# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
Index: gdb-7.2.50.20110213/gdb/config.in Index: gdb-7.2.50.20110320/gdb/config.in
=================================================================== ===================================================================
--- gdb-7.2.50.20110213.orig/gdb/config.in 2011-01-14 14:38:23.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/config.in 2011-03-17 14:19:09.000000000 +0100
+++ gdb-7.2.50.20110213/gdb/config.in 2011-02-13 19:21:49.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/config.in 2011-03-20 15:22:51.000000000 +0100
@@ -46,6 +46,9 @@ @@ -46,6 +46,9 @@
/* Define to BFD's default target vector. */ /* Define to BFD's default target vector. */
#undef DEFAULT_BFD_VEC #undef DEFAULT_BFD_VEC
@ -705,7 +705,7 @@ Index: gdb-7.2.50.20110213/gdb/config.in
/* Define to 1 if translation of program messages to the user's native /* Define to 1 if translation of program messages to the user's native
language is requested. */ language is requested. */
#undef ENABLE_NLS #undef ENABLE_NLS
@@ -229,6 +232,9 @@ @@ -233,6 +236,9 @@
/* Define if Python 2.7 is being used. */ /* Define if Python 2.7 is being used. */
#undef HAVE_LIBPYTHON2_7 #undef HAVE_LIBPYTHON2_7
@ -715,10 +715,10 @@ Index: gdb-7.2.50.20110213/gdb/config.in
/* Define if libunwind library is being used. */ /* Define if libunwind library is being used. */
#undef HAVE_LIBUNWIND #undef HAVE_LIBUNWIND
Index: gdb-7.2.50.20110213/gdb/configure Index: gdb-7.2.50.20110320/gdb/configure
=================================================================== ===================================================================
--- gdb-7.2.50.20110213.orig/gdb/configure 2011-02-11 10:57:24.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/configure 2011-03-17 14:19:09.000000000 +0100
+++ gdb-7.2.50.20110213/gdb/configure 2011-02-13 19:22:37.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/configure 2011-03-20 15:23:29.000000000 +0100
@@ -682,6 +682,9 @@ REPORT_BUGS_TO @@ -682,6 +682,9 @@ REPORT_BUGS_TO
PKGVERSION PKGVERSION
TARGET_OBS TARGET_OBS
@ -747,7 +747,7 @@ Index: gdb-7.2.50.20110213/gdb/configure
YACC YACC
YFLAGS YFLAGS
XMKMF' XMKMF'
@@ -1653,6 +1660,8 @@ Optional Packages: @@ -1652,6 +1659,8 @@ Optional Packages:
[DATADIR/gdb] [DATADIR/gdb]
--with-relocated-sources=PATH --with-relocated-sources=PATH
automatically relocate this path for source files automatically relocate this path for source files
@ -756,7 +756,7 @@ Index: gdb-7.2.50.20110213/gdb/configure
--with-libunwind use libunwind frame unwinding support --with-libunwind use libunwind frame unwinding support
--with-curses use the curses library instead of the termcap --with-curses use the curses library instead of the termcap
library library
@@ -1688,6 +1697,9 @@ Some influential environment variables: @@ -1687,6 +1696,9 @@ Some influential environment variables:
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir> you have headers in a nonstandard directory <include dir>
CPP C preprocessor CPP C preprocessor
@ -766,7 +766,7 @@ Index: gdb-7.2.50.20110213/gdb/configure
YACC The `Yet Another C Compiler' implementation to use. Defaults to YACC The `Yet Another C Compiler' implementation to use. Defaults to
the first program found out of: `bison -y', `byacc', `yacc'. the first program found out of: `bison -y', `byacc', `yacc'.
YFLAGS The list of arguments that will be passed by default to $YACC. YFLAGS The list of arguments that will be passed by default to $YACC.
@@ -7885,6 +7897,486 @@ _ACEOF @@ -7884,6 +7896,486 @@ _ACEOF
fi fi
@ -1253,10 +1253,10 @@ Index: gdb-7.2.50.20110213/gdb/configure
subdirs="$subdirs testsuite" subdirs="$subdirs testsuite"
Index: gdb-7.2.50.20110213/gdb/configure.ac Index: gdb-7.2.50.20110320/gdb/configure.ac
=================================================================== ===================================================================
--- gdb-7.2.50.20110213.orig/gdb/configure.ac 2011-02-11 10:57:25.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/configure.ac 2011-03-17 14:19:10.000000000 +0100
+++ gdb-7.2.50.20110213/gdb/configure.ac 2011-02-13 19:22:30.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/configure.ac 2011-03-20 15:23:17.000000000 +0100
@@ -108,6 +108,199 @@ AS_HELP_STRING([--with-relocated-sources @@ -108,6 +108,199 @@ AS_HELP_STRING([--with-relocated-sources
[Relocated directory for source files. ]) [Relocated directory for source files. ])
]) ])
@ -1455,12 +1455,12 @@ Index: gdb-7.2.50.20110213/gdb/configure.ac
+fi +fi
+ +
AC_CONFIG_SUBDIRS(testsuite) AC_CONFIG_SUBDIRS(testsuite)
AC_CONFIG_SUBDIRS(common)
Index: gdb-7.2.50.20110213/gdb/acinclude.m4 # Check whether to support alternative target configurations
Index: gdb-7.2.50.20110320/gdb/acinclude.m4
=================================================================== ===================================================================
--- gdb-7.2.50.20110213.orig/gdb/acinclude.m4 2010-05-27 05:40:45.000000000 +0200 --- gdb-7.2.50.20110320.orig/gdb/acinclude.m4 2010-05-27 05:40:45.000000000 +0200
+++ gdb-7.2.50.20110213/gdb/acinclude.m4 2011-02-13 19:21:49.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/acinclude.m4 2011-03-20 15:22:51.000000000 +0100
@@ -1,3 +1,5 @@ @@ -1,3 +1,5 @@
+# serial 1 +# serial 1
+ +
@ -1476,10 +1476,10 @@ Index: gdb-7.2.50.20110213/gdb/acinclude.m4
# @defmac AC_PROG_CC_STDC # @defmac AC_PROG_CC_STDC
# @maindex PROG_CC_STDC # @maindex PROG_CC_STDC
# @ovindex CC # @ovindex CC
Index: gdb-7.2.50.20110213/gdb/corelow.c Index: gdb-7.2.50.20110320/gdb/corelow.c
=================================================================== ===================================================================
--- gdb-7.2.50.20110213.orig/gdb/corelow.c 2011-02-13 19:21:44.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/corelow.c 2011-03-20 15:19:52.000000000 +0100
+++ gdb-7.2.50.20110213/gdb/corelow.c 2011-02-13 19:21:49.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/corelow.c 2011-03-20 15:22:51.000000000 +0100
@@ -320,7 +320,7 @@ build_id_locate_exec (int from_tty) @@ -320,7 +320,7 @@ build_id_locate_exec (int from_tty)
symfile_objfile->flags |= OBJF_BUILD_ID_CORE_LOADED; symfile_objfile->flags |= OBJF_BUILD_ID_CORE_LOADED;
} }

View File

@ -1,7 +1,7 @@
Index: gdb-7.2.50.20110117/gdb/corelow.c Index: gdb-7.2.50.20110320/gdb/corelow.c
=================================================================== ===================================================================
--- gdb-7.2.50.20110117.orig/gdb/corelow.c 2011-01-05 23:22:47.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/corelow.c 2011-02-26 03:07:07.000000000 +0100
+++ gdb-7.2.50.20110117/gdb/corelow.c 2011-01-17 15:52:06.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/corelow.c 2011-03-20 15:19:52.000000000 +0100
@@ -47,6 +47,9 @@ @@ -47,6 +47,9 @@
#include "filenames.h" #include "filenames.h"
#include "progspace.h" #include "progspace.h"
@ -90,11 +90,11 @@ Index: gdb-7.2.50.20110117/gdb/corelow.c
+ NULL, NULL, NULL, + NULL, NULL, NULL,
+ &setlist, &showlist); + &setlist, &showlist);
} }
Index: gdb-7.2.50.20110117/gdb/doc/gdb.texinfo Index: gdb-7.2.50.20110320/gdb/doc/gdb.texinfo
=================================================================== ===================================================================
--- gdb-7.2.50.20110117.orig/gdb/doc/gdb.texinfo 2011-01-17 15:50:41.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/doc/gdb.texinfo 2011-03-20 15:17:44.000000000 +0100
+++ gdb-7.2.50.20110117/gdb/doc/gdb.texinfo 2011-01-17 15:52:06.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/doc/gdb.texinfo 2011-03-20 15:19:52.000000000 +0100
@@ -15220,6 +15220,27 @@ information files. @@ -15343,6 +15343,27 @@ information files.
@end table @end table
@ -122,10 +122,10 @@ Index: gdb-7.2.50.20110117/gdb/doc/gdb.texinfo
@cindex @code{.gnu_debuglink} sections @cindex @code{.gnu_debuglink} sections
@cindex debug link sections @cindex debug link sections
A debug link is a special section of the executable file named A debug link is a special section of the executable file named
Index: gdb-7.2.50.20110117/gdb/solib-svr4.c Index: gdb-7.2.50.20110320/gdb/solib-svr4.c
=================================================================== ===================================================================
--- gdb-7.2.50.20110117.orig/gdb/solib-svr4.c 2011-01-17 15:47:37.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/solib-svr4.c 2011-03-20 15:17:43.000000000 +0100
+++ gdb-7.2.50.20110117/gdb/solib-svr4.c 2011-01-17 15:52:06.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/solib-svr4.c 2011-03-20 15:19:52.000000000 +0100
@@ -1179,9 +1179,49 @@ svr4_current_sos (void) @@ -1179,9 +1179,49 @@ svr4_current_sos (void)
safe_strerror (errcode)); safe_strerror (errcode));
else else
@ -179,13 +179,13 @@ Index: gdb-7.2.50.20110117/gdb/solib-svr4.c
} }
xfree (buffer); xfree (buffer);
Index: gdb-7.2.50.20110117/gdb/elfread.c Index: gdb-7.2.50.20110320/gdb/elfread.c
=================================================================== ===================================================================
--- gdb-7.2.50.20110117.orig/gdb/elfread.c 2011-01-17 15:47:37.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/elfread.c 2011-03-20 15:17:42.000000000 +0100
+++ gdb-7.2.50.20110117/gdb/elfread.c 2011-01-17 15:52:06.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/elfread.c 2011-03-20 15:22:34.000000000 +0100
@@ -38,6 +38,10 @@ @@ -45,6 +45,10 @@
#include "demangle.h" #include "stap-probe.h"
#include "psympriv.h" #include "arch-utils.h"
#include "gdbtypes.h" #include "gdbtypes.h"
+#include "libbfd.h" +#include "libbfd.h"
+#include "gdbcore.h" +#include "gdbcore.h"
@ -194,8 +194,8 @@ Index: gdb-7.2.50.20110117/gdb/elfread.c
extern void _initialize_elfread (void); extern void _initialize_elfread (void);
@@ -823,16 +827,65 @@ resolve_gnu_ifunc (const char *function_ @@ -1072,16 +1076,65 @@ elf_gnu_ifunc_resolver_return_stop (stru
return 0; update_breakpoint_locations (b, sals);
} }
+/* Locate NT_GNU_BUILD_ID and return its matching debug filename. +/* Locate NT_GNU_BUILD_ID and return its matching debug filename.
@ -262,7 +262,7 @@ Index: gdb-7.2.50.20110117/gdb/elfread.c
{ {
struct build_id *retval; struct build_id *retval;
@@ -848,6 +901,348 @@ build_id_bfd_get (bfd *abfd) @@ -1097,6 +1150,348 @@ build_id_bfd_get (bfd *abfd)
return retval; return retval;
} }
@ -611,7 +611,7 @@ Index: gdb-7.2.50.20110117/gdb/elfread.c
/* Return if FILENAME has NT_GNU_BUILD_ID matching the CHECK value. */ /* Return if FILENAME has NT_GNU_BUILD_ID matching the CHECK value. */
static int static int
@@ -862,7 +1257,7 @@ build_id_verify (const char *filename, s @@ -1111,7 +1506,7 @@ build_id_verify (const char *filename, s
if (abfd == NULL) if (abfd == NULL)
return 0; return 0;
@ -620,7 +620,7 @@ Index: gdb-7.2.50.20110117/gdb/elfread.c
if (found == NULL) if (found == NULL)
warning (_("File \"%s\" has no build-id, file skipped"), filename); warning (_("File \"%s\" has no build-id, file skipped"), filename);
@@ -880,14 +1275,16 @@ build_id_verify (const char *filename, s @@ -1129,14 +1524,16 @@ build_id_verify (const char *filename, s
return retval; return retval;
} }
@ -641,7 +641,7 @@ Index: gdb-7.2.50.20110117/gdb/elfread.c
/* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will /* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
cause "/.build-id/..." lookups. */ cause "/.build-id/..." lookups. */
@@ -918,7 +1315,10 @@ build_id_to_debug_filename (struct build @@ -1167,7 +1564,10 @@ build_id_to_debug_filename (struct build
*s++ = '/'; *s++ = '/';
while (size-- > 0) while (size-- > 0)
s += sprintf (s, "%02x", (unsigned) *data++); s += sprintf (s, "%02x", (unsigned) *data++);
@ -653,7 +653,7 @@ Index: gdb-7.2.50.20110117/gdb/elfread.c
/* lrealpath() is expensive even for the usually non-existent files. */ /* lrealpath() is expensive even for the usually non-existent files. */
if (access (link, F_OK) == 0) if (access (link, F_OK) == 0)
@@ -931,26 +1331,201 @@ build_id_to_debug_filename (struct build @@ -1180,26 +1580,201 @@ build_id_to_debug_filename (struct build
} }
if (retval != NULL) if (retval != NULL)
@ -723,9 +723,9 @@ Index: gdb-7.2.50.20110117/gdb/elfread.c
+ +
+ retval = obstack_alloc (&missing_filepair_obstack, size); + retval = obstack_alloc (&missing_filepair_obstack, size);
+ memset (retval, 0, size); + memset (retval, 0, size);
return retval; + return retval;
} +}
+
+static hashval_t +static hashval_t
+missing_filepair_hash_func (const struct missing_filepair *elem) +missing_filepair_hash_func (const struct missing_filepair *elem)
+{ +{
@ -735,9 +735,9 @@ Index: gdb-7.2.50.20110117/gdb/elfread.c
+ if (elem->debug != NULL) + if (elem->debug != NULL)
+ retval ^= htab_hash_string (elem->debug); + retval ^= htab_hash_string (elem->debug);
+ +
+ return retval; return retval;
+} }
+
+static int +static int
+missing_filepair_eq (const struct missing_filepair *elem1, +missing_filepair_eq (const struct missing_filepair *elem1,
+ const struct missing_filepair *elem2) + const struct missing_filepair *elem2)
@ -859,7 +859,7 @@ Index: gdb-7.2.50.20110117/gdb/elfread.c
xfree (build_id); xfree (build_id);
/* Prevent looping on a stripped .debug file. */ /* Prevent looping on a stripped .debug file. */
if (build_id_name != NULL && strcmp (build_id_name, objfile->name) == 0) if (build_id_name != NULL && strcmp (build_id_name, objfile->name) == 0)
@@ -960,7 +1535,7 @@ find_separate_debug_file_by_buildid (str @@ -1209,7 +1784,7 @@ find_separate_debug_file_by_buildid (str
xfree (build_id_name); xfree (build_id_name);
} }
else if (build_id_name != NULL) else if (build_id_name != NULL)
@ -868,9 +868,9 @@ Index: gdb-7.2.50.20110117/gdb/elfread.c
} }
return NULL; return NULL;
} }
@@ -1148,9 +1723,10 @@ elf_symfile_read (struct objfile *objfil @@ -1407,9 +1982,10 @@ elf_symfile_read (struct objfile *objfil
`.note.gnu.build-id'. */ `.note.gnu.build-id'. */
if (!objfile_has_partial_symbols (objfile)) else if (!objfile_has_partial_symbols (objfile))
{ {
- char *debugfile; - char *debugfile;
+ char *debugfile, *build_id_filename; + char *debugfile, *build_id_filename;
@ -881,7 +881,7 @@ Index: gdb-7.2.50.20110117/gdb/elfread.c
if (debugfile == NULL) if (debugfile == NULL)
debugfile = find_separate_debug_file_by_debuglink (objfile); debugfile = find_separate_debug_file_by_debuglink (objfile);
@@ -1162,6 +1738,12 @@ elf_symfile_read (struct objfile *objfil @@ -1421,6 +1997,12 @@ elf_symfile_read (struct objfile *objfil
symbol_file_add_separate (abfd, symfile_flags, objfile); symbol_file_add_separate (abfd, symfile_flags, objfile);
xfree (debugfile); xfree (debugfile);
} }
@ -894,10 +894,10 @@ Index: gdb-7.2.50.20110117/gdb/elfread.c
} }
} }
@@ -1337,4 +1919,16 @@ void @@ -1879,4 +2461,16 @@ _initialize_elfread (void)
_initialize_elfread (void)
{ elf_objfile_gnu_ifunc_cache_data = register_objfile_data ();
add_symtab_fns (&elf_sym_fns); gnu_ifunc_fns_p = &elf_gnu_ifunc_fns;
+ +
+ add_setshow_zinteger_cmd ("build-id-verbose", no_class, &build_id_verbose, + add_setshow_zinteger_cmd ("build-id-verbose", no_class, &build_id_verbose,
+ _("\ + _("\
@ -911,11 +911,11 @@ Index: gdb-7.2.50.20110117/gdb/elfread.c
+ +
+ observer_attach_executable_changed (debug_print_executable_changed); + observer_attach_executable_changed (debug_print_executable_changed);
} }
Index: gdb-7.2.50.20110117/gdb/symfile.h Index: gdb-7.2.50.20110320/gdb/symfile.h
=================================================================== ===================================================================
--- gdb-7.2.50.20110117.orig/gdb/symfile.h 2011-01-11 22:53:24.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/symfile.h 2011-03-20 15:17:43.000000000 +0100
+++ gdb-7.2.50.20110117/gdb/symfile.h 2011-01-17 15:52:06.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/symfile.h 2011-03-20 15:19:52.000000000 +0100
@@ -554,6 +554,13 @@ void free_symfile_segment_data (struct s @@ -611,6 +611,13 @@ void free_symfile_segment_data (struct s
extern struct cleanup *increment_reading_symtab (void); extern struct cleanup *increment_reading_symtab (void);
@ -929,11 +929,11 @@ Index: gdb-7.2.50.20110117/gdb/symfile.h
/* From dwarf2read.c */ /* From dwarf2read.c */
extern int dwarf2_has_info (struct objfile *); extern int dwarf2_has_info (struct objfile *);
Index: gdb-7.2.50.20110117/gdb/testsuite/lib/gdb.exp Index: gdb-7.2.50.20110320/gdb/testsuite/lib/gdb.exp
=================================================================== ===================================================================
--- gdb-7.2.50.20110117.orig/gdb/testsuite/lib/gdb.exp 2011-01-17 15:47:37.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/testsuite/lib/gdb.exp 2011-03-20 15:17:43.000000000 +0100
+++ gdb-7.2.50.20110117/gdb/testsuite/lib/gdb.exp 2011-01-17 15:52:06.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/lib/gdb.exp 2011-03-20 15:19:52.000000000 +0100
@@ -1395,6 +1395,16 @@ proc default_gdb_start { } { @@ -1397,6 +1397,16 @@ proc default_gdb_start { } {
warning "Couldn't set the width to 0." warning "Couldn't set the width to 0."
} }
} }
@ -950,10 +950,10 @@ Index: gdb-7.2.50.20110117/gdb/testsuite/lib/gdb.exp
return 0; return 0;
} }
Index: gdb-7.2.50.20110117/gdb/testsuite/lib/mi-support.exp Index: gdb-7.2.50.20110320/gdb/testsuite/lib/mi-support.exp
=================================================================== ===================================================================
--- gdb-7.2.50.20110117.orig/gdb/testsuite/lib/mi-support.exp 2011-01-01 16:33:52.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/testsuite/lib/mi-support.exp 2011-03-07 17:03:04.000000000 +0100
+++ gdb-7.2.50.20110117/gdb/testsuite/lib/mi-support.exp 2011-01-17 15:52:06.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/lib/mi-support.exp 2011-03-20 15:19:52.000000000 +0100
@@ -221,6 +221,16 @@ proc default_mi_gdb_start { args } { @@ -221,6 +221,16 @@ proc default_mi_gdb_start { args } {
} }
} }
@ -971,13 +971,13 @@ Index: gdb-7.2.50.20110117/gdb/testsuite/lib/mi-support.exp
detect_async detect_async
Index: gdb-7.2.50.20110117/gdb/objfiles.h Index: gdb-7.2.50.20110320/gdb/objfiles.h
=================================================================== ===================================================================
--- gdb-7.2.50.20110117.orig/gdb/objfiles.h 2011-01-10 21:38:49.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/objfiles.h 2011-03-07 17:17:29.000000000 +0100
+++ gdb-7.2.50.20110117/gdb/objfiles.h 2011-01-17 15:52:26.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/objfiles.h 2011-03-20 15:20:29.000000000 +0100
@@ -434,6 +434,10 @@ struct objfile @@ -441,6 +441,10 @@ struct objfile
#define OBJF_USERLOADED (1 << 3) /* User loaded */ #define OBJF_PSYMTABS_READ (1 << 4)
+/* This file was loaded according to the BUILD_ID_CORE_LOADS rules. */ +/* This file was loaded according to the BUILD_ID_CORE_LOADS rules. */
+ +

View File

@ -3,11 +3,11 @@
Port to GDB-6.8pre. Port to GDB-6.8pre.
Remove the `[' character from the GDB-6.8 default message. Remove the `[' character from the GDB-6.8 default message.
Index: gdb-7.0.50.20100115/gdb/linux-nat.c Index: gdb-7.2.50.20110320/gdb/linux-nat.c
=================================================================== ===================================================================
--- gdb-7.0.50.20100115.orig/gdb/linux-nat.c 2010-01-15 03:22:31.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/linux-nat.c 2011-03-20 16:59:51.000000000 +0100
+++ gdb-7.0.50.20100115/gdb/linux-nat.c 2010-01-15 03:23:28.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/linux-nat.c 2011-03-20 16:59:51.000000000 +0100
@@ -724,7 +724,7 @@ holding the child stopped. Try \"set de @@ -716,7 +716,7 @@ holding the child stopped. Try \"set de
remove_breakpoints_pid (GET_PID (inferior_ptid)); remove_breakpoints_pid (GET_PID (inferior_ptid));
} }
@ -16,10 +16,10 @@ Index: gdb-7.0.50.20100115/gdb/linux-nat.c
{ {
target_terminal_ours (); target_terminal_ours ();
fprintf_filtered (gdb_stdlog, fprintf_filtered (gdb_stdlog,
Index: gdb-7.0.50.20100115/gdb/testsuite/gdb.base/fork-detach.c Index: gdb-7.2.50.20110320/gdb/testsuite/gdb.base/fork-detach.c
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.0.50.20100115/gdb/testsuite/gdb.base/fork-detach.c 2010-01-15 03:22:52.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/gdb.base/fork-detach.c 2011-03-20 16:59:51.000000000 +0100
@@ -0,0 +1,57 @@ @@ -0,0 +1,57 @@
+/* This testcase is part of GDB, the GNU debugger. +/* This testcase is part of GDB, the GNU debugger.
+ +
@ -78,10 +78,10 @@ Index: gdb-7.0.50.20100115/gdb/testsuite/gdb.base/fork-detach.c
+ } + }
+ return 0; + return 0;
+} +}
Index: gdb-7.0.50.20100115/gdb/testsuite/gdb.base/fork-detach.exp Index: gdb-7.2.50.20110320/gdb/testsuite/gdb.base/fork-detach.exp
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.0.50.20100115/gdb/testsuite/gdb.base/fork-detach.exp 2010-01-15 03:22:52.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/testsuite/gdb.base/fork-detach.exp 2011-03-20 17:12:22.000000000 +0100
@@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
+# Copyright 2007 Free Software Foundation, Inc. +# Copyright 2007 Free Software Foundation, Inc.
+ +
@ -117,5 +117,5 @@ Index: gdb-7.0.50.20100115/gdb/testsuite/gdb.base/fork-detach.exp
+gdb_run_cmd +gdb_run_cmd
+# `Starting program: .*' prefix is available since gdb-6.7. +# `Starting program: .*' prefix is available since gdb-6.7.
+gdb_test "" \ +gdb_test "" \
+ "Detaching after fork from child process.*Program exited normally\\..*" \ + "Detaching after fork from child process.*\\\[Inferior .* exited normally\\\]" \
+ "Info message caught" + "Info message caught"

View File

@ -1,8 +1,8 @@
Index: gdb-7.1.90.20100711/bfd/elf-bfd.h Index: gdb-7.2.50.20110320/bfd/elf-bfd.h
=================================================================== ===================================================================
--- gdb-7.1.90.20100711.orig/bfd/elf-bfd.h 2010-06-27 06:07:51.000000000 +0200 --- gdb-7.2.50.20110320.orig/bfd/elf-bfd.h 2011-03-20 15:17:42.000000000 +0100
+++ gdb-7.1.90.20100711/bfd/elf-bfd.h 2010-07-12 23:00:04.000000000 +0200 +++ gdb-7.2.50.20110320/bfd/elf-bfd.h 2011-03-20 15:24:02.000000000 +0100
@@ -2171,8 +2171,10 @@ extern Elf_Internal_Phdr * _bfd_elf_find @@ -2193,8 +2193,10 @@ extern Elf_Internal_Phdr * _bfd_elf_find
/* Exported interface for writing elf corefile notes. */ /* Exported interface for writing elf corefile notes. */
extern char *elfcore_write_note extern char *elfcore_write_note
(bfd *, char *, int *, const char *, int, const void *, int); (bfd *, char *, int *, const char *, int, const void *, int);
@ -14,11 +14,11 @@ Index: gdb-7.1.90.20100711/bfd/elf-bfd.h
extern char *elfcore_write_prstatus extern char *elfcore_write_prstatus
(bfd *, char *, int *, long, int, const void *); (bfd *, char *, int *, long, int, const void *);
extern char * elfcore_write_pstatus extern char * elfcore_write_pstatus
Index: gdb-7.1.90.20100711/bfd/elf.c Index: gdb-7.2.50.20110320/bfd/elf.c
=================================================================== ===================================================================
--- gdb-7.1.90.20100711.orig/bfd/elf.c 2010-05-18 05:31:05.000000000 +0200 --- gdb-7.2.50.20110320.orig/bfd/elf.c 2011-03-20 15:17:42.000000000 +0100
+++ gdb-7.1.90.20100711/bfd/elf.c 2010-07-12 22:51:17.000000000 +0200 +++ gdb-7.2.50.20110320/bfd/elf.c 2011-03-20 15:24:02.000000000 +0100
@@ -8582,13 +8582,12 @@ elfcore_write_note (bfd *abfd, @@ -8814,13 +8814,12 @@ elfcore_write_note (bfd *abfd,
return buf; return buf;
} }
@ -34,7 +34,7 @@ Index: gdb-7.1.90.20100711/bfd/elf.c
{ {
const char *note_name = "CORE"; const char *note_name = "CORE";
const struct elf_backend_data *bed = get_elf_backend_data (abfd); const struct elf_backend_data *bed = get_elf_backend_data (abfd);
@@ -8596,48 +8595,55 @@ elfcore_write_prpsinfo (bfd *abfd, @@ -8828,48 +8827,55 @@ elfcore_write_prpsinfo (bfd *abfd,
if (bed->elf_backend_write_core_note != NULL) if (bed->elf_backend_write_core_note != NULL)
{ {
char *ret; char *ret;
@ -109,11 +109,11 @@ Index: gdb-7.1.90.20100711/bfd/elf.c
#if defined (HAVE_PRSTATUS_T) #if defined (HAVE_PRSTATUS_T)
char * char *
Index: gdb-7.1.90.20100711/gdb/linux-nat.c Index: gdb-7.2.50.20110320/gdb/linux-nat.c
=================================================================== ===================================================================
--- gdb-7.1.90.20100711.orig/gdb/linux-nat.c 2010-07-12 23:05:22.000000000 +0200 --- gdb-7.2.50.20110320.orig/gdb/linux-nat.c 2011-03-20 15:17:46.000000000 +0100
+++ gdb-7.1.90.20100711/gdb/linux-nat.c 2010-07-12 22:57:34.000000000 +0200 +++ gdb-7.2.50.20110320/gdb/linux-nat.c 2011-03-20 15:25:36.000000000 +0100
@@ -4466,6 +4466,131 @@ linux_spu_make_corefile_notes (bfd *obfd @@ -4603,6 +4603,131 @@ linux_spu_make_corefile_notes (bfd *obfd
return args.note_data; return args.note_data;
} }
@ -245,11 +245,11 @@ Index: gdb-7.1.90.20100711/gdb/linux-nat.c
/* Fills the "to_make_corefile_note" target vector. Builds the note /* Fills the "to_make_corefile_note" target vector. Builds the note
section for a corefile, and returns it in a malloc buffer. */ section for a corefile, and returns it in a malloc buffer. */
@@ -4484,26 +4609,11 @@ linux_nat_make_corefile_notes (bfd *obfd @@ -4621,26 +4746,11 @@ linux_nat_make_corefile_notes (bfd *obfd
if (get_exec_file (0)) if (get_exec_file (0))
{ {
- strncpy (fname, strrchr (get_exec_file (0), '/') + 1, sizeof (fname)); - strncpy (fname, lbasename (get_exec_file (0)), sizeof (fname));
- strncpy (psargs, get_exec_file (0), sizeof (psargs)); - strncpy (psargs, get_exec_file (0), sizeof (psargs));
- if (get_inferior_args ()) - if (get_inferior_args ())
- { - {
@ -275,11 +275,11 @@ Index: gdb-7.1.90.20100711/gdb/linux-nat.c
} }
/* Dump information for threads. */ /* Dump information for threads. */
Index: gdb-7.1.90.20100711/gdb/procfs.c Index: gdb-7.2.50.20110320/gdb/procfs.c
=================================================================== ===================================================================
--- gdb-7.1.90.20100711.orig/gdb/procfs.c 2010-07-07 18:15:16.000000000 +0200 --- gdb-7.2.50.20110320.orig/gdb/procfs.c 2011-03-09 13:48:55.000000000 +0100
+++ gdb-7.1.90.20100711/gdb/procfs.c 2010-07-12 23:05:23.000000000 +0200 +++ gdb-7.2.50.20110320/gdb/procfs.c 2011-03-20 15:24:02.000000000 +0100
@@ -5770,6 +5770,7 @@ procfs_make_note_section (bfd *obfd, int @@ -5752,6 +5752,7 @@ procfs_make_note_section (bfd *obfd, int
note_data = (char *) elfcore_write_prpsinfo (obfd, note_data = (char *) elfcore_write_prpsinfo (obfd,
note_data, note_data,
note_size, note_size,

View File

@ -170,4 +170,4 @@ diff -up -u -X /root/jkratoch/.diffi.list -rup gdb-6.8/gdb/testsuite/gdb.threads
+gdb_run_cmd ${binfile_nothreads} ${binfile_threads} 0 +gdb_run_cmd ${binfile_nothreads} ${binfile_threads} 0
gdb_test_multiple {} "Program exited" { gdb_test_multiple {} "Program exited" {
-re "\r\nProgram exited normally.\r\n$gdb_prompt $" { -re "\r\n\\\[Inferior .* exited normally\\\]\r\n$gdb_prompt $" {

View File

@ -0,0 +1,49 @@
http://sourceware.org/ml/gdb-patches/2011-03/msg00946.html
Subject: [patch] ada: Fix rashes on gdbarch garbage
Hi Joel,
for gdb.ada/str_ref_cmp.exp on x86_64-fedora15-linux-gnu it turns:
(gdb) print String_Var (1 .. 3) = "Hel"
ERROR: Process no longer exists
UNRESOLVED: gdb.ada/str_ref_cmp.exp: print String_Var (1 .. 3) = "Hel"
->
(gdb) print String_Var (1 .. 3) = "Hel"
$1 = false
(gdb) FAIL: gdb.ada/str_ref_cmp.exp: print String_Var (1 .. 3) = "Hel"
GDB crashes the former way without this fix on:
gcc-gnat-4.6.0-0.14.fc15.x86_64
gcc-gnat-4.5.1-4.fc14.x86_64
I cannot test FSF gcc <=4.5 myself as its Ada build errors out for me on:
uintp.adb:242:22: expect type "Hnum" defined at line 91
GDB PASSes on these GNATs even without this fix but that is not the point:
GNAT 4.7.0 20110320 (experimental)
GNAT 4.6.0 20110320 (prerelease)
This is only a suggestion, I do not know much about the ada-* code.
Thanks,
Jan
gdb/
2011-03-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* ada-lang.c (replace_operator_with_call): Copy also GDBARCH.
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -3661,6 +3661,7 @@ replace_operator_with_call (struct expression **expp, int pc, int nargs,
newexp->nelts = exp->nelts + 7 - oplen;
newexp->language_defn = exp->language_defn;
+ newexp->gdbarch = exp->gdbarch;
memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));

View File

@ -1,8 +1,8 @@
Index: gdb-7.2.50.20110222/gdb/breakpoint.c Index: gdb-7.2.50.20110320/gdb/breakpoint.c
=================================================================== ===================================================================
--- gdb-7.2.50.20110222.orig/gdb/breakpoint.c 2011-02-23 00:12:59.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/breakpoint.c 2011-03-20 15:17:42.000000000 +0100
+++ gdb-7.2.50.20110222/gdb/breakpoint.c 2011-02-23 00:13:04.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/breakpoint.c 2011-03-20 15:28:48.000000000 +0100
@@ -10547,6 +10547,50 @@ update_breakpoint_locations (struct brea @@ -10678,6 +10678,50 @@ update_breakpoint_locations (struct brea
update_global_location_list (1); update_global_location_list (1);
} }
@ -53,25 +53,25 @@ Index: gdb-7.2.50.20110222/gdb/breakpoint.c
/* Reset a breakpoint given it's struct breakpoint * BINT. /* Reset a breakpoint given it's struct breakpoint * BINT.
The value we return ends up being the return value from catch_errors. The value we return ends up being the return value from catch_errors.
Unused in this case. */ Unused in this case. */
Index: gdb-7.2.50.20110222/gdb/breakpoint.h Index: gdb-7.2.50.20110320/gdb/breakpoint.h
=================================================================== ===================================================================
--- gdb-7.2.50.20110222.orig/gdb/breakpoint.h 2011-02-23 00:12:59.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/breakpoint.h 2011-03-20 15:17:42.000000000 +0100
+++ gdb-7.2.50.20110222/gdb/breakpoint.h 2011-02-23 00:13:16.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/breakpoint.h 2011-03-20 15:29:33.000000000 +0100
@@ -1192,4 +1192,7 @@ extern int user_breakpoint_p (struct bre @@ -1210,4 +1210,7 @@ extern struct breakpoint *iterate_over_b
extern int get_number_or_range (char **pp); extern int user_breakpoint_p (struct breakpoint *);
+extern void breakpoints_relocate (struct objfile *objfile, +extern void breakpoints_relocate (struct objfile *objfile,
+ struct section_offsets *delta); + struct section_offsets *delta);
+ +
#endif /* !defined (BREAKPOINT_H) */ #endif /* !defined (BREAKPOINT_H) */
Index: gdb-7.2.50.20110222/gdb/objfiles.c Index: gdb-7.2.50.20110320/gdb/objfiles.c
=================================================================== ===================================================================
--- gdb-7.2.50.20110222.orig/gdb/objfiles.c 2011-01-10 21:38:49.000000000 +0100 --- gdb-7.2.50.20110320.orig/gdb/objfiles.c 2011-03-20 15:17:42.000000000 +0100
+++ gdb-7.2.50.20110222/gdb/objfiles.c 2011-02-23 00:13:04.000000000 +0100 +++ gdb-7.2.50.20110320/gdb/objfiles.c 2011-03-20 15:29:05.000000000 +0100
@@ -846,6 +846,11 @@ objfile_relocate1 (struct objfile *objfi @@ -851,6 +851,11 @@ objfile_relocate1 (struct objfile *objfi
obj_section_addr (s)); objfile->sf->sym_probe_fns->sym_relocate_probe (objfile,
} new_offsets, delta);
+ /* Final call of breakpoint_re_set can keep breakpoint locations disabled if + /* Final call of breakpoint_re_set can keep breakpoint locations disabled if
+ their addresses match. */ + their addresses match. */

File diff suppressed because it is too large Load Diff

View File

@ -1,619 +0,0 @@
http://sourceware.org/ml/gdb-patches/2010-12/msg00263.html
Index: gdb-7.2.50.20110206/gdb/cp-support.c
===================================================================
--- gdb-7.2.50.20110206.orig/gdb/cp-support.c 2011-02-06 23:12:16.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/cp-support.c 2011-02-06 23:12:22.000000000 +0100
@@ -35,6 +35,7 @@
#include "exceptions.h"
#include "expression.h"
#include "value.h"
+#include "language.h"
#include "safe-ctype.h"
@@ -936,7 +937,8 @@ make_symbol_overload_list_qualified (con
ALL_OBJFILES (objfile)
{
if (objfile->sf)
- objfile->sf->qf->expand_symtabs_for_function (objfile, func_name);
+ objfile->sf->qf->expand_symtabs_for_function (objfile, func_name,
+ language_cplus);
}
/* Search upwards from currently selected frame (so that we can
Index: gdb-7.2.50.20110206/gdb/dwarf2read.c
===================================================================
--- gdb-7.2.50.20110206.orig/gdb/dwarf2read.c 2011-02-06 23:12:22.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/dwarf2read.c 2011-02-06 23:12:22.000000000 +0100
@@ -2373,7 +2373,8 @@ dw2_lookup_symtab (struct objfile *objfi
static struct symtab *
dw2_lookup_symbol (struct objfile *objfile, int block_index,
- const char *name, domain_enum domain)
+ const char *name, domain_enum domain,
+ enum language language)
{
/* We do all the work in the pre_expand_symtabs_matching hook
instead. */
@@ -2449,7 +2450,8 @@ dw2_relocate (struct objfile *objfile, s
static void
dw2_expand_symtabs_for_function (struct objfile *objfile,
- const char *func_name)
+ const char *func_name,
+ enum language language)
{
dw2_do_expand_symtabs_matching (objfile, func_name);
}
@@ -2509,7 +2511,8 @@ dw2_expand_symtabs_with_filename (struct
}
static const char *
-dw2_find_symbol_file (struct objfile *objfile, const char *name)
+dw2_find_symbol_file (struct objfile *objfile, const char *name,
+ enum language language)
{
struct dwarf2_per_cu_data *per_cu;
offset_type *vec;
Index: gdb-7.2.50.20110206/gdb/linespec.c
===================================================================
--- gdb-7.2.50.20110206.orig/gdb/linespec.c 2011-02-06 23:12:16.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/linespec.c 2011-02-06 23:12:26.000000000 +0100
@@ -1226,7 +1226,7 @@ decode_objc (char **argptr, int funfirst
static struct symtabs_and_lines
decode_compound (char **argptr, int funfirstline, char ***canonical,
- char *saved_arg, char *p, int *not_found_ptr)
+ char *the_real_saved_arg, char *p, int *not_found_ptr)
{
struct symtabs_and_lines values;
char *p2;
@@ -1237,7 +1237,23 @@ decode_compound (char **argptr, int funf
struct symbol *sym_class;
struct type *t;
char *saved_java_argptr = NULL;
+ char *saved_arg;
+ /* THE_REAL_SAVED_ARG cannot be altered, so make a copy that can be. */
+ saved_arg = alloca (strlen (the_real_saved_arg) + 1);
+ strcpy (saved_arg, the_real_saved_arg);
+
+ /* If the user specified "'foo::bar(baz)'" (note the quotes -- often
+ added to workaround completer issues) -- saved_arg will be
+ encapsulated in single-quotes. They are superfluous, so just strip
+ them off. */
+ if (*saved_arg == '\'')
+ {
+ char *end = skip_quoted (saved_arg);
+ memmove (saved_arg, saved_arg + 1, end - saved_arg);
+ memmove (end - 2, end, strlen (saved_arg) + 1);
+ }
+
/* First check for "global" namespace specification, of the form
"::foo". If found, skip over the colons and jump to normal
symbol processing. I.e. the whole line specification starts with
@@ -1489,7 +1505,7 @@ decode_compound (char **argptr, int funf
up. The quotes are important if copy is empty. */
if (not_found_ptr)
*not_found_ptr = 1;
- cplusplus_error (saved_arg,
+ cplusplus_error (the_real_saved_arg,
"Can't find member of namespace, "
"class, struct, or union named \"%s\"\n",
copy);
Index: gdb-7.2.50.20110206/gdb/psymtab.c
===================================================================
--- gdb-7.2.50.20110206.orig/gdb/psymtab.c 2011-02-06 23:12:16.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/psymtab.c 2011-02-06 23:12:54.000000000 +0100
@@ -33,6 +33,8 @@
#include "readline/readline.h"
#include "gdb_regex.h"
#include "dictionary.h"
+#include "language.h"
+#include "cp-support.h"
#ifndef DEV_TTY
#define DEV_TTY "/dev/tty"
@@ -55,7 +57,8 @@ static struct partial_symbol *match_part
static struct partial_symbol *lookup_partial_symbol (struct partial_symtab *,
const char *, int,
- domain_enum);
+ domain_enum,
+ enum language);
static char *psymtab_to_fullname (struct partial_symtab *ps);
@@ -418,15 +421,35 @@ fixup_psymbol_section (struct partial_sy
static struct symtab *
lookup_symbol_aux_psymtabs (struct objfile *objfile,
int block_index, const char *name,
- const domain_enum domain)
+ const domain_enum domain, enum language language)
{
struct partial_symtab *ps;
const int psymtab_index = (block_index == GLOBAL_BLOCK ? 1 : 0);
ALL_OBJFILE_PSYMTABS (objfile, ps)
{
- if (!ps->readin && lookup_partial_symbol (ps, name, psymtab_index, domain))
- return PSYMTAB_TO_SYMTAB (ps);
+ if (!ps->readin
+ && lookup_partial_symbol (ps, name, psymtab_index, domain, language))
+ {
+ struct symbol *sym;
+ struct symtab *stab = PSYMTAB_TO_SYMTAB (ps);
+ sym = NULL;
+
+ /* Some caution must be observed with overloaded functions
+ and methods, since the psymtab will not contain any overload
+ information (but NAME might contain it). */
+ if (stab->primary)
+ {
+ struct blockvector *bv = BLOCKVECTOR (stab);
+ struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
+ sym = lookup_block_symbol (block, name, domain);
+ }
+
+ if (sym && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
+ return stab;
+
+ /* Keep looking through other psymtabs. */
+ }
}
return NULL;
@@ -519,22 +542,58 @@ pre_expand_symtabs_matching_psymtabs (st
/* Nothing. */
}
+/* Returns the name used to search psymtabs. Unlike symtabs, psymtabs do
+ not contain any method/function instance information (since this would
+ force reading type information while reading psymtabs). Therefore,
+ if NAME contains overload information, it must be stripped before searching
+ psymtabs.
+
+ The caller is responsible for freeing the return result. */
+
+static const char *
+psymtab_search_name (const char *name, enum language language)
+{
+ switch (language)
+ {
+ case language_cplus:
+ case language_java:
+ {
+ if (strchr (name, '('))
+ {
+ char *ret = cp_remove_params (name);
+ if (ret)
+ return ret;
+ }
+ }
+
+ default:
+ break;
+ }
+
+ return xstrdup (name);
+}
+
/* Look, in partial_symtab PST, for symbol whose natural name is NAME.
Check the global symbols if GLOBAL, the static symbols if not. */
static struct partial_symbol *
lookup_partial_symbol (struct partial_symtab *pst, const char *name,
- int global, domain_enum domain)
+ int global, domain_enum domain, enum language language)
{
struct partial_symbol **start, **psym;
struct partial_symbol **top, **real_top, **bottom, **center;
int length = (global ? pst->n_global_syms : pst->n_static_syms);
int do_linear_search = 1;
+ const char *search_name;
+ struct cleanup *cleanup;
if (length == 0)
{
return (NULL);
}
+
+ search_name = psymtab_search_name (name, language);
+ cleanup = make_cleanup (xfree, (void *) search_name);
start = (global ?
pst->objfile->global_psymbols.list + pst->globals_offset :
pst->objfile->static_psymbols.list + pst->statics_offset);
@@ -563,7 +622,8 @@ lookup_partial_symbol (struct partial_sy
{
do_linear_search = 1;
}
- if (strcmp_iw_ordered (SYMBOL_SEARCH_NAME (*center), name) >= 0)
+ if (strcmp_iw_ordered (SYMBOL_SEARCH_NAME (*center),
+ search_name) >= 0)
{
top = center;
}
@@ -577,11 +637,14 @@ lookup_partial_symbol (struct partial_sy
_("failed internal consistency check"));
while (top <= real_top
- && SYMBOL_MATCHES_SEARCH_NAME (*top, name))
+ && SYMBOL_MATCHES_SEARCH_NAME (*top, search_name))
{
if (symbol_matches_domain (SYMBOL_LANGUAGE (*top),
SYMBOL_DOMAIN (*top), domain))
- return (*top);
+ {
+ do_cleanups (cleanup);
+ return (*top);
+ }
top++;
}
}
@@ -595,11 +658,15 @@ lookup_partial_symbol (struct partial_sy
{
if (symbol_matches_domain (SYMBOL_LANGUAGE (*psym),
SYMBOL_DOMAIN (*psym), domain)
- && SYMBOL_MATCHES_SEARCH_NAME (*psym, name))
- return (*psym);
+ && SYMBOL_MATCHES_SEARCH_NAME (*psym, search_name))
+ {
+ do_cleanups (cleanup);
+ return (*psym);
+ }
}
}
+ do_cleanups (cleanup);
return (NULL);
}
@@ -911,7 +978,8 @@ dump_psymtabs_for_objfile (struct objfil
by matching FUNC_NAME. Make sure we read that symbol table in. */
static void
-read_symtabs_for_function (struct objfile *objfile, const char *func_name)
+read_symtabs_for_function (struct objfile *objfile, const char *func_name,
+ enum language language)
{
struct partial_symtab *ps;
@@ -920,9 +988,9 @@ read_symtabs_for_function (struct objfil
if (ps->readin)
continue;
- if ((lookup_partial_symbol (ps, func_name, 1, VAR_DOMAIN)
+ if ((lookup_partial_symbol (ps, func_name, 1, VAR_DOMAIN, language)
!= NULL)
- || (lookup_partial_symbol (ps, func_name, 0, VAR_DOMAIN)
+ || (lookup_partial_symbol (ps, func_name, 0, VAR_DOMAIN, language)
!= NULL))
psymtab_to_symtab (ps);
}
@@ -1042,13 +1110,14 @@ psymtab_to_fullname (struct partial_symt
}
static const char *
-find_symbol_file_from_partial (struct objfile *objfile, const char *name)
+find_symbol_file_from_partial (struct objfile *objfile, const char *name,
+ enum language language)
{
struct partial_symtab *pst;
ALL_OBJFILE_PSYMTABS (objfile, pst)
{
- if (lookup_partial_symbol (pst, name, 1, VAR_DOMAIN))
+ if (lookup_partial_symbol (pst, name, 1, VAR_DOMAIN, language))
return pst->filename;
}
return NULL;
Index: gdb-7.2.50.20110206/gdb/symfile.h
===================================================================
--- gdb-7.2.50.20110206.orig/gdb/symfile.h 2011-02-06 23:12:16.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/symfile.h 2011-02-06 23:12:22.000000000 +0100
@@ -167,14 +167,15 @@ struct quick_symbol_functions
/* Check to see if the symbol is defined in a "partial" symbol table
of OBJFILE. KIND should be either GLOBAL_BLOCK or STATIC_BLOCK,
depending on whether we want to search global symbols or static
- symbols. NAME is the name of the symbol to look for. DOMAIN
- indicates what sort of symbol to search for.
+ symbols. NAME (valid in LANGUAGE) is the name of the symbol to look for.
+ DOMAIN indicates what sort of symbol to search for.
Returns the newly-expanded symbol table in which the symbol is
defined, or NULL if no such symbol table exists. */
struct symtab *(*lookup_symbol) (struct objfile *objfile,
int kind, const char *name,
- domain_enum domain);
+ domain_enum domain,
+ enum language language);
/* This is called to expand symbol tables before looking up a
symbol. A backend can choose to implement this and then have its
@@ -200,10 +201,11 @@ struct quick_symbol_functions
struct section_offsets *new_offsets,
struct section_offsets *delta);
- /* Find all the symbols in OBJFILE named FUNC_NAME, and ensure that
- the corresponding symbol tables are loaded. */
+ /* Find all the symbols in OBJFILE named FUNC_NAME (valid in LANGUAGE),
+ and ensure that the corresponding symbol tables are loaded. */
void (*expand_symtabs_for_function) (struct objfile *objfile,
- const char *func_name);
+ const char *func_name,
+ enum language language);
/* Read all symbol tables associated with OBJFILE. */
void (*expand_all_symtabs) (struct objfile *objfile);
@@ -217,8 +219,10 @@ struct quick_symbol_functions
const char *filename);
/* Return the file name of the file holding the symbol in OBJFILE
- named NAME. If no such symbol exists in OBJFILE, return NULL. */
- const char *(*find_symbol_file) (struct objfile *objfile, const char *name);
+ named NAME (valid in LANGUAGE). If no such symbol exists in OBJFILE,
+ return NULL. */
+ const char *(*find_symbol_file) (struct objfile *objfile, const char *name,
+ enum language language);
/* Find global or static symbols in all tables that are in NAMESPACE
and for which MATCH (symbol name, NAME) == 0, passing each to
Index: gdb-7.2.50.20110206/gdb/symtab.c
===================================================================
--- gdb-7.2.50.20110206.orig/gdb/symtab.c 2011-02-06 23:12:16.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/symtab.c 2011-02-06 23:12:22.000000000 +0100
@@ -1380,7 +1380,8 @@ lookup_symbol_aux_quick (struct objfile
if (!objfile->sf)
return NULL;
- symtab = objfile->sf->qf->lookup_symbol (objfile, kind, name, domain);
+ symtab = objfile->sf->qf->lookup_symbol (objfile, kind, name, domain,
+ current_language->la_language);
if (!symtab)
return NULL;
@@ -1554,7 +1555,8 @@ basic_lookup_transparent_type_quick (str
if (!objfile->sf)
return NULL;
- symtab = objfile->sf->qf->lookup_symbol (objfile, kind, name, STRUCT_DOMAIN);
+ symtab = objfile->sf->qf->lookup_symbol (objfile, kind, name, STRUCT_DOMAIN,
+ current_language->la_language);
if (!symtab)
return NULL;
@@ -1686,7 +1688,8 @@ find_main_filename (void)
if (!objfile->sf)
continue;
- result = objfile->sf->qf->find_symbol_file (objfile, name);
+ result = objfile->sf->qf->find_symbol_file (objfile, name,
+ current_language->la_language);
if (result)
return result;
}
Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr11734-1.cc
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr11734-1.cc 2011-02-06 23:12:22.000000000 +0100
@@ -0,0 +1,30 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2010 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@gnu.org */
+
+#include "pr11734.h"
+
+int
+main ()
+{
+ pr11734 *p = new pr11734;
+ p->foo ();
+ return 0;
+}
+
Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr11734-2.cc
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr11734-2.cc 2011-02-06 23:12:22.000000000 +0100
@@ -0,0 +1,27 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2010 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@gnu.org */
+
+#include "pr11734.h"
+
+void
+pr11734::foo(void)
+{
+}
+
Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr11734-3.cc
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr11734-3.cc 2011-02-06 23:12:22.000000000 +0100
@@ -0,0 +1,27 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2010 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@gnu.org */
+
+#include "pr11734.h"
+
+void
+pr11734::foo (int a)
+{
+}
+
Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr11734-4.cc
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr11734-4.cc 2011-02-06 23:12:22.000000000 +0100
@@ -0,0 +1,27 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2010 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@gnu.org */
+
+#include "pr11734.h"
+
+void
+pr11734::foo (char *a)
+{
+}
+
Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr11734.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr11734.exp 2011-02-06 23:12:22.000000000 +0100
@@ -0,0 +1,55 @@
+# Copyright 2010 Free Software Foundation, Inc.
+#
+# Contributed by Red Hat, originally written by Keith Seitz.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+if { [skip_cplus_tests] } { continue }
+
+set testfile "pr11734"
+set class $testfile
+
+set srcfiles {}
+for {set i 1} {$i < 5} {incr i} {
+ lappend srcfiles $testfile-$i.cc
+}
+
+prepare_for_testing pr11734 $testfile $srcfiles {c++ debug}
+
+if {![runto_main]} {
+ perror "couldn't run to breakpoint"
+ continue
+}
+
+# An array holding the overload types for the method pr11734::foo. The
+# first element is the overloaded method parameter. The second element
+# is the expected source file number, e.g. "pr11734-?.cc".
+array set tests {
+ "char*" 4
+ "int" 3
+ "" 2
+}
+
+# Test each overload instance twice: once quoted, once unquoted
+foreach ovld [array names tests] {
+ set method "${class}::foo\($ovld\)"
+ set result "Breakpoint (\[0-9\]).*file .*/$class-$tests($ovld).*"
+ gdb_test "break $method" $result
+ gdb_test "break '$method'" $result
+}
+
+gdb_exit
+return 0
Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr11734.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr11734.h 2011-02-06 23:12:22.000000000 +0100
@@ -0,0 +1,28 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2010 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@gnu.org */
+
+class pr11734
+{
+ public:
+ void foo ();
+ void foo (int);
+ void foo (char *);
+};
+

View File

@ -1,18 +0,0 @@
http://sourceware.org/ml/gdb-patches/2011-01/msg00460.html
Index: gdb-7.2/gdb/linespec.c
===================================================================
--- gdb-7.2.orig/gdb/linespec.c 2011-02-03 22:59:46.000000000 +0100
+++ gdb-7.2/gdb/linespec.c 2011-02-03 23:03:28.000000000 +0100
@@ -1230,7 +1230,10 @@ decode_compound (char **argptr, int funf
{
char *end = skip_quoted (saved_arg);
memmove (saved_arg, saved_arg + 1, end - saved_arg);
- memmove (end - 2, end, strlen (saved_arg) + 1);
+ if (&end[-2] >= saved_arg && end[-2] == '\'')
+ memmove (end - 2, end, strlen (end) + 1);
+ else
+ memmove (end - 1, end, strlen (end) + 1);
}
/* First check for "global" namespace specification, of the form

View File

@ -1,207 +0,0 @@
http://sourceware.org/ml/gdb-patches/2010-12/msg00264.html
Index: gdb-7.2.50.20110206/gdb/linespec.c
===================================================================
--- gdb-7.2.50.20110206.orig/gdb/linespec.c 2011-02-06 23:06:26.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/linespec.c 2011-02-06 23:08:23.000000000 +0100
@@ -1057,6 +1057,10 @@ locate_first_half (char **argptr, int *i
error (_("malformed template specification in command"));
p = temp_end;
}
+
+ if (p[0] == '(')
+ p = find_method_overload_end (p);
+
/* Check for a colon and a plus or minus and a [ (which
indicates an Objective-C method). */
if (is_objc_method_format (p))
@@ -1272,8 +1276,10 @@ decode_compound (char **argptr, int funf
find_method.
2) AAA::inA isn't the name of a class. In that case, either the
- user made a typo or AAA::inA is the name of a namespace.
- Either way, we just look up AAA::inA::fun with lookup_symbol.
+ user made a typo, AAA::inA is the name of a namespace, or it is
+ the name of a minimal symbol.
+ We just look up AAA::inA::fun with lookup_symbol. If that fails,
+ try lookup_minimal_symbol.
Thus, our first task is to find everything before the last set of
double-colons and figure out if it's the name of a class. So we
@@ -1294,6 +1300,8 @@ decode_compound (char **argptr, int funf
while (1)
{
+ static char *break_characters = " \t\'(";
+
/* Move pointer up to next possible class/namespace token. */
p = p2 + 1; /* Restart with old value +1. */
@@ -1304,8 +1312,7 @@ decode_compound (char **argptr, int funf
/* PASS2: p2->"::fun", p->":fun" */
/* Move pointer ahead to next double-colon. */
- while (*p && (p[0] != ' ') && (p[0] != '\t') && (p[0] != '\'')
- && (*p != '('))
+ while (*p && strchr (break_characters, *p) == NULL)
{
if (current_language->la_language == language_cplus)
p += cp_validate_operator (p);
@@ -1329,9 +1336,12 @@ decode_compound (char **argptr, int funf
else if ((p[0] == ':') && (p[1] == ':'))
break; /* Found double-colon. */
else
- /* PASS2: We'll keep getting here, until p->"", at which point
- we exit this loop. */
- p++;
+ {
+ /* PASS2: We'll keep getting here, until P points to one of the
+ break characters, at which point we exit this loop. */
+ if (strchr (break_characters, *p) == NULL)
+ p++;
+ }
}
if (*p != ':')
@@ -1340,7 +1350,7 @@ decode_compound (char **argptr, int funf
unsuccessfully all the components of the
string, and p->""(PASS2). */
- /* We get here if p points to ' ', '\t', '\'', "::" or ""(i.e
+ /* We get here if p points to one of the break characters or ""(i.e
string ended). */
/* Save restart for next time around. */
p2 = p;
@@ -1491,6 +1501,18 @@ decode_compound (char **argptr, int funf
/* We couldn't find a class, so we're in case 2 above. We check the
entire name as a symbol instead. */
+ if (current_language->la_language == language_cplus
+ || current_language->la_language == language_java)
+ {
+ char *paren = strchr (p, '(');
+ if (paren != NULL)
+ p = find_method_overload_end (paren);
+
+ /* Make sure we keep important kewords like "const" */
+ if (strncmp (p, " const", 6) == 0)
+ p += 6;
+ }
+
copy = (char *) alloca (p - saved_arg2 + 1);
memcpy (copy, saved_arg2, p - saved_arg2);
/* Note: if is_quoted should be true, we snuff out quote here
@@ -1503,9 +1525,18 @@ decode_compound (char **argptr, int funf
sym = lookup_symbol (copy, 0, VAR_DOMAIN, 0);
if (sym)
return symbol_found (funfirstline, canonical, copy, sym, NULL);
+ else
+ {
+ struct minimal_symbol *msym;
+
+ /* Couldn't find any interpretation as classes/namespaces. As a last
+ resort, try the minimal symbol tables. */
+ msym = lookup_minimal_symbol (copy, NULL, NULL);
+ if (msym != NULL)
+ return minsym_found (funfirstline, msym);
+ }
- /* Couldn't find any interpretation as classes/namespaces, so give
- up. The quotes are important if copy is empty. */
+ /* Couldn't find a minimal symbol, either, so give up. */
if (not_found_ptr)
*not_found_ptr = 1;
cplusplus_error (the_real_saved_arg,
Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr12273.cc
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr12273.cc 2011-02-06 23:07:19.000000000 +0100
@@ -0,0 +1,37 @@
+/* This test case is part of GDB, the GNU debugger.
+
+ Copyright 2010 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+template <typename T>
+class GDB
+{
+ public:
+ static int simple (void) { return 0; }
+ static int harder (T a) { return 1; }
+ template <typename X>
+ static X even_harder (T a) { return static_cast<X> (a); }
+ int operator == (GDB const& other)
+ { return 1; }
+};
+
+int main(int argc, char **argv)
+{
+ GDB<int> a, b;
+ if (a == b)
+ return GDB<char>::harder('a') + GDB<int>::harder(3)
+ + GDB<char>::even_harder<int> ('a');
+ return GDB<int>::simple ();
+}
Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr12273.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20110206/gdb/testsuite/gdb.cp/pr12273.exp 2011-02-06 23:07:19.000000000 +0100
@@ -0,0 +1,46 @@
+# Copyright 2010 Free Software Foundation, Inc.
+#
+# Contributed by Red Hat, originally written by Keith Seitz.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+if {[skip_cplus_tests]} { continue }
+
+set testfile "pr12273"
+# Do NOT compile with debug flag.
+prepare_for_testing pr12273 $testfile $testfile.cc {c++}
+
+gdb_test_no_output "set language c++"
+
+# A list of minimal symbol names to check.
+# Note that GDB<char>::even_harder<int>(char) is quoted and includes
+# the return type. This is necessary because this is the demangled name
+# of the minimal symbol.
+set min_syms [list \
+ "GDB<int>::operator ==" \
+ "GDB<int>::operator==(GDB<int> const&)" \
+ "GDB<char>::harder(char)" \
+ "GDB<int>::harder(int)" \
+ {"int GDB<char>::even_harder<int>(char)"} \
+ "GDB<int>::simple()"]
+
+foreach sym $min_syms {
+ if {[gdb_breakpoint $sym]} {
+ pass "setting breakpoint at $sym"
+ }
+}
+
+gdb_exit

View File

@ -1,153 +0,0 @@
http://sourceware.org/ml/archer/2011-q1/msg00024.html
Subject: [patch] Fix RH BZ 672235
Bug:
http://bugzilla.redhat.com/show_bug.cgi?id=672235
The latter half of this bug was caused by removing the value function
from gdb.Symbol. This happened quite some time ago, so I am a little
surprised it took this long to surface.
The old Symbol.value function never returned anything except a gdb.Block
if the symbol happened to represent a function a block. Anything else
raised an error. Way back when, I removed this function as it was an
obvious stub, and it was superseded by frame.read_var() which is a more
accurate method of determining the value of a symbol.
Wind forward to today, and it turns out one of the unported
archer-tromey-python scripts we ship in Fedora relies on this (symbol ->
block) API. I thought about ways of trying to fix this. I thought about
just changing FrameWrapper to just take a block instead of a symbol
representing a function. But FrameWrapper has an API that we shipped.
I tried to find the block through the existing API, but that did not
work too well. The gdb.Block method block_for_pc can return a block
from a pc but this just turned out to be expensive and convoluted. I
eventually just elected to add a block() function to gdb.Symbol which,
if the symbol represented a method or a function, would return the block.
Yet I am still not entirely satisfied. It seems weird to ask the user
to retrieve symbol value from frame.read_var for most symbols, but in
the case of a function or method, use block(). I tried to use read_var
for this, but it returns a gdb.Value, and I could not figure out a way to
transform a gdb.Value to a gdb.Block.
Before I submit this for upstream review I'd like to see if anyone has
any comments.
Cheers
Phil
--
Index: gdb-7.2.50.20110305/gdb/doc/gdb.texinfo
===================================================================
--- gdb-7.2.50.20110305.orig/gdb/doc/gdb.texinfo 2011-03-05 08:27:09.000000000 +0100
+++ gdb-7.2.50.20110305/gdb/doc/gdb.texinfo 2011-03-05 08:28:33.000000000 +0100
@@ -22919,6 +22919,13 @@ The result is a @code{gdb.Symbol} object
is not found.
@end defun
+A @code{gdb.Symbol} object has the following methods:
+
+@defmethod Symbol block
+Returns a @code{gdb.Block} object if the symbol is a function or a
+method. @xref{Blocks In Python}.
+@end defmethod
+
A @code{gdb.Symbol} object has the following attributes:
@table @code
Index: gdb-7.2.50.20110305/gdb/python/lib/gdb/FrameWrapper.py
===================================================================
--- gdb-7.2.50.20110305.orig/gdb/python/lib/gdb/FrameWrapper.py 2011-03-05 08:26:12.000000000 +0100
+++ gdb-7.2.50.20110305/gdb/python/lib/gdb/FrameWrapper.py 2011-03-05 08:27:22.000000000 +0100
@@ -46,7 +46,7 @@ class FrameWrapper:
return
first = True
- block = func.value
+ block = func.block ()
for sym in block:
if sym.is_argument:
@@ -60,7 +60,7 @@ class FrameWrapper:
return
first = True
- block = func.value
+ block = func.block ()
for sym in block:
if not sym.is_argument:
Index: gdb-7.2.50.20110305/gdb/python/py-symbol.c
===================================================================
--- gdb-7.2.50.20110305.orig/gdb/python/py-symbol.c 2011-02-26 03:07:09.000000000 +0100
+++ gdb-7.2.50.20110305/gdb/python/py-symbol.c 2011-03-05 08:27:22.000000000 +0100
@@ -167,6 +167,27 @@ sympy_is_variable (PyObject *self, void
|| class == LOC_OPTIMIZED_OUT));
}
+static PyObject *
+sympy_get_block (PyObject *self, PyObject *args)
+{
+ struct symbol *symbol = NULL;
+
+ SYMPY_REQUIRE_VALID (self, symbol);
+
+ if (SYMBOL_CLASS (symbol) == LOC_BLOCK)
+ {
+ struct symtab *symt = SYMBOL_SYMTAB (symbol);
+
+ return block_to_block_object (SYMBOL_BLOCK_VALUE (symbol),
+ symt->objfile);
+ }
+ else
+ PyErr_SetString (PyExc_RuntimeError,
+ _("Symbol is not a block class."));
+
+ return NULL;
+}
+
/* Given a symbol, and a symbol_object that has previously been
allocated and initialized, populate the symbol_object with the
struct symbol data. Also, register the symbol_object life-cycle
@@ -396,6 +417,13 @@ gdbpy_initialize_symbols (void)
+static PyMethodDef symbol_object_methods[] = {
+ { "block", sympy_get_block, METH_NOARGS,
+ "block () -> gdb.Block.\n\
+Return the block of this symbol, if the symbol represents a function." },
+ {NULL} /* Sentinel */
+};
+
static PyGetSetDef symbol_object_getset[] = {
{ "symtab", sympy_get_symtab, NULL,
"Symbol table in which the symbol appears.", NULL },
@@ -449,7 +477,7 @@ PyTypeObject symbol_object_type = {
0, /*tp_weaklistoffset */
0, /*tp_iter */
0, /*tp_iternext */
- 0, /*tp_methods */
+ symbol_object_methods, /*tp_methods */
0, /*tp_members */
symbol_object_getset /*tp_getset */
};
Index: gdb-7.2.50.20110305/gdb/testsuite/gdb.python/py-symbol.exp
===================================================================
--- gdb-7.2.50.20110305.orig/gdb/testsuite/gdb.python/py-symbol.exp 2011-02-22 23:48:12.000000000 +0100
+++ gdb-7.2.50.20110305/gdb/testsuite/gdb.python/py-symbol.exp 2011-03-05 08:27:22.000000000 +0100
@@ -76,6 +76,10 @@ gdb_test "python print func.print_name"
gdb_test "python print func.linkage_name" "func" "Test func.linkage_name"
gdb_test "python print func.addr_class == gdb.SYMBOL_LOC_BLOCK" "True" "Test func.addr_class"
+# Test block() method
+gdb_py_test_silent_cmd "python func = frame.block().function" "Get block" 0
+gdb_test "python print func.block().function.name" "func" "Test block method"
+
gdb_breakpoint [gdb_get_line_number "Break at end."]
gdb_continue_to_breakpoint "Break at end."
gdb_py_test_silent_cmd "python frame = gdb.selected_frame()" "Get Frame" 0

59
gdb-stap-warnings.patch Executable file
View File

@ -0,0 +1,59 @@
http://sourceware.org/ml/archer/2011-q1/msg00136.html
Subject: archer-sergiodj-stap -O2 -Wall warnings=errors
Hi Sergio,
with -O2 (+some -Wall or so options possibly - what applies for Fedora builds)
one gets:
gcc-4.6.0-0.14.fc15.x86_64
stap-probe.c: In function $B!F(Bstap_fetch_reg_value$B!G(B:
stap-probe.c:923:12: error: $B!F(Baop$B!G(B may be used uninitialized in this function [-Werror=uninitialized]
stap-probe.c:919:10: error: $B!F(Bret$B!G(B may be used uninitialized in this function [-Werror=uninitialized]
stap-probe.c: In function $B!F(Bstap_evaluate_conditionally$B!G(B:
stap-probe.c:1184:3: error: $B!F(Bres$B!G(B may be used uninitialized in this function [-Werror=uninitialized]
The attached patch needs a review, I have only briefly checked it is not
completely bogus.
Thanks,
Jan
--- a/gdb/stap-probe.c
+++ b/gdb/stap-probe.c
@@ -780,7 +780,9 @@ stap_fetch_reg_value (struct stap_evaluation_info *eval_info,
#define REG_NAME_MAX_SIZE 20
char regname[REG_NAME_MAX_SIZE + 1];
int len, regnum, indirect_p = 0;
- struct value *ret;
+ /* GCC false warning: $B!F(Bret$B!G(B may be used uninitialized in this function
+ */
+ struct value *ret = NULL;
/* The function which called us did not check if the expression
buffer was empty. */
@@ -851,7 +853,9 @@ stap_fetch_reg_value (struct stap_evaluation_info *eval_info,
if (indirect_p)
{
struct type *t = NULL;
- enum agent_op aop;
+ /* GCC false warning: $B!F(Baop$B!G(B may be used uninitialized in this function.
+ */
+ enum agent_op aop = 0;
/* If the user has specified that the register must be indirected,
we should know what's the correct type to cast it before making
@@ -949,7 +953,9 @@ stap_evaluate_single_operand (struct stap_evaluation_info *eval_info)
struct gdbarch *gdbarch = eval_info->gdbarch;
struct frame_info *frame = eval_info->frame;
enum stap_arg_bitness bitness = eval_info->bitness;
- struct value *res;
+ /* GCC false warning: $B!F(Bres$B!G(B may be used uninitialized in this function
+ */
+ struct value *res = NULL;
switch (*eval_info->exp_buf)
{

View File

@ -1,66 +0,0 @@
http://sourceware.org/ml/gdb-cvs/2011-03/msg00077.html
### src/gdb/gdbserver/ChangeLog 2011/03/04 06:31:54 1.463
### src/gdb/gdbserver/ChangeLog 2011/03/05 03:45:26 1.464
## -1,3 +1,10 @@
+2011-03-05 Yao Qi <yao@codesourcery.com>
+
+ * Makefile.in (CLEANDIRS, REQUIRED_SUBDIRS): New variable.
+ (subdir_do): New make target. Copied from gdb/Makefile.
+ (maintainer-clean, realclean, distclean, clean): Call corresponding
+ make targets in common/Makefile.
+
2011-03-04 Yao Qi <yao@codesourcery.com>
* Makefile.in: Remove GNU make feature --directory.
--- src/gdb/gdbserver/Makefile.in 2011/03/04 06:31:54 1.104
+++ src/gdb/gdbserver/Makefile.in 2011/03/05 03:45:26 1.105
@@ -136,6 +136,9 @@
LIBCOMMON = $(LIBCOMMON_DIR)/libcommon.a
LIBCOMMON_SRC = $(srcdir)/$(LIBCOMMON_DIR)
+CLEANDIRS = $(LIBCOMMON_DIR)
+REQUIRED_SUBDIRS = $(LIBCOMMON_DIR)
+
SOURCES = $(SFILES)
TAGFILES = $(SOURCES) ${HFILES} ${ALLPARAM} ${POSSLIBS}
@@ -291,6 +294,7 @@
tags: TAGS
clean:
+ @$(MAKE) $(FLAGS_TO_PASS) DO=clean "DODIRS=$(CLEANDIRS)" subdir_do
rm -f *.o ${ADD_FILES} *~
rm -f version.c
rm -f gdbserver$(EXEEXT) gdbreplay$(EXEEXT) core make.log
@@ -314,6 +318,7 @@
rm -f i386-mmx.c i386-mmx-linux.c
maintainer-clean realclean distclean: clean
+ @$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(CLEANDIRS)" subdir_do
rm -f nm.h tm.h xm.h config.status config.h stamp-h config.log
rm -f Makefile
@@ -321,6 +326,22 @@
stamp-h: config.in config.status
CONFIG_FILES="" CONFIG_HEADERS=config.h:config.in $(SHELL) ./config.status
+subdir_do: force
+ @for i in $(DODIRS); do \
+ case $$i in \
+ $(REQUIRED_SUBDIRS)) \
+ if [ ! -f ./$$i/Makefile ] ; then \
+ echo "Missing $$i/Makefile" >&2 ; \
+ exit 1 ; \
+ fi ;; \
+ esac ; \
+ if [ -f ./$$i/Makefile ] ; then \
+ if (cd ./$$i; \
+ $(MAKE) $(FLAGS_TO_PASS) $(DO)) ; then true ; \
+ else exit 1 ; fi ; \
+ else true ; fi ; \
+ done
+
Makefile: Makefile.in config.status
CONFIG_HEADERS="" $(SHELL) ./config.status

View File

@ -23,11 +23,11 @@ Name: gdb%{?_with_debug:-debug}
# Set version to contents of gdb/version.in. # Set version to contents of gdb/version.in.
# NOTE: the FSF gdb versions are numbered N.M for official releases, like 6.3 # NOTE: the FSF gdb versions are numbered N.M for official releases, like 6.3
# and, since January 2005, X.Y.Z.date for daily snapshots, like 6.3.50.20050112 # (daily snapshot from mailine), or 6.3.0.20040112 (head of the release branch). # and, since January 2005, X.Y.Z.date for daily snapshots, like 6.3.50.20050112 # (daily snapshot from mailine), or 6.3.0.20040112 (head of the release branch).
Version: 7.2.50.20110305 Version: 7.2.50.20110320
# The release always contains a leading reserved number, start it at 1. # The release always contains a leading reserved number, start it at 1.
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing. # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
Release: 28%{?_with_upstream:.upstream}%{?dist} Release: 29%{?_with_upstream:.upstream}%{?dist}
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain
Group: Development/Debuggers Group: Development/Debuggers
@ -264,7 +264,7 @@ Patch231: gdb-6.3-bz202689-exec-from-pthread-test.patch
# Backported fixups post the source tarball. # Backported fixups post the source tarball.
#Xdrop: Just backports. #Xdrop: Just backports.
Patch232: gdb-upstream.patch #Patch232: gdb-upstream.patch
# Testcase for PPC Power6/DFP instructions disassembly (BZ 230000). # Testcase for PPC Power6/DFP instructions disassembly (BZ 230000).
#=fedoratest+ppc #=fedoratest+ppc
@ -549,18 +549,15 @@ Patch555: gdb-gcc46-typedef.patch
# =push # =push
Patch556: gdb-gcc46-stdarg-prologue.patch Patch556: gdb-gcc46-stdarg-prologue.patch
# Fix Python new-backtrace command (BZ 672235, Phil Muldoon).
# =push
Patch557: gdb-python-newbacktrace.patch
# Fix regressions on C++ names resolving (PR 11734, PR 12273, Keith Seitz).
Patch565: gdb-physname-pr11734-1of2.patch
Patch566: gdb-physname-pr11734-2of2.patch
Patch567: gdb-physname-pr12273.patch
# Fix attach/core-load of {,un}prelinked i386 libs (bugreport by Michal Toman). # Fix attach/core-load of {,un}prelinked i386 libs (bugreport by Michal Toman).
Patch571: gdb-prelink-rela.patch Patch571: gdb-prelink-rela.patch
# [stap] Fix -O2 warnings.
Patch576: gdb-stap-warnings.patch
# Fix Ada support crash on uninitialized gdbarch.
Patch577: gdb-ada-gdbarch-crash.patch
BuildRequires: ncurses-devel%{?_isa} texinfo gettext flex bison expat-devel%{?_isa} BuildRequires: ncurses-devel%{?_isa} texinfo gettext flex bison expat-devel%{?_isa}
Requires: readline%{?_isa} Requires: readline%{?_isa}
BuildRequires: readline-devel%{?_isa} BuildRequires: readline-devel%{?_isa}
@ -717,7 +714,7 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
%if 0%{!?_with_upstream:1} %if 0%{!?_with_upstream:1}
%patch232 -p1 #patch232 -p1
%patch349 -p1 %patch349 -p1
%patch1 -p1 %patch1 -p1
%patch3 -p1 %patch3 -p1
@ -828,11 +825,9 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
%patch554 -p1 %patch554 -p1
%patch555 -p1 %patch555 -p1
%patch556 -p1 %patch556 -p1
%patch557 -p1
%patch565 -p1
%patch566 -p1
%patch567 -p1
%patch571 -p1 %patch571 -p1
%patch576 -p1
%patch577 -p1
%patch390 -p1 %patch390 -p1
%patch393 -p1 %patch393 -p1
@ -1258,6 +1253,12 @@ fi
%{_infodir}/gdb.info* %{_infodir}/gdb.info*
%changelog %changelog
* Sun Mar 20 2011 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.2.50.20110320-29.fc15
- Rebase to FSF GDB 7.2.50.20110320 (which is a 7.3 pre-release).
- Merge archer-sergiodj-stap, the SystemTap probes breakpoints feature.
- [stap] Fix -O2 warnings.
- Fix Ada support crash on uninitialized gdbarch.
* Sat Mar 5 2011 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.2.50.20110305-28.fc15 * Sat Mar 5 2011 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.2.50.20110305-28.fc15
- Rebase to FSF GDB 7.2.50.20110305 (which is a 7.3 pre-release). - Rebase to FSF GDB 7.2.50.20110305 (which is a 7.3 pre-release).

View File

@ -1,2 +1,2 @@
04e5c4b1b9e633422cc48990fe61958d libstdc++-v3-python-r155978.tar.bz2 04e5c4b1b9e633422cc48990fe61958d libstdc++-v3-python-r155978.tar.bz2
143ab09e8724b0058fbf882832f6d2f3 gdb-7.2.50.20110305.tar.bz2 cc48d62b23b53816eb9639a8e9504d47 gdb-7.2.50.20110320.tar.bz2