From 3ce5394498a62ee276627a0e39087388dc349fe1 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Fri, 27 Mar 2009 08:52:16 +0000 Subject: [PATCH] - 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. --- gdb-6.8-inlining-addon.patch | 78 ++--- gdb-6.8-inlining.patch | 157 +++++----- gdb-archer.patch | 563 +++++++++++++++++++++++------------ gdb.spec | 10 +- 4 files changed, 493 insertions(+), 315 deletions(-) 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