public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 7.2.90.20110429 (which is a 7.3 pre-release).
@ 2026-06-27 23:55 Jan Kratochvil
  0 siblings, 0 replies; only message in thread
From: Jan Kratochvil @ 2026-06-27 23:55 UTC (permalink / raw)
  To: git-commits

            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

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-06-27 23:55 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-27 23:55 [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 7.2.90.20110429 (which is a 7.3 pre-release) Jan Kratochvil

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox