From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1551) id A82393857B82; Fri, 17 Jun 2022 09:23:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A82393857B82 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Pedro Alves To: gdb-cvs@sourceware.org Subject: [binutils-gdb] Convert location_spec_to_string to a method X-Act-Checkin: binutils-gdb X-Git-Author: Pedro Alves X-Git-Refname: refs/heads/master X-Git-Oldrev: 7464aeaab47ca3fb7127223fe372489c9c7ed69e X-Git-Newrev: 709438c75abc52cdc4888e7eaa089c2709c75a07 Message-Id: <20220617092340.A82393857B82@sourceware.org> Date: Fri, 17 Jun 2022 09:23:40 +0000 (GMT) X-BeenThere: gdb-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2022 09:23:40 -0000 https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D709438c75abc= 52cdc4888e7eaa089c2709c75a07 commit 709438c75abc52cdc4888e7eaa089c2709c75a07 Author: Pedro Alves Date: Fri May 27 16:44:02 2022 +0100 Convert location_spec_to_string to a method =20 This converts location_spec_to_string to a method of location_spec, simplifying the code using it, as it no longer has to use std::unique_ptr::get(). =20 Change-Id: I621bdad8ea084470a2724163f614578caf8f2dd5 Diff: --- gdb/breakpoint.c | 38 +++++++++++++++----------------------- gdb/elfread.c | 3 +-- gdb/guile/scm-breakpoint.c | 5 ++--- gdb/linespec.c | 2 +- gdb/location.c | 8 -------- gdb/location.h | 16 ++++++---------- gdb/python/py-breakpoint.c | 2 +- gdb/remote.c | 2 +- 8 files changed, 27 insertions(+), 49 deletions(-) diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index e3739a772de..a3be12557f6 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -6007,8 +6007,7 @@ print_breakpoint_location (const breakpoint *b, set_current_program_space (loc->pspace); =20 if (b->display_canonical) - uiout->field_string ("what", - location_spec_to_string (b->locspec.get ())); + uiout->field_string ("what", b->locspec->to_string ()); else if (loc && loc->symtab) { const struct symbol *sym =3D loc->symbol; @@ -6042,8 +6041,7 @@ print_breakpoint_location (const breakpoint *b, } else { - uiout->field_string ("pending", - location_spec_to_string (b->locspec.get ())); + uiout->field_string ("pending", b->locspec->to_string ()); /* 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. */ @@ -6505,7 +6503,7 @@ print_one_breakpoint_location (struct breakpoint *b, } else if (b->locspec !=3D nullptr) { - const char *str =3D location_spec_to_string (b->locspec.get ()); + const char *str =3D b->locspec->to_string (); if (str !=3D nullptr) uiout->field_string ("original-location", str); } @@ -8282,7 +8280,7 @@ code_breakpoint::code_breakpoint (struct gdbarch *gdb= arch_, { /* We already know the marker exists, otherwise, we wouldn't see a sal for it. */ - const char *p =3D &location_spec_to_string (locspec_.get ())[3]; + const char *p =3D &locspec_->to_string ()[3]; const char *endp; =20 p =3D skip_spaces (p); @@ -9244,8 +9242,8 @@ void ranged_breakpoint::print_recreate (struct ui_file *fp) const { gdb_printf (fp, "break-range %s, %s", - location_spec_to_string (locspec.get ()), - location_spec_to_string (locspec_range_end.get ())); + locspec->to_string (), + locspec_range_end->to_string ()); print_recreate_thread (fp); } =20 @@ -11353,19 +11351,18 @@ say_where (const breakpoint *b) a condition or dprintf arguments. */ if (b->extra_string =3D=3D NULL) { - gdb_printf (_(" (%s) pending."), - location_spec_to_string (b->locspec.get ())); + gdb_printf (_(" (%s) pending."), b->locspec->to_string ()); } else if (b->type =3D=3D bp_dprintf) { gdb_printf (_(" (%s,%s) pending."), - location_spec_to_string (b->locspec.get ()), + b->locspec->to_string (), b->extra_string.get ()); } else { gdb_printf (_(" (%s %s) pending."), - location_spec_to_string (b->locspec.get ()), + b->locspec->to_string (), b->extra_string.get ()); } } @@ -11393,8 +11390,7 @@ say_where (const breakpoint *b) /* This is not ideal, but each location may have a different file name, and this at least reflects the real situation somewhat. */ - gdb_printf (": %s.", - location_spec_to_string (b->locspec.get ())); + gdb_printf (": %s.", b->locspec->to_string ()); } =20 if (b->loc->next) @@ -11659,7 +11655,7 @@ ordinary_breakpoint::print_recreate (struct ui_file= *fp) const internal_error (__FILE__, __LINE__, _("unhandled breakpoint type %d"), (int) type); =20 - gdb_printf (fp, " %s", location_spec_to_string (locspec.get ())); + gdb_printf (fp, " %s", locspec->to_string ()); =20 /* Print out extra_string if this breakpoint is pending. It might contain, for example, conditions that were set by the user. */ @@ -11822,8 +11818,7 @@ bkpt_probe_create_sals_from_location_spec (location= _spec *locspec, struct linespec_sals lsal; =20 lsal.sals =3D parse_probes (locspec, NULL, canonical); - lsal.canonical - =3D xstrdup (location_spec_to_string (canonical->locspec.get ())); + lsal.canonical =3D xstrdup (canonical->locspec->to_string ()); canonical->lsals.push_back (std::move (lsal)); } =20 @@ -11906,7 +11901,7 @@ tracepoint::print_recreate (struct ui_file *fp) con= st internal_error (__FILE__, __LINE__, _("unhandled tracepoint type %d"), (int) type); =20 - gdb_printf (fp, " %s", location_spec_to_string (locspec.get ())); + gdb_printf (fp, " %s", locspec->to_string ()); print_recreate_thread (fp); =20 if (pass_count) @@ -11951,9 +11946,7 @@ dprintf_breakpoint::re_set () void dprintf_breakpoint::print_recreate (struct ui_file *fp) const { - gdb_printf (fp, "dprintf %s,%s", - location_spec_to_string (locspec.get ()), - extra_string.get ()); + gdb_printf (fp, "dprintf %s,%s", locspec->to_string (), extra_string.get= ()); print_recreate_thread (fp); } =20 @@ -12001,8 +11994,7 @@ strace_marker_create_sals_from_location_spec (locat= ion_spec *locspec, canonical->locspec =3D new_linespec_location_spec (&ptr, symbol_name_match_type::FULL); =20 - lsal.canonical - =3D xstrdup (location_spec_to_string (canonical->locspec.get ())); + lsal.canonical =3D xstrdup (canonical->locspec->to_string ()); canonical->lsals.push_back (std::move (lsal)); } =20 diff --git a/gdb/elfread.c b/gdb/elfread.c index 2fe02805d01..8ff62a1fed5 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -1026,8 +1026,7 @@ elf_gnu_ifunc_resolver_return_stop (code_breakpoint *= b) resolved_pc =3D gdbarch_addr_bits_remove (gdbarch, resolved_pc); =20 gdb_assert (current_program_space =3D=3D b->pspace || b->pspace =3D=3D N= ULL); - const char *locspec_str =3D location_spec_to_string (b->locspec.get ()); - elf_gnu_ifunc_record_cache (locspec_str, resolved_pc); + elf_gnu_ifunc_record_cache (b->locspec->to_string (), resolved_pc); =20 b->type =3D bp_breakpoint; update_breakpoint_locations (b, current_program_space, diff --git a/gdb/guile/scm-breakpoint.c b/gdb/guile/scm-breakpoint.c index c358f0ba99d..5406b74a389 100644 --- a/gdb/guile/scm-breakpoint.c +++ b/gdb/guile/scm-breakpoint.c @@ -189,7 +189,7 @@ bpscm_print_breakpoint_smob (SCM self, SCM port, scm_pr= int_state *pstate) =20 if (b->locspec !=3D nullptr) { - const char *str =3D location_spec_to_string (b->locspec.get ()); + const char *str =3D b->locspec->to_string (); if (str !=3D nullptr) gdbscm_printf (port, " @%s", str); } @@ -859,8 +859,7 @@ gdbscm_breakpoint_location (SCM self) if (bp_smob->bp->type !=3D bp_breakpoint) return SCM_BOOL_F; =20 - const char *str - =3D location_spec_to_string (bp_smob->bp->locspec.get ()); + const char *str =3D bp_smob->bp->locspec->to_string (); if (str =3D=3D nullptr) str =3D ""; =20 diff --git a/gdb/linespec.c b/gdb/linespec.c index 976e728a301..5c75e2ec979 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -3149,7 +3149,7 @@ decode_line_full (struct location_spec *locspec, int = flags, =20 if (result.size () =3D=3D 0) throw_error (NOT_SUPPORTED_ERROR, _("Location %s not available"), - location_spec_to_string (locspec)); + locspec->to_string ()); =20 gdb_assert (result.size () =3D=3D 1 || canonical->pre_expanded); canonical->pre_expanded =3D 1; diff --git a/gdb/location.c b/gdb/location.c index 9643ea857a3..e22ee414070 100644 --- a/gdb/location.c +++ b/gdb/location.c @@ -345,14 +345,6 @@ explicit_location_spec::to_linespec () const return explicit_to_string_internal (true, this); } =20 -/* See description in location.h. */ - -const char * -location_spec_to_string (struct location_spec *locspec) -{ - return locspec->to_string (); -} - /* Find an instance of the quote character C in the string S that is outside of all single- and double-quoted strings (i.e., any quoting other than C). */ diff --git a/gdb/location.h b/gdb/location.h index 9ba3a20731b..cc9dfe4d7fa 100644 --- a/gdb/location.h +++ b/gdb/location.h @@ -83,7 +83,12 @@ struct location_spec /* Return true if this location spec is empty, false otherwise. */ virtual bool empty_p () const =3D 0; =20 - /* Return a string representation of this location. */ + /* Return a string representation of this location. + + This function may return NULL for unspecified linespecs, e.g, + LINESPEC_LOCATION_SPEC and spec_string is NULL. + + The result is cached in the locspec. */ const char *to_string () const { if (as_string.empty ()) @@ -233,15 +238,6 @@ protected: std::string compute_string () const override; }; =20 -/* Return a string representation of LOCSPEC. - This function may return NULL for unspecified linespecs, - e.g, LINESPEC_LOCATION_SPEC and spec_string is NULL. - - The result is cached in LOCSPEC. */ - -extern const char * - location_spec_to_string (location_spec *locspec); - /* Create a new linespec location spec. */ =20 extern location_spec_up new_linespec_location_spec diff --git a/gdb/python/py-breakpoint.c b/gdb/python/py-breakpoint.c index bab1c60a43e..2b9f6f33cff 100644 --- a/gdb/python/py-breakpoint.c +++ b/gdb/python/py-breakpoint.c @@ -412,7 +412,7 @@ bppy_get_location (PyObject *self, void *closure) && obj->bp->type !=3D bp_hardware_breakpoint) Py_RETURN_NONE; =20 - const char *str =3D location_spec_to_string (obj->bp->locspec.get ()); + const char *str =3D obj->bp->locspec->to_string (); if (str =3D=3D nullptr) str =3D ""; return host_string_to_python_string (str).release (); diff --git a/gdb/remote.c b/gdb/remote.c index 7bcd6e3e336..ed834228829 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -13375,7 +13375,7 @@ remote_target::download_tracepoint (struct bp_locat= ion *loc) if (ret < 0 || ret >=3D buf.size ()) error ("%s", err_msg); =20 - const char *str =3D location_spec_to_string (b->locspec.get ()); + const char *str =3D b->locspec->to_string (); encode_source_string (b->number, loc->address, "at", str, buf.data () + strlen (buf.data ()), buf.size () - strlen (buf.data ()));