[binutils-gdb] gdb/xcoffread: simplify xcoff_secnum_to_sections
Simon Marchi
simark@sourceware.org
Fri Jan 9 05:40:26 GMT 2026
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=35e231e48ad59ed04b6d99d7ce9a8c3ee8769787
commit 35e231e48ad59ed04b6d99d7ce9a8c3ee8769787
Author: Simon Marchi <simon.marchi@efficios.com>
Date: Thu Jan 8 14:33:24 2026 -0500
gdb/xcoffread: simplify xcoff_secnum_to_sections
The only remaining caller of xcoff_secnum_to_sections doesn't care about
the section index in the objfile, so remove that part.
Return the BFD section as the return value of the function, instead of
an output parameter. Remove the unnecessary default in the switch, to
avoid a "jump to label over variable initialization" warning.
Rename to xcoff_secnum_to_section (singular).
Change-Id: I464d8b0e1425ea2732b0d61355c5b0c66218122e
Approved-By: Tom Tromey <tom@tromey.com>
Diff:
---
gdb/xcoffread.c | 41 ++++++++++-------------------------------
1 file changed, 10 insertions(+), 31 deletions(-)
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
index da431a150f8..a3cf8174078 100644
--- a/gdb/xcoffread.c
+++ b/gdb/xcoffread.c
@@ -81,34 +81,18 @@ static void scan_xcoff_symtab (struct objfile *);
static void xcoff_symfile_init (struct objfile *);
/* Search all BFD sections for the section whose target_index is
- equal to N_SCNUM. Set *BFD_SECT to that section. The section's
- associated index in the objfile's section_offset table is also
- stored in *SECNUM.
+ equal to N_SCNUM.
- If no match is found, *BFD_SECT is set to NULL, and *SECNUM
- is set to the text section's number. */
+ If no match is found, return nullptr. */
-static void
-xcoff_secnum_to_sections (int n_scnum, struct objfile *objfile,
- asection **bfd_sect, int *secnum)
+static asection *
+xcoff_secnum_to_section (int n_scnum, objfile *objfile)
{
- *bfd_sect = NULL;
- *secnum = SECT_OFF_TEXT (objfile);
-
for (asection *sec : gdb_bfd_sections (objfile->obfd.get ()))
- {
- if (sec->target_index == n_scnum)
- {
- /* This is the section. Figure out what SECT_OFF_* code it is. */
- if (bfd_section_flags (sec) & SEC_CODE)
- *secnum = SECT_OFF_TEXT (objfile);
- else if (bfd_section_flags (sec) & SEC_LOAD)
- *secnum = SECT_OFF_DATA (objfile);
- else
- *secnum = gdb_bfd_section_index (objfile->obfd.get (), sec);
- *bfd_sect = sec;
- }
- }
+ if (sec->target_index == n_scnum)
+ return sec;
+
+ return nullptr;
}
/* Do initialization in preparation for reading symbols from OBJFILE.
@@ -150,8 +134,6 @@ scan_xcoff_symtab (struct objfile *objfile)
{
CORE_ADDR toc_offset = 0; /* toc offset value in data section. */
- asection *bfd_sect = nullptr;
- int ignored;
bfd *abfd = objfile->obfd.get ();
file_ptr symtab_offset = obj_sym_filepos (abfd);
struct internal_syment symbol;
@@ -217,14 +199,11 @@ scan_xcoff_symtab (struct objfile *objfile)
/* Make TOC offset relative to start address of
section. */
- xcoff_secnum_to_sections (symbol.n_scnum, objfile,
- &bfd_sect, &ignored);
+ asection *bfd_sect
+ = xcoff_secnum_to_section (symbol.n_scnum, objfile);
if (bfd_sect)
toc_offset -= bfd_section_vma (bfd_sect);
break;
-
- default:
- break;
}
break;
}
More information about the Gdb-cvs
mailing list