public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Jan Kratochvil <jan.kratochvil@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/gdb] gdb-17.2-rebase-f44: - Rebase to FSF GDB 7.2.50.20110218 (which is a 7.3 pre-release).
Date: Sat, 27 Jun 2026 23:55:02 GMT	[thread overview]
Message-ID: <178260450286.1.2930517074686838881.rpms-gdb-3080c0e54fa4@fedoraproject.org> (raw)

            A new commit has been pushed.

            Repo   : rpms/gdb
            Branch : gdb-17.2-rebase-f44
            Commit : 3080c0e54fa42b34135636f9f092851096b277a0
            Author : Jan Kratochvil <jan.kratochvil@redhat.com>
            Date   : 2011-02-18T11:25:34+01:00
            Stats  : +246/-514 in 8 file(s)
            URL    : https://src.fedoraproject.org/rpms/gdb/c/3080c0e54fa42b34135636f9f092851096b277a0?branch=gdb-17.2-rebase-f44

            Log:
            - Rebase to FSF GDB 7.2.50.20110218 (which is a 7.3 pre-release).
- [vla] Fox Fortran vector slices for allocated arrays (for BZ 609782).

---
diff --git a/.gitignore b/.gitignore
index 366fc6a..355bce4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
 /libstdc++-v3-python-r155978.tar.bz2
-/gdb-7.2.50.20110213.tar.bz2
+/gdb-7.2.50.20110218.tar.bz2

diff --git a/gdb-6.6-buildid-locate-core-as-arg.patch b/gdb-6.6-buildid-locate-core-as-arg.patch
index e4a5767..b9d1134 100644
--- a/gdb-6.6-buildid-locate-core-as-arg.patch
+++ b/gdb-6.6-buildid-locate-core-as-arg.patch
@@ -58,13 +58,13 @@ Http://sourceware.org/ml/gdb-patches/2010-01/msg00517.html
 	* exec.c (exec_file_attach): Print a more useful error message if the
 	user did "gdb core".
 
-Index: gdb-7.2.50.20110107/gdb/exceptions.h
+Index: gdb-7.2.50.20110218/gdb/exceptions.h
 ===================================================================
---- gdb-7.2.50.20110107.orig/gdb/exceptions.h	2011-01-05 23:22:48.000000000 +0100
-+++ gdb-7.2.50.20110107/gdb/exceptions.h	2011-01-07 09:09:18.000000000 +0100
-@@ -78,6 +78,9 @@ enum errors {
-   /* Feature is not supported in this copy of GDB.  */
-   UNSUPPORTED_ERROR,
+--- gdb-7.2.50.20110218.orig/gdb/exceptions.h	2011-02-14 12:35:44.000000000 +0100
++++ gdb-7.2.50.20110218/gdb/exceptions.h	2011-02-18 10:45:31.000000000 +0100
+@@ -85,6 +85,9 @@ enum errors {
+      traceframe.  */
+   NOT_AVAILABLE_ERROR,
  
 +  /* Attempt to load a core file as executable.  */
 +  IS_CORE_ERROR,
@@ -72,10 +72,10 @@ Index: gdb-7.2.50.20110107/gdb/exceptions.h
    /* Add more errors here.  */
    NR_ERRORS
  };
-Index: gdb-7.2.50.20110107/gdb/exec.c
+Index: gdb-7.2.50.20110218/gdb/exec.c
 ===================================================================
---- gdb-7.2.50.20110107.orig/gdb/exec.c	2011-01-05 23:22:48.000000000 +0100
-+++ gdb-7.2.50.20110107/gdb/exec.c	2011-01-07 09:09:18.000000000 +0100
+--- gdb-7.2.50.20110218.orig/gdb/exec.c	2011-02-14 23:08:48.000000000 +0100
++++ gdb-7.2.50.20110218/gdb/exec.c	2011-02-18 10:45:16.000000000 +0100
 @@ -34,6 +34,7 @@
  #include "arch-utils.h"
  #include "gdbthread.h"
@@ -115,10 +115,10 @@ Index: gdb-7.2.50.20110107/gdb/exec.c
  	}
  
        /* FIXME - This should only be run for RS6000, but the ifdef is a poor
-Index: gdb-7.2.50.20110107/gdb/main.c
+Index: gdb-7.2.50.20110218/gdb/main.c
 ===================================================================
---- gdb-7.2.50.20110107.orig/gdb/main.c	2011-01-07 09:05:02.000000000 +0100
-+++ gdb-7.2.50.20110107/gdb/main.c	2011-01-07 09:10:14.000000000 +0100
+--- gdb-7.2.50.20110218.orig/gdb/main.c	2011-02-18 10:44:17.000000000 +0100
++++ gdb-7.2.50.20110218/gdb/main.c	2011-02-18 10:45:16.000000000 +0100
 @@ -243,6 +243,36 @@ captured_command_loop (void *data)
    return 1;
  }
@@ -156,7 +156,7 @@ Index: gdb-7.2.50.20110107/gdb/main.c
  static int
  captured_main (void *data)
  {
-@@ -726,6 +756,8 @@ captured_main (void *data)
+@@ -727,6 +757,8 @@ captured_main (void *data)
  	{
  	  symarg = argv[optind];
  	  execarg = argv[optind];
@@ -165,7 +165,7 @@ Index: gdb-7.2.50.20110107/gdb/main.c
  	  optind++;
  	}
  
-@@ -867,11 +899,25 @@ captured_main (void *data)
+@@ -868,11 +900,25 @@ captured_main (void *data)
        && symarg != NULL
        && strcmp (execarg, symarg) == 0)
      {

diff --git a/gdb-archer.patch b/gdb-archer.patch
index c7b63cd..2b4460f 100644
--- a/gdb-archer.patch
+++ b/gdb-archer.patch
@@ -2,7 +2,7 @@ http://sourceware.org/gdb/wiki/ProjectArcher
 http://sourceware.org/gdb/wiki/ArcherBranchManagement
 
 GIT snapshot:
-commit 7f0f6abd9c19e1410e66ebbe10e3ddea1ecac8d3
+commit 271b14253f10eea8c60a327c63dbe732a2af511a
 
 branch `archer' - the merge of branches:
 archer-jankratochvil-vla
@@ -14,7 +14,7 @@ archer-tromey-python
 
 
 diff --git a/gdb/Makefile.in b/gdb/Makefile.in
-index 5f91e35..0a23720 100644
+index c6049fa..4a17976 100644
 --- a/gdb/Makefile.in
 +++ b/gdb/Makefile.in
 @@ -813,7 +813,8 @@ annotate.h sim-regno.h dictionary.h dfp.h main.h frame-unwind.h	\
@@ -41,10 +41,10 @@ index 5f91e35..0a23720 100644
  	$(SHELL) config.status --recheck
  
 diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
-index 890e091..d1e1f8f 100644
+index 467e4df..555914c 100644
 --- a/gdb/ada-lang.c
 +++ b/gdb/ada-lang.c
-@@ -11372,6 +11372,7 @@ ada_operator_length (const struct expression *exp, int pc, int *oplenp,
+@@ -11389,6 +11389,7 @@ ada_operator_length (const struct expression *exp, int pc, int *oplenp,
  
  static int
  ada_operator_check (struct expression *exp, int pos,
@@ -52,7 +52,7 @@ index 890e091..d1e1f8f 100644
  		    int (*objfile_func) (struct objfile *objfile, void *data),
  		    void *data)
  {
-@@ -11386,12 +11387,15 @@ ada_operator_check (struct expression *exp, int pos,
+@@ -11403,12 +11404,15 @@ ada_operator_check (struct expression *exp, int pos,
  	break;
  
        default:
@@ -392,7 +392,7 @@ index b9aaf54..e1f3242 100644
  
  /* Return the innermost stack frame executing inside of BLOCK, or NULL
 diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
-index 39d9b02..d5ab70b 100644
+index ca56c43..6f269b9 100644
 --- a/gdb/breakpoint.c
 +++ b/gdb/breakpoint.c
 @@ -62,6 +62,7 @@
@@ -530,7 +530,7 @@ index 39d9b02..d5ab70b 100644
        if (some_failed)
  	{
  	  for (loc = bpt->loc; loc; loc = loc->next)
-@@ -3501,6 +3535,8 @@ print_it_typical (bpstat bs)
+@@ -3635,6 +3669,8 @@ print_it_typical (bpstat bs)
      case bp_tracepoint:
      case bp_fast_tracepoint:
      case bp_jit_event:
@@ -539,7 +539,7 @@ index 39d9b02..d5ab70b 100644
      default:
        result = PRINT_UNKNOWN;
        break;
-@@ -3722,6 +3758,8 @@ watchpoint_check (void *p)
+@@ -3856,6 +3892,8 @@ watchpoint_check (void *p)
    gdb_assert (bs->breakpoint_at != NULL);
    b = bs->breakpoint_at;
  
@@ -548,7 +548,7 @@ index 39d9b02..d5ab70b 100644
    /* If this is a local watchpoint, we only want to check if the
       watchpoint frame is in scope if the current thread is the thread
       that was used to create the watchpoint.  */
-@@ -3831,13 +3869,7 @@ watchpoint_check (void *p)
+@@ -3965,13 +4003,7 @@ watchpoint_check (void *p)
  		   " deleted because the program has left the block in\n\
  which its expression is valid.\n");     
  
@@ -563,7 +563,7 @@ index 39d9b02..d5ab70b 100644
  
        return WP_DELETED;
      }
-@@ -4042,9 +4074,7 @@ bpstat_check_watchpoint (bpstat bs)
+@@ -4176,9 +4208,7 @@ bpstat_check_watchpoint (bpstat bs)
  	    case 0:
  	      /* Error from catch_errors.  */
  	      printf_filtered (_("Watchpoint %d deleted.\n"), b->number);
@@ -574,7 +574,7 @@ index 39d9b02..d5ab70b 100644
  	      /* We've already printed what needs to be printed.  */
  	      bs->print_it = print_it_done;
  	      break;
-@@ -4250,7 +4280,7 @@ bpstat_stop_status (struct address_space *aspace,
+@@ -4384,7 +4414,7 @@ bpstat_stop_status (struct address_space *aspace,
  	     watchpoint as triggered so that we will handle the
  	     out-of-scope event.  We'll get to the watchpoint next
  	     iteration.  */
@@ -583,7 +583,7 @@ index 39d9b02..d5ab70b 100644
  	    b->related_breakpoint->watchpoint_triggered = watch_triggered_yes;
  	}
      }
-@@ -4372,7 +4402,7 @@ handle_jit_event (void)
+@@ -4506,7 +4536,7 @@ handle_jit_event (void)
  /* Decide what infrun needs to do with this bpstat.  */
  
  struct bpstat_what
@@ -592,7 +592,7 @@ index 39d9b02..d5ab70b 100644
  {
    struct bpstat_what retval;
    /* We need to defer calling `solib_add', as adding new symbols
-@@ -4380,12 +4410,13 @@ bpstat_what (bpstat bs)
+@@ -4514,12 +4544,13 @@ bpstat_what (bpstat bs)
       and hence may clear unprocessed entries in the BS chain.  */
    int shlib_event = 0;
    int jit_event = 0;
@@ -607,7 +607,7 @@ index 39d9b02..d5ab70b 100644
      {
        /* Extract this BS's action.  After processing each BS, we check
  	 if its action overrides all we've seem so far.  */
-@@ -4515,6 +4546,20 @@ bpstat_what (bpstat bs)
+@@ -4649,6 +4680,20 @@ bpstat_what (bpstat bs)
  	     out already.  */
  	  internal_error (__FILE__, __LINE__,
  			  _("bpstat_what: tracepoint encountered"));
@@ -628,7 +628,7 @@ index 39d9b02..d5ab70b 100644
  	default:
  	  internal_error (__FILE__, __LINE__,
  			  _("bpstat_what: unhandled bptype %d"), (int) bptype);
-@@ -4552,6 +4597,21 @@ bpstat_what (bpstat bs)
+@@ -4686,6 +4731,21 @@ bpstat_what (bpstat bs)
        handle_jit_event ();
      }
  
@@ -650,7 +650,7 @@ index 39d9b02..d5ab70b 100644
    return retval;
  }
  
-@@ -4673,6 +4733,8 @@ bptype_string (enum bptype type)
+@@ -4807,6 +4867,8 @@ bptype_string (enum bptype type)
      {bp_fast_tracepoint, "fast tracepoint"},
      {bp_static_tracepoint, "static tracepoint"},
      {bp_jit_event, "jit events"},
@@ -659,7 +659,7 @@ index 39d9b02..d5ab70b 100644
    };
  
    if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
-@@ -4820,6 +4882,8 @@ print_one_breakpoint_location (struct breakpoint *b,
+@@ -4954,6 +5016,8 @@ print_one_breakpoint_location (struct breakpoint *b,
        case bp_fast_tracepoint:
        case bp_static_tracepoint:
        case bp_jit_event:
@@ -668,7 +668,7 @@ index 39d9b02..d5ab70b 100644
  	if (opts.addressprint)
  	  {
  	    annotate_field (4);
-@@ -5101,7 +5165,8 @@ user_settable_breakpoint (const struct breakpoint *b)
+@@ -5235,7 +5299,8 @@ user_settable_breakpoint (const struct breakpoint *b)
  	  || b->type == bp_catchpoint
  	  || b->type == bp_hardware_breakpoint
  	  || is_tracepoint (b)
@@ -678,7 +678,7 @@ index 39d9b02..d5ab70b 100644
  }
  
  /* Return true if this breakpoint was set by the user, false if it is
-@@ -5590,6 +5655,8 @@ allocate_bp_location (struct breakpoint *bpt)
+@@ -5724,6 +5789,8 @@ allocate_bp_location (struct breakpoint *bpt)
      case bp_longjmp_master:
      case bp_std_terminate_master:
      case bp_exception_master:
@@ -687,7 +687,7 @@ index 39d9b02..d5ab70b 100644
        loc->loc_type = bp_loc_software_breakpoint;
        break;
      case bp_hardware_breakpoint:
-@@ -5679,6 +5746,7 @@ set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
+@@ -5813,6 +5880,7 @@ set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
    b->ops = NULL;
    b->condition_not_parsed = 0;
    b->py_bp_object = NULL;
@@ -695,7 +695,7 @@ index 39d9b02..d5ab70b 100644
  
    /* Add this breakpoint to the end of the chain so that a list of
       breakpoints will come out in order of increasing numbers.  */
-@@ -5697,7 +5765,7 @@ set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
+@@ -5831,7 +5899,7 @@ set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
  
  /* Initialize loc->function_name.  */
  static void
@@ -704,7 +704,7 @@ index 39d9b02..d5ab70b 100644
  {
    gdb_assert (loc->owner != NULL);
  
-@@ -5705,8 +5773,29 @@ set_breakpoint_location_function (struct bp_location *loc)
+@@ -5839,8 +5907,29 @@ set_breakpoint_location_function (struct bp_location *loc)
        || loc->owner->type == bp_hardware_breakpoint
        || is_tracepoint (loc->owner))
      {
@@ -736,7 +736,7 @@ index 39d9b02..d5ab70b 100644
        if (loc->function_name)
  	loc->function_name = xstrdup (loc->function_name);
      }
-@@ -5781,7 +5870,8 @@ set_raw_breakpoint (struct gdbarch *gdbarch,
+@@ -5915,7 +6004,8 @@ set_raw_breakpoint (struct gdbarch *gdbarch,
    b->loc->section = sal.section;
    b->line_number = sal.line;
  
@@ -746,7 +746,7 @@ index 39d9b02..d5ab70b 100644
  
    breakpoints_changed ();
  
-@@ -6898,7 +6988,7 @@ clone_momentary_breakpoint (struct breakpoint *orig)
+@@ -7032,7 +7122,7 @@ clone_momentary_breakpoint (struct breakpoint *orig)
  
    copy = set_raw_breakpoint_without_location (orig->gdbarch, orig->type);
    copy->loc = allocate_bp_location (copy);
@@ -755,7 +755,7 @@ index 39d9b02..d5ab70b 100644
  
    copy->loc->gdbarch = orig->loc->gdbarch;
    copy->loc->requested_address = orig->loc->requested_address;
-@@ -6998,6 +7088,7 @@ mention (struct breakpoint *b)
+@@ -7132,6 +7222,7 @@ mention (struct breakpoint *b)
  	do_cleanups (ui_out_chain);
  	break;
        case bp_breakpoint:
@@ -763,7 +763,7 @@ index 39d9b02..d5ab70b 100644
  	if (ui_out_is_mi_like_p (uiout))
  	  {
  	    say_where = 0;
-@@ -7008,6 +7099,8 @@ mention (struct breakpoint *b)
+@@ -7142,6 +7233,8 @@ mention (struct breakpoint *b)
  	else
  	  printf_filtered (_("Breakpoint"));
  	printf_filtered (_(" %d"), b->number);
@@ -772,7 +772,7 @@ index 39d9b02..d5ab70b 100644
  	say_where = 1;
  	break;
        case bp_hardware_breakpoint:
-@@ -7067,6 +7160,7 @@ mention (struct breakpoint *b)
+@@ -7201,6 +7294,7 @@ mention (struct breakpoint *b)
        case bp_longjmp_master:
        case bp_std_terminate_master:
        case bp_exception_master:
@@ -780,7 +780,7 @@ index 39d9b02..d5ab70b 100644
  	break;
        }
  
-@@ -7127,7 +7221,8 @@ add_location_to_breakpoint (struct breakpoint *b,
+@@ -7261,7 +7355,8 @@ add_location_to_breakpoint (struct breakpoint *b,
    gdb_assert (loc->pspace != NULL);
    loc->section = sal->section;
  
@@ -790,7 +790,7 @@ index 39d9b02..d5ab70b 100644
    return loc;
  }
  \f
-@@ -8576,6 +8671,7 @@ watch_command_1 (char *arg, int accessflag, int from_tty,
+@@ -8710,6 +8805,7 @@ watch_command_1 (char *arg, int accessflag, int from_tty,
    b = set_raw_breakpoint_without_location (NULL, bp_type);
    set_breakpoint_number (internal, b);
    b->thread = thread;
@@ -798,7 +798,7 @@ index 39d9b02..d5ab70b 100644
    b->disposition = disp_donttouch;
    b->exp = exp;
    b->exp_valid_block = exp_valid_block;
-@@ -9747,6 +9843,9 @@ update_global_location_list (int should_insert)
+@@ -9881,6 +9977,9 @@ update_global_location_list (int should_insert)
        int keep_in_target = 0;
        int removed = 0;
  
@@ -808,7 +808,7 @@ index 39d9b02..d5ab70b 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
-@@ -10063,12 +10162,20 @@ delete_breakpoint (struct breakpoint *bpt)
+@@ -10197,12 +10296,20 @@ delete_breakpoint (struct breakpoint *bpt)
  
    /* At least avoid this stale reference until the reference counting
       of breakpoints gets resolved.  */
@@ -834,7 +834,7 @@ index 39d9b02..d5ab70b 100644
      }
  
    observer_notify_breakpoint_deleted (bpt->number);
-@@ -10399,6 +10506,9 @@ update_breakpoint_locations (struct breakpoint *b,
+@@ -10533,6 +10640,9 @@ update_breakpoint_locations (struct breakpoint *b,
      return;
  
    b->loc = NULL;
@@ -844,7 +844,7 @@ index 39d9b02..d5ab70b 100644
  
    for (i = 0; i < sals.nelts; ++i)
      {
-@@ -10426,11 +10536,7 @@ update_breakpoint_locations (struct breakpoint *b,
+@@ -10560,11 +10670,7 @@ update_breakpoint_locations (struct breakpoint *b,
  	    }
  	}
  
@@ -857,7 +857,7 @@ index 39d9b02..d5ab70b 100644
  	b->source_file = xstrdup (sals.sals[i].symtab->filename);
  
        if (b->line_number == 0)
-@@ -10513,6 +10619,7 @@ breakpoint_re_set_one (void *bint)
+@@ -10647,6 +10753,7 @@ breakpoint_re_set_one (void *bint)
      case bp_tracepoint:
      case bp_fast_tracepoint:
      case bp_static_tracepoint:
@@ -865,7 +865,7 @@ index 39d9b02..d5ab70b 100644
        /* Do not attempt to re-set breakpoints disabled during startup.  */
        if (b->enable_state == bp_startup_disabled)
  	return 0;
-@@ -10683,6 +10790,7 @@ breakpoint_re_set_one (void *bint)
+@@ -10817,6 +10924,7 @@ breakpoint_re_set_one (void *bint)
      case bp_exception:
      case bp_exception_resume:
      case bp_jit_event:
@@ -873,7 +873,7 @@ index 39d9b02..d5ab70b 100644
        break;
      }
  
-@@ -10850,11 +10958,25 @@ map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
+@@ -10981,11 +11089,25 @@ map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
  	  ALL_BREAKPOINTS_SAFE (b, tmp)
  	    if (b->number == num)
  	      {
@@ -903,7 +903,7 @@ index 39d9b02..d5ab70b 100644
  		break;
  	      }
  	  if (match == 0)
-@@ -11969,6 +12091,22 @@ all_tracepoints ()
+@@ -12100,6 +12222,22 @@ all_tracepoints ()
    return tp_vec;
  }
  
@@ -926,7 +926,7 @@ index 39d9b02..d5ab70b 100644
  \f
  /* This help string is used for the break, hbreak, tbreak and thbreak
     commands.  It is defined as a macro to prevent duplication.
-@@ -12054,6 +12192,107 @@ iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
+@@ -12185,6 +12323,107 @@ iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
    return NULL;
  }
  
@@ -1034,7 +1034,7 @@ index 39d9b02..d5ab70b 100644
  void
  _initialize_breakpoint (void)
  {
-@@ -12588,4 +12827,5 @@ inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
+@@ -12721,4 +12960,5 @@ inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
    automatic_hardware_breakpoints = 1;
  
    observer_attach_about_to_proceed (breakpoint_about_to_proceed);
@@ -1121,7 +1121,7 @@ index 9409dde..f0fa4c7 100644
  extern char *xfullpath (const char *);
  
 diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
-index 6a3c7de..b2165f8 100644
+index e16065b..cdb44e3 100644
 --- a/gdb/doc/gdb.texinfo
 +++ b/gdb/doc/gdb.texinfo
 @@ -1177,6 +1177,16 @@ for remote debugging.
@@ -1141,7 +1141,7 @@ index 6a3c7de..b2165f8 100644
  @c resolve the situation of these eventually
  @item -tui
  @cindex @code{--tui}
-@@ -20652,8 +20662,6 @@ containing @code{end}.  For example:
+@@ -20677,8 +20687,6 @@ containing @code{end}.  For example:
  
  @smallexample
  (@value{GDBP}) python
@@ -1150,7 +1150,7 @@ index 6a3c7de..b2165f8 100644
  >print 23
  >end
  23
-@@ -20666,6 +20674,14 @@ in a Python script.  This can be controlled using @code{maint set
+@@ -20691,6 +20699,14 @@ in a Python script.  This can be controlled using @code{maint set
  python print-stack}: if @code{on}, the default, then Python stack
  printing is enabled; if @code{off}, then Python stack printing is
  disabled.
@@ -1165,7 +1165,7 @@ index 6a3c7de..b2165f8 100644
  @end table
  
  It is also possible to execute a Python script from the @value{GDBN}
-@@ -20687,6 +20703,14 @@ and thus is always available.
+@@ -20712,6 +20728,14 @@ and thus is always available.
  @cindex python api
  @cindex programming in python
  
@@ -1344,7 +1344,7 @@ index afe6dde..d364b14 100644
  	  error (_("Unhandled dwarf expression opcode 0x%x"), op);
  	}
 diff --git a/gdb/dwarf2expr.h b/gdb/dwarf2expr.h
-index 3858dc8..a172585 100644
+index 620269f..c6fc64f 100644
 --- a/gdb/dwarf2expr.h
 +++ b/gdb/dwarf2expr.h
 @@ -114,9 +114,15 @@ struct dwarf_expr_context
@@ -1365,7 +1365,7 @@ index 3858dc8..a172585 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 d9580c6..559e0b5 100644
+index 4d31afa..fd0c185 100644
 --- a/gdb/dwarf2loc.c
 +++ b/gdb/dwarf2loc.c
 @@ -134,6 +134,9 @@ struct dwarf_expr_baton
@@ -1602,8 +1602,7 @@ index d9580c6..559e0b5 100644
  
 -  ctx = new_dwarf_expr_context ();
 -  old_chain = make_cleanup_free_dwarf_expr_context (ctx);
-+  ctx = dwarf_expr_prep_ctx (frame, data, size, per_cu);
- 
+-
 -  ctx->gdbarch = get_objfile_arch (objfile);
 -  ctx->addr_size = dwarf2_per_cu_addr_size (per_cu);
 -  ctx->offset = dwarf2_per_cu_text_offset (per_cu);
@@ -1615,7 +1614,8 @@ index d9580c6..559e0b5 100644
 -  ctx->get_frame_pc = dwarf_expr_frame_pc;
 -  ctx->get_tls_address = dwarf_expr_tls_address;
 -  ctx->dwarf_call = dwarf_expr_dwarf_call;
--
++  ctx = dwarf_expr_prep_ctx (frame, data, size, per_cu);
+ 
 -  dwarf_expr_eval (ctx, data, size);
    if (ctx->num_pieces > 0)
      {
@@ -1636,8 +1636,8 @@ index d9580c6..559e0b5 100644
  	    retval = allocate_value_lazy (type);
  	    VALUE_LVAL (retval) = lval_memory;
  	    if (in_stack_memory)
-@@ -2821,11 +2979,51 @@ loclist_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch,
- 			 dlbaton->per_cu);
+@@ -2831,11 +2989,51 @@ loclist_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch,
+ 			       dlbaton->per_cu);
  }
  
 -/* The set of location functions used with the DWARF-2 expression
@@ -1691,10 +1691,10 @@ index d9580c6..559e0b5 100644
 +  missing_tracepoint_var_ref
 +};
 diff --git a/gdb/dwarf2loc.h b/gdb/dwarf2loc.h
-index ee52506..6a77c3f 100644
+index 96a490e..b0ebb06 100644
 --- a/gdb/dwarf2loc.h
 +++ b/gdb/dwarf2loc.h
-@@ -105,5 +105,14 @@ struct dwarf2_loclist_baton
+@@ -107,6 +107,15 @@ struct dwarf2_loclist_baton
  
  extern const struct symbol_computed_ops dwarf2_locexpr_funcs;
  extern const struct symbol_computed_ops dwarf2_loclist_funcs;
@@ -1708,9 +1708,10 @@ index ee52506..6a77c3f 100644
 +extern int dwarf_loclist_baton_eval (struct dwarf2_loclist_baton *dllbaton,
 +				     struct type *type, CORE_ADDR *addrp);
  
- #endif /* dwarf2loc.h */
+ /* Compile a DWARF location expression to an agent expression.
+    
 diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
-index 837fa3b..327bd70 100644
+index 08b804a..a9099be 100644
 --- a/gdb/dwarf2read.c
 +++ b/gdb/dwarf2read.c
 @@ -1211,6 +1211,9 @@ static void fill_in_loclist_baton (struct dwarf2_cu *cu,
@@ -1782,7 +1783,7 @@ index 837fa3b..327bd70 100644
    struct cleanup *back_to;
    char *name;
  
-@@ -7378,17 +7410,11 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -7378,17 +7410,19 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
    type = element_type;
  
    if (read_array_order (die, cu) == DW_ORD_col_major)
@@ -1802,10 +1803,18 @@ index 837fa3b..327bd70 100644
 +  else /* (read_array_order (die, cu) == DW_ORD_row_major) */
 +    for (i = ndim - 1; i >= 0; i--)
 +      type = create_single_array_dimension (type, range_types[i], die, cu);
++
++  /* Data locations should be set only for the outermost dimension as they
++     would be confusing for the dereferenced offset on the inner ones.  */
++  attr = dwarf2_attr (die, DW_AT_data_location, cu);
++  if (attr_form_is_block (attr))
++    TYPE_DATA_LOCATION_DWARF_BLOCK (type)
++      = dwarf2_attr_to_locexpr_baton (attr, cu);
++  gdb_assert (!TYPE_DATA_LOCATION_IS_ADDR (type));
  
    /* Understand Dwarf2 support for vector types (like they occur on
       the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
-@@ -7882,29 +7908,114 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -7882,29 +7916,114 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
    struct gdbarch *gdbarch = get_objfile_arch (objfile);
    struct type *type, *range_type, *index_type, *char_type;
    struct attribute *attr;
@@ -1934,7 +1943,7 @@ index 837fa3b..327bd70 100644
    char_type = language_string_char_type (cu->language_defn, gdbarch);
    type = create_string_type (NULL, char_type, range_type);
  
-@@ -8190,8 +8301,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -8190,8 +8309,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
    struct type *base_type;
    struct type *range_type;
    struct attribute *attr;
@@ -1944,7 +1953,7 @@ index 837fa3b..327bd70 100644
    char *name;
    LONGEST negative_mask;
  
-@@ -8204,53 +8314,126 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -8204,53 +8322,126 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
    if (range_type)
      return range_type;
  
@@ -2106,7 +2115,7 @@ index 837fa3b..327bd70 100644
      }
  
    /* Dwarf-2 specifications explicitly allows to create subrange types
-@@ -8291,24 +8474,41 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -8291,24 +8482,41 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
  	}
      }
  
@@ -2164,7 +2173,7 @@ index 837fa3b..327bd70 100644
  
    name = dwarf2_name (die, cu);
    if (name)
-@@ -10785,10 +10985,12 @@ var_decode_location (struct attribute *attr, struct symbol *sym,
+@@ -10785,10 +10993,12 @@ var_decode_location (struct attribute *attr, struct symbol *sym,
       (i.e. when the value of a register or memory location is
       referenced, or a thread-local block, etc.).  Then again, it might
       not be worthwhile.  I'm assuming that it isn't unless performance
@@ -2179,7 +2188,7 @@ index 837fa3b..327bd70 100644
  }
  
  /* Given a pointer to a DWARF information entry, figure out if we need
-@@ -10826,6 +11028,8 @@ new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
+@@ -10826,6 +11036,8 @@ new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
        else
  	sym = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct symbol);
        OBJSTAT (objfile, n_syms++);
@@ -2188,7 +2197,7 @@ index 837fa3b..327bd70 100644
  
        /* Cache this symbol's name and the name's demangled form (if any).  */
        SYMBOL_SET_LANGUAGE (sym, cu->language);
-@@ -11598,6 +11802,9 @@ read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
+@@ -11598,6 +11810,9 @@ read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
        break;
      }
  
@@ -2198,7 +2207,7 @@ index 837fa3b..327bd70 100644
    return this_type;
  }
  
-@@ -14410,61 +14617,99 @@ fill_in_loclist_baton (struct dwarf2_cu *cu,
+@@ -14419,61 +14634,99 @@ fill_in_loclist_baton (struct dwarf2_cu *cu,
    baton->base_address = cu->base_address;
  }
  
@@ -2220,16 +2229,20 @@ index 837fa3b..327bd70 100644
 -    {
 -      struct dwarf2_loclist_baton *baton;
 +  struct dwarf2_locexpr_baton *baton;
-+
-+  gdb_assert (attr_form_is_block (attr));
  
 -      baton = obstack_alloc (&cu->objfile->objfile_obstack,
 -			     sizeof (struct dwarf2_loclist_baton));
++  gdb_assert (attr_form_is_block (attr));
+ 
+-      fill_in_loclist_baton (cu, baton, attr);
 +  baton = obstack_alloc (&cu->objfile->objfile_obstack, sizeof (*baton));
 +  baton->per_cu = cu->per_cu;
 +  gdb_assert (baton->per_cu);
  
--      fill_in_loclist_baton (cu, baton, attr);
+-      if (cu->base_known == 0)
+-	complaint (&symfile_complaints,
+-		   _("Location list used without "
+-		     "specifying the CU base address."));
 +  /* Note that we're just copying the block's data pointer
 +     here, not the actual data.  We're still pointing into the
 +     info_buffer for SYM's objfile; right now we never release
@@ -2238,11 +2251,7 @@ index 837fa3b..327bd70 100644
 +  baton->size = DW_BLOCK (attr)->size;
 +  baton->data = DW_BLOCK (attr)->data;
 +  gdb_assert (baton->size == 0 || baton->data != NULL);
- 
--      if (cu->base_known == 0)
--	complaint (&symfile_complaints,
--		   _("Location list used without "
--		     "specifying the CU base address."));
++
 +  return baton;
 +}
 +
@@ -2255,7 +2264,7 @@ index 837fa3b..327bd70 100644
 +     variable has been optimized out.  */
 +  if (!attr)
 +    return NULL;
-+
+ 
 +  dwarf2_read_section (dwarf2_per_objfile->objfile,
 +		       &dwarf2_per_objfile->loc);
 +
@@ -2279,7 +2288,7 @@ index 837fa3b..327bd70 100644
 +
 +  return baton;
 +}
- 
++
 +/* SYM may get its SYMBOL_CLASS overriden on invalid ATTR content.  */
 +
 +static void
@@ -2341,7 +2350,7 @@ index 837fa3b..327bd70 100644
      }
  }
  
-@@ -14810,6 +15055,31 @@ offset_and_type_eq (const void *item_lhs, const void *item_rhs)
+@@ -14819,6 +15072,25 @@ offset_and_type_eq (const void *item_lhs, const void *item_rhs)
    return ofs_lhs->offset == ofs_rhs->offset;
  }
  
@@ -2353,12 +2362,6 @@ index 837fa3b..327bd70 100644
 +{
 +  struct attribute *attr;
 +
-+  attr = dwarf2_attr (die, DW_AT_data_location, cu);
-+  if (attr_form_is_block (attr))
-+    TYPE_DATA_LOCATION_DWARF_BLOCK (type) = dwarf2_attr_to_locexpr_baton (attr,
-+									  cu);
-+  gdb_assert (!TYPE_DATA_LOCATION_IS_ADDR (type));
-+
 +  attr = dwarf2_attr (die, DW_AT_allocated, cu);
 +  if (attr_form_is_block (attr))
 +    TYPE_ALLOCATED (type) = dwarf2_attr_to_locexpr_baton (attr, cu);
@@ -2373,7 +2376,7 @@ index 837fa3b..327bd70 100644
  /* Set the type associated with DIE to TYPE.  Save it in CU's hash
     table if necessary.  For convenience, return TYPE.
  
-@@ -14835,6 +15105,8 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
+@@ -14844,6 +15116,8 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
    struct objfile *objfile = cu->objfile;
    htab_t *type_hash_ptr;
  
@@ -2677,7 +2680,7 @@ index c59134b..c2c8229 100644
  
    /* Add synthetic symbols - for instance, names for any PLT entries.  */
 diff --git a/gdb/eval.c b/gdb/eval.c
-index de25b39..cced13c 100644
+index de25b39..f9c7a82 100644
 --- a/gdb/eval.c
 +++ b/gdb/eval.c
 @@ -44,6 +44,7 @@
@@ -2688,7 +2691,7 @@ index de25b39..cced13c 100644
  
  #include "gdb_assert.h"
  
-@@ -505,27 +506,198 @@ init_array_element (struct value *array, struct value *element,
+@@ -505,27 +506,202 @@ init_array_element (struct value *array, struct value *element,
  }
  
  static struct value *
@@ -2760,10 +2763,14 @@ index de25b39..cced13c 100644
 +      value_byte_address = (TYPE_DATA_LOCATION_ADDR (type)
 +			    + value_offset (array));
 +      TYPE_DATA_LOCATION_IS_ADDR (type) = 0;
++      TYPE_DATA_LOCATION_DWARF_BLOCK (type) = NULL;
 +    }
    else
 -    low_bound = value_as_long (evaluate_subexp (NULL_TYPE, exp, pos, noside));
-+    value_byte_address = value_address (array);
++    {
++      gdb_assert (TYPE_DATA_LOCATION_DWARF_BLOCK (type) == NULL);
++      value_byte_address = value_address (array);
++    }
 +
 +  new_array_type = type;
 +
@@ -2805,9 +2812,7 @@ index de25b39..cced13c 100644
 +	  struct value *val;
 +
 +	  index->kind = SUBSCRIPT_NUMBER;
- 
--  if (range_type == HIGH_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
--    high_bound = TYPE_HIGH_BOUND (range);
++
 +	  /* Evaluate each subscript; it must be a legal integer in F77.  */
 +	  val = evaluate_subexp_with_coercion (exp, pos, noside);
 +	  index->number = value_as_long (val);
@@ -2819,7 +2824,9 @@ index de25b39..cced13c 100644
 +    {
 +      struct subscript_index *index = &subscript_array[i];
 +      struct type *range_type = TYPE_INDEX_TYPE (type);
-+
+ 
+-  if (range_type == HIGH_BOUND_DEFAULT || range_type == BOTH_BOUND_DEFAULT)
+-    high_bound = TYPE_HIGH_BOUND (range);
 +      switch (index->kind)
 +	{
 +	case SUBSCRIPT_RANGE:
@@ -2891,19 +2898,19 @@ index de25b39..cced13c 100644
 +    {
 +      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));
 +    }
-+
+ 
+-  return value_slice (array, low_bound, high_bound - low_bound + 1);
 +  do_cleanups (old_chain);
 +  return array;
  }
  
  
-@@ -806,6 +978,7 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -806,6 +982,7 @@ evaluate_subexp_standard (struct type *expect_type,
    int save_pos1;
    struct symbol *function = NULL;
    char *function_name = NULL;
@@ -2911,7 +2918,7 @@ index de25b39..cced13c 100644
  
    pc = (*pos)++;
    op = exp->elts[pc].opcode;
-@@ -1849,6 +2022,8 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -1849,6 +2026,8 @@ evaluate_subexp_standard (struct type *expect_type,
  	      return value_zero (builtin_type (exp->gdbarch)->builtin_int,
  				 not_lval);
  	    }
@@ -2920,7 +2927,7 @@ index de25b39..cced13c 100644
  	  else if (TYPE_TARGET_TYPE (ftype))
  	    return allocate_value (TYPE_TARGET_TYPE (ftype));
  	  else
-@@ -1877,6 +2052,8 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -1877,6 +2056,8 @@ evaluate_subexp_standard (struct type *expect_type,
  
        /* First determine the type code we are dealing with.  */
        arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
@@ -2929,7 +2936,7 @@ index de25b39..cced13c 100644
        type = check_typedef (value_type (arg1));
        code = TYPE_CODE (type);
  
-@@ -1897,23 +2074,13 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -1897,23 +2078,13 @@ evaluate_subexp_standard (struct type *expect_type,
  	      code = TYPE_CODE (type);
  	    }
  	} 
@@ -2955,7 +2962,7 @@ index de25b39..cced13c 100644
  
  	case TYPE_CODE_PTR:
  	case TYPE_CODE_FUNC:
-@@ -2352,49 +2519,6 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -2352,49 +2523,6 @@ evaluate_subexp_standard (struct type *expect_type,
  	}
        return (arg1);
  
@@ -3005,7 +3012,7 @@ index de25b39..cced13c 100644
      case BINOP_LOGICAL_AND:
        arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
        if (noside == EVAL_SKIP)
-@@ -2626,15 +2750,23 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -2626,15 +2754,23 @@ evaluate_subexp_standard (struct type *expect_type,
        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);
@@ -3031,7 +3038,7 @@ index de25b39..cced13c 100644
        else if (noside == EVAL_AVOID_SIDE_EFFECTS)
  	{
  	  type = check_typedef (value_type (arg1));
-@@ -2643,12 +2775,18 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -2643,12 +2779,18 @@ evaluate_subexp_standard (struct type *expect_type,
  	  /* In C you can dereference an array to get the 1st elt.  */
  	      || TYPE_CODE (type) == TYPE_CODE_ARRAY
  	    )
@@ -3055,7 +3062,7 @@ index de25b39..cced13c 100644
  	  else
  	    error (_("Attempt to take contents of a non-pointer value."));
  	}
-@@ -2658,9 +2796,14 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -2658,9 +2800,14 @@ evaluate_subexp_standard (struct type *expect_type,
  	 do.  "long long" variables are rare enough that
  	 BUILTIN_TYPE_LONGEST would seem to be a mistake.  */
        if (TYPE_CODE (type) == TYPE_CODE_INT)
@@ -3073,7 +3080,7 @@ index de25b39..cced13c 100644
  
      case UNOP_ADDR:
        /* C++: check for and handle pointer to members.  */
-@@ -3006,7 +3149,7 @@ evaluate_subexp_with_coercion (struct expression *exp,
+@@ -3006,7 +3153,7 @@ evaluate_subexp_with_coercion (struct expression *exp,
  {
    enum exp_opcode op;
    int pc;
@@ -3082,7 +3089,7 @@ index de25b39..cced13c 100644
    struct symbol *var;
    struct type *type;
  
-@@ -3017,13 +3160,18 @@ evaluate_subexp_with_coercion (struct expression *exp,
+@@ -3017,13 +3164,18 @@ evaluate_subexp_with_coercion (struct expression *exp,
      {
      case OP_VAR_VALUE:
        var = exp->elts[pc + 2].symbol;
@@ -3102,7 +3109,7 @@ index de25b39..cced13c 100644
  	  return value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
  			     val);
  	}
-@@ -3075,9 +3223,13 @@ evaluate_subexp_for_sizeof (struct expression *exp, int *pos)
+@@ -3075,9 +3227,13 @@ evaluate_subexp_for_sizeof (struct expression *exp, int *pos)
  
      case OP_VAR_VALUE:
        (*pos) += 4;
@@ -3119,7 +3126,7 @@ index de25b39..cced13c 100644
  
      default:
        val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
-@@ -3108,18 +3260,25 @@ parse_and_eval_type (char *p, int length)
+@@ -3108,18 +3264,25 @@ parse_and_eval_type (char *p, int length)
  int
  calc_f77_array_dims (struct type *array_type)
  {
@@ -3561,7 +3568,7 @@ index ffb7f53..a2e7e94 100644
  
  b internal_error
 diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
-index 2cf1b4d..d145fd9 100644
+index 91fafa2..0e91248 100644
 --- a/gdb/gdbtypes.c
 +++ b/gdb/gdbtypes.c
 @@ -39,6 +39,9 @@
@@ -3895,7 +3902,7 @@ index 2cf1b4d..d145fd9 100644
  
    if (name)
      TYPE_NAME (type) = obsavestring (name, strlen (name),
-@@ -3259,33 +3393,42 @@ type_pair_eq (const void *item_lhs, const void *item_rhs)
+@@ -3264,33 +3398,42 @@ type_pair_eq (const void *item_lhs, const void *item_rhs)
  }
  
  /* Allocate the hash table used by copy_type_recursive to walk
@@ -3953,7 +3960,7 @@ index 2cf1b4d..d145fd9 100644
      return type;
  
    /* This type shouldn't be pointing to any types in other objfiles;
-@@ -3300,9 +3443,10 @@ copy_type_recursive (struct objfile *objfile,
+@@ -3305,9 +3448,10 @@ copy_type_recursive (struct objfile *objfile,
    new_type = alloc_type_arch (get_type_arch (type));
  
    /* We must add the new type to the hash table immediately, in case
@@ -3967,7 +3974,7 @@ index 2cf1b4d..d145fd9 100644
    stored->old = type;
    stored->new = new_type;
    *slot = stored;
-@@ -3313,6 +3457,19 @@ copy_type_recursive (struct objfile *objfile,
+@@ -3318,6 +3462,19 @@ copy_type_recursive (struct objfile *objfile,
    TYPE_OBJFILE_OWNED (new_type) = 0;
    TYPE_OWNER (new_type).gdbarch = get_type_arch (type);
  
@@ -3987,7 +3994,7 @@ index 2cf1b4d..d145fd9 100644
    if (TYPE_NAME (type))
      TYPE_NAME (new_type) = xstrdup (TYPE_NAME (type));
    if (TYPE_TAG_NAME (type))
-@@ -3321,12 +3478,48 @@ copy_type_recursive (struct objfile *objfile,
+@@ -3326,12 +3483,48 @@ copy_type_recursive (struct objfile *objfile,
    TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type);
    TYPE_LENGTH (new_type) = TYPE_LENGTH (type);
  
@@ -4036,7 +4043,7 @@ index 2cf1b4d..d145fd9 100644
        TYPE_FIELDS (new_type) = XCALLOC (nfields, struct field);
        for (i = 0; i < nfields; i++)
  	{
-@@ -3335,8 +3528,8 @@ copy_type_recursive (struct objfile *objfile,
+@@ -3340,8 +3533,8 @@ copy_type_recursive (struct objfile *objfile,
  	  TYPE_FIELD_BITSIZE (new_type, i) = TYPE_FIELD_BITSIZE (type, i);
  	  if (TYPE_FIELD_TYPE (type, i))
  	    TYPE_FIELD_TYPE (new_type, i)
@@ -4047,7 +4054,7 @@ index 2cf1b4d..d145fd9 100644
  	  if (TYPE_FIELD_NAME (type, i))
  	    TYPE_FIELD_NAME (new_type, i) = 
  	      xstrdup (TYPE_FIELD_NAME (type, i));
-@@ -3363,24 +3556,184 @@ copy_type_recursive (struct objfile *objfile,
+@@ -3368,24 +3561,184 @@ copy_type_recursive (struct objfile *objfile,
  	}
      }
  
@@ -4239,7 +4246,7 @@ index 2cf1b4d..d145fd9 100644
    /* Maybe copy the type_specific bits.
  
       NOTE drow/2005-12-09: We do not copy the C++-specific bits like
-@@ -3397,6 +3750,17 @@ copy_type_recursive (struct objfile *objfile,
+@@ -3402,6 +3755,17 @@ copy_type_recursive (struct objfile *objfile,
    return new_type;
  }
  
@@ -4257,7 +4264,7 @@ index 2cf1b4d..d145fd9 100644
  /* Make a copy of the given TYPE, except that the pointer & reference
     types are not preserved.
     
-@@ -3419,6 +3783,199 @@ copy_type (const struct type *type)
+@@ -3424,6 +3788,199 @@ copy_type (const struct type *type)
    return new_type;
  }
  
@@ -4457,7 +4464,7 @@ index 2cf1b4d..d145fd9 100644
  
  /* Helper functions to initialize architecture-specific types.  */
  
-@@ -3767,6 +4324,8 @@ gdbtypes_post_init (struct gdbarch *gdbarch)
+@@ -3772,6 +4329,8 @@ gdbtypes_post_init (struct gdbarch *gdbarch)
      = lookup_pointer_type (builtin_type->builtin_void);
    builtin_type->builtin_func_ptr
      = lookup_pointer_type (lookup_function_type (builtin_type->builtin_void));
@@ -4466,7 +4473,7 @@ index 2cf1b4d..d145fd9 100644
  
    /* This type represents a GDB internal function.  */
    builtin_type->internal_fn
-@@ -3880,6 +4439,18 @@ objfile_type (struct objfile *objfile)
+@@ -3885,6 +4444,18 @@ objfile_type (struct objfile *objfile)
  		 "<text variable, no debug info>", objfile);
    TYPE_TARGET_TYPE (objfile_type->nodebug_text_symbol)
      = objfile_type->builtin_int;
@@ -4485,7 +4492,7 @@ index 2cf1b4d..d145fd9 100644
    objfile_type->nodebug_data_symbol
      = init_type (TYPE_CODE_INT,
  		 gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT, 0,
-@@ -3934,6 +4505,11 @@ void
+@@ -3939,6 +4510,11 @@ void
  _initialize_gdbtypes (void)
  {
    gdbtypes_data = gdbarch_data_register_post_init (gdbtypes_post_init);
@@ -5784,18 +5791,18 @@ index 8497991..4635853 100644
  		       SYMBOL_LINKAGE_NAME (tsymbol)) == 0)
  	  return SYMBOL_VALUE_ADDRESS (msymbol);
 diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c
-index 8e79070..4f9c0b7 100644
+index fc50e2a..499df7c 100644
 --- a/gdb/p-valprint.c
 +++ b/gdb/p-valprint.c
-@@ -38,6 +38,7 @@
- #include "p-lang.h"
+@@ -39,6 +39,7 @@
  #include "cp-abi.h"
  #include "cp-support.h"
+ #include "exceptions.h"
 +#include "dwarf2loc.h"
  \f
  
  /* See val_print for a description of the various parameters of this
-@@ -62,8 +63,31 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
+@@ -63,8 +64,31 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
    struct type *char_type;
    LONGEST val;
    CORE_ADDR addr;
@@ -5828,7 +5835,7 @@ index 8e79070..4f9c0b7 100644
    switch (TYPE_CODE (type))
      {
      case TYPE_CODE_ARRAY:
-@@ -119,8 +143,8 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
+@@ -120,8 +144,8 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
  		{
  		  i = 0;
  		}
@@ -5839,7 +5846,7 @@ index 8e79070..4f9c0b7 100644
  					original_value, options, i);
  	      fprintf_filtered (stream, "}");
  	    }
-@@ -159,6 +183,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
+@@ -160,6 +184,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
  	  /* Try to print what function it points to.  */
  	  print_address_demangle (gdbarch, addr, stream, demangle);
  	  /* Return value is irrelevant except for string pointers.  */
@@ -5847,7 +5854,7 @@ index 8e79070..4f9c0b7 100644
  	  return (0);
  	}
  
-@@ -250,6 +275,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
+@@ -251,6 +276,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
        /* 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.  */
@@ -5855,7 +5862,7 @@ index 8e79070..4f9c0b7 100644
        return i;
  
        break;
-@@ -566,6 +592,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
+@@ -567,6 +593,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
  	     TYPE_CODE (type));
      }
    gdb_flush (stream);
@@ -10512,10 +10519,10 @@ index 0000000..226dc5d
 +end
 diff --git a/gdb/testsuite/gdb.fortran/subrange.exp b/gdb/testsuite/gdb.fortran/subrange.exp
 new file mode 100644
-index 0000000..55598f9
+index 0000000..be372c1
 --- /dev/null
 +++ b/gdb/testsuite/gdb.fortran/subrange.exp
-@@ -0,0 +1,51 @@
+@@ -0,0 +1,60 @@
 +# Copyright 2011 Free Software Foundation, Inc.
 +
 +# This program is free software; you can redistribute it and/or modify
@@ -10552,27 +10559,36 @@ index 0000000..55598f9
 +gdb_breakpoint [gdb_get_line_number "break-static"]
 +gdb_continue_to_breakpoint "break-static" ".*break-static.*"
 +
-+gdb_test "p a (2, 2:3)" { = \(22, 32\)}
-+gdb_test "p a (2:3, 3)" { = \(32, 33\)}
-+gdb_test "p a (1, 2:)" { = \(21, 31\)}
-+gdb_test "p a (2, :2)" { = \(12, 22\)}
-+gdb_test "p a (3, 2:2)" { = \(23\)}
-+gdb_test "ptype a (3, 2:2)" " = $int4 \\(2:2\\)"
-+gdb_test "p a (4, :)" { = \(14, 24, 34\)}
-+gdb_test "p a (:, :)" { = \(\( *11, 12, 13, 14\) \( *21, 22, 23, 24\) \( *31, 32, 33, 34\) *\)}
-+gdb_test "ptype a (:, :)" " = $int4 \\(4,3\\)"
-+gdb_test "p a (:)" "Wrong number of subscripts"
-+gdb_test "p a (:, :, :)" "Wrong number of subscripts"
++foreach var {a alloc ptr} {
++    global pf_prefix
++    set old_prefix $pf_prefix
++    lappend pf_prefix "$var:"
++
++    gdb_test "p $var (2, 2:3)" { = \(22, 32\)}
++    gdb_test "p $var (2:3, 3)" { = \(32, 33\)}
++    gdb_test "p $var (1, 2:)" { = \(21, 31\)}
++    gdb_test "p $var (2, :2)" { = \(12, 22\)}
++    gdb_test "p $var (3, 2:2)" { = \(23\)}
++    gdb_test "ptype $var (3, 2:2)" " = $int4 \\(2:2\\)"
++    gdb_test "p $var (4, :)" { = \(14, 24, 34\)}
++    gdb_test "p $var (:, :)" { = \(\( *11, 12, 13, 14\) \( *21, 22, 23, 24\) \( *31, 32, 33, 34\) *\)}
++    gdb_test "ptype $var (:, :)" " = $int4 \\(4,3\\)"
++    gdb_test "p $var (:)" "Wrong number of subscripts"
++    gdb_test "p $var (:, :, :)" "Wrong number of subscripts"
++
++    set pf_prefix $old_prefix
++}
++
 +gdb_test_no_output {set $a=a}
 +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..fe33c2c
+index 0000000..4747ea9
 --- /dev/null
 +++ b/gdb/testsuite/gdb.fortran/subrange.f90
-@@ -0,0 +1,23 @@
+@@ -0,0 +1,28 @@
 +! Copyright 2011 Free Software Foundation, Inc.
 +!
 +! This program is free software; you can redistribute it and/or modify
@@ -10589,11 +10605,16 @@ index 0000000..fe33c2c
 +! along with this program.  If not, see <http://www.gnu.org/licenses/>.
 +
 +program test
-+  integer :: a (4, 3)
++  integer, target :: a (4, 3)
++  integer, allocatable :: alloc (:, :)
++  integer, pointer :: ptr (:, :)
 +  do 1 i = 1, 4
 +  do 1 j = 1, 3
 +    a (i, j) = j * 10 + i
 +1 continue
++  allocate (alloc (4, 3))
++  alloc = a
++  ptr => a
 +  write (*,*) a                 ! break-static
 +end
 diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp
@@ -11795,7 +11816,7 @@ index 0000000..31f7656
 +extern void marker (void);
 +extern void forkoff (int nr);
 diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
-index 5a3f1fc..4716626 100644
+index d523d8e..b543ad0 100644
 --- a/gdb/testsuite/lib/gdb.exp
 +++ b/gdb/testsuite/lib/gdb.exp
 @@ -140,6 +140,11 @@ proc gdb_unload {} {
@@ -11956,7 +11977,7 @@ index 82e3adb..a5b9146 100644
  
  static void
 diff --git a/gdb/valarith.c b/gdb/valarith.c
-index 265532c..1e419dd 100644
+index 787fc69..a90f416 100644
 --- a/gdb/valarith.c
 +++ b/gdb/valarith.c
 @@ -198,7 +198,10 @@ value_subscripted_rvalue (struct value *array, LONGEST index, int lowerbound)
@@ -11971,7 +11992,7 @@ index 265532c..1e419dd 100644
    struct value *v;
  
    if (index < lowerbound || (!TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (array_type)
-@@ -297,6 +300,10 @@ int
+@@ -298,6 +301,10 @@ int
  binop_user_defined_p (enum exp_opcode op,
  		      struct value *arg1, struct value *arg2)
  {
@@ -11983,18 +12004,18 @@ index 265532c..1e419dd 100644
  }
  
 diff --git a/gdb/valops.c b/gdb/valops.c
-index 24c2269..21fb35f 100644
+index 5465aba..d267bf8 100644
 --- a/gdb/valops.c
 +++ b/gdb/valops.c
-@@ -38,6 +38,7 @@
- #include "cp-support.h"
- #include "dfp.h"
- #include "user-regs.h"
+@@ -47,6 +47,7 @@
+ #include "objfiles.h"
+ #include "symtab.h"
+ #include "exceptions.h"
 +#include "dwarf2loc.h"
  
- #include <errno.h>
- #include "gdb_string.h"
-@@ -907,6 +908,65 @@ value_one (struct type *type, enum lval_type lv)
+ extern int overload_debug;
+ /* Local functions.  */
+@@ -915,6 +916,65 @@ value_one (struct type *type, enum lval_type lv)
    return val;
  }
  
@@ -12060,7 +12081,7 @@ index 24c2269..21fb35f 100644
  /* Helper function for value_at, value_at_lazy, and value_at_lazy_stack.  */
  
  static struct value *
-@@ -1005,15 +1065,21 @@ value_fetch_lazy (struct value *val)
+@@ -1011,12 +1071,20 @@ value_fetch_lazy (struct value *val)
      }
    else if (VALUE_LVAL (val) == lval_memory)
      {
@@ -12069,27 +12090,24 @@ index 24c2269..21fb35f 100644
 +      CORE_ADDR addr = value_raw_address (val);
  
 -      if (length)
+-	read_value_memory (val, 0, value_stack (val),
+-			   addr, value_contents_all_raw (val), length);
 +      if (object_address_get_data (value_type (val), &addr))
- 	{
--	  if (value_stack (val))
--	    read_stack (addr, value_contents_all_raw (val), length);
--	  else
--	    read_memory (addr, value_contents_all_raw (val), length);
++	{
 +	  struct type *type = value_enclosing_type (val);
 +	  int length = TYPE_LENGTH (check_typedef (type));
 +
 +	  if (length)
 +	    {
 +	      addr += value_offset (val);
-+	      if (value_stack (val))
-+		read_stack (addr, value_contents_all_raw (val), length);
-+	      else
-+		read_memory (addr, value_contents_all_raw (val), length);
++	      read_value_memory (val, 0, value_stack (val),
++				 addr, value_contents_all_raw (val), length);
 +	    }
- 	}
++	}
      }
    else if (VALUE_LVAL (val) == lval_register)
-@@ -1429,7 +1495,18 @@ address_of_variable (struct symbol *var, struct block *b)
+     {
+@@ -1520,7 +1588,18 @@ address_of_variable (struct symbol *var, struct block *b)
    if ((VALUE_LVAL (val) == lval_memory && value_lazy (val))
        || TYPE_CODE (type) == TYPE_CODE_FUNC)
      {
@@ -12109,7 +12127,7 @@ index 24c2269..21fb35f 100644
  
        return value_from_pointer (lookup_pointer_type (type), addr);
      }
-@@ -1536,6 +1613,7 @@ struct value *
+@@ -1627,6 +1706,7 @@ struct value *
  value_coerce_array (struct value *arg1)
  {
    struct type *type = check_typedef (value_type (arg1));
@@ -12117,7 +12135,7 @@ index 24c2269..21fb35f 100644
  
    /* If the user tries to do something requiring a pointer with an
       array that has not yet been pushed to the target, then this would
-@@ -1545,8 +1623,12 @@ value_coerce_array (struct value *arg1)
+@@ -1636,8 +1716,12 @@ value_coerce_array (struct value *arg1)
    if (VALUE_LVAL (arg1) != lval_memory)
      error (_("Attempt to take address of value not located in memory."));
  
@@ -12131,7 +12149,7 @@ index 24c2269..21fb35f 100644
  }
  
  /* Given a value which is a function, return a value which is a pointer
-@@ -3587,6 +3669,8 @@ value_slice (struct value *array, int lowbound, int length)
+@@ -3680,6 +3764,8 @@ value_slice (struct value *array, int lowbound, int length)
  					TYPE_TARGET_TYPE (range_type),
  					lowbound, 
  					lowbound + length - 1);
@@ -12141,7 +12159,7 @@ index 24c2269..21fb35f 100644
      {
        int i;
 diff --git a/gdb/valprint.c b/gdb/valprint.c
-index b32d6fc..7319c5d 100644
+index 286ef9e..1fe58b1 100644
 --- a/gdb/valprint.c
 +++ b/gdb/valprint.c
 @@ -36,6 +36,7 @@
@@ -12160,7 +12178,7 @@ index b32d6fc..7319c5d 100644
      case TYPE_CODE_BITSTRING:
        return 0;
      default:
-@@ -1173,6 +1173,7 @@ val_print_array_elements (struct type *type,
+@@ -1193,6 +1193,7 @@ val_print_array_elements (struct type *type,
  {
    unsigned int things_printed = 0;
    unsigned len;
@@ -12168,7 +12186,7 @@ index b32d6fc..7319c5d 100644
    struct type *elttype, *index_type;
    unsigned eltlen;
    /* Position of the array element we are examining to see
-@@ -1181,9 +1182,33 @@ val_print_array_elements (struct type *type,
+@@ -1201,9 +1202,33 @@ val_print_array_elements (struct type *type,
    /* Number of repetitions we have detected so far.  */
    unsigned int reps;
    LONGEST low_bound, high_bound;
@@ -12204,7 +12222,7 @@ index b32d6fc..7319c5d 100644
    index_type = TYPE_INDEX_TYPE (type);
  
    if (get_array_bounds (type, &low_bound, &high_bound))
-@@ -1262,6 +1287,8 @@ val_print_array_elements (struct type *type,
+@@ -1284,6 +1309,8 @@ val_print_array_elements (struct type *type,
      {
        fprintf_filtered (stream, "...");
      }
@@ -12214,18 +12232,18 @@ index b32d6fc..7319c5d 100644
  
  /* Read LEN bytes of target memory at address MEMADDR, placing the
 diff --git a/gdb/value.c b/gdb/value.c
-index e26270c..29bb0ca 100644
+index 011b5e7..bcfbe5d 100644
 --- a/gdb/value.c
 +++ b/gdb/value.c
-@@ -39,6 +39,7 @@
- #include "objfiles.h"
- #include "valprint.h"
+@@ -41,6 +41,7 @@
  #include "cli/cli-decode.h"
+ #include "exceptions.h"
+ #include "python/python.h"
 +#include "observer.h"
  
- #include "python/python.h"
+ #include "tracepoint.h"
  
-@@ -870,12 +871,15 @@ void
+@@ -1339,12 +1340,15 @@ void
  set_value_component_location (struct value *component,
  			      const struct value *whole)
  {
@@ -12241,7 +12259,7 @@ index e26270c..29bb0ca 100644
    if (whole->lval == lval_computed)
      {
        struct lval_funcs *funcs = whole->location.computed.funcs;
-@@ -883,6 +887,12 @@ set_value_component_location (struct value *component,
+@@ -1352,6 +1356,12 @@ set_value_component_location (struct value *component,
        if (funcs->copy_closure)
          component->location.computed.closure = funcs->copy_closure (whole);
      }
@@ -12254,7 +12272,7 @@ index e26270c..29bb0ca 100644
  }
  
  \f
-@@ -1016,6 +1026,29 @@ show_values (char *num_exp, int from_tty)
+@@ -1485,6 +1495,29 @@ show_values (char *num_exp, int from_tty)
        num_exp[1] = '\0';
      }
  }
@@ -12284,7 +12302,7 @@ index e26270c..29bb0ca 100644
  \f
  /* Internal variables.  These are variables within the debugger
     that hold values assigned by debugger commands.
-@@ -1511,6 +1544,40 @@ call_internal_function (struct gdbarch *gdbarch,
+@@ -1963,6 +1996,36 @@ call_internal_function (struct gdbarch *gdbarch,
    return (*ifn->handler) (gdbarch, language, ifn->cookie, argc, argv);
  }
  
@@ -12306,10 +12324,6 @@ index e26270c..29bb0ca 100644
 +      case INTERNALVAR_INTEGER:
 +	type_mark_used (var->u.integer.type);
 +	break;
-+
-+      case INTERNALVAR_POINTER:
-+	type_mark_used (var->u.pointer.type);
-+	break;
 +      }
 +
 +  for (chunk = value_history_chain; chunk != NULL; chunk = chunk->next)
@@ -12325,7 +12339,7 @@ index e26270c..29bb0ca 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
-@@ -1558,11 +1625,10 @@ preserve_one_value (struct value *value, struct objfile *objfile,
+@@ -2010,11 +2073,10 @@ preserve_one_value (struct value *value, struct objfile *objfile,
  		    htab_t copied_types)
  {
    if (TYPE_OBJFILE (value->type) == objfile)
@@ -12339,7 +12353,7 @@ index e26270c..29bb0ca 100644
  						 copied_types);
  }
  
-@@ -1577,13 +1643,13 @@ preserve_one_internalvar (struct internalvar *var, struct objfile *objfile,
+@@ -2029,7 +2091,7 @@ preserve_one_internalvar (struct internalvar *var, struct objfile *objfile,
      case INTERNALVAR_INTEGER:
        if (var->u.integer.type && TYPE_OBJFILE (var->u.integer.type) == objfile)
  	var->u.integer.type
@@ -12347,15 +12361,8 @@ index e26270c..29bb0ca 100644
 +	  = copy_type_recursive (var->u.integer.type, copied_types);
        break;
  
-     case INTERNALVAR_POINTER:
-       if (TYPE_OBJFILE (var->u.pointer.type) == objfile)
- 	var->u.pointer.type
--	  = copy_type_recursive (objfile, var->u.pointer.type, copied_types);
-+	  = copy_type_recursive (var->u.pointer.type, copied_types);
-       break;
- 
      case INTERNALVAR_VALUE:
-@@ -2449,7 +2515,24 @@ value_from_decfloat (struct type *type, const gdb_byte *dec)
+@@ -2994,7 +3056,24 @@ value_from_decfloat (struct type *type, const gdb_byte *dec)
  struct value *
  coerce_ref (struct value *arg)
  {
@@ -12381,7 +12388,7 @@ index e26270c..29bb0ca 100644
  
    if (TYPE_CODE (value_type_arg_tmp) == TYPE_CODE_REF)
      arg = value_at_lazy (TYPE_TARGET_TYPE (value_type_arg_tmp),
-@@ -2547,4 +2630,8 @@ VARIABLE is already initialized."));
+@@ -3092,4 +3171,8 @@ VARIABLE is already initialized."));
    add_prefix_cmd ("function", no_class, function_command, _("\
  Placeholder command for showing help on convenience functions."),
  		  &functionlist, "function ", 0, &cmdlist);
@@ -12391,10 +12398,10 @@ index e26270c..29bb0ca 100644
 +  observer_attach_mark_used (value_types_mark_used);
  }
 diff --git a/gdb/value.h b/gdb/value.h
-index aa8ff3c..2b4543c 100644
+index e019e56..ba5e20f 100644
 --- a/gdb/value.h
 +++ b/gdb/value.h
-@@ -395,6 +395,10 @@ extern struct value *value_from_double (struct type *type, DOUBLEST num);
+@@ -472,6 +472,10 @@ extern struct value *value_from_double (struct type *type, DOUBLEST num);
  extern struct value *value_from_decfloat (struct type *type,
  					  const gdb_byte *decbytes);
  

diff --git a/gdb-bz562763-pretty-print-2d-vectors.patch b/gdb-bz562763-pretty-print-2d-vectors.patch
index 3c5e0db..0e3d216 100644
--- a/gdb-bz562763-pretty-print-2d-vectors.patch
+++ b/gdb-bz562763-pretty-print-2d-vectors.patch
@@ -12,10 +12,10 @@
 	* gdb.python/pr10659.exp.  New file.
 	* gdb.python/pr10659.py: New file.
 
-Index: gdb-7.2.50.20110206/gdb/valprint.h
+Index: gdb-7.2.50.20110218/gdb/valprint.h
 ===================================================================
---- gdb-7.2.50.20110206.orig/gdb/valprint.h	2011-01-25 18:59:00.000000000 +0100
-+++ gdb-7.2.50.20110206/gdb/valprint.h	2011-02-06 20:55:59.000000000 +0100
+--- gdb-7.2.50.20110218.orig/gdb/valprint.h	2011-02-14 12:35:45.000000000 +0100
++++ gdb-7.2.50.20110218/gdb/valprint.h	2011-02-18 10:44:32.000000000 +0100
 @@ -90,6 +90,9 @@ struct value_print_options
  
    /* If nonzero, print the value in "summary" form.  */
@@ -26,10 +26,10 @@ Index: gdb-7.2.50.20110206/gdb/valprint.h
  };
  
  /* The global print options set by the user.  In general this should
-Index: gdb-7.2.50.20110206/gdb/python/py-prettyprint.c
+Index: gdb-7.2.50.20110218/gdb/python/py-prettyprint.c
 ===================================================================
---- gdb-7.2.50.20110206.orig/gdb/python/py-prettyprint.c	2011-01-26 21:58:48.000000000 +0100
-+++ gdb-7.2.50.20110206/gdb/python/py-prettyprint.c	2011-02-06 20:56:30.000000000 +0100
+--- gdb-7.2.50.20110218.orig/gdb/python/py-prettyprint.c	2011-02-14 12:10:53.000000000 +0100
++++ gdb-7.2.50.20110218/gdb/python/py-prettyprint.c	2011-02-18 10:45:02.000000000 +0100
 @@ -501,7 +501,7 @@ print_children (PyObject *printer, const
  
    /* Use the prettyprint_arrays option if we are printing an array,
@@ -103,15 +103,15 @@ Index: gdb-7.2.50.20110206/gdb/python/py-prettyprint.c
      }
  
   done:
-@@ -690,6 +713,7 @@ apply_val_pretty_printer (struct type *t
+@@ -689,6 +712,7 @@ apply_val_pretty_printer (struct type *t
+   char *hint = NULL;
    struct cleanup *cleanups;
    int result = 0;
-   enum string_repr_result print_result;
 +  struct value_print_options *options_copy;
-   cleanups = ensure_python_env (gdbarch, language);
+   enum string_repr_result print_result;
  
-   /* Instantiate the printer.  */
-@@ -721,9 +745,21 @@ apply_val_pretty_printer (struct type *t
+   /* No pretty-printer support for unavailable values.  */
+@@ -726,9 +750,21 @@ apply_val_pretty_printer (struct type *t
  
    /* If we are printing a map, we want some special formatting.  */
    hint = gdbpy_get_display_hint (printer);
@@ -133,10 +133,10 @@ Index: gdb-7.2.50.20110206/gdb/python/py-prettyprint.c
    print_result = print_string_repr (printer, hint, stream, recurse,
  				    options, language, gdbarch);
    if (print_result != string_repr_error)
-Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.python/pr10659.cc
+Index: gdb-7.2.50.20110218/gdb/testsuite/gdb.python/pr10659.cc
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.2.50.20110206/gdb/testsuite/gdb.python/pr10659.cc	2011-02-06 20:55:59.000000000 +0100
++++ gdb-7.2.50.20110218/gdb/testsuite/gdb.python/pr10659.cc	2011-02-18 10:44:32.000000000 +0100
 @@ -0,0 +1,43 @@
 +#include <list>
 +#include <vector>  // /usr/include/c++/4.4.1/bits/vector.tcc
@@ -181,10 +181,10 @@ Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.python/pr10659.cc
 +  
 +  return 0;  // break
 +}
-Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.python/pr10659.exp
+Index: gdb-7.2.50.20110218/gdb/testsuite/gdb.python/pr10659.exp
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.2.50.20110206/gdb/testsuite/gdb.python/pr10659.exp	2011-02-06 20:55:59.000000000 +0100
++++ gdb-7.2.50.20110218/gdb/testsuite/gdb.python/pr10659.exp	2011-02-18 10:44:32.000000000 +0100
 @@ -0,0 +1,82 @@
 +#Copyright 2010 Free Software Foundation, Inc.
 +
@@ -268,10 +268,10 @@ Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.python/pr10659.exp
 +# 
 +
 +
-Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.python/pr10659.py
+Index: gdb-7.2.50.20110218/gdb/testsuite/gdb.python/pr10659.py
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gdb-7.2.50.20110206/gdb/testsuite/gdb.python/pr10659.py	2011-02-06 20:55:59.000000000 +0100
++++ gdb-7.2.50.20110218/gdb/testsuite/gdb.python/pr10659.py	2011-02-18 10:44:32.000000000 +0100
 @@ -0,0 +1,109 @@
 +# Copyright (C) 2008, 2009 Free Software Foundation, Inc.
 +
@@ -382,10 +382,10 @@ Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.python/pr10659.py
 +fake_pretty_printers_dict = {}
 +
 +build_libfakecxx_dictionary ()
-Index: gdb-7.2.50.20110206/gdb/valprint.c
+Index: gdb-7.2.50.20110218/gdb/valprint.c
 ===================================================================
---- gdb-7.2.50.20110206.orig/gdb/valprint.c	2011-02-06 20:55:52.000000000 +0100
-+++ gdb-7.2.50.20110206/gdb/valprint.c	2011-02-06 20:55:59.000000000 +0100
+--- gdb-7.2.50.20110218.orig/gdb/valprint.c	2011-02-18 10:44:16.000000000 +0100
++++ gdb-7.2.50.20110218/gdb/valprint.c	2011-02-18 10:44:32.000000000 +0100
 @@ -85,7 +85,8 @@ struct value_print_options user_print_op
    1,				/* static_field_print */
    1,				/* pascal_static_field_print */

diff --git a/gdb-compile-doc-info.patch b/gdb-compile-doc-info.patch
deleted file mode 100644
index 6718f0c..0000000
--- a/gdb-compile-doc-info.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-http://sourceware.org/ml/gdb-patches/2011-02/msg00234.html
-Subject: Re: [rfa/rfc] Build libcommon.a for gdb and gdbserver
-
-This is a multi-part message in MIME format.
---------------030200050701050508020307
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-On 02/12/2011 02:47 AM, Tom Tromey wrote:
-> common/Makefile.in doesn't have a copyright header.
-> I didn't check the other files.
-> 
-
-Add a copyright header to common/Makefile.in.  Other files have
-copyright header.  Applied as obvious.
-
-> "make info" now fails.  I didn't check other subdir targets in
-> gdb/Makefile.in.  Automake would solve this plus some other things
-> ... :-)
-
-Add some more targets in common/Makefile.in in this patch.  `make
-{info,pdf,html,dvi}' works.
-
--- 
-Yao (齐尧)
-
---------------030200050701050508020307
-Content-Type: text/x-patch;
- name="more-targets.patch"
-Content-Transfer-Encoding: 7bit
-Content-Disposition: attachment;
- filename="more-targets.patch"
-
-common/
-
-	* Makefile.in: Add more targets for make.
-
-Index: Makefile.in
-===================================================================
-RCS file: /cvs/src/src/gdb/common/Makefile.in,v
-retrieving revision 1.1
-diff -u -r1.1 Makefile.in
---- ./gdb/common/Makefile.in	11 Feb 2011 09:57:25 -0000	1.1
-+++ ./gdb/common/Makefile.in	12 Feb 2011 02:54:15 -0000
-@@ -74,3 +91,20 @@
- distclean maintainer-clean realclean: clean
- 	-rm -f *~
- 	-rm -f Makefile config.status config.log
-+
-+.PHONY: install
-+install: all
-+
-+.PHONY: install-only
-+install-only:
-+ 
-+.PHONY: uninstall
-+uninstall: 
-+
-+.PHONY: check installcheck info dvi pdf html
-+.PHONY: install-info install-pdf install-html clean-info
-+check installcheck:
-+info dvi pdf html:
-+install-info install-pdf install-html:
-+clean-info:
-+
-
---------------030200050701050508020307--
-

diff --git a/gdb-upstream.patch b/gdb-upstream.patch
deleted file mode 100644
index 0b30fdf..0000000
--- a/gdb-upstream.patch
+++ /dev/null
@@ -1,206 +0,0 @@
-http://sourceware.org/ml/gdb-cvs/2011-02/msg00063.html
-
-### src/gdb/ChangeLog	2011/02/12 13:07:38	1.12557
-### src/gdb/ChangeLog	2011/02/13 09:09:33	1.12558
-## -1,3 +1,9 @@
-+2011-02-13  Jan Kratochvil  <jan.kratochvil@redhat.com>
-+
-+	* symtab.c (find_pc_sect_line): New variable objfile, initialize it
-+	from S.  Iterate S using ALL_OBJFILE_SYMTABS.  Verify BV for each S.
-+	* symtab.h (struct symtab) <next>: Comment extension.
-+
- 2011-02-12  Yao Qi  <yao@codesourcery.com>
- 
- 	* Makefile.in (CLEANDIRS): Remove duplicated common dir.
---- src/gdb/symtab.c	2011/01/11 21:53:24	1.257
-+++ src/gdb/symtab.c	2011/02/13 09:09:36	1.258
-@@ -1904,6 +1904,7 @@
-   struct blockvector *bv;
-   struct minimal_symbol *msymbol;
-   struct minimal_symbol *mfunsym;
-+  struct objfile *objfile;
- 
-   /* Info on best line seen so far, and where it starts, and its file.  */
- 
-@@ -2031,13 +2032,17 @@
-     }
- 
-   bv = BLOCKVECTOR (s);
-+  objfile = s->objfile;
- 
-   /* Look at all the symtabs that share this blockvector.
-      They all have the same apriori range, that we found was right;
-      but they have different line tables.  */
- 
--  for (; s && BLOCKVECTOR (s) == bv; s = s->next)
-+  ALL_OBJFILE_SYMTABS (objfile, s)
-     {
-+      if (BLOCKVECTOR (s) != bv)
-+	continue;
-+
-       /* Find the best line in this symtab.  */
-       l = LINETABLE (s);
-       if (!l)
---- src/gdb/symtab.h	2011/01/11 21:53:25	1.168
-+++ src/gdb/symtab.h	2011/02/13 09:09:36	1.169
-@@ -738,8 +738,7 @@
- 
- struct symtab
- {
--
--  /* Chain of all existing symtabs.  */
-+  /* Unordered chain of all existing symtabs of this objfile.  */
- 
-   struct symtab *next;
- 
-
-
-
-http://sourceware.org/ml/gdb-cvs/2011-02/msg00064.html
-
-### src/gdb/ChangeLog	2011/02/13 09:09:33	1.12558
-### src/gdb/ChangeLog	2011/02/13 09:15:50	1.12559
-## -1,5 +1,12 @@
- 2011-02-13  Jan Kratochvil  <jan.kratochvil@redhat.com>
- 
-+	Fix const/volatile qualifiers of C++ types, PR c++/12328.
-+	* c-typeprint.c (c_type_print_args): Update the function comment.  New
-+	variable param_type, initialize it.  Remove const/volatile qualifiers
-+	for language_cplus and !show_artificial.  Use param_type.
-+
-+2011-02-13  Jan Kratochvil  <jan.kratochvil@redhat.com>
-+
- 	* symtab.c (find_pc_sect_line): New variable objfile, initialize it
- 	from S.  Iterate S using ALL_OBJFILE_SYMTABS.  Verify BV for each S.
- 	* symtab.h (struct symtab) <next>: Comment extension.
---- src/gdb/c-typeprint.c	2011/01/07 19:36:15	1.68
-+++ src/gdb/c-typeprint.c	2011/02/13 09:15:53	1.69
-@@ -388,9 +388,12 @@
- /* Print out the arguments of TYPE, which should have TYPE_CODE_METHOD
-    or TYPE_CODE_FUNC, to STREAM.  Artificial arguments, such as "this"
-    in non-static methods, are displayed if SHOW_ARTIFICIAL is
--   non-zero.  LANGUAGE is the language in which TYPE was defined.
--   This is a necessary evil since this code is used by the C, C++, and
--   Java backends.  */
-+   non-zero.  If SHOW_ARTIFICIAL is zero and LANGUAGE is language_cplus
-+   the topmost parameter types get removed their possible const and volatile
-+   qualifiers to match demangled linkage name parameters part of such function
-+   type.  LANGUAGE is the language in which TYPE was defined.  This is
-+   a necessary evil since this code is used by the C, C++, and Java backends.
-+   */
- 
- void
- c_type_print_args (struct type *type, struct ui_file *stream,
-@@ -406,6 +409,8 @@
- 
-   for (i = 0; i < TYPE_NFIELDS (type); i++)
-     {
-+      struct type *param_type;
-+
-       if (TYPE_FIELD_ARTIFICIAL (type, i) && !show_artificial)
- 	continue;
- 
-@@ -415,12 +420,24 @@
- 	  wrap_here ("    ");
- 	}
- 
-+      param_type = TYPE_FIELD_TYPE (type, i);
-+
-+      if (language == language_cplus && !show_artificial)
-+	{
-+	  /* C++ standard, 13.1 Overloadable declarations, point 3, item:
-+	     - Parameter declarations that differ only in the presence or
-+	       absence of const and/or volatile are equivalent.
-+
-+	     And the const/volatile qualifiers are not present in the mangled
-+	     names as produced by GCC.  */
-+
-+	  param_type = make_cv_type (0, 0, param_type, NULL);
-+	}
-+
-       if (language == language_java)
--	java_print_type (TYPE_FIELD_TYPE (type, i),
--			 "", stream, -1, 0);
-+	java_print_type (param_type, "", stream, -1, 0);
-       else
--	c_print_type (TYPE_FIELD_TYPE (type, i),
--		      "", stream, -1, 0);
-+	c_print_type (param_type, "", stream, -1, 0);
-       printed_any = 1;
-     }
- 
-### src/gdb/testsuite/ChangeLog	2011/02/08 13:30:08	1.2576
-### src/gdb/testsuite/ChangeLog	2011/02/13 09:15:53	1.2577
-## -1,3 +1,9 @@
-+2011-02-13  Jan Kratochvil  <jan.kratochvil@redhat.com>
-+
-+	Fix const/volatile qualifiers of C++ types, PR c++/12328.
-+	* gdb.cp/overload-const.exp: New file.
-+	* gdb.cp/overload-const.cc: New file.
-+
- 2011-02-08  Ulrich Weigand  <uweigand@de.ibm.com>
- 
- 	* gdb.opencl/callfuncs.cl: New file.
---- src/gdb/testsuite/gdb.cp/overload-const.cc
-+++ src/gdb/testsuite/gdb.cp/overload-const.cc	2011-02-13 17:47:15.587780000 +0000
-@@ -0,0 +1,28 @@
-+/* This test case 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/>.  */
-+
-+class myclass
-+{
-+public:
-+  static void func(const int aa) {}
-+};
-+
-+int
-+main ()
-+{
-+  myclass::func (42);
-+}
---- src/gdb/testsuite/gdb.cp/overload-const.exp
-+++ src/gdb/testsuite/gdb.cp/overload-const.exp	2011-02-13 17:47:15.884698000 +0000
-@@ -0,0 +1,29 @@
-+# 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/>.
-+
-+# This file is part of the gdb testsuite.
-+
-+if {[skip_cplus_tests]} { continue }
-+
-+set testfile "overload-const"
-+if [prepare_for_testing $testfile $testfile $testfile.cc {c++ debug}] {
-+    return -1
-+}
-+
-+gdb_test_no_output "set language c++"
-+
-+if [gdb_breakpoint "myclass::func"] {
-+    pass "setting breakpoint at myclass::func"
-+}

diff --git a/gdb.spec b/gdb.spec
index ddbe421..26ad3fe 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.50.20110213
+Version: 7.2.50.20110218
 
 # 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: 23%{?_with_upstream:.upstream}%{?dist}
+Release: 24%{?_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
@@ -264,7 +264,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
@@ -558,10 +558,6 @@ Patch565: gdb-physname-pr11734-1of2.patch
 Patch566: gdb-physname-pr11734-2of2.patch
 Patch567: gdb-physname-pr12273.patch
 
-# Temporary HEAD compilation fix.
-# =drop
-Patch568: gdb-compile-doc-info.patch
-
 BuildRequires: ncurses-devel%{?_isa} texinfo gettext flex bison expat-devel%{?_isa}
 Requires: readline%{?_isa}
 BuildRequires: readline-devel%{?_isa}
@@ -716,7 +712,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
@@ -831,7 +827,6 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
 %patch565 -p1
 %patch566 -p1
 %patch567 -p1
-%patch568 -p1
 
 %patch390 -p1
 %patch393 -p1
@@ -1239,6 +1234,10 @@ fi
 %{_infodir}/gdb.info*
 
 %changelog
+* Fri Feb 18 2011 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.2.50.20110218-24.fc15
+- Rebase to FSF GDB 7.2.50.20110218 (which is a 7.3 pre-release).
+- [vla] Fox Fortran vector slices for allocated arrays (for BZ 609782).
+
 * Tue Feb 15 2011 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.2.50.20110213-23.fc15
 - Move the GFDL License to gdb-doc.
 

diff --git a/sources b/sources
index b9a85a9..4219109 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
 04e5c4b1b9e633422cc48990fe61958d  libstdc++-v3-python-r155978.tar.bz2
-626f2ecdf94c65ec5b8f2359f3488d96  gdb-7.2.50.20110213.tar.bz2
+91f8283c9b38ce8f746a308bc4165d81  gdb-7.2.50.20110218.tar.bz2

                 reply	other threads:[~2026-06-27 23:55 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178260450286.1.2930517074686838881.rpms-gdb-3080c0e54fa4@fedoraproject.org \
    --to=jan.kratochvil@redhat.com \
    --cc=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox