public inbox for gdb-cvs@sourceware.org help / color / mirror / Atom feed
From: Tom Tromey <tromey@sourceware.org> To: gdb-cvs@sourceware.org Subject: [binutils-gdb] Simplify BFD section iteration in coff-pe-read.c Date: Fri, 22 Apr 2022 15:22:21 +0000 (GMT) [thread overview] Message-ID: <20220422152221.9937B3858C2C@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=5a0d4dfbf8aa8238c3eaccfdaf59ec9c4ae0331e commit 5a0d4dfbf8aa8238c3eaccfdaf59ec9c4ae0331e Author: Tom Tromey <tromey@adacore.com> Date: Tue Apr 19 07:27:48 2022 -0600 Simplify BFD section iteration in coff-pe-read.c coff-pe-read.c iterates over BFD sections using bfd_map_over_sections, but it's much simpler to use a for-each loop. This allows for the removal of helper functions and types. Diff: --- gdb/coff-pe-read.c | 55 +++++++++++++----------------------------------------- 1 file changed, 13 insertions(+), 42 deletions(-) diff --git a/gdb/coff-pe-read.c b/gdb/coff-pe-read.c index 3ae2a7ffb13..32d0a9ef649 100644 --- a/gdb/coff-pe-read.c +++ b/gdb/coff-pe-read.c @@ -100,45 +100,14 @@ read_pe_section_index (const char *section_name) static int get_pe_section_index (const char *section_name, - struct read_pe_section_data *sections, - int nb_sections) + const std::vector<read_pe_section_data> §ions) { - int i; - - for (i = 0; i < nb_sections; i++) + for (int i = 0; i < sections.size (); i++) if (sections[i].section_name == section_name) return i; return PE_SECTION_INDEX_INVALID; } -/* Structure used by get_section_vmas function below - to access section_data array and the size of the array - stored in nb_sections field. */ -struct pe_sections_info -{ - int nb_sections; - struct read_pe_section_data *sections; -}; - -/* Record the virtual memory address of a section. */ - -static void -get_section_vmas (bfd *abfd, asection *sectp, void *context) -{ - struct pe_sections_info *data = (struct pe_sections_info *) context; - struct read_pe_section_data *sections = data->sections; - int sectix = get_pe_section_index (sectp->name, sections, - data->nb_sections); - - if (sectix != PE_SECTION_INDEX_INVALID) - { - /* Data within the section start at rva_start in the pe and at - bfd_get_section_vma() within memory. Store the offset. */ - - sections[sectix].vma_offset - = bfd_section_vma (sectp) - sections[sectix].rva_start; - } -} \f /* Create a minimal symbol entry for an exported symbol. SYM_NAME contains the exported name or NULL if exported by ordinal, @@ -347,11 +316,6 @@ read_pe_exported_syms (minimal_symbol_reader &reader, int is_pe64 = 0; int is_pe32 = 0; - /* Array elements are for text, data and bss in that order - Initialization with RVA_START > RVA_END guarantees that - unused sections won't be matched. */ - struct pe_sections_info pe_sections_info; - char const *target = bfd_get_target (objfile->obfd); std::vector<struct read_pe_section_data> section_data @@ -522,10 +486,17 @@ read_pe_exported_syms (minimal_symbol_reader &reader, /* Use internal dll name instead of full pathname. */ dll_name = (char *) (pe_as32 (expdata + 12) + erva); - pe_sections_info.nb_sections = otherix; - pe_sections_info.sections = section_data.data (); - - bfd_map_over_sections (dll, get_section_vmas, &pe_sections_info); + for (asection *sectp : gdb_bfd_sections (dll)) + { + int sectix = get_pe_section_index (sectp->name, section_data); + if (sectix != PE_SECTION_INDEX_INVALID) + { + /* Data within the section start at rva_start in the pe and at + bfd_get_section_vma() within memory. Store the offset. */ + section_data[sectix].vma_offset + = bfd_section_vma (sectp) - section_data[sectix].rva_start; + } + } /* Truncate name at first dot. Should maybe also convert to all lower case for convenience on Windows. */
reply other threads:[~2022-04-22 15:22 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220422152221.9937B3858C2C@sourceware.org \ --to=tromey@sourceware.org \ --cc=gdb-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).