aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2020-09-19 11:54:49 -0600
committerTom Tromey <tom@tromey.com>2020-09-19 11:54:52 -0600
commitb35c1d1cf457db034186f321517eee69ef8457a5 (patch)
tree05dcbbd0e7f32f986369aad09b59bb770189f124
parent5bb6e9dd7090cacb02bbe9f20d8b101a59a3bf99 (diff)
downloadgdb-b35c1d1cf457db034186f321517eee69ef8457a5.zip
gdb-b35c1d1cf457db034186f321517eee69ef8457a5.tar.gz
gdb-b35c1d1cf457db034186f321517eee69ef8457a5.tar.bz2
Use gdb_bfd_sections in ELF osabi tag sniffing
This changes some ELF osabi tag-sniffing functions to avoid bfd_map_over_sections, in favor of iteration. I could only readily test the generic one. gdb/ChangeLog 2020-09-19 Tom Tromey <tom@tromey.com> * osabi.h (generic_elf_osabi_sniff_abi_tag_sections): Update. * osabi.c (generic_elf_osabi_sniff_abi_tag_sections): Change parameters. (generic_elf_osabi_sniffer): Use foreach. * mips-sde-tdep.c (mips_sde_elf_osabi_sniffer): Use foreach. * arm-tdep.c (arm_elf_osabi_sniffer): Use foreach.
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/arm-tdep.c7
-rw-r--r--gdb/mips-sde-tdep.c5
-rw-r--r--gdb/osabi.c10
-rw-r--r--gdb/osabi.h6
5 files changed, 23 insertions, 14 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index dab34bf..1fb3c88 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,14 @@
2020-09-19 Tom Tromey <tom@tromey.com>
+ * osabi.h (generic_elf_osabi_sniff_abi_tag_sections): Update.
+ * osabi.c (generic_elf_osabi_sniff_abi_tag_sections): Change
+ parameters.
+ (generic_elf_osabi_sniffer): Use foreach.
+ * mips-sde-tdep.c (mips_sde_elf_osabi_sniffer): Use foreach.
+ * arm-tdep.c (arm_elf_osabi_sniffer): Use foreach.
+
+2020-09-19 Tom Tromey <tom@tromey.com>
+
* dwarf2/read.c (locate_dwz_sections): Change parameters.
(dwarf2_get_dwz_file): Use foreach.
(dwarf2_locate_dwo_sections): Change parameters.
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 23da42f..91ab441 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -8863,9 +8863,10 @@ arm_elf_osabi_sniffer (bfd *abfd)
if (elfosabi == ELFOSABI_ARM)
/* GNU tools use this value. Check note sections in this case,
as well. */
- bfd_map_over_sections (abfd,
- generic_elf_osabi_sniff_abi_tag_sections,
- &osabi);
+ {
+ for (asection *sect : gdb_bfd_sections (abfd))
+ generic_elf_osabi_sniff_abi_tag_sections (abfd, sect, &osabi);
+ }
/* Anything else will be handled by the generic ELF sniffer. */
return osabi;
diff --git a/gdb/mips-sde-tdep.c b/gdb/mips-sde-tdep.c
index 685c3c7..1d282c2 100644
--- a/gdb/mips-sde-tdep.c
+++ b/gdb/mips-sde-tdep.c
@@ -226,9 +226,8 @@ mips_sde_elf_osabi_sniffer (bfd *abfd)
/* If the generic sniffer gets a hit, return and let other sniffers
get a crack at it. */
- bfd_map_over_sections (abfd,
- generic_elf_osabi_sniff_abi_tag_sections,
- &osabi);
+ for (asection *sect : gdb_bfd_sections (abfd))
+ generic_elf_osabi_sniff_abi_tag_sections (abfd, sect, &osabi);
if (osabi != GDB_OSABI_UNKNOWN)
return GDB_OSABI_UNKNOWN;
diff --git a/gdb/osabi.c b/gdb/osabi.c
index 627b9d9..e8a813b 100644
--- a/gdb/osabi.c
+++ b/gdb/osabi.c
@@ -23,6 +23,7 @@
#include "arch-utils.h"
#include "gdbcmd.h"
#include "command.h"
+#include "gdb_bfd.h"
#include "elf-bfd.h"
@@ -439,9 +440,9 @@ check_note (bfd *abfd, asection *sect, char *note, unsigned int *sectsize,
/* Generic sniffer for ELF flavoured files. */
void
-generic_elf_osabi_sniff_abi_tag_sections (bfd *abfd, asection *sect, void *obj)
+generic_elf_osabi_sniff_abi_tag_sections (bfd *abfd, asection *sect,
+ enum gdb_osabi *osabi)
{
- enum gdb_osabi *osabi = (enum gdb_osabi *) obj;
const char *name;
unsigned int sectsize;
char *note;
@@ -561,9 +562,8 @@ generic_elf_osabi_sniffer (bfd *abfd)
/* And likewise ELFOSABI_HPUX. For some reason the default
value for the EI_OSABI field is ELFOSABI_HPUX for all PA-RISC
targets (with the exception of GNU/Linux). */
- bfd_map_over_sections (abfd,
- generic_elf_osabi_sniff_abi_tag_sections,
- &osabi);
+ for (asection *sect : gdb_bfd_sections (abfd))
+ generic_elf_osabi_sniff_abi_tag_sections (abfd, sect, &osabi);
break;
case ELFOSABI_FREEBSD:
diff --git a/gdb/osabi.h b/gdb/osabi.h
index a7e6a10..9b7ab18 100644
--- a/gdb/osabi.h
+++ b/gdb/osabi.h
@@ -86,8 +86,8 @@ const char *gdbarch_osabi_name (enum gdb_osabi);
const char *osabi_triplet_regexp (enum gdb_osabi osabi);
/* Helper routine for ELF file sniffers. This looks at ABI tag note
- sections to determine the OS ABI from the note. It should be called
- via bfd_map_over_sections. */
-void generic_elf_osabi_sniff_abi_tag_sections (bfd *, asection *, void *);
+ sections to determine the OS ABI from the note. */
+void generic_elf_osabi_sniff_abi_tag_sections (bfd *, asection *,
+ enum gdb_osabi *);
#endif /* OSABI_H */