diff options
author | Tom Tromey <tom@tromey.com> | 2018-03-12 21:50:33 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-03-16 14:22:13 -0600 |
commit | 37e136b1684929df204ddd09c38978c705fa7228 (patch) | |
tree | 08037fc61219a9f4006118689c590033bc5cedb7 /gdb/symfile.h | |
parent | 8b067d2cf5bf801eb143b4b04da5c22607673471 (diff) | |
download | gdb-37e136b1684929df204ddd09c38978c705fa7228.zip gdb-37e136b1684929df204ddd09c38978c705fa7228.tar.gz gdb-37e136b1684929df204ddd09c38978c705fa7228.tar.bz2 |
Remove make_cleanup_free_section_addr_info
This removes make_cleanup_free_section_addr_info. Instead -- per
Simon's suggestion -- this changes section_addr_info to be a
std::vector.
Regression tested by the buildbot.
gdb/ChangeLog
2018-03-16 Tom Tromey <tom@tromey.com>
* xcoffread.c (xcoff_symfile_offsets): Change type of "addrs".
* utils.h (make_cleanup_free_section_addr_info): Don't declare.
* utils.c (do_free_section_addr_info)
(make_cleanup_free_section_addr_info): Remove.
* symfile.h (struct other_sections): Add constructor.
(struct section_addr_info): Remove.
(section_addr_info): New typedef.
(struct sym_fns) <sym_offsets>: Change type of parameter.
(build_section_addr_info_from_objfile)
(relative_addr_info_to_section_offsets, addr_info_make_relative)
(default_symfile_offsets, symbol_file_add)
(symbol_file_add_from_bfd)
(build_section_addr_info_from_section_table): Update.
(alloc_section_addr_info, free_section_addr_info): Don't declare.
* symfile.c (alloc_section_addr_info): Remove.
(build_section_addr_info_from_section_table): Change return type.
Update.
(build_section_addr_info_from_bfd)
(build_section_addr_info_from_objfile): Likewise.
(free_section_addr_info): Remove.
(relative_addr_info_to_section_offsets): Change type of "addrs".
(addrs_section_compar): Now a std::sort comparator.
(addrs_section_sort): Change return type.
(addr_info_make_relative): Change type of "addrs". Update.
(default_symfile_offsets, syms_from_objfile_1)
(syms_from_objfile, symbol_file_add_with_addrs): Likewise.
(symbol_file_add_separate): Update.
(symbol_file_add): Change type of "addrs". Update.
(add_symbol_file_command): Update. Remove cleanups.
* symfile-mem.c (symbol_file_add_from_memory): Update. Remove
cleanups.
* symfile-debug.c (debug_sym_offsets): Change type of "info".
* solib.c (solib_read_symbols): Update.
* objfiles.c (objfile_relocate): Update. Remove cleanups.
* machoread.c (macho_symfile_offsets): Update.
* jit.c (jit_bfd_try_read_symtab): Update.
Diffstat (limited to 'gdb/symfile.h')
-rw-r--r-- | gdb/symfile.h | 52 |
1 files changed, 22 insertions, 30 deletions
diff --git a/gdb/symfile.h b/gdb/symfile.h index 8cd47d8..d918509 100644 --- a/gdb/symfile.h +++ b/gdb/symfile.h @@ -47,8 +47,19 @@ typedef int (symbol_compare_ftype) (const char *string1, struct other_sections { + other_sections (CORE_ADDR addr_, std::string &&name_, int sectindex_) + : addr (addr_), + name (std::move (name_)), + sectindex (sectindex_) + { + } + + other_sections (other_sections &&other) = default; + + DISABLE_COPY_AND_ASSIGN (other_sections); + CORE_ADDR addr; - char *name; + std::string name; /* SECTINDEX must be valid for associated BFD or set to -1. */ int sectindex; @@ -61,15 +72,7 @@ struct other_sections to communicate the section addresses in shared objects to symbol_file_add (). */ -struct section_addr_info -{ - /* The number of sections for which address information is - available. */ - size_t num_sections; - /* Sections whose names are file format dependent. */ - struct other_sections other[1]; -}; - +typedef std::vector<other_sections> section_addr_info; /* A table listing the load segments in a symfile, and which segment each BFD section belongs to. */ @@ -340,7 +343,7 @@ struct sym_fns The section_addr_info structure contains the offset of loadable and allocated sections, relative to the absolute offsets found in the BFD. */ - void (*sym_offsets) (struct objfile *, const struct section_addr_info *); + void (*sym_offsets) (struct objfile *, const section_addr_info &); /* This function produces a format-independent description of the segments of ABFD. Each segment is a unit of the file @@ -369,21 +372,21 @@ struct sym_fns const struct quick_symbol_functions *qf; }; -extern struct section_addr_info * +extern section_addr_info build_section_addr_info_from_objfile (const struct objfile *objfile); extern void relative_addr_info_to_section_offsets (struct section_offsets *section_offsets, int num_sections, - const struct section_addr_info *addrs); + const section_addr_info &addrs); -extern void addr_info_make_relative (struct section_addr_info *addrs, +extern void addr_info_make_relative (section_addr_info *addrs, bfd *abfd); /* The default version of sym_fns.sym_offsets for readers that don't do anything special. */ extern void default_symfile_offsets (struct objfile *objfile, - const struct section_addr_info *); + const section_addr_info &); /* The default version of sym_fns.sym_segments for readers that don't do anything special. */ @@ -417,10 +420,10 @@ extern enum language deduce_language_from_filename (const char *); extern void add_filename_language (const char *ext, enum language lang); extern struct objfile *symbol_file_add (const char *, symfile_add_flags, - struct section_addr_info *, objfile_flags); + section_addr_info *, objfile_flags); extern struct objfile *symbol_file_add_from_bfd (bfd *, const char *, symfile_add_flags, - struct section_addr_info *, + section_addr_info *, objfile_flags, struct objfile *parent); extern void symbol_file_add_separate (bfd *, const char *, symfile_add_flags, @@ -428,26 +431,15 @@ extern void symbol_file_add_separate (bfd *, const char *, symfile_add_flags, extern std::string find_separate_debug_file_by_debuglink (struct objfile *); -/* Create a new section_addr_info, with room for NUM_SECTIONS. */ - -extern struct section_addr_info *alloc_section_addr_info (size_t - num_sections); - /* Build (allocate and populate) a section_addr_info struct from an existing section table. */ -extern struct section_addr_info - *build_section_addr_info_from_section_table (const struct target_section +extern section_addr_info + build_section_addr_info_from_section_table (const struct target_section *start, const struct target_section *end); -/* Free all memory allocated by - build_section_addr_info_from_section_table. */ - -extern void free_section_addr_info (struct section_addr_info *); - - /* Variables */ /* If non-zero, shared library symbols will be added automatically |