elf_backend_can_make_multiple_eh_frame
Alan Modra
amodra@gmail.com
Sun Jan 4 07:26:38 GMT 2026
This flag is never set for any target. Delete it. Also, I think it
is safe to unconditionally enable what it was supposed to control.
* elf-bfd.h (struct elf_backend_data): Delete
elf_backend_can_make_multiple_eh_frame.
* elfxx-target.h (elf_backend_can_make_multiple_eh_frame): Don't
define or use.
* elflink.c (_bfd_elf_default_action_discarded): Move
SHT_GNU_SFRAME check earlier. Return 0 for ".eh_frame"
and ".eh_frame.*".
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index 72f0c545029..b759d469326 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -1515,9 +1515,6 @@ struct elf_backend_data
bool (*elf_backend_can_make_lsda_relative_eh_frame)
(bfd *, struct bfd_link_info *, asection *);
- /* Tell linker to support multiple eh_frame sections. */
- bool elf_backend_can_make_multiple_eh_frame;
-
/* This function returns an encoding after computing the encoded
value (and storing it in ENCODED) for the given OFFSET into OSEC,
to be stored in at LOC_OFFSET into the LOC_SEC input section.
diff --git a/bfd/elflink.c b/bfd/elflink.c
index d0b1ec5cb04..3807da017fa 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -11305,23 +11305,17 @@ elf_section_ignore_discarded_relocs (asection *sec)
unsigned int
_bfd_elf_default_action_discarded (asection *sec)
{
- const struct elf_backend_data *bed;
- bed = get_elf_backend_data (sec->owner);
-
if (sec->flags & SEC_DEBUGGING)
return PRETEND;
- if (strcmp (".eh_frame", sec->name) == 0)
- return 0;
-
- if (bed->elf_backend_can_make_multiple_eh_frame
- && strncmp (sec->name, ".eh_frame.", 10) == 0)
+ if (elf_section_type (sec) == SHT_GNU_SFRAME)
return 0;
- if (elf_section_type (sec) == SHT_GNU_SFRAME)
+ if (strncmp (sec->name, ".eh_frame", 9) == 0
+ && (sec->name[9] == 0 || sec->name[9] == '.'))
return 0;
- if (strcmp (".gcc_except_table", sec->name) == 0)
+ if (strcmp (sec->name, ".gcc_except_table") == 0)
return 0;
return COMPLAIN | PRETEND;
diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h
index 479ba47785d..ffda07dfe61 100644
--- a/bfd/elfxx-target.h
+++ b/bfd/elfxx-target.h
@@ -652,9 +652,6 @@
#ifndef elf_backend_can_make_lsda_relative_eh_frame
#define elf_backend_can_make_lsda_relative_eh_frame _bfd_elf_can_make_relative
#endif
-#ifndef elf_backend_can_make_multiple_eh_frame
-#define elf_backend_can_make_multiple_eh_frame 0
-#endif
#ifndef elf_backend_encode_eh_address
#define elf_backend_encode_eh_address _bfd_elf_encode_eh_address
#endif
@@ -892,7 +889,6 @@ static const struct elf_backend_data elfNN_bed =
elf_backend_eh_frame_address_size,
elf_backend_can_make_relative_eh_frame,
elf_backend_can_make_lsda_relative_eh_frame,
- elf_backend_can_make_multiple_eh_frame,
elf_backend_encode_eh_address,
elf_backend_write_section,
elf_backend_add_glibc_version_dependency,
--
Alan Modra
More information about the Binutils
mailing list