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; } -@@ -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 /* 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) "", 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" /* 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 . + +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 - #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 } -@@ -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 /* 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 +#include // /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 -+ -+ * 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) : Comment extension. -+ - 2011-02-12 Yao Qi - - * 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 - -+ 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 -+ - * 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) : 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 -+ -+ 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 - - * 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 . */ -+ -+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 . -+ -+# 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 - 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 - 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