From: Tom Tromey Date: Wed, 1 Mar 2023 14:59:44 +0000 (-0700) Subject: Make gdb property batons type-safe X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=802dace16f8c6dfa3200381669015a7dccbd5e28;p=binutils-gdb.git Make gdb property batons type-safe gdbtypes treats dynamic property batons as 'void *', but in actuality the only users all use dwarf2_property_baton. This patch changes this code to be type-safe. If a new type is needed here, it seems like that too could be done in a type-safe way. Approved-By: Simon Marchi --- diff --git a/gdb/dwarf2/loc.c b/gdb/dwarf2/loc.c index 4727651027b..bf582bcfeff 100644 --- a/gdb/dwarf2/loc.c +++ b/gdb/dwarf2/loc.c @@ -1649,8 +1649,7 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop, { case PROP_LOCEXPR: { - const struct dwarf2_property_baton *baton - = (const struct dwarf2_property_baton *) prop->baton (); + const struct dwarf2_property_baton *baton = prop->baton (); gdb_assert (baton->property_type != NULL); bool is_reference = baton->locexpr.is_reference; @@ -1692,8 +1691,7 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop, case PROP_LOCLIST: { - struct dwarf2_property_baton *baton - = (struct dwarf2_property_baton *) prop->baton (); + struct dwarf2_property_baton *baton = prop->baton (); CORE_ADDR pc; const gdb_byte *data; struct value *val; @@ -1724,8 +1722,7 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop, case PROP_ADDR_OFFSET: { - struct dwarf2_property_baton *baton - = (struct dwarf2_property_baton *) prop->baton (); + struct dwarf2_property_baton *baton = prop->baton (); const struct property_addr_info *pinfo; struct value *val; @@ -1775,8 +1772,7 @@ dwarf2_compile_property_to_c (string_file *stream, CORE_ADDR pc, struct symbol *sym) { - struct dwarf2_property_baton *baton - = (struct dwarf2_property_baton *) prop->baton (); + struct dwarf2_property_baton *baton = prop->baton (); const gdb_byte *data; size_t size; dwarf2_per_cu_data *per_cu; diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h index c2253310666..701a64d457a 100644 --- a/gdb/gdbtypes.h +++ b/gdb/gdbtypes.h @@ -64,6 +64,7 @@ struct value_print_options; struct language_defn; struct dwarf2_per_cu_data; struct dwarf2_per_objfile; +struct dwarf2_property_baton; /* Some macros for char-based bitfields. */ @@ -289,7 +290,7 @@ union dynamic_prop_data /* Storage for dynamic property. */ - void *baton; + dwarf2_property_baton *baton; /* Storage of variant parts for a type. A type with variant parts has all its fields "linearized" -- stored in a single field @@ -339,7 +340,7 @@ struct dynamic_prop m_data.const_val = const_val; } - void *baton () const + dwarf2_property_baton *baton () const { gdb_assert (m_kind == PROP_LOCEXPR || m_kind == PROP_LOCLIST @@ -348,19 +349,19 @@ struct dynamic_prop return m_data.baton; } - void set_locexpr (void *baton) + void set_locexpr (dwarf2_property_baton *baton) { m_kind = PROP_LOCEXPR; m_data.baton = baton; } - void set_loclist (void *baton) + void set_loclist (dwarf2_property_baton *baton) { m_kind = PROP_LOCLIST; m_data.baton = baton; } - void set_addr_offset (void *baton) + void set_addr_offset (dwarf2_property_baton *baton) { m_kind = PROP_ADDR_OFFSET; m_data.baton = baton;