From 246994051b6659bf9f4c89b5d5ede86717c5bbef Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 1 May 2019 15:09:25 -0600 Subject: [PATCH] Convert coffread.c to type-safe registry API This changes coffread.c to use the type-safe registry API. gdb/ChangeLog 2019-05-08 Tom Tromey * coffread.c (struct coff_symfile_info): Add initializers. (coff_objfile_data_key): Move lower. Change type. (coff_symfile_init, coff_symfile_read, _initialize_coffread): Update. (coff_free_info): Remove. --- gdb/ChangeLog | 8 ++++++++ gdb/coffread.c | 38 ++++++++++++-------------------------- 2 files changed, 20 insertions(+), 26 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 9bc8f996fd4..5677e336351 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2019-05-08 Tom Tromey + + * coffread.c (struct coff_symfile_info): Add initializers. + (coff_objfile_data_key): Move lower. Change type. + (coff_symfile_init, coff_symfile_read, _initialize_coffread): + Update. + (coff_free_info): Remove. + 2019-05-08 Tom Tromey * fbsd-tdep.c (struct fbsd_pspace_data): Add initializers. diff --git a/gdb/coffread.c b/gdb/coffread.c index 4354741ab64..0956f3897b4 100644 --- a/gdb/coffread.c +++ b/gdb/coffread.c @@ -43,26 +43,26 @@ #include "psymtab.h" #include "build-id.h" -/* Key for COFF-associated data. */ - -static const struct objfile_data *coff_objfile_data_key; - /* The objfile we are currently reading. */ static struct objfile *coffread_objfile; struct coff_symfile_info { - file_ptr min_lineno_offset; /* Where in file lowest line#s are. */ - file_ptr max_lineno_offset; /* 1+last byte of line#s in file. */ + file_ptr min_lineno_offset = 0; /* Where in file lowest line#s are. */ + file_ptr max_lineno_offset = 0; /* 1+last byte of line#s in file. */ - CORE_ADDR textaddr; /* Addr of .text section. */ - unsigned int textsize; /* Size of .text section. */ + CORE_ADDR textaddr = 0; /* Addr of .text section. */ + unsigned int textsize = 0; /* Size of .text section. */ std::vector *stabsects; /* .stab sections. */ - asection *stabstrsect; /* Section pointer for .stab section. */ - char *stabstrdata; + asection *stabstrsect = nullptr; /* Section pointer for .stab section. */ + char *stabstrdata = nullptr; }; +/* Key for COFF-associated data. */ + +static const struct objfile_key coff_objfile_data_key; + /* Translate an external name string into a user-visible name. */ #define EXTERNAL_NAME(string, abfd) \ (string[0] == bfd_get_symbol_leading_char (abfd) \ @@ -485,15 +485,13 @@ static void coff_symfile_init (struct objfile *objfile) { struct dbx_symfile_info *dbx; - struct coff_symfile_info *coff; /* Allocate struct to keep track of stab reading. */ dbx = XCNEW (struct dbx_symfile_info); set_objfile_data (objfile, dbx_objfile_data_key, dbx); /* Allocate struct to keep track of the symfile. */ - coff = XCNEW (struct coff_symfile_info); - set_objfile_data (objfile, coff_objfile_data_key, coff); + coff_objfile_data_key.emplace (objfile); /* COFF objects may be reordered, so set OBJF_REORDERED. If we find this causes a significant slowdown in gdb then we could @@ -554,8 +552,7 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags) int stringtab_offset; int stabstrsize; - info = (struct coff_symfile_info *) objfile_data (objfile, - coff_objfile_data_key); + info = coff_objfile_data_key.get (objfile); symfile_bfd = abfd; /* Kludge for swap routines. */ std::vector stabsects; @@ -2211,22 +2208,11 @@ static const struct sym_fns coff_sym_fns = &psym_functions }; -/* Free the per-objfile COFF data. */ - -static void -coff_free_info (struct objfile *objfile, void *arg) -{ - xfree (arg); -} - void _initialize_coffread (void) { add_symtab_fns (bfd_target_coff_flavour, &coff_sym_fns); - coff_objfile_data_key = register_objfile_data_with_cleanup (NULL, - coff_free_info); - coff_register_index = register_symbol_register_impl (LOC_REGISTER, &coff_register_funcs); } -- 2.30.2