summaryrefslogtreecommitdiff
path: root/source/d/binutils/patches/binutils-special-sections-in-groups.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/d/binutils/patches/binutils-special-sections-in-groups.patch')
-rw-r--r--source/d/binutils/patches/binutils-special-sections-in-groups.patch27
1 files changed, 27 insertions, 0 deletions
diff --git a/source/d/binutils/patches/binutils-special-sections-in-groups.patch b/source/d/binutils/patches/binutils-special-sections-in-groups.patch
new file mode 100644
index 00000000..7de5a93f
--- /dev/null
+++ b/source/d/binutils/patches/binutils-special-sections-in-groups.patch
@@ -0,0 +1,27 @@
+--- binutils.orig/bfd/elf.c 2018-10-19 11:42:10.107277490 +0100
++++ binutils-2.31.1/bfd/elf.c 2018-10-19 11:44:33.607105801 +0100
+@@ -830,7 +830,13 @@ setup_group (bfd *abfd, Elf_Internal_Shd
+ }
+ }
+
+- if (elf_group_name (newsect) == NULL)
++ if (elf_group_name (newsect) == NULL
++ /* OS specific sections might be in a group (eg ARM's ARM_EXIDX section)
++ but they will not have been added to the group because they do not
++ have contents that the ELF code in the BFD library knows how to
++ process. This is OK though - we rely upon the target backends to
++ handle these sections for us. */
++ && hdr->sh_type < SHT_LOOS)
+ {
+ /* xgettext:c-format */
+ _bfd_error_handler (_("%pB: no group info for section '%pA'"),
+@@ -936,7 +942,8 @@ _bfd_elf_setup_sections (bfd *abfd)
+ else if (idx->shdr->bfd_section)
+ elf_sec_group (idx->shdr->bfd_section) = shdr->bfd_section;
+ else if (idx->shdr->sh_type != SHT_RELA
+- && idx->shdr->sh_type != SHT_REL)
++ && idx->shdr->sh_type != SHT_REL
++ && idx->shdr->sh_type < SHT_LOOS)
+ {
+ /* There are some unknown sections in the group. */
+ _bfd_error_handler