return NULL;
}
-/* Implementation of `address_class_name_to_type_flags' gdbarch method.
+/* Implementation of `address_class_name_to_id' gdbarch method.
- Convert an address space qualifier to a type_instance_flag_value. */
+ Convert an address class name to an address class id. */
static bool
-avr_address_class_name_to_type_flags (struct gdbarch *gdbarch,
- const char* name,
- type_instance_flags *type_flags_ptr)
+avr_address_class_name_to_id (struct gdbarch *gdbarch,
+ const char* name,
+ unsigned int &address_class)
{
if (streq (name, "flash"))
{
- *type_flags_ptr = AVR_TYPE_INSTANCE_FLAG_ADDRESS_CLASS_FLASH;
+ address_class = AVR_ADDRESS_CLASS_FLASH;
return true;
}
else
set_gdbarch_unwind_sp (gdbarch, avr_unwind_sp);
set_gdbarch_address_class_type_flags (gdbarch, avr_address_class_type_flags);
- set_gdbarch_address_class_name_to_type_flags
- (gdbarch, avr_address_class_name_to_type_flags);
+ set_gdbarch_address_class_name_to_id
+ (gdbarch, avr_address_class_name_to_id);
set_gdbarch_address_class_id_to_name
(gdbarch, avr_address_class_id_to_name);
return NULL;
}
-/* Implementation of `address_class_name_to_type_flags' gdbarch method.
+/* Implementation of `address_class_name_to_id' gdbarch method.
- Convert an address space qualifier to a type_instance_flag_value. */
+ Convert an address class name to an address class id. */
static bool
-ft32_address_class_name_to_type_flags (struct gdbarch *gdbarch,
- const char* name,
- type_instance_flags *type_flags_ptr)
+ft32_address_class_name_to_id (struct gdbarch *gdbarch,
+ const char* name,
+ unsigned int &address_class)
{
if (streq (name, "flash"))
{
- *type_flags_ptr = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1;
+ address_class = 1;
return true;
}
else
set_gdbarch_overlay_update (gdbarch, simple_overlay_update);
set_gdbarch_address_class_type_flags (gdbarch, ft32_address_class_type_flags);
- set_gdbarch_address_class_name_to_type_flags
- (gdbarch, ft32_address_class_name_to_type_flags);
+ set_gdbarch_address_class_name_to_id
+ (gdbarch, ft32_address_class_name_to_id);
set_gdbarch_address_class_id_to_name
(gdbarch, ft32_address_class_id_to_name);
gdbarch_address_class_type_flags_ftype *address_class_type_flags = nullptr;
gdbarch_address_class_id_to_name_ftype *address_class_id_to_name = nullptr;
gdbarch_execute_dwarf_cfa_vendor_op_ftype *execute_dwarf_cfa_vendor_op = default_execute_dwarf_cfa_vendor_op;
- gdbarch_address_class_name_to_type_flags_ftype *address_class_name_to_type_flags = nullptr;
+ gdbarch_address_class_name_to_id_ftype *address_class_name_to_id = nullptr;
gdbarch_register_reggroup_p_ftype *register_reggroup_p = default_register_reggroup_p;
gdbarch_fetch_pointer_argument_ftype *fetch_pointer_argument = nullptr;
gdbarch_iterate_over_regset_sections_ftype *iterate_over_regset_sections = nullptr;
/* Skip verify of address_class_type_flags, has predicate. */
/* Skip verify of address_class_id_to_name, has predicate. */
/* Skip verify of execute_dwarf_cfa_vendor_op, invalid_p == 0. */
- /* Skip verify of address_class_name_to_type_flags, has predicate. */
+ /* Skip verify of address_class_name_to_id, has predicate. */
/* Skip verify of register_reggroup_p, invalid_p == 0. */
/* Skip verify of fetch_pointer_argument, invalid_p == 0. */
/* Skip verify of iterate_over_regset_sections, has predicate. */
"gdbarch_dump: execute_dwarf_cfa_vendor_op = <%s>\n",
host_address_to_string (gdbarch->execute_dwarf_cfa_vendor_op));
gdb_printf (file,
- "gdbarch_dump: gdbarch_address_class_name_to_type_flags_p() = %d\n",
- gdbarch_address_class_name_to_type_flags_p (gdbarch));
+ "gdbarch_dump: gdbarch_address_class_name_to_id_p() = %d\n",
+ gdbarch_address_class_name_to_id_p (gdbarch));
gdb_printf (file,
- "gdbarch_dump: address_class_name_to_type_flags = <%s>\n",
- host_address_to_string (gdbarch->address_class_name_to_type_flags));
+ "gdbarch_dump: address_class_name_to_id = <%s>\n",
+ host_address_to_string (gdbarch->address_class_name_to_id));
gdb_printf (file,
"gdbarch_dump: register_reggroup_p = <%s>\n",
host_address_to_string (gdbarch->register_reggroup_p));
}
bool
-gdbarch_address_class_name_to_type_flags_p (struct gdbarch *gdbarch)
+gdbarch_address_class_name_to_id_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != nullptr);
- return gdbarch->address_class_name_to_type_flags != nullptr;
+ return gdbarch->address_class_name_to_id != nullptr;
}
bool
-gdbarch_address_class_name_to_type_flags (struct gdbarch *gdbarch, const char *name, type_instance_flags *type_flags_ptr)
+gdbarch_address_class_name_to_id (struct gdbarch *gdbarch, const char *name, unsigned int &address_class)
{
gdb_assert (gdbarch != nullptr);
- gdb_assert (gdbarch->address_class_name_to_type_flags != nullptr);
+ gdb_assert (gdbarch->address_class_name_to_id != nullptr);
if (gdbarch_debug >= 2)
- gdb_printf (gdb_stdlog, "gdbarch_address_class_name_to_type_flags called\n");
- return gdbarch->address_class_name_to_type_flags (gdbarch, name, type_flags_ptr);
+ gdb_printf (gdb_stdlog, "gdbarch_address_class_name_to_id called\n");
+ return gdbarch->address_class_name_to_id (gdbarch, name, address_class);
}
void
-set_gdbarch_address_class_name_to_type_flags (struct gdbarch *gdbarch,
- gdbarch_address_class_name_to_type_flags_ftype address_class_name_to_type_flags)
+set_gdbarch_address_class_name_to_id (struct gdbarch *gdbarch,
+ gdbarch_address_class_name_to_id_ftype address_class_name_to_id)
{
- gdbarch->address_class_name_to_type_flags = address_class_name_to_type_flags;
+ gdbarch->address_class_name_to_id = address_class_name_to_id;
}
bool
bool gdbarch_execute_dwarf_cfa_vendor_op (struct gdbarch *gdbarch, gdb_byte op, struct dwarf2_frame_state *fs);
void set_gdbarch_execute_dwarf_cfa_vendor_op (struct gdbarch *gdbarch, gdbarch_execute_dwarf_cfa_vendor_op_ftype *execute_dwarf_cfa_vendor_op);
-/* Return the appropriate type_flags for the supplied address class.
+/* Return the appropriate address class id for the supplied address class name.
This function should return true if the address class was recognized and
- type_flags was set, false otherwise. */
+ address_class was set, false otherwise. */
-bool gdbarch_address_class_name_to_type_flags_p (struct gdbarch *gdbarch);
+bool gdbarch_address_class_name_to_id_p (struct gdbarch *gdbarch);
-using gdbarch_address_class_name_to_type_flags_ftype = bool (struct gdbarch *gdbarch, const char *name, type_instance_flags *type_flags_ptr);
-bool gdbarch_address_class_name_to_type_flags (struct gdbarch *gdbarch, const char *name, type_instance_flags *type_flags_ptr);
-void set_gdbarch_address_class_name_to_type_flags (struct gdbarch *gdbarch, gdbarch_address_class_name_to_type_flags_ftype *address_class_name_to_type_flags);
+using gdbarch_address_class_name_to_id_ftype = bool (struct gdbarch *gdbarch, const char *name, unsigned int &address_class);
+bool gdbarch_address_class_name_to_id (struct gdbarch *gdbarch, const char *name, unsigned int &address_class);
+void set_gdbarch_address_class_name_to_id (struct gdbarch *gdbarch, gdbarch_address_class_name_to_id_ftype *address_class_name_to_id);
/* Is a register in a group */
Method(
comment="""
-Return the appropriate type_flags for the supplied address class.
+Return the appropriate address class id for the supplied address class name.
This function should return true if the address class was recognized and
-type_flags was set, false otherwise.
+address_class was set, false otherwise.
""",
type="bool",
- name="address_class_name_to_type_flags",
- params=[("const char *", "name"), ("type_instance_flags *", "type_flags_ptr")],
+ name="address_class_name_to_id",
+ params=[("const char *", "name"), ("unsigned int &", "address_class")],
predicate=True,
)
address_space_name_to_type_instance_flags (struct gdbarch *gdbarch,
const char *space_identifier)
{
- type_instance_flags type_flags;
-
/* Check for known address space delimiters. */
if (streq (space_identifier, "code"))
return TYPE_INSTANCE_FLAG_CODE_SPACE;
else if (streq (space_identifier, "data"))
return TYPE_INSTANCE_FLAG_DATA_SPACE;
- else if (gdbarch_address_class_name_to_type_flags_p (gdbarch)
- && gdbarch_address_class_name_to_type_flags (gdbarch,
- space_identifier,
- &type_flags))
- return type_flags;
+
+ unsigned int aclass;
+ if (gdbarch_address_class_name_to_id_p (gdbarch)
+ && gdbarch_address_class_name_to_id (gdbarch,
+ space_identifier,
+ aclass))
+ {
+ return (enum type_instance_flag_value) (aclass << 4);
+ }
else
error (_("Unknown address space specifier: \"%s\""), space_identifier);
}
return NULL;
}
-/* Implement addr_class_name_to_type_flags gdbarch method.
+/* Implement addr_class_name_to_id gdbarch method.
Only used for ABI_LINUX_ZSERIES. */
static bool
-s390_address_class_name_to_type_flags (struct gdbarch *gdbarch,
- const char *name,
- type_instance_flags *type_flags_ptr)
+s390_address_class_name_to_id (struct gdbarch *gdbarch,
+ const char *name,
+ unsigned int &address_class)
{
if (streq (name, "mode32"))
{
- *type_flags_ptr = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1;
+ address_class = 1;
return true;
}
else
s390_address_class_type_flags);
set_gdbarch_address_class_id_to_name (gdbarch,
s390_address_class_id_to_name);
- set_gdbarch_address_class_name_to_type_flags (gdbarch,
- s390_address_class_name_to_type_flags);
+ set_gdbarch_address_class_name_to_id (gdbarch,
+ s390_address_class_name_to_id);
break;
}