diff options
Diffstat (limited to 'bfd/elf.c')
-rw-r--r-- | bfd/elf.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -2476,6 +2476,7 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex) case SHT_PREINIT_ARRAY: /* .preinit_array section. */ case SHT_GNU_LIBLIST: /* .gnu.liblist section. */ case SHT_GNU_HASH: /* .gnu.hash section. */ + case SHT_GNU_SFRAME: /* .sframe section. */ ret = _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex); goto success; @@ -2881,8 +2882,10 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex) default: /* Possibly an attributes section. */ - if (hdr->sh_type == SHT_GNU_ATTRIBUTES - || hdr->sh_type == bed->obj_attrs_section_type) + if (get_elf_backend_data (abfd)->target_os != is_solaris + /* PR 33153: Solaris defines SHT_SUNW_cap which collides with SHT_GNU_ATTRIBUTES. */ + && (hdr->sh_type == SHT_GNU_ATTRIBUTES + || hdr->sh_type == bed->obj_attrs_section_type)) { if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex)) goto fail; |