diff --git a/gdb-6.8-inlining-addon.patch b/gdb-6.8-inlining-addon.patch
index 211b4f4..c2af6ff 100644
--- a/gdb-6.8-inlining-addon.patch
+++ b/gdb-6.8-inlining-addon.patch
@@ -7,8 +7,8 @@ gdb.mi/mi-nsmoribund.exp
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/inline-bt.c 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.c 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/inline-bt.c 2009-03-25 22:33:02.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.c 2009-03-25 22:34:02.000000000 +0100
@@ -13,10 +13,16 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see . */
@@ -30,8 +30,8 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.c
{
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.exp
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/inline-bt.exp 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.exp 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/inline-bt.exp 2009-03-25 22:33:02.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.exp 2009-03-25 22:34:02.000000000 +0100
@@ -41,18 +41,19 @@ if { [skip_inline_frame_tests] } {
return
}
@@ -62,8 +62,8 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.exp
gdb_test "backtrace" "#0 bar.*#1 .*func1.*#2 .*func2.*#3 .*main.*" \
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/inline-cmds.c 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.c 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/inline-cmds.c 2009-03-25 22:33:02.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.c 2009-03-25 22:34:02.000000000 +0100
@@ -13,13 +13,19 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see . */
@@ -88,8 +88,8 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.c
bar ();
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.exp
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/inline-cmds.exp 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.exp 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/inline-cmds.exp 2009-03-25 22:33:02.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.exp 2009-03-25 22:34:02.000000000 +0100
@@ -45,28 +45,28 @@ if { [skip_inline_frame_tests] } {
# First, check that the things we expected to be inlined really were,
@@ -182,8 +182,8 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.exp
+gdb_test "info frame" " in main \[^\n\]*\n source language.*" "main not inlined"
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/inline-locals.c 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.c 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/inline-locals.c 2009-03-25 22:33:02.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.c 2009-03-25 22:34:02.000000000 +0100
@@ -13,11 +13,16 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see . */
@@ -205,8 +205,8 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.c
{
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.exp
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/inline-locals.exp 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.exp 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/inline-locals.exp 2009-03-25 22:33:02.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.exp 2009-03-25 22:34:02.000000000 +0100
@@ -43,8 +43,8 @@ if { [skip_inline_var_tests] } {
set no_frames [skip_inline_frame_tests]
@@ -238,8 +238,8 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.exp
gdb_test "print array\[0\]" "\\\$$decimal = 184" "print local (3)"
Index: gdb-6.8.50.20090302/gdb/frame.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/frame.c 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/frame.c 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/frame.c 2009-03-25 22:33:02.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/frame.c 2009-03-25 22:34:02.000000000 +0100
@@ -269,7 +269,7 @@ fprint_frame (struct ui_file *file, stru
static struct frame_info *
skip_inlined_frames (struct frame_info *frame)
@@ -278,8 +278,8 @@ Index: gdb-6.8.50.20090302/gdb/frame.c
sal->line = SYMBOL_LINE (sym);
Index: gdb-6.8.50.20090302/gdb/breakpoint.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/breakpoint.c 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/breakpoint.c 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/breakpoint.c 2009-03-25 22:33:02.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/breakpoint.c 2009-03-25 22:34:02.000000000 +0100
@@ -57,6 +57,7 @@
#include "top.h"
#include "wrapper.h"
@@ -330,7 +330,7 @@ Index: gdb-6.8.50.20090302/gdb/breakpoint.c
}
/* Print nothing for this entry if we dont stop or if we dont print. */
-@@ -5168,9 +5189,9 @@ set_momentary_breakpoint (struct symtab_
+@@ -5169,9 +5190,9 @@ set_momentary_breakpoint (struct symtab_
{
struct breakpoint *b;
@@ -345,8 +345,8 @@ Index: gdb-6.8.50.20090302/gdb/breakpoint.c
b->enable_state = bp_enabled;
Index: gdb-6.8.50.20090302/gdb/inline-frame.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/inline-frame.c 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/inline-frame.c 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/inline-frame.c 2009-03-25 22:33:02.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/inline-frame.c 2009-03-25 22:34:02.000000000 +0100
@@ -183,6 +183,12 @@ inline_frame_sniffer (const struct frame
if (frame_block == NULL)
return 0;
@@ -425,8 +425,8 @@ Index: gdb-6.8.50.20090302/gdb/inline-frame.c
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-markers.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/inline-markers.c 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-markers.c 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/inline-markers.c 2009-03-25 22:33:02.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-markers.c 2009-03-25 22:34:02.000000000 +0100
@@ -15,11 +15,6 @@
extern int x, y;
@@ -441,8 +441,8 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-markers.c
x += y; /* set breakpoint 2 here */
Index: gdb-6.8.50.20090302/gdb/gdbthread.h
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/gdbthread.h 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/gdbthread.h 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/gdbthread.h 2009-03-25 22:33:02.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/gdbthread.h 2009-03-25 22:34:02.000000000 +0100
@@ -180,6 +180,12 @@ struct thread_info
/* Private data used by the target vector implementation. */
@@ -458,8 +458,8 @@ Index: gdb-6.8.50.20090302/gdb/gdbthread.h
/* Create an empty thread list, or empty the existing one. */
Index: gdb-6.8.50.20090302/gdb/infcmd.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/infcmd.c 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/infcmd.c 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/infcmd.c 2009-03-25 22:33:02.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/infcmd.c 2009-03-25 22:34:02.000000000 +0100
@@ -1391,11 +1391,11 @@ finish_command_continuation (void *arg)
struct type *value_type;
@@ -602,8 +602,8 @@ Index: gdb-6.8.50.20090302/gdb/infcmd.c
Index: gdb-6.8.50.20090302/gdb/infrun.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/infrun.c 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/infrun.c 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/infrun.c 2009-03-25 22:33:02.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/infrun.c 2009-03-25 22:34:02.000000000 +0100
@@ -1152,8 +1152,6 @@ a command like `return' or `jump' to con
step = 0;
}
@@ -624,8 +624,8 @@ Index: gdb-6.8.50.20090302/gdb/infrun.c
static int
Index: gdb-6.8.50.20090302/gdb/target.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/target.c 2009-03-06 19:07:26.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/target.c 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/target.c 2009-03-25 22:26:51.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/target.c 2009-03-25 22:34:02.000000000 +0100
@@ -41,6 +41,7 @@
#include "target-descriptions.h"
#include "gdbthread.h"
@@ -644,8 +644,8 @@ Index: gdb-6.8.50.20090302/gdb/target.c
for (t = current_target.beneath; t != NULL; t = t->beneath)
Index: gdb-6.8.50.20090302/gdb/inline-frame.h
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/inline-frame.h 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/inline-frame.h 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/inline-frame.h 2009-03-25 22:33:02.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/inline-frame.h 2009-03-25 22:34:02.000000000 +0100
@@ -43,6 +43,10 @@ void clear_inline_frame_state (ptid_t pt
void step_into_inline_frame (ptid_t ptid);
@@ -659,8 +659,8 @@ Index: gdb-6.8.50.20090302/gdb/inline-frame.h
Index: gdb-6.8.50.20090302/gdb/infcall.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/infcall.c 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/infcall.c 2009-03-06 19:07:30.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/infcall.c 2009-03-25 22:33:02.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/infcall.c 2009-03-25 22:34:02.000000000 +0100
@@ -898,8 +898,15 @@ The program being debugged exited while
if (unwind_on_signal_p)
@@ -681,17 +681,17 @@ Index: gdb-6.8.50.20090302/gdb/infcall.c
long if it's a C++ name with arguments and stuff. */
Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/dwarf2read.c 2009-03-06 19:07:30.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/dwarf2read.c 2009-03-06 19:07:40.000000000 +0100
-@@ -3463,6 +3463,7 @@ read_func_scope (struct die_info *die, s
- unsigned die_children = 0;
+--- gdb-6.8.50.20090302.orig/gdb/dwarf2read.c 2009-03-25 22:33:44.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/dwarf2read.c 2009-03-25 22:34:11.000000000 +0100
+@@ -3471,6 +3471,7 @@ read_func_scope (struct die_info *die, s
+ unsigned die_children;
struct attribute *call_line, *call_file;
int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
+ struct type *type;
if (inlined_func)
{
-@@ -3504,7 +3505,10 @@ read_func_scope (struct die_info *die, s
+@@ -3513,7 +3514,10 @@ read_func_scope (struct die_info *die, s
add_to_cu_func_list (name, lowpc, highpc, cu);
new = push_context (0, lowpc);
@@ -703,7 +703,7 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
/* If there is a location expression for DW_AT_frame_base, record
it. */
-@@ -8746,6 +8750,7 @@ read_type_die (struct die_info *die, str
+@@ -8751,6 +8755,7 @@ read_type_die (struct die_info *die, str
break;
case DW_TAG_subprogram:
case DW_TAG_subroutine_type:
diff --git a/gdb-6.8-inlining.patch b/gdb-6.8-inlining.patch
index c13bead..8fc0d1a 100644
--- a/gdb-6.8-inlining.patch
+++ b/gdb-6.8-inlining.patch
@@ -7,8 +7,8 @@ Removed dwarf_expr_frame_base NULL check duplicity with *-vla.patch.
Index: gdb-6.8.50.20090302/gdb/NEWS
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/NEWS 2009-03-21 21:06:02.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/NEWS 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/NEWS 2009-03-27 00:14:19.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/NEWS 2009-03-27 00:14:33.000000000 +0100
@@ -1,6 +1,11 @@
What has changed in GDB?
(Organized release by release)
@@ -23,8 +23,8 @@ Index: gdb-6.8.50.20090302/gdb/NEWS
* GDB now has support for multi-byte and wide character sets on the
Index: gdb-6.8.50.20090302/gdb/block.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/block.c 2009-03-21 21:06:02.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/block.c 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/block.c 2009-03-27 00:14:19.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/block.c 2009-03-27 00:14:33.000000000 +0100
@@ -47,8 +47,16 @@ contained_in (const struct block *a, con
{
if (!a || !b)
@@ -70,7 +70,7 @@ Index: gdb-6.8.50.20090302/gdb/block.c
Index: gdb-6.8.50.20090302/gdb/block.h
===================================================================
--- gdb-6.8.50.20090302.orig/gdb/block.h 2009-01-03 06:57:50.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/block.h 2009-03-21 21:06:16.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/block.h 2009-03-27 00:14:33.000000000 +0100
@@ -65,7 +65,7 @@ struct block
CORE_ADDR endaddr;
@@ -92,7 +92,7 @@ Index: gdb-6.8.50.20090302/gdb/block.h
Index: gdb-6.8.50.20090302/gdb/blockframe.c
===================================================================
--- gdb-6.8.50.20090302.orig/gdb/blockframe.c 2009-01-03 06:57:50.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/blockframe.c 2009-03-21 21:06:16.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/blockframe.c 2009-03-27 00:14:33.000000000 +0100
@@ -36,6 +36,7 @@
#include "command.h"
#include "gdbcmd.h"
@@ -163,8 +163,8 @@ Index: gdb-6.8.50.20090302/gdb/blockframe.c
frame = get_prev_frame (frame);
Index: gdb-6.8.50.20090302/gdb/breakpoint.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/breakpoint.c 2009-03-21 21:06:05.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/breakpoint.c 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/breakpoint.c 2009-03-27 00:14:24.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/breakpoint.c 2009-03-27 00:14:33.000000000 +0100
@@ -2641,19 +2641,21 @@ watchpoint_check (void *p)
within_current_scope = 1;
else
@@ -344,8 +344,8 @@ Index: gdb-6.8.50.20090302/gdb/breakpoint.c
}
Index: gdb-6.8.50.20090302/gdb/buildsym.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/buildsym.c 2009-03-21 21:06:02.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/buildsym.c 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/buildsym.c 2009-03-27 00:14:19.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/buildsym.c 2009-03-27 00:14:33.000000000 +0100
@@ -1155,6 +1155,12 @@ end_symtab (CORE_ADDR end_addr, struct o
struct symbol *sym;
struct dict_iterator iter;
@@ -361,8 +361,8 @@ Index: gdb-6.8.50.20090302/gdb/buildsym.c
sym = dict_iterator_next (&iter))
Index: gdb-6.8.50.20090302/gdb/doc/gdb.texinfo
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/doc/gdb.texinfo 2009-03-21 21:06:05.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/doc/gdb.texinfo 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/doc/gdb.texinfo 2009-03-27 00:14:24.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/doc/gdb.texinfo 2009-03-27 00:14:33.000000000 +0100
@@ -137,6 +137,7 @@ software in general. We will miss him.
* Stack:: Examining the stack
* Source:: Examining source files
@@ -514,8 +514,8 @@ Index: gdb-6.8.50.20090302/gdb/doc/gdb.texinfo
Index: gdb-6.8.50.20090302/gdb/dwarf2loc.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/dwarf2loc.c 2009-03-21 21:06:02.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/dwarf2loc.c 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/dwarf2loc.c 2009-03-27 00:14:19.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/dwarf2loc.c 2009-03-27 00:14:33.000000000 +0100
@@ -31,6 +31,7 @@
#include "regcache.h"
#include "objfiles.h"
@@ -538,8 +538,8 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2loc.c
some function associated with a frame. If we can't find the frame,
Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/dwarf2read.c 2009-03-21 21:06:04.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/dwarf2read.c 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/dwarf2read.c 2009-03-27 00:14:24.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/dwarf2read.c 2009-03-27 00:16:07.000000000 +0100
@@ -50,6 +50,7 @@
#include "c-lang.h"
#include "typeprint.h"
@@ -548,7 +548,7 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
#include
#include "gdb_string.h"
-@@ -2984,12 +2985,8 @@ process_die (struct die_info *die, struc
+@@ -2992,12 +2993,8 @@ process_die (struct die_info *die, struc
read_file_scope (die, cu);
break;
case DW_TAG_subprogram:
@@ -562,10 +562,10 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
break;
case DW_TAG_lexical_block:
case DW_TAG_try_block:
-@@ -3464,6 +3461,22 @@ read_func_scope (struct die_info *die, s
+@@ -3472,6 +3469,22 @@ read_func_scope (struct die_info *die, s
CORE_ADDR baseaddr;
struct block *block;
- unsigned die_children = 0;
+ unsigned die_children;
+ struct attribute *call_line, *call_file;
+ int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
+
@@ -585,7 +585,7 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-@@ -7524,6 +7537,9 @@ die_specification (struct die_info *die,
+@@ -7531,6 +7544,9 @@ die_specification (struct die_info *die,
*spec_cu);
if (spec_attr == NULL)
@@ -595,7 +595,7 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
return NULL;
else
return follow_die_ref (die, spec_attr, spec_cu);
-@@ -8207,6 +8223,7 @@ new_symbol (struct die_info *die, struct
+@@ -8214,6 +8230,7 @@ new_symbol (struct die_info *die, struct
struct attribute *attr = NULL;
struct attribute *attr2 = NULL;
CORE_ADDR baseaddr;
@@ -603,7 +603,7 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-@@ -8257,13 +8274,17 @@ new_symbol (struct die_info *die, struct
+@@ -8264,13 +8281,17 @@ new_symbol (struct die_info *die, struct
SYMBOL_TYPE (sym) = type;
else
SYMBOL_TYPE (sym) = die_type (die, cu);
@@ -623,7 +623,7 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
if (attr)
{
int file_index = DW_UNSND (attr);
-@@ -8310,6 +8331,14 @@ new_symbol (struct die_info *die, struct
+@@ -8317,6 +8338,14 @@ new_symbol (struct die_info *die, struct
add_symbol_to_list (sym, cu->list_in_scope);
}
break;
@@ -638,7 +638,7 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
case DW_TAG_variable:
/* Compilation with minimal debug info may result in variables
with missing type entries. Change the misleading `void' type
-@@ -8365,7 +8394,14 @@ new_symbol (struct die_info *die, struct
+@@ -8372,7 +8401,14 @@ new_symbol (struct die_info *die, struct
}
break;
case DW_TAG_formal_parameter:
@@ -657,7 +657,7 @@ Index: gdb-6.8.50.20090302/gdb/dwarf2read.c
Index: gdb-6.8.50.20090302/gdb/frame-unwind.c
===================================================================
--- gdb-6.8.50.20090302.orig/gdb/frame-unwind.c 2009-01-03 06:57:51.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/frame-unwind.c 2009-03-21 21:06:16.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/frame-unwind.c 2009-03-27 00:14:33.000000000 +0100
@@ -21,6 +21,7 @@
#include "frame.h"
#include "frame-unwind.h"
@@ -680,8 +680,8 @@ Index: gdb-6.8.50.20090302/gdb/frame-unwind.c
Index: gdb-6.8.50.20090302/gdb/frame.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/frame.c 2009-03-21 21:06:03.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/frame.c 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/frame.c 2009-03-27 00:14:21.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/frame.c 2009-03-27 00:14:33.000000000 +0100
@@ -41,8 +41,14 @@
#include "objfiles.h"
#include "exceptions.h"
@@ -1041,7 +1041,7 @@ Index: gdb-6.8.50.20090302/gdb/frame.c
Index: gdb-6.8.50.20090302/gdb/frame.h
===================================================================
--- gdb-6.8.50.20090302.orig/gdb/frame.h 2009-02-05 18:28:20.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/frame.h 2009-03-21 21:06:16.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/frame.h 2009-03-27 00:14:33.000000000 +0100
@@ -34,6 +34,9 @@
frame_unwind_WHAT...(): Unwind THIS frame's WHAT from the NEXT
frame.
@@ -1105,8 +1105,8 @@ Index: gdb-6.8.50.20090302/gdb/frame.h
/* Assuming that a frame is `normal', return its base-address, or 0 if
Index: gdb-6.8.50.20090302/gdb/gdbthread.h
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/gdbthread.h 2009-03-21 21:06:02.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/gdbthread.h 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/gdbthread.h 2009-03-27 00:14:19.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/gdbthread.h 2009-03-27 00:14:33.000000000 +0100
@@ -83,6 +83,13 @@ struct thread_info
This is how we know when we step into a subroutine call, and how
to set the frame for the breakpoint used to step out. */
@@ -1123,8 +1123,8 @@ Index: gdb-6.8.50.20090302/gdb/gdbthread.h
Index: gdb-6.8.50.20090302/gdb/infcall.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/infcall.c 2009-03-21 21:06:02.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/infcall.c 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/infcall.c 2009-03-27 00:14:19.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/infcall.c 2009-03-27 00:14:33.000000000 +0100
@@ -898,15 +898,8 @@ The program being debugged exited while
if (unwind_on_signal_p)
@@ -1145,8 +1145,8 @@ Index: gdb-6.8.50.20090302/gdb/infcall.c
long if it's a C++ name with arguments and stuff. */
Index: gdb-6.8.50.20090302/gdb/infcmd.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/infcmd.c 2009-03-21 21:06:02.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/infcmd.c 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/infcmd.c 2009-03-27 00:14:19.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/infcmd.c 2009-03-27 00:14:33.000000000 +0100
@@ -52,6 +52,7 @@
#include "cli/cli-decode.h"
#include "gdbthread.h"
@@ -1250,8 +1250,8 @@ Index: gdb-6.8.50.20090302/gdb/infcmd.c
function = find_pc_function (get_frame_pc (get_selected_frame (NULL)));
Index: gdb-6.8.50.20090302/gdb/inferior.h
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/inferior.h 2009-03-21 21:06:02.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/inferior.h 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/inferior.h 2009-03-27 00:14:19.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/inferior.h 2009-03-27 00:14:33.000000000 +0100
@@ -259,6 +259,9 @@ extern void error_is_running (void);
/* Calls error_is_running if the current thread is running. */
extern void ensure_not_running (void);
@@ -1264,8 +1264,8 @@ Index: gdb-6.8.50.20090302/gdb/inferior.h
extern void tty_command (char *, int);
Index: gdb-6.8.50.20090302/gdb/infrun.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/infrun.c 2009-03-21 21:06:04.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/infrun.c 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/infrun.c 2009-03-27 00:14:23.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/infrun.c 2009-03-27 00:14:33.000000000 +0100
@@ -48,6 +48,7 @@
#include "gdb_assert.h"
#include "mi/mi-common.h"
@@ -1541,7 +1541,7 @@ Index: gdb-6.8.50.20090302/gdb/infrun.c
Index: gdb-6.8.50.20090302/gdb/inline-frame.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/inline-frame.c 2009-03-21 21:06:16.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/inline-frame.c 2009-03-27 00:14:33.000000000 +0100
@@ -0,0 +1,382 @@
+/* Inline frame unwinder for GDB.
+
@@ -1928,7 +1928,7 @@ Index: gdb-6.8.50.20090302/gdb/inline-frame.c
Index: gdb-6.8.50.20090302/gdb/inline-frame.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/inline-frame.h 2009-03-21 21:06:16.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/inline-frame.h 2009-03-27 00:14:33.000000000 +0100
@@ -0,0 +1,62 @@
+/* Definitions for inline frame support.
+
@@ -1994,8 +1994,8 @@ Index: gdb-6.8.50.20090302/gdb/inline-frame.h
+#endif /* !defined (INLINE_FRAME_H) */
Index: gdb-6.8.50.20090302/gdb/minsyms.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/minsyms.c 2009-03-21 21:06:03.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/minsyms.c 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/minsyms.c 2009-03-27 00:14:22.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/minsyms.c 2009-03-27 00:14:33.000000000 +0100
@@ -795,7 +795,7 @@ prim_record_minimal_symbol_and_info (con
if (msym_bunch_index == BUNCH_SIZE)
@@ -2008,7 +2008,7 @@ Index: gdb-6.8.50.20090302/gdb/minsyms.c
Index: gdb-6.8.50.20090302/gdb/s390-tdep.c
===================================================================
--- gdb-6.8.50.20090302.orig/gdb/s390-tdep.c 2009-02-22 02:02:19.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/s390-tdep.c 2009-03-21 21:06:16.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/s390-tdep.c 2009-03-27 00:14:33.000000000 +0100
@@ -1182,6 +1182,7 @@ s390_prologue_frame_unwind_cache (struct
CORE_ADDR prev_sp;
int frame_pointer;
@@ -2044,8 +2044,8 @@ Index: gdb-6.8.50.20090302/gdb/s390-tdep.c
/* See the comment in s390_in_function_epilogue_p on why this is
Index: gdb-6.8.50.20090302/gdb/stack.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/stack.c 2009-03-21 21:06:02.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/stack.c 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/stack.c 2009-03-27 00:14:19.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/stack.c 2009-03-27 00:14:33.000000000 +0100
@@ -45,6 +45,7 @@
#include "valprint.h"
#include "gdbthread.h"
@@ -2194,16 +2194,15 @@ Index: gdb-6.8.50.20090302/gdb/stack.c
RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
Index: gdb-6.8.50.20090302/gdb/symtab.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/symtab.c 2009-03-21 21:06:03.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/symtab.c 2009-03-21 21:06:49.000000000 +0100
-@@ -1417,11 +1417,14 @@ lookup_symbol_aux_local (const char *nam
- sym = lookup_symbol_aux_block (name, linkage_name, block_iterator, domain);
- if (sym != NULL)
- return sym;
-+
-+ if (BLOCK_FUNCTION (block) != NULL && block_inlined_p (block))
+--- gdb-6.8.50.20090302.orig/gdb/symtab.c 2009-03-27 00:14:22.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/symtab.c 2009-03-27 00:15:36.000000000 +0100
+@@ -1426,10 +1426,13 @@ lookup_symbol_aux_local (const char *nam
+ return sym;
+ }
+
++ if (BLOCK_FUNCTION (block_iterator) != NULL && block_inlined_p (block_iterator))
+ break;
-
++
block_iterator = BLOCK_SUPERBLOCK (block_iterator);
}
@@ -2212,7 +2211,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
return NULL;
}
-@@ -2678,6 +2681,7 @@ find_function_start_sal (struct symbol *
+@@ -2686,6 +2689,7 @@ find_function_start_sal (struct symbol *
CORE_ADDR pc;
struct symtab_and_line sal;
@@ -2220,7 +2219,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
pc = BLOCK_START (block);
fixup_symbol_section (sym, objfile);
-@@ -2716,6 +2720,25 @@ find_function_start_sal (struct symbol *
+@@ -2724,6 +2728,25 @@ find_function_start_sal (struct symbol *
sal.pc = pc;
@@ -2246,7 +2245,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
return sal;
}
-@@ -3738,6 +3761,24 @@ add_macro_name (const char *name, const
+@@ -3746,6 +3769,24 @@ add_macro_name (const char *name, const
datum->text, datum->word);
}
@@ -2271,7 +2270,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
char **
default_make_symbol_completion_list (char *text, char *word)
{
-@@ -3750,9 +3791,9 @@ default_make_symbol_completion_list (cha
+@@ -3758,9 +3799,9 @@ default_make_symbol_completion_list (cha
struct partial_symtab *ps;
struct minimal_symbol *msymbol;
struct objfile *objfile;
@@ -2283,7 +2282,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
struct partial_symbol **psym;
/* The symbol we are completing on. Points in same buffer as text. */
char *sym_text;
-@@ -3862,41 +3903,43 @@ default_make_symbol_completion_list (cha
+@@ -3870,41 +3911,43 @@ default_make_symbol_completion_list (cha
}
/* Search upwards from currently selected frame (so that we can
@@ -2358,7 +2357,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
/* Go through the symtabs and check the externs and statics for
symbols which match. */
-@@ -3915,9 +3958,6 @@ default_make_symbol_completion_list (cha
+@@ -3923,9 +3966,6 @@ default_make_symbol_completion_list (cha
{
QUIT;
b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
@@ -2368,7 +2367,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
ALL_BLOCK_SYMBOLS (b, iter, sym)
{
COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
-@@ -4384,6 +4424,25 @@ skip_prologue_using_sal (CORE_ADDR func_
+@@ -4392,6 +4432,25 @@ skip_prologue_using_sal (CORE_ADDR func_
line mark the prologue -> body transition. */
if (sal.line >= prologue_sal.line)
break;
@@ -2396,8 +2395,8 @@ Index: gdb-6.8.50.20090302/gdb/symtab.c
the function looking for address ranges whose
Index: gdb-6.8.50.20090302/gdb/symtab.h
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/symtab.h 2009-03-21 21:06:02.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/symtab.h 2009-03-21 21:06:16.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/symtab.h 2009-03-27 00:14:19.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/symtab.h 2009-03-27 00:14:33.000000000 +0100
@@ -556,9 +556,18 @@ struct symbol
unsigned is_argument : 1;
@@ -2431,7 +2430,7 @@ Index: gdb-6.8.50.20090302/gdb/symtab.h
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.base/break.exp
===================================================================
--- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.base/break.exp 2009-01-19 20:05:01.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.base/break.exp 2009-03-21 21:06:16.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.base/break.exp 2009-03-27 00:14:33.000000000 +0100
@@ -880,6 +880,13 @@ gdb_expect {
# marker4() is defined at line 46 when compiled with -DPROTOTYPES
pass "run until breakpoint set at small function, optimized file (line bp_location14)"
@@ -2449,7 +2448,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.base/break.exp
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.cp/annota2.exp
===================================================================
--- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.cp/annota2.exp 2009-01-03 06:58:04.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.cp/annota2.exp 2009-03-21 21:06:16.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.cp/annota2.exp 2009-03-27 00:14:33.000000000 +0100
@@ -119,10 +119,11 @@ gdb_expect {
# continue until exit
# this will test:
@@ -2466,7 +2465,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.cp/annota2.exp
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.c 2009-03-21 21:06:16.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.c 2009-03-27 00:14:33.000000000 +0100
@@ -0,0 +1,47 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+
@@ -2518,7 +2517,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.c
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.exp 2009-03-21 21:06:17.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.exp 2009-03-27 00:14:33.000000000 +0100
@@ -0,0 +1,63 @@
+# Copyright 2008 Free Software Foundation, Inc.
+
@@ -2586,7 +2585,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-bt.exp
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.c 2009-03-21 21:06:17.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.c 2009-03-27 00:14:33.000000000 +0100
@@ -0,0 +1,85 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+
@@ -2676,7 +2675,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.c
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.exp 2009-03-21 21:06:17.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.exp 2009-03-27 00:14:33.000000000 +0100
@@ -0,0 +1,279 @@
+# Copyright 2008 Free Software Foundation, Inc.
+
@@ -2960,7 +2959,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-cmds.exp
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.c 2009-03-21 21:06:17.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.c 2009-03-27 00:14:33.000000000 +0100
@@ -0,0 +1,52 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+
@@ -3017,7 +3016,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.c
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.exp 2009-03-21 21:06:17.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.exp 2009-03-27 00:14:33.000000000 +0100
@@ -0,0 +1,118 @@
+# Copyright 2008 Free Software Foundation, Inc.
+
@@ -3140,7 +3139,7 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-locals.exp
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-markers.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-markers.c 2009-03-21 21:06:17.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-markers.c 2009-03-27 00:14:33.000000000 +0100
@@ -0,0 +1,36 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+
@@ -3180,8 +3179,8 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/inline-markers.c
+}
Index: gdb-6.8.50.20090302/gdb/testsuite/lib/gdb.exp
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/testsuite/lib/gdb.exp 2009-03-21 21:06:04.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/testsuite/lib/gdb.exp 2009-03-21 21:06:17.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/testsuite/lib/gdb.exp 2009-03-27 00:14:23.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/lib/gdb.exp 2009-03-27 00:14:33.000000000 +0100
@@ -1474,6 +1474,37 @@ proc skip_hp_tests {} {
return $skip_hp
}
@@ -3222,8 +3221,8 @@ Index: gdb-6.8.50.20090302/gdb/testsuite/lib/gdb.exp
set hp_cc_compiler 0
Index: gdb-6.8.50.20090302/gdb/valops.c
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/valops.c 2009-03-21 21:06:03.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/valops.c 2009-03-21 21:06:17.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/valops.c 2009-03-27 00:14:20.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/valops.c 2009-03-27 00:14:33.000000000 +0100
@@ -1072,7 +1072,7 @@ value_of_variable (struct symbol *var, s
frame = block_innermost_frame (b);
if (!frame)
@@ -3235,8 +3234,8 @@ Index: gdb-6.8.50.20090302/gdb/valops.c
SYMBOL_PRINT_NAME (BLOCK_FUNCTION (b)));
Index: gdb-6.8.50.20090302/gdb/Makefile.in
===================================================================
---- gdb-6.8.50.20090302.orig/gdb/Makefile.in 2009-03-21 21:06:04.000000000 +0100
-+++ gdb-6.8.50.20090302/gdb/Makefile.in 2009-03-21 21:06:17.000000000 +0100
+--- gdb-6.8.50.20090302.orig/gdb/Makefile.in 2009-03-27 00:14:23.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/Makefile.in 2009-03-27 00:14:33.000000000 +0100
@@ -667,6 +667,7 @@ SFILES = ada-exp.y ada-lang.c ada-typepr
inf-loop.c \
infcall.c \
@@ -3256,7 +3255,7 @@ Index: gdb-6.8.50.20090302/gdb/Makefile.in
Index: gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/Makefile.in
===================================================================
--- gdb-6.8.50.20090302.orig/gdb/testsuite/gdb.opt/Makefile.in 2008-04-18 01:06:54.000000000 +0200
-+++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/Makefile.in 2009-03-21 21:06:17.000000000 +0100
++++ gdb-6.8.50.20090302/gdb/testsuite/gdb.opt/Makefile.in 2009-03-27 00:14:33.000000000 +0100
@@ -1,7 +1,7 @@
VPATH = @srcdir@
srcdir = @srcdir@
diff --git a/gdb-archer.patch b/gdb-archer.patch
index bbc7ff9..4f20a99 100644
--- a/gdb-archer.patch
+++ b/gdb-archer.patch
@@ -2,7 +2,7 @@ http://sourceware.org/gdb/wiki/ProjectArcher
http://sourceware.org/gdb/wiki/ArcherBranchManagement
GIT snapshot:
-commit e734ed95d296a3342d4147873c4641cea6c4d7fe
+commit 837d9879980148af05eae540d92caeb7200f1813
branch `archer' - the merge of branches:
archer-jankratochvil-merge-expr
@@ -4563,7 +4563,7 @@ index 8f0140c..d451769 100644
/* Set BLOCK's using member to USING; if needed, allocate memory via
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
-index b23b294..531c43d 100644
+index b23b294..567f574 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -191,6 +191,8 @@ static int is_hardware_watchpoint (struct breakpoint *bpt);
@@ -5128,7 +5128,21 @@ index b23b294..531c43d 100644
}
/* Set a breakpoint.
-@@ -6131,7 +6454,7 @@ can_use_hardware_watchpoint (struct value *v)
+@@ -5727,7 +6050,12 @@ resolve_sal_pc (struct symtab_and_line *sal)
+ /* If this SAL corresponds to a breakpoint inserted using
+ a line number, then skip the function prologue if necessary. */
+ if (sal->explicit_line)
+- skip_prologue_sal (sal);
++ {
++ /* Preserve the original line number. */
++ int saved_line = sal->line;
++ skip_prologue_sal (sal);
++ sal->line = saved_line;
++ }
+ }
+
+ if (sal->section == 0 && sal->symtab != NULL)
+@@ -6131,7 +6459,7 @@ can_use_hardware_watchpoint (struct value *v)
|| (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
&& TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
{
@@ -5137,7 +5151,7 @@ index b23b294..531c43d 100644
int len = TYPE_LENGTH (value_type (v));
if (!TARGET_REGION_OK_FOR_HW_WATCHPOINT (vaddr, len))
-@@ -6668,6 +6991,122 @@ catch_ada_exception_command (char *arg, int from_tty,
+@@ -6668,6 +6996,122 @@ catch_ada_exception_command (char *arg, int from_tty,
from_tty);
}
@@ -5260,7 +5274,7 @@ index b23b294..531c43d 100644
/* Implement the "catch assert" command. */
static void
-@@ -7134,6 +7573,7 @@ delete_breakpoint (struct breakpoint *bpt)
+@@ -7134,6 +7578,7 @@ delete_breakpoint (struct breakpoint *bpt)
xfree (bpt->source_file);
if (bpt->exec_pathname != NULL)
xfree (bpt->exec_pathname);
@@ -5268,7 +5282,7 @@ index b23b294..531c43d 100644
/* Be sure no bpstat's are pointing at it after it's been freed. */
/* FIXME, how can we find all bpstat's?
-@@ -8041,6 +8481,56 @@ single_step_breakpoint_inserted_here_p (CORE_ADDR pc)
+@@ -8041,6 +8486,56 @@ single_step_breakpoint_inserted_here_p (CORE_ADDR pc)
return 0;
}
@@ -5325,7 +5339,7 @@ index b23b294..531c43d 100644
/* This help string is used for the break, hbreak, tbreak and thbreak commands.
It is defined as a macro to prevent duplication.
-@@ -8073,6 +8563,8 @@ static void
+@@ -8073,6 +8568,8 @@ static void
add_catch_command (char *name, char *docstring,
void (*sfunc) (char *args, int from_tty,
struct cmd_list_element *command),
@@ -5334,7 +5348,7 @@ index b23b294..531c43d 100644
void *user_data_catch,
void *user_data_tcatch)
{
-@@ -8082,11 +8574,13 @@ add_catch_command (char *name, char *docstring,
+@@ -8082,11 +8579,13 @@ add_catch_command (char *name, char *docstring,
&catch_cmdlist);
set_cmd_sfunc (command, sfunc);
set_cmd_context (command, user_data_catch);
@@ -5348,7 +5362,7 @@ index b23b294..531c43d 100644
}
void
-@@ -8361,36 +8855,50 @@ Set temporary catchpoints to catch events."),
+@@ -8361,36 +8860,50 @@ Set temporary catchpoints to catch events."),
Catch an exception, when caught.\n\
With an argument, catch only exceptions with the given name."),
catch_catch_command,
@@ -12350,7 +12364,7 @@ index 8b7d868..dcd32cb 100644
}
diff --git a/gdb/dbxread.c b/gdb/dbxread.c
-index 115bdef..7f756af 100644
+index 115bdef..23ea50c 100644
--- a/gdb/dbxread.c
+++ b/gdb/dbxread.c
@@ -1,6 +1,6 @@
@@ -12361,15 +12375,15 @@ index 115bdef..7f756af 100644
Free Software Foundation, Inc.
This file is part of GDB.
-@@ -1188,6 +1188,8 @@ read_dbx_symtab (struct objfile *objfile)
- struct internal_nlist nlist;
- CORE_ADDR text_addr;
- int text_size;
+@@ -1198,6 +1198,8 @@ read_dbx_symtab (struct objfile *objfile)
+ bfd *abfd;
+ int textlow_not_set;
+ int data_sect_index;
+ char *sym_name;
+ int sym_len;
- char *namestring;
- int nsl;
+ /* Current partial symtab */
+ struct partial_symtab *pst;
@@ -1681,6 +1683,28 @@ pos %d"),
if (!p)
continue; /* Not a debugging symbol. */
@@ -12503,23 +12517,8 @@ index 845b320..ad6e7d7 100644
extern struct cleanup *make_cleanup_restore_integer (int *variable);
extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
-diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
-index 9f01b33..154139a 100644
---- a/gdb/doc/ChangeLog
-+++ b/gdb/doc/ChangeLog
-@@ -14,8 +14,8 @@
-
- 2009-02-14 Vladimir Prus
-
-- * observer.texi: Add parameter 'print_frame' to normal_stop
-- observer.
-+ * observer.texi: Add parameter 'print_frame' to normal_stop
-+ observer.
-
- 2009-02-07 Eli Zaretskii
-
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
-index 10e7388..01a0e41 100644
+index 10e7388..e959189 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -955,8 +955,10 @@ Connect to process ID @var{number}, as with the @code{attach} command.
@@ -13177,7 +13176,7 @@ index 10e7388..01a0e41 100644
If this @code{gdb.Value} represents a string, then this method
converts the contents to a Python string. Otherwise, this method will
throw an exception.
-@@ -18309,6 +18669,468 @@ The optional @var{errors} argument is the same as the corresponding
+@@ -18309,6 +18669,469 @@ The optional @var{errors} argument is the same as the corresponding
argument to Python's @code{string.decode} method.
@end defmethod
@@ -13240,7 +13239,8 @@ index 10e7388..01a0e41 100644
+this will be zero; in this case the field's size is given by its type.
+
+@item type
-+The type of the field.
++The type of the field. This is usually an instance of @code{Type},
++but it can be @code{None} in some situations.
+@end table
+@end defmethod
+
@@ -13646,7 +13646,7 @@ index 10e7388..01a0e41 100644
@node Commands In Python
@subsubsection Commands In Python
-@@ -18320,7 +19142,7 @@ You can implement new @value{GDBN} CLI commands in Python. A CLI
+@@ -18320,7 +19143,7 @@ You can implement new @value{GDBN} CLI commands in Python. A CLI
command is implemented using an instance of the @code{gdb.Command}
class, most commonly using a subclass.
@@ -13655,7 +13655,7 @@ index 10e7388..01a0e41 100644
The object initializer for @code{Command} registers the new command
with @value{GDBN}. This initializer is normally invoked from the
subclass' own @code{__init__} method.
-@@ -18332,11 +19154,11 @@ an exception is raised.
+@@ -18332,11 +19155,11 @@ an exception is raised.
There is no support for multi-line commands.
@@ -13669,7 +13669,7 @@ index 10e7388..01a0e41 100644
one of the @samp{COMPLETE_} constants defined below. This argument
tells @value{GDBN} how to perform completion for this command. If not
given, @value{GDBN} will attempt to complete using the object's
-@@ -18563,6 +19385,374 @@ registration of the command with @value{GDBN}. Depending on how the
+@@ -18563,6 +19386,374 @@ registration of the command with @value{GDBN}. Depending on how the
Python code is read into @value{GDBN}, you may need to import the
@code{gdb} module explicitly.
@@ -14044,7 +14044,7 @@ index 10e7388..01a0e41 100644
@node Interpreters
@chapter Command Interpreters
@cindex command interpreters
-@@ -22273,6 +23463,103 @@ Unfreezing a variable does not update it, only subsequent
+@@ -22273,6 +23464,103 @@ Unfreezing a variable does not update it, only subsequent
(gdb)
@end smallexample
@@ -14148,7 +14148,7 @@ index 10e7388..01a0e41 100644
@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@node GDB/MI Data Manipulation
-@@ -23832,6 +25119,10 @@ as possible presense of the @code{frozen} field in the output
+@@ -23832,6 +25120,10 @@ as possible presense of the @code{frozen} field in the output
of @code{-varobj-create}.
@item pending-breakpoints
Indicates presence of the @option{-f} option to the @code{-break-insert} command.
@@ -14159,7 +14159,7 @@ index 10e7388..01a0e41 100644
@item thread-info
Indicates presence of the @code{-thread-info} command.
-@@ -25402,28 +26693,6 @@ data in a @file{gmon.out} file, be sure to move it to a safe location.
+@@ -25402,28 +26694,6 @@ data in a @file{gmon.out} file, be sure to move it to a safe location.
Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be
compiled with the @samp{-pg} compiler option.
@@ -14564,7 +14564,7 @@ index 76577f1..bf46761 100644
#endif /* dwarf2loc.h */
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
-index 55868da..71fed38 100644
+index 55868da..04942ec 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -1,8 +1,7 @@
@@ -14716,15 +14716,15 @@ index 55868da..71fed38 100644
static void get_scope_pc_bounds (struct die_info *,
CORE_ADDR *, CORE_ADDR *,
-@@ -962,6 +969,8 @@ static void read_namespace (struct die_info *die, struct dwarf2_cu *);
+@@ -960,6 +967,8 @@ static void read_common_block (struct die_info *, struct dwarf2_cu *);
- static void read_module (struct die_info *die, struct dwarf2_cu *cu);
+ static void read_namespace (struct die_info *die, struct dwarf2_cu *);
+static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
+
- static const char *namespace_name (struct die_info *die,
- int *is_anonymous, struct dwarf2_cu *);
+ static void read_module (struct die_info *die, struct dwarf2_cu *cu);
+ static const char *namespace_name (struct die_info *die,
@@ -993,6 +1002,9 @@ static void process_die (struct die_info *, struct dwarf2_cu *);
static char *dwarf2_linkage_name (struct die_info *, struct dwarf2_cu *);
@@ -15158,17 +15158,16 @@ index 55868da..71fed38 100644
{
struct partial_die_info *first_die;
CORE_ADDR lowpc, highpc;
-@@ -1634,8 +1792,7 @@ dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline)
-
+@@ -1635,7 +1793,7 @@ dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline)
first_die = load_partial_dies (abfd, info_ptr, 1, &cu);
-- scan_partial_symbols (first_die, &lowpc, &highpc,
+ scan_partial_symbols (first_die, &lowpc, &highpc,
- ! comp_unit_die.has_pc_info, &cu);
-+ scan_partial_symbols (first_die, &lowpc, &highpc, ! has_pc_info, &cu);
++ ! has_pc_info, &cu);
/* If we didn't find a lowpc, set it to highpc to avoid
complaints from `maint check'. */
-@@ -1644,14 +1801,14 @@ dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline)
+@@ -1644,14 +1802,21 @@ dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline)
/* If the compilation unit didn't have an explicit address range,
then use the information extracted from its child dies. */
@@ -15185,10 +15184,17 @@ index 55868da..71fed38 100644
- pst->texthigh = comp_unit_die.highpc + baseaddr;
+ pst->textlow = best_lowpc + baseaddr;
+ pst->texthigh = best_highpc + baseaddr;
++
++ /* Store the contiguous range; `DW_AT_ranges' range is stored above. The
++ range can be also empty for CUs with no code. */
++ if (dwarf2_attr (comp_unit_die, DW_AT_ranges, &cu) == NULL
++ && pst->textlow < pst->texthigh)
++ addrmap_set_empty (objfile->psymtabs_addrmap, pst->textlow,
++ pst->texthigh - 1, pst);
pst->n_global_syms = objfile->global_psymbols.next -
(objfile->global_psymbols.list + pst->globals_offset);
-@@ -1667,12 +1824,9 @@ dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline)
+@@ -1667,12 +1832,9 @@ dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline)
info_ptr = beg_of_comp_unit + cu.header.length
+ cu.header.initial_length_size;
@@ -15204,7 +15210,7 @@ index 55868da..71fed38 100644
do_cleanups (back_to_inner);
}
-@@ -1690,11 +1844,12 @@ load_comp_unit (struct dwarf2_per_cu_data *this_cu, struct objfile *objfile)
+@@ -1690,11 +1852,12 @@ load_comp_unit (struct dwarf2_per_cu_data *this_cu, struct objfile *objfile)
{
bfd *abfd = objfile->obfd;
gdb_byte *info_ptr, *beg_of_comp_unit;
@@ -15219,7 +15225,7 @@ index 55868da..71fed38 100644
info_ptr = dwarf2_per_objfile->info_buffer + this_cu->offset;
beg_of_comp_unit = info_ptr;
-@@ -1716,12 +1871,15 @@ load_comp_unit (struct dwarf2_per_cu_data *this_cu, struct objfile *objfile)
+@@ -1716,12 +1879,15 @@ load_comp_unit (struct dwarf2_per_cu_data *this_cu, struct objfile *objfile)
back_to = make_cleanup (dwarf2_free_abbrev_table, cu);
/* Read the compilation unit die. */
@@ -15239,7 +15245,7 @@ index 55868da..71fed38 100644
/* Link this compilation unit into the compilation unit tree. */
this_cu->cu = cu;
-@@ -1731,7 +1889,7 @@ load_comp_unit (struct dwarf2_per_cu_data *this_cu, struct objfile *objfile)
+@@ -1731,7 +1897,7 @@ load_comp_unit (struct dwarf2_per_cu_data *this_cu, struct objfile *objfile)
/* Check if comp unit has_children.
If so, read the rest of the partial symbols from this comp unit.
If not, there's no more debug_info for this comp unit. */
@@ -15248,7 +15254,7 @@ index 55868da..71fed38 100644
load_partial_dies (abfd, info_ptr, 0, cu);
do_cleanups (back_to);
-@@ -1948,7 +2106,7 @@ partial_die_parent_scope (struct partial_die_info *pdi,
+@@ -1948,7 +2114,7 @@ partial_die_parent_scope (struct partial_die_info *pdi,
ignoring them. */
complaint (&symfile_complaints,
_("unhandled containing DIE tag %d for DIE at %d"),
@@ -15257,7 +15263,7 @@ index 55868da..71fed38 100644
parent->scope = grandparent_scope;
}
-@@ -1963,12 +2121,37 @@ partial_die_full_name (struct partial_die_info *pdi,
+@@ -1963,12 +2129,37 @@ partial_die_full_name (struct partial_die_info *pdi,
struct dwarf2_cu *cu)
{
char *parent_scope;
@@ -15299,7 +15305,7 @@ index 55868da..71fed38 100644
}
static void
-@@ -1984,7 +2167,9 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
+@@ -1984,7 +2175,9 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
@@ -15310,7 +15316,7 @@ index 55868da..71fed38 100644
{
actual_name = partial_die_full_name (pdi, cu);
if (actual_name)
-@@ -2133,9 +2318,8 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
+@@ -2133,9 +2326,8 @@ add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
if (cu->language == language_cplus
&& cu->has_namespace_info == 0
&& psym != NULL
@@ -15322,7 +15328,7 @@ index 55868da..71fed38 100644
if (built_actual_name)
xfree (actual_name);
-@@ -2158,6 +2342,14 @@ pdi_needs_namespace (enum dwarf_tag tag)
+@@ -2158,6 +2350,14 @@ pdi_needs_namespace (enum dwarf_tag tag)
case DW_TAG_union_type:
case DW_TAG_enumeration_type:
case DW_TAG_enumerator:
@@ -15337,7 +15343,7 @@ index 55868da..71fed38 100644
return 1;
default:
return 0;
-@@ -2290,11 +2482,11 @@ guess_structure_name (struct partial_die_info *struct_pdi,
+@@ -2290,11 +2490,11 @@ guess_structure_name (struct partial_die_info *struct_pdi,
while (child_pdi != NULL)
{
@@ -15351,7 +15357,7 @@ index 55868da..71fed38 100644
if (actual_class_name != NULL)
{
struct_pdi->name
-@@ -2741,7 +2933,6 @@ process_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
+@@ -2741,7 +2941,6 @@ process_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
CORE_ADDR lowpc, highpc;
struct symtab *symtab;
struct cleanup *back_to;
@@ -15359,7 +15365,7 @@ index 55868da..71fed38 100644
CORE_ADDR baseaddr;
baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
-@@ -2751,30 +2942,7 @@ process_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
+@@ -2751,30 +2950,7 @@ process_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
cu->list_in_scope = &file_symbols;
@@ -15391,7 +15397,7 @@ index 55868da..71fed38 100644
/* Do line number decoding in read_file_scope () */
process_die (cu->dies, cu);
-@@ -2805,6 +2973,7 @@ process_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
+@@ -2805,6 +2981,7 @@ process_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
static void
process_die (struct die_info *die, struct dwarf2_cu *cu)
{
@@ -15399,7 +15405,7 @@ index 55868da..71fed38 100644
switch (die->tag)
{
case DW_TAG_padding:
-@@ -2849,6 +3018,7 @@ process_die (struct die_info *die, struct dwarf2_cu *cu)
+@@ -2849,6 +3026,7 @@ process_die (struct die_info *die, struct dwarf2_cu *cu)
case DW_TAG_base_type:
case DW_TAG_subrange_type:
@@ -15407,7 +15413,7 @@ index 55868da..71fed38 100644
/* Add a typedef symbol for the type definition, if it has a
DW_AT_name. */
new_symbol (die, read_type_die (die, cu), cu);
-@@ -2867,14 +3037,12 @@ process_die (struct die_info *die, struct dwarf2_cu *cu)
+@@ -2867,14 +3045,12 @@ process_die (struct die_info *die, struct dwarf2_cu *cu)
break;
case DW_TAG_imported_declaration:
case DW_TAG_imported_module:
@@ -15427,7 +15433,7 @@ index 55868da..71fed38 100644
break;
default:
new_symbol (die, NULL, cu);
-@@ -2904,22 +3072,130 @@ dwarf2_full_name (struct die_info *die, struct dwarf2_cu *cu)
+@@ -2904,22 +3080,130 @@ dwarf2_full_name (struct die_info *die, struct dwarf2_cu *cu)
return name;
/* If no prefix is necessary for this type of DIE, return the
@@ -15477,7 +15483,7 @@ index 55868da..71fed38 100644
}
+/* read the given die's decl_line number. Return -1 if in case of an error */
-+static int dwarf2_read_decl_line (struct die_info *die, struct dwarf2_cu *cu){
++static const int dwarf2_read_decl_line (struct die_info *die, struct dwarf2_cu *cu){
+ struct attribute *line_attr;
+
+ line_attr = dwarf2_attr (die, DW_AT_decl_line, cu);
@@ -15566,7 +15572,7 @@ index 55868da..71fed38 100644
static void
initialize_cu_func_list (struct dwarf2_cu *cu)
{
-@@ -3076,6 +3352,103 @@ add_to_cu_func_list (const char *name, CORE_ADDR lowpc, CORE_ADDR highpc,
+@@ -3076,6 +3360,103 @@ add_to_cu_func_list (const char *name, CORE_ADDR lowpc, CORE_ADDR highpc,
cu->last_fn = thisfn;
}
@@ -15670,11 +15676,11 @@ index 55868da..71fed38 100644
static void
read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
{
-@@ -3088,16 +3461,27 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
+@@ -3088,15 +3469,27 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
char *name;
CORE_ADDR baseaddr;
struct block *block;
-+ unsigned die_children = 0;
++ unsigned die_children;
baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
@@ -15688,6 +15694,7 @@ index 55868da..71fed38 100644
+ /* explore abstract origins if present. They might contain useful information
+ such as import statements. */
+ child_die = die->child;
++ die_children = 0;
+ while (child_die && child_die->tag)
+ {
+ child_die = sibling_die (child_die);
@@ -15695,13 +15702,11 @@ index 55868da..71fed38 100644
+ }
+ explore_abstract_origin(die, cu, &die_children);
return;
--
+ }
-+
+
lowpc += baseaddr;
highpc += baseaddr;
-
-@@ -3124,16 +3508,91 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
+@@ -3124,14 +3517,87 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
cu->list_in_scope = &local_symbols;
@@ -15790,12 +15795,8 @@ index 55868da..71fed38 100644
+ do_cleanups (cleanups);
}
-+ explore_abstract_origin(die, cu, &die_children);
-+
new = pop_context ();
- /* Make a block for the local symbols within. */
- block = finish_block (new->name, &local_symbols, new->old_blocks,
-@@ -3154,6 +3613,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
+@@ -3154,6 +3620,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
back to building a containing block's symbol lists. */
local_symbols = new->locals;
param_symbols = new->params;
@@ -15803,7 +15804,7 @@ index 55868da..71fed38 100644
/* If we've finished processing a top-level function, subsequent
symbols go in the file symbol list. */
-@@ -3180,7 +3640,7 @@ read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
+@@ -3180,7 +3647,7 @@ read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
as multiple lexical blocks? Handling children in a sane way would
be nasty. Might be easier to properly extend generic blocks to
describe ranges. */
@@ -15812,7 +15813,7 @@ index 55868da..71fed38 100644
return;
lowpc += baseaddr;
highpc += baseaddr;
-@@ -3197,7 +3657,7 @@ read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
+@@ -3197,7 +3664,7 @@ read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
}
new = pop_context ();
@@ -15821,7 +15822,7 @@ index 55868da..71fed38 100644
{
struct block *block
= finish_block (0, &local_symbols, new->old_blocks, new->start_addr,
-@@ -3216,6 +3676,7 @@ read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
+@@ -3216,6 +3683,7 @@ read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
dwarf2_record_block_ranges (die, block, baseaddr, cu);
}
local_symbols = new->locals;
@@ -15829,7 +15830,7 @@ index 55868da..71fed38 100644
}
/* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
-@@ -3351,7 +3812,8 @@ dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
+@@ -3351,7 +3819,8 @@ dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
discontinuous, i.e. derived from DW_AT_ranges information. */
static int
dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
@@ -15839,7 +15840,7 @@ index 55868da..71fed38 100644
{
struct attribute *attr;
CORE_ADDR low = 0;
-@@ -3379,7 +3841,7 @@ dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
+@@ -3379,7 +3848,7 @@ dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
{
/* Value of the DW_AT_ranges attribute is the offset in the
.debug_ranges section. */
@@ -15848,7 +15849,7 @@ index 55868da..71fed38 100644
return 0;
/* Found discontinuous range of addresses. */
ret = -1;
-@@ -3418,7 +3880,7 @@ dwarf2_get_subprogram_pc_bounds (struct die_info *die,
+@@ -3418,7 +3887,7 @@ dwarf2_get_subprogram_pc_bounds (struct die_info *die,
CORE_ADDR low, high;
struct die_info *child = die->child;
@@ -15857,7 +15858,7 @@ index 55868da..71fed38 100644
{
*lowpc = min (*lowpc, low);
*highpc = max (*highpc, high);
-@@ -3455,7 +3917,7 @@ get_scope_pc_bounds (struct die_info *die,
+@@ -3455,7 +3924,7 @@ get_scope_pc_bounds (struct die_info *die,
CORE_ADDR best_high = (CORE_ADDR) 0;
CORE_ADDR current_low, current_high;
@@ -15866,7 +15867,7 @@ index 55868da..71fed38 100644
{
best_low = current_low;
best_high = current_high;
-@@ -3750,8 +4212,14 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die,
+@@ -3750,8 +4219,14 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die,
if (fieldname == NULL)
return;
@@ -15882,7 +15883,7 @@ index 55868da..71fed38 100644
/* The name is already allocated along with this objfile, so we don't
need to duplicate it for the type. */
-@@ -3881,8 +4349,14 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
+@@ -3881,8 +4356,14 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
if (fieldname == NULL)
return;
@@ -15898,7 +15899,7 @@ index 55868da..71fed38 100644
/* Look up member function name in fieldlist. */
for (i = 0; i < fip->nfnfields; i++)
-@@ -3926,7 +4400,7 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
+@@ -3926,7 +4407,7 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
/* The name is already allocated along with this objfile, so we don't
need to duplicate it for the type. */
fnp->physname = physname ? physname : "";
@@ -15907,7 +15908,7 @@ index 55868da..71fed38 100644
this_type = read_type_die (die, cu);
if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
{
-@@ -4110,7 +4584,7 @@ quirk_gcc_member_function_pointer (struct die_info *die, struct dwarf2_cu *cu)
+@@ -4110,7 +4591,7 @@ quirk_gcc_member_function_pointer (struct die_info *die, struct dwarf2_cu *cu)
return NULL;
domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
@@ -15916,7 +15917,7 @@ index 55868da..71fed38 100644
smash_to_method_type (type, domain_type, TYPE_TARGET_TYPE (pfn_type),
TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
TYPE_VARARGS (pfn_type));
-@@ -4147,7 +4621,7 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -4147,7 +4628,7 @@ read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
if (type)
return type;
@@ -15925,7 +15926,7 @@ index 55868da..71fed38 100644
INIT_CPLUS_SPECIFIC (type);
name = dwarf2_name (die, cu);
if (name != NULL)
-@@ -4360,7 +4834,7 @@ read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -4360,7 +4841,7 @@ read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
struct attribute *attr;
const char *name;
@@ -15934,7 +15935,7 @@ index 55868da..71fed38 100644
TYPE_CODE (type) = TYPE_CODE_ENUM;
name = dwarf2_full_name (die, cu);
-@@ -4410,10 +4884,15 @@ determine_class_name (struct die_info *die, struct dwarf2_cu *cu)
+@@ -4410,10 +4891,15 @@ determine_class_name (struct die_info *die, struct dwarf2_cu *cu)
{
if (child->tag == DW_TAG_subprogram)
{
@@ -15953,7 +15954,7 @@ index 55868da..71fed38 100644
if (phys_prefix != NULL)
{
-@@ -4510,6 +4989,29 @@ process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
+@@ -4510,6 +4996,29 @@ process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
new_symbol (die, this_type, cu);
}
@@ -15983,7 +15984,7 @@ index 55868da..71fed38 100644
/* Extract all information from a DW_TAG_array_type DIE and put it in
the DIE's type field. For now, this only handles one dimensional
arrays. */
-@@ -4523,7 +5025,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -4523,7 +5032,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
struct type *element_type, *range_type, *index_type;
struct type **range_types = NULL;
struct attribute *attr;
@@ -15992,7 +15993,7 @@ index 55868da..71fed38 100644
struct cleanup *back_to;
char *name;
-@@ -4570,16 +5072,11 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -4570,16 +5079,11 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
type = element_type;
if (read_array_order (die, cu) == DW_ORD_col_major)
@@ -16014,7 +16015,7 @@ index 55868da..71fed38 100644
/* Understand Dwarf2 support for vector types (like they occur on
the PowerPC w/ AltiVec). Gcc just adds another attribute to the
-@@ -4646,12 +5143,14 @@ read_set_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -4646,12 +5150,14 @@ read_set_type (struct die_info *die, struct dwarf2_cu *cu)
return set_die_type (die, set_type, cu);
}
@@ -16031,7 +16032,7 @@ index 55868da..71fed38 100644
struct attribute *attr;
struct symbol *sym;
CORE_ADDR base = (CORE_ADDR) 0;
-@@ -4676,10 +5175,40 @@ read_common_block (struct die_info *die, struct dwarf2_cu *cu)
+@@ -4676,10 +5182,40 @@ read_common_block (struct die_info *die, struct dwarf2_cu *cu)
}
if (die->child != NULL)
{
@@ -16072,7 +16073,7 @@ index 55868da..71fed38 100644
attr = dwarf2_attr (child_die, DW_AT_data_member_location, cu);
if (attr)
{
-@@ -4687,8 +5216,25 @@ read_common_block (struct die_info *die, struct dwarf2_cu *cu)
+@@ -4687,8 +5223,25 @@ read_common_block (struct die_info *die, struct dwarf2_cu *cu)
base + decode_locdesc (DW_BLOCK (attr), cu);
add_symbol_to_list (sym, &global_symbols);
}
@@ -16098,7 +16099,7 @@ index 55868da..71fed38 100644
}
}
-@@ -4756,9 +5302,7 @@ read_namespace (struct die_info *die, struct dwarf2_cu *cu)
+@@ -4756,9 +5309,7 @@ read_namespace (struct die_info *die, struct dwarf2_cu *cu)
if (is_anonymous)
{
const char *previous_prefix = determine_prefix (die, cu);
@@ -16109,7 +16110,7 @@ index 55868da..71fed38 100644
}
}
-@@ -4951,29 +5495,95 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -4951,29 +5502,95 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
struct objfile *objfile = cu->objfile;
struct type *type, *range_type, *index_type, *char_type;
struct attribute *attr;
@@ -16223,7 +16224,7 @@ index 55868da..71fed38 100644
type = create_string_type (NULL, range_type);
return set_die_type (die, type, cu);
-@@ -5067,7 +5677,6 @@ static struct type *
+@@ -5067,7 +5684,6 @@ static struct type *
read_typedef (struct die_info *die, struct dwarf2_cu *cu)
{
struct objfile *objfile = cu->objfile;
@@ -16231,7 +16232,7 @@ index 55868da..71fed38 100644
const char *name = NULL;
struct type *this_type;
-@@ -5175,8 +5784,8 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -5175,8 +5791,8 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
struct type *base_type;
struct type *range_type;
struct attribute *attr;
@@ -16242,7 +16243,7 @@ index 55868da..71fed38 100644
char *name;
base_type = die_type (die, cu);
-@@ -5189,42 +5798,90 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -5189,42 +5805,90 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
0, NULL, cu->objfile);
}
@@ -16363,7 +16364,7 @@ index 55868da..71fed38 100644
name = dwarf2_name (die, cu);
if (name)
-@@ -5386,10 +6043,13 @@ read_die_and_siblings (gdb_byte *info_ptr, bfd *abfd,
+@@ -5386,10 +6050,13 @@ read_die_and_siblings (gdb_byte *info_ptr, bfd *abfd,
}
/* Decompress a section that was compressed using zlib. Store the
@@ -16379,7 +16380,7 @@ index 55868da..71fed38 100644
gdb_byte **outbuf, bfd_size_type *outsize)
{
bfd *abfd = objfile->obfd;
-@@ -5405,6 +6065,7 @@ zlib_decompress_section (struct objfile *objfile, asection *sectp,
+@@ -5405,6 +6072,7 @@ zlib_decompress_section (struct objfile *objfile, asection *sectp,
z_stream strm;
int rc;
int header_size = 12;
@@ -16387,7 +16388,7 @@ index 55868da..71fed38 100644
if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
|| bfd_bread (compressed_buffer, compressed_size, abfd) != compressed_size)
-@@ -5434,8 +6095,13 @@ zlib_decompress_section (struct objfile *objfile, asection *sectp,
+@@ -5434,8 +6102,13 @@ zlib_decompress_section (struct objfile *objfile, asection *sectp,
strm.avail_in = compressed_size - header_size;
strm.next_in = (Bytef*) compressed_buffer + header_size;
strm.avail_out = uncompressed_size;
@@ -16403,7 +16404,7 @@ index 55868da..71fed38 100644
rc = inflateInit (&strm);
while (strm.avail_in > 0)
{
-@@ -5456,6 +6122,8 @@ zlib_decompress_section (struct objfile *objfile, asection *sectp,
+@@ -5456,6 +6129,8 @@ zlib_decompress_section (struct objfile *objfile, asection *sectp,
error (_("Dwarf Error: concluding DWARF uncompression in '%s': %d"),
bfd_get_filename (abfd), rc);
@@ -16412,7 +16413,7 @@ index 55868da..71fed38 100644
xfree (compressed_buffer);
*outbuf = uncompressed_buffer;
*outsize = uncompressed_size;
-@@ -5463,17 +6131,20 @@ zlib_decompress_section (struct objfile *objfile, asection *sectp,
+@@ -5463,17 +6138,20 @@ zlib_decompress_section (struct objfile *objfile, asection *sectp,
}
@@ -16438,7 +16439,7 @@ index 55868da..71fed38 100644
if (size == 0)
return NULL;
-@@ -5486,30 +6157,49 @@ dwarf2_read_section (struct objfile *objfile, asection *sectp)
+@@ -5486,30 +6164,49 @@ dwarf2_read_section (struct objfile *objfile, asection *sectp)
/* Upon decompression, update the buffer and its size. */
if (strncmp (header, "ZLIB", sizeof (header)) == 0)
{
@@ -16491,7 +16492,7 @@ index 55868da..71fed38 100644
/* In DWARF version 2, the description of the debugging information is
stored in a separate .debug_abbrev section. Before we read any
dies from a section we read in all abbreviations and install them
-@@ -5914,15 +6604,6 @@ read_partial_die (struct partial_die_info *part_die,
+@@ -5914,15 +6611,6 @@ read_partial_die (struct partial_die_info *part_die,
struct attribute attr;
int has_low_pc_attr = 0;
int has_high_pc_attr = 0;
@@ -16507,7 +16508,7 @@ index 55868da..71fed38 100644
memset (part_die, 0, sizeof (struct partial_die_info));
-@@ -5945,47 +6626,35 @@ read_partial_die (struct partial_die_info *part_die,
+@@ -5945,47 +6633,35 @@ read_partial_die (struct partial_die_info *part_die,
switch (attr.name)
{
case DW_AT_name:
@@ -16573,7 +16574,7 @@ index 55868da..71fed38 100644
case DW_AT_location:
/* Support the .debug_loc offsets */
if (attr_form_is_block (&attr))
-@@ -6002,9 +6671,6 @@ read_partial_die (struct partial_die_info *part_die,
+@@ -6002,9 +6678,6 @@ read_partial_die (struct partial_die_info *part_die,
"partial symbol information");
}
break;
@@ -16583,7 +16584,7 @@ index 55868da..71fed38 100644
case DW_AT_external:
part_die->is_external = DW_UNSND (&attr);
break;
-@@ -6029,10 +6695,6 @@ read_partial_die (struct partial_die_info *part_die,
+@@ -6029,10 +6702,6 @@ read_partial_die (struct partial_die_info *part_die,
part_die->sibling = dwarf2_per_objfile->info_buffer
+ dwarf2_get_ref_die_offset (&attr);
break;
@@ -16594,7 +16595,7 @@ index 55868da..71fed38 100644
case DW_AT_byte_size:
part_die->has_byte_size = 1;
break;
-@@ -6074,13 +6736,6 @@ read_partial_die (struct partial_die_info *part_die,
+@@ -6074,13 +6743,6 @@ read_partial_die (struct partial_die_info *part_die,
|| dwarf2_per_objfile->has_section_at_zero))
part_die->has_pc_info = 1;
@@ -16608,7 +16609,7 @@ index 55868da..71fed38 100644
return info_ptr;
}
-@@ -6173,7 +6828,9 @@ fixup_partial_die (struct partial_die_info *part_die,
+@@ -6173,7 +6835,9 @@ fixup_partial_die (struct partial_die_info *part_die,
/* If we found a reference attribute and the DIE has no name, try
to find a name in the referred to DIE. */
@@ -16619,7 +16620,7 @@ index 55868da..71fed38 100644
{
struct partial_die_info *spec_die;
-@@ -6189,6 +6846,9 @@ fixup_partial_die (struct partial_die_info *part_die,
+@@ -6189,6 +6853,9 @@ fixup_partial_die (struct partial_die_info *part_die,
if (spec_die->is_external)
part_die->is_external = spec_die->is_external;
}
@@ -16629,7 +16630,7 @@ index 55868da..71fed38 100644
}
/* Set default names for some unnamed DIEs. */
-@@ -7512,10 +8172,12 @@ var_decode_location (struct attribute *attr, struct symbol *sym,
+@@ -7512,10 +8179,12 @@ var_decode_location (struct attribute *attr, struct symbol *sym,
(i.e. when the value of a register or memory location is
referenced, or a thread-local block, etc.). Then again, it might
not be worthwhile. I'm assuming that it isn't unless performance
@@ -16644,7 +16645,7 @@ index 55868da..71fed38 100644
}
/* Given a pointer to a DWARF information entry, figure out if we need
-@@ -7538,20 +8200,43 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
+@@ -7538,20 +8207,43 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
if (die->tag != DW_TAG_namespace)
@@ -16691,7 +16692,7 @@ index 55868da..71fed38 100644
/* Default assumptions.
Use the passed type or decode it from the die. */
-@@ -7637,7 +8322,15 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
+@@ -7637,7 +8329,15 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
if (attr)
{
var_decode_location (attr, sym, cu);
@@ -16708,7 +16709,7 @@ index 55868da..71fed38 100644
if (attr2 && (DW_UNSND (attr2) != 0))
add_symbol_to_list (sym, &global_symbols);
else
-@@ -7780,6 +8473,11 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
+@@ -7780,6 +8480,11 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
SYMBOL_CLASS (sym) = LOC_TYPEDEF;
add_symbol_to_list (sym, &global_symbols);
break;
@@ -16720,7 +16721,7 @@ index 55868da..71fed38 100644
default:
/* Not a tag we recognize. Hopefully we aren't processing
trash data, but since we must specifically ignore things
-@@ -8048,6 +8746,9 @@ read_type_die (struct die_info *die, struct dwarf2_cu *cu)
+@@ -8048,6 +8753,9 @@ read_type_die (struct die_info *die, struct dwarf2_cu *cu)
break;
}
@@ -16730,7 +16731,7 @@ index 55868da..71fed38 100644
return this_type;
}
-@@ -8128,6 +8829,19 @@ determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
+@@ -8128,6 +8836,19 @@ determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
members; no typedefs, no member functions, et cetera.
So it does not need a prefix. */
return "";
@@ -16750,7 +16751,7 @@ index 55868da..71fed38 100644
default:
return determine_prefix (parent, cu);
}
-@@ -8192,23 +8906,62 @@ dwarf2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
+@@ -8192,23 +8913,62 @@ dwarf2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
if (attr && DW_STRING (attr))
return DW_STRING (attr);
@@ -16819,7 +16820,7 @@ index 55868da..71fed38 100644
}
/* Return the die that this die in an extension of, or NULL if there
-@@ -8703,6 +9456,8 @@ dwarf_form_name (unsigned form)
+@@ -8703,6 +9463,8 @@ dwarf_form_name (unsigned form)
return "DW_FORM_ref_udata";
case DW_FORM_indirect:
return "DW_FORM_indirect";
@@ -16828,15 +16829,7 @@ index 55868da..71fed38 100644
default:
return "DW_FORM_";
}
-@@ -9248,6 +10003,7 @@ dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
- break;
- case DW_FORM_string:
- case DW_FORM_strp:
-+ case GDB_FORM_cached_string:
- fprintf_unfiltered (f, "string: \"%s\"",
- DW_STRING (&die->attrs[i])
- ? DW_STRING (&die->attrs[i]) : "");
-@@ -9353,26 +10109,35 @@ dwarf2_get_ref_die_offset (struct attribute *attr)
+@@ -9353,26 +10115,35 @@ dwarf2_get_ref_die_offset (struct attribute *attr)
return result;
}
@@ -16887,7 +16880,7 @@ index 55868da..71fed38 100644
}
/* THIS_CU has a reference to PER_CU. If necessary, load the new compilation
-@@ -9963,6 +10728,17 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
+@@ -9963,6 +10734,17 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
{
gdb_byte *mac_ptr, *mac_end;
struct macro_source_file *current_file = 0;
@@ -16905,7 +16898,7 @@ index 55868da..71fed38 100644
if (dwarf2_per_objfile->macinfo_buffer == NULL)
{
-@@ -9970,19 +10746,24 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
+@@ -9970,19 +10752,24 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
return;
}
@@ -16934,7 +16927,7 @@ index 55868da..71fed38 100644
}
macinfo_type = read_1_byte (abfd, mac_ptr);
-@@ -9993,7 +10774,81 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
+@@ -9993,7 +10780,81 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
/* A zero macinfo type indicates the end of the macro
information. */
case 0:
@@ -17017,7 +17010,7 @@ index 55868da..71fed38 100644
case DW_MACINFO_define:
case DW_MACINFO_undef:
-@@ -10008,19 +10863,31 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
+@@ -10008,19 +10869,31 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
mac_ptr += bytes_read;
if (! current_file)
@@ -17060,7 +17053,7 @@ index 55868da..71fed38 100644
}
break;
-@@ -10034,9 +10901,22 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
+@@ -10034,9 +10907,22 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
mac_ptr += bytes_read;
@@ -17086,7 +17079,7 @@ index 55868da..71fed38 100644
}
break;
-@@ -10090,7 +10970,7 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
+@@ -10090,7 +10976,7 @@ dwarf_decode_macros (struct line_header *lh, unsigned int offset,
}
break;
}
@@ -17095,7 +17088,7 @@ index 55868da..71fed38 100644
}
/* Check if the attribute's form is a DW_FORM_block*
-@@ -10150,6 +11030,34 @@ attr_form_is_constant (struct attribute *attr)
+@@ -10150,6 +11036,34 @@ attr_form_is_constant (struct attribute *attr)
}
}
@@ -17130,7 +17123,7 @@ index 55868da..71fed38 100644
static void
dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
struct dwarf2_cu *cu)
-@@ -10179,35 +11087,24 @@ dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
+@@ -10179,35 +11093,24 @@ dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
SYMBOL_OPS (sym) = &dwarf2_loclist_funcs;
SYMBOL_LOCATION_BATON (sym) = baton;
}
@@ -17180,7 +17173,7 @@ index 55868da..71fed38 100644
}
}
-@@ -10482,6 +11379,31 @@ offset_and_type_eq (const void *item_lhs, const void *item_rhs)
+@@ -10482,6 +11385,31 @@ offset_and_type_eq (const void *item_lhs, const void *item_rhs)
return ofs_lhs->offset == ofs_rhs->offset;
}
@@ -17212,7 +17205,7 @@ index 55868da..71fed38 100644
/* Set the type associated with DIE to TYPE. Save it in CU's hash
table if necessary. For convenience, return TYPE. */
-@@ -10490,6 +11412,8 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
+@@ -10490,6 +11418,8 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
{
struct dwarf2_offset_and_type **slot, ofs;
@@ -29214,10 +29207,10 @@ index 0000000..a48c38c
+};
diff --git a/gdb/python/python-type.c b/gdb/python/python-type.c
new file mode 100644
-index 0000000..772a011
+index 0000000..c851cdb
--- /dev/null
+++ b/gdb/python/python-type.c
-@@ -0,0 +1,821 @@
+@@ -0,0 +1,828 @@
+/* Python interface to types.
+
+ Copyright (C) 2008, 2009 Free Software Foundation, Inc.
@@ -29396,7 +29389,14 @@ index 0000000..772a011
+ if (PyObject_SetAttrString (result, "bitsize", arg) < 0)
+ goto failarg;
+
-+ arg = type_to_type_object (TYPE_FIELD_TYPE (type, field));
++ /* A field can have a NULL type in some situations. */
++ if (TYPE_FIELD_TYPE (type, field) == NULL)
++ {
++ arg = Py_None;
++ Py_INCREF (arg);
++ }
++ else
++ arg = type_to_type_object (TYPE_FIELD_TYPE (type, field));
+ if (!arg)
+ goto fail;
+ if (PyObject_SetAttrString (result, "type", arg) < 0)
@@ -32068,7 +32068,7 @@ index f0a7642..a32add5 100644
}
else if (SCM_IFLAGP (svalue)
diff --git a/gdb/stabsread.c b/gdb/stabsread.c
-index 2d7eb15..7423b32 100644
+index 2d7eb15..3b8eb29 100644
--- a/gdb/stabsread.c
+++ b/gdb/stabsread.c
@@ -322,7 +322,7 @@ dbx_alloc_type (int typenums[2], struct objfile *objfile)
@@ -32097,7 +32097,7 @@ index 2d7eb15..7423b32 100644
/* We would like to eliminate nameless symbols, but keep their types.
E.g. stab entry ":t10=*2" should produce a type 10, which is a pointer
-@@ -683,9 +684,37 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
+@@ -683,9 +684,24 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
{
normal:
SYMBOL_LANGUAGE (sym) = current_subfile->language;
@@ -32120,24 +32120,11 @@ index 2d7eb15..7423b32 100644
+
if (SYMBOL_LANGUAGE (sym) == language_cplus)
- cp_scan_for_anonymous_namespaces (sym);
-+ {
-+ char *name = alloca (p - string + 1);
-+ memcpy (name, string, p - string);
-+ name[p - string] = '\0';
-+ new_name = cp_canonicalize_string (name);
-+ cp_scan_for_anonymous_namespaces (sym);
-+ }
-+ if (new_name != NULL)
-+ {
-+ SYMBOL_SET_NAMES (sym, new_name, strlen (new_name), objfile);
-+ xfree (new_name);
-+ }
-+ else
-+ SYMBOL_SET_NAMES (sym, string, p - string, objfile);
++ cp_scan_for_anonymous_namespaces (sym);
}
p++;
-@@ -1519,18 +1548,35 @@ again:
+@@ -1519,18 +1535,35 @@ again:
if (*p != ':')
return error_type (pp, objfile);
}
@@ -32541,7 +32528,7 @@ index 88f8326..50671c1 100644
extern void dwarf2_build_frame_info (struct objfile *);
diff --git a/gdb/symtab.c b/gdb/symtab.c
-index d2ba1f3..b4da8c1 100644
+index d2ba1f3..c1c4459 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -42,6 +42,7 @@
@@ -32560,7 +32547,18 @@ index d2ba1f3..b4da8c1 100644
#include "observer.h"
#include "gdb_assert.h"
#include "solist.h"
-@@ -273,7 +275,7 @@ lookup_partial_symtab (const char *name)
+@@ -94,7 +96,9 @@ static
+ struct symbol *lookup_symbol_aux_local (const char *name,
+ const char *linkage_name,
+ const struct block *block,
+- const domain_enum domain);
++ const domain_enum domain,
++ enum language lang,
++ int *is_a_field_of_this);
+
+ static
+ struct symbol *lookup_symbol_aux_symtabs (int block_index,
+@@ -273,7 +277,7 @@ lookup_partial_symtab (const char *name)
make_cleanup (xfree, real_path);
}
@@ -32569,7 +32567,7 @@ index d2ba1f3..b4da8c1 100644
{
if (FILENAME_CMP (name, pst->filename) == 0)
{
-@@ -870,7 +872,13 @@ find_pc_sect_psymtab (CORE_ADDR pc, struct obj_section *section)
+@@ -870,7 +874,13 @@ find_pc_sect_psymtab (CORE_ADDR pc, struct obj_section *section)
than the later used TEXTLOW/TEXTHIGH one. */
ALL_OBJFILES (objfile)
@@ -32584,7 +32582,7 @@ index d2ba1f3..b4da8c1 100644
{
struct partial_symtab *pst;
-@@ -903,6 +911,7 @@ find_pc_sect_psymtab (CORE_ADDR pc, struct obj_section *section)
+@@ -903,6 +913,7 @@ find_pc_sect_psymtab (CORE_ADDR pc, struct obj_section *section)
return pst;
}
}
@@ -32592,7 +32590,7 @@ index d2ba1f3..b4da8c1 100644
/* Existing PSYMTABS_ADDRMAP mapping is present even for PARTIAL_SYMTABs
which still have no corresponding full SYMTABs read. But it is not
-@@ -1170,6 +1179,22 @@ fixup_psymbol_section (struct partial_symbol *psym, struct objfile *objfile)
+@@ -1170,6 +1181,22 @@ fixup_psymbol_section (struct partial_symbol *psym, struct objfile *objfile)
return psym;
}
@@ -32615,7 +32613,7 @@ index d2ba1f3..b4da8c1 100644
/* Find the definition for a specified symbol name NAME
in domain DOMAIN, visible from lexical block BLOCK.
Returns the struct symbol pointer, or zero if no symbol is found.
-@@ -1200,6 +1225,11 @@ lookup_symbol_in_language (const char *name, const struct block *block,
+@@ -1200,6 +1227,11 @@ lookup_symbol_in_language (const char *name, const struct block *block,
int needtofreename = 0;
struct symbol *returnval;
@@ -32627,7 +32625,7 @@ index d2ba1f3..b4da8c1 100644
modified_name = name;
/* If we are using C++ or Java, demangle the name before doing a lookup, so
-@@ -1213,6 +1243,17 @@ lookup_symbol_in_language (const char *name, const struct block *block,
+@@ -1213,6 +1245,17 @@ lookup_symbol_in_language (const char *name, const struct block *block,
modified_name = demangled_name;
needtofreename = 1;
}
@@ -32645,37 +32643,79 @@ index d2ba1f3..b4da8c1 100644
}
else if (lang == language_java)
{
-@@ -1296,13 +1337,15 @@ lookup_symbol_aux (const char *name, const char *linkage_name,
- && block != NULL)
- {
- struct symbol *sym = NULL;
-+ const struct block *function_block = block;
-+
- /* 'this' is only defined in the function's block, so find the
- enclosing function block. */
+@@ -1283,8 +1326,8 @@ lookup_symbol_aux (const char *name, const char *linkage_name,
+ /* Search specified block and its superiors. Don't search
+ STATIC_BLOCK or GLOBAL_BLOCK. */
+
+- sym = lookup_symbol_aux_local (name, linkage_name, block, domain);
+- if (sym != NULL)
++ sym = lookup_symbol_aux_local (name, linkage_name, block, domain, language, is_a_field_of_this);
++ if (sym != NULL || (is_a_field_of_this && *is_a_field_of_this))
+ return sym;
+
+ /* If requested to do so by the caller and if appropriate for LANGUAGE,
+@@ -1292,41 +1335,6 @@ lookup_symbol_aux (const char *name, const char *linkage_name,
+
+ langdef = language_def (language);
+
+- if (langdef->la_name_of_this != NULL && is_a_field_of_this != NULL
+- && block != NULL)
+- {
+- struct symbol *sym = NULL;
+- /* 'this' is only defined in the function's block, so find the
+- enclosing function block. */
- for (; block && !BLOCK_FUNCTION (block);
- block = BLOCK_SUPERBLOCK (block));
-+ for (; function_block && !BLOCK_FUNCTION (function_block);
-+ function_block = BLOCK_SUPERBLOCK (function_block));
-
+-
- if (block && !dict_empty (BLOCK_DICT (block)))
- sym = lookup_block_symbol (block, langdef->la_name_of_this,
-+ if (function_block && !dict_empty (BLOCK_DICT (function_block)))
-+ sym = lookup_block_symbol (function_block, langdef->la_name_of_this,
- NULL, VAR_DOMAIN);
- if (sym)
- {
-@@ -1361,22 +1404,24 @@ lookup_symbol_aux_local (const char *name, const char *linkage_name,
- const domain_enum domain)
+- NULL, VAR_DOMAIN);
+- if (sym)
+- {
+- struct type *t = sym->type;
+-
+- /* I'm not really sure that type of this can ever
+- be typedefed; just be safe. */
+- CHECK_TYPEDEF (t);
+- if (TYPE_CODE (t) == TYPE_CODE_PTR
+- || TYPE_CODE (t) == TYPE_CODE_REF)
+- t = TYPE_TARGET_TYPE (t);
+-
+- if (TYPE_CODE (t) != TYPE_CODE_STRUCT
+- && TYPE_CODE (t) != TYPE_CODE_UNION)
+- error (_("Internal error: `%s' is not an aggregate"),
+- langdef->la_name_of_this);
+-
+- if (check_field (t, name))
+- {
+- *is_a_field_of_this = 1;
+- return NULL;
+- }
+- }
+- }
+
+ /* Now do whatever is appropriate for LANGUAGE to look
+ up static and global variables. */
+@@ -1358,25 +1366,70 @@ lookup_symbol_aux (const char *name, const char *linkage_name,
+ static struct symbol *
+ lookup_symbol_aux_local (const char *name, const char *linkage_name,
+ const struct block *block,
+- const domain_enum domain)
++ const domain_enum domain,
++ enum language language,
++ int *is_a_field_of_this)
{
struct symbol *sym;
- const struct block *static_block = block_static_block (block);
+ const struct block *global_block = block_global_block (block);
+ const struct block *block_iterator = block;
++ const struct language_defn *langdef;
- /* Check if either no block is specified or it's a global block. */
+- /* Check if either no block is specified or it's a global block. */
++ langdef = language_def (language);
- if (static_block == NULL)
++ /* Check if either no block is specified or it's a global block. */
+ if (global_block == NULL)
return NULL;
@@ -32683,11 +32723,50 @@ index d2ba1f3..b4da8c1 100644
+ while (block_iterator != global_block)
{
- sym = lookup_symbol_aux_block (name, linkage_name, block, domain);
++ /* First check the local lexical level */
+ sym = lookup_symbol_aux_block (name, linkage_name, block_iterator, domain);
if (sym != NULL)
return sym;
- block = BLOCK_SUPERBLOCK (block);
+
++ if (language == language_cplus)
++ {
++ /* Check class scope, if we have reach the function block */
++ if(BLOCK_FUNCTION (block_iterator)){
++
++ if (block_iterator && !dict_empty (BLOCK_DICT (block_iterator)))
++ sym = lookup_block_symbol (block_iterator, langdef->la_name_of_this,
++ NULL, VAR_DOMAIN);
++ if (sym)
++ {
++ struct type *t = sym->type;
++
++ /* I'm not really sure that type of this can ever
++ be typedefed; just be safe. */
++ CHECK_TYPEDEF (t);
++ if (TYPE_CODE (t) == TYPE_CODE_PTR
++ || TYPE_CODE (t) == TYPE_CODE_REF)
++ t = TYPE_TARGET_TYPE (t);
++
++ if (TYPE_CODE (t) != TYPE_CODE_STRUCT
++ && TYPE_CODE (t) != TYPE_CODE_UNION)
++ error (_("Internal error: `%s' is not an aggregate"),
++ langdef->la_name_of_this);
++
++ if (check_field (t, name))
++ {
++ *is_a_field_of_this = 1;
++ return NULL;
++ }
++ }
++ }
++
++ /* Check the namespace scope */
++ sym = langdef->la_lookup_symbol_nonlocal (name, linkage_name, block, domain);
++ if (sym != NULL)
++ return sym;
++ }
++
+ block_iterator = BLOCK_SUPERBLOCK (block_iterator);
}
@@ -32696,7 +32775,7 @@ index d2ba1f3..b4da8c1 100644
return NULL;
}
-@@ -1450,6 +1495,7 @@ lookup_global_symbol_from_objfile (const struct objfile *objfile,
+@@ -1450,6 +1503,7 @@ lookup_global_symbol_from_objfile (const struct objfile *objfile,
}
/* Now go through psymtabs. */
@@ -32704,7 +32783,7 @@ index d2ba1f3..b4da8c1 100644
ALL_OBJFILE_PSYMTABS (objfile, ps)
{
if (!ps->readin
-@@ -1520,7 +1566,7 @@ lookup_symbol_aux_psymtabs (int block_index, const char *name,
+@@ -1520,7 +1574,7 @@ lookup_symbol_aux_psymtabs (int block_index, const char *name,
struct symtab *s;
const int psymtab_index = (block_index == GLOBAL_BLOCK ? 1 : 0);
@@ -32713,7 +32792,7 @@ index d2ba1f3..b4da8c1 100644
{
if (!ps->readin
&& lookup_partial_symbol (ps, name, linkage_name,
-@@ -1805,7 +1851,11 @@ basic_lookup_transparent_type (const char *name)
+@@ -1805,7 +1859,11 @@ basic_lookup_transparent_type (const char *name)
}
}
@@ -32726,7 +32805,7 @@ index d2ba1f3..b4da8c1 100644
{
if (!ps->readin && lookup_partial_symbol (ps, name, NULL,
1, STRUCT_DOMAIN))
-@@ -1853,7 +1903,12 @@ basic_lookup_transparent_type (const char *name)
+@@ -1853,7 +1911,12 @@ basic_lookup_transparent_type (const char *name)
}
}
@@ -32740,7 +32819,7 @@ index d2ba1f3..b4da8c1 100644
{
if (!ps->readin && lookup_partial_symbol (ps, name, NULL, 0, STRUCT_DOMAIN))
{
-@@ -1894,7 +1949,21 @@ find_main_psymtab (void)
+@@ -1894,7 +1957,21 @@ find_main_psymtab (void)
struct partial_symtab *pst;
struct objfile *objfile;
@@ -32763,7 +32842,7 @@ index d2ba1f3..b4da8c1 100644
{
if (lookup_partial_symbol (pst, main_name (), NULL, 1, VAR_DOMAIN))
{
-@@ -3085,7 +3154,7 @@ search_symbols (char *regexp, domain_enum kind, int nfiles, char *files[],
+@@ -3085,7 +3162,7 @@ search_symbols (char *regexp, domain_enum kind, int nfiles, char *files[],
matching the regexp. That way we don't have to reproduce all of
the machinery below. */
@@ -35840,6 +35919,28 @@ index d62e8bf..aa65373 100644
# x/0 j doesn't produce any output and terminates PA64 process when testing
if [istarget "hppa2.0w-hp-hpux11*"] {
+diff --git a/gdb/testsuite/gdb.base/ending-run.exp b/gdb/testsuite/gdb.base/ending-run.exp
+index 42b4577..cf33602 100644
+--- a/gdb/testsuite/gdb.base/ending-run.exp
++++ b/gdb/testsuite/gdb.base/ending-run.exp
+@@ -69,7 +69,7 @@ gdb_expect {
+ gdb_test "b ending-run.c:1" ".*Breakpoint.*4.*"
+ gdb_test "b ending-run.c:14" ".*Note.*also.*Breakpoint.*5.*" "b ending-run.c:14, two"
+ gdb_test "cle ending-run.c:14" \
+- ".*Deleted breakpoints 4 5.*" "Cleared 2 by line"
++ ".*Deleted breakpoint 5.*" "Cleared 2 by line"
+
+ send_gdb "inf line ending-run.c:14\n"
+ gdb_expect {
+@@ -77,7 +77,7 @@ gdb_expect {
+ set line_nine $expect_out(1,string)
+ gdb_test "b ending-run.c:14" ".*Breakpoint 6.*ending-run.c, line 14.*"
+ gdb_test "b *$line_nine" ".*Note.*also.*Breakpoint 7.*" "Breakpoint 7 at *ending-run.c:14"
+- gdb_test "cle" ".*Deleted breakpoints 6 7.*" "Clear 2 by default"
++ gdb_test "cle" ".*Deleted breakpoints 4 6 7.*" "Clear 2 by default"
+ }
+ -re ".*$gdb_prompt $" {
+ fail "need to fix test for new compile outcome"
diff --git a/gdb/testsuite/gdb.base/help.exp b/gdb/testsuite/gdb.base/help.exp
index 4618a2c..40830c3 100644
--- a/gdb/testsuite/gdb.base/help.exp
@@ -39436,6 +39537,76 @@ index 495ae45..d08d7a4 100644
-re ".*time_at_startup = get_run_time.*$gdb_prompt $" {
set description "next over get_run_time and everything it calls"
set command "next"
+diff --git a/gdb/testsuite/gdb.mi/mi-break.exp b/gdb/testsuite/gdb.mi/mi-break.exp
+index 6ea59fc..0f91af7 100644
+--- a/gdb/testsuite/gdb.mi/mi-break.exp
++++ b/gdb/testsuite/gdb.mi/mi-break.exp
+@@ -85,11 +85,11 @@ proc test_tbreak_creation_and_listing {} {
+ mi_create_breakpoint "-t basics.c:callee2" 2 del callee2 ".*basics.c" $line_callee2_body $hex \
+ "insert temp breakpoint at basics.c:callee2"
+
+- mi_create_breakpoint "-t basics.c:$line_callee3_head" 3 del callee3 ".*basics.c" $line_callee3_body $hex \
++ mi_create_breakpoint "-t basics.c:$line_callee3_head" 3 del callee3 ".*basics.c" $line_callee3_head $hex \
+ "insert temp breakpoint at basics.c:\$line_callee3_head"
+
+ # Getting the quoting right is tricky. That is "\"\":$line_callee4_head"
+- mi_create_breakpoint "-t \"\\\"${srcfile}\\\":$line_callee4_head\"" 4 del callee4 ".*basics.c" $line_callee4_body $hex \
++ mi_create_breakpoint "-t \"\\\"${srcfile}\\\":$line_callee4_head\"" 4 del callee4 ".*basics.c" $line_callee4_head $hex \
+ "insert temp breakpoint at \"\":\$line_callee4_head"
+
+ mi_gdb_test "666-break-list" \
+diff --git a/gdb/testsuite/gdb.mi/mi-simplerun.exp b/gdb/testsuite/gdb.mi/mi-simplerun.exp
+index 654146a..14a1446 100644
+--- a/gdb/testsuite/gdb.mi/mi-simplerun.exp
++++ b/gdb/testsuite/gdb.mi/mi-simplerun.exp
+@@ -74,10 +74,10 @@ proc test_breakpoints_creation_and_listing {} {
+ mi_create_breakpoint "basics.c:callee2" 2 keep callee2 ".*basics.c" $line_callee2_body $hex \
+ "insert breakpoint at basics.c:callee2"
+
+- mi_create_breakpoint "basics.c:$line_callee3_head" 3 keep callee3 ".*basics.c" $line_callee3_body $hex \
++ mi_create_breakpoint "basics.c:$line_callee3_head" 3 keep callee3 ".*basics.c" $line_callee3_head $hex \
+ "insert breakpoint at basics.c:\$line_callee3_head"
+
+- mi_create_breakpoint "\"\\\"${srcfile}\\\":$line_callee4_head\"" 4 keep callee4 ".*basics.c" $line_callee4_body $hex \
++ mi_create_breakpoint "\"\\\"${srcfile}\\\":$line_callee4_head\"" 4 keep callee4 ".*basics.c" $line_callee4_head $hex \
+ "insert breakpoint at \"\":\$line_callee4_head"
+
+ mi_gdb_test "204-break-list" \
+diff --git a/gdb/testsuite/gdb.mi/mi2-break.exp b/gdb/testsuite/gdb.mi/mi2-break.exp
+index d08081a..7f43315 100644
+--- a/gdb/testsuite/gdb.mi/mi2-break.exp
++++ b/gdb/testsuite/gdb.mi/mi2-break.exp
+@@ -85,11 +85,11 @@ proc test_tbreak_creation_and_listing {} {
+ mi_create_breakpoint "-t basics.c:callee2" 2 del callee2 ".*basics.c" $line_callee2_body $hex \
+ "insert temp breakpoint at basics.c:callee2"
+
+- mi_create_breakpoint "-t basics.c:$line_callee3_head" 3 del callee3 ".*basics.c" $line_callee3_body $hex \
++ mi_create_breakpoint "-t basics.c:$line_callee3_head" 3 del callee3 ".*basics.c" $line_callee3_head $hex \
+ "insert temp breakpoint at basics.c:\$line_callee3_head"
+
+ # Getting the quoting right is tricky. That is "\"\":$line_callee4_head"
+- mi_create_breakpoint "-t \"\\\"${srcfile}\\\":$line_callee4_head\"" 4 del callee4 ".*basics.c" $line_callee4_body $hex \
++ mi_create_breakpoint "-t \"\\\"${srcfile}\\\":$line_callee4_head\"" 4 del callee4 ".*basics.c" $line_callee4_head $hex \
+ "insert temp breakpoint at \"\":\$line_callee4_head"
+
+ mi_gdb_test "666-break-list" \
+diff --git a/gdb/testsuite/gdb.mi/mi2-simplerun.exp b/gdb/testsuite/gdb.mi/mi2-simplerun.exp
+index eddb2ed..13443ee 100644
+--- a/gdb/testsuite/gdb.mi/mi2-simplerun.exp
++++ b/gdb/testsuite/gdb.mi/mi2-simplerun.exp
+@@ -74,10 +74,10 @@ proc test_breakpoints_creation_and_listing {} {
+ mi_create_breakpoint "basics.c:callee2" 2 keep callee2 ".*basics.c" $line_callee2_body $hex \
+ "insert breakpoint at basics.c:callee2"
+
+- mi_create_breakpoint "basics.c:$line_callee3_head" 3 keep callee3 ".*basics.c" $line_callee3_body $hex \
++ mi_create_breakpoint "basics.c:$line_callee3_head" 3 keep callee3 ".*basics.c" $line_callee3_head $hex \
+ "insert breakpoint at basics.c:\$line_callee3_head"
+
+- mi_create_breakpoint "\"\\\"${srcfile}\\\":$line_callee4_head\"" 4 keep callee4 ".*basics.c" $line_callee4_body $hex \
++ mi_create_breakpoint "\"\\\"${srcfile}\\\":$line_callee4_head\"" 4 keep callee4 ".*basics.c" $line_callee4_head $hex \
+ "insert breakpoint at \"\":\$line_callee4_head"
+
+ mi_gdb_test "204-break-list" \
diff --git a/gdb/testsuite/gdb.opt/array-from-register-func.c b/gdb/testsuite/gdb.opt/array-from-register-func.c
new file mode 100644
index 0000000..729f457
diff --git a/gdb.spec b/gdb.spec
index e12adba..9683178 100644
--- a/gdb.spec
+++ b/gdb.spec
@@ -13,7 +13,7 @@ Version: 6.8.50.20090302
# The release always contains a leading reserved number, start it at 1.
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
-Release: 11%{?_with_upstream:.upstream}%{?dist}
+Release: 12%{?_with_upstream:.upstream}%{?dist}
License: GPLv3+
Group: Development/Debuggers
@@ -851,6 +851,14 @@ fi
%endif
%changelog
+* Fri Mar 27 2009 Jan Kratochvil - 6.8.50.20090302-12
+- Archer update to the snapshot: 837d9879980148af05eae540d92caeb7200f1813
+- Archer backport: 8340d06295c8db80c544503458305197891e0348
+ - Fixes [master] regression for Eclipse CDT testsuite.
+- Archer backport: 16328456d5740917ade0a49bcecc14c4564b9a99
+ - Fixes #2 [expr] compatibility with gcc-4.4 on gdb.cp/namespace-using.exp.
+- Rebase [expr] on the Keith Seitz's sync with FSF GDB fixing the former merge.
+
* Sun Mar 22 2009 Jan Kratochvil - 6.8.50.20090302-11
- Archer update to the snapshot: e734ed95d296a3342d4147873c4641cea6c4d7fe
- Archer backport: 1e1d73cda98b1adda884b80e07c7b4929c175628