public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Jan Kratochvil <jan.kratochvil@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 7.2.90.20110429 (which is a 7.3 pre-release).
Date: Sat, 27 Jun 2026 23:55:08 GMT [thread overview]
Message-ID: <178260450836.1.11049034940459639530.rpms-gdb-f314eb3eb50b@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/gdb
Branch : gdb-17.2-rebase-f44
Commit : f314eb3eb50b6293a333561845469436ca1a1751
Author : Jan Kratochvil <jan.kratochvil@redhat.com>
Date : 2011-04-29T10:04:45+02:00
Stats : +3264/-962 in 13 file(s)
URL : https://src.fedoraproject.org/rpms/gdb/c/f314eb3eb50b6293a333561845469436ca1a1751?branch=gdb-17.2-rebase-f44
Log:
Rebase to FSF GDB 7.2.90.20110429 (which is a 7.3 pre-release).
Fix -O2 -g breakpoints internal error + prologue skipping (BZ 612253).
Fix case insensitive symbols for Fortran by iFort (BZ 645773).
Fix physname-related CU expansion issue for C++ (PR 12708).
Fix Python access to inlined frames (BZ 694824).
---
diff --git a/.gitignore b/.gitignore
index b002bf3..76fd2dc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
/libstdc++-v3-python-r155978.tar.bz2
-/gdb-7.2.90.20110411.tar.bz2
+/gdb-7.2.90.20110429.tar.bz2
diff --git a/gdb-archer.patch b/gdb-archer.patch
index 98862f2..bfbec9b 100644
--- a/gdb-archer.patch
+++ b/gdb-archer.patch
@@ -11,10 +11,10 @@ archer-tromey-python
archer-sergiodj-stap-fedora15jk
-diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
-index 21ec38f..d50823a 100644
---- a/bfd/elf-bfd.h
-+++ b/bfd/elf-bfd.h
+Index: gdb-7.2.90.20110429/bfd/elf-bfd.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/bfd/elf-bfd.h 2011-03-14 16:54:57.000000000 +0100
++++ gdb-7.2.90.20110429/bfd/elf-bfd.h 2011-04-29 09:40:46.000000000 +0200
@@ -1476,6 +1476,15 @@ enum
Tag_compatibility = 32
};
@@ -43,11 +43,11 @@ index 21ec38f..d50823a 100644
/* True if the bfd contains symbols that have the STT_GNU_IFUNC
symbol type. Used to set the osabi field in the ELF header
structure. */
-diff --git a/bfd/elf.c b/bfd/elf.c
-index f69abf2..3c038eb 100644
---- a/bfd/elf.c
-+++ b/bfd/elf.c
-@@ -8416,6 +8416,37 @@ elfobj_grok_gnu_note (bfd *abfd, Elf_Internal_Note *note)
+Index: gdb-7.2.90.20110429/bfd/elf.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/bfd/elf.c 2011-03-14 16:54:58.000000000 +0100
++++ gdb-7.2.90.20110429/bfd/elf.c 2011-04-29 09:40:46.000000000 +0200
+@@ -8416,6 +8416,37 @@ elfobj_grok_gnu_note (bfd *abfd, Elf_Int
}
}
@@ -85,7 +85,7 @@ index f69abf2..3c038eb 100644
static bfd_boolean
elfcore_netbsd_get_lwpid (Elf_Internal_Note *note, int *lwpidp)
{
-@@ -9189,6 +9220,12 @@ elf_parse_notes (bfd *abfd, char *buf, size_t size, file_ptr offset)
+@@ -9189,6 +9220,12 @@ elf_parse_notes (bfd *abfd, char *buf, s
if (! elfobj_grok_gnu_note (abfd, &in))
return FALSE;
}
@@ -98,11 +98,11 @@ index f69abf2..3c038eb 100644
break;
}
-diff --git a/gdb/Makefile.in b/gdb/Makefile.in
-index 6abd87a..93d8dae 100644
---- a/gdb/Makefile.in
-+++ b/gdb/Makefile.in
-@@ -721,8 +721,8 @@ SFILES = ada-exp.y ada-lang.c ada-typeprint.c ada-valprint.c ada-tasks.c \
+Index: gdb-7.2.90.20110429/gdb/Makefile.in
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/Makefile.in 2011-03-30 08:55:39.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/Makefile.in 2011-04-29 09:40:46.000000000 +0200
+@@ -721,8 +721,8 @@ SFILES = ada-exp.y ada-lang.c ada-typepr
sentinel-frame.c \
serial.c ser-base.c ser-unix.c \
solib.c solib-target.c source.c \
@@ -113,7 +113,7 @@ index 6abd87a..93d8dae 100644
target.c target-descriptions.c target-memory.c \
thread.c top.c tracepoint.c \
trad-frame.c \
-@@ -814,7 +814,7 @@ osdata.h procfs.h python/py-event.h python/py-events.h python/py-stopevent.h \
+@@ -814,7 +814,7 @@ osdata.h procfs.h python/py-event.h pyth
python/python-internal.h python/python.h ravenscar-thread.h record.h \
solib-darwin.h solib-ia64-hpux.h solib-spu.h windows-nat.h xcoffread.h \
gnulib/extra/arg-nonnull.h gnulib/extra/c++defs.h gnulib/extra/warn-on-use.h \
@@ -122,7 +122,7 @@ index 6abd87a..93d8dae 100644
# Header files that already have srcdir in them, or which are in objdir.
-@@ -899,7 +899,7 @@ COMMON_OBS = $(DEPFILES) $(CONFIG_OBS) $(YYOBJ) \
+@@ -899,7 +899,7 @@ COMMON_OBS = $(DEPFILES) $(CONFIG_OBS) $
prologue-value.o memory-map.o memrange.o xml-support.o xml-syscall.o \
target-descriptions.o target-memory.o xml-tdesc.o xml-builtin.o \
inferior.o osdata.o gdb_usleep.o record.o gcore.o \
@@ -131,7 +131,7 @@ index 6abd87a..93d8dae 100644
TSOBS = inflow.o
-@@ -1320,6 +1320,12 @@ stamp-h: $(srcdir)/config.in config.status
+@@ -1320,6 +1320,12 @@ stamp-h: $(srcdir)/config.in config.stat
CONFIG_LINKS= \
$(SHELL) config.status
@@ -144,10 +144,10 @@ index 6abd87a..93d8dae 100644
config.status: $(srcdir)/configure configure.tgt configure.host
$(SHELL) config.status --recheck
-diff --git a/gdb/NEWS b/gdb/NEWS
-index 8692e2f..c22bf0d 100644
---- a/gdb/NEWS
-+++ b/gdb/NEWS
+Index: gdb-7.2.90.20110429/gdb/NEWS
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/NEWS 2011-03-31 16:32:48.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/NEWS 2011-04-29 09:40:46.000000000 +0200
@@ -36,6 +36,10 @@
Initial support for the OpenCL C language (http://www.khronos.org/opencl)
has been integrated into GDB.
@@ -159,11 +159,11 @@ index 8692e2f..c22bf0d 100644
* Python scripting
** The function gdb.Write now accepts an optional keyword 'stream'.
-diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
-index 0a0b09f..4546e93 100644
---- a/gdb/ada-lang.c
-+++ b/gdb/ada-lang.c
-@@ -11422,6 +11422,7 @@ ada_operator_length (const struct expression *exp, int pc, int *oplenp,
+Index: gdb-7.2.90.20110429/gdb/ada-lang.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/ada-lang.c 2011-04-20 22:10:29.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/ada-lang.c 2011-04-29 09:40:46.000000000 +0200
+@@ -11393,6 +11393,7 @@ ada_operator_length (const struct expres
static int
ada_operator_check (struct expression *exp, int pos,
@@ -171,7 +171,7 @@ index 0a0b09f..4546e93 100644
int (*objfile_func) (struct objfile *objfile, void *data),
void *data)
{
-@@ -11436,12 +11437,15 @@ ada_operator_check (struct expression *exp, int pos,
+@@ -11407,12 +11408,15 @@ ada_operator_check (struct expression *e
break;
default:
@@ -189,11 +189,11 @@ index 0a0b09f..4546e93 100644
&& (*objfile_func) (TYPE_OBJFILE (type), data))
return 1;
-diff --git a/gdb/amd64-linux-nat.c b/gdb/amd64-linux-nat.c
-index a869f85..c59daa0 100644
---- a/gdb/amd64-linux-nat.c
-+++ b/gdb/amd64-linux-nat.c
-@@ -265,18 +265,11 @@ amd64_linux_store_inferior_registers (struct target_ops *ops,
+Index: gdb-7.2.90.20110429/gdb/amd64-linux-nat.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/amd64-linux-nat.c 2011-01-07 20:36:15.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/amd64-linux-nat.c 2011-04-29 09:40:46.000000000 +0200
+@@ -265,18 +265,11 @@ amd64_linux_store_inferior_registers (st
\f
/* Support for debug registers. */
@@ -213,7 +213,7 @@ index a869f85..c59daa0 100644
/* FIXME: kettenis/2001-03-27: Calling perror_with_name if the
ptrace call fails breaks debugging remote targets. The correct
way to fix this is to add the hardware breakpoint and watchpoint
-@@ -298,14 +291,8 @@ amd64_linux_dr_get (ptid_t ptid, int regnum)
+@@ -298,14 +291,8 @@ amd64_linux_dr_get (ptid_t ptid, int reg
/* Set debug register REGNUM to VALUE in only the one LWP of PTID. */
static void
@@ -229,7 +229,7 @@ index a869f85..c59daa0 100644
errno = 0;
ptrace (PTRACE_POKEUSER, tid,
offsetof (struct user, u_debugreg[regnum]), value);
-@@ -313,35 +300,96 @@ amd64_linux_dr_set (ptid_t ptid, int regnum, unsigned long value)
+@@ -313,35 +300,96 @@ amd64_linux_dr_set (ptid_t ptid, int reg
perror_with_name (_("Couldn't write debug register"));
}
@@ -411,11 +411,11 @@ index a869f85..c59daa0 100644
}
\f
-diff --git a/gdb/ax-gdb.c b/gdb/ax-gdb.c
-index d1736e1..3e54716 100644
---- a/gdb/ax-gdb.c
-+++ b/gdb/ax-gdb.c
-@@ -2001,7 +2001,8 @@ gen_expr (struct expression *exp, union exp_element **pc,
+Index: gdb-7.2.90.20110429/gdb/ax-gdb.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/ax-gdb.c 2011-02-24 08:39:47.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/ax-gdb.c 2011-04-29 09:40:46.000000000 +0200
+@@ -2001,7 +2001,8 @@ gen_expr (struct expression *exp, union
case OP_INTERNALVAR:
{
@@ -425,7 +425,7 @@ index d1736e1..3e54716 100644
struct trace_state_variable *tsv;
(*pc) += 3;
-@@ -2015,7 +2016,7 @@ gen_expr (struct expression *exp, union exp_element **pc,
+@@ -2015,7 +2016,7 @@ gen_expr (struct expression *exp, union
value->kind = axs_rvalue;
value->type = builtin_type (exp->gdbarch)->builtin_long_long;
}
@@ -434,10 +434,10 @@ index d1736e1..3e54716 100644
error (_("$%s is not a trace state variable; GDB agent "
"expressions cannot use convenience variables."), name);
}
-diff --git a/gdb/block.c b/gdb/block.c
-index 776ae53..3544cf2 100644
---- a/gdb/block.c
-+++ b/gdb/block.c
+Index: gdb-7.2.90.20110429/gdb/block.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/block.c 2011-01-01 16:32:57.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/block.c 2011-04-29 09:40:46.000000000 +0200
@@ -322,3 +322,21 @@ allocate_block (struct obstack *obstack)
return bl;
@@ -460,21 +460,21 @@ index 776ae53..3544cf2 100644
+
+ return SYMBOL_SYMTAB (func)->objfile;
+}
-diff --git a/gdb/block.h b/gdb/block.h
-index 07d5bc7..fad89b1 100644
---- a/gdb/block.h
-+++ b/gdb/block.h
-@@ -167,4 +167,6 @@ extern const struct block *block_global_block (const struct block *block);
+Index: gdb-7.2.90.20110429/gdb/block.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/block.h 2011-01-01 16:32:57.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/block.h 2011-04-29 09:40:46.000000000 +0200
+@@ -167,4 +167,6 @@ extern const struct block *block_global_
extern struct block *allocate_block (struct obstack *obstack);
+extern struct objfile *block_objfile (const struct block *block);
+
#endif /* BLOCK_H */
-diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
-index 2a25c8d..e8c771c 100644
---- a/gdb/breakpoint.c
-+++ b/gdb/breakpoint.c
+Index: gdb-7.2.90.20110429/gdb/breakpoint.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/breakpoint.c 2011-04-15 06:18:34.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/breakpoint.c 2011-04-29 09:40:46.000000000 +0200
@@ -63,6 +63,8 @@
#include "jit.h"
#include "xml-syscall.h"
@@ -484,7 +484,7 @@ index 2a25c8d..e8c771c 100644
#include "cli/cli-utils.h"
/* readline include files */
-@@ -107,6 +109,9 @@ static void break_command_1 (char *, int, int);
+@@ -107,6 +109,9 @@ static void break_command_1 (char *, int
static void mention (struct breakpoint *);
@@ -494,7 +494,7 @@ index 2a25c8d..e8c771c 100644
/* This function is used in gdbtk sources and thus can not be made
static. */
struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
-@@ -1249,6 +1254,9 @@ update_watchpoint (struct breakpoint *b, int reparse)
+@@ -1249,6 +1254,9 @@ update_watchpoint (struct breakpoint *b,
if (!watchpoint_in_thread_scope (b))
return;
@@ -504,7 +504,7 @@ index 2a25c8d..e8c771c 100644
if (b->disposition == disp_del_at_next_stop)
return;
-@@ -1520,6 +1528,40 @@ should_be_inserted (struct bp_location *bl)
+@@ -1520,6 +1528,40 @@ should_be_inserted (struct bp_location *
return 1;
}
@@ -545,7 +545,7 @@ index 2a25c8d..e8c771c 100644
/* Insert a low-level "breakpoint" of some type. BL is the breakpoint
location. Any error messages are printed to TMP_ERROR_STREAM; and
DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
-@@ -1616,6 +1658,8 @@ insert_bp_location (struct bp_location *bl,
+@@ -1616,6 +1658,8 @@ insert_bp_location (struct bp_location *
else
val = target_insert_breakpoint (bl->gdbarch,
&bl->target_info);
@@ -659,7 +659,7 @@ index 2a25c8d..e8c771c 100644
for (i = 0; i < NUM_LONGJMP_NAMES; i++)
{
struct breakpoint *b;
-@@ -2335,6 +2422,31 @@ create_exception_master_breakpoint (void)
+@@ -2335,6 +2422,31 @@ create_exception_master_breakpoint (void
bp_objfile_data = get_breakpoint_objfile_data (objfile);
@@ -691,7 +691,7 @@ index 2a25c8d..e8c771c 100644
if (msym_not_found_p (bp_objfile_data->exception_msym))
continue;
-@@ -2553,6 +2665,8 @@ remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
+@@ -2553,6 +2665,8 @@ remove_breakpoint_1 (struct bp_location
val = target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
else
val = target_remove_breakpoint (bl->gdbarch, &bl->target_info);
@@ -700,7 +700,7 @@ index 2a25c8d..e8c771c 100644
}
else
{
-@@ -5902,6 +6016,7 @@ set_raw_breakpoint (struct gdbarch *gdbarch,
+@@ -5902,6 +6016,7 @@ set_raw_breakpoint (struct gdbarch *gdba
b->loc->requested_address = sal.pc;
b->loc->address = adjusted_address;
b->loc->pspace = sal.pspace;
@@ -708,7 +708,7 @@ index 2a25c8d..e8c771c 100644
/* Store the program space that was used to set the breakpoint, for
breakpoint resetting. */
-@@ -7057,6 +7172,7 @@ clone_momentary_breakpoint (struct breakpoint *orig)
+@@ -7057,6 +7172,7 @@ clone_momentary_breakpoint (struct break
copy->loc->address = orig->loc->address;
copy->loc->section = orig->loc->section;
copy->loc->pspace = orig->loc->pspace;
@@ -716,7 +716,7 @@ index 2a25c8d..e8c771c 100644
if (orig->source_file == NULL)
copy->source_file = NULL;
-@@ -7280,6 +7396,7 @@ add_location_to_breakpoint (struct breakpoint *b,
+@@ -7280,6 +7396,7 @@ add_location_to_breakpoint (struct break
loc->address = adjust_breakpoint_address (loc->gdbarch,
loc->requested_address, b->type);
loc->pspace = sal->pspace;
@@ -724,7 +724,7 @@ index 2a25c8d..e8c771c 100644
gdb_assert (loc->pspace != NULL);
loc->section = sal->section;
-@@ -7629,6 +7746,16 @@ create_breakpoints_sal (struct gdbarch *gdbarch,
+@@ -7629,6 +7746,16 @@ create_breakpoints_sal (struct gdbarch *
{
int i;
@@ -741,7 +741,7 @@ index 2a25c8d..e8c771c 100644
for (i = 0; i < sals.nelts; ++i)
{
struct symtabs_and_lines expanded =
-@@ -8154,7 +8281,7 @@ create_breakpoint (struct gdbarch *gdbarch,
+@@ -8154,7 +8281,7 @@ create_breakpoint (struct gdbarch *gdbar
mention (b);
}
@@ -750,7 +750,7 @@ index 2a25c8d..e8c771c 100644
{
warning (_("Multiple breakpoints were set.\nUse the "
"\"delete\" command to delete unwanted breakpoints."));
-@@ -9026,6 +9153,7 @@ watch_command_1 (char *arg, int accessflag, int from_tty,
+@@ -9026,6 +9153,7 @@ watch_command_1 (char *arg, int accessfl
b = set_raw_breakpoint_without_location (NULL, bp_type);
set_breakpoint_number (internal, b);
b->thread = thread;
@@ -758,7 +758,7 @@ index 2a25c8d..e8c771c 100644
b->disposition = disp_donttouch;
b->exp = exp;
b->exp_valid_block = exp_valid_block;
-@@ -10188,6 +10316,9 @@ update_global_location_list (int should_insert)
+@@ -10188,6 +10316,9 @@ update_global_location_list (int should_
int keep_in_target = 0;
int removed = 0;
@@ -768,7 +768,7 @@ index 2a25c8d..e8c771c 100644
/* Skip LOCP entries which will definitely never be needed.
Stop either at or being the one matching OLD_LOC. */
while (locp < bp_location + bp_location_count
-@@ -10952,12 +11083,14 @@ update_breakpoint_locations (struct breakpoint *b,
+@@ -10952,12 +11083,14 @@ update_breakpoint_locations (struct brea
On return, FOUND will be 1 if any SaL was found, zero otherwise. */
static struct symtabs_and_lines
@@ -784,7 +784,7 @@ index 2a25c8d..e8c771c 100644
s = addr_string;
marker_spec = b->type == bp_static_tracepoint && is_marker_spec (s);
-@@ -10976,8 +11109,27 @@ addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
+@@ -10976,8 +11109,27 @@ addr_string_to_sals (struct breakpoint *
error (_("marker %s not found"), b->static_trace_marker_id);
}
else
@@ -814,7 +814,7 @@ index 2a25c8d..e8c771c 100644
}
if (e.reason < 0)
{
-@@ -11010,7 +11162,7 @@ addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
+@@ -11010,7 +11162,7 @@ addr_string_to_sals (struct breakpoint *
if (!not_found)
{
@@ -879,7 +879,7 @@ index 2a25c8d..e8c771c 100644
\f
/* This help string is used for the break, hbreak, tbreak and thbreak
commands. It is defined as a macro to prevent duplication.
-@@ -13136,4 +13311,7 @@ range (including START-LOCATION and END-LOCATION)."));
+@@ -13136,4 +13311,7 @@ range (including START-LOCATION and END-
automatic_hardware_breakpoints = 1;
observer_attach_about_to_proceed (breakpoint_about_to_proceed);
@@ -887,10 +887,10 @@ index 2a25c8d..e8c771c 100644
+ observer_attach_mark_used (breakpoint_types_mark_used);
+#endif
}
-diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
-index 7a9c2d4..8a91019 100644
---- a/gdb/breakpoint.h
-+++ b/gdb/breakpoint.h
+Index: gdb-7.2.90.20110429/gdb/breakpoint.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/breakpoint.h 2011-03-31 16:32:48.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/breakpoint.h 2011-04-29 09:40:46.000000000 +0200
@@ -363,6 +363,11 @@ struct bp_location
processor's architectual constraints. */
CORE_ADDR requested_address;
@@ -903,7 +903,7 @@ index 7a9c2d4..8a91019 100644
char *function_name;
/* Details of the placed breakpoint, when inserted. */
-@@ -1237,4 +1242,11 @@ extern struct breakpoint *iterate_over_breakpoints (int (*) (struct breakpoint *
+@@ -1233,4 +1238,11 @@ extern struct breakpoint *iterate_over_b
extern int user_breakpoint_p (struct breakpoint *);
@@ -915,11 +915,11 @@ index 7a9c2d4..8a91019 100644
+extern void modify_semaphore (struct bp_location *location, int set);
+
#endif /* !defined (BREAKPOINT_H) */
-diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c
-index 2e23dd7..aefc807 100644
---- a/gdb/c-typeprint.c
-+++ b/gdb/c-typeprint.c
-@@ -625,9 +625,14 @@ c_type_print_varspec_suffix (struct type *type,
+Index: gdb-7.2.90.20110429/gdb/c-typeprint.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/c-typeprint.c 2011-03-22 18:35:22.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/c-typeprint.c 2011-04-29 09:40:46.000000000 +0200
+@@ -625,9 +625,14 @@ c_type_print_varspec_suffix (struct type
fprintf_filtered (stream, ")");
fprintf_filtered (stream, "[");
@@ -937,11 +937,11 @@ index 2e23dd7..aefc807 100644
fprintf_filtered (stream, "]");
c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream,
-diff --git a/gdb/cli/cli-utils.c b/gdb/cli/cli-utils.c
-index 62a2f12..dd2824f 100644
---- a/gdb/cli/cli-utils.c
-+++ b/gdb/cli/cli-utils.c
-@@ -245,3 +245,32 @@ remove_trailing_whitespace (const char *start, char *s)
+Index: gdb-7.2.90.20110429/gdb/cli/cli-utils.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/cli/cli-utils.c 2011-03-16 22:12:12.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/cli/cli-utils.c 2011-04-29 09:40:46.000000000 +0200
+@@ -245,3 +245,32 @@ remove_trailing_whitespace (const char *
return s;
}
@@ -974,10 +974,10 @@ index 62a2f12..dd2824f 100644
+
+ return copy;
+}
-diff --git a/gdb/cli/cli-utils.h b/gdb/cli/cli-utils.h
-index 8a6e5b3..ed1a63e 100644
---- a/gdb/cli/cli-utils.h
-+++ b/gdb/cli/cli-utils.h
+Index: gdb-7.2.90.20110429/gdb/cli/cli-utils.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/cli/cli-utils.h 2011-03-16 22:12:12.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/cli/cli-utils.h 2011-04-29 09:40:46.000000000 +0200
@@ -103,4 +103,11 @@ extern char *skip_to_space (char *inp);
START. */
@@ -990,11 +990,11 @@ index 8a6e5b3..ed1a63e 100644
+extern char *extract_arg (char **arg);
+
#endif /* CLI_UTILS_H */
-diff --git a/gdb/coffread.c b/gdb/coffread.c
-index b11dd73..0868a79 100644
---- a/gdb/coffread.c
-+++ b/gdb/coffread.c
-@@ -2193,6 +2193,7 @@ static const struct sym_fns coff_sym_fns =
+Index: gdb-7.2.90.20110429/gdb/coffread.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/coffread.c 2011-03-17 14:19:23.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/coffread.c 2011-04-29 09:40:46.000000000 +0200
+@@ -2193,6 +2193,7 @@ static const struct sym_fns coff_sym_fns
default_symfile_relocate, /* sym_relocate: Relocate a debug
section. */
@@ -1002,10 +1002,10 @@ index b11dd73..0868a79 100644
&psym_functions
};
-diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in
-index 11cf2e6..9a2a8f8 100644
---- a/gdb/data-directory/Makefile.in
-+++ b/gdb/data-directory/Makefile.in
+Index: gdb-7.2.90.20110429/gdb/data-directory/Makefile.in
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/data-directory/Makefile.in 2011-02-04 19:34:41.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/data-directory/Makefile.in 2011-04-29 09:40:46.000000000 +0200
@@ -52,11 +52,23 @@ SYSCALLS_FILES = \
PYTHON_DIR = python
PYTHON_INSTALL_DIR = $(DESTDIR)$(GDB_DATADIR)/$(PYTHON_DIR)
@@ -1033,10 +1033,10 @@ index 11cf2e6..9a2a8f8 100644
FLAGS_TO_PASS = \
"prefix=$(prefix)" \
-diff --git a/gdb/dbxread.c b/gdb/dbxread.c
-index 51ddd9d..a59ae10 100644
---- a/gdb/dbxread.c
-+++ b/gdb/dbxread.c
+Index: gdb-7.2.90.20110429/gdb/dbxread.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/dbxread.c 2011-03-23 19:23:54.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/dbxread.c 2011-04-29 09:40:46.000000000 +0200
@@ -1,6 +1,6 @@
/* Read dbx symbol tables and convert to internal format, for GDB.
Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
@@ -1045,7 +1045,7 @@ index 51ddd9d..a59ae10 100644
Free Software Foundation, Inc.
This file is part of GDB.
-@@ -3587,6 +3587,7 @@ static const struct sym_fns aout_sym_fns =
+@@ -3587,6 +3587,7 @@ static const struct sym_fns aout_sym_fns
default_symfile_segments, /* Get segment information from a file. */
NULL,
default_symfile_relocate, /* Relocate a debug section. */
@@ -1053,11 +1053,11 @@ index 51ddd9d..a59ae10 100644
&psym_functions
};
-diff --git a/gdb/defs.h b/gdb/defs.h
-index 9531c5a..b994645 100644
---- a/gdb/defs.h
-+++ b/gdb/defs.h
-@@ -398,6 +398,8 @@ extern struct cleanup *make_cleanup_restore_page_info (void);
+Index: gdb-7.2.90.20110429/gdb/defs.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/defs.h 2011-03-31 16:32:48.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/defs.h 2011-04-29 09:40:46.000000000 +0200
+@@ -398,6 +398,8 @@ extern struct cleanup *make_cleanup_rest
extern struct cleanup *
set_batch_flag_and_make_cleanup_restore_page_info (void);
@@ -1066,10 +1066,10 @@ index 9531c5a..b994645 100644
extern char *gdb_realpath (const char *);
extern char *xfullpath (const char *);
-diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
-index c71d664..b66e426 100644
---- a/gdb/doc/gdb.texinfo
-+++ b/gdb/doc/gdb.texinfo
+Index: gdb-7.2.90.20110429/gdb/doc/gdb.texinfo
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/doc/gdb.texinfo 2011-04-20 19:26:42.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/doc/gdb.texinfo 2011-04-29 09:40:46.000000000 +0200
@@ -1177,6 +1177,16 @@ for remote debugging.
Run using @var{device} for your program's standard input and output.
@c FIXME: kingdon thinks there is more to -tty. Investigate.
@@ -1087,7 +1087,7 @@ index c71d664..b66e426 100644
@c resolve the situation of these eventually
@item -tui
@cindex @code{--tui}
-@@ -3286,6 +3296,7 @@ all breakpoints in that range are operated on.
+@@ -3286,6 +3296,7 @@ all breakpoints in that range are operat
* Conditions:: Break conditions
* Break Commands:: Breakpoint command lists
* Save Breakpoints:: How to save breakpoints in a file
@@ -1095,7 +1095,7 @@ index c71d664..b66e426 100644
* Error in Breakpoints:: ``Cannot insert breakpoints''
* Breakpoint-related Warnings:: ``Breakpoint address adjusted...''
@end menu
-@@ -4499,6 +4510,50 @@ and remove the breakpoint definitions you're not interested in, or
+@@ -4499,6 +4510,50 @@ and remove the breakpoint definitions yo
that can no longer be recreated.
@end table
@@ -1146,7 +1146,7 @@ index c71d664..b66e426 100644
@c @ifclear BARETARGET
@node Error in Breakpoints
@subsection ``Cannot insert breakpoints''
-@@ -6414,6 +6469,29 @@ specify the function unambiguously, e.g., if there are several
+@@ -6414,6 +6469,29 @@ specify the function unambiguously, e.g.
functions with identical names in different source files.
@end table
@@ -1176,7 +1176,7 @@ index c71d664..b66e426 100644
@end table
-@@ -8500,6 +8578,10 @@ to match the format in which the data was printed.
+@@ -8500,6 +8578,10 @@ to match the format in which the data wa
The variable @code{$_exitcode} is automatically set to the exit code when
the program being debugged terminates.
@@ -1213,7 +1213,7 @@ index c71d664..b66e426 100644
>print 23
>end
23
-@@ -20724,6 +20814,14 @@ in a Python script. This can be controlled using @code{maint set
+@@ -20724,6 +20814,14 @@ in a Python script. This can be control
python print-stack}: if @code{on}, the default, then Python stack
printing is enabled; if @code{off}, then Python stack printing is
disabled.
@@ -1243,11 +1243,11 @@ index c71d664..b66e426 100644
@cindex python stdout
@cindex python pagination
At startup, @value{GDBN} overrides Python's @code{sys.stdout} and
-diff --git a/gdb/doc/gdbint.texinfo b/gdb/doc/gdbint.texinfo
-index a494707..d5b9cf8 100644
---- a/gdb/doc/gdbint.texinfo
-+++ b/gdb/doc/gdbint.texinfo
-@@ -2104,6 +2104,18 @@ time, and so we attempt to handle symbols incrementally. For instance,
+Index: gdb-7.2.90.20110429/gdb/doc/gdbint.texinfo
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/doc/gdbint.texinfo 2011-02-04 20:10:12.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/doc/gdbint.texinfo 2011-04-29 09:40:46.000000000 +0200
+@@ -2104,6 +2104,18 @@ time, and so we attempt to handle symbol
we create @dfn{partial symbol tables} consisting of only selected
symbols, and only expand them to full symbol tables when necessary.
@@ -1266,7 +1266,7 @@ index a494707..d5b9cf8 100644
@section Symbol Reading
@cindex symbol reading
-@@ -2196,6 +2208,7 @@ symtab. Upon return, @code{pst->readin} should have been set to 1, and
+@@ -2196,6 +2208,7 @@ symtab. Upon return, @code{pst->readin}
zero if there were no symbols in that part of the symbol file.
@end table
@@ -1274,7 +1274,7 @@ index a494707..d5b9cf8 100644
@section Partial Symbol Tables
@value{GDBN} has three types of symbol tables:
-@@ -2297,6 +2310,7 @@ and partial symbol tables behind a set of function pointers known as
+@@ -2297,6 +2310,7 @@ and partial symbol tables behind a set o
the @dfn{quick symbol functions}. These are documented in
@file{symfile.h}.
@@ -1282,7 +1282,7 @@ index a494707..d5b9cf8 100644
@section Types
@unnumberedsubsec Fundamental Types (e.g., @code{FT_VOID}, @code{FT_BOOLEAN}).
-@@ -2319,6 +2333,7 @@ types map to one @code{TYPE_CODE_*} type, and are distinguished by
+@@ -2319,6 +2333,7 @@ types map to one @code{TYPE_CODE_*} type
other members of the type struct, such as whether the type is signed
or unsigned, and how many bits it uses.
@@ -1290,7 +1290,7 @@ index a494707..d5b9cf8 100644
@unnumberedsubsec Builtin Types (e.g., @code{builtin_type_void}, @code{builtin_type_char}).
These are instances of type structs that roughly correspond to
-@@ -2333,6 +2348,7 @@ only one instance exists, while @file{c-lang.c} builds as many
+@@ -2333,6 +2348,7 @@ only one instance exists, while @file{c-
@code{TYPE_CODE_INT} types as needed, with each one associated with
some particular objfile.
@@ -1306,7 +1306,7 @@ index a494707..d5b9cf8 100644
@section Debugging File Formats
This section describes characteristics of debugging information that
-@@ -2489,6 +2506,7 @@ DWARF 3 is an improved version of DWARF 2.
+@@ -2489,6 +2506,7 @@ DWARF 3 is an improved version of DWARF
@cindex SOM debugging info
Like COFF, the SOM definition includes debugging information.
@@ -1314,7 +1314,7 @@ index a494707..d5b9cf8 100644
@section Adding a New Symbol Reader to @value{GDBN}
@cindex adding debugging info reader
-@@ -2511,6 +2529,7 @@ will only ever be implemented by one object file format may be called
+@@ -2511,6 +2529,7 @@ will only ever be implemented by one obj
directly. This interface should be described in a file
@file{bfd/lib@var{xyz}.h}, which is included by @value{GDBN}.
@@ -1322,7 +1322,7 @@ index a494707..d5b9cf8 100644
@section Memory Management for Symbol Files
Most memory associated with a loaded symbol file is stored on
-@@ -2522,10 +2541,45 @@ released when the objfile is unloaded or reloaded. Therefore one
+@@ -2522,10 +2541,45 @@ released when the objfile is unloaded or
objfile must not reference symbol or type data from another objfile;
they could be unloaded at different times.
@@ -1372,11 +1372,11 @@ index a494707..d5b9cf8 100644
@node Language Support
-diff --git a/gdb/doc/observer.texi b/gdb/doc/observer.texi
-index d16c865..946ad95 100644
---- a/gdb/doc/observer.texi
-+++ b/gdb/doc/observer.texi
-@@ -223,6 +223,11 @@ Bytes from @var{data} to @var{data} + @var{len} have been written
+Index: gdb-7.2.90.20110429/gdb/doc/observer.texi
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/doc/observer.texi 2011-01-05 06:09:54.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/doc/observer.texi 2011-04-29 09:40:46.000000000 +0200
+@@ -223,6 +223,11 @@ Bytes from @var{data} to @var{data} + @v
to the current inferior at @var{addr}.
@end deftypefun
@@ -1388,11 +1388,11 @@ index d16c865..946ad95 100644
@deftypefun void test_notification (int @var{somearg})
This observer is used for internal testing. Do not use.
See testsuite/gdb.gdb/observer.exp.
-diff --git a/gdb/dwarf2expr.c b/gdb/dwarf2expr.c
-index 91fccf9..4cd5949 100644
---- a/gdb/dwarf2expr.c
-+++ b/gdb/dwarf2expr.c
-@@ -912,6 +912,13 @@ execute_stack_op (struct dwarf_expr_context *ctx,
+Index: gdb-7.2.90.20110429/gdb/dwarf2expr.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/dwarf2expr.c 2011-03-22 22:06:32.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/dwarf2expr.c 2011-04-29 09:40:46.000000000 +0200
+@@ -912,6 +912,13 @@ execute_stack_op (struct dwarf_expr_cont
ctx->num_pieces = 0;
goto abort_expression;
@@ -1406,10 +1406,10 @@ index 91fccf9..4cd5949 100644
default:
error (_("Unhandled dwarf expression opcode 0x%x"), op);
}
-diff --git a/gdb/dwarf2expr.h b/gdb/dwarf2expr.h
-index 78ff53f..c83f23d 100644
---- a/gdb/dwarf2expr.h
-+++ b/gdb/dwarf2expr.h
+Index: gdb-7.2.90.20110429/gdb/dwarf2expr.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/dwarf2expr.h 2011-02-27 17:25:37.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/dwarf2expr.h 2011-04-29 09:40:46.000000000 +0200
@@ -114,9 +114,15 @@ struct dwarf_expr_context
#if 0
/* Not yet implemented. */
@@ -1427,10 +1427,10 @@ index 78ff53f..c83f23d 100644
/* The current depth of dwarf expression recursion, via DW_OP_call*,
DW_OP_fbreg, DW_OP_push_object_address, etc., and the maximum
-diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
-index 4c13307..9b0e1ad 100644
---- a/gdb/dwarf2loc.c
-+++ b/gdb/dwarf2loc.c
+Index: gdb-7.2.90.20110429/gdb/dwarf2loc.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/dwarf2loc.c 2011-03-22 22:06:33.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/dwarf2loc.c 2011-04-29 09:40:46.000000000 +0200
@@ -134,6 +134,9 @@ struct dwarf_expr_baton
{
struct frame_info *frame;
@@ -1441,7 +1441,7 @@ index 4c13307..9b0e1ad 100644
};
/* Helper functions for dwarf2_evaluate_loc_desc. */
-@@ -202,23 +205,33 @@ dwarf_expr_frame_base_1 (struct symbol *framefunc, CORE_ADDR pc,
+@@ -202,23 +205,33 @@ dwarf_expr_frame_base_1 (struct symbol *
symbaton = SYMBOL_LOCATION_BATON (framefunc);
*start = dwarf2_find_location_expression (symbaton, length, pc);
}
@@ -1461,7 +1461,7 @@ index 4c13307..9b0e1ad 100644
+ gdb_assert (symbaton != NULL);
+ *start = symbaton->data;
+ *length = symbaton->size;
- }
++ }
+ else if (SYMBOL_COMPUTED_OPS (framefunc) == &dwarf2_missing_funcs)
+ {
+ struct dwarf2_locexpr_baton *symbaton;
@@ -1470,7 +1470,7 @@ index 4c13307..9b0e1ad 100644
+ gdb_assert (symbaton == NULL);
+ *start = NULL;
+ *length = 0; /* unused */
-+ }
+ }
+ else
+ internal_error (__FILE__, __LINE__,
+ _("Unsupported SYMBOL_COMPUTED_OPS %p for \"%s\""),
@@ -1484,7 +1484,7 @@ index 4c13307..9b0e1ad 100644
}
/* Helper function for dwarf2_evaluate_loc_desc. Computes the CFA for
-@@ -286,6 +299,172 @@ dwarf_expr_dwarf_call (struct dwarf_expr_context *ctx, size_t die_offset)
+@@ -286,6 +299,172 @@ dwarf_expr_dwarf_call (struct dwarf_expr
ctx->get_frame_pc, ctx->baton);
}
@@ -1657,7 +1657,7 @@ index 4c13307..9b0e1ad 100644
struct piece_closure
{
/* Reference count. */
-@@ -1072,11 +1251,8 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
+@@ -1072,11 +1251,8 @@ dwarf2_evaluate_loc_desc_full (struct ty
LONGEST byte_offset)
{
struct value *retval;
@@ -1669,7 +1669,7 @@ index 4c13307..9b0e1ad 100644
if (byte_offset < 0)
invalid_synthetic_pointer ();
-@@ -1089,38 +1265,14 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
+@@ -1089,38 +1265,14 @@ dwarf2_evaluate_loc_desc_full (struct ty
return retval;
}
@@ -1714,7 +1714,7 @@ index 4c13307..9b0e1ad 100644
}
if (ctx->num_pieces > 0)
-@@ -1166,6 +1318,15 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
+@@ -1166,6 +1318,15 @@ dwarf2_evaluate_loc_desc_full (struct ty
CORE_ADDR address = dwarf_expr_fetch_address (ctx, 0);
int in_stack_memory = dwarf_expr_fetch_in_stack_memory (ctx, 0);
@@ -1730,7 +1730,7 @@ index 4c13307..9b0e1ad 100644
retval = allocate_value_lazy (type);
VALUE_LVAL (retval) = lval_memory;
if (in_stack_memory)
-@@ -2855,11 +3016,51 @@ loclist_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch,
+@@ -2855,11 +3016,51 @@ loclist_tracepoint_var_ref (struct symbo
dlbaton->per_cu);
}
@@ -1784,10 +1784,10 @@ index 4c13307..9b0e1ad 100644
+ missing_describe_location,
+ missing_tracepoint_var_ref
+};
-diff --git a/gdb/dwarf2loc.h b/gdb/dwarf2loc.h
-index 96a490e..b0ebb06 100644
---- a/gdb/dwarf2loc.h
-+++ b/gdb/dwarf2loc.h
+Index: gdb-7.2.90.20110429/gdb/dwarf2loc.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/dwarf2loc.h 2011-02-17 17:20:44.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/dwarf2loc.h 2011-04-29 09:40:46.000000000 +0200
@@ -107,6 +107,15 @@ struct dwarf2_loclist_baton
extern const struct symbol_computed_ops dwarf2_locexpr_funcs;
@@ -1804,11 +1804,11 @@ index 96a490e..b0ebb06 100644
/* Compile a DWARF location expression to an agent expression.
-diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
-index ca6c98b..d176624 100644
---- a/gdb/dwarf2read.c
-+++ b/gdb/dwarf2read.c
-@@ -1211,6 +1211,9 @@ static void fill_in_loclist_baton (struct dwarf2_cu *cu,
+Index: gdb-7.2.90.20110429/gdb/dwarf2read.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/dwarf2read.c 2011-04-20 22:10:29.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/dwarf2read.c 2011-04-29 09:40:46.000000000 +0200
+@@ -1212,6 +1212,9 @@ static void fill_in_loclist_baton (struc
struct dwarf2_loclist_baton *baton,
struct attribute *attr);
@@ -1818,7 +1818,7 @@ index ca6c98b..d176624 100644
static void dwarf2_symbol_mark_computed (struct attribute *attr,
struct symbol *sym,
struct dwarf2_cu *cu);
-@@ -1245,6 +1248,9 @@ static void age_cached_comp_units (void);
+@@ -1246,6 +1249,9 @@ static void age_cached_comp_units (void)
static void free_one_cached_comp_unit (void *);
@@ -1828,7 +1828,7 @@ index ca6c98b..d176624 100644
static struct type *set_die_type (struct die_info *, struct type *,
struct dwarf2_cu *);
-@@ -1269,6 +1275,9 @@ static struct type *get_die_type_at_offset (unsigned int,
+@@ -1270,6 +1276,9 @@ static struct type *get_die_type_at_offs
static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
@@ -1838,7 +1838,7 @@ index ca6c98b..d176624 100644
static void dwarf2_release_queue (void *dummy);
static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
-@@ -7342,6 +7351,29 @@ process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
+@@ -7359,6 +7368,29 @@ process_enumeration_scope (struct die_in
new_symbol (die, this_type, cu);
}
@@ -1868,7 +1868,7 @@ index ca6c98b..d176624 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. */
-@@ -7355,7 +7387,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -7372,7 +7404,7 @@ read_array_type (struct die_info *die, s
struct type *element_type, *range_type, *index_type;
struct type **range_types = NULL;
struct attribute *attr;
@@ -1877,7 +1877,7 @@ index ca6c98b..d176624 100644
struct cleanup *back_to;
char *name;
-@@ -7408,17 +7440,19 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -7425,17 +7457,19 @@ read_array_type (struct die_info *die, s
type = element_type;
if (read_array_order (die, cu) == DW_ORD_col_major)
@@ -1908,7 +1908,7 @@ index ca6c98b..d176624 100644
/* Understand Dwarf2 support for vector types (like they occur on
the PowerPC w/ AltiVec). Gcc just adds another attribute to the
-@@ -7911,29 +7945,114 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -7928,29 +7962,114 @@ read_tag_string_type (struct die_info *d
struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct type *type, *range_type, *index_type, *char_type;
struct attribute *attr;
@@ -1927,10 +1927,9 @@ index ca6c98b..d176624 100644
attr = dwarf2_attr (die, DW_AT_string_length, cu);
- if (attr)
-- {
-- length = DW_UNSND (attr);
+ if (attr && attr_form_is_block (attr))
-+ {
+ {
+- length = DW_UNSND (attr);
+ /* Security check for a size overflow. */
+ if (DW_BLOCK (attr)->size + 2 < DW_BLOCK (attr)->size)
+ TYPE_HIGH_BOUND (range_type) = 1;
@@ -2037,7 +2036,7 @@ index ca6c98b..d176624 100644
char_type = language_string_char_type (cu->language_defn, gdbarch);
type = create_string_type (NULL, char_type, range_type);
-@@ -8218,8 +8337,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -8235,8 +8354,7 @@ read_subrange_type (struct die_info *die
struct type *base_type;
struct type *range_type;
struct attribute *attr;
@@ -2047,7 +2046,7 @@ index ca6c98b..d176624 100644
char *name;
LONGEST negative_mask;
-@@ -8232,53 +8350,126 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -8249,53 +8367,126 @@ read_subrange_type (struct die_info *die
if (range_type)
return range_type;
@@ -2078,7 +2077,24 @@ index ca6c98b..d176624 100644
+
+ attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
+ if (attr && attr_form_is_block (attr) && cu->language != language_ada)
-+ {
+ {
+- if (attr->form == DW_FORM_block1 || is_ref_attr (attr))
+- {
+- /* GCC encodes arrays with unspecified or dynamic length
+- with a DW_FORM_block1 attribute or a reference attribute.
+- FIXME: GDB does not yet know how to handle dynamic
+- arrays properly, treat them as arrays with unspecified
+- length for now.
+-
+- FIXME: jimb/2003-09-22: GDB does not really know
+- how to handle arrays of unspecified length
+- either; we just represent them as zero-length
+- arrays. Choose an appropriate upper bound given
+- the lower bound we've computed above. */
+- high = low - 1;
+- }
+- else
+- high = dwarf2_get_attr_constant_value (attr, 1);
+ TYPE_RANGE_DATA (range_type)->low.kind = RANGE_BOUND_KIND_DWARF_BLOCK;
+ TYPE_RANGE_DATA (range_type)->low.u.dwarf_block =
+ dwarf2_attr_to_locexpr_baton (attr, cu);
@@ -2104,29 +2120,17 @@ index ca6c98b..d176624 100644
+ TYPE_DYNAMIC (range_type) = 1;
+ /* For setting a default if DW_AT_UPPER_BOUND would be missing. */
+ low = 0;
-+ }
-+ else
+ }
+ else
{
-- if (attr->form == DW_FORM_block1 || is_ref_attr (attr))
-- {
-- /* GCC encodes arrays with unspecified or dynamic length
-- with a DW_FORM_block1 attribute or a reference attribute.
-- FIXME: GDB does not yet know how to handle dynamic
-- arrays properly, treat them as arrays with unspecified
-- length for now.
--
-- FIXME: jimb/2003-09-22: GDB does not really know
-- how to handle arrays of unspecified length
-- either; we just represent them as zero-length
-- arrays. Choose an appropriate upper bound given
-- the lower bound we've computed above. */
-- high = low - 1;
-- }
+- attr = dwarf2_attr (die, DW_AT_count, cu);
+- if (attr)
+ if (attr && attr_form_is_constant (attr))
+ low = dwarf2_get_attr_constant_value (attr, 0);
- else
-- high = dwarf2_get_attr_constant_value (attr, 1);
-+ {
++ else
+ {
+- int count = dwarf2_get_attr_constant_value (attr, 1);
+- high = low + count - 1;
+ if (cu->language == language_fortran)
+ {
+ /* FORTRAN implies a lower bound of 1, if not given. */
@@ -2138,30 +2142,25 @@ index ca6c98b..d176624 100644
+ LANGUAGE_C and LANGUAGE_CPLUS. */
+ low = 0;
+ }
-+ }
+ }
+ if (!TYPE_UNSIGNED (base_type) && (low & negative_mask))
+ low |= negative_mask;
+ TYPE_LOW_BOUND (range_type) = low;
+ if (low >= 0)
+ TYPE_UNSIGNED (range_type) = 1;
- }
-- else
++ }
+
+ attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
+ if (!attr || (!attr_form_is_block (attr) && !attr_form_is_constant (attr)
+ && !is_ref_attr (attr)))
- {
- attr = dwarf2_attr (die, DW_AT_count, cu);
-- if (attr)
-- {
-- int count = dwarf2_get_attr_constant_value (attr, 1);
-- high = low + count - 1;
++ {
++ attr = dwarf2_attr (die, DW_AT_count, cu);
+ /* It does not hurt but it is needlessly ineffective in check_typedef. */
+ if (attr && (attr_form_is_block (attr) || attr_form_is_constant (attr)))
+ {
+ TYPE_RANGE_HIGH_BOUND_IS_COUNT (range_type) = 1;
+ TYPE_DYNAMIC (range_type) = 1;
- }
++ }
+ /* Pass it now as the regular DW_AT_upper_bound. */
+ }
+
@@ -2209,7 +2208,7 @@ index ca6c98b..d176624 100644
}
/* Dwarf-2 specifications explicitly allows to create subrange types
-@@ -8319,24 +8510,41 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -8336,24 +8527,41 @@ read_subrange_type (struct die_info *die
}
}
@@ -2221,6 +2220,16 @@ index ca6c98b..d176624 100644
- high |= negative_mask;
-
- range_type = create_range_type (NULL, base_type, low, high);
+-
+- /* Mark arrays with dynamic length at least as an array of unspecified
+- length. GDB could check the boundary but before it gets implemented at
+- least allow accessing the array elements. */
+- if (attr && attr->form == DW_FORM_block1)
+- TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1;
+-
+- /* Ada expects an empty array on no boundary attributes. */
+- if (attr == NULL && cu->language != language_ada)
+- TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1;
+ /* DW_AT_bit_stride is currently unsupported as we count in bytes. */
+ attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
+ if (attr && attr_form_is_block (attr) && cu->language != language_ada)
@@ -2236,19 +2245,11 @@ index ca6c98b..d176624 100644
+ struct die_info *target_die;
+ struct dwarf2_cu *target_cu = cu;
+ struct attribute *target_loc_attr;
-
-- /* Mark arrays with dynamic length at least as an array of unspecified
-- length. GDB could check the boundary but before it gets implemented at
-- least allow accessing the array elements. */
-- if (attr && attr->form == DW_FORM_block1)
-- TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1;
++
+ target_die = follow_die_ref_or_sig (die, attr, &target_cu);
+ gdb_assert (target_cu->objfile == cu->objfile);
+ target_loc_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
-
-- /* Ada expects an empty array on no boundary attributes. */
-- if (attr == NULL && cu->language != language_ada)
-- TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1;
++
+ TYPE_RANGE_DATA (range_type)->byte_stride.kind
+ = RANGE_BOUND_KIND_DWARF_LOCLIST;
+ TYPE_RANGE_DATA (range_type)->byte_stride.u.dwarf_loclist.loclist
@@ -2267,7 +2268,7 @@ index ca6c98b..d176624 100644
name = dwarf2_name (die, cu);
if (name)
-@@ -10881,10 +11089,12 @@ var_decode_location (struct attribute *attr, struct symbol *sym,
+@@ -10898,10 +11106,12 @@ var_decode_location (struct attribute *a
(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
@@ -2282,7 +2283,7 @@ index ca6c98b..d176624 100644
}
/* Given a pointer to a DWARF information entry, figure out if we need
-@@ -10922,6 +11132,8 @@ new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
+@@ -10939,6 +11149,8 @@ new_symbol_full (struct die_info *die, s
else
sym = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct symbol);
OBJSTAT (objfile, n_syms++);
@@ -2291,7 +2292,7 @@ index ca6c98b..d176624 100644
/* Cache this symbol's name and the name's demangled form (if any). */
SYMBOL_SET_LANGUAGE (sym, cu->language);
-@@ -11694,6 +11906,9 @@ read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
+@@ -11711,6 +11923,9 @@ read_type_die_1 (struct die_info *die, s
break;
}
@@ -2301,7 +2302,7 @@ index ca6c98b..d176624 100644
return this_type;
}
-@@ -14548,61 +14763,99 @@ fill_in_loclist_baton (struct dwarf2_cu *cu,
+@@ -14565,61 +14780,99 @@ fill_in_loclist_baton (struct dwarf2_cu
baton->base_address = cu->base_address;
}
@@ -2358,10 +2359,10 @@ index ca6c98b..d176624 100644
+ variable has been optimized out. */
+ if (!attr)
+ return NULL;
-
++
+ dwarf2_read_section (dwarf2_per_objfile->objfile,
+ &dwarf2_per_objfile->loc);
-+
+
+ if (!(attr_form_is_section_offset (attr)
+ /* ".debug_loc" may not exist at all, or the offset may be outside
+ the section. If so, fall through to the complaint in the
@@ -2444,7 +2445,7 @@ index ca6c98b..d176624 100644
}
}
-@@ -14951,6 +15204,25 @@ offset_and_type_eq (const void *item_lhs, const void *item_rhs)
+@@ -14968,6 +15221,25 @@ offset_and_type_eq (const void *item_lhs
return ofs_lhs->offset == ofs_rhs->offset;
}
@@ -2470,7 +2471,7 @@ index ca6c98b..d176624 100644
/* Set the type associated with DIE to TYPE. Save it in CU's hash
table if necessary. For convenience, return TYPE.
-@@ -14976,6 +15248,8 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
+@@ -14993,6 +15265,8 @@ set_die_type (struct die_info *die, stru
struct objfile *objfile = cu->objfile;
htab_t *type_hash_ptr;
@@ -2479,10 +2480,10 @@ index ca6c98b..d176624 100644
/* For Ada types, make sure that the gnat-specific data is always
initialized (if not already set). There are a few types where
we should not be doing so, because the type-specific area is
-diff --git a/gdb/elfread.c b/gdb/elfread.c
-index b9cfa13..fed63f5 100644
---- a/gdb/elfread.c
-+++ b/gdb/elfread.c
+Index: gdb-7.2.90.20110429/gdb/elfread.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/elfread.c 2011-04-25 23:25:18.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/elfread.c 2011-04-29 09:40:46.000000000 +0200
@@ -43,6 +43,12 @@
#include "infcall.h"
#include "gdbthread.h"
@@ -2518,7 +2519,7 @@ index b9cfa13..fed63f5 100644
static void free_elfinfo (void *);
/* Minimal symbols located at the GOT entries for .plt - that is the real
-@@ -1551,7 +1572,266 @@ elfstab_offset_sections (struct objfile *objfile, struct partial_symtab *pst)
+@@ -1556,7 +1577,266 @@ elfstab_offset_sections (struct objfile
complaint (&symfile_complaints,
_("elf/stab section information missing for %s"), filename);
}
@@ -2785,7 +2786,7 @@ index b9cfa13..fed63f5 100644
/* Register that we are able to handle ELF object file formats. */
static const struct sym_fns elf_sym_fns =
-@@ -1566,6 +1846,7 @@ static const struct sym_fns elf_sym_fns =
+@@ -1571,6 +1851,7 @@ static const struct sym_fns elf_sym_fns
elf_symfile_segments, /* Get segment information from a file. */
NULL,
default_symfile_relocate, /* Relocate a debug section. */
@@ -2793,7 +2794,7 @@ index b9cfa13..fed63f5 100644
&psym_functions
};
-@@ -1584,6 +1865,7 @@ static const struct sym_fns elf_sym_fns_lazy_psyms =
+@@ -1589,6 +1870,7 @@ static const struct sym_fns elf_sym_fns_
elf_symfile_segments, /* Get segment information from a file. */
NULL,
default_symfile_relocate, /* Relocate a debug section. */
@@ -2801,7 +2802,7 @@ index b9cfa13..fed63f5 100644
&psym_functions
};
-@@ -1601,6 +1883,7 @@ static const struct sym_fns elf_sym_fns_gdb_index =
+@@ -1606,6 +1888,7 @@ static const struct sym_fns elf_sym_fns_
elf_symfile_segments, /* Get segment information from a file. */
NULL,
default_symfile_relocate, /* Relocate a debug section. */
@@ -2809,7 +2810,7 @@ index b9cfa13..fed63f5 100644
&dwarf2_gdb_index_functions
};
-@@ -1617,6 +1900,8 @@ static const struct gnu_ifunc_fns elf_gnu_ifunc_fns =
+@@ -1622,6 +1905,8 @@ static const struct gnu_ifunc_fns elf_gn
void
_initialize_elfread (void)
{
@@ -2818,10 +2819,10 @@ index b9cfa13..fed63f5 100644
add_symtab_fns (&elf_sym_fns);
elf_objfile_gnu_ifunc_cache_data = register_objfile_data ();
-diff --git a/gdb/eval.c b/gdb/eval.c
-index bbc7b8a..7c0a8f9 100644
---- a/gdb/eval.c
-+++ b/gdb/eval.c
+Index: gdb-7.2.90.20110429/gdb/eval.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/eval.c 2011-03-28 22:21:03.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/eval.c 2011-04-29 09:40:46.000000000 +0200
@@ -44,6 +44,7 @@
#include "objfiles.h"
#include "python/python.h"
@@ -2830,7 +2831,7 @@ index bbc7b8a..7c0a8f9 100644
#include "gdb_assert.h"
-@@ -489,27 +490,217 @@ init_array_element (struct value *array, struct value *element,
+@@ -489,27 +490,217 @@ init_array_element (struct value *array,
}
static struct value *
@@ -2845,12 +2846,11 @@ index bbc7b8a..7c0a8f9 100644
- enum f90_range_type range_type = longest_to_int (exp->elts[pc].longconst);
-
- *pos += 3;
--
-- if (range_type == LOW_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
-- low_bound = TYPE_LOW_BOUND (range);
+ /* Type to use for the newly allocated value ARRAY. */
+ struct type *new_array_type;
-+
+
+- if (range_type == LOW_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
+- low_bound = TYPE_LOW_BOUND (range);
+ /* Type being iterated for each dimension. */
+ struct type *type, *type_last_target;
+
@@ -3047,13 +3047,13 @@ index bbc7b8a..7c0a8f9 100644
+ VALUE_FRAME_ID (array) = VALUE_FRAME_ID (saved_array);
+ if (VALUE_LVAL (array) != lval_internalvar)
+ set_value_address (array, value_byte_address + value_byte_offset);
-+
+
+- return value_slice (array, low_bound, high_bound - low_bound + 1);
+ if (!value_lazy (saved_array))
+ {
+ allocate_value_contents (array);
+ set_value_lazy (array, 0);
-
-- return value_slice (array, low_bound, high_bound - low_bound + 1);
++
+ memcpy (value_contents_writeable (array),
+ value_contents (saved_array) + value_byte_offset,
+ TYPE_LENGTH (new_array_type));
@@ -3064,7 +3064,7 @@ index bbc7b8a..7c0a8f9 100644
}
-@@ -790,6 +981,7 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -790,6 +981,7 @@ evaluate_subexp_standard (struct type *e
int save_pos1;
struct symbol *function = NULL;
char *function_name = NULL;
@@ -3072,7 +3072,7 @@ index bbc7b8a..7c0a8f9 100644
pc = (*pos)++;
op = exp->elts[pc].opcode;
-@@ -1862,6 +2054,8 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -1862,6 +2054,8 @@ evaluate_subexp_standard (struct type *e
/* First determine the type code we are dealing with. */
arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
@@ -3081,7 +3081,7 @@ index bbc7b8a..7c0a8f9 100644
type = check_typedef (value_type (arg1));
code = TYPE_CODE (type);
-@@ -1882,23 +2076,13 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -1882,23 +2076,13 @@ evaluate_subexp_standard (struct type *e
code = TYPE_CODE (type);
}
}
@@ -3107,7 +3107,7 @@ index bbc7b8a..7c0a8f9 100644
case TYPE_CODE_PTR:
case TYPE_CODE_FUNC:
-@@ -2337,49 +2521,6 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -2337,49 +2521,6 @@ evaluate_subexp_standard (struct type *e
}
return (arg1);
@@ -3157,7 +3157,7 @@ index bbc7b8a..7c0a8f9 100644
case BINOP_LOGICAL_AND:
arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
if (noside == EVAL_SKIP)
-@@ -2611,15 +2752,23 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -2611,15 +2752,23 @@ evaluate_subexp_standard (struct type *e
if (expect_type && TYPE_CODE (expect_type) == TYPE_CODE_PTR)
expect_type = TYPE_TARGET_TYPE (check_typedef (expect_type));
arg1 = evaluate_subexp (expect_type, exp, pos, noside);
@@ -3183,7 +3183,7 @@ index bbc7b8a..7c0a8f9 100644
else if (noside == EVAL_AVOID_SIDE_EFFECTS)
{
type = check_typedef (value_type (arg1));
-@@ -2628,12 +2777,18 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -2628,12 +2777,18 @@ evaluate_subexp_standard (struct type *e
/* In C you can dereference an array to get the 1st elt. */
|| TYPE_CODE (type) == TYPE_CODE_ARRAY
)
@@ -3207,7 +3207,7 @@ index bbc7b8a..7c0a8f9 100644
else
error (_("Attempt to take contents of a non-pointer value."));
}
-@@ -2643,9 +2798,14 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -2643,9 +2798,14 @@ evaluate_subexp_standard (struct type *e
do. "long long" variables are rare enough that
BUILTIN_TYPE_LONGEST would seem to be a mistake. */
if (TYPE_CODE (type) == TYPE_CODE_INT)
@@ -3225,7 +3225,7 @@ index bbc7b8a..7c0a8f9 100644
case UNOP_ADDR:
/* C++: check for and handle pointer to members. */
-@@ -2991,7 +3151,7 @@ evaluate_subexp_with_coercion (struct expression *exp,
+@@ -2991,7 +3151,7 @@ evaluate_subexp_with_coercion (struct ex
{
enum exp_opcode op;
int pc;
@@ -3234,7 +3234,7 @@ index bbc7b8a..7c0a8f9 100644
struct symbol *var;
struct type *type;
-@@ -3002,13 +3162,18 @@ evaluate_subexp_with_coercion (struct expression *exp,
+@@ -3002,13 +3162,18 @@ evaluate_subexp_with_coercion (struct ex
{
case OP_VAR_VALUE:
var = exp->elts[pc + 2].symbol;
@@ -3254,7 +3254,7 @@ index bbc7b8a..7c0a8f9 100644
return value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
val);
}
-@@ -3060,9 +3225,13 @@ evaluate_subexp_for_sizeof (struct expression *exp, int *pos)
+@@ -3060,9 +3225,13 @@ evaluate_subexp_for_sizeof (struct expre
case OP_VAR_VALUE:
(*pos) += 4;
@@ -3271,7 +3271,7 @@ index bbc7b8a..7c0a8f9 100644
default:
val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
-@@ -3093,18 +3262,25 @@ parse_and_eval_type (char *p, int length)
+@@ -3093,18 +3262,25 @@ parse_and_eval_type (char *p, int length
int
calc_f77_array_dims (struct type *array_type)
{
@@ -3307,10 +3307,10 @@ index bbc7b8a..7c0a8f9 100644
- return ndimen;
+
}
-diff --git a/gdb/f-exp.y b/gdb/f-exp.y
-index d9cf3cf..3e11e57 100644
---- a/gdb/f-exp.y
-+++ b/gdb/f-exp.y
+Index: gdb-7.2.90.20110429/gdb/f-exp.y
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/f-exp.y 2011-03-18 14:51:41.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/f-exp.y 2011-04-29 09:40:46.000000000 +0200
@@ -293,7 +293,9 @@ arglist : subrange
{ arglist_len = 1; }
;
@@ -3322,11 +3322,11 @@ index d9cf3cf..3e11e57 100644
{ arglist_len++; }
;
-diff --git a/gdb/f-lang.h b/gdb/f-lang.h
-index 8043577..94a5f31 100644
---- a/gdb/f-lang.h
-+++ b/gdb/f-lang.h
-@@ -28,6 +28,10 @@ extern void f_error (char *); /* Defined in f-exp.y */
+Index: gdb-7.2.90.20110429/gdb/f-lang.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/f-lang.h 2011-01-07 20:36:16.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/f-lang.h 2011-04-29 09:40:46.000000000 +0200
+@@ -28,6 +28,10 @@ extern void f_error (char *); /* Defined
extern void f_print_type (struct type *, const char *, struct ui_file *, int,
int);
@@ -3337,10 +3337,10 @@ index 8043577..94a5f31 100644
extern int f_val_print (struct type *, const gdb_byte *, int, CORE_ADDR,
struct ui_file *, int,
const struct value *,
-diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
-index ad988d2..985fef6 100644
---- a/gdb/f-typeprint.c
-+++ b/gdb/f-typeprint.c
+Index: gdb-7.2.90.20110429/gdb/f-typeprint.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/f-typeprint.c 2011-01-07 20:36:16.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/f-typeprint.c 2011-04-29 09:40:46.000000000 +0200
@@ -32,7 +32,7 @@
#include "gdbcore.h"
#include "target.h"
@@ -3350,7 +3350,7 @@ index ad988d2..985fef6 100644
#include "gdb_string.h"
#include <errno.h>
-@@ -49,6 +49,34 @@ void f_type_print_varspec_prefix (struct type *, struct ui_file *,
+@@ -49,6 +49,34 @@ void f_type_print_varspec_prefix (struct
void f_type_print_base (struct type *, struct ui_file *, int, int);
\f
@@ -3385,7 +3385,7 @@ index ad988d2..985fef6 100644
/* LEVEL is the depth to indent lines by. */
void
-@@ -58,6 +86,9 @@ f_print_type (struct type *type, const char *varstring, struct ui_file *stream,
+@@ -58,6 +86,9 @@ f_print_type (struct type *type, const c
enum type_code code;
int demangled_args;
@@ -3395,7 +3395,7 @@ index ad988d2..985fef6 100644
f_type_print_base (type, stream, show, level);
code = TYPE_CODE (type);
if ((varstring != NULL && *varstring != '\0')
-@@ -165,6 +196,9 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
+@@ -165,6 +196,9 @@ f_type_print_varspec_suffix (struct type
QUIT;
@@ -3405,11 +3405,11 @@ index ad988d2..985fef6 100644
switch (TYPE_CODE (type))
{
case TYPE_CODE_ARRAY:
-diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c
-index 3280ddc..128d6bc 100644
---- a/gdb/f-valprint.c
-+++ b/gdb/f-valprint.c
-@@ -54,15 +54,17 @@ int f77_array_offset_tbl[MAX_FORTRAN_DIMS + 1][2];
+Index: gdb-7.2.90.20110429/gdb/f-valprint.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/f-valprint.c 2011-02-07 18:49:32.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/f-valprint.c 2011-04-29 09:40:46.000000000 +0200
+@@ -54,15 +54,17 @@ int f77_array_offset_tbl[MAX_FORTRAN_DIM
/* The following macro gives us the size of the nth dimension, Where
n is 1 based. */
@@ -3453,7 +3453,7 @@ index 3280ddc..128d6bc 100644
}
return TYPE_ARRAY_UPPER_BOUND_VALUE (type);
-@@ -135,24 +140,29 @@ f77_create_arrayprint_offset_tbl (struct type *type, struct ui_file *stream)
+@@ -135,24 +140,29 @@ f77_create_arrayprint_offset_tbl (struct
upper = f77_get_upperbound (tmp_type);
lower = f77_get_lowerbound (tmp_type);
@@ -3489,7 +3489,7 @@ index 3280ddc..128d6bc 100644
}
}
-@@ -174,37 +184,35 @@ f77_print_array_1 (int nss, int ndimensions, struct type *type,
+@@ -174,37 +184,35 @@ f77_print_array_1 (int nss, int ndimensi
if (nss != ndimensions)
{
@@ -3534,7 +3534,7 @@ index 3280ddc..128d6bc 100644
fprintf_filtered (stream, "...");
}
}
-@@ -260,6 +268,9 @@ f_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset,
+@@ -260,6 +268,9 @@ f_val_print (struct type *type, const gd
CORE_ADDR addr;
int index;
@@ -3544,10 +3544,10 @@ index 3280ddc..128d6bc 100644
CHECK_TYPEDEF (type);
switch (TYPE_CODE (type))
{
-diff --git a/gdb/findvar.c b/gdb/findvar.c
-index 2b361ef..01e1c0d 100644
---- a/gdb/findvar.c
-+++ b/gdb/findvar.c
+Index: gdb-7.2.90.20110429/gdb/findvar.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/findvar.c 2011-03-18 19:42:41.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/findvar.c 2011-04-29 09:40:46.000000000 +0200
@@ -35,6 +35,7 @@
#include "user-regs.h"
#include "block.h"
@@ -3556,7 +3556,7 @@ index 2b361ef..01e1c0d 100644
/* Basic byte-swapping routines. All 'extract' functions return a
host-format integer from a target-format integer at ADDR which is
-@@ -408,8 +409,11 @@ symbol_read_needs_frame (struct symbol *sym)
+@@ -408,8 +409,11 @@ symbol_read_needs_frame (struct symbol *
/* Given a struct symbol for a variable,
and a stack frame id, read the value of the variable
@@ -3570,7 +3570,7 @@ index 2b361ef..01e1c0d 100644
struct value *
read_var_value (struct symbol *var, struct frame_info *frame)
-@@ -417,16 +421,6 @@ read_var_value (struct symbol *var, struct frame_info *frame)
+@@ -417,16 +421,6 @@ read_var_value (struct symbol *var, stru
struct value *v;
struct type *type = SYMBOL_TYPE (var);
CORE_ADDR addr;
@@ -3587,7 +3587,7 @@ index 2b361ef..01e1c0d 100644
if (symbol_read_needs_frame (var))
gdb_assert (frame);
-@@ -436,7 +430,7 @@ read_var_value (struct symbol *var, struct frame_info *frame)
+@@ -436,7 +430,7 @@ read_var_value (struct symbol *var, stru
case LOC_CONST:
/* Put the constant back in target format. */
v = allocate_value (type);
@@ -3596,7 +3596,7 @@ index 2b361ef..01e1c0d 100644
gdbarch_byte_order (get_type_arch (type)),
(LONGEST) SYMBOL_VALUE (var));
VALUE_LVAL (v) = not_lval;
-@@ -461,12 +455,12 @@ read_var_value (struct symbol *var, struct frame_info *frame)
+@@ -461,12 +455,12 @@ read_var_value (struct symbol *var, stru
case LOC_CONST_BYTES:
v = allocate_value (type);
@@ -3611,7 +3611,7 @@ index 2b361ef..01e1c0d 100644
if (overlay_debugging)
addr = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var),
SYMBOL_OBJ_SECTION (var));
-@@ -479,7 +473,6 @@ read_var_value (struct symbol *var, struct frame_info *frame)
+@@ -479,7 +473,6 @@ read_var_value (struct symbol *var, stru
if (!addr)
return 0;
addr += SYMBOL_VALUE (var);
@@ -3619,7 +3619,7 @@ index 2b361ef..01e1c0d 100644
break;
case LOC_REF_ARG:
-@@ -493,14 +486,12 @@ read_var_value (struct symbol *var, struct frame_info *frame)
+@@ -493,14 +486,12 @@ read_var_value (struct symbol *var, stru
argref += SYMBOL_VALUE (var);
ref = value_at (lookup_pointer_type (type), argref);
addr = value_as_address (ref);
@@ -3634,7 +3634,7 @@ index 2b361ef..01e1c0d 100644
break;
case LOC_TYPEDEF:
-@@ -508,7 +499,6 @@ read_var_value (struct symbol *var, struct frame_info *frame)
+@@ -508,7 +499,6 @@ read_var_value (struct symbol *var, stru
break;
case LOC_BLOCK:
@@ -3642,7 +3642,7 @@ index 2b361ef..01e1c0d 100644
if (overlay_debugging)
addr = symbol_overlayed_address
(BLOCK_START (SYMBOL_BLOCK_VALUE (var)), SYMBOL_OBJ_SECTION (var));
-@@ -533,7 +523,6 @@ read_var_value (struct symbol *var, struct frame_info *frame)
+@@ -533,7 +523,6 @@ read_var_value (struct symbol *var, stru
error (_("Value of register variable not available."));
addr = value_as_address (regval);
@@ -3650,7 +3650,7 @@ index 2b361ef..01e1c0d 100644
}
else
{
-@@ -572,7 +561,6 @@ read_var_value (struct symbol *var, struct frame_info *frame)
+@@ -572,7 +561,6 @@ read_var_value (struct symbol *var, stru
if (obj_section
&& (obj_section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0)
addr = target_translate_tls_address (obj_section->objfile, addr);
@@ -3658,7 +3658,7 @@ index 2b361ef..01e1c0d 100644
}
break;
-@@ -587,6 +575,10 @@ read_var_value (struct symbol *var, struct frame_info *frame)
+@@ -587,6 +575,10 @@ read_var_value (struct symbol *var, stru
break;
}
@@ -3684,7 +3684,7 @@ index 2b361ef..01e1c0d 100644
{
/* The ISA/ABI need to something weird when obtaining the
specified value from this register. It might need to
-@@ -643,7 +636,7 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame)
+@@ -643,7 +636,7 @@ value_from_register (struct type *type,
VALUE_LVAL (v) = lval_register;
VALUE_FRAME_ID (v) = get_frame_id (frame);
VALUE_REGNUM (v) = regnum;
@@ -3693,10 +3693,10 @@ index 2b361ef..01e1c0d 100644
value_contents_raw (v), &optim,
&unavail);
}
-diff --git a/gdb/gdbinit.in b/gdb/gdbinit.in
-index ffb7f53..a2e7e94 100644
---- a/gdb/gdbinit.in
-+++ b/gdb/gdbinit.in
+Index: gdb-7.2.90.20110429/gdb/gdbinit.in
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/gdbinit.in 2009-10-05 15:46:52.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/gdbinit.in 2011-04-29 09:40:46.000000000 +0200
@@ -1,5 +1,15 @@
echo Setting up the environment for debugging gdb.\n
@@ -3713,10 +3713,10 @@ index ffb7f53..a2e7e94 100644
set complaints 1
b internal_error
-diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
-index 3b45931..eda2506 100644
---- a/gdb/gdbtypes.c
-+++ b/gdb/gdbtypes.c
+Index: gdb-7.2.90.20110429/gdb/gdbtypes.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/gdbtypes.c 2011-03-28 22:21:03.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/gdbtypes.c 2011-04-29 09:40:46.000000000 +0200
@@ -39,6 +39,9 @@
#include "cp-abi.h"
#include "gdb_assert.h"
@@ -3727,7 +3727,7 @@ index 3b45931..eda2506 100644
/* Initialize BADNESS constants. */
-@@ -144,7 +147,16 @@ static void print_bit_vector (B_TYPE *, int);
+@@ -144,7 +147,16 @@ static void print_bit_vector (B_TYPE *,
static void print_arg_types (struct field *, int, int);
static void dump_fn_fieldlists (struct type *, int);
static void print_cplus_stuff (struct type *, int);
@@ -3788,7 +3788,7 @@ index 3b45931..eda2506 100644
/* Allocate a new GDBARCH-associated type structure and fill it
with some defaults. Space for the type structure is allocated
on the heap. */
-@@ -300,7 +349,7 @@ make_pointer_type (struct type *type, struct type **typeptr)
+@@ -300,7 +349,7 @@ make_pointer_type (struct type *type, st
if (typeptr == 0 || *typeptr == 0) /* We'll need to allocate one. */
{
@@ -3797,7 +3797,7 @@ index 3b45931..eda2506 100644
if (typeptr)
*typeptr = ntype;
}
-@@ -377,7 +426,7 @@ make_reference_type (struct type *type, struct type **typeptr)
+@@ -377,7 +426,7 @@ make_reference_type (struct type *type,
if (typeptr == 0 || *typeptr == 0) /* We'll need to allocate one. */
{
@@ -3806,7 +3806,7 @@ index 3b45931..eda2506 100644
if (typeptr)
*typeptr = ntype;
}
-@@ -748,6 +797,7 @@ create_range_type (struct type *result_type, struct type *index_type,
+@@ -748,6 +797,7 @@ create_range_type (struct type *result_t
TYPE_ZALLOC (result_type, sizeof (struct range_bounds));
TYPE_LOW_BOUND (result_type) = low_bound;
TYPE_HIGH_BOUND (result_type) = high_bound;
@@ -3814,7 +3814,7 @@ index 3b45931..eda2506 100644
if (low_bound >= 0)
TYPE_UNSIGNED (result_type) = 1;
-@@ -891,26 +941,31 @@ create_array_type (struct type *result_type,
+@@ -891,26 +941,31 @@ create_array_type (struct type *result_t
TYPE_CODE (result_type) = TYPE_CODE_ARRAY;
TYPE_TARGET_TYPE (result_type) = element_type;
@@ -4047,7 +4047,7 @@ index 3b45931..eda2506 100644
}
type = make_qualified_type (type, instance_flags, NULL);
-@@ -3266,33 +3406,42 @@ type_pair_eq (const void *item_lhs, const void *item_rhs)
+@@ -3266,33 +3406,42 @@ type_pair_eq (const void *item_lhs, cons
}
/* Allocate the hash table used by copy_type_recursive to walk
@@ -4105,7 +4105,7 @@ index 3b45931..eda2506 100644
return type;
/* This type shouldn't be pointing to any types in other objfiles;
-@@ -3307,9 +3456,10 @@ copy_type_recursive (struct objfile *objfile,
+@@ -3307,9 +3456,10 @@ copy_type_recursive (struct objfile *obj
new_type = alloc_type_arch (get_type_arch (type));
/* We must add the new type to the hash table immediately, in case
@@ -4119,7 +4119,7 @@ index 3b45931..eda2506 100644
stored->old = type;
stored->new = new_type;
*slot = stored;
-@@ -3320,6 +3470,21 @@ copy_type_recursive (struct objfile *objfile,
+@@ -3320,6 +3470,21 @@ copy_type_recursive (struct objfile *obj
TYPE_OBJFILE_OWNED (new_type) = 0;
TYPE_OWNER (new_type).gdbarch = get_type_arch (type);
@@ -4141,7 +4141,7 @@ index 3b45931..eda2506 100644
if (TYPE_NAME (type))
TYPE_NAME (new_type) = xstrdup (TYPE_NAME (type));
if (TYPE_TAG_NAME (type))
-@@ -3328,12 +3493,48 @@ copy_type_recursive (struct objfile *objfile,
+@@ -3328,12 +3493,48 @@ copy_type_recursive (struct objfile *obj
TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
@@ -4190,7 +4190,7 @@ index 3b45931..eda2506 100644
TYPE_FIELDS (new_type) = XCALLOC (nfields, struct field);
for (i = 0; i < nfields; i++)
{
-@@ -3342,8 +3543,8 @@ copy_type_recursive (struct objfile *objfile,
+@@ -3342,8 +3543,8 @@ copy_type_recursive (struct objfile *obj
TYPE_FIELD_BITSIZE (new_type, i) = TYPE_FIELD_BITSIZE (type, i);
if (TYPE_FIELD_TYPE (type, i))
TYPE_FIELD_TYPE (new_type, i)
@@ -4201,7 +4201,7 @@ index 3b45931..eda2506 100644
if (TYPE_FIELD_NAME (type, i))
TYPE_FIELD_NAME (new_type, i) =
xstrdup (TYPE_FIELD_NAME (type, i));
-@@ -3370,24 +3571,184 @@ copy_type_recursive (struct objfile *objfile,
+@@ -3370,24 +3571,184 @@ copy_type_recursive (struct objfile *obj
}
}
@@ -4393,7 +4393,7 @@ index 3b45931..eda2506 100644
/* Maybe copy the type_specific bits.
NOTE drow/2005-12-09: We do not copy the C++-specific bits like
-@@ -3404,6 +3765,17 @@ copy_type_recursive (struct objfile *objfile,
+@@ -3404,6 +3765,17 @@ copy_type_recursive (struct objfile *obj
return new_type;
}
@@ -4627,10 +4627,10 @@ index 3b45931..eda2506 100644
objfile_type_data = register_objfile_data ();
add_setshow_zinteger_cmd ("overload", no_class, &overload_debug,
-diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
-index 39ca1b4..4b4720a 100644
---- a/gdb/gdbtypes.h
-+++ b/gdb/gdbtypes.h
+Index: gdb-7.2.90.20110429/gdb/gdbtypes.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/gdbtypes.h 2011-03-28 22:21:03.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/gdbtypes.h 2011-04-29 09:40:46.000000000 +0200
@@ -215,6 +215,11 @@ enum type_instance_flag_value
#define TYPE_TARGET_STUB(t) (TYPE_MAIN_TYPE (t)->flag_target_stub)
@@ -4771,7 +4771,7 @@ index 39ca1b4..4b4720a 100644
/* Flags indicating whether the values of low and high are
valid. When true, the respective range value is
-@@ -926,9 +1019,9 @@ extern void allocate_gnat_aux_type (struct type *);
+@@ -926,9 +1019,9 @@ extern void allocate_gnat_aux_type (stru
#define TYPE_POINTER_TYPE(thistype) (thistype)->pointer_type
#define TYPE_REFERENCE_TYPE(thistype) (thistype)->reference_type
#define TYPE_CHAIN(thistype) (thistype)->chain
@@ -4784,7 +4784,7 @@ index 39ca1b4..4b4720a 100644
calls check_typedef, TYPE_LENGTH (VALUE_TYPE (X)) is safe. */
#define TYPE_LENGTH(thistype) (thistype)->length
/* Note that TYPE_CODE can be TYPE_CODE_TYPEDEF, so if you want the real
-@@ -936,11 +1029,16 @@ extern void allocate_gnat_aux_type (struct type *);
+@@ -936,11 +1029,16 @@ extern void allocate_gnat_aux_type (stru
#define TYPE_CODE(thistype) TYPE_MAIN_TYPE(thistype)->code
#define TYPE_NFIELDS(thistype) TYPE_MAIN_TYPE(thistype)->nfields
#define TYPE_FIELDS(thistype) TYPE_MAIN_TYPE(thistype)->flds_bnds.fields
@@ -4803,7 +4803,7 @@ index 39ca1b4..4b4720a 100644
#define TYPE_LOW_BOUND_UNDEFINED(range_type) \
TYPE_RANGE_DATA(range_type)->low_undefined
#define TYPE_HIGH_BOUND_UNDEFINED(range_type) \
-@@ -957,7 +1055,14 @@ extern void allocate_gnat_aux_type (struct type *);
+@@ -957,7 +1055,14 @@ extern void allocate_gnat_aux_type (stru
(TYPE_HIGH_BOUND(TYPE_INDEX_TYPE((arraytype))))
#define TYPE_ARRAY_LOWER_BOUND_VALUE(arraytype) \
@@ -4819,7 +4819,7 @@ index 39ca1b4..4b4720a 100644
/* C++ */
-@@ -1379,6 +1484,18 @@ extern struct type *create_array_type (struct type *, struct type *,
+@@ -1379,6 +1484,18 @@ extern struct type *create_array_type (s
struct type *);
extern struct type *lookup_array_range_type (struct type *, int, int);
@@ -4838,7 +4838,7 @@ index 39ca1b4..4b4720a 100644
extern struct type *create_string_type (struct type *, struct type *,
struct type *);
extern struct type *lookup_string_range_type (struct type *, int, int);
-@@ -1424,6 +1541,10 @@ extern int is_public_ancestor (struct type *, struct type *);
+@@ -1424,6 +1541,10 @@ extern int is_public_ancestor (struct ty
extern int is_unique_ancestor (struct type *, struct value *);
@@ -4849,7 +4849,7 @@ index 39ca1b4..4b4720a 100644
/* Overload resolution */
#define LENGTH_MATCH(bv) ((bv)->rank[0])
-@@ -1496,10 +1617,13 @@ extern void maintenance_print_type (char *, int);
+@@ -1496,10 +1617,13 @@ extern void maintenance_print_type (char
extern htab_t create_copied_types_hash (struct objfile *objfile);
@@ -4865,11 +4865,11 @@ index 39ca1b4..4b4720a 100644
+#endif
+
#endif /* GDBTYPES_H */
-diff --git a/gdb/i386-linux-nat.c b/gdb/i386-linux-nat.c
-index e32a119..2024ae8 100644
---- a/gdb/i386-linux-nat.c
-+++ b/gdb/i386-linux-nat.c
-@@ -649,22 +649,13 @@ i386_linux_store_inferior_registers (struct target_ops *ops,
+Index: gdb-7.2.90.20110429/gdb/i386-linux-nat.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/i386-linux-nat.c 2011-02-27 17:25:37.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/i386-linux-nat.c 2011-04-29 09:40:46.000000000 +0200
+@@ -649,22 +649,13 @@ i386_linux_store_inferior_registers (str
}
\f
@@ -4893,7 +4893,7 @@ index e32a119..2024ae8 100644
/* FIXME: kettenis/2001-03-27: Calling perror_with_name if the
ptrace call fails breaks debugging remote targets. The correct
way to fix this is to add the hardware breakpoint and watchpoint
-@@ -686,14 +677,8 @@ i386_linux_dr_get (ptid_t ptid, int regnum)
+@@ -686,14 +677,8 @@ i386_linux_dr_get (ptid_t ptid, int regn
/* Set debug register REGNUM to VALUE in only the one LWP of PTID. */
static void
@@ -4909,7 +4909,7 @@ index e32a119..2024ae8 100644
errno = 0;
ptrace (PTRACE_POKEUSER, tid,
offsetof (struct user, u_debugreg[regnum]), value);
-@@ -701,35 +686,78 @@ i386_linux_dr_set (ptid_t ptid, int regnum, unsigned long value)
+@@ -701,35 +686,78 @@ i386_linux_dr_set (ptid_t ptid, int regn
perror_with_name (_("Couldn't write debug register"));
}
@@ -5073,10 +5073,10 @@ index e32a119..2024ae8 100644
}
\f
-diff --git a/gdb/i386-nat.c b/gdb/i386-nat.c
-index 7e6814e..b1e8e7d 100644
---- a/gdb/i386-nat.c
-+++ b/gdb/i386-nat.c
+Index: gdb-7.2.90.20110429/gdb/i386-nat.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/i386-nat.c 2011-02-26 23:04:51.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/i386-nat.c 2011-04-29 09:40:46.000000000 +0200
@@ -25,6 +25,7 @@
#include "gdbcmd.h"
#include "target.h"
@@ -5179,7 +5179,7 @@ index 7e6814e..b1e8e7d 100644
/* Whether or not to print the mirrored debug registers. */
static int maint_show_dr;
-@@ -195,21 +206,80 @@ static int i386_handle_nonaligned_watchpoint (i386_wp_op_t what,
+@@ -195,21 +206,80 @@ static int i386_handle_nonaligned_watchp
/* Implementation. */
@@ -5272,7 +5272,7 @@ index 7e6814e..b1e8e7d 100644
int addr_size = gdbarch_addr_bit (target_gdbarch) / 8;
int i;
-@@ -239,13 +310,16 @@ i386_show_dr (const char *func, CORE_ADDR addr,
+@@ -239,13 +310,16 @@ i386_show_dr (const char *func, CORE_ADD
: "??unknown??"))));
puts_unfiltered (":\n");
printf_unfiltered ("\tCONTROL (DR7): %s STATUS (DR6): %s\n",
@@ -5292,7 +5292,7 @@ index 7e6814e..b1e8e7d 100644
i++;
}
}
-@@ -313,6 +387,7 @@ Invalid hardware breakpoint length %d in i386_length_and_rw_bits.\n"), len);
+@@ -313,6 +387,7 @@ Invalid hardware breakpoint length %d in
static int
i386_insert_aligned_watchpoint (CORE_ADDR addr, unsigned len_rw_bits)
{
@@ -5300,7 +5300,7 @@ index 7e6814e..b1e8e7d 100644
int i;
if (!i386_dr_low.set_addr || !i386_dr_low.set_control)
-@@ -323,11 +398,10 @@ i386_insert_aligned_watchpoint (CORE_ADDR addr, unsigned len_rw_bits)
+@@ -323,11 +398,10 @@ i386_insert_aligned_watchpoint (CORE_ADD
reuse it for this watchpoint as well (and save a register). */
ALL_DEBUG_REGISTERS(i)
{
@@ -5315,7 +5315,7 @@ index 7e6814e..b1e8e7d 100644
return 0;
}
}
-@@ -335,7 +409,7 @@ i386_insert_aligned_watchpoint (CORE_ADDR addr, unsigned len_rw_bits)
+@@ -335,7 +409,7 @@ i386_insert_aligned_watchpoint (CORE_ADD
/* Next, look for a vacant debug register. */
ALL_DEBUG_REGISTERS(i)
{
@@ -5324,7 +5324,7 @@ index 7e6814e..b1e8e7d 100644
break;
}
-@@ -346,9 +420,9 @@ i386_insert_aligned_watchpoint (CORE_ADDR addr, unsigned len_rw_bits)
+@@ -346,9 +420,9 @@ i386_insert_aligned_watchpoint (CORE_ADD
/* Now set up the register I to watch our region. */
/* Record the info in our local mirrored array. */
@@ -5337,7 +5337,7 @@ index 7e6814e..b1e8e7d 100644
/* Note: we only enable the watchpoint locally, i.e. in the current
task. Currently, no i386 target allows or supports global
watchpoints; however, if any target would want that in the
-@@ -356,13 +430,13 @@ i386_insert_aligned_watchpoint (CORE_ADDR addr, unsigned len_rw_bits)
+@@ -356,13 +430,13 @@ i386_insert_aligned_watchpoint (CORE_ADD
to enable watchpoints globally or locally, and the code below
should use global or local enable and slow-down flags as
appropriate. */
@@ -5355,7 +5355,7 @@ index 7e6814e..b1e8e7d 100644
/* Only a sanity check for leftover bits (set possibly only by inferior). */
if (i386_dr_low.unset_status)
-@@ -380,21 +454,21 @@ i386_insert_aligned_watchpoint (CORE_ADDR addr, unsigned len_rw_bits)
+@@ -380,21 +454,21 @@ i386_insert_aligned_watchpoint (CORE_ADD
static int
i386_remove_aligned_watchpoint (CORE_ADDR addr, unsigned len_rw_bits)
{
@@ -5384,7 +5384,7 @@ index 7e6814e..b1e8e7d 100644
if (i386_dr_low.reset_addr)
i386_dr_low.reset_addr (i);
}
-@@ -556,26 +630,27 @@ i386_region_ok_for_watchpoint (CORE_ADDR addr, int len)
+@@ -556,26 +630,27 @@ i386_region_ok_for_watchpoint (CORE_ADDR
static int
i386_stopped_data_address (struct target_ops *ops, CORE_ADDR *addr_p)
{
@@ -5417,7 +5417,7 @@ index 7e6814e..b1e8e7d 100644
rc = 1;
if (maint_show_dr)
i386_show_dr ("watchpoint_hit", addr, -1, hw_write);
-@@ -689,6 +764,10 @@ i386_use_watchpoints (struct target_ops *t)
+@@ -689,6 +764,10 @@ i386_use_watchpoints (struct target_ops
t->to_remove_watchpoint = i386_remove_watchpoint;
t->to_insert_hw_breakpoint = i386_insert_hw_breakpoint;
t->to_remove_hw_breakpoint = i386_remove_hw_breakpoint;
@@ -5428,11 +5428,11 @@ index 7e6814e..b1e8e7d 100644
}
void
-diff --git a/gdb/i386-nat.h b/gdb/i386-nat.h
-index 819c6b8..bef8a35 100644
---- a/gdb/i386-nat.h
-+++ b/gdb/i386-nat.h
-@@ -78,6 +78,28 @@ struct i386_dr_low_type
+Index: gdb-7.2.90.20110429/gdb/i386-nat.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/i386-nat.h 2011-01-09 04:08:56.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/i386-nat.h 2011-04-29 09:40:46.000000000 +0200
+@@ -78,6 +78,28 @@ struct i386_dr_low_type
extern struct i386_dr_low_type i386_dr_low;
@@ -5461,10 +5461,10 @@ index 819c6b8..bef8a35 100644
/* Use this function to set i386_dr_low debug_register_length field
rather than setting it directly to check that the length is only
set once. It also enables the 'maint set/show show-debug-regs'
-diff --git a/gdb/infrun.c b/gdb/infrun.c
-index 7cee7c8..b94c11a 100644
---- a/gdb/infrun.c
-+++ b/gdb/infrun.c
+Index: gdb-7.2.90.20110429/gdb/infrun.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/infrun.c 2011-04-20 19:04:32.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/infrun.c 2011-04-29 09:40:46.000000000 +0200
@@ -54,6 +54,8 @@
#include "inline-frame.h"
#include "jit.h"
@@ -5474,7 +5474,7 @@ index 7cee7c8..b94c11a 100644
/* Prototypes for local functions */
-@@ -2247,7 +2249,7 @@ static void insert_step_resume_breakpoint_at_sal (struct gdbarch *,
+@@ -2247,7 +2249,7 @@ static void insert_step_resume_breakpoin
struct frame_id);
static void insert_longjmp_resume_breakpoint (struct gdbarch *, CORE_ADDR);
static void check_exception_resume (struct execution_control_state *,
@@ -5518,7 +5518,7 @@ index 7cee7c8..b94c11a 100644
keep_going (ecs);
return;
-@@ -5263,15 +5268,65 @@ insert_exception_resume_breakpoint (struct thread_info *tp,
+@@ -5263,15 +5268,65 @@ insert_exception_resume_breakpoint (stru
}
}
@@ -5585,7 +5585,7 @@ index 7cee7c8..b94c11a 100644
TRY_CATCH (e, RETURN_MASK_ERROR)
{
-@@ -6253,7 +6308,8 @@ static struct lval_funcs siginfo_value_funcs =
+@@ -6253,7 +6308,8 @@ static struct lval_funcs siginfo_value_f
if there's no object available. */
static struct value *
@@ -5595,7 +5595,7 @@ index 7cee7c8..b94c11a 100644
{
if (target_has_stack
&& !ptid_equal (inferior_ptid, null_ptid)
-@@ -6826,6 +6882,15 @@ show_schedule_multiple (struct ui_file *file, int from_tty,
+@@ -6821,6 +6877,15 @@ show_schedule_multiple (struct ui_file *
"of all processes is %s.\n"), value);
}
@@ -5611,7 +5611,7 @@ index 7cee7c8..b94c11a 100644
void
_initialize_infrun (void)
{
-@@ -7098,7 +7163,7 @@ Tells gdb whether to detach the child of a fork."),
+@@ -7093,7 +7158,7 @@ Tells gdb whether to detach the child of
value with a void typed value, and when we get here, gdbarch
isn't initialized yet. At this point, we're quite sure there
isn't another convenience variable of the same name. */
@@ -5620,10 +5620,10 @@ index 7cee7c8..b94c11a 100644
add_setshow_boolean_cmd ("observer", no_class,
&observer_mode_1, _("\
-diff --git a/gdb/linespec.c b/gdb/linespec.c
-index 70df3ca..5338161 100644
---- a/gdb/linespec.c
-+++ b/gdb/linespec.c
+Index: gdb-7.2.90.20110429/gdb/linespec.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/linespec.c 2011-03-25 18:13:12.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/linespec.c 2011-04-29 09:40:46.000000000 +0200
@@ -43,6 +43,7 @@
#include "arch-utils.h"
#include <ctype.h>
@@ -5640,7 +5640,7 @@ index 70df3ca..5338161 100644
This may all be followed by an "if EXPR", which we ignore.
-@@ -837,6 +839,9 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
+@@ -837,6 +839,9 @@ decode_line_1 (char **argptr, int funfir
if (**argptr == '*')
return decode_indirect (argptr);
@@ -5650,10 +5650,10 @@ index 70df3ca..5338161 100644
is_quoted = (strchr (get_gdb_completer_quote_characters (),
**argptr) != NULL);
-diff --git a/gdb/linespec.h b/gdb/linespec.h
-index d8d2ec9..458235c 100644
---- a/gdb/linespec.h
-+++ b/gdb/linespec.h
+Index: gdb-7.2.90.20110429/gdb/linespec.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/linespec.h 2011-03-24 20:47:17.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/linespec.h 2011-04-29 09:40:46.000000000 +0200
@@ -30,6 +30,10 @@ struct linespec_result
display mechanism would do the wrong thing. */
int special_display;
@@ -5665,10 +5665,10 @@ index d8d2ec9..458235c 100644
/* If non-NULL, an array of canonical names for returned
symtab_and_line objects. The array has as many elements as the
`nelts' field in the symtabs_and_line returned by decode_line_1.
-diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
-index 732812d..03b3d19 100644
---- a/gdb/linux-nat.c
-+++ b/gdb/linux-nat.c
+Index: gdb-7.2.90.20110429/gdb/linux-nat.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/linux-nat.c 2011-03-09 13:48:55.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/linux-nat.c 2011-04-29 09:40:46.000000000 +0200
@@ -1254,6 +1254,64 @@ iterate_over_lwps (ptid_t filter,
return NULL;
}
@@ -5734,11 +5734,11 @@ index 732812d..03b3d19 100644
/* Update our internal state when changing from one checkpoint to
another indicated by NEW_PTID. We can only switch single-threaded
applications, so we only create one new LWP, and the previous list
-diff --git a/gdb/linux-nat.h b/gdb/linux-nat.h
-index 42cb2fc..05ac11d 100644
---- a/gdb/linux-nat.h
-+++ b/gdb/linux-nat.h
-@@ -140,6 +140,11 @@ struct lwp_info *iterate_over_lwps (ptid_t filter,
+Index: gdb-7.2.90.20110429/gdb/linux-nat.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/linux-nat.h 2011-01-05 23:22:49.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/linux-nat.h 2011-04-29 09:40:46.000000000 +0200
+@@ -140,6 +140,11 @@ struct lwp_info *iterate_over_lwps (ptid
void *),
void *data);
@@ -5750,11 +5750,11 @@ index 42cb2fc..05ac11d 100644
/* Create a prototype generic GNU/Linux target. The client can
override it with local methods. */
struct target_ops * linux_target (void);
-diff --git a/gdb/machoread.c b/gdb/machoread.c
-index dbf9ae4..3db9e16 100644
---- a/gdb/machoread.c
-+++ b/gdb/machoread.c
-@@ -849,6 +849,7 @@ static const struct sym_fns macho_sym_fns = {
+Index: gdb-7.2.90.20110429/gdb/machoread.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/machoread.c 2011-03-07 17:17:29.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/machoread.c 2011-04-29 09:40:46.000000000 +0200
+@@ -849,6 +849,7 @@ static const struct sym_fns macho_sym_fn
default_symfile_segments, /* Get segment information from a file. */
NULL,
macho_symfile_relocate, /* Relocate a debug section. */
@@ -5762,10 +5762,10 @@ index dbf9ae4..3db9e16 100644
&psym_functions
};
-diff --git a/gdb/main.c b/gdb/main.c
-index ff305a1..267f0b0 100644
---- a/gdb/main.c
-+++ b/gdb/main.c
+Index: gdb-7.2.90.20110429/gdb/main.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/main.c 2011-03-07 19:34:31.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/main.c 2011-04-29 09:40:46.000000000 +0200
@@ -39,6 +39,7 @@
#include "interps.h"
@@ -5913,11 +5913,11 @@ index ff305a1..267f0b0 100644
--quiet Do not print version number on startup.\n\
--readnow Fully read symbol files on first access.\n\
"), stream);
-diff --git a/gdb/mi/mi-cmd-var.c b/gdb/mi/mi-cmd-var.c
-index a401846..26dca8c 100644
---- a/gdb/mi/mi-cmd-var.c
-+++ b/gdb/mi/mi-cmd-var.c
-@@ -707,7 +707,6 @@ mi_cmd_var_update (char *command, char **argv, int argc)
+Index: gdb-7.2.90.20110429/gdb/mi/mi-cmd-var.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/mi/mi-cmd-var.c 2011-01-12 22:09:39.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/mi/mi-cmd-var.c 2011-04-29 09:40:46.000000000 +0200
+@@ -707,7 +707,6 @@ mi_cmd_var_update (char *command, char *
}
else
{
@@ -5925,11 +5925,11 @@ index a401846..26dca8c 100644
struct varobj *var = varobj_get_handle (name);
varobj_update_one (var, print_values, 1 /* explicit */);
-diff --git a/gdb/mipsread.c b/gdb/mipsread.c
-index 74d795d..7e05317 100644
---- a/gdb/mipsread.c
-+++ b/gdb/mipsread.c
-@@ -402,6 +402,7 @@ static const struct sym_fns ecoff_sym_fns =
+Index: gdb-7.2.90.20110429/gdb/mipsread.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/mipsread.c 2011-03-07 17:17:29.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/mipsread.c 2011-04-29 09:40:46.000000000 +0200
+@@ -402,6 +402,7 @@ static const struct sym_fns ecoff_sym_fn
default_symfile_segments, /* Get segment information from a file. */
NULL,
default_symfile_relocate, /* Relocate a debug section. */
@@ -5937,11 +5937,11 @@ index 74d795d..7e05317 100644
&psym_functions
};
-diff --git a/gdb/objfiles.c b/gdb/objfiles.c
-index f3259dd..4cb3bed 100644
---- a/gdb/objfiles.c
-+++ b/gdb/objfiles.c
-@@ -846,6 +846,11 @@ objfile_relocate1 (struct objfile *objfile,
+Index: gdb-7.2.90.20110429/gdb/objfiles.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/objfiles.c 2011-04-25 23:25:18.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/objfiles.c 2011-04-29 09:40:46.000000000 +0200
+@@ -846,6 +846,11 @@ objfile_relocate1 (struct objfile *objfi
obj_section_addr (s));
}
@@ -5953,10 +5953,10 @@ index f3259dd..4cb3bed 100644
/* Data changed. */
return 1;
}
-diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c
-index d2efa5b..d98b3a4 100644
---- a/gdb/p-valprint.c
-+++ b/gdb/p-valprint.c
+Index: gdb-7.2.90.20110429/gdb/p-valprint.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/p-valprint.c 2011-03-15 17:00:56.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/p-valprint.c 2011-04-29 09:40:46.000000000 +0200
@@ -39,6 +39,7 @@
#include "cp-abi.h"
#include "cp-support.h"
@@ -5965,7 +5965,7 @@ index d2efa5b..d98b3a4 100644
\f
/* See val_print for a description of the various parameters of this
-@@ -63,8 +64,31 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
+@@ -63,8 +64,31 @@ pascal_val_print (struct type *type, con
struct type *char_type;
LONGEST val;
CORE_ADDR addr;
@@ -5998,7 +5998,7 @@ index d2efa5b..d98b3a4 100644
switch (TYPE_CODE (type))
{
case TYPE_CODE_ARRAY:
-@@ -120,8 +144,8 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
+@@ -120,8 +144,8 @@ pascal_val_print (struct type *type, con
{
i = 0;
}
@@ -6009,7 +6009,7 @@ index d2efa5b..d98b3a4 100644
original_value, options, i);
fprintf_filtered (stream, "}");
}
-@@ -160,6 +184,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
+@@ -160,6 +184,7 @@ pascal_val_print (struct type *type, con
/* Try to print what function it points to. */
print_address_demangle (gdbarch, addr, stream, demangle);
/* Return value is irrelevant except for string pointers. */
@@ -6017,7 +6017,7 @@ index d2efa5b..d98b3a4 100644
return (0);
}
-@@ -251,6 +276,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
+@@ -251,6 +276,7 @@ pascal_val_print (struct type *type, con
/* Return number of characters printed, including the terminating
'\0' if we reached the end. val_print_string takes care including
the terminating '\0' if necessary. */
@@ -6025,7 +6025,7 @@ index d2efa5b..d98b3a4 100644
return i;
break;
-@@ -567,6 +593,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
+@@ -567,6 +593,7 @@ pascal_val_print (struct type *type, con
TYPE_CODE (type));
}
gdb_flush (stream);
@@ -6033,11 +6033,11 @@ index d2efa5b..d98b3a4 100644
return (0);
}
\f
-diff --git a/gdb/parse.c b/gdb/parse.c
-index 4815854..81f3f0c 100644
---- a/gdb/parse.c
-+++ b/gdb/parse.c
-@@ -1502,6 +1502,7 @@ parser_fprintf (FILE *x, const char *y, ...)
+Index: gdb-7.2.90.20110429/gdb/parse.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/parse.c 2011-03-28 22:21:03.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/parse.c 2011-04-29 09:40:46.000000000 +0200
+@@ -1502,6 +1502,7 @@ parser_fprintf (FILE *x, const char *y,
int
operator_check_standard (struct expression *exp, int pos,
@@ -6045,7 +6045,7 @@ index 4815854..81f3f0c 100644
int (*objfile_func) (struct objfile *objfile,
void *data),
void *data)
-@@ -1543,7 +1544,7 @@ operator_check_standard (struct expression *exp, int pos,
+@@ -1543,7 +1544,7 @@ operator_check_standard (struct expressi
struct type *type = elts[pos + 2 + arg].type;
struct objfile *objfile = TYPE_OBJFILE (type);
@@ -6054,7 +6054,7 @@ index 4815854..81f3f0c 100644
return 1;
}
}
-@@ -1561,7 +1562,8 @@ operator_check_standard (struct expression *exp, int pos,
+@@ -1561,7 +1562,8 @@ operator_check_standard (struct expressi
/* Check objfile where the variable itself is placed.
SYMBOL_OBJ_SECTION (symbol) may be NULL. */
@@ -6064,7 +6064,7 @@ index 4815854..81f3f0c 100644
return 1;
/* Check objfile where is placed the code touching the variable. */
-@@ -1574,24 +1576,27 @@ operator_check_standard (struct expression *exp, int pos,
+@@ -1574,24 +1576,27 @@ operator_check_standard (struct expressi
/* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL. */
@@ -6111,7 +6111,7 @@ index 4815854..81f3f0c 100644
return 1;
endpos = pos;
-@@ -1637,8 +1644,29 @@ exp_uses_objfile (struct expression *exp, struct objfile *objfile)
+@@ -1637,8 +1644,29 @@ exp_uses_objfile (struct expression *exp
{
gdb_assert (objfile->separate_debug_objfile_backlink == NULL);
@@ -6142,11 +6142,11 @@ index 4815854..81f3f0c 100644
void
_initialize_parse (void)
-diff --git a/gdb/parser-defs.h b/gdb/parser-defs.h
-index 3f743d1..3b942c4 100644
---- a/gdb/parser-defs.h
-+++ b/gdb/parser-defs.h
-@@ -194,6 +194,8 @@ extern void operator_length_standard (const struct expression *, int, int *,
+Index: gdb-7.2.90.20110429/gdb/parser-defs.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/parser-defs.h 2011-01-10 21:38:49.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/parser-defs.h 2011-04-29 09:40:46.000000000 +0200
+@@ -194,6 +194,8 @@ extern void operator_length_standard (co
int *);
extern int operator_check_standard (struct expression *exp, int pos,
@@ -6163,7 +6163,7 @@ index 3f743d1..3b942c4 100644
int (*objfile_func) (struct objfile *objfile,
void *data),
void *data);
-@@ -329,4 +332,10 @@ extern void parser_fprintf (FILE *, const char *, ...) ATTRIBUTE_PRINTF (2, 3);
+@@ -329,4 +332,10 @@ extern void parser_fprintf (FILE *, cons
extern int exp_uses_objfile (struct expression *exp, struct objfile *objfile);
@@ -6174,11 +6174,11 @@ index 3f743d1..3b942c4 100644
+#endif
+
#endif /* PARSER_DEFS_H */
-diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
-index f0c7f61..54cacbb 100644
---- a/gdb/ppc-linux-nat.c
-+++ b/gdb/ppc-linux-nat.c
-@@ -1637,6 +1637,14 @@ booke_remove_point (struct ppc_hw_breakpoint *b, int tid)
+Index: gdb-7.2.90.20110429/gdb/ppc-linux-nat.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/ppc-linux-nat.c 2011-04-18 23:29:18.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/ppc-linux-nat.c 2011-04-29 09:41:06.000000000 +0200
+@@ -1637,6 +1637,14 @@ booke_remove_point (struct ppc_hw_breakp
hw_breaks[i].hw_break = NULL;
}
@@ -6202,7 +6202,7 @@ index f0c7f61..54cacbb 100644
struct ppc_hw_breakpoint p;
if (!have_ptrace_booke_interface ())
-@@ -1681,18 +1687,23 @@ ppc_linux_insert_hw_breakpoint (struct gdbarch *gdbarch,
+@@ -1681,18 +1687,23 @@ ppc_linux_insert_hw_breakpoint (struct g
p.addr2 = 0;
}
@@ -6230,7 +6230,7 @@ index f0c7f61..54cacbb 100644
struct ppc_hw_breakpoint p;
if (!have_ptrace_booke_interface ())
-@@ -1718,8 +1729,7 @@ ppc_linux_remove_hw_breakpoint (struct gdbarch *gdbarch,
+@@ -1718,8 +1729,7 @@ ppc_linux_remove_hw_breakpoint (struct g
p.addr2 = 0;
}
@@ -6240,8 +6240,8 @@ index f0c7f61..54cacbb 100644
return 0;
}
-@@ -1933,6 +1943,15 @@ ppc_linux_can_accel_watchpoint_condition (CORE_ADDR addr, int len, int rw,
- && check_condition (addr, cond, &data_value));
+@@ -1946,6 +1956,15 @@ ppc_linux_can_accel_watchpoint_condition
+ && check_condition (addr, cond, &data_value, &len));
}
+static void
@@ -6256,7 +6256,7 @@ index f0c7f61..54cacbb 100644
/* Set up P with the parameters necessary to request a watchpoint covering
LEN bytes starting at ADDR and if possible with condition expression COND
evaluated by hardware. INSERT tells if we are creating a request for
-@@ -1986,8 +2005,6 @@ static int
+@@ -2000,8 +2019,6 @@ static int
ppc_linux_insert_watchpoint (CORE_ADDR addr, int len, int rw,
struct expression *cond)
{
@@ -6265,7 +6265,7 @@ index f0c7f61..54cacbb 100644
int ret = -1;
if (have_ptrace_booke_interface ())
-@@ -1996,8 +2013,7 @@ ppc_linux_insert_watchpoint (CORE_ADDR addr, int len, int rw,
+@@ -2010,8 +2027,7 @@ ppc_linux_insert_watchpoint (CORE_ADDR a
create_watchpoint_request (&p, addr, len, rw, cond, 1);
@@ -6275,7 +6275,7 @@ index f0c7f61..54cacbb 100644
ret = 0;
}
-@@ -2040,12 +2056,8 @@ ppc_linux_insert_watchpoint (CORE_ADDR addr, int len, int rw,
+@@ -2054,12 +2070,8 @@ ppc_linux_insert_watchpoint (CORE_ADDR a
saved_dabr_value = dabr_value;
@@ -6289,7 +6289,7 @@ index f0c7f61..54cacbb 100644
}
return ret;
-@@ -2055,8 +2067,6 @@ static int
+@@ -2069,8 +2081,6 @@ static int
ppc_linux_remove_watchpoint (CORE_ADDR addr, int len, int rw,
struct expression *cond)
{
@@ -6298,7 +6298,7 @@ index f0c7f61..54cacbb 100644
int ret = -1;
if (have_ptrace_booke_interface ())
-@@ -2065,20 +2075,16 @@ ppc_linux_remove_watchpoint (CORE_ADDR addr, int len, int rw,
+@@ -2079,20 +2089,16 @@ ppc_linux_remove_watchpoint (CORE_ADDR a
create_watchpoint_request (&p, addr, len, rw, cond, 0);
@@ -6321,11 +6321,11 @@ index f0c7f61..54cacbb 100644
}
return ret;
-diff --git a/gdb/printcmd.c b/gdb/printcmd.c
-index f1ebb7e..e97d7f1 100644
---- a/gdb/printcmd.c
-+++ b/gdb/printcmd.c
-@@ -975,6 +975,11 @@ print_command_1 (char *exp, int inspect, int voidprint)
+Index: gdb-7.2.90.20110429/gdb/printcmd.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/printcmd.c 2011-03-22 15:39:40.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/printcmd.c 2011-04-29 09:40:46.000000000 +0200
+@@ -975,6 +975,11 @@ print_command_1 (char *exp, int inspect,
else
val = access_value_history (0);
@@ -6362,7 +6362,7 @@ index f1ebb7e..e97d7f1 100644
\f
/* Add an expression to the auto-display chain.
-@@ -2870,4 +2893,8 @@ Show printing of source filename and line number with <symbol>."), NULL,
+@@ -2870,4 +2893,8 @@ Show printing of source filename and lin
add_com ("eval", no_class, eval_command, _("\
Convert \"printf format string\", arg1, arg2, arg3, ..., argn to\n\
a command line, and call it."));
@@ -6371,11 +6371,10 @@ index f1ebb7e..e97d7f1 100644
+ observer_attach_mark_used (print_types_mark_used);
+#endif
}
-diff --git a/gdb/python/lib/gdb/FrameIterator.py b/gdb/python/lib/gdb/FrameIterator.py
-new file mode 100644
-index 0000000..5654546
---- /dev/null
-+++ b/gdb/python/lib/gdb/FrameIterator.py
+Index: gdb-7.2.90.20110429/gdb/python/lib/gdb/FrameIterator.py
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/python/lib/gdb/FrameIterator.py 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,33 @@
+# Iterator over frames.
+
@@ -6410,11 +6409,10 @@ index 0000000..5654546
+ raise StopIteration
+ self.frame = result.older ()
+ return result
-diff --git a/gdb/python/lib/gdb/FrameWrapper.py b/gdb/python/lib/gdb/FrameWrapper.py
-new file mode 100644
-index 0000000..b790a54
---- /dev/null
-+++ b/gdb/python/lib/gdb/FrameWrapper.py
+Index: gdb-7.2.90.20110429/gdb/python/lib/gdb/FrameWrapper.py
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/python/lib/gdb/FrameWrapper.py 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,112 @@
+# Wrapper API for frames.
+
@@ -6528,11 +6526,10 @@ index 0000000..b790a54
+
+ def __getattr__ (self, name):
+ return getattr (self.frame, name)
-diff --git a/gdb/python/lib/gdb/backtrace.py b/gdb/python/lib/gdb/backtrace.py
-new file mode 100644
-index 0000000..6bb4fb1
---- /dev/null
-+++ b/gdb/python/lib/gdb/backtrace.py
+Index: gdb-7.2.90.20110429/gdb/python/lib/gdb/backtrace.py
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/python/lib/gdb/backtrace.py 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,42 @@
+# Filtering backtrace.
+
@@ -6576,11 +6573,10 @@ index 0000000..6bb4fb1
+ return iter
+ return frame_filter (iter)
+
-diff --git a/gdb/python/lib/gdb/command/alias.py b/gdb/python/lib/gdb/command/alias.py
-new file mode 100644
-index 0000000..96b6618
---- /dev/null
-+++ b/gdb/python/lib/gdb/command/alias.py
+Index: gdb-7.2.90.20110429/gdb/python/lib/gdb/command/alias.py
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/python/lib/gdb/command/alias.py 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,59 @@
+# Alias command.
+
@@ -6641,11 +6637,10 @@ index 0000000..96b6618
+ "This command is an alias for '%s'." % target)
+
+AliasCommand()
-diff --git a/gdb/python/lib/gdb/command/backtrace.py b/gdb/python/lib/gdb/command/backtrace.py
-new file mode 100644
-index 0000000..eeea909
---- /dev/null
-+++ b/gdb/python/lib/gdb/command/backtrace.py
+Index: gdb-7.2.90.20110429/gdb/python/lib/gdb/command/backtrace.py
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/python/lib/gdb/command/backtrace.py 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,106 @@
+# New backtrace command.
+
@@ -6753,11 +6748,10 @@ index 0000000..eeea909
+ pair[1].describe (sys.stdout, full)
+
+FilteringBacktrace()
-diff --git a/gdb/python/lib/gdb/command/ignore_errors.py b/gdb/python/lib/gdb/command/ignore_errors.py
-new file mode 100644
-index 0000000..6fa48ff
---- /dev/null
-+++ b/gdb/python/lib/gdb/command/ignore_errors.py
+Index: gdb-7.2.90.20110429/gdb/python/lib/gdb/command/ignore_errors.py
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/python/lib/gdb/command/ignore_errors.py 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,37 @@
+# Ignore errors in user commands.
+
@@ -6796,11 +6790,10 @@ index 0000000..6fa48ff
+ pass
+
+IgnoreErrorsCommand ()
-diff --git a/gdb/python/lib/gdb/command/pahole.py b/gdb/python/lib/gdb/command/pahole.py
-new file mode 100644
-index 0000000..21a0bf0
---- /dev/null
-+++ b/gdb/python/lib/gdb/command/pahole.py
+Index: gdb-7.2.90.20110429/gdb/python/lib/gdb/command/pahole.py
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/python/lib/gdb/command/pahole.py 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,75 @@
+# pahole command for gdb
+
@@ -6877,11 +6870,10 @@ index 0000000..21a0bf0
+ self.pahole (type, 0, '')
+
+Pahole()
-diff --git a/gdb/python/lib/gdb/command/require.py b/gdb/python/lib/gdb/command/require.py
-new file mode 100644
-index 0000000..1fbc1e8
---- /dev/null
-+++ b/gdb/python/lib/gdb/command/require.py
+Index: gdb-7.2.90.20110429/gdb/python/lib/gdb/command/require.py
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/python/lib/gdb/command/require.py 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,57 @@
+# Demand-loading commands.
+
@@ -6940,11 +6932,10 @@ index 0000000..1fbc1e8
+RequireCommand()
+RequireSubcommand("command")
+RequireSubcommand("function")
-diff --git a/gdb/python/lib/gdb/command/upto.py b/gdb/python/lib/gdb/command/upto.py
-new file mode 100644
-index 0000000..faf54ed
---- /dev/null
-+++ b/gdb/python/lib/gdb/command/upto.py
+Index: gdb-7.2.90.20110429/gdb/python/lib/gdb/command/upto.py
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/python/lib/gdb/command/upto.py 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,129 @@
+# upto command.
+
@@ -7075,18 +7066,16 @@ index 0000000..faf54ed
+UptoSourceCommand ()
+UptoObjectCommand ()
+UptoWhereCommand ()
-diff --git a/gdb/python/lib/gdb/function/__init__.py b/gdb/python/lib/gdb/function/__init__.py
-new file mode 100644
-index 0000000..8b13789
---- /dev/null
-+++ b/gdb/python/lib/gdb/function/__init__.py
+Index: gdb-7.2.90.20110429/gdb/python/lib/gdb/function/__init__.py
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/python/lib/gdb/function/__init__.py 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1 @@
+
-diff --git a/gdb/python/lib/gdb/function/caller_is.py b/gdb/python/lib/gdb/function/caller_is.py
-new file mode 100644
-index 0000000..2b9c5c7
---- /dev/null
-+++ b/gdb/python/lib/gdb/function/caller_is.py
+Index: gdb-7.2.90.20110429/gdb/python/lib/gdb/function/caller_is.py
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/python/lib/gdb/function/caller_is.py 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,58 @@
+# Caller-is functions.
+
@@ -7146,11 +7135,10 @@ index 0000000..2b9c5c7
+
+CallerIs()
+CallerMatches()
-diff --git a/gdb/python/lib/gdb/function/in_scope.py b/gdb/python/lib/gdb/function/in_scope.py
-new file mode 100644
-index 0000000..debb3bb
---- /dev/null
-+++ b/gdb/python/lib/gdb/function/in_scope.py
+Index: gdb-7.2.90.20110429/gdb/python/lib/gdb/function/in_scope.py
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/python/lib/gdb/function/in_scope.py 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,47 @@
+# In-scope function.
+
@@ -7199,10 +7187,10 @@ index 0000000..debb3bb
+ return wanted == found
+
+InScope ()
-diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
-index c010420..3f4a261 100644
---- a/gdb/python/py-type.c
-+++ b/gdb/python/py-type.c
+Index: gdb-7.2.90.20110429/gdb/python/py-type.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/python/py-type.c 2011-01-26 21:53:45.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/python/py-type.c 2011-04-29 09:40:46.000000000 +0200
@@ -29,6 +29,8 @@
#include "language.h"
#include "vec.h"
@@ -7233,7 +7221,7 @@ index c010420..3f4a261 100644
static PyTypeObject type_object_type;
/* A Field object. */
-@@ -919,8 +929,63 @@ typy_richcompare (PyObject *self, PyObject *other, int op)
+@@ -919,8 +929,63 @@ typy_richcompare (PyObject *self, PyObje
\f
@@ -7297,7 +7285,7 @@ index c010420..3f4a261 100644
static void
save_objfile_types (struct objfile *objfile, void *datum)
{
-@@ -938,12 +1003,13 @@ save_objfile_types (struct objfile *objfile, void *datum)
+@@ -938,12 +1003,13 @@ save_objfile_types (struct objfile *objf
{
type_object *next = obj->next;
@@ -7315,7 +7303,7 @@ index c010420..3f4a261 100644
obj = next;
}
-@@ -954,43 +1020,28 @@ save_objfile_types (struct objfile *objfile, void *datum)
+@@ -954,43 +1020,28 @@ save_objfile_types (struct objfile *objf
}
static void
@@ -7327,8 +7315,7 @@ index c010420..3f4a261 100644
- if (type && TYPE_OBJFILE (type))
- {
- struct objfile *objfile = TYPE_OBJFILE (type);
-+ type_object *type_obj = (type_object *) obj;
-
+-
- obj->next = objfile_data (objfile, typy_objfile_data_key);
- if (obj->next)
- obj->next->prev = obj;
@@ -7336,6 +7323,8 @@ index c010420..3f4a261 100644
- }
- else
- obj->next = NULL;
++ type_object *type_obj = (type_object *) obj;
++
+ typy_unlink (type_obj);
+
+ type_obj->ob_type->tp_free (obj);
@@ -7396,10 +7385,10 @@ index c010420..3f4a261 100644
}
\f
-diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c
-index 4381d52..5dff3e2 100644
---- a/gdb/python/py-value.c
-+++ b/gdb/python/py-value.c
+Index: gdb-7.2.90.20110429/gdb/python/py-value.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/python/py-value.c 2011-03-18 17:09:57.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/python/py-value.c 2011-04-29 09:40:46.000000000 +0200
@@ -28,6 +28,7 @@
#include "infcall.h"
#include "expression.h"
@@ -7439,10 +7428,10 @@ index 4381d52..5dff3e2 100644
}
\f
-diff --git a/gdb/python/python.c b/gdb/python/python.c
-index 90d5dc8..ec4823e 100644
---- a/gdb/python/python.c
-+++ b/gdb/python/python.c
+Index: gdb-7.2.90.20110429/gdb/python/python.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/python/python.c 2011-03-18 09:44:47.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/python/python.c 2011-04-29 09:40:46.000000000 +0200
@@ -49,8 +49,11 @@ static int gdbpy_should_print_stack = 1;
#include "linespec.h"
#include "source.h"
@@ -7518,11 +7507,11 @@ index 90d5dc8..ec4823e 100644
{ "parameter", gdbpy_parameter, METH_VARARGS,
"Return a gdb parameter's value" },
-diff --git a/gdb/python/python.h b/gdb/python/python.h
-index ce0eb35..14572f4 100644
---- a/gdb/python/python.h
-+++ b/gdb/python/python.h
-@@ -32,6 +32,8 @@ void eval_python_from_control_command (struct command_line *);
+Index: gdb-7.2.90.20110429/gdb/python/python.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/python/python.h 2011-03-14 17:09:54.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/python/python.h 2011-04-29 09:40:46.000000000 +0200
+@@ -32,6 +32,8 @@ void eval_python_from_control_command (s
void source_python_script (FILE *stream, const char *file);
@@ -7531,11 +7520,11 @@ index ce0eb35..14572f4 100644
int apply_val_pretty_printer (struct type *type, const gdb_byte *valaddr,
int embedded_offset, CORE_ADDR address,
struct ui_file *stream, int recurse,
-diff --git a/gdb/somread.c b/gdb/somread.c
-index 70831a0..baf68ea 100644
---- a/gdb/somread.c
-+++ b/gdb/somread.c
-@@ -439,6 +439,7 @@ static const struct sym_fns som_sym_fns =
+Index: gdb-7.2.90.20110429/gdb/somread.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/somread.c 2011-03-07 17:17:29.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/somread.c 2011-04-29 09:40:46.000000000 +0200
+@@ -439,6 +439,7 @@ static const struct sym_fns som_sym_fns
default_symfile_segments, /* Get segment information from a file. */
NULL,
default_symfile_relocate, /* Relocate a debug section. */
@@ -7543,11 +7532,11 @@ index 70831a0..baf68ea 100644
&psym_functions
};
-diff --git a/gdb/stack.c b/gdb/stack.c
-index 0888b69..c3efd5b 100644
---- a/gdb/stack.c
-+++ b/gdb/stack.c
-@@ -366,6 +366,7 @@ print_frame_args (struct symbol *func, struct frame_info *frame,
+Index: gdb-7.2.90.20110429/gdb/stack.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/stack.c 2011-03-18 19:48:56.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/stack.c 2011-04-29 09:40:46.000000000 +0200
+@@ -366,6 +366,7 @@ print_frame_args (struct symbol *func, s
{
const struct language_defn *language;
struct value_print_options opts;
@@ -7555,7 +7544,7 @@ index 0888b69..c3efd5b 100644
/* Use the appropriate language to display our symbol,
unless the user forced the language to a specific
-@@ -378,7 +379,13 @@ print_frame_args (struct symbol *func, struct frame_info *frame,
+@@ -378,7 +379,13 @@ print_frame_args (struct symbol *func, s
get_raw_print_options (&opts);
opts.deref_ref = 0;
opts.summary = summary;
@@ -7569,11 +7558,10 @@ index 0888b69..c3efd5b 100644
ui_out_field_stream (uiout, "value", stb);
}
else
-diff --git a/gdb/stap-probe.c b/gdb/stap-probe.c
-new file mode 100644
-index 0000000..836d904
---- /dev/null
-+++ b/gdb/stap-probe.c
+Index: gdb-7.2.90.20110429/gdb/stap-probe.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/stap-probe.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,2041 @@
+/* SystemTap probe support for GDB.
+
@@ -9616,11 +9604,10 @@ index 0000000..836d904
+ create_internalvar_type_lazy ("_probe_arg9", &probe_funcs,
+ (void *) (uintptr_t) 9);
+}
-diff --git a/gdb/stap-probe.h b/gdb/stap-probe.h
-new file mode 100644
-index 0000000..391d96f
---- /dev/null
-+++ b/gdb/stap-probe.h
+Index: gdb-7.2.90.20110429/gdb/stap-probe.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/stap-probe.h 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,109 @@
+/* SystemTap probe support for GDB.
+
@@ -9731,10 +9718,10 @@ index 0000000..391d96f
+ int n);
+
+#endif /* !defined (STAP_PROBE_H) */
-diff --git a/gdb/symfile.h b/gdb/symfile.h
-index a0151ea..752c46a 100644
---- a/gdb/symfile.h
-+++ b/gdb/symfile.h
+Index: gdb-7.2.90.20110429/gdb/symfile.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/symfile.h 2011-04-25 23:25:18.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/symfile.h 2011-04-29 09:40:46.000000000 +0200
@@ -31,6 +31,11 @@ struct objfile;
struct obj_section;
struct obstack;
@@ -9747,7 +9734,7 @@ index a0151ea..752c46a 100644
/* Comparison function for symbol look ups. */
-@@ -296,6 +301,52 @@ struct quick_symbol_functions
+@@ -290,6 +295,52 @@ struct quick_symbol_functions
void *data);
};
@@ -9800,7 +9787,7 @@ index a0151ea..752c46a 100644
/* Structure to keep track of symbol reading functions for various
object file types. */
-@@ -366,6 +417,10 @@ struct sym_fns
+@@ -360,6 +411,10 @@ struct sym_fns
bfd_byte *(*sym_relocate) (struct objfile *, asection *sectp, bfd_byte *buf);
@@ -9811,10 +9798,10 @@ index a0151ea..752c46a 100644
/* The "quick" (aka partial) symbol functions for this symbol
reader. */
const struct quick_symbol_functions *qf;
-diff --git a/gdb/symtab.c b/gdb/symtab.c
-index 8aa692d..0bcbbf7 100644
---- a/gdb/symtab.c
-+++ b/gdb/symtab.c
+Index: gdb-7.2.90.20110429/gdb/symtab.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/symtab.c 2011-04-20 22:10:29.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/symtab.c 2011-04-29 09:40:46.000000000 +0200
@@ -770,6 +770,7 @@ init_sal (struct symtab_and_line *sal)
sal->end = 0;
sal->explicit_pc = 0;
@@ -9823,11 +9810,11 @@ index 8aa692d..0bcbbf7 100644
}
\f
-diff --git a/gdb/symtab.h b/gdb/symtab.h
-index abe5e86..6239f7f 100644
---- a/gdb/symtab.h
-+++ b/gdb/symtab.h
-@@ -1109,6 +1109,10 @@ struct symtab_and_line
+Index: gdb-7.2.90.20110429/gdb/symtab.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/symtab.h 2011-04-20 22:10:29.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/symtab.h 2011-04-29 09:40:46.000000000 +0200
+@@ -1112,6 +1112,10 @@ struct symtab_and_line
CORE_ADDR end;
int explicit_pc;
int explicit_line;
@@ -9838,11 +9825,10 @@ index abe5e86..6239f7f 100644
};
extern void init_sal (struct symtab_and_line *sal);
-diff --git a/gdb/testsuite/gdb.arch/x86_64-vla-pointer-foo.S b/gdb/testsuite/gdb.arch/x86_64-vla-pointer-foo.S
-new file mode 100644
-index 0000000..83faaf6
---- /dev/null
-+++ b/gdb/testsuite/gdb.arch/x86_64-vla-pointer-foo.S
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.arch/x86_64-vla-pointer-foo.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.arch/x86_64-vla-pointer-foo.S 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,457 @@
+ .file "x86_64-vla-pointer.c"
+ .section .debug_abbrev,"",@progbits
@@ -10301,11 +10287,10 @@ index 0000000..83faaf6
+ .string "GNU C 4.3.2 20081105 (Red Hat 4.3.2-7)"
+ .ident "GCC: (GNU) 4.3.2 20081105 (Red Hat 4.3.2-7)"
+ .section .note.GNU-stack,"",@progbits
-diff --git a/gdb/testsuite/gdb.arch/x86_64-vla-pointer.c b/gdb/testsuite/gdb.arch/x86_64-vla-pointer.c
-new file mode 100644
-index 0000000..fe2c8f7
---- /dev/null
-+++ b/gdb/testsuite/gdb.arch/x86_64-vla-pointer.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.arch/x86_64-vla-pointer.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.arch/x86_64-vla-pointer.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,43 @@
+/* This testcase is part of GDB, the GNU debugger.
+
@@ -10350,11 +10335,10 @@ index 0000000..fe2c8f7
+}
+
+#endif
-diff --git a/gdb/testsuite/gdb.arch/x86_64-vla-pointer.exp b/gdb/testsuite/gdb.arch/x86_64-vla-pointer.exp
-new file mode 100644
-index 0000000..d243cf1
---- /dev/null
-+++ b/gdb/testsuite/gdb.arch/x86_64-vla-pointer.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.arch/x86_64-vla-pointer.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.arch/x86_64-vla-pointer.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,66 @@
+# Copyright 2009 Free Software Foundation, Inc.
+
@@ -10422,11 +10406,10 @@ index 0000000..d243cf1
+
+gdb_test "whatis *array" "type = char \\\[78\\\]" "second: whatis *array"
+gdb_test "ptype *array" "type = char \\\[78\\\]" "second: ptype *array"
-diff --git a/gdb/testsuite/gdb.arch/x86_64-vla-typedef-foo.S b/gdb/testsuite/gdb.arch/x86_64-vla-typedef-foo.S
-new file mode 100644
-index 0000000..66f7a39
---- /dev/null
-+++ b/gdb/testsuite/gdb.arch/x86_64-vla-typedef-foo.S
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.arch/x86_64-vla-typedef-foo.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.arch/x86_64-vla-typedef-foo.S 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,455 @@
+ .file "x86_64-vla-typedef.c"
+ .section .debug_abbrev,"",@progbits
@@ -10883,11 +10866,10 @@ index 0000000..66f7a39
+ .string "GNU C 4.3.2 20081105 (Red Hat 4.3.2-7)"
+ .ident "GCC: (GNU) 4.3.2 20081105 (Red Hat 4.3.2-7)"
+ .section .note.GNU-stack,"",@progbits
-diff --git a/gdb/testsuite/gdb.arch/x86_64-vla-typedef.c b/gdb/testsuite/gdb.arch/x86_64-vla-typedef.c
-new file mode 100644
-index 0000000..b809c4e
---- /dev/null
-+++ b/gdb/testsuite/gdb.arch/x86_64-vla-typedef.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.arch/x86_64-vla-typedef.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.arch/x86_64-vla-typedef.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,43 @@
+/* This testcase is part of GDB, the GNU debugger.
+
@@ -10932,11 +10914,10 @@ index 0000000..b809c4e
+}
+
+#endif
-diff --git a/gdb/testsuite/gdb.arch/x86_64-vla-typedef.exp b/gdb/testsuite/gdb.arch/x86_64-vla-typedef.exp
-new file mode 100644
-index 0000000..b05411e
---- /dev/null
-+++ b/gdb/testsuite/gdb.arch/x86_64-vla-typedef.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.arch/x86_64-vla-typedef.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.arch/x86_64-vla-typedef.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,64 @@
+# Copyright 2009 Free Software Foundation, Inc.
+
@@ -11002,10 +10983,10 @@ index 0000000..b05411e
+gdb_test "whatis array" "type = array_t" "second: whatis array"
+
+gdb_test "ptype array" "type = char \\\[78\\\]" "second: ptype array"
-diff --git a/gdb/testsuite/gdb.base/arrayidx.c b/gdb/testsuite/gdb.base/arrayidx.c
-index 6c158bf..739ce34 100644
---- a/gdb/testsuite/gdb.base/arrayidx.c
-+++ b/gdb/testsuite/gdb.base/arrayidx.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.base/arrayidx.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/testsuite/gdb.base/arrayidx.c 2011-01-01 16:33:40.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.base/arrayidx.c 2011-04-29 09:40:46.000000000 +0200
@@ -17,6 +17,13 @@
int array[] = {1, 2, 3, 4};
@@ -11020,10 +11001,10 @@ index 6c158bf..739ce34 100644
int
main (void)
{
-diff --git a/gdb/testsuite/gdb.base/arrayidx.exp b/gdb/testsuite/gdb.base/arrayidx.exp
-index d8ee5c0..de4ba75 100644
---- a/gdb/testsuite/gdb.base/arrayidx.exp
-+++ b/gdb/testsuite/gdb.base/arrayidx.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.base/arrayidx.exp
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/testsuite/gdb.base/arrayidx.exp 2011-01-01 16:33:40.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.base/arrayidx.exp 2011-04-29 09:40:46.000000000 +0200
@@ -57,4 +57,12 @@ gdb_test "print array" \
"\\{\\\[0\\\] = 1, \\\[1\\\] = 2, \\\[2\\\] = 3, \\\[3\\\] = 4\\}" \
"Print array with array-indexes on"
@@ -11038,11 +11019,11 @@ index d8ee5c0..de4ba75 100644
+ unsupported "$test (no GCC)"
+ }
+}
-diff --git a/gdb/testsuite/gdb.base/default.exp b/gdb/testsuite/gdb.base/default.exp
-index d58c519..abb1b05 100644
---- a/gdb/testsuite/gdb.base/default.exp
-+++ b/gdb/testsuite/gdb.base/default.exp
-@@ -607,6 +607,17 @@ gdb_test_list_exact "show convenience" "show convenience" \
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.base/default.exp
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/testsuite/gdb.base/default.exp 2011-02-15 22:17:52.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.base/default.exp 2011-04-29 09:40:46.000000000 +0200
+@@ -607,6 +607,17 @@ gdb_test_list_exact "show convenience" "
{$_sdata = void} \
{$_siginfo = void} \
{$_thread = 0} \
@@ -11060,11 +11041,10 @@ index d58c519..abb1b05 100644
}
#test show directories
-diff --git a/gdb/testsuite/gdb.base/internal-var-field-address.c b/gdb/testsuite/gdb.base/internal-var-field-address.c
-new file mode 100644
-index 0000000..eeb7b85
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/internal-var-field-address.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.base/internal-var-field-address.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.base/internal-var-field-address.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,20 @@
+/* This testcase is part of GDB, the GNU debugger.
+
@@ -11086,11 +11066,10 @@ index 0000000..eeb7b85
+struct {
+ int field;
+} staticstruct = { 1 };
-diff --git a/gdb/testsuite/gdb.base/internal-var-field-address.exp b/gdb/testsuite/gdb.base/internal-var-field-address.exp
-new file mode 100644
-index 0000000..6d82e73
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/internal-var-field-address.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.base/internal-var-field-address.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.base/internal-var-field-address.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,26 @@
+# Copyright 2009 Free Software Foundation, Inc.
+
@@ -11118,11 +11097,10 @@ index 0000000..6d82e73
+
+gdb_test {set $varstruct = staticstruct}
+gdb_test {p $varstruct.field} " = 1"
-diff --git a/gdb/testsuite/gdb.base/stap-probe.c b/gdb/testsuite/gdb.base/stap-probe.c
-new file mode 100644
-index 0000000..47e4b39
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/stap-probe.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.base/stap-probe.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.base/stap-probe.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,69 @@
+/* This testcase is part of GDB, the GNU debugger.
+
@@ -11193,11 +11171,10 @@ index 0000000..47e4b39
+ m1();
+ m2();
+}
-diff --git a/gdb/testsuite/gdb.base/stap-probe.exp b/gdb/testsuite/gdb.base/stap-probe.exp
-new file mode 100644
-index 0000000..3fb7377
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/stap-probe.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.base/stap-probe.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.base/stap-probe.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,72 @@
+# Copyright (C) 2011 Free Software Foundation, Inc.
+
@@ -11271,11 +11248,10 @@ index 0000000..3fb7377
+ return -1
+}
+stap_test "-DUSE_PROBES"
-diff --git a/gdb/testsuite/gdb.base/vla-overflow.c b/gdb/testsuite/gdb.base/vla-overflow.c
-new file mode 100644
-index 0000000..c5d5ee0
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/vla-overflow.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.base/vla-overflow.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.base/vla-overflow.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,30 @@
+/* This testcase is part of GDB, the GNU debugger.
+
@@ -11307,11 +11283,10 @@ index 0000000..c5d5ee0
+
+ return 0;
+}
-diff --git a/gdb/testsuite/gdb.base/vla-overflow.exp b/gdb/testsuite/gdb.base/vla-overflow.exp
-new file mode 100644
-index 0000000..24a608f
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/vla-overflow.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.base/vla-overflow.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.base/vla-overflow.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,109 @@
+# Copyright 2008 Free Software Foundation, Inc.
+
@@ -11422,11 +11397,10 @@ index 0000000..24a608f
+gdb_test "bt" "in \[^ \]*abort \\(.* in main \\(.*" "Backtrace after abort()"
+
+verbose -log "kb_found in bt after abort() = [expr [memory_v_pages_get] * $pagesize / 1024]"
-diff --git a/gdb/testsuite/gdb.base/vla.c b/gdb/testsuite/gdb.base/vla.c
-new file mode 100644
-index 0000000..e1f3ed1
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/vla.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.base/vla.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.base/vla.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,55 @@
+/* This testcase is part of GDB, the GNU debugger.
+
@@ -11483,11 +11457,10 @@ index 0000000..e1f3ed1
+ foo (78);
+ return 0;
+}
-diff --git a/gdb/testsuite/gdb.base/vla.exp b/gdb/testsuite/gdb.base/vla.exp
-new file mode 100644
-index 0000000..5da7378
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/vla.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.base/vla.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.base/vla.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,62 @@
+# Copyright 2008 Free Software Foundation, Inc.
+
@@ -11551,11 +11524,11 @@ index 0000000..5da7378
+gdb_test "p temp1" " = '1' <repeats 78 times>" "second: print temp1"
+gdb_test "p temp2" " = '2' <repeats 78 times>" "second: print temp2"
+gdb_test "p temp3" " = '3' <repeats 48 times>" "second: print temp3"
-diff --git a/gdb/testsuite/gdb.cp/nextoverthrow.exp b/gdb/testsuite/gdb.cp/nextoverthrow.exp
-index 89c02d6..a970bb9 100644
---- a/gdb/testsuite/gdb.cp/nextoverthrow.exp
-+++ b/gdb/testsuite/gdb.cp/nextoverthrow.exp
-@@ -53,6 +53,17 @@ gdb_test_multiple "print _Unwind_DebugHook" "check for unwinder hook" {
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.cp/nextoverthrow.exp
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/testsuite/gdb.cp/nextoverthrow.exp 2011-01-01 16:33:44.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.cp/nextoverthrow.exp 2011-04-29 09:40:46.000000000 +0200
+@@ -53,6 +53,17 @@ gdb_test_multiple "print _Unwind_DebugHo
}
}
if {!$ok} {
@@ -11573,11 +11546,10 @@ index 89c02d6..a970bb9 100644
unsupported "nextoverthrow.exp could not find _Unwind_DebugHook"
return -1
}
-diff --git a/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.S b/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.S
-new file mode 100644
-index 0000000..aac3baa
---- /dev/null
-+++ b/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.S
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.S 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,246 @@
+/* This testcase is part of GDB, the GNU debugger.
+
@@ -11825,11 +11797,10 @@ index 0000000..aac3baa
+ .string "char"
+.Luint_str:
+ .string "unsigned int"
-diff --git a/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.exp b/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.exp
-new file mode 100644
-index 0000000..815ed93
---- /dev/null
-+++ b/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-bound-loclist.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,54 @@
+# Copyright 2010 Free Software Foundation, Inc.
+
@@ -11885,11 +11856,10 @@ index 0000000..815ed93
+
+# The register contains unpredictable value - the array size.
+gdb_test "ptype reg_string" {type = char \[-?[0-9]+\]}
-diff --git a/gdb/testsuite/gdb.dwarf2/dw2-stripped.c b/gdb/testsuite/gdb.dwarf2/dw2-stripped.c
-new file mode 100644
-index 0000000..1f02d90
---- /dev/null
-+++ b/gdb/testsuite/gdb.dwarf2/dw2-stripped.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-stripped.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-stripped.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,42 @@
+/* This testcase is part of GDB, the GNU debugger.
+
@@ -11933,11 +11903,10 @@ index 0000000..1f02d90
+ func1 (1, 2);
+ return 0;
+}
-diff --git a/gdb/testsuite/gdb.dwarf2/dw2-stripped.exp b/gdb/testsuite/gdb.dwarf2/dw2-stripped.exp
-new file mode 100644
-index 0000000..1c6e84a
---- /dev/null
-+++ b/gdb/testsuite/gdb.dwarf2/dw2-stripped.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-stripped.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-stripped.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,79 @@
+# Copyright 2006 Free Software Foundation, Inc.
+
@@ -12018,11 +11987,10 @@ index 0000000..1c6e84a
+gdb_test "step" \
+ "func.* \\(.*\\) at .*" \
+ "step"
-diff --git a/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.S b/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.S
-new file mode 100644
-index 0000000..5fcdd84
---- /dev/null
-+++ b/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.S
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.S 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,83 @@
+/* This testcase is part of GDB, the GNU debugger.
+
@@ -12107,11 +12075,10 @@ index 0000000..5fcdd84
+
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
-diff --git a/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.exp b/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.exp
-new file mode 100644
-index 0000000..c41151c
---- /dev/null
-+++ b/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-struct-member-data-location.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,37 @@
+# Copyright 2009 Free Software Foundation, Inc.
+
@@ -12150,11 +12117,10 @@ index 0000000..c41151c
+clean_restart $binfile
+
+gdb_test "ptype struct some_struct" "type = struct some_struct {\[\r\n \t\]*void field;\[\r\n \t\]*}"
-diff --git a/gdb/testsuite/gdb.fortran/dwarf-stride.exp b/gdb/testsuite/gdb.fortran/dwarf-stride.exp
-new file mode 100644
-index 0000000..cd3486b
---- /dev/null
-+++ b/gdb/testsuite/gdb.fortran/dwarf-stride.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/dwarf-stride.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/dwarf-stride.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,42 @@
+# Copyright 2009 Free Software Foundation, Inc.
+
@@ -12198,11 +12164,10 @@ index 0000000..cd3486b
+gdb_continue_to_breakpoint "break-here" ".*break-here.*"
+gdb_test "p c40pt(1)" " = '0-hello.*"
+gdb_test "p c40pt(2)" " = '1-hello.*"
-diff --git a/gdb/testsuite/gdb.fortran/dwarf-stride.f90 b/gdb/testsuite/gdb.fortran/dwarf-stride.f90
-new file mode 100644
-index 0000000..e492b3a
---- /dev/null
-+++ b/gdb/testsuite/gdb.fortran/dwarf-stride.f90
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/dwarf-stride.f90
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/dwarf-stride.f90 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,40 @@
+! Copyright 2009 Free Software Foundation, Inc.
+!
@@ -12244,11 +12209,10 @@ index 0000000..e492b3a
+ print *, c40pt ! break-here
+
+end program repro
-diff --git a/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90 b/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90
-new file mode 100644
-index 0000000..261ce17
---- /dev/null
-+++ b/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/dynamic-other-frame-stub.f90 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,24 @@
+! Copyright 2010 Free Software Foundation, Inc.
+!
@@ -12274,11 +12238,10 @@ index 0000000..261ce17
+ real :: dummy
+ dummy = 1
+end subroutine bar
-diff --git a/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp b/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp
-new file mode 100644
-index 0000000..4fdd5ee
---- /dev/null
-+++ b/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/dynamic-other-frame.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,37 @@
+# Copyright 2010 Free Software Foundation, Inc.
+
@@ -12317,11 +12280,10 @@ index 0000000..4fdd5ee
+}
+
+gdb_test "bt" {foo \(string='hello'.*}
-diff --git a/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90 b/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90
-new file mode 100644
-index 0000000..2bc637d
---- /dev/null
-+++ b/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/dynamic-other-frame.f90 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,36 @@
+! Copyright 2010 Free Software Foundation, Inc.
+!
@@ -12359,11 +12321,10 @@ index 0000000..2bc637d
+ end interface
+ call foo ('hello')
+end
-diff --git a/gdb/testsuite/gdb.fortran/dynamic.exp b/gdb/testsuite/gdb.fortran/dynamic.exp
-new file mode 100644
-index 0000000..0ccebe0
---- /dev/null
-+++ b/gdb/testsuite/gdb.fortran/dynamic.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/dynamic.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/dynamic.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,145 @@
+# Copyright 2007 Free Software Foundation, Inc.
+
@@ -12510,11 +12471,10 @@ index 0000000..0ccebe0
+gdb_test "p vart(3,8)" "\\$\[0-9\]* = 9"
+# maps to foo::vary(1,3)
+gdb_test "p vart(2,9)" "\\$\[0-9\]* = 10"
-diff --git a/gdb/testsuite/gdb.fortran/dynamic.f90 b/gdb/testsuite/gdb.fortran/dynamic.f90
-new file mode 100644
-index 0000000..0f43564
---- /dev/null
-+++ b/gdb/testsuite/gdb.fortran/dynamic.f90
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/dynamic.f90
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/dynamic.f90 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,98 @@
+! Copyright 2007 Free Software Foundation, Inc.
+!
@@ -12614,11 +12574,10 @@ index 0000000..0f43564
+ if (x (1, 1) .ne. 8 .or. x (2, 2) .ne. 9 .or. x (1, 2) .ne. 4) call abort
+ if (x (3, 1) .ne. 10) call abort
+end
-diff --git a/gdb/testsuite/gdb.fortran/string.exp b/gdb/testsuite/gdb.fortran/string.exp
-new file mode 100644
-index 0000000..b1120c3
---- /dev/null
-+++ b/gdb/testsuite/gdb.fortran/string.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/string.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/string.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,59 @@
+# Copyright 2008 Free Software Foundation, Inc.
+
@@ -12679,11 +12638,10 @@ index 0000000..b1120c3
+gdb_continue_to_breakpoint "var-finish"
+gdb_test "p e" "\\$\[0-9\]* = 'e '" "p e re-set"
+gdb_test "p f" "\\$\[0-9\]* = \\(\\( 'f ', 'f ', 'f ', 'f ', 'f ', 'f ', 'f '\\) \\( 'f2 ', 'f ', 'f ', 'f ', 'f ', 'f ', 'f '\\) \\( 'f ', 'f ', 'f ', 'f ', 'f ', 'f ', 'f '\\) \\)" "p *f re-set"
-diff --git a/gdb/testsuite/gdb.fortran/string.f90 b/gdb/testsuite/gdb.fortran/string.f90
-new file mode 100644
-index 0000000..226dc5d
---- /dev/null
-+++ b/gdb/testsuite/gdb.fortran/string.f90
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/string.f90
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/string.f90 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,37 @@
+! Copyright 2008 Free Software Foundation, Inc.
+!
@@ -12722,11 +12680,10 @@ index 0000000..226dc5d
+ h = 'h'
+ call foo (g, h)
+end
-diff --git a/gdb/testsuite/gdb.fortran/subrange.exp b/gdb/testsuite/gdb.fortran/subrange.exp
-new file mode 100644
-index 0000000..be372c1
---- /dev/null
-+++ b/gdb/testsuite/gdb.fortran/subrange.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/subrange.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/subrange.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,60 @@
+# Copyright 2011 Free Software Foundation, Inc.
+
@@ -12788,11 +12745,10 @@ index 0000000..be372c1
+delete_breakpoints
+gdb_unload
+gdb_test {p $a (3, 2:2)} { = \(23\)}
-diff --git a/gdb/testsuite/gdb.fortran/subrange.f90 b/gdb/testsuite/gdb.fortran/subrange.f90
-new file mode 100644
-index 0000000..4747ea9
---- /dev/null
-+++ b/gdb/testsuite/gdb.fortran/subrange.f90
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/subrange.f90
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/subrange.f90 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,28 @@
+! Copyright 2011 Free Software Foundation, Inc.
+!
@@ -12822,10 +12778,10 @@ index 0000000..4747ea9
+ ptr => a
+ write (*,*) a ! break-static
+end
-diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp
-index 30a71dd..4bb8e7d 100644
---- a/gdb/testsuite/gdb.gdb/selftest.exp
-+++ b/gdb/testsuite/gdb.gdb/selftest.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.gdb/selftest.exp
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/testsuite/gdb.gdb/selftest.exp 2011-04-29 09:40:43.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.gdb/selftest.exp 2011-04-29 09:40:46.000000000 +0200
@@ -92,6 +92,10 @@ proc do_steps_and_nexts {} {
set description "step over ttyarg initialization"
set command "step"
@@ -12837,11 +12793,10 @@ index 30a71dd..4bb8e7d 100644
-re ".*pre_stat_chain = make_command_stats_cleanup.*$gdb_prompt $" {
set description "next over make_command_stats_cleanup and everything it calls"
set command "next"
-diff --git a/gdb/testsuite/gdb.mi/mi2-var-stale-type.c b/gdb/testsuite/gdb.mi/mi2-var-stale-type.c
-new file mode 100644
-index 0000000..ebced3c
---- /dev/null
-+++ b/gdb/testsuite/gdb.mi/mi2-var-stale-type.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.mi/mi2-var-stale-type.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.mi/mi2-var-stale-type.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,26 @@
+/* Copyright 2011 Free Software Foundation, Inc.
+
@@ -12869,11 +12824,10 @@ index 0000000..ebced3c
+
+ return 0;
+}
-diff --git a/gdb/testsuite/gdb.mi/mi2-var-stale-type.exp b/gdb/testsuite/gdb.mi/mi2-var-stale-type.exp
-new file mode 100644
-index 0000000..74a104e
---- /dev/null
-+++ b/gdb/testsuite/gdb.mi/mi2-var-stale-type.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.mi/mi2-var-stale-type.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.mi/mi2-var-stale-type.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,57 @@
+# Copyright 2011 Free Software Foundation, Inc.
+#
@@ -12932,11 +12886,10 @@ index 0000000..74a104e
+mi_create_varobj "vla" "vla" "create local variable vla"
+
+mi_gdb_test "-var-update *" "\\^done,changelist=.*" "-var-update *"
-diff --git a/gdb/testsuite/gdb.multi/watchpoint-multi.c b/gdb/testsuite/gdb.multi/watchpoint-multi.c
-new file mode 100644
-index 0000000..153c18b
---- /dev/null
-+++ b/gdb/testsuite/gdb.multi/watchpoint-multi.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.multi/watchpoint-multi.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.multi/watchpoint-multi.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,59 @@
+/* This testcase is part of GDB, the GNU debugger.
+
@@ -12997,11 +12950,10 @@ index 0000000..153c18b
+ marker_exit2 ();
+ return 0;
+}
-diff --git a/gdb/testsuite/gdb.multi/watchpoint-multi.exp b/gdb/testsuite/gdb.multi/watchpoint-multi.exp
-new file mode 100644
-index 0000000..97fa6cd
---- /dev/null
-+++ b/gdb/testsuite/gdb.multi/watchpoint-multi.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.multi/watchpoint-multi.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.multi/watchpoint-multi.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,113 @@
+# Copyright 2010 Free Software Foundation, Inc.
+
@@ -13116,11 +13068,10 @@ index 0000000..97fa6cd
+ }
+}
+
-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
---- /dev/null
-+++ b/gdb/testsuite/gdb.opt/array-from-register-func.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.opt/array-from-register-func.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.opt/array-from-register-func.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,22 @@
+/* This file is part of GDB, the GNU debugger.
+
@@ -13144,11 +13095,10 @@ index 0000000..729f457
+{
+ return arr[0];
+}
-diff --git a/gdb/testsuite/gdb.opt/array-from-register.c b/gdb/testsuite/gdb.opt/array-from-register.c
-new file mode 100644
-index 0000000..3090e7e
---- /dev/null
-+++ b/gdb/testsuite/gdb.opt/array-from-register.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.opt/array-from-register.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.opt/array-from-register.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,28 @@
+/* This file is part of GDB, the GNU debugger.
+
@@ -13178,11 +13128,10 @@ index 0000000..3090e7e
+
+ return 0;
+}
-diff --git a/gdb/testsuite/gdb.opt/array-from-register.exp b/gdb/testsuite/gdb.opt/array-from-register.exp
-new file mode 100644
-index 0000000..f2de718
---- /dev/null
-+++ b/gdb/testsuite/gdb.opt/array-from-register.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.opt/array-from-register.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.opt/array-from-register.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,33 @@
+# Copyright 2009 Free Software Foundation, Inc.
+#
@@ -13217,11 +13166,10 @@ index 0000000..f2de718
+# Seen regression:
+# Address requested for identifier "arr" which is in register $rdi
+gdb_test "p arr\[0\]" "\\$\[0-9\]+ = 42"
-diff --git a/gdb/testsuite/gdb.pascal/arrays.exp b/gdb/testsuite/gdb.pascal/arrays.exp
-new file mode 100644
-index 0000000..ccc6e1e
---- /dev/null
-+++ b/gdb/testsuite/gdb.pascal/arrays.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.pascal/arrays.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.pascal/arrays.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,104 @@
+# Copyright 2008, 2009 Free Software Foundation, Inc.
+#
@@ -13327,11 +13275,10 @@ index 0000000..ccc6e1e
+}
+gdb_test "print DynArrChar" ".* = 'abcdefghijklm'" "Print dynamic array of char"
+
-diff --git a/gdb/testsuite/gdb.pascal/arrays.pas b/gdb/testsuite/gdb.pascal/arrays.pas
-new file mode 100644
-index 0000000..295602d
---- /dev/null
-+++ b/gdb/testsuite/gdb.pascal/arrays.pas
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.pascal/arrays.pas
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.pascal/arrays.pas 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,82 @@
+{
+ Copyright 2008, 2009 Free Software Foundation, Inc.
@@ -13415,11 +13362,11 @@ index 0000000..295602d
+ s := 'test'#0'string';
+ writeln(s); { set breakpoint 2 here }
+end.
-diff --git a/gdb/testsuite/gdb.python/py-frame.exp b/gdb/testsuite/gdb.python/py-frame.exp
-index 1cb573e..3605ee5 100644
---- a/gdb/testsuite/gdb.python/py-frame.exp
-+++ b/gdb/testsuite/gdb.python/py-frame.exp
-@@ -78,8 +78,6 @@ gdb_test "python print bframe == gdb.newest_frame()" True \
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.python/py-frame.exp
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/testsuite/gdb.python/py-frame.exp 2011-02-26 15:06:28.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.python/py-frame.exp 2011-04-29 09:40:46.000000000 +0200
+@@ -78,8 +78,6 @@ gdb_test "python print bframe == gdb.new
gdb_test "python print 'result =', f0 == f1" " = False" "test equality comparison (false)"
gdb_test "python print 'result =', f0 == f0" " = True" "test equality comparison (true)"
@@ -13428,16 +13375,16 @@ index 1cb573e..3605ee5 100644
gdb_test "python print 'result =', f0.is_valid ()" " = True" "test Frame.is_valid"
gdb_test "python print 'result =', f0.name ()" " = f2" "test Frame.name"
gdb_test "python print 'result =', f0.type () == gdb.NORMAL_FRAME" " = True" "test Frame.type"
-@@ -94,3 +92,5 @@ gdb_test "python print 'result =', f0.read_var ('variable_which_surely_doesnt_ex
+@@ -94,3 +92,5 @@ gdb_test "python print 'result =', f0.re
gdb_test "python print 'result =', f0.read_var ('a')" " = 1" "test Frame.read_var - success"
gdb_test "python print 'result =', gdb.selected_frame () == f1" " = True" "test gdb.selected_frame"
+
+gdb_test "python print 'result =', f0.block ()" "<gdb.Block object at 0x\[\[:xdigit:\]\]+>" "test Frame.block"
-diff --git a/gdb/testsuite/gdb.python/py-value.exp b/gdb/testsuite/gdb.python/py-value.exp
-index e012d53..1bd9e53 100644
---- a/gdb/testsuite/gdb.python/py-value.exp
-+++ b/gdb/testsuite/gdb.python/py-value.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.python/py-value.exp
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/testsuite/gdb.python/py-value.exp 2011-01-01 16:33:49.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.python/py-value.exp 2011-04-29 09:40:46.000000000 +0200
@@ -318,6 +318,15 @@ proc test_value_after_death {} {
"print value's type"
}
@@ -13462,11 +13409,10 @@ index e012d53..1bd9e53 100644
# The following test recompiles the binary to test either C or C++
# values.
-diff --git a/gdb/testsuite/gdb.threads/watchpoint-fork-child.c b/gdb/testsuite/gdb.threads/watchpoint-fork-child.c
-new file mode 100644
-index 0000000..a2ad29a
---- /dev/null
-+++ b/gdb/testsuite/gdb.threads/watchpoint-fork-child.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.threads/watchpoint-fork-child.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.threads/watchpoint-fork-child.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,127 @@
+/* Test case for forgotten hw-watchpoints after fork()-off of a process.
+
@@ -13595,11 +13541,10 @@ index 0000000..a2ad29a
+ i = sigaction (SIGUSR1, &oldact, NULL);
+ assert (i == 0);
+}
-diff --git a/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c b/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c
-new file mode 100644
-index 0000000..08a5aff
---- /dev/null
-+++ b/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,174 @@
+/* Test case for forgotten hw-watchpoints after fork()-off of a process.
+
@@ -13775,11 +13720,10 @@ index 0000000..08a5aff
+ mark_exit ();
+ return 0;
+}
-diff --git a/gdb/testsuite/gdb.threads/watchpoint-fork-parent.c b/gdb/testsuite/gdb.threads/watchpoint-fork-parent.c
-new file mode 100644
-index 0000000..82d1182
---- /dev/null
-+++ b/gdb/testsuite/gdb.threads/watchpoint-fork-parent.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.threads/watchpoint-fork-parent.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.threads/watchpoint-fork-parent.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,74 @@
+/* Test case for forgotten hw-watchpoints after fork()-off of a process.
+
@@ -13855,11 +13799,10 @@ index 0000000..82d1182
+ marker ();
+ }
+}
-diff --git a/gdb/testsuite/gdb.threads/watchpoint-fork-st.c b/gdb/testsuite/gdb.threads/watchpoint-fork-st.c
-new file mode 100644
-index 0000000..a7eeedd
---- /dev/null
-+++ b/gdb/testsuite/gdb.threads/watchpoint-fork-st.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.threads/watchpoint-fork-st.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.threads/watchpoint-fork-st.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,61 @@
+/* Test case for forgotten hw-watchpoints after fork()-off of a process.
+
@@ -13922,11 +13865,10 @@ index 0000000..a7eeedd
+ mark_exit ();
+ return 0;
+}
-diff --git a/gdb/testsuite/gdb.threads/watchpoint-fork.exp b/gdb/testsuite/gdb.threads/watchpoint-fork.exp
-new file mode 100644
-index 0000000..117700b
---- /dev/null
-+++ b/gdb/testsuite/gdb.threads/watchpoint-fork.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.threads/watchpoint-fork.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.threads/watchpoint-fork.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,149 @@
+# Copyright 2008, 2009, 2010 Free Software Foundation, Inc.
+
@@ -14077,11 +14019,10 @@ index 0000000..117700b
+} else {
+ untested "child"
+}
-diff --git a/gdb/testsuite/gdb.threads/watchpoint-fork.h b/gdb/testsuite/gdb.threads/watchpoint-fork.h
-new file mode 100644
-index 0000000..31f7656
---- /dev/null
-+++ b/gdb/testsuite/gdb.threads/watchpoint-fork.h
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.threads/watchpoint-fork.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.threads/watchpoint-fork.h 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,32 @@
+/* Test case for forgotten hw-watchpoints after fork()-off of a process.
+
@@ -14115,11 +14056,10 @@ index 0000000..31f7656
+
+extern void marker (void);
+extern void forkoff (int nr);
-diff --git a/gdb/testsuite/gdb.trace/stap-trace.c b/gdb/testsuite/gdb.trace/stap-trace.c
-new file mode 100644
-index 0000000..27f317e
---- /dev/null
-+++ b/gdb/testsuite/gdb.trace/stap-trace.c
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.trace/stap-trace.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.trace/stap-trace.c 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,71 @@
+/* This testcase is part of GDB, the GNU debugger.
+
@@ -14192,11 +14132,10 @@ index 0000000..27f317e
+
+ return 0;
+}
-diff --git a/gdb/testsuite/gdb.trace/stap-trace.exp b/gdb/testsuite/gdb.trace/stap-trace.exp
-new file mode 100644
-index 0000000..189355f
---- /dev/null
-+++ b/gdb/testsuite/gdb.trace/stap-trace.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.trace/stap-trace.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.trace/stap-trace.exp 2011-04-29 09:40:46.000000000 +0200
@@ -0,0 +1,129 @@
+# Copyright 2011
+# Free Software Foundation, Inc.
@@ -14327,10 +14266,10 @@ index 0000000..189355f
+
+# Finished!
+gdb_test "tfind none" ".*" ""
-diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
-index a512527..654e3c9 100644
---- a/gdb/testsuite/lib/gdb.exp
-+++ b/gdb/testsuite/lib/gdb.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/lib/gdb.exp
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/testsuite/lib/gdb.exp 2011-03-25 14:08:11.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/testsuite/lib/gdb.exp 2011-04-29 09:40:46.000000000 +0200
@@ -141,6 +141,11 @@ proc gdb_unload {} {
send_gdb "y\n"
exp_continue
@@ -14343,10 +14282,10 @@ index a512527..654e3c9 100644
-re "Discard symbol table from .*y or n.*$" {
send_gdb "y\n"
exp_continue
-diff --git a/gdb/testsuite/lib/pascal.exp b/gdb/testsuite/lib/pascal.exp
-index 891da37..236c5ca 100644
---- a/gdb/testsuite/lib/pascal.exp
-+++ b/gdb/testsuite/lib/pascal.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/lib/pascal.exp
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/testsuite/lib/pascal.exp 2011-01-01 16:33:52.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/testsuite/lib/pascal.exp 2011-04-29 09:40:46.000000000 +0200
@@ -37,6 +37,9 @@ proc pascal_init {} {
global pascal_compiler_is_fpc
global gpc_compiler
@@ -14378,10 +14317,10 @@ index 891da37..236c5ca 100644
}
set pascal_init_done 1
}
-diff --git a/gdb/thread.c b/gdb/thread.c
-index 6ad1807..aef9dce 100644
---- a/gdb/thread.c
-+++ b/gdb/thread.c
+Index: gdb-7.2.90.20110429/gdb/thread.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/thread.c 2011-04-19 17:24:49.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/thread.c 2011-04-29 09:40:46.000000000 +0200
@@ -1438,7 +1438,8 @@ update_thread_list (void)
no thread is selected, or no threads exist. */
@@ -14392,7 +14331,7 @@ index 6ad1807..aef9dce 100644
{
struct thread_info *tp = find_thread_ptid (inferior_ptid);
-@@ -1449,6 +1450,15 @@ thread_id_make_value (struct gdbarch *gdbarch, struct internalvar *var)
+@@ -1449,6 +1450,15 @@ thread_id_make_value (struct gdbarch *gd
/* Commands with a prefix of `thread'. */
struct cmd_list_element *thread_cmd_list = NULL;
@@ -14408,17 +14347,17 @@ index 6ad1807..aef9dce 100644
void
_initialize_thread (void)
{
-@@ -1494,5 +1504,5 @@ Show printing of thread events (such as thread start and exit)."), NULL,
+@@ -1494,5 +1504,5 @@ Show printing of thread events (such as
show_print_thread_events,
&setprintlist, &showprintlist);
- create_internalvar_type_lazy ("_thread", thread_id_make_value);
+ create_internalvar_type_lazy ("_thread", &thread_funcs, NULL);
}
-diff --git a/gdb/top.c b/gdb/top.c
-index a25550f..87f0b41 100644
---- a/gdb/top.c
-+++ b/gdb/top.c
+Index: gdb-7.2.90.20110429/gdb/top.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/top.c 2011-03-12 23:59:24.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/top.c 2011-04-29 09:40:46.000000000 +0200
@@ -343,6 +343,9 @@ void
prepare_execute_command (void)
{
@@ -14429,10 +14368,10 @@ index a25550f..87f0b41 100644
/* With multiple threads running while the one we're examining is
stopped, the dcache can get stale without us being able to detect
-diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
-index 3ae35d0..1cb39ea 100644
---- a/gdb/tracepoint.c
-+++ b/gdb/tracepoint.c
+Index: gdb-7.2.90.20110429/gdb/tracepoint.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/tracepoint.c 2011-03-18 19:47:56.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/tracepoint.c 2011-04-29 09:40:46.000000000 +0200
@@ -1600,6 +1600,8 @@ start_tracing (void)
for (ix = 0; VEC_iterate (breakpoint_p, tp_vec, ix, t); ix++)
@@ -14452,7 +14391,7 @@ index 3ae35d0..1cb39ea 100644
}
VEC_free (breakpoint_p, tp_vec);
-@@ -1669,7 +1674,28 @@ trace_stop_command (char *args, int from_tty)
+@@ -1669,7 +1674,28 @@ trace_stop_command (char *args, int from
void
stop_tracing (void)
{
@@ -14481,7 +14420,7 @@ index 3ae35d0..1cb39ea 100644
/* Should change in response to reply? */
current_trace_status ()->running = 0;
}
-@@ -4497,7 +4523,8 @@ info_static_tracepoint_markers_command (char *arg, int from_tty)
+@@ -4497,7 +4523,8 @@ info_static_tracepoint_markers_command (
available. */
static struct value *
@@ -14491,7 +14430,7 @@ index 3ae35d0..1cb39ea 100644
{
LONGEST size;
gdb_byte *buf;
-@@ -4676,6 +4703,15 @@ traceframe_available_memory (VEC(mem_range_s) **result,
+@@ -4676,6 +4703,15 @@ traceframe_available_memory (VEC(mem_ran
return 0;
}
@@ -14516,10 +14455,10 @@ index 3ae35d0..1cb39ea 100644
traceframe_number = -1;
tracepoint_number = -1;
-diff --git a/gdb/typeprint.c b/gdb/typeprint.c
-index 03e6332..ce6d1e0 100644
---- a/gdb/typeprint.c
-+++ b/gdb/typeprint.c
+Index: gdb-7.2.90.20110429/gdb/typeprint.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/typeprint.c 2011-01-11 22:53:25.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/typeprint.c 2011-04-29 09:40:46.000000000 +0200
@@ -36,6 +36,7 @@
#include "gdb_string.h"
#include "exceptions.h"
@@ -14573,11 +14512,11 @@ index 03e6332..ce6d1e0 100644
}
static void
-diff --git a/gdb/utils.c b/gdb/utils.c
-index 51d32b7..5fee809 100644
---- a/gdb/utils.c
-+++ b/gdb/utils.c
-@@ -2243,6 +2243,36 @@ set_batch_flag_and_make_cleanup_restore_page_info (void)
+Index: gdb-7.2.90.20110429/gdb/utils.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/utils.c 2011-03-31 16:32:48.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/utils.c 2011-04-29 09:40:46.000000000 +0200
+@@ -2243,6 +2243,36 @@ set_batch_flag_and_make_cleanup_restore_
return back_to;
}
@@ -14614,11 +14553,11 @@ index 51d32b7..5fee809 100644
/* Set the screen size based on LINES_PER_PAGE and CHARS_PER_LINE. */
static void
-diff --git a/gdb/valarith.c b/gdb/valarith.c
-index 68f649f..aaa4487 100644
---- a/gdb/valarith.c
-+++ b/gdb/valarith.c
-@@ -198,7 +198,10 @@ value_subscripted_rvalue (struct value *array, LONGEST index, int lowerbound)
+Index: gdb-7.2.90.20110429/gdb/valarith.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/valarith.c 2011-02-18 20:10:46.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/valarith.c 2011-04-29 09:40:46.000000000 +0200
+@@ -198,7 +198,10 @@ value_subscripted_rvalue (struct value *
struct type *array_type = check_typedef (value_type (array));
struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (array_type));
unsigned int elt_size = TYPE_LENGTH (elt_type);
@@ -14641,10 +14580,10 @@ index 68f649f..aaa4487 100644
return binop_types_user_defined_p (op, value_type (arg1), value_type (arg2));
}
-diff --git a/gdb/valops.c b/gdb/valops.c
-index 99115b7..dc27644 100644
---- a/gdb/valops.c
-+++ b/gdb/valops.c
+Index: gdb-7.2.90.20110429/gdb/valops.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/valops.c 2011-03-29 19:04:30.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/valops.c 2011-04-29 09:40:46.000000000 +0200
@@ -47,6 +47,7 @@
#include "objfiles.h"
#include "symtab.h"
@@ -14653,7 +14592,7 @@ index 99115b7..dc27644 100644
extern int overload_debug;
/* Local functions. */
-@@ -915,6 +916,65 @@ value_one (struct type *type, enum lval_type lv)
+@@ -915,6 +916,65 @@ value_one (struct type *type, enum lval_
return val;
}
@@ -14745,7 +14684,7 @@ index 99115b7..dc27644 100644
}
else if (VALUE_LVAL (val) == lval_register)
{
-@@ -1528,7 +1596,18 @@ address_of_variable (struct symbol *var, struct block *b)
+@@ -1528,7 +1596,18 @@ address_of_variable (struct symbol *var,
if ((VALUE_LVAL (val) == lval_memory && value_lazy (val))
|| TYPE_CODE (type) == TYPE_CODE_FUNC)
{
@@ -14787,7 +14726,7 @@ index 99115b7..dc27644 100644
}
/* Given a value which is a function, return a value which is a pointer
-@@ -3695,6 +3779,8 @@ value_slice (struct value *array, int lowbound, int length)
+@@ -3695,6 +3779,8 @@ value_slice (struct value *array, int lo
TYPE_TARGET_TYPE (range_type),
lowbound,
lowbound + length - 1);
@@ -14796,10 +14735,10 @@ index 99115b7..dc27644 100644
if (TYPE_CODE (array_type) == TYPE_CODE_BITSTRING)
{
int i;
-diff --git a/gdb/valprint.c b/gdb/valprint.c
-index 286ef9e..1fe58b1 100644
---- a/gdb/valprint.c
-+++ b/gdb/valprint.c
+Index: gdb-7.2.90.20110429/gdb/valprint.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/valprint.c 2011-02-14 12:35:45.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/valprint.c 2011-04-29 09:40:46.000000000 +0200
@@ -36,6 +36,7 @@
#include "dfp.h"
#include "python/python.h"
@@ -14816,7 +14755,7 @@ index 286ef9e..1fe58b1 100644
case TYPE_CODE_BITSTRING:
return 0;
default:
-@@ -1193,6 +1193,7 @@ val_print_array_elements (struct type *type,
+@@ -1193,6 +1193,7 @@ val_print_array_elements (struct type *t
{
unsigned int things_printed = 0;
unsigned len;
@@ -14824,7 +14763,7 @@ index 286ef9e..1fe58b1 100644
struct type *elttype, *index_type;
unsigned eltlen;
/* Position of the array element we are examining to see
-@@ -1201,9 +1202,33 @@ val_print_array_elements (struct type *type,
+@@ -1201,9 +1202,33 @@ val_print_array_elements (struct type *t
/* Number of repetitions we have detected so far. */
unsigned int reps;
LONGEST low_bound, high_bound;
@@ -14860,7 +14799,7 @@ index 286ef9e..1fe58b1 100644
index_type = TYPE_INDEX_TYPE (type);
if (get_array_bounds (type, &low_bound, &high_bound))
-@@ -1284,6 +1309,8 @@ val_print_array_elements (struct type *type,
+@@ -1284,6 +1309,8 @@ val_print_array_elements (struct type *t
{
fprintf_filtered (stream, "...");
}
@@ -14869,10 +14808,10 @@ index 286ef9e..1fe58b1 100644
}
/* Read LEN bytes of target memory at address MEMADDR, placing the
-diff --git a/gdb/value.c b/gdb/value.c
-index 2acb1df..6744b76 100644
---- a/gdb/value.c
-+++ b/gdb/value.c
+Index: gdb-7.2.90.20110429/gdb/value.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/value.c 2011-02-27 21:57:15.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/value.c 2011-04-29 09:40:46.000000000 +0200
@@ -43,6 +43,7 @@
#include "python/python.h"
#include <ctype.h>
@@ -14897,7 +14836,7 @@ index 2acb1df..6744b76 100644
if (whole->lval == lval_computed)
{
struct lval_funcs *funcs = whole->location.computed.funcs;
-@@ -1352,6 +1356,12 @@ set_value_component_location (struct value *component,
+@@ -1352,6 +1356,12 @@ set_value_component_location (struct val
if (funcs->copy_closure)
component->location.computed.closure = funcs->copy_closure (whole);
}
@@ -14910,7 +14849,7 @@ index 2acb1df..6744b76 100644
}
\f
-@@ -1485,6 +1495,31 @@ show_values (char *num_exp, int from_tty)
+@@ -1485,6 +1495,31 @@ show_values (char *num_exp, int from_tty
num_exp[1] = '\0';
}
}
@@ -15001,7 +14940,7 @@ index 2acb1df..6744b76 100644
/* Look up an internal variable with name NAME. NAME should not
normally include a dollar sign.
-@@ -1713,7 +1776,8 @@ value_of_internalvar (struct gdbarch *gdbarch, struct internalvar *var)
+@@ -1713,7 +1776,8 @@ value_of_internalvar (struct gdbarch *gd
break;
case INTERNALVAR_MAKE_VALUE:
@@ -15011,7 +14950,7 @@ index 2acb1df..6744b76 100644
break;
default:
-@@ -1909,6 +1973,11 @@ clear_internalvar (struct internalvar *var)
+@@ -1909,6 +1973,11 @@ clear_internalvar (struct internalvar *v
xfree (var->u.string);
break;
@@ -15023,7 +14962,7 @@ index 2acb1df..6744b76 100644
default:
break;
}
-@@ -1963,6 +2032,38 @@ call_internal_function (struct gdbarch *gdbarch,
+@@ -1963,6 +2032,38 @@ call_internal_function (struct gdbarch *
return (*ifn->handler) (gdbarch, language, ifn->cookie, argc, argv);
}
@@ -15062,7 +15001,7 @@ index 2acb1df..6744b76 100644
/* The 'function' command. This does nothing -- it is just a
placeholder to let "help function NAME" work. This is also used as
the implementation of the sub-command that is created when
-@@ -2010,11 +2111,10 @@ preserve_one_value (struct value *value, struct objfile *objfile,
+@@ -2010,11 +2111,10 @@ preserve_one_value (struct value *value,
htab_t copied_types)
{
if (TYPE_OBJFILE (value->type) == objfile)
@@ -15076,7 +15015,7 @@ index 2acb1df..6744b76 100644
copied_types);
}
-@@ -2029,7 +2129,7 @@ preserve_one_internalvar (struct internalvar *var, struct objfile *objfile,
+@@ -2029,7 +2129,7 @@ preserve_one_internalvar (struct interna
case INTERNALVAR_INTEGER:
if (var->u.integer.type && TYPE_OBJFILE (var->u.integer.type) == objfile)
var->u.integer.type
@@ -15085,7 +15024,7 @@ index 2acb1df..6744b76 100644
break;
case INTERNALVAR_VALUE:
-@@ -2080,14 +2180,22 @@ show_convenience (char *ignore, int from_tty)
+@@ -2080,14 +2180,22 @@ show_convenience (char *ignore, int from
get_user_print_options (&opts);
for (var = internalvars; var; var = var->next)
{
@@ -15111,7 +15050,7 @@ index 2acb1df..6744b76 100644
}
if (!varseen)
printf_unfiltered (_("No debugger convenience variables now defined.\n"
-@@ -3047,7 +3155,24 @@ value_from_history_ref (char *h, char **endp)
+@@ -3047,7 +3155,24 @@ value_from_history_ref (char *h, char **
struct value *
coerce_ref (struct value *arg)
{
@@ -15148,11 +15087,11 @@ index 2acb1df..6744b76 100644
+ observer_attach_mark_used (value_types_mark_used);
+#endif
}
-diff --git a/gdb/value.h b/gdb/value.h
-index 0889cef..4b51a4a 100644
---- a/gdb/value.h
-+++ b/gdb/value.h
-@@ -473,6 +473,10 @@ extern struct value *value_from_decfloat (struct type *type,
+Index: gdb-7.2.90.20110429/gdb/value.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/value.h 2011-03-04 21:07:22.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/value.h 2011-04-29 09:40:46.000000000 +0200
+@@ -473,6 +473,10 @@ extern struct value *value_from_decfloat
const gdb_byte *decbytes);
extern struct value *value_from_history_ref (char *, char **);
@@ -15163,7 +15102,7 @@ index 0889cef..4b51a4a 100644
extern struct value *value_at (struct type *type, CORE_ADDR addr);
extern struct value *value_at_lazy (struct type *type, CORE_ADDR addr);
-@@ -697,10 +701,52 @@ extern struct internalvar *lookup_only_internalvar (const char *name);
+@@ -697,10 +701,52 @@ extern struct internalvar *lookup_only_i
extern struct internalvar *create_internalvar (const char *name);
@@ -15219,11 +15158,11 @@ index 0889cef..4b51a4a 100644
extern struct internalvar *lookup_internalvar (const char *name);
-diff --git a/gdb/windows-tdep.c b/gdb/windows-tdep.c
-index 31ddd14..b319250 100644
---- a/gdb/windows-tdep.c
-+++ b/gdb/windows-tdep.c
-@@ -268,7 +268,7 @@ static struct lval_funcs tlb_value_funcs =
+Index: gdb-7.2.90.20110429/gdb/windows-tdep.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/windows-tdep.c 2011-01-12 02:23:29.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/windows-tdep.c 2011-04-29 09:40:46.000000000 +0200
+@@ -268,7 +268,7 @@ static struct lval_funcs tlb_value_funcs
if there's no object available. */
static struct value *
@@ -15255,11 +15194,11 @@ index 31ddd14..b319250 100644
- create_internalvar_type_lazy ("_tlb", tlb_make_value);
+ create_internalvar_type_lazy ("_tlb", &tlb_funcs, NULL);
}
-diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
-index 081080c..f71dbfe 100644
---- a/gdb/xcoffread.c
-+++ b/gdb/xcoffread.c
-@@ -3090,6 +3090,7 @@ static const struct sym_fns xcoff_sym_fns =
+Index: gdb-7.2.90.20110429/gdb/xcoffread.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/xcoffread.c 2011-03-07 17:17:29.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/xcoffread.c 2011-04-29 09:40:46.000000000 +0200
+@@ -3090,6 +3090,7 @@ static const struct sym_fns xcoff_sym_fn
default_symfile_segments, /* Get segment information from a file. */
aix_process_linenos,
default_symfile_relocate, /* Relocate a debug section. */
diff --git a/gdb-bz645773-case-insensitive-1of5.patch b/gdb-bz645773-case-insensitive-1of5.patch
new file mode 100644
index 0000000..7bac6ff
--- /dev/null
+++ b/gdb-bz645773-case-insensitive-1of5.patch
@@ -0,0 +1,84 @@
+[patch] Code cleanup: New SYMBOL_HASH_NEXT
+http://sourceware.org/ml/gdb-patches/2011-04/msg00022.html
+http://sourceware.org/ml/gdb-cvs/2011-04/msg00043.html
+
+### src/gdb/ChangeLog 2011/04/06 03:24:22 1.12908
+### src/gdb/ChangeLog 2011/04/06 19:50:03 1.12909
+## -1,3 +1,12 @@
++2011-04-06 Jan Kratochvil <jan.kratochvil@redhat.com>
++
++ Code cleanup.
++ * dictionary.c (dict_hash): Use SYMBOL_HASH_NEXT.
++ * dwarf2read.c (mapped_index_string_hash): Refer to SYMBOL_HASH_NEXT
++ in the function comment, a new note on values compatibility.
++ * minsyms.c (msymbol_hash_iw, msymbol_hash): Use SYMBOL_HASH_NEXT.
++ * symtab.h (SYMBOL_HASH_NEXT): New.
++
+ 2011-04-06 Thiago Jung Bauermann <bauerman@br.ibm.com>
+
+ * ppc-linux-nat.c (check_condition): Add len output parameter.
+--- src/gdb/dictionary.c 2011/01/07 19:36:15 1.21
++++ src/gdb/dictionary.c 2011/04/06 19:50:04 1.22
+@@ -826,7 +826,7 @@
+ }
+ /* FALL THROUGH */
+ default:
+- hash = hash * 67 + *string - 113;
++ hash = SYMBOL_HASH_NEXT (hash, *string);
+ string += 1;
+ break;
+ }
+--- src/gdb/dwarf2read.c 2011/04/04 14:10:12 1.520
++++ src/gdb/dwarf2read.c 2011/04/06 19:50:04 1.521
+@@ -1962,11 +1962,11 @@
+ do_cleanups (cleanup);
+ }
+
+-/* The hash function for strings in the mapped index. This is the
+- same as the hashtab.c hash function, but we keep a separate copy to
+- maintain control over the implementation. This is necessary
+- because the hash function is tied to the format of the mapped index
+- file. */
++/* The hash function for strings in the mapped index. This is the same as
++ SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
++ implementation. This is necessary because the hash function is tied to the
++ format of the mapped index file. The hash values do not have to match with
++ SYMBOL_HASH_NEXT. */
+
+ static hashval_t
+ mapped_index_string_hash (const void *p)
+--- src/gdb/minsyms.c 2011/03/28 20:29:51 1.81
++++ src/gdb/minsyms.c 2011/04/06 19:50:05 1.82
+@@ -91,7 +91,7 @@
+ ++string;
+ if (*string && *string != '(')
+ {
+- hash = hash * 67 + *string - 113;
++ hash = SYMBOL_HASH_NEXT (hash, *string);
+ ++string;
+ }
+ }
+@@ -106,7 +106,7 @@
+ unsigned int hash = 0;
+
+ for (; *string; ++string)
+- hash = hash * 67 + *string - 113;
++ hash = SYMBOL_HASH_NEXT (hash, *string);
+ return hash;
+ }
+
+--- src/gdb/symtab.h 2011/04/04 15:19:59 1.177
++++ src/gdb/symtab.h 2011/04/06 19:50:05 1.178
+@@ -1004,6 +1004,12 @@
+
+ extern unsigned int msymbol_hash (const char *);
+
++/* Compute the next hash value from previous HASH and the character C. This
++ is only a GDB in-memory computed value with no external files compatibility
++ requirements. */
++
++#define SYMBOL_HASH_NEXT(hash, c) ((hash) * 67 + (c) - 113)
++
+ extern struct objfile * msymbol_objfile (struct minimal_symbol *sym);
+
+ extern void
diff --git a/gdb-bz645773-case-insensitive-2of5.patch b/gdb-bz645773-case-insensitive-2of5.patch
new file mode 100644
index 0000000..b7f2e32
--- /dev/null
+++ b/gdb-bz645773-case-insensitive-2of5.patch
@@ -0,0 +1,139 @@
+http://sourceware.org/ml/gdb-patches/2011-04/msg00124.html
+Subject: [patch 1/3] case insensitive: Reformat code
+
+Hi,
+
+just some reformatting to make the later patch more clear. There should be no
+functionality difference by this patch. c1+c2 are a bit ugly but I found any
+other solution a bit ugly.
+
+
+Thanks,
+Jan
+
+
+gdb/
+2011-04-08 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Format the code for the next patch.
+ * dwarf2read.c (struct mapped_index): Include delimiting newlines.
+ * utils.c (strcmp_iw_ordered): Reformat the code for the next patch.
+ New variables c1 and c2.
+
+--- a/gdb/dwarf2read.c
++++ b/gdb/dwarf2read.c
+@@ -150,14 +150,19 @@ struct mapped_index
+ {
+ /* The total length of the buffer. */
+ off_t total_size;
++
+ /* A pointer to the address table data. */
+ const gdb_byte *address_table;
++
+ /* Size of the address table data in bytes. */
+ offset_type address_table_size;
++
+ /* The symbol table, implemented as a hash table. */
+ const offset_type *symbol_table;
++
+ /* Size in slots, each slot is 2 offset_types. */
+ offset_type symbol_table_slots;
++
+ /* A pointer to the constant pool. */
+ const char *constant_pool;
+ };
+--- a/gdb/utils.c
++++ b/gdb/utils.c
+@@ -3023,48 +3023,55 @@ strcmp_iw (const char *string1, const char *string2)
+ int
+ strcmp_iw_ordered (const char *string1, const char *string2)
+ {
+- while ((*string1 != '\0') && (*string2 != '\0'))
++ /* Formatting stub. */
++ if (1)
+ {
+- while (isspace (*string1))
+- {
+- string1++;
+- }
+- while (isspace (*string2))
+- {
+- string2++;
+- }
+- if (*string1 != *string2)
++ /* C1 and C2 are valid only if *string1 != '\0' && *string2 != '\0'.
++ Provide stub characters if we are already at the end of one of the
++ strings. */
++ char c1 = 'X', c2 = 'X';
++
++ while (*string1 != '\0' && *string2 != '\0')
+ {
+- break;
++ while (isspace (*string1))
++ string1++;
++ while (isspace (*string2))
++ string2++;
++
++ c1 = *string1;
++ c2 = *string2;
++ if (c1 != c2)
++ break;
++
++ if (*string1 != '\0')
++ {
++ string1++;
++ string2++;
++ }
+ }
+- if (*string1 != '\0')
++
++ switch (*string1)
+ {
+- string1++;
+- string2++;
++ /* Characters are non-equal unless they're both '\0'; we want to
++ make sure we get the comparison right according to our
++ comparison in the cases where one of them is '\0' or '('. */
++ case '\0':
++ if (*string2 == '\0')
++ return 0;
++ else
++ return -1;
++ case '(':
++ if (*string2 == '\0')
++ return 1;
++ else
++ return -1;
++ default:
++ if (*string2 == '\0' || *string2 == '(')
++ return 1;
++ else
++ return c1 - c2;
+ }
+ }
+-
+- switch (*string1)
+- {
+- /* Characters are non-equal unless they're both '\0'; we want to
+- make sure we get the comparison right according to our
+- comparison in the cases where one of them is '\0' or '('. */
+- case '\0':
+- if (*string2 == '\0')
+- return 0;
+- else
+- return -1;
+- case '(':
+- if (*string2 == '\0')
+- return 1;
+- else
+- return -1;
+- default:
+- if (*string2 == '(')
+- return 1;
+- else
+- return *string1 - *string2;
+- }
+ }
+
+ /* A simple comparison function with opposite semantics to strcmp. */
+
diff --git a/gdb-bz645773-case-insensitive-3of5.patch b/gdb-bz645773-case-insensitive-3of5.patch
new file mode 100644
index 0000000..ccd4bf2
--- /dev/null
+++ b/gdb-bz645773-case-insensitive-3of5.patch
@@ -0,0 +1,188 @@
+http://sourceware.org/ml/gdb-patches/2011-04/msg00125.html
+Subject: [patch 2/3] case insensitive: re_comp->regcomp
+
+Hi,
+
+re_comp cannot be passed REG_ICASE. Therefore change the code. The should
+have no functionality impact.
+
+The new boolean field `preg_p' could be maybe replaced by a conditional
+`preg.buffer != NULL' which would work with libiberty regcomp implementation
+but I do not see it guaranteed anywhere. GDB is always using static libiberty
+implementation which I do not see why in the case it is running on glibc.
+But if it gets fixed one day and it starts to use externally linked
+regcomp/regexec I would find the `preg.buffer != NULL' conditional dangerous.
+
+
+Thanks,
+Jan
+
+
+gdb/
+2011-04-08 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Replace re_comp/re_exec by regcomp/regexec.
+ * symtab.c (struct search_symbols_data): New fields preg, preg_p.
+ (search_symbols_name_matches): Use them, use regexec.
+ (search_symbols): New variable retval_chain, adjust the use of
+ old_chain against it. Replace re_comp by regcomp. Use the new struct
+ search_symbols_data fields, use regexec instead of re_exec.
+
+Index: gdb-7.2.90.20110429/gdb/symtab.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/symtab.c 2011-04-29 09:43:33.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/symtab.c 2011-04-29 09:43:55.000000000 +0200
+@@ -2958,7 +2958,10 @@ struct search_symbols_data
+ {
+ int nfiles;
+ char **files;
+- char *regexp;
++
++ /* It is true if PREG contains valid data, false otherwise. */
++ unsigned preg_p : 1;
++ regex_t preg;
+ };
+
+ /* A callback for expand_symtabs_matching. */
+@@ -2976,7 +2979,7 @@ search_symbols_name_matches (const char
+ {
+ struct search_symbols_data *data = user_data;
+
+- return data->regexp == NULL || re_exec (symname);
++ return !data->preg_p || regexec (&data->preg, symname, 0, NULL, 0) == 0;
+ }
+
+ /* Search the symbol table for matches to the regular expression REGEXP,
+@@ -3023,9 +3026,13 @@ search_symbols (char *regexp, domain_enu
+ struct symbol_search *sr;
+ struct symbol_search *psr;
+ struct symbol_search *tail;
+- struct cleanup *old_chain = NULL;
+ struct search_symbols_data datum;
+
++ /* OLD_CHAIN .. RETVAL_CHAIN is always freed, RETVAL_CHAIN .. current
++ CLEANUP_CHAIN is freed only in the case of an error. */
++ struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
++ struct cleanup *retval_chain;
++
+ if (kind < VARIABLES_DOMAIN || kind >= ALL_DOMAIN)
+ error (_("must search on specific domain"));
+
+@@ -3036,6 +3043,7 @@ search_symbols (char *regexp, domain_enu
+
+ sr = *matches = NULL;
+ tail = NULL;
++ datum.preg_p = 0;
+
+ if (regexp != NULL)
+ {
+@@ -3045,6 +3053,7 @@ search_symbols (char *regexp, domain_enu
+ and <TYPENAME> or <OPERATOR>. */
+ char *opend;
+ char *opname = operator_chars (regexp, &opend);
++ int errcode;
+
+ if (*opname)
+ {
+@@ -3073,8 +3082,16 @@ search_symbols (char *regexp, domain_enu
+ }
+ }
+
+- if (0 != (val = re_comp (regexp)))
+- error (_("Invalid regexp (%s): %s"), val, regexp);
++ errcode = regcomp (&datum.preg, regexp, REG_NOSUB);
++ if (errcode != 0)
++ {
++ char *err = get_regcomp_error (errcode, &datum.preg);
++
++ make_cleanup (xfree, err);
++ error (_("Invalid regexp (%s): %s"), err, regexp);
++ }
++ datum.preg_p = 1;
++ make_regfree_cleanup (&datum.preg);
+ }
+
+ /* Search through the partial symtabs *first* for all symbols
+@@ -3083,7 +3100,6 @@ search_symbols (char *regexp, domain_enu
+
+ datum.nfiles = nfiles;
+ datum.files = files;
+- datum.regexp = regexp;
+ ALL_OBJFILES (objfile)
+ {
+ if (objfile->sf)
+@@ -3094,6 +3110,8 @@ search_symbols (char *regexp, domain_enu
+ &datum);
+ }
+
++ retval_chain = old_chain;
++
+ /* Here, we search through the minimal symbol tables for functions
+ and variables that match, and force their symbols to be read.
+ This is in particular necessary for demangled variable names,
+@@ -3117,8 +3135,9 @@ search_symbols (char *regexp, domain_enu
+ MSYMBOL_TYPE (msymbol) == ourtype3 ||
+ MSYMBOL_TYPE (msymbol) == ourtype4)
+ {
+- if (regexp == NULL
+- || re_exec (SYMBOL_NATURAL_NAME (msymbol)) != 0)
++ if (!datum.preg_p
++ || regexec (&datum.preg, SYMBOL_NATURAL_NAME (msymbol), 0,
++ NULL, 0) == 0)
+ {
+ if (0 == find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol)))
+ {
+@@ -3156,8 +3175,9 @@ search_symbols (char *regexp, domain_enu
+ QUIT;
+
+ if (file_matches (real_symtab->filename, files, nfiles)
+- && ((regexp == NULL
+- || re_exec (SYMBOL_NATURAL_NAME (sym)) != 0)
++ && ((!datum.preg_p
++ || regexec (&datum.preg, SYMBOL_NATURAL_NAME (sym), 0,
++ NULL, 0) == 0)
+ && ((kind == VARIABLES_DOMAIN
+ && SYMBOL_CLASS (sym) != LOC_TYPEDEF
+ && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
+@@ -3199,7 +3219,7 @@ search_symbols (char *regexp, domain_enu
+ tail = sort_search_symbols (&dummy, nfound);
+ sr = dummy.next;
+
+- old_chain = make_cleanup_free_search_symbols (sr);
++ make_cleanup_free_search_symbols (sr);
+ }
+ else
+ tail = sort_search_symbols (prevtail, nfound);
+@@ -3221,8 +3241,9 @@ search_symbols (char *regexp, domain_enu
+ MSYMBOL_TYPE (msymbol) == ourtype3 ||
+ MSYMBOL_TYPE (msymbol) == ourtype4)
+ {
+- if (regexp == NULL
+- || re_exec (SYMBOL_NATURAL_NAME (msymbol)) != 0)
++ if (!datum.preg_p
++ || regexec (&datum.preg, SYMBOL_NATURAL_NAME (msymbol), 0,
++ NULL, 0) == 0)
+ {
+ /* Functions: Look up by address. */
+ if (kind != FUNCTIONS_DOMAIN ||
+@@ -3244,7 +3265,7 @@ search_symbols (char *regexp, domain_enu
+ if (tail == NULL)
+ {
+ sr = psr;
+- old_chain = make_cleanup_free_search_symbols (sr);
++ make_cleanup_free_search_symbols (sr);
+ }
+ else
+ tail->next = psr;
+@@ -3256,9 +3277,9 @@ search_symbols (char *regexp, domain_enu
+ }
+ }
+
++ discard_cleanups (retval_chain);
++ do_cleanups (old_chain);
+ *matches = sr;
+- if (sr != NULL)
+- discard_cleanups (old_chain);
+ }
+
+ /* Helper function for symtab_symbol_info, this function uses
diff --git a/gdb-bz645773-case-insensitive-4of5.patch b/gdb-bz645773-case-insensitive-4of5.patch
new file mode 100644
index 0000000..2ef369d
--- /dev/null
+++ b/gdb-bz645773-case-insensitive-4of5.patch
@@ -0,0 +1,666 @@
+http://sourceware.org/ml/gdb-patches/2011-04/msg00418.html
+Subject: Re: [patch 3/3] case insensitive: the fix [rediff]
+
+On Fri, 22 Apr 2011 21:05:07 +0200, Eli Zaretskii wrote:
+> This @table will look weird in the manual: it produces lines that
+> begin with a lower-case letter. Perhaps reorder thusly:
+
+OK, thanks for the review.
+
+
+Regards,
+Jan
+
+
+gdb/doc/
+2011-04-22 Jan Kratochvil <jan.kratochvil@redhat.com>
+ Eli Zaretskii <eliz@gnu.org>
+
+ * gdb.texinfo (Index Section Format): Change the version to 5.
+ Describe the different formula.
+
+gdb/
+2011-04-08 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwarf2read.c: Include ctype.h.
+ (struct mapped_index): New field version.
+ (mapped_index_string_hash): New parameter index_version. New comment
+ for it. Call tolower appropriately.
+ (find_slot_in_mapped_hash): New variable cmp, initialize it, use it.
+ Choose the right index version for mapped_index_string_hash.
+ (dwarf2_read_index): Support also the index version 5. Initialize the
+ new struct mapped_index field version.
+ (hash_strtab_entry): Pass INT_MAX for the new parameter, explain why.
+ (find_slot): Explain the version needs. Pass INT_MAX for the new
+ parameter.
+ (write_psymtabs_to_index): Produce version 5.
+ * minsyms.c (lookup_minimal_symbol): New variable cmp, initialize it,
+ use it. New comment for SYMBOL_MATCHES_SEARCH_NAME.
+ * psymtab.c (lookup_partial_symbol): Find the
+ SYMBOL_MATCHES_SEARCH_NAME start of the found block of matching
+ entries.
+ * symtab.c (lookup_symbol_in_language): Remove the case_sensitive_off
+ NAME lowercasing.
+ (search_symbols): Pass REG_ICASE to regcomp for case_sensitive_off.
+ (completion_list_add_name): New variable ncmp, initialize it, use it.
+ * symtab.h (SYMBOL_HASH_NEXT): Always call tolower.
+ * utils.c (strcmp_iw): Support case_sensitive_off.
+ (strcmp_iw_ordered): Sort in a way compatible with case_sensitive_off.
+ New function comment part. New variables saved_string1,
+ saved_string2 and case_pass. Add a proper second pass.
+
+gdb/testsuite/
+2011-04-08 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * gdb.base/fortran-sym-case.c: New file.
+ * gdb.base/fortran-sym-case.exp: New file.
+ * gdb.dwarf2/dw2-case-insensitive-debug.S: New file.
+ * gdb.dwarf2/dw2-case-insensitive.c: New file.
+ * gdb.dwarf2/dw2-case-insensitive.exp: New file.
+
+Index: gdb-7.2.90.20110429/gdb/dwarf2read.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/dwarf2read.c 2011-04-29 09:43:34.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/dwarf2read.c 2011-04-29 09:45:58.000000000 +0200
+@@ -152,6 +152,9 @@ DEF_VEC_I (offset_type);
+ a comment by the code that writes the index. */
+ struct mapped_index
+ {
++ /* Index data format version. */
++ int version;
++
+ /* The total length of the buffer. */
+ off_t total_size;
+
+@@ -1990,17 +1993,23 @@ create_addrmap_from_index (struct objfil
+ SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
+ implementation. This is necessary because the hash function is tied to the
+ format of the mapped index file. The hash values do not have to match with
+- SYMBOL_HASH_NEXT. */
++ SYMBOL_HASH_NEXT.
++
++ Use INT_MAX for INDEX_VERSION if you generate the current index format. */
+
+ static hashval_t
+-mapped_index_string_hash (const void *p)
++mapped_index_string_hash (int index_version, const void *p)
+ {
+ const unsigned char *str = (const unsigned char *) p;
+ hashval_t r = 0;
+ unsigned char c;
+
+ while ((c = *str++) != 0)
+- r = r * 67 + c - 113;
++ {
++ if (index_version >= 5)
++ c = tolower (c);
++ r = r * 67 + c - 113;
++ }
+
+ return r;
+ }
+@@ -2013,11 +2022,19 @@ static int
+ find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
+ offset_type **vec_out)
+ {
+- offset_type hash = mapped_index_string_hash (name);
++ /* Index version 4 did not support case insensitive searches. But the
++ indexes for case insensitive languages are built in lowercase, therefore
++ simulate our NAME being searched is also lowercased. */
++ offset_type hash = mapped_index_string_hash ((index->version == 4
++ && case_sensitivity == case_sensitive_off
++ ? 5 : index->version),
++ name);
+ offset_type slot, step;
++ int (*cmp) (const char *, const char *);
+
+ slot = hash & (index->symbol_table_slots - 1);
+ step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
++ cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
+
+ for (;;)
+ {
+@@ -2028,7 +2045,7 @@ find_slot_in_mapped_hash (struct mapped_
+ return 0;
+
+ str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
+- if (!strcmp (name, str))
++ if (!cmp (name, str))
+ {
+ *vec_out = (offset_type *) (index->constant_pool
+ + MAYBE_SWAP (index->symbol_table[i + 1]));
+@@ -2071,15 +2088,17 @@ dwarf2_read_index (struct objfile *objfi
+ /* Versions earlier than 3 emitted every copy of a psymbol. This
+ causes the index to behave very poorly for certain requests. Version 3
+ contained incomplete addrmap. So, it seems better to just ignore such
+- indices. */
++ indices. Index version 4 uses a different hash function than index
++ version 5 and later. */
+ if (version < 4)
+ return 0;
+ /* Indexes with higher version than the one supported by GDB may be no
+ longer backward compatible. */
+- if (version > 4)
++ if (version > 5)
+ return 0;
+
+ map = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct mapped_index);
++ map->version = version;
+ map->total_size = dwarf2_per_objfile->gdb_index.size;
+
+ metadata = (offset_type *) (addr + sizeof (offset_type));
+@@ -15602,13 +15621,16 @@ struct strtab_entry
+ const char *str;
+ };
+
+-/* Hash function for a strtab_entry. */
++/* Hash function for a strtab_entry.
++
++ Function is used only during write_hash_table so no index format backward
++ compatibility is needed. */
+
+ static hashval_t
+ hash_strtab_entry (const void *e)
+ {
+ const struct strtab_entry *entry = e;
+- return mapped_index_string_hash (entry->str);
++ return mapped_index_string_hash (INT_MAX, entry->str);
+ }
+
+ /* Equality function for a strtab_entry. */
+@@ -15746,12 +15768,15 @@ cleanup_mapped_symtab (void *p)
+ }
+
+ /* Find a slot in SYMTAB for the symbol NAME. Returns a pointer to
+- the slot. */
++ the slot.
++
++ Function is used only during write_hash_table so no index format backward
++ compatibility is needed. */
+
+ static struct symtab_index_entry **
+ find_slot (struct mapped_symtab *symtab, const char *name)
+ {
+- offset_type index, step, hash = mapped_index_string_hash (name);
++ offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
+
+ index = hash & (symtab->size - 1);
+ step = ((hash * 17) & (symtab->size - 1)) | 1;
+@@ -16279,7 +16304,7 @@ write_psymtabs_to_index (struct objfile
+ total_len = size_of_contents;
+
+ /* The version number. */
+- val = MAYBE_SWAP (4);
++ val = MAYBE_SWAP (5);
+ obstack_grow (&contents, &val, sizeof (val));
+
+ /* The offset of the CU list from the start of the file. */
+Index: gdb-7.2.90.20110429/gdb/minsyms.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/minsyms.c 2011-04-29 09:43:34.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/minsyms.c 2011-04-29 09:44:15.000000000 +0200
+@@ -239,11 +239,16 @@ lookup_minimal_symbol (const char *name,
+
+ if (pass == 1)
+ {
+- match = strcmp (SYMBOL_LINKAGE_NAME (msymbol),
+- modified_name) == 0;
++ int (*cmp) (const char *, const char *);
++
++ cmp = (case_sensitivity == case_sensitive_on
++ ? strcmp : strcasecmp);
++ match = cmp (SYMBOL_LINKAGE_NAME (msymbol),
++ modified_name) == 0;
+ }
+ else
+ {
++ /* The function respects CASE_SENSITIVITY. */
+ match = SYMBOL_MATCHES_SEARCH_NAME (msymbol,
+ modified_name);
+ }
+Index: gdb-7.2.90.20110429/gdb/psymtab.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/psymtab.c 2011-04-20 22:10:29.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/psymtab.c 2011-04-29 09:44:15.000000000 +0200
+@@ -690,8 +690,15 @@ lookup_partial_symbol (struct partial_sy
+ internal_error (__FILE__, __LINE__,
+ _("failed internal consistency check"));
+
+- while (top <= real_top
+- && SYMBOL_MATCHES_SEARCH_NAME (*top, search_name))
++ /* For `case_sensitivity == case_sensitive_off' strcmp_iw_ordered will
++ search more exactly than what matches SYMBOL_MATCHES_SEARCH_NAME. */
++ while (top >= start && SYMBOL_MATCHES_SEARCH_NAME (*top, search_name))
++ top--;
++
++ /* Fixup to have a symbol which matches SYMBOL_MATCHES_SEARCH_NAME. */
++ top++;
++
++ while (top <= real_top && SYMBOL_MATCHES_SEARCH_NAME (*top, search_name))
+ {
+ if (symbol_matches_domain (SYMBOL_LANGUAGE (*top),
+ SYMBOL_DOMAIN (*top), domain))
+Index: gdb-7.2.90.20110429/gdb/symtab.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/symtab.c 2011-04-29 09:43:55.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/symtab.c 2011-04-29 09:44:15.000000000 +0200
+@@ -1062,19 +1062,6 @@ lookup_symbol_in_language (const char *n
+ }
+ }
+
+- if (case_sensitivity == case_sensitive_off)
+- {
+- char *copy;
+- int len, i;
+-
+- len = strlen (name);
+- copy = (char *) alloca (len + 1);
+- for (i= 0; i < len; i++)
+- copy[i] = tolower (name[i]);
+- copy[len] = 0;
+- modified_name = copy;
+- }
+-
+ returnval = lookup_symbol_aux (modified_name, block, domain, lang,
+ is_a_field_of_this);
+ do_cleanups (cleanup);
+@@ -3082,7 +3069,9 @@ search_symbols (char *regexp, domain_enu
+ }
+ }
+
+- errcode = regcomp (&datum.preg, regexp, REG_NOSUB);
++ errcode = regcomp (&datum.preg, regexp,
++ REG_NOSUB | (case_sensitivity == case_sensitive_off
++ ? REG_ICASE : 0));
+ if (errcode != 0)
+ {
+ char *err = get_regcomp_error (errcode, &datum.preg);
+@@ -3529,10 +3518,13 @@ completion_list_add_name (char *symname,
+ char *text, char *word)
+ {
+ int newsize;
++ int (*ncmp) (const char *, const char *, size_t);
++
++ ncmp = (case_sensitivity == case_sensitive_on ? strncmp : strncasecmp);
+
+ /* Clip symbols that cannot match. */
+
+- if (strncmp (symname, sym_text, sym_text_len) != 0)
++ if (ncmp (symname, sym_text, sym_text_len) != 0)
+ {
+ return;
+ }
+Index: gdb-7.2.90.20110429/gdb/symtab.h
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/symtab.h 2011-04-29 09:43:34.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/symtab.h 2011-04-29 09:44:15.000000000 +0200
+@@ -1030,7 +1030,8 @@ extern unsigned int msymbol_hash (const
+ is only a GDB in-memory computed value with no external files compatibility
+ requirements. */
+
+-#define SYMBOL_HASH_NEXT(hash, c) ((hash) * 67 + (c) - 113)
++#define SYMBOL_HASH_NEXT(hash, c) \
++ ((hash) * 67 + tolower ((unsigned char) (c)) - 113)
+
+ extern struct objfile * msymbol_objfile (struct minimal_symbol *sym);
+
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.base/fortran-sym-case.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.base/fortran-sym-case.c 2011-04-29 09:44:15.000000000 +0200
+@@ -0,0 +1,22 @@
++/* This testcase is part of GDB, the GNU debugger.
++
++ Copyright 2011 Free Software Foundation, Inc.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 3 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>. */
++
++int
++main (int argc, char **aRGv)
++{
++ return 0;
++}
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.base/fortran-sym-case.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.base/fortran-sym-case.exp 2011-04-29 09:44:15.000000000 +0200
+@@ -0,0 +1,27 @@
++# Copyright (C) 2011 Free Software Foundation, Inc.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program. If not, see <http://www.gnu.org/licenses/>.
++
++set testfile fortran-sym-case
++if { [prepare_for_testing ${testfile}.exp ${testfile}] } {
++ return -1
++}
++
++if ![runto_main] {
++ return -1
++}
++
++gdb_test "set language fortran" {Warning: the current language does not match this frame\.}
++
++gdb_test "frame" ", aRGv=.*"
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S 2011-04-29 09:44:15.000000000 +0200
+@@ -0,0 +1,102 @@
++/* This testcase is part of GDB, the GNU debugger.
++
++ Copyright 2011 Free Software Foundation, Inc.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 3 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>. */
++
++ .section .debug_info
++.Lcu1_begin:
++ /* CU header */
++ .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */
++.Lcu1_start:
++ .2byte 2 /* DWARF Version */
++ .4byte .Labbrev1_begin /* Offset into abbrev section */
++ .byte 4 /* Pointer size */
++
++ /* CU die */
++ .uleb128 1 /* Abbrev: DW_TAG_compile_unit */
++ .ascii "file1.txt\0" /* DW_AT_name */
++ .ascii "GNU C 3.3.3\0" /* DW_AT_producer */
++ .byte 8 /* DW_AT_language (DW_LANG_Fortran90) */
++ .4byte FUNC_lang /* DW_AT_low_pc */
++ .4byte main /* DW_AT_high_pc */
++
++ .uleb128 3 /* Abbrev: DW_TAG_subprogram */
++ .byte 1 /* DW_AT_external */
++ .ascii "FUNC_lang\0" /* DW_AT_name */
++ .4byte FUNC_lang /* DW_AT_low_pc */
++ .4byte main /* DW_AT_high_pc */
++ .byte 1 /* DW_AT_prototyped */
++ .4byte .Ltype - .Lcu1_begin /* DW_AT_type */
++
++.Ltype:
++ .uleb128 0x5 /* Abbrev: DW_TAG_base_type */
++ .byte 0x4 /* DW_AT_byte_size */
++ .byte 0x5 /* DW_AT_encoding */
++ .ascii "foo\0" /* DW_AT_name */
++
++ .byte 0 /* End of children of CU */
++.Lcu1_end:
++
++/* Abbrev table */
++ .section .debug_abbrev
++.Labbrev1_begin:
++ .uleb128 1 /* Abbrev code */
++ .uleb128 0x11 /* DW_TAG_compile_unit */
++ .byte 1 /* has_children */
++ .uleb128 0x3 /* DW_AT_name */
++ .uleb128 0x8 /* DW_FORM_string */
++ .uleb128 0x25 /* DW_AT_producer */
++ .uleb128 0x8 /* DW_FORM_string */
++ .uleb128 0x13 /* DW_AT_language */
++ .uleb128 0xb /* DW_FORM_data1 */
++ .uleb128 0x11 /* DW_AT_low_pc */
++ .uleb128 0x1 /* DW_FORM_addr */
++ .uleb128 0x12 /* DW_AT_high_pc */
++ .uleb128 0x1 /* DW_FORM_addr */
++ .byte 0x0 /* Terminator */
++ .byte 0x0 /* Terminator */
++
++ .uleb128 3 /* Abbrev code */
++ .uleb128 0x2e /* DW_TAG_subprogram */
++ .byte 0 /* has_children */
++ .uleb128 0x3f /* DW_AT_external */
++ .uleb128 0xc /* DW_FORM_flag */
++ .uleb128 0x3 /* DW_AT_name */
++ .uleb128 0x8 /* DW_FORM_string */
++ .uleb128 0x11 /* DW_AT_low_pc */
++ .uleb128 0x1 /* DW_FORM_addr */
++ .uleb128 0x12 /* DW_AT_high_pc */
++ .uleb128 0x1 /* DW_FORM_addr */
++ .uleb128 0x27 /* DW_AT_prototyped */
++ .uleb128 0xc /* DW_FORM_flag */
++ .uleb128 0x49 /* DW_AT_type */
++ .uleb128 0x13 /* DW_FORM_ref4 */
++ .byte 0x0 /* Terminator */
++ .byte 0x0 /* Terminator */
++
++ .uleb128 0x5 /* Abbrev code */
++ .uleb128 0x24 /* DW_TAG_base_type */
++ .byte 0x0 /* DW_children_no */
++ .uleb128 0xb /* DW_AT_byte_size */
++ .uleb128 0xb /* DW_FORM_data1 */
++ .uleb128 0x3e /* DW_AT_encoding */
++ .uleb128 0xb /* DW_FORM_data1 */
++ .uleb128 0x3 /* DW_AT_name */
++ .uleb128 0x8 /* DW_FORM_string */
++ .byte 0x0 /* Terminator */
++ .byte 0x0 /* Terminator */
++
++ .byte 0x0 /* Terminator */
++ .byte 0x0 /* Terminator */
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.c 2011-04-29 09:44:15.000000000 +0200
+@@ -0,0 +1,38 @@
++/* This testcase is part of GDB, the GNU debugger.
++
++ Copyright 2011 Free Software Foundation, Inc.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 3 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>. */
++
++/* Use DW_LANG_Fortran90 for case insensitive DWARF. */
++
++void
++FUNC_lang (void)
++{
++}
++
++/* Symbol is present only in ELF .symtab. */
++
++void
++FUNC_symtab (void)
++{
++}
++
++int
++main (void)
++{
++ FUNC_lang ();
++ FUNC_symtab ();
++ return 0;
++}
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive.exp 2011-04-29 09:44:15.000000000 +0200
+@@ -0,0 +1,49 @@
++# Copyright 2011 Free Software Foundation, Inc.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program. If not, see <http://www.gnu.org/licenses/>.
++load_lib dwarf.exp
++
++# This test can only be run on targets which support DWARF-2 and use gas.
++if {![dwarf2_support]} {
++ return 0
++}
++
++set testfile "dw2-case-insensitive"
++
++if { [prepare_for_testing ${testfile}.exp ${testfile} [list ${testfile}.c ${testfile}-debug.S] {nodebug}] } {
++ return -1
++}
++
++gdb_test "show case-sensitive" {Case sensitivity in name search is "auto; currently on"\.}
++
++gdb_test "info functions fUnC_lang" \
++ "All functions matching regular expression \"fUnC_lang\":" \
++ "regexp case-sensitive on"
++
++gdb_test "set case-sensitive off" {warning: the current case sensitivity setting does not match the language\.}
++
++gdb_test "info functions fUnC_lang" \
++ "All functions matching regular expression \"fUnC_lang\":\[\r\n\]+File file1.txt:\r\nfoo FUNC_lang\\(void\\);" \
++ "regexp case-sensitive off"
++
++gdb_test "p fuNC_lang" { = {foo \(void\)} 0x[0-9a-f]+ <FUNC_lang>}
++gdb_test "p fuNC_symtab" { = {<text variable, no debug info>} 0x[0-9a-f]+ <FUNC_symtab>}
++
++if {[gdb_breakpoint "fuNC_lang"] == 1} {
++ pass "setting breakpoint at fuNC_lang"
++}
++
++if {[gdb_breakpoint "fuNC_symtab"] == 1} {
++ pass "setting breakpoint at fuNC_symtab"
++}
+Index: gdb-7.2.90.20110429/gdb/utils.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/utils.c 2011-04-29 09:43:34.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/utils.c 2011-04-29 09:44:15.000000000 +0200
+@@ -3003,10 +3003,12 @@ strcmp_iw (const char *string1, const ch
+ {
+ string2++;
+ }
+- if (*string1 != *string2)
+- {
+- break;
+- }
++ if (case_sensitivity == case_sensitive_on && *string1 != *string2)
++ break;
++ if (case_sensitivity == case_sensitive_off
++ && (tolower ((unsigned char) *string1)
++ != tolower ((unsigned char) *string2)))
++ break;
+ if (*string1 != '\0')
+ {
+ string1++;
+@@ -3027,6 +3029,10 @@ strcmp_iw (const char *string1, const ch
+ strcmp_iw(LIST_ELT, NAME), then the place to start looking is right
+ where this function would put NAME.
+
++ This function must be neutral to the CASE_SENSITIVITY setting as the user
++ may choose it during later lookup. Therefore this function always sorts
++ primarily case-insensitively and secondarily case-sensitively.
++
+ Here are some examples of why using strcmp to sort is a bad idea:
+
+ Whitespace example:
+@@ -3052,8 +3058,10 @@ strcmp_iw (const char *string1, const ch
+ int
+ strcmp_iw_ordered (const char *string1, const char *string2)
+ {
+- /* Formatting stub. */
+- if (1)
++ const char *saved_string1 = string1, *saved_string2 = string2;
++ enum case_sensitivity case_pass = case_sensitive_off;
++
++ for (;;)
+ {
+ /* C1 and C2 are valid only if *string1 != '\0' && *string2 != '\0'.
+ Provide stub characters if we are already at the end of one of the
+@@ -3067,8 +3075,17 @@ strcmp_iw_ordered (const char *string1,
+ while (isspace (*string2))
+ string2++;
+
++ switch (case_pass)
++ {
++ case case_sensitive_off:
++ c1 = tolower ((unsigned char) *string1);
++ c2 = tolower ((unsigned char) *string2);
++ break;
++ case case_sensitive_on:
+ c1 = *string1;
+ c2 = *string2;
++ break;
++ }
+ if (c1 != c2)
+ break;
+
+@@ -3086,7 +3103,7 @@ strcmp_iw_ordered (const char *string1,
+ comparison in the cases where one of them is '\0' or '('. */
+ case '\0':
+ if (*string2 == '\0')
+- return 0;
++ break;
+ else
+ return -1;
+ case '(':
+@@ -3097,9 +3114,22 @@ strcmp_iw_ordered (const char *string1,
+ default:
+ if (*string2 == '\0' || *string2 == '(')
+ return 1;
+- else
+- return c1 - c2;
++ else if (c1 > c2)
++ return 1;
++ else if (c1 < c2)
++ return -1;
++ /* PASSTHRU */
+ }
++
++ if (case_pass == case_sensitive_on)
++ return 0;
++
++ /* Otherwise the strings were equal in case insensitive way, make
++ a more fine grained comparison in a case sensitive way. */
++
++ case_pass = case_sensitive_on;
++ string1 = saved_string1;
++ string2 = saved_string2;
+ }
+ }
+
diff --git a/gdb-bz645773-case-insensitive-5of5.patch b/gdb-bz645773-case-insensitive-5of5.patch
new file mode 100644
index 0000000..7077037
--- /dev/null
+++ b/gdb-bz645773-case-insensitive-5of5.patch
@@ -0,0 +1,62 @@
+http://sourceware.org/ml/gdb-patches/2011-04/msg00546.html
+Subject: [obv] Fix completer pre-expansion for case insensitive lookups
+
+Hi,
+
+due to the pending patches there happened a semantic collision. Both pathsets
+were right on their own but together it did not work well. There could be
+a testcase for it but I do not provide it, it seems obvious enought to me.
+
+The two patches were:
+ Re: [patch 3/3] case insensitive: the fix [rediff]
+ http://sourceware.org/ml/gdb-patches/2011-04/msg00418.html
+ - see the change in completion_list_add_name
+and
+ [patch][+7.3] Fix physname completion regression
+ http://sourceware.org/ml/gdb-patches/2011-04/msg00140.html
+ - see expand_partial_symbol_name which just called
+ completion_list_add_name before but now it has explicit strncmp.
+
+Another problem is this code is still wrong. That is the subject of:
+ CU expansion problem for parameters
+ http://sourceware.org/bugzilla/show_bug.cgi?id=12708
+
+But I did not want to mix two unrelated fixes into a single patch
+
+No regressions on {x86_64,x86_64-m32,i686}-fedora15-linux-gnu. Checked it in
+already to not get lost in the inter-patch dependencies again.
+
+
+Sorry,
+Jan
+
+
+http://sourceware.org/ml/gdb-cvs/2011-04/msg00186.html
+
+### src/gdb/ChangeLog 2011/04/28 15:52:53 1.12964
+### src/gdb/ChangeLog 2011/04/28 17:37:02 1.12965
+## -1,3 +1,8 @@
++2011-04-28 Jan Kratochvil <jan.kratochvil@redhat.com>
++
++ * symtab.c (expand_partial_symbol_name): New variable NCMP. Support
++ case insensitive comparison.
++
+ 2011-04-28 Ulrich Weigand <ulrich.weigand@linaro.org>
+
+ * infrun.c (proceed): Revert previous change.
+--- src/gdb/symtab.c 2011/04/27 20:03:03 1.269
++++ src/gdb/symtab.c 2011/04/28 17:37:06 1.270
+@@ -3707,8 +3707,11 @@
+ expand_partial_symbol_name (const char *name, void *user_data)
+ {
+ struct add_name_data *datum = (struct add_name_data *) user_data;
++ int (*ncmp) (const char *, const char *, size_t);
+
+- return strncmp (name, datum->sym_text, datum->sym_text_len) == 0;
++ ncmp = (case_sensitivity == case_sensitive_on ? strncmp : strncasecmp);
++
++ return ncmp (name, datum->sym_text, datum->sym_text_len) == 0;
+ }
+
+ char **
+
diff --git a/gdb-fortran-common.patch b/gdb-fortran-common.patch
index acc3622..be5bf22 100644
--- a/gdb-fortran-common.patch
+++ b/gdb-fortran-common.patch
@@ -1,8 +1,8 @@
-Index: gdb-7.2.50.20110117/gdb/dwarf2read.c
+Index: gdb-7.2.90.20110429/gdb/dwarf2read.c
===================================================================
---- gdb-7.2.50.20110117.orig/gdb/dwarf2read.c 2011-01-17 15:50:41.000000000 +0100
-+++ gdb-7.2.50.20110117/gdb/dwarf2read.c 2011-01-17 15:56:23.000000000 +0100
-@@ -7465,12 +7465,14 @@ read_set_type (struct die_info *die, str
+--- gdb-7.2.90.20110429.orig/gdb/dwarf2read.c 2011-04-29 09:41:14.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/dwarf2read.c 2011-04-29 09:41:20.000000000 +0200
+@@ -7569,12 +7569,14 @@ read_set_type (struct die_info *die, str
return set_die_type (die, set_type, cu);
}
@@ -19,7 +19,7 @@ Index: gdb-7.2.50.20110117/gdb/dwarf2read.c
struct attribute *attr;
struct symbol *sym;
CORE_ADDR base = (CORE_ADDR) 0;
-@@ -7495,10 +7497,40 @@ read_common_block (struct die_info *die,
+@@ -7599,10 +7601,40 @@ read_common_block (struct die_info *die,
}
if (die->child != NULL)
{
@@ -60,7 +60,7 @@ Index: gdb-7.2.50.20110117/gdb/dwarf2read.c
attr = dwarf2_attr (child_die, DW_AT_data_member_location, cu);
if (sym != NULL && attr != NULL)
{
-@@ -7516,8 +7548,25 @@ read_common_block (struct die_info *die,
+@@ -7620,8 +7652,25 @@ read_common_block (struct die_info *die,
SYMBOL_VALUE_ADDRESS (sym) = base + byte_offset;
add_symbol_to_list (sym, &global_symbols);
}
@@ -86,7 +86,7 @@ Index: gdb-7.2.50.20110117/gdb/dwarf2read.c
}
}
-@@ -11111,6 +11160,13 @@ new_symbol_full (struct die_info *die, s
+@@ -11286,6 +11335,13 @@ new_symbol_full (struct die_info *die, s
{
var_decode_location (attr, sym, cu);
attr2 = dwarf2_attr (die, DW_AT_external, cu);
@@ -100,7 +100,7 @@ Index: gdb-7.2.50.20110117/gdb/dwarf2read.c
if (SYMBOL_CLASS (sym) == LOC_STATIC
&& SYMBOL_VALUE_ADDRESS (sym) == 0
&& !dwarf2_per_objfile->has_section_at_zero)
-@@ -11283,6 +11339,11 @@ new_symbol_full (struct die_info *die, s
+@@ -11458,6 +11514,11 @@ new_symbol_full (struct die_info *die, s
SYMBOL_CLASS (sym) = LOC_TYPEDEF;
list_to_add = &global_symbols;
break;
@@ -112,10 +112,10 @@ Index: gdb-7.2.50.20110117/gdb/dwarf2read.c
default:
/* Not a tag we recognize. Hopefully we aren't processing
trash data, but since we must specifically ignore things
-Index: gdb-7.2.50.20110117/gdb/f-lang.c
+Index: gdb-7.2.90.20110429/gdb/f-lang.c
===================================================================
---- gdb-7.2.50.20110117.orig/gdb/f-lang.c 2011-01-17 15:56:07.000000000 +0100
-+++ gdb-7.2.50.20110117/gdb/f-lang.c 2011-01-17 15:56:48.000000000 +0100
+--- gdb-7.2.90.20110429.orig/gdb/f-lang.c 2011-04-29 09:41:15.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/f-lang.c 2011-04-29 09:41:20.000000000 +0200
@@ -446,27 +446,3 @@ _initialize_f_language (void)
add_language (&f_language_defn);
@@ -144,10 +144,10 @@ Index: gdb-7.2.50.20110117/gdb/f-lang.c
- }
- return (NULL);
-}
-Index: gdb-7.2.50.20110117/gdb/f-lang.h
+Index: gdb-7.2.90.20110429/gdb/f-lang.h
===================================================================
---- gdb-7.2.50.20110117.orig/gdb/f-lang.h 2011-01-17 15:54:14.000000000 +0100
-+++ gdb-7.2.50.20110117/gdb/f-lang.h 2011-01-17 15:56:23.000000000 +0100
+--- gdb-7.2.90.20110429.orig/gdb/f-lang.h 2011-04-29 09:41:15.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/f-lang.h 2011-04-29 09:41:20.000000000 +0200
@@ -52,36 +52,8 @@ enum f90_range_type
NONE_BOUND_DEFAULT /* "(low:high)" */
};
@@ -185,10 +185,10 @@ Index: gdb-7.2.50.20110117/gdb/f-lang.h
/* When reasonable array bounds cannot be fetched, such as when
you ask to 'mt print symbols' and there is no stack frame and
-Index: gdb-7.2.50.20110117/gdb/f-valprint.c
+Index: gdb-7.2.90.20110429/gdb/f-valprint.c
===================================================================
---- gdb-7.2.50.20110117.orig/gdb/f-valprint.c 2011-01-17 15:54:36.000000000 +0100
-+++ gdb-7.2.50.20110117/gdb/f-valprint.c 2011-01-17 15:59:38.000000000 +0100
+--- gdb-7.2.90.20110429.orig/gdb/f-valprint.c 2011-04-29 09:41:15.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/f-valprint.c 2011-04-29 09:41:20.000000000 +0200
@@ -34,6 +34,8 @@
#include "gdbcore.h"
#include "command.h"
@@ -198,7 +198,7 @@ Index: gdb-7.2.50.20110117/gdb/f-valprint.c
extern void _initialize_f_valprint (void);
static void info_common_command (char *, int);
-@@ -489,22 +491,54 @@ f_val_print (struct type *type, const gd
+@@ -501,22 +503,54 @@ f_val_print (struct type *type, const gd
return 0;
}
@@ -266,7 +266,7 @@ Index: gdb-7.2.50.20110117/gdb/f-valprint.c
}
/* This function is used to print out the values in a given COMMON
-@@ -514,11 +548,9 @@ list_all_visible_commons (char *funname)
+@@ -526,11 +560,9 @@ list_all_visible_commons (char *funname)
static void
info_common_command (char *comname, int from_tty)
{
@@ -280,7 +280,7 @@ Index: gdb-7.2.50.20110117/gdb/f-valprint.c
/* We have been told to display the contents of F77 COMMON
block supposedly visible in this function. Let us
-@@ -530,74 +562,31 @@ info_common_command (char *comname, int
+@@ -542,74 +574,31 @@ info_common_command (char *comname, int
/* The following is generally ripped off from stack.c's routine
print_frame_info(). */
@@ -371,11 +371,11 @@ Index: gdb-7.2.50.20110117/gdb/f-valprint.c
}
void
-Index: gdb-7.2.50.20110117/gdb/stack.c
+Index: gdb-7.2.90.20110429/gdb/stack.c
===================================================================
---- gdb-7.2.50.20110117.orig/gdb/stack.c 2011-01-17 15:47:37.000000000 +0100
-+++ gdb-7.2.50.20110117/gdb/stack.c 2011-01-17 15:56:23.000000000 +0100
-@@ -1498,6 +1498,8 @@ iterate_over_block_locals (struct block
+--- gdb-7.2.90.20110429.orig/gdb/stack.c 2011-04-29 09:40:46.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/stack.c 2011-04-29 09:41:20.000000000 +0200
+@@ -1525,6 +1525,8 @@ iterate_over_block_locals (struct block
case LOC_COMPUTED:
if (SYMBOL_IS_ARGUMENT (sym))
break;
@@ -384,26 +384,26 @@ Index: gdb-7.2.50.20110117/gdb/stack.c
(*cb) (SYMBOL_PRINT_NAME (sym), sym, cb_data);
break;
-Index: gdb-7.2.50.20110117/gdb/symtab.h
+Index: gdb-7.2.90.20110429/gdb/symtab.h
===================================================================
---- gdb-7.2.50.20110117.orig/gdb/symtab.h 2011-01-17 15:47:37.000000000 +0100
-+++ gdb-7.2.50.20110117/gdb/symtab.h 2011-01-17 15:56:23.000000000 +0100
-@@ -408,7 +408,10 @@ typedef enum domain_enum_tag
- FUNCTIONS_DOMAIN,
+--- gdb-7.2.90.20110429.orig/gdb/symtab.h 2011-04-29 09:40:46.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/symtab.h 2011-04-29 09:42:17.000000000 +0200
+@@ -411,7 +411,10 @@ typedef enum domain_enum_tag
+ TYPES_DOMAIN,
- /* All defined types */
-- TYPES_DOMAIN
-+ TYPES_DOMAIN,
+ /* Any type. */
+- ALL_DOMAIN
++ ALL_DOMAIN,
+
+ /* Fortran common blocks. Their naming must be separate from VAR_DOMAIN. */
+ COMMON_BLOCK_DOMAIN
}
domain_enum;
-Index: gdb-7.2.50.20110117/gdb/testsuite/gdb.fortran/common-block.exp
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/common-block.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.2.50.20110117/gdb/testsuite/gdb.fortran/common-block.exp 2011-01-17 15:56:23.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/common-block.exp 2011-04-29 09:41:20.000000000 +0200
@@ -0,0 +1,101 @@
+# Copyright 2008 Free Software Foundation, Inc.
+
@@ -506,10 +506,10 @@ Index: gdb-7.2.50.20110117/gdb/testsuite/gdb.fortran/common-block.exp
+gdb_test "p ix_x" " = 1 *" "p ix_x in"
+gdb_test "p iy_y" " = 2 *" "p iy_y in"
+gdb_test "p iz_z2" " = 3 *" "p iz_z2 in"
-Index: gdb-7.2.50.20110117/gdb/testsuite/gdb.fortran/common-block.f90
+Index: gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/common-block.f90
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.2.50.20110117/gdb/testsuite/gdb.fortran/common-block.f90 2011-01-17 15:56:23.000000000 +0100
++++ gdb-7.2.90.20110429/gdb/testsuite/gdb.fortran/common-block.f90 2011-04-29 09:41:20.000000000 +0200
@@ -0,0 +1,67 @@
+! Copyright 2008 Free Software Foundation, Inc.
+!
diff --git a/gdb-optim-g-prologue-skip.patch b/gdb-optim-g-prologue-skip.patch
new file mode 100644
index 0000000..1daab13
--- /dev/null
+++ b/gdb-optim-g-prologue-skip.patch
@@ -0,0 +1,830 @@
+http://sourceware.org/ml/gdb-patches/2011-04/msg00229.html
+Subject: [rfc, 7.3?] -O2 -g breakpoints internal error + prologue skipping
+
+[ Backported. ]
+
+Hi,
+
+obsoletes my:
+ [patch] Fix internal error on some -O2 -g breakpoints
+ http://sourceware.org/ml/gdb-patches/2010-07/msg00533.html
+and IMO also Paul's:
+ [patch] Fix for PR gdb/12573
+ http://sourceware.org/ml/gdb-patches/2011-03/msg00883.html
+it is an improvement of:
+ [patch] Do not skip prologue for -O2 -g with GCC VTA Re: [patch] Fix for PR gdb/12573
+ http://sourceware.org/ml/gdb-patches/2011-03/msg01129.html
+
+Just the removal of gdb_assert may place the breakpoints on -O2 -g code too
+late. IMO on `(gdb) break Bar::Bar' no real inferior modification should
+happen while with the Paul's reproducer in the PR the `free(malloc(1));' line
+is already executed when GDB stops. This over-execution is tested in the
+attached artificial reproducer by the testcase "no statement got executed".
+
+There are several issues of this patch:
+
+#1 The two-pass complicated execution in skip_prologue_sal currently has no
+effect as the functionality depending on it does not work now. But that is
+a separate new Bug and the two passes will be needed after its fix:
+ regression by physname: PE32 prologue skip vs. static initializers
+ http://sourceware.org/bugzilla/show_bug.cgi?id=12680
+
+#2 A conservative approach has been taken. The problematic prologue skipping
+is disabled only if .debug_loc reference is found which proves -O2 (with -g).
+ This test is imperfect as there may exist optimized debug code not using
+ any location list and still facing inlining issues if handled as
+ unoptimized code. For a future better test see GCC PR other/32998.
+ GCC PR other/32998 = -frecord-gcc-switches issues, Status: NEW
+The opposite option would be to keep the prologue skipping enabled only if
+there is any DW_AT_location(DW_OP_fbreg(x)). I haven't tested this way, it
+seems very intrusive to me. In practice I doubt there will be a real world
+case of -O2 -g CU not referencing .debug_loc - such as if all its code accesses
+only global variables and has no local variables. Just the testcase originally
+was such a countercase CU. :-/ The GDB internal error is kept in place as it
+still can happen in such case, this problem is not yet fully fixed.
+
+#3 Whether a .debug_loc reference may be present with still invalid
+DW_AT_location before prologue I do not know, it does not seem to happen for
+GCC. There is currently no DW_AT_producer check. Even before VTA (Variable
+Tracking Assignments, since FSF GCC 4.5, -O2 -g variables DW_AT_location
+improvement) it seems to me the validity at function entry point worked well
+enough.
+
+#4 This whole problems appears only with involvement of inlined code, either
+explicitly or implicitly. But GDB does not support inlined code breakpoints
+well (PR breakpoints/10738, RH BZ#149125). When one plays with testing this
+patch various suitable breakpoints are not placed but AFAIK all of them are in
+the scope of the PR 10738.
+
+#5 If function does not start is not on a line boundary the multi-location
+breakpoints are already not found properly and everything fails. I do not
+think it can ever happen in real world. Even for a singe-line code
+ void f (void) {} void g (void) {}
+GCC places there multiple line markers - -O2 -g, duplicity is for prologues:
+File name Line number Starting address
+1.c 1 0
+1.c 1 0
+1.c 1 0x10
+1.c 1 0x10
+
+
+Whether this should go for 7.3 I am not sure. The simple removal of
+gdb_assert looks nice, GDB does not crash. But GDB behaves wrong and `break
+func' may not stop before a crash there at all etc.
+
+No regressions on {x86_64,x86_64-m32,i686}-fedora15-linux-gnu.
+
+I will to commit it without any review/discussion.
+
+
+Thanks,
+Jan
+
+
+gdb/
+2011-04-15 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwarf2read.c (struct dwarf2_cu): New field has_loclist.
+ (process_full_comp_unit): Set also symtab->locations_valid. Move the
+ symtab->language code.
+ (var_decode_location): Set cu->has_loclist.
+ * symtab.c (skip_prologue_sal): New variables saved_pc, force_skip and
+ skip. Intialize force_skip from locations_valid. Move the prologue
+ skipping code into two passes.
+ * symtab.h (struct symtab): Make the primary field a bitfield. New
+ field locations_valid.
+
+gdb/testsuite/
+2011-04-15 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * gdb.dwarf2/dw2-skip-prologue.S: New file.
+ * gdb.dwarf2/dw2-skip-prologue.c: New file.
+ * gdb.dwarf2/dw2-skip-prologue.exp: New file.
+
+--- a/gdb/dwarf2read.c
++++ b/gdb/dwarf2read.c
+@@ -396,6 +396,13 @@ struct dwarf2_cu
+ DIEs for namespaces, we don't need to try to infer them
+ from mangled names. */
+ unsigned int has_namespace_info : 1;
++
++ /* This CU references .debug_loc. See the symtab->locations_valid field.
++ This test is imperfect as there may exist optimized debug code not using
++ any location list and still facing inlining issues if handled as
++ unoptimized code. For a future better test see GCC PR other/32998. */
++
++ unsigned int has_loclist : 1;
+ };
+
+ /* Persistent data held for a compilation unit, even when not
+@@ -4654,13 +4661,15 @@ process_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
+
+ symtab = end_symtab (highpc + baseaddr, objfile, SECT_OFF_TEXT (objfile));
+
+- /* Set symtab language to language from DW_AT_language.
+- If the compilation is from a C file generated by language preprocessors,
+- do not set the language if it was already deduced by start_subfile. */
+- if (symtab != NULL
+- && !(cu->language == language_c && symtab->language != language_c))
++ if (symtab != NULL)
+ {
+- symtab->language = cu->language;
++ /* Set symtab language to language from DW_AT_language. If the
++ compilation is from a C file generated by language preprocessors, do
++ not set the language if it was already deduced by start_subfile. */
++ if (!(cu->language == language_c && symtab->language != language_c))
++ symtab->language = cu->language;
++
++ symtab->locations_valid = cu->has_loclist;
+ }
+
+ if (dwarf2_per_objfile->using_index)
+@@ -11221,6 +11230,9 @@ var_decode_location (struct attribute *a
+
+ SYMBOL_CLASS (sym) = LOC_COMPUTED;
+ dwarf2_symbol_mark_computed (attr, sym, cu);
++
++ if (SYMBOL_COMPUTED_OPS (sym) == &dwarf2_loclist_funcs)
++ cu->has_loclist = 1;
+ }
+
+ /* Given a pointer to a DWARF information entry, figure out if we need
+--- a/gdb/symtab.c
++++ b/gdb/symtab.c
+@@ -2454,12 +2454,13 @@ skip_prologue_sal (struct symtab_and_line *sal)
+ struct symbol *sym;
+ struct symtab_and_line start_sal;
+ struct cleanup *old_chain;
+- CORE_ADDR pc;
++ CORE_ADDR pc, saved_pc;
+ struct obj_section *section;
+ const char *name;
+ struct objfile *objfile;
+ struct gdbarch *gdbarch;
+ struct block *b, *function_block;
++ int force_skip, skip;
+
+ /* Do not change the SAL is PC was specified explicitly. */
+ if (sal->explicit_pc)
+@@ -2497,46 +2498,69 @@ skip_prologue_sal (struct symtab_and_line *sal)
+
+ gdbarch = get_objfile_arch (objfile);
+
+- /* If the function is in an unmapped overlay, use its unmapped LMA address,
+- so that gdbarch_skip_prologue has something unique to work on. */
+- if (section_is_overlay (section) && !section_is_mapped (section))
+- pc = overlay_unmapped_address (pc, section);
++ /* Process the prologue in two passes. In the first pass try to skip the
++ prologue (SKIP is true) and verify there is a real need for it (indicated
++ by FORCE_SKIP). If no such reason was found run a second pass where the
++ prologue is not skipped (SKIP is false). */
+
+- /* Skip "first line" of function (which is actually its prologue). */
+- pc += gdbarch_deprecated_function_start_offset (gdbarch);
+- pc = gdbarch_skip_prologue (gdbarch, pc);
++ skip = 1;
++ force_skip = 1;
+
+- /* For overlays, map pc back into its mapped VMA range. */
+- pc = overlay_mapped_address (pc, section);
++ /* Be conservative - allow direct PC (without skipping prologue) only if we
++ have proven the CU (Compilation Unit) supports it. sal->SYMTAB does not
++ have to be set by the caller so we use SYM instead. */
++ if (sym && SYMBOL_SYMTAB (sym)->locations_valid)
++ force_skip = 0;
+
+- /* Calculate line number. */
+- start_sal = find_pc_sect_line (pc, section, 0);
+-
+- /* Check if gdbarch_skip_prologue left us in mid-line, and the next
+- line is still part of the same function. */
+- if (start_sal.pc != pc
+- && (sym? (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) <= start_sal.end
+- && start_sal.end < BLOCK_END (SYMBOL_BLOCK_VALUE (sym)))
+- : (lookup_minimal_symbol_by_pc_section (start_sal.end, section)
+- == lookup_minimal_symbol_by_pc_section (pc, section))))
++ saved_pc = pc;
++ do
+ {
+- /* First pc of next line */
+- pc = start_sal.end;
+- /* Recalculate the line number (might not be N+1). */
+- start_sal = find_pc_sect_line (pc, section, 0);
+- }
++ pc = saved_pc;
+
+- /* On targets with executable formats that don't have a concept of
+- constructors (ELF with .init has, PE doesn't), gcc emits a call
+- to `__main' in `main' between the prologue and before user
+- code. */
+- if (gdbarch_skip_main_prologue_p (gdbarch)
+- && name && strcmp (name, "main") == 0)
+- {
+- pc = gdbarch_skip_main_prologue (gdbarch, pc);
+- /* Recalculate the line number (might not be N+1). */
++ /* If the function is in an unmapped overlay, use its unmapped LMA address,
++ so that gdbarch_skip_prologue has something unique to work on. */
++ if (section_is_overlay (section) && !section_is_mapped (section))
++ pc = overlay_unmapped_address (pc, section);
++
++ /* Skip "first line" of function (which is actually its prologue). */
++ pc += gdbarch_deprecated_function_start_offset (gdbarch);
++ if (skip)
++ pc = gdbarch_skip_prologue (gdbarch, pc);
++
++ /* For overlays, map pc back into its mapped VMA range. */
++ pc = overlay_mapped_address (pc, section);
++
++ /* Calculate line number. */
+ start_sal = find_pc_sect_line (pc, section, 0);
++
++ /* Check if gdbarch_skip_prologue left us in mid-line, and the next
++ line is still part of the same function. */
++ if (skip && start_sal.pc != pc
++ && (sym? (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) <= start_sal.end
++ && start_sal.end < BLOCK_END (SYMBOL_BLOCK_VALUE (sym)))
++ : (lookup_minimal_symbol_by_pc_section (start_sal.end, section)
++ == lookup_minimal_symbol_by_pc_section (pc, section))))
++ {
++ /* First pc of next line */
++ pc = start_sal.end;
++ /* Recalculate the line number (might not be N+1). */
++ start_sal = find_pc_sect_line (pc, section, 0);
++ }
++
++ /* On targets with executable formats that don't have a concept of
++ constructors (ELF with .init has, PE doesn't), gcc emits a call
++ to `__main' in `main' between the prologue and before user
++ code. */
++ if (gdbarch_skip_main_prologue_p (gdbarch)
++ && name && strcmp (name, "main") == 0)
++ {
++ pc = gdbarch_skip_main_prologue (gdbarch, pc);
++ /* Recalculate the line number (might not be N+1). */
++ start_sal = find_pc_sect_line (pc, section, 0);
++ force_skip = 1;
++ }
+ }
++ while (!force_skip && skip--);
+
+ /* If we still don't have a valid source line, try to find the first
+ PC in the lineinfo table that belongs to the same function. This
+@@ -2546,7 +2570,7 @@ skip_prologue_sal (struct symtab_and_line *sal)
+ the case with the DJGPP target using "gcc -gcoff" when the
+ compiler inserted code after the prologue to make sure the stack
+ is aligned. */
+- if (sym && start_sal.symtab == NULL)
++ if (!force_skip && sym && start_sal.symtab == NULL)
+ {
+ pc = skip_prologue_using_lineinfo (pc, SYMBOL_SYMTAB (sym));
+ /* Recalculate the line number. */
+--- a/gdb/symtab.h
++++ b/gdb/symtab.h
+@@ -767,7 +767,13 @@ struct symtab
+ should be designated the primary, so that the blockvector
+ is relocated exactly once by objfile_relocate. */
+
+- int primary;
++ unsigned int primary : 1;
++
++ /* Symtab has been compiled with both optimizations and debug info so that
++ GDB may stop skipping prologues as variables locations are valid already
++ at function entry points. */
++
++ unsigned int locations_valid : 1;
+
+ /* The macro table for this symtab. Like the blockvector, this
+ may be shared between different symtabs --- and normally is for
+--- /dev/null
++++ b/gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.S
+@@ -0,0 +1,391 @@
++/* This testcase is part of GDB, the GNU debugger.
++
++ Copyright 2011 Free Software Foundation, Inc.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 3 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>. */
++
++ .section .debug_info
++.Lcu1_begin:
++ /* CU header */
++ .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */
++.Lcu1_start:
++ .2byte 2 /* DWARF Version */
++ .4byte .Labbrev1_begin /* Offset into abbrev section */
++ .byte 4 /* Pointer size */
++
++ /* CU die */
++ .uleb128 1 /* Abbrev: DW_TAG_compile_unit */
++ .4byte .Lline1_begin /* DW_AT_stmt_list */
++ .4byte func_start /* DW_AT_low_pc */
++ .4byte func_end /* DW_AT_high_pc */
++ .ascii "main.c\0" /* DW_AT_name */
++ .ascii "GNU C 3.3.3\0" /* DW_AT_producer */
++ .byte 2 /* DW_AT_language (DW_LANG_C) */
++
++ .uleb128 2 /* Abbrev: DW_TAG_subprogram */
++ .byte 1 /* DW_AT_external */
++ .ascii "func\0" /* DW_AT_name */
++ .4byte .Ltype_int-.Lcu1_begin /* DW_AT_type */
++ .4byte func_start /* DW_AT_low_pc */
++ .4byte func_end /* DW_AT_high_pc */
++
++/* GDB `has_loclist' detection of -O2 -g code needs to see a DW_AT_location
++ location list. There may exist -O2 -g CUs still not needing/using any such
++ location list - exactly like this CU. Make one up. */
++
++ .uleb128 0x7 /* (DIE (0x42) DW_TAG_formal_parameter) */
++ .ascii "param\0" /* DW_AT_name */
++ .long .Ltype_int - .Lcu1_begin /* DW_AT_type */
++ .long loclist /* DW_AT_location */
++
++ .uleb128 4 /* Abbrev: DW_TAG_inlined_subroutine */
++ .ascii "inlined\0" /* DW_AT_name */
++ .4byte func0 /* DW_AT_low_pc */
++ .4byte func1 /* DW_AT_high_pc */
++ .byte 3 /* DW_AT_inline (DW_INL_declared_inlined) */
++ .byte 1 /* DW_AT_call_file */
++ .byte 8 /* DW_AT_call_line */
++
++ .uleb128 4 /* Abbrev: DW_TAG_inlined_subroutine */
++ .ascii "inlined2\0" /* DW_AT_name */
++ .4byte func2 /* DW_AT_low_pc */
++ .4byte func3 /* DW_AT_high_pc */
++ .byte 3 /* DW_AT_inline (DW_INL_declared_inlined) */
++ .byte 1 /* DW_AT_call_file */
++ .byte 11 /* DW_AT_call_line */
++
++#ifdef INLINED
++ .uleb128 4 /* Abbrev: DW_TAG_inlined_subroutine */
++ .ascii "otherinline\0" /* DW_AT_name */
++ .4byte func3 /* DW_AT_low_pc */
++ .4byte func_end /* DW_AT_high_pc */
++ .byte 3 /* DW_AT_inline (DW_INL_declared_inlined) */
++ .byte 1 /* DW_AT_call_file */
++ .byte 9 /* DW_AT_call_line */
++#endif
++
++#ifdef LEXICAL
++ .uleb128 5 /* Abbrev: DW_TAG_lexical_block */
++ .4byte func3 /* DW_AT_low_pc */
++ .4byte func_end /* DW_AT_high_pc */
++
++ /* GDB would otherwise ignore the DW_TAG_lexical_block. */
++ .uleb128 6 /* Abbrev: DW_TAG_variable */
++ .ascii "lexicalvar\0" /* DW_AT_name */
++ .4byte .Ltype_int-.Lcu1_begin /* DW_AT_type */
++
++ .byte 0 /* End of children of DW_TAG_lexical_block */
++#endif
++
++ .byte 0 /* End of children of DW_TAG_subprogram */
++
++/* Simulate `fund' is also named `func' so that the function name matches and
++ fund's SAL is not discarded in expand_line_sal_maybe. */
++
++ .uleb128 2 /* Abbrev: DW_TAG_subprogram */
++ .byte 1 /* DW_AT_external */
++ .ascii "func\0" /* DW_AT_name */
++ .4byte .Ltype_int-.Lcu1_begin /* DW_AT_type */
++ .4byte fund_start /* DW_AT_low_pc */
++ .4byte fund_end /* DW_AT_high_pc */
++
++ .byte 0 /* End of children of DW_TAG_subprogram */
++
++.Ltype_int:
++ .uleb128 3 /* Abbrev: DW_TAG_base_type */
++ .ascii "int\0" /* DW_AT_name */
++ .byte 4 /* DW_AT_byte_size */
++ .byte 5 /* DW_AT_encoding */
++
++ .byte 0 /* End of children of CU */
++
++.Lcu1_end:
++
++ .section .debug_loc
++loclist:
++ /* Reset the location list base address first. */
++ .long -1, 0
++
++ .long func_start, func_end
++ .2byte 2f-1f
++1: .byte 0x50 /* DW_OP_reg0 */
++2:
++ /* Location list end. */
++ .long 0, 0
++
++/* Abbrev table */
++ .section .debug_abbrev
++.Labbrev1_begin:
++ .uleb128 1 /* Abbrev code */
++ .uleb128 0x11 /* DW_TAG_compile_unit */
++ .byte 1 /* has_children */
++ .uleb128 0x10 /* DW_AT_stmt_list */
++ .uleb128 0x6 /* DW_FORM_data4 */
++ .uleb128 0x11 /* DW_AT_low_pc */
++ .uleb128 0x1 /* DW_FORM_addr */
++ .uleb128 0x12 /* DW_AT_high_pc */
++ .uleb128 0x1 /* DW_FORM_addr */
++ .uleb128 0x3 /* DW_AT_name */
++ .uleb128 0x8 /* DW_FORM_string */
++ .uleb128 0x25 /* DW_AT_producer */
++ .uleb128 0x8 /* DW_FORM_string */
++ .uleb128 0x13 /* DW_AT_language */
++ .uleb128 0xb /* DW_FORM_data1 */
++ .byte 0x0 /* Terminator */
++ .byte 0x0 /* Terminator */
++
++ .uleb128 2 /* Abbrev code */
++ .uleb128 0x2e /* DW_TAG_subprogram */
++ .byte 1 /* has_children */
++ .uleb128 0x3f /* DW_AT_external */
++ .uleb128 0xc /* DW_FORM_flag */
++ .uleb128 0x3 /* DW_AT_name */
++ .uleb128 0x8 /* DW_FORM_string */
++ .uleb128 0x49 /* DW_AT_type */
++ .uleb128 0x13 /* DW_FORM_ref4 */
++ .uleb128 0x11 /* DW_AT_low_pc */
++ .uleb128 0x1 /* DW_FORM_addr */
++ .uleb128 0x12 /* DW_AT_high_pc */
++ .uleb128 0x1 /* DW_FORM_addr */
++ .byte 0x0 /* Terminator */
++ .byte 0x0 /* Terminator */
++
++ .uleb128 3 /* Abbrev code */
++ .uleb128 0x24 /* DW_TAG_base_type */
++ .byte 0 /* has_children */
++ .uleb128 0x3 /* DW_AT_name */
++ .uleb128 0x8 /* DW_FORM_string */
++ .uleb128 0xb /* DW_AT_byte_size */
++ .uleb128 0xb /* DW_FORM_data1 */
++ .uleb128 0x3e /* DW_AT_encoding */
++ .uleb128 0xb /* DW_FORM_data1 */
++ .byte 0x0 /* Terminator */
++ .byte 0x0 /* Terminator */
++
++ .uleb128 4 /* Abbrev code */
++ .uleb128 0x1d /* DW_TAG_inlined_subroutine */
++ .byte 0 /* has_children */
++ .uleb128 0x3 /* DW_AT_name */
++ .uleb128 0x8 /* DW_FORM_string */
++ .uleb128 0x11 /* DW_AT_low_pc */
++ .uleb128 0x1 /* DW_FORM_addr */
++ .uleb128 0x12 /* DW_AT_high_pc */
++ .uleb128 0x1 /* DW_FORM_addr */
++ .uleb128 0x20 /* DW_AT_inline */
++ .uleb128 0xb /* DW_FORM_data1 */
++ .uleb128 0x58 /* DW_AT_call_file */
++ .uleb128 0xb /* DW_FORM_data1 */
++ .uleb128 0x59 /* DW_AT_call_line */
++ .uleb128 0xb /* DW_FORM_data1 */
++ .byte 0x0 /* Terminator */
++ .byte 0x0 /* Terminator */
++
++ .uleb128 5 /* Abbrev code */
++ .uleb128 0x0b /* DW_TAG_lexical_block */
++ .byte 1 /* has_children */
++ .uleb128 0x11 /* DW_AT_low_pc */
++ .uleb128 0x1 /* DW_FORM_addr */
++ .uleb128 0x12 /* DW_AT_high_pc */
++ .uleb128 0x1 /* DW_FORM_addr */
++ .byte 0x0 /* Terminator */
++ .byte 0x0 /* Terminator */
++
++ .uleb128 6 /* Abbrev code */
++ .uleb128 0x34 /* DW_TAG_variable */
++ .byte 0 /* has_children */
++ .uleb128 0x3 /* DW_AT_name */
++ .uleb128 0x8 /* DW_FORM_string */
++ .uleb128 0x49 /* DW_AT_type */
++ .uleb128 0x13 /* DW_FORM_ref4 */
++ .byte 0x0 /* Terminator */
++ .byte 0x0 /* Terminator */
++
++ .uleb128 0x7 /* (abbrev code) */
++ .uleb128 0x5 /* (TAG: DW_TAG_formal_parameter) */
++ .byte 0x0 /* DW_children_no */
++ .uleb128 0x3 /* DW_AT_name */
++ .uleb128 0x8 /* DW_FORM_string */
++ .uleb128 0x49 /* (DW_AT_type) */
++ .uleb128 0x13 /* (DW_FORM_ref4) */
++ .uleb128 0x02 /* (DW_AT_location) */
++ .uleb128 0x06 /* (DW_FORM_data4) */
++ .byte 0x0
++ .byte 0x0
++
++ .byte 0x0 /* Terminator */
++ .byte 0x0 /* Terminator */
++
++/* Line table */
++ .section .debug_line
++.Lline1_begin:
++ .4byte .Lline1_end - .Lline1_start /* Initial length */
++.Lline1_start:
++ .2byte 2 /* Version */
++ .4byte .Lline1_lines - .Lline1_hdr /* header_length */
++.Lline1_hdr:
++ .byte 1 /* Minimum insn length */
++ .byte 1 /* default_is_stmt */
++ .byte 1 /* line_base */
++ .byte 1 /* line_range */
++ .byte 0x10 /* opcode_base */
++
++ /* Standard lengths */
++ .byte 0
++ .byte 1
++ .byte 1
++ .byte 1
++ .byte 1
++ .byte 0
++ .byte 0
++ .byte 0
++ .byte 1
++ .byte 0
++ .byte 0
++ .byte 1
++ .byte 0
++ .byte 0
++ .byte 0
++
++ /* Include directories */
++ .byte 0
++
++ /* File names */
++ .ascii "main.c\0"
++ .uleb128 0
++ .uleb128 0
++ .uleb128 0
++
++ .ascii "other.c\0"
++ .uleb128 0
++ .uleb128 0
++ .uleb128 0
++
++ .byte 0
++
++.Lline1_lines:
++ .byte 0 /* DW_LNE_set_address */
++ .uleb128 5
++ .byte 2
++ .4byte func_start
++ .byte 3 /* DW_LNS_advance_line */
++ .sleb128 4 /* ... to 5 */
++ .byte 1 /* DW_LNS_copy */
++
++ .byte 0 /* DW_LNE_set_address */
++ .uleb128 5
++ .byte 2
++ .4byte func0
++ .byte 4 /* DW_LNS_set_file */
++ .uleb128 2
++ .byte 3 /* DW_LNS_advance_line */
++ .sleb128 -4 /* ... to 1 */
++ .byte 1 /* DW_LNS_copy */
++
++ .byte 0 /* DW_LNE_set_address */
++ .uleb128 5
++ .byte 2
++ .4byte func1
++ .byte 4 /* DW_LNS_set_file */
++ .uleb128 1
++ .byte 3 /* DW_LNS_advance_line */
++ .sleb128 8 /* ... to 9 */
++ .byte 1 /* DW_LNS_copy */
++
++ .byte 0 /* DW_LNE_set_address */
++ .uleb128 5
++ .byte 2
++ .4byte func2
++ .byte 4 /* DW_LNS_set_file */
++ .uleb128 2
++ .byte 3 /* DW_LNS_advance_line */
++ .sleb128 -8 /* ... to 1 */
++ .byte 1 /* DW_LNS_copy */
++
++ .byte 0 /* DW_LNE_set_address */
++ .uleb128 5
++ .byte 2
++ .4byte func3
++ .byte 4 /* DW_LNS_set_file */
++ .uleb128 1
++ .byte 3 /* DW_LNS_advance_line */
++ .sleb128 8 /* ... to 9 */
++ .byte 1 /* DW_LNS_copy */
++
++ .byte 0 /* DW_LNE_set_address */
++ .uleb128 5
++ .byte 2
++ .4byte func_end
++
++/* Equivalent copy but renamed s/func/fund/. */
++
++ .byte 0 /* DW_LNE_set_address */
++ .uleb128 5
++ .byte 2
++ .4byte fund_start
++ .byte 3 /* DW_LNS_advance_line */
++ .sleb128 -4 /* ... to 5 */
++ .byte 1 /* DW_LNS_copy */
++
++ .byte 0 /* DW_LNE_set_address */
++ .uleb128 5
++ .byte 2
++ .4byte fund0
++ .byte 4 /* DW_LNS_set_file */
++ .uleb128 2
++ .byte 3 /* DW_LNS_advance_line */
++ .sleb128 -4 /* ... to 1 */
++ .byte 1 /* DW_LNS_copy */
++
++ .byte 0 /* DW_LNE_set_address */
++ .uleb128 5
++ .byte 2
++ .4byte fund1
++ .byte 4 /* DW_LNS_set_file */
++ .uleb128 1
++ .byte 3 /* DW_LNS_advance_line */
++ .sleb128 8 /* ... to 9 */
++ .byte 1 /* DW_LNS_copy */
++
++ .byte 0 /* DW_LNE_set_address */
++ .uleb128 5
++ .byte 2
++ .4byte fund2
++ .byte 4 /* DW_LNS_set_file */
++ .uleb128 2
++ .byte 3 /* DW_LNS_advance_line */
++ .sleb128 -8 /* ... to 1 */
++ .byte 1 /* DW_LNS_copy */
++
++ .byte 0 /* DW_LNE_set_address */
++ .uleb128 5
++ .byte 2
++ .4byte fund3
++ .byte 4 /* DW_LNS_set_file */
++ .uleb128 1
++ .byte 3 /* DW_LNS_advance_line */
++ .sleb128 8 /* ... to 9 */
++ .byte 1 /* DW_LNS_copy */
++
++ .byte 0 /* DW_LNE_set_address */
++ .uleb128 5
++ .byte 2
++ .4byte fund_end
++
++/* Line numbering end. */
++
++ .byte 0 /* DW_LNE_end_of_sequence */
++ .uleb128 1
++ .byte 1
++
++.Lline1_end:
+--- /dev/null
++++ b/gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.c
+@@ -0,0 +1,58 @@
++/* This testcase is part of GDB, the GNU debugger.
++
++ Copyright 2011 Free Software Foundation, Inc.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 3 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>. */
++
++static volatile int v;
++
++asm ("func_start: .globl func_start\n");
++static int
++func (void)
++{
++ v++;
++asm ("func0: .globl func0\n");
++ v++;
++asm ("func1: .globl func1\n");
++ v++;
++asm ("func2: .globl func2\n");
++ v++;
++asm ("func3: .globl func3\n");
++ return v;
++}
++asm ("func_end: .globl func_end\n");
++
++/* Equivalent copy but renamed s/func/fund/. */
++
++asm ("fund_start: .globl fund_start\n");
++static int
++fund (void)
++{
++ v++;
++asm ("fund0: .globl fund0\n");
++ v++;
++asm ("fund1: .globl fund1\n");
++ v++;
++asm ("fund2: .globl fund2\n");
++ v++;
++asm ("fund3: .globl fund3\n");
++ return v;
++}
++asm ("fund_end: .globl fund_end\n");
++
++int
++main (void)
++{
++ return func () + fund ();
++}
+--- /dev/null
++++ b/gdb/testsuite/gdb.dwarf2/dw2-skip-prologue.exp
+@@ -0,0 +1,74 @@
++# Copyright 2011 Free Software Foundation, Inc.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program. If not, see <http://www.gnu.org/licenses/>.
++load_lib dwarf.exp
++
++# Test multiple location breakpoints vs. prologue analysis on -O2 -g code.
++# when the first statement of a function is an inlined function GDB could
++# crash. Map of this testcase:
++#
++# File name Line number Starting address
++# main.c 5 func_start
++# other.c 1 func0
++# `inlined' called at main.c line 8
++# main.c 9 func1
++# func1 = Breakpoint location 1
++# other.c 1 func2
++# `inlined2' called at main.c line 11
++# main.c 9 func3
++# func3 = Breakpoint location 2
++# `otherinline' called at main.c line 9
++# end of main func_end
++
++# This test can only be run on targets which support DWARF-2 and use gas.
++if {![dwarf2_support]} {
++ return 0
++}
++
++set testfile "dw2-skip-prologue"
++set executable ${testfile}
++set binfile ${objdir}/${subdir}/${executable}
++
++if {[build_executable ${testfile}.exp ${executable} "${testfile}.c ${testfile}.S" {additional_flags=-DINLINED}] == -1} {
++ return -1
++}
++
++# We need those symbols global to access them from the .S file.
++set test "strip stub symbols"
++set objcopy_program [transform objcopy]
++set result [catch "exec $objcopy_program \
++ -N func0 -N func1 -N func2 -N func3 -N func_start -N func_end \
++ -N fund0 -N fund1 -N fund2 -N fund3 -N fund -N fund_start \
++ ${binfile}" output]
++verbose "result is $result"
++verbose "output is $output"
++if {$result != 0} {
++ fail $test
++ return
++}
++pass $test
++
++clean_restart $executable
++
++if ![runto_main] {
++ return -1
++}
++
++gdb_breakpoint "func"
++gdb_continue_to_breakpoint "func"
++
++# Sanity check GDB has really found 2 locations
++gdb_test {info break $bpnum} "\r\n2\\.1\[ \t\]\[^\n\]*\r\n2\\.2\[ \t\]\[^\n\]*" "2 locations found"
++
++gdb_test "p v" " = 0" "no statement got executed"
+
diff --git a/gdb-physname-expand-completer.patch b/gdb-physname-expand-completer.patch
new file mode 100644
index 0000000..4d53870
--- /dev/null
+++ b/gdb-physname-expand-completer.patch
@@ -0,0 +1,228 @@
+http://sourceware.org/ml/gdb-patches/2011-04/msg00551.html
+Subject: [patch] physname-related CU expansion issue for C++ (PR 12708)
+
+Hi,
+
+http://sourceware.org/bugzilla/show_bug.cgi?id=12708#c1
+
+The dependency on CU expansion is a physname regression.
+But the feature of originally-typed-parameters symbols was not present before
+physname at all so it is rather buggy-feature than a regression.
+
+for
+typedef int int_typedef;
+void f (int_typedef x) {}
+
+gdb -nx ./1b.o -ex 'set language c++' -ex "complete b 'f(" -ex q
+
++ prephysname (42284fdf9d8cdb20c8e833bdbdb2b56977fea525^)
+b 'f(int)
++ prephysname -readnow
+b 'f(int)
+
++ physname (42284fdf9d8cdb20c8e833bdbdb2b56977fea525)
+b 'f(int)
++ physname -readnow
+b 'f(int)
+b 'f(int_typedef)
+
++ HEAD
+b 'f(int)
++ HEAD -readnow
+b 'f(int)
+b 'f(int_typedef)
+
+
+This is another issue from the fact that partial symtabs (and even gdbindex)
+no longer contain parameters as before. 'f(' can never be found any partial
+symtabs, only `f' will be present there.
+
+No regressions on {x86_64,x86_64-m32,i686}-fedora15-linux-gnu.
+
+
+Thanks,
+Jan
+
+
+gdb/
+2011-04-28 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+
+ * symtab.c (compare_symbol_name): New function.
+ (completion_list_add_name, expand_partial_symbol_name): Call it,
+ remove the variable ncmp.
+ (default_make_symbol_completion_list_break_on): Reduce SYM_TEXT_LEN,
+ gdb_assert it.
+
+Gdb/testsuite/
+2011-04-28 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * gdb.cp/psymtab-parameter.cc: New file.
+ * gdb.cp/psymtab-parameter.exp: New file.
+
+--- a/gdb/symtab.c
++++ b/gdb/symtab.c
+@@ -3489,6 +3489,40 @@ rbreak_command (char *regexp, int from_tty)
+ }
+ \f
+
++/* Evaluate if NAME matches SYM_TEXT and SYM_TEXT_LEN.
++
++ Either sym_text[sym_text_len] != '(' and then we search for any
++ symbol starting with SYM_TEXT text.
++
++ Otherwise sym_text[sym_text_len] == '(' and then we require symbol name to
++ be terminated at that point. Partial symbol tables do not have parameters
++ information. */
++
++static int
++compare_symbol_name (const char *name, const char *sym_text, int sym_text_len)
++{
++ int (*ncmp) (const char *, const char *, size_t);
++
++ ncmp = (case_sensitivity == case_sensitive_on ? strncmp : strncasecmp);
++
++ if (ncmp (name, sym_text, sym_text_len) != 0)
++ return 0;
++
++ if (sym_text[sym_text_len] == '(')
++ {
++ /* User searches for `name(someth...'. Require NAME to be terminated.
++ Normally psymtabs and gdbindex have no parameter types so '\0' will be
++ present but accept even parameters presence. In this case this
++ function is in fact strcmp_iw but whitespace skipping is not supported
++ for tab completion. */
++
++ if (name[sym_text_len] != '\0' && name[sym_text_len] != '(')
++ return 0;
++ }
++
++ return 1;
++}
++
+ /* Helper routine for make_symbol_completion_list. */
+
+ static int return_val_size;
+@@ -3508,16 +3542,10 @@ completion_list_add_name (char *symname, char *sym_text, int sym_text_len,
+ char *text, char *word)
+ {
+ int newsize;
+- int (*ncmp) (const char *, const char *, size_t);
+-
+- ncmp = (case_sensitivity == case_sensitive_on ? strncmp : strncasecmp);
+
+ /* Clip symbols that cannot match. */
+-
+- if (ncmp (symname, sym_text, sym_text_len) != 0)
+- {
+- return;
+- }
++ if (!compare_symbol_name (symname, sym_text, sym_text_len))
++ return;
+
+ /* We have a match for a completion, so add SYMNAME to the current list
+ of matches. Note that the name is moved to freshly malloc'd space. */
+@@ -3707,11 +3735,8 @@ static int
+ expand_partial_symbol_name (const char *name, void *user_data)
+ {
+ struct add_name_data *datum = (struct add_name_data *) user_data;
+- int (*ncmp) (const char *, const char *, size_t);
+-
+- ncmp = (case_sensitivity == case_sensitive_on ? strncmp : strncasecmp);
+
+- return ncmp (name, datum->sym_text, datum->sym_text_len) == 0;
++ return compare_symbol_name (name, datum->sym_text, datum->sym_text_len);
+ }
+
+ char **
+@@ -3790,6 +3815,22 @@ default_make_symbol_completion_list_break_on (char *text, char *word,
+
+ sym_text_len = strlen (sym_text);
+
++ /* Prepare SYM_TEXT_LEN for compare_symbol_name. */
++
++ if (current_language->la_language == language_cplus
++ || current_language->la_language == language_java
++ || current_language->la_language == language_fortran)
++ {
++ /* These languages may have parameters entered by user but they are never
++ present in the partial symbol tables. */
++
++ const char *cs = memchr (sym_text, '(', sym_text_len);
++
++ if (cs)
++ sym_text_len = cs - sym_text;
++ }
++ gdb_assert (sym_text[sym_text_len] == '\0' || sym_text[sym_text_len] == '(');
++
+ return_val_size = 100;
+ return_val_index = 0;
+ return_val = (char **) xmalloc ((return_val_size + 1) * sizeof (char *));
+--- /dev/null
++++ b/gdb/testsuite/gdb.cp/psymtab-parameter.cc
+@@ -0,0 +1,22 @@
++/* This testcase is part of GDB, the GNU debugger.
++
++ Copyright 2009, 2010, 2011 Free Software Foundation, Inc.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 3 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>.
++ */
++
++typedef int typedefed;
++void func (typedefed param)
++{
++}
+--- /dev/null
++++ b/gdb/testsuite/gdb.cp/psymtab-parameter.exp
+@@ -0,0 +1,39 @@
++# Copyright 2011 Free Software Foundation, Inc.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program. If not, see <http://www.gnu.org/licenses/>.
++
++if { [skip_cplus_tests] } { continue }
++
++
++set testfile psymtab-parameter
++set executable ${testfile}.x
++set srcfile ${testfile}.cc
++set binfile ${objdir}/${subdir}/${executable}
++
++if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" object {debug c++}] != "" } {
++ untested ${testfile}.exp
++ return -1
++}
++
++clean_restart $executable
++
++# As `main' is not present GDB fails to find the proper inferior language.
++gdb_test_no_output "set language c++"
++
++# The goal is to keep the CU (Compilation Unit) unexpanded. It would be rather
++# XFAIL than FAIL here. For example -readnow breaks it.
++gdb_test_no_output "maintenance info symtabs"
++
++# GDB has shown only the `func(int)' entry before.
++gdb_test "complete break 'func(" "break 'func\\(int\\)\r\nbreak 'func\\(typedefed\\)"
+
diff --git a/gdb-upstream.patch b/gdb-upstream.patch
new file mode 100644
index 0000000..3d7a95f
--- /dev/null
+++ b/gdb-upstream.patch
@@ -0,0 +1,139 @@
+Fix Python access to inlined frames (BZ 694824).
+http://sourceware.org/ml/gdb-cvs/2011-04/msg00189.html
+
+### src/gdb/ChangeLog 2011/04/27 03:52:20 1.12887.2.14
+### src/gdb/ChangeLog 2011/04/29 07:32:37 1.12887.2.15
+## -1,3 +1,9 @@
++2011-04-29 Jan Kratochvil <jan.kratochvil@redhat.com>
++
++ Fix Python access to inlined frames.
++ * python/py-frame.c (frapy_read_var): Find BLOCK using get_frame_block.
++ * python/py-symbol.c (gdbpy_lookup_symbol): Likewise.
++
+ 2011-04-26 Michael Walle <michael@walle.cc>
+
+ * remote.c (remote_start_remote): Ack packet after sending the
+--- src/gdb/python/py-frame.c 2011/01/26 20:53:45 1.15
++++ src/gdb/python/py-frame.c 2011/04/29 07:32:40 1.15.2.1
+@@ -436,7 +436,7 @@
+ FRAPY_REQUIRE_VALID ((frame_object *) self, frame);
+
+ if (!block)
+- block = block_for_pc (get_frame_address_in_block (frame));
++ block = get_frame_block (frame, NULL);
+ var = lookup_symbol (var_name, block, VAR_DOMAIN, NULL);
+ }
+ GDB_PY_HANDLE_EXCEPTION (except);
+--- src/gdb/python/py-symbol.c 2011/03/17 09:36:16 1.6
++++ src/gdb/python/py-symbol.c 2011/04/29 07:32:40 1.6.2.1
+@@ -275,8 +275,8 @@
+
+ TRY_CATCH (except, RETURN_MASK_ALL)
+ {
+- selected_frame = get_selected_frame (_("No frame selected."));
+- block = block_for_pc (get_frame_address_in_block (selected_frame));
++ selected_frame = get_selected_frame (_("No frame selected."));
++ block = get_frame_block (selected_frame, NULL);
+ }
+ GDB_PY_HANDLE_EXCEPTION (except);
+ }
+### src/gdb/testsuite/ChangeLog 2011/04/25 21:25:18 1.2655.2.4
+### src/gdb/testsuite/ChangeLog 2011/04/29 07:32:40 1.2655.2.5
+## -1,3 +1,9 @@
++2011-04-29 Jan Kratochvil <jan.kratochvil@redhat.com>
++
++ Fix Python access to inlined frames.
++ * gdb.python/py-frame-inline.c: New file.
++ * gdb.python/py-frame-inline.exp: New file.
++
+ 2011-04-25 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * gdb.base/gdbindex-stabs-dwarf.c: New file.
+--- src/gdb/testsuite/gdb.python/py-frame-inline.c
++++ src/gdb/testsuite/gdb.python/py-frame-inline.c 2011-04-29 07:33:45.912552000 +0000
+@@ -0,0 +1,43 @@
++/* This test is part of GDB, the GNU debugger.
++
++ Copyright 2011 Free Software Foundation, Inc.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 3 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program. If not, see <http://www.gnu.org/licenses/>. */
++
++volatile int v = 42;
++
++__attribute__((__always_inline__)) static int
++f (void)
++{
++ /* Provide first stub line so that GDB understand the PC is already inside
++ the inlined function and does not expect a step into it. */
++ v++;
++ v++; /* break-here */
++
++ return v;
++}
++
++__attribute__((__noinline__)) static int
++g (void)
++{
++ volatile int l = v;
++
++ return f ();
++}
++
++int
++main (void)
++{
++ return g ();
++}
+--- src/gdb/testsuite/gdb.python/py-frame-inline.exp
++++ src/gdb/testsuite/gdb.python/py-frame-inline.exp 2011-04-29 07:33:46.649817000 +0000
+@@ -0,0 +1,39 @@
++# Copyright (C) 2011 Free Software Foundation, Inc.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program. If not, see <http://www.gnu.org/licenses/>.
++
++load_lib gdb-python.exp
++
++set testfile "py-frame-inline"
++set srcfile ${testfile}.c
++if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } {
++ return -1
++}
++
++# Skip all tests if Python scripting is not enabled.
++if { [skip_python_tests] } { continue }
++
++if ![runto main] then {
++ fail "Can't run to function f"
++ return 0
++}
++
++gdb_breakpoint [gdb_get_line_number "break-here"]
++gdb_continue_to_breakpoint "Block break here."
++
++gdb_test "info frame" "inlined into frame 1\r\n.*"
++
++gdb_test "up" "#1 g .*"
++
++gdb_test "python print gdb.selected_frame().read_var('l')" "\r\n42"
diff --git a/gdb.spec b/gdb.spec
index ebf699b..e006d72 100644
--- a/gdb.spec
+++ b/gdb.spec
@@ -23,11 +23,11 @@ Name: gdb%{?_with_debug:-debug}
# Set version to contents of gdb/version.in.
# NOTE: the FSF gdb versions are numbered N.M for official releases, like 6.3
# and, since January 2005, X.Y.Z.date for daily snapshots, like 6.3.50.20050112 # (daily snapshot from mailine), or 6.3.0.20040112 (head of the release branch).
-Version: 7.2.90.20110411
+Version: 7.2.90.20110429
# 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: 34%{?_with_upstream:.upstream}%{?dist}
+Release: 35%{?_with_upstream:.upstream}%{?dist}
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain
Group: Development/Debuggers
@@ -262,7 +262,7 @@ Patch231: gdb-6.3-bz202689-exec-from-pthread-test.patch
# Backported fixups post the source tarball.
#Xdrop: Just backports.
-#Patch232: gdb-upstream.patch
+Patch232: gdb-upstream.patch
# Testcase for PPC Power6/DFP instructions disassembly (BZ 230000).
#=fedoratest+ppc
@@ -557,6 +557,19 @@ Patch574: gdb-core-thread-internalerr-3of3.patch
# rebuild to fix it, we need to be able to use gdb :)
Patch579: gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch
+# Fix case insensitive symbols for Fortran by iFort (BZ 645773).
+Patch580: gdb-bz645773-case-insensitive-1of5.patch
+Patch581: gdb-bz645773-case-insensitive-2of5.patch
+Patch582: gdb-bz645773-case-insensitive-3of5.patch
+Patch583: gdb-bz645773-case-insensitive-4of5.patch
+Patch588: gdb-bz645773-case-insensitive-5of5.patch
+
+# Fix -O2 -g breakpoints internal error + prologue skipping (BZ 612253).
+Patch589: gdb-optim-g-prologue-skip.patch
+
+# Fix physname-related CU expansion issue for C++ (PR 12708).
+Patch590: gdb-physname-expand-completer.patch
+
BuildRequires: ncurses-devel%{?_isa} texinfo gettext flex bison expat-devel%{?_isa}
Requires: readline%{?_isa}
BuildRequires: readline-devel%{?_isa}
@@ -713,7 +726,7 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
%if 0%{!?_with_upstream:1}
-#patch232 -p1
+%patch232 -p1
%patch349 -p1
%patch1 -p1
%patch3 -p1
@@ -826,6 +839,13 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
%patch573 -p1
%patch574 -p1
%patch579 -p1
+%patch580 -p1
+%patch581 -p1
+%patch582 -p1
+%patch583 -p1
+%patch588 -p1
+%patch589 -p1
+%patch590 -p1
%patch390 -p1
%patch393 -p1
@@ -1254,6 +1274,13 @@ fi
%{_infodir}/gdb.info*
%changelog
+* Fri Apr 29 2011 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.2.90.20110429-35.fc15
+- Rebase to FSF GDB 7.2.90.20110429 (which is a 7.3 pre-release).
+- Fix -O2 -g breakpoints internal error + prologue skipping (BZ 612253).
+- Fix case insensitive symbols for Fortran by iFort (BZ 645773).
+- Fix physname-related CU expansion issue for C++ (PR 12708).
+- Fix Python access to inlined frames (BZ 694824).
+
* Mon Apr 11 2011 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.2.90.20110411-34.fc15
- Rebase to FSF GDB 7.2.90.20110411 (which is a 7.3 pre-release).
- Include the proper fix for anonymous struct typedefs (Tom Tromey, BZ 672230).
diff --git a/sources b/sources
index ff27557..14ecfea 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
04e5c4b1b9e633422cc48990fe61958d libstdc++-v3-python-r155978.tar.bz2
-7095f3f412e27a73c39df4aa737a386a gdb-7.2.90.20110411.tar.bz2
+e585e484001f5cd69e87cbcd0c99c1f7 gdb-7.2.90.20110429.tar.bz2
reply other threads:[~2026-06-27 23:55 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178260450836.1.11049034940459639530.rpms-gdb-f314eb3eb50b@fedoraproject.org \
--to=jan.kratochvil@redhat.com \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox