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