Change arm_objfile_data_key to use type-safe registry
After seeing Simon's patch to change arm_per_objfile to use new and delete, I realized it is now simple to change arm_objfile_data_key to use the type-safe registry. gdb/ChangeLog 2019-06-27 Tom Tromey <tromey@adacore.com> * arm-tdep.c (arm_objfile_data_key): Move lower. Change type to objfile_key. (arm_find_mapping_symbol, arm_record_special_symbol) (_initialize_arm_tdep): Update. (arm_objfile_data_free): Remove.
This commit is contained in:
parent
3d507ff23b
commit
1b7f24cd6b
2 changed files with 15 additions and 23 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2019-06-27 Tom Tromey <tromey@adacore.com>
|
||||||
|
|
||||||
|
* arm-tdep.c (arm_objfile_data_key): Move lower. Change type to
|
||||||
|
objfile_key.
|
||||||
|
(arm_find_mapping_symbol, arm_record_special_symbol)
|
||||||
|
(_initialize_arm_tdep): Update.
|
||||||
|
(arm_objfile_data_free): Remove.
|
||||||
|
|
||||||
2019-06-27 Tom Tromey <tromey@adacore.com>
|
2019-06-27 Tom Tromey <tromey@adacore.com>
|
||||||
|
|
||||||
* cp-valprint.c (cp_print_value_fields): Pass opts, not options,
|
* cp-valprint.c (cp_print_value_fields): Pass opts, not options,
|
||||||
|
|
|
@ -88,9 +88,6 @@ static int arm_debug;
|
||||||
#define MSYMBOL_IS_SPECIAL(msym) \
|
#define MSYMBOL_IS_SPECIAL(msym) \
|
||||||
MSYMBOL_TARGET_FLAG_1 (msym)
|
MSYMBOL_TARGET_FLAG_1 (msym)
|
||||||
|
|
||||||
/* Per-objfile data used for mapping symbols. */
|
|
||||||
static const struct objfile_data *arm_objfile_data_key;
|
|
||||||
|
|
||||||
struct arm_mapping_symbol
|
struct arm_mapping_symbol
|
||||||
{
|
{
|
||||||
bfd_vma value;
|
bfd_vma value;
|
||||||
|
@ -126,6 +123,9 @@ struct arm_per_objfile
|
||||||
std::unique_ptr<bool[]> section_maps_sorted;
|
std::unique_ptr<bool[]> section_maps_sorted;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Per-objfile data used for mapping symbols. */
|
||||||
|
static objfile_key<arm_per_objfile> arm_objfile_data_key;
|
||||||
|
|
||||||
/* The list of available "set arm ..." and "show arm ..." commands. */
|
/* The list of available "set arm ..." and "show arm ..." commands. */
|
||||||
static struct cmd_list_element *setarmcmdlist = NULL;
|
static struct cmd_list_element *setarmcmdlist = NULL;
|
||||||
static struct cmd_list_element *showarmcmdlist = NULL;
|
static struct cmd_list_element *showarmcmdlist = NULL;
|
||||||
|
@ -356,9 +356,7 @@ arm_find_mapping_symbol (CORE_ADDR memaddr, CORE_ADDR *start)
|
||||||
sec = find_pc_section (memaddr);
|
sec = find_pc_section (memaddr);
|
||||||
if (sec != NULL)
|
if (sec != NULL)
|
||||||
{
|
{
|
||||||
arm_per_objfile *data
|
arm_per_objfile *data = arm_objfile_data_key.get (sec->objfile);
|
||||||
= (struct arm_per_objfile *) objfile_data (sec->objfile,
|
|
||||||
arm_objfile_data_key);
|
|
||||||
if (data != NULL)
|
if (data != NULL)
|
||||||
{
|
{
|
||||||
unsigned int section_idx = sec->the_bfd_section->index;
|
unsigned int section_idx = sec->the_bfd_section->index;
|
||||||
|
@ -8528,14 +8526,6 @@ arm_coff_make_msymbol_special(int val, struct minimal_symbol *msym)
|
||||||
MSYMBOL_SET_SPECIAL (msym);
|
MSYMBOL_SET_SPECIAL (msym);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
arm_objfile_data_free (struct objfile *objfile, void *arg)
|
|
||||||
{
|
|
||||||
struct arm_per_objfile *data = (struct arm_per_objfile *) arg;
|
|
||||||
|
|
||||||
delete data;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
arm_record_special_symbol (struct gdbarch *gdbarch, struct objfile *objfile,
|
arm_record_special_symbol (struct gdbarch *gdbarch, struct objfile *objfile,
|
||||||
asymbol *sym)
|
asymbol *sym)
|
||||||
|
@ -8548,13 +8538,10 @@ arm_record_special_symbol (struct gdbarch *gdbarch, struct objfile *objfile,
|
||||||
if (name[1] != 'a' && name[1] != 't' && name[1] != 'd')
|
if (name[1] != 'a' && name[1] != 't' && name[1] != 'd')
|
||||||
return;
|
return;
|
||||||
|
|
||||||
data = (struct arm_per_objfile *) objfile_data (objfile,
|
data = arm_objfile_data_key.get (objfile);
|
||||||
arm_objfile_data_key);
|
|
||||||
if (data == NULL)
|
if (data == NULL)
|
||||||
{
|
data = arm_objfile_data_key.emplace (objfile,
|
||||||
data = new arm_per_objfile (objfile->obfd->section_count);
|
objfile->obfd->section_count);
|
||||||
set_objfile_data (objfile, arm_objfile_data_key, data);
|
|
||||||
}
|
|
||||||
arm_mapping_symbol_vec &map
|
arm_mapping_symbol_vec &map
|
||||||
= data->section_maps[bfd_get_section (sym)->index];
|
= data->section_maps[bfd_get_section (sym)->index];
|
||||||
|
|
||||||
|
@ -9477,9 +9464,6 @@ _initialize_arm_tdep (void)
|
||||||
|
|
||||||
gdbarch_register (bfd_arch_arm, arm_gdbarch_init, arm_dump_tdep);
|
gdbarch_register (bfd_arch_arm, arm_gdbarch_init, arm_dump_tdep);
|
||||||
|
|
||||||
arm_objfile_data_key
|
|
||||||
= register_objfile_data_with_cleanup (NULL, arm_objfile_data_free);
|
|
||||||
|
|
||||||
/* Add ourselves to objfile event chain. */
|
/* Add ourselves to objfile event chain. */
|
||||||
gdb::observers::new_objfile.attach (arm_exidx_new_objfile);
|
gdb::observers::new_objfile.attach (arm_exidx_new_objfile);
|
||||||
arm_exidx_data_key
|
arm_exidx_data_key
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue