From: Simon Marchi Date: Thu, 8 Jan 2026 19:33:24 +0000 (-0500) Subject: gdb/xcoffread: simplify xcoff_secnum_to_sections X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=35e231e48ad59ed04b6d99d7ce9a8c3ee8769787;p=thirdparty%2Fbinutils-gdb.git 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 --- 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; }