From patchwork Tue Apr 11 15:01:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 19972 Received: (qmail 114508 invoked by alias); 11 Apr 2017 15:23:26 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 111947 invoked by uid 89); 11 Apr 2017 15:23:24 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: outbound-ss-1812.hostmonster.com Received: from gproxy1-pub.mail.unifiedlayer.com (HELO outbound-ss-1812.hostmonster.com) (69.89.25.95) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 11 Apr 2017 15:23:21 +0000 Received: from cmgw3 (cmgw4 [10.0.90.84]) by gproxy1.mail.unifiedlayer.com (Postfix) with ESMTP id 9CB2F177403 for ; Tue, 11 Apr 2017 09:01:26 -0600 (MDT) Received: from box522.bluehost.com ([74.220.219.122]) by cmgw3 with id 731P1v0172f2jeq0131Sjd; Tue, 11 Apr 2017 09:01:26 -0600 X-Authority-Analysis: v=2.2 cv=VKStp5HX c=1 sm=1 tr=0 a=GsOEXm/OWkKvwdLVJsfwcA==:117 a=GsOEXm/OWkKvwdLVJsfwcA==:17 a=AzvcPWV-tVgA:10 a=zstS-IiYAAAA:8 a=mtX00WeluRQWhhw1BdoA:9 a=zQRUnpJRNsOLICGc:21 a=RCSNp6jmvKqUDkPw:21 a=4G6NA9xxw8l3yy4pmD5M:22 Received: from 75-166-65-226.hlrn.qwest.net ([75.166.65.226]:50042 helo=bapiya.Home) by box522.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.87) (envelope-from ) id 1cxxIJ-0007Ml-6L; Tue, 11 Apr 2017 09:01:23 -0600 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [RFA v2 15/17] Change breakpoint event locations to event_location_up Date: Tue, 11 Apr 2017 09:01:10 -0600 Message-Id: <20170411150112.23207-16-tom@tromey.com> In-Reply-To: <20170411150112.23207-1-tom@tromey.com> References: <20170411150112.23207-1-tom@tromey.com> X-BWhitelist: no X-Exim-ID: 1cxxIJ-0007Ml-6L X-Source-Sender: 75-166-65-226.hlrn.qwest.net (bapiya.Home) [75.166.65.226]:50042 X-Source-Auth: tom+tromey.com X-Email-Count: 16 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTIyLmJsdWVob3N0LmNvbQ== This is a follow-up to an earlier patch. It changes breakpoint's location and location_range_end members to be of type event_location_up, then fixes up the users. gdb/ChangeLog 2017-04-11 Tom Tromey * remote.c (remote_download_tracepoint): Update. * python/py-breakpoint.c (bppy_get_location): Update. * guile/scm-breakpoint.c (bpscm_print_breakpoint_smob) (gdbscm_breakpoint_location): Update. * elfread.c (elf_gnu_ifunc_resolver_return_stop): Update. * breakpoint.h (struct breakpoint) : Change type to event_location_up. * breakpoint.c (create_overlay_event_breakpoint) (create_longjmp_master_breakpoint) (create_std_terminate_master_breakpoint) (create_exception_master_breakpoint) (breakpoint_event_location_empty_p, print_breakpoint_location) (print_one_breakpoint_location, create_thread_event_breakpoint) (init_breakpoint_sal, create_breakpoint) (print_recreate_ranged_breakpoint, break_range_command) (init_ada_exception_breakpoint, say_where): Update. (base_breakpoint_dtor): Don't call delete_event_location. (bkpt_print_recreate, tracepoint_print_recreate) (dprintf_print_recreate, update_static_tracepoint) (breakpoint_re_set_default): Update. --- gdb/ChangeLog | 23 ++++++++++++++ gdb/breakpoint.c | 74 ++++++++++++++++++++++------------------------ gdb/breakpoint.h | 10 +++---- gdb/elfread.c | 2 +- gdb/guile/scm-breakpoint.c | 4 +-- gdb/python/py-breakpoint.c | 2 +- gdb/remote.c | 2 +- 7 files changed, 68 insertions(+), 49 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 346ee66..3faadc2 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,28 @@ 2017-04-11 Tom Tromey + * remote.c (remote_download_tracepoint): Update. + * python/py-breakpoint.c (bppy_get_location): Update. + * guile/scm-breakpoint.c (bpscm_print_breakpoint_smob) + (gdbscm_breakpoint_location): Update. + * elfread.c (elf_gnu_ifunc_resolver_return_stop): Update. + * breakpoint.h (struct breakpoint) : + Change type to event_location_up. + * breakpoint.c (create_overlay_event_breakpoint) + (create_longjmp_master_breakpoint) + (create_std_terminate_master_breakpoint) + (create_exception_master_breakpoint) + (breakpoint_event_location_empty_p, print_breakpoint_location) + (print_one_breakpoint_location, create_thread_event_breakpoint) + (init_breakpoint_sal, create_breakpoint) + (print_recreate_ranged_breakpoint, break_range_command) + (init_ada_exception_breakpoint, say_where): Update. + (base_breakpoint_dtor): Don't call delete_event_location. + (bkpt_print_recreate, tracepoint_print_recreate) + (dprintf_print_recreate, update_static_tracepoint) + (breakpoint_re_set_default): Update. + +2017-04-11 Tom Tromey + * compile/compile-loc2c.c (compute_stack_depth_worker): Change type of "to_do". Update. (compute_stack_depth): Use std::vector. diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 3a3cd80..afc8309 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -67,7 +67,6 @@ #include "dummy-frame.h" #include "interps.h" #include "format.h" -#include "location.h" #include "thread-fsm.h" #include "tid-parse.h" @@ -3472,7 +3471,7 @@ create_overlay_event_breakpoint (void) &internal_breakpoint_ops); initialize_explicit_location (&explicit_loc); explicit_loc.function_name = ASTRDUP (func_name); - b->location = new_explicit_location (&explicit_loc).release (); + b->location = new_explicit_location (&explicit_loc); if (overlay_debugging == ovly_auto) { @@ -3552,8 +3551,7 @@ create_longjmp_master_breakpoint (void) objfile), bp_longjmp_master, &internal_breakpoint_ops); - b->location - = new_probe_location ("-probe-stap libc:longjmp").release (); + b->location = new_probe_location ("-probe-stap libc:longjmp"); b->enable_state = bp_disabled; } @@ -3593,7 +3591,7 @@ create_longjmp_master_breakpoint (void) &internal_breakpoint_ops); initialize_explicit_location (&explicit_loc); explicit_loc.function_name = ASTRDUP (func_name); - b->location = new_explicit_location (&explicit_loc).release (); + b->location = new_explicit_location (&explicit_loc); b->enable_state = bp_disabled; } } @@ -3651,7 +3649,7 @@ create_std_terminate_master_breakpoint (void) &internal_breakpoint_ops); initialize_explicit_location (&explicit_loc); explicit_loc.function_name = ASTRDUP (func_name); - b->location = new_explicit_location (&explicit_loc).release (); + b->location = new_explicit_location (&explicit_loc); b->enable_state = bp_disabled; } } @@ -3720,8 +3718,7 @@ create_exception_master_breakpoint (void) objfile), bp_exception_master, &internal_breakpoint_ops); - b->location - = new_probe_location ("-probe-stap libgcc:unwind").release (); + b->location = new_probe_location ("-probe-stap libgcc:unwind"); b->enable_state = bp_disabled; } @@ -3756,7 +3753,7 @@ create_exception_master_breakpoint (void) &internal_breakpoint_ops); initialize_explicit_location (&explicit_loc); explicit_loc.function_name = ASTRDUP (func_name); - b->location = new_explicit_location (&explicit_loc).release (); + b->location = new_explicit_location (&explicit_loc); b->enable_state = bp_disabled; } } @@ -3766,7 +3763,7 @@ create_exception_master_breakpoint (void) static int breakpoint_event_location_empty_p (const struct breakpoint *b) { - return b->location != NULL && event_location_empty_p (b->location); + return b->location != NULL && event_location_empty_p (b->location.get ()); } void @@ -6150,7 +6147,7 @@ print_breakpoint_location (struct breakpoint *b, set_current_program_space (loc->pspace); if (b->display_canonical) - uiout->field_string ("what", event_location_to_string (b->location)); + uiout->field_string ("what", event_location_to_string (b->location.get ())); else if (loc && loc->symtab) { struct symbol *sym @@ -6182,7 +6179,8 @@ print_breakpoint_location (struct breakpoint *b, } else { - uiout->field_string ("pending", event_location_to_string (b->location)); + uiout->field_string ("pending", + event_location_to_string (b->location.get ())); /* If extra_string is available, it could be holding a condition or dprintf arguments. In either case, make sure it is printed, too, but only for non-MI streams. */ @@ -6670,9 +6668,9 @@ print_one_breakpoint_location (struct breakpoint *b, uiout->field_string ("original-location", w->exp_string); } else if (b->location != NULL - && event_location_to_string (b->location) != NULL) + && event_location_to_string (b->location.get ()) != NULL) uiout->field_string ("original-location", - event_location_to_string (b->location)); + event_location_to_string (b->location.get ())); } } @@ -7796,7 +7794,7 @@ create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address) b->enable_state = bp_enabled; /* location has to be used or breakpoint_re_set will delete me. */ - b->location = new_address_location (b->loc->address, NULL, 0).release (); + b->location = new_address_location (b->loc->address, NULL, 0); update_global_location_list_nothrow (UGLL_MAY_INSERT); @@ -9285,7 +9283,8 @@ init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch, { /* We already know the marker exists, otherwise, we wouldn't see a sal for it. */ - const char *p = &event_location_to_string (b->location)[3]; + const char *p + = &event_location_to_string (b->location.get ())[3]; const char *endp; char *marker_str; @@ -9348,9 +9347,9 @@ init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch, b->display_canonical = display_canonical; if (location != NULL) - b->location = location.release (); + b->location = std::move (location); else - b->location = new_address_location (b->loc->address, NULL, 0).release (); + b->location = new_address_location (b->loc->address, NULL, 0); b->filter = filter; } @@ -9879,7 +9878,7 @@ create_breakpoint (struct gdbarch *gdbarch, b = new breakpoint (); init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops); - b->location = copy_event_location (location).release (); + b->location = copy_event_location (location); if (parse_extra) b->cond_string = NULL; @@ -10305,8 +10304,8 @@ static void print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp) { fprintf_unfiltered (fp, "break-range %s, %s", - event_location_to_string (b->location), - event_location_to_string (b->location_range_end)); + event_location_to_string (b->location.get ()), + event_location_to_string (b->location_range_end.get ())); print_recreate_thread (b, fp); } @@ -10452,8 +10451,8 @@ break_range_command (char *arg, int from_tty) set_breakpoint_count (breakpoint_count + 1); b->number = breakpoint_count; b->disposition = disp_donttouch; - b->location = start_location.release (); - b->location_range_end = end_location.release (); + b->location = std::move (start_location); + b->location_range_end = std::move (end_location); b->loc->length = length; do_cleanups (cleanup_bkpt); @@ -11899,9 +11898,8 @@ init_ada_exception_breakpoint (struct breakpoint *b, b->enable_state = enabled ? bp_enabled : bp_disabled; b->disposition = tempflag ? disp_del : disp_donttouch; - b->location - = string_to_event_location (&addr_string, - language_def (language_ada)).release (); + b->location = string_to_event_location (&addr_string, + language_def (language_ada)); b->language = language_ada; } @@ -12769,18 +12767,18 @@ say_where (struct breakpoint *b) if (b->extra_string == NULL) { printf_filtered (_(" (%s) pending."), - event_location_to_string (b->location)); + event_location_to_string (b->location.get ())); } else if (b->type == bp_dprintf) { printf_filtered (_(" (%s,%s) pending."), - event_location_to_string (b->location), + event_location_to_string (b->location.get ()), b->extra_string); } else { printf_filtered (_(" (%s %s) pending."), - event_location_to_string (b->location), + event_location_to_string (b->location.get ()), b->extra_string); } } @@ -12805,7 +12803,7 @@ say_where (struct breakpoint *b) different file name, and this at least reflects the real situation somewhat. */ printf_filtered (": %s.", - event_location_to_string (b->location)); + event_location_to_string (b->location.get ())); } if (b->loc->next) @@ -12842,8 +12840,6 @@ base_breakpoint_dtor (struct breakpoint *self) xfree (self->cond_string); xfree (self->extra_string); xfree (self->filter); - delete_event_location (self->location); - delete_event_location (self->location_range_end); } static struct bp_location * @@ -13177,7 +13173,7 @@ bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp) _("unhandled breakpoint type %d"), (int) tp->type); fprintf_unfiltered (fp, " %s", - event_location_to_string (tp->location)); + event_location_to_string (tp->location.get ())); /* Print out extra_string if this breakpoint is pending. It might contain, for example, conditions that were set by the user. */ @@ -13501,7 +13497,7 @@ tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp) _("unhandled tracepoint type %d"), (int) self->type); fprintf_unfiltered (fp, " %s", - event_location_to_string (self->location)); + event_location_to_string (self->location.get ())); print_recreate_thread (self, fp); if (tp->pass_count) @@ -13603,7 +13599,7 @@ static void dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp) { fprintf_unfiltered (fp, "dprintf %s,%s", - event_location_to_string (tp->location), + event_location_to_string (tp->location.get ()), tp->extra_string); print_recreate_thread (tp, fp); } @@ -14119,13 +14115,13 @@ update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal) b->loc->line_number = sal2.line; b->loc->symtab = sym != NULL ? sal2.symtab : NULL; - delete_event_location (b->location); + b->location.reset (NULL); initialize_explicit_location (&explicit_loc); explicit_loc.source_filename = ASTRDUP (symtab_to_filename_for_display (sal2.symtab)); explicit_loc.line_offset.offset = b->loc->line_number; explicit_loc.line_offset.sign = LINE_OFFSET_NONE; - b->location = new_explicit_location (&explicit_loc).release (); + b->location = new_explicit_location (&explicit_loc); /* Might be nice to check if function changed, and warn if so. */ @@ -14424,7 +14420,7 @@ breakpoint_re_set_default (struct breakpoint *b) struct symtabs_and_lines expanded_end = {0}; struct program_space *filter_pspace = current_program_space; - sals = location_to_sals (b, b->location, filter_pspace, &found); + sals = location_to_sals (b, b->location.get (), filter_pspace, &found); if (found) { make_cleanup (xfree, sals.sals); @@ -14433,7 +14429,7 @@ breakpoint_re_set_default (struct breakpoint *b) if (b->location_range_end != NULL) { - sals_end = location_to_sals (b, b->location_range_end, + sals_end = location_to_sals (b, b->location_range_end.get (), filter_pspace, &found); if (found) { diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index 1301fb4..f5c2751 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -26,6 +26,7 @@ #include "command.h" #include "break-common.h" #include "probe.h" +#include "location.h" #include struct value; @@ -38,7 +39,6 @@ struct bpstats; struct bp_location; struct linespec_result; struct linespec_sals; -struct event_location; /* Why are we removing the breakpoint from the target? */ @@ -716,8 +716,8 @@ struct breakpoint non-thread-specific ordinary breakpoints this is NULL. */ struct program_space *pspace; - /* Location we used to set the breakpoint (malloc'd). */ - struct event_location *location; + /* Location we used to set the breakpoint. */ + event_location_up location; /* The filter that should be passed to decode_line_full when re-setting this breakpoint. This may be NULL, but otherwise is @@ -725,8 +725,8 @@ struct breakpoint char *filter; /* For a ranged breakpoint, the location we used to find - the end of the range (malloc'd). */ - struct event_location *location_range_end; + the end of the range. */ + event_location_up location_range_end; /* Architecture we used to set the breakpoint. */ struct gdbarch *gdbarch; diff --git a/gdb/elfread.c b/gdb/elfread.c index 2ca10f8..fba2026 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -1006,7 +1006,7 @@ elf_gnu_ifunc_resolver_return_stop (struct breakpoint *b) resolved_pc = gdbarch_addr_bits_remove (gdbarch, resolved_pc); gdb_assert (current_program_space == b->pspace || b->pspace == NULL); - elf_gnu_ifunc_record_cache (event_location_to_string (b->location), + elf_gnu_ifunc_record_cache (event_location_to_string (b->location.get ()), resolved_pc); sal = find_pc_line (resolved_pc, 0); diff --git a/gdb/guile/scm-breakpoint.c b/gdb/guile/scm-breakpoint.c index 3a1e4d3..9165684 100644 --- a/gdb/guile/scm-breakpoint.c +++ b/gdb/guile/scm-breakpoint.c @@ -184,7 +184,7 @@ bpscm_print_breakpoint_smob (SCM self, SCM port, scm_print_state *pstate) gdbscm_printf (port, " hit:%d", b->hit_count); gdbscm_printf (port, " ignore:%d", b->ignore_count); - str = event_location_to_string (b->location); + str = event_location_to_string (b->location.get ()); if (str != NULL) gdbscm_printf (port, " @%s", str); } @@ -832,7 +832,7 @@ gdbscm_breakpoint_location (SCM self) if (bp_smob->bp->type != bp_breakpoint) return SCM_BOOL_F; - str = event_location_to_string (bp_smob->bp->location); + str = event_location_to_string (bp_smob->bp->location.get ()); if (! str) str = ""; diff --git a/gdb/python/py-breakpoint.c b/gdb/python/py-breakpoint.c index d63f458..64de803 100644 --- a/gdb/python/py-breakpoint.c +++ b/gdb/python/py-breakpoint.c @@ -390,7 +390,7 @@ bppy_get_location (PyObject *self, void *closure) if (obj->bp->type != bp_breakpoint) Py_RETURN_NONE; - str = event_location_to_string (obj->bp->location); + str = event_location_to_string (obj->bp->location.get ()); if (! str) str = ""; return host_string_to_python_string (str); diff --git a/gdb/remote.c b/gdb/remote.c index a61469c..cdc3cdd 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -12416,7 +12416,7 @@ remote_download_tracepoint (struct target_ops *self, struct bp_location *loc) { strcpy (buf, "QTDPsrc:"); encode_source_string (b->number, loc->address, "at", - event_location_to_string (b->location), + event_location_to_string (b->location.get ()), buf + strlen (buf), 2048 - strlen (buf)); putpkt (buf); remote_get_noisy_reply (&target_buf, &target_buf_size);