|
Nick Clifton |
1be393 |
diff -rup binutils.orig/bfd/elf32-i386.c binutils-2.29.1/bfd/elf32-i386.c
|
|
Nick Clifton |
1be393 |
--- binutils.orig/bfd/elf32-i386.c 2018-03-09 15:55:56.812856843 +0000
|
|
Nick Clifton |
1be393 |
+++ binutils-2.29.1/bfd/elf32-i386.c 2018-03-09 16:00:45.104464000 +0000
|
|
Nick Clifton |
1be393 |
@@ -4080,6 +4080,10 @@ elf_i386_relocate_section (bfd *output_b
|
|
Nick Clifton |
1be393 |
|
|
Nick Clifton |
1be393 |
if ((input_section->flags & SEC_ALLOC) == 0)
|
|
Nick Clifton |
1be393 |
{
|
|
Nick Clifton |
1be393 |
+ /* If this is a SHT_NOTE section without SHF_ALLOC, treat
|
|
Nick Clifton |
1be393 |
+ STT_GNU_IFUNC symbol as STT_FUNC. */
|
|
Nick Clifton |
1be393 |
+ if (elf_section_type (input_section) == SHT_NOTE)
|
|
Nick Clifton |
1be393 |
+ goto skip_ifunc;
|
|
Nick Clifton |
1be393 |
/* Dynamic relocs are not propagated for SEC_DEBUGGING
|
|
Nick Clifton |
1be393 |
sections because such sections are not SEC_ALLOC and
|
|
Nick Clifton |
1be393 |
thus ld.so will not process them. */
|
|
Nick Clifton |
1be393 |
@@ -4301,6 +4305,7 @@ do_ifunc_pointer:
|
|
Nick Clifton |
1be393 |
}
|
|
Nick Clifton |
1be393 |
}
|
|
Nick Clifton |
1be393 |
|
|
Nick Clifton |
1be393 |
+ skip_ifunc:
|
|
Nick Clifton |
1be393 |
resolved_to_zero = (eh != NULL
|
|
Nick Clifton |
1be393 |
&& UNDEFINED_WEAK_RESOLVED_TO_ZERO (info,
|
|
Nick Clifton |
1be393 |
eh->has_got_reloc,
|
|
Nick Clifton |
1be393 |
diff -rup binutils.orig/bfd/elf32-s390.c binutils-2.29.1/bfd/elf32-s390.c
|
|
Nick Clifton |
1be393 |
--- binutils.orig/bfd/elf32-s390.c 2018-03-09 15:55:56.827856667 +0000
|
|
Nick Clifton |
1be393 |
+++ binutils-2.29.1/bfd/elf32-s390.c 2018-03-09 16:00:37.519553849 +0000
|
|
Nick Clifton |
1be393 |
@@ -2770,6 +2770,9 @@ elf_s390_relocate_section (bfd *output_b
|
|
Nick Clifton |
1be393 |
case R_390_8:
|
|
Nick Clifton |
1be393 |
case R_390_16:
|
|
Nick Clifton |
1be393 |
case R_390_32:
|
|
Nick Clifton |
1be393 |
+ if ((input_section->flags & SEC_ALLOC) == 0)
|
|
Nick Clifton |
1be393 |
+ break;
|
|
Nick Clifton |
1be393 |
+
|
|
Nick Clifton |
1be393 |
if (h != NULL
|
|
Nick Clifton |
1be393 |
&& s390_is_ifunc_symbol_p (h)
|
|
Nick Clifton |
1be393 |
&& h->def_regular)
|
|
Nick Clifton |
1be393 |
@@ -2831,9 +2834,6 @@ elf_s390_relocate_section (bfd *output_b
|
|
Nick Clifton |
1be393 |
}
|
|
Nick Clifton |
1be393 |
}
|
|
Nick Clifton |
1be393 |
|
|
Nick Clifton |
1be393 |
- if ((input_section->flags & SEC_ALLOC) == 0)
|
|
Nick Clifton |
1be393 |
- break;
|
|
Nick Clifton |
1be393 |
-
|
|
Nick Clifton |
1be393 |
if ((bfd_link_pic (info)
|
|
Nick Clifton |
1be393 |
&& (h == NULL
|
|
Nick Clifton |
1be393 |
|| ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
|
|
Nick Clifton |
1be393 |
diff -rup binutils.orig/bfd/elf64-s390.c binutils-2.29.1/bfd/elf64-s390.c
|
|
Nick Clifton |
1be393 |
--- binutils.orig/bfd/elf64-s390.c 2018-03-09 15:55:56.812856843 +0000
|
|
Nick Clifton |
1be393 |
+++ binutils-2.29.1/bfd/elf64-s390.c 2018-03-09 16:00:29.038654304 +0000
|
|
Nick Clifton |
1be393 |
@@ -2739,6 +2739,9 @@ elf_s390_relocate_section (bfd *output_b
|
|
Nick Clifton |
1be393 |
case R_390_32:
|
|
Nick Clifton |
1be393 |
case R_390_64:
|
|
Nick Clifton |
1be393 |
|
|
Nick Clifton |
1be393 |
+ if ((input_section->flags & SEC_ALLOC) == 0)
|
|
Nick Clifton |
1be393 |
+ break;
|
|
Nick Clifton |
1be393 |
+
|
|
Nick Clifton |
1be393 |
if (h != NULL
|
|
Nick Clifton |
1be393 |
&& s390_is_ifunc_symbol_p (h)
|
|
Nick Clifton |
1be393 |
&& h->def_regular)
|
|
Nick Clifton |
1be393 |
@@ -2801,9 +2804,6 @@ elf_s390_relocate_section (bfd *output_b
|
|
Nick Clifton |
1be393 |
}
|
|
Nick Clifton |
1be393 |
}
|
|
Nick Clifton |
1be393 |
|
|
Nick Clifton |
1be393 |
- if ((input_section->flags & SEC_ALLOC) == 0)
|
|
Nick Clifton |
1be393 |
- break;
|
|
Nick Clifton |
1be393 |
-
|
|
Nick Clifton |
1be393 |
if ((bfd_link_pic (info)
|
|
Nick Clifton |
1be393 |
&& (h == NULL
|
|
Nick Clifton |
1be393 |
|| (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
|
|
Nick Clifton |
1be393 |
diff -rup binutils.orig/bfd/elf64-x86-64.c binutils-2.29.1/bfd/elf64-x86-64.c
|
|
Nick Clifton |
1be393 |
--- binutils.orig/bfd/elf64-x86-64.c 2018-03-09 15:55:56.826856678 +0000
|
|
Nick Clifton |
1be393 |
+++ binutils-2.29.1/bfd/elf64-x86-64.c 2018-03-09 16:00:20.798751915 +0000
|
|
Nick Clifton |
1be393 |
@@ -4409,6 +4409,10 @@ elf_x86_64_relocate_section (bfd *output
|
|
Nick Clifton |
1be393 |
|
|
Nick Clifton |
1be393 |
if ((input_section->flags & SEC_ALLOC) == 0)
|
|
Nick Clifton |
1be393 |
{
|
|
Nick Clifton |
1be393 |
+ /* If this is a SHT_NOTE section without SHF_ALLOC, treat
|
|
Nick Clifton |
1be393 |
+ STT_GNU_IFUNC symbol as STT_FUNC. */
|
|
Nick Clifton |
1be393 |
+ if (elf_section_type (input_section) == SHT_NOTE)
|
|
Nick Clifton |
1be393 |
+ goto skip_ifunc;
|
|
Nick Clifton |
1be393 |
/* Dynamic relocs are not propagated for SEC_DEBUGGING
|
|
Nick Clifton |
1be393 |
sections because such sections are not SEC_ALLOC and
|
|
Nick Clifton |
1be393 |
thus ld.so will not process them. */
|
|
Nick Clifton |
1be393 |
@@ -4634,6 +4638,7 @@ do_ifunc_pointer:
|
|
Nick Clifton |
1be393 |
}
|
|
Nick Clifton |
1be393 |
}
|
|
Nick Clifton |
1be393 |
|
|
Nick Clifton |
1be393 |
+ skip_ifunc:
|
|
Nick Clifton |
1be393 |
resolved_to_zero = (eh != NULL
|
|
Nick Clifton |
1be393 |
&& UNDEFINED_WEAK_RESOLVED_TO_ZERO (info,
|
|
Nick Clifton |
1be393 |
eh->has_got_reloc,
|
|
Nick Clifton |
1be393 |
diff -rup binutils.orig/bfd/elfnn-aarch64.c binutils-2.29.1/bfd/elfnn-aarch64.c
|
|
Nick Clifton |
1be393 |
--- binutils.orig/bfd/elfnn-aarch64.c 2018-03-09 15:55:56.821856737 +0000
|
|
Nick Clifton |
1be393 |
+++ binutils-2.29.1/bfd/elfnn-aarch64.c 2018-03-09 16:00:13.181842141 +0000
|
|
Nick Clifton |
1be393 |
@@ -4984,6 +4984,11 @@ elfNN_aarch64_final_link_relocate (reloc
|
|
Nick Clifton |
1be393 |
|
|
Nick Clifton |
1be393 |
if ((input_section->flags & SEC_ALLOC) == 0)
|
|
Nick Clifton |
1be393 |
{
|
|
Nick Clifton |
1be393 |
+ /* If this is a SHT_NOTE section without SHF_ALLOC, treat
|
|
Nick Clifton |
1be393 |
+ STT_GNU_IFUNC symbol as STT_FUNC. */
|
|
Nick Clifton |
1be393 |
+ if (elf_section_type (input_section) == SHT_NOTE)
|
|
Nick Clifton |
1be393 |
+ goto skip_ifunc;
|
|
Nick Clifton |
1be393 |
+
|
|
Nick Clifton |
1be393 |
/* Dynamic relocs are not propagated for SEC_DEBUGGING
|
|
Nick Clifton |
1be393 |
sections because such sections are not SEC_ALLOC and
|
|
Nick Clifton |
1be393 |
thus ld.so will not process them. */
|
|
Nick Clifton |
1be393 |
@@ -5177,6 +5182,7 @@ bad_ifunc_reloc:
|
|
Nick Clifton |
1be393 |
}
|
|
Nick Clifton |
1be393 |
}
|
|
Nick Clifton |
1be393 |
|
|
Nick Clifton |
1be393 |
+ skip_ifunc:
|
|
Nick Clifton |
1be393 |
resolved_to_zero = (h != NULL
|
|
Nick Clifton |
1be393 |
&& UNDEFWEAK_NO_DYNAMIC_RELOC (info, h));
|
|
Nick Clifton |
1be393 |
|
|
Nick Clifton |
1be393 |
diff -rup binutils.orig/bfd/elfxx-sparc.c binutils-2.29.1/bfd/elfxx-sparc.c
|
|
Nick Clifton |
1be393 |
--- binutils.orig/bfd/elfxx-sparc.c 2018-03-09 15:55:56.822856726 +0000
|
|
Nick Clifton |
1be393 |
+++ binutils-2.29.1/bfd/elfxx-sparc.c 2018-03-09 16:00:02.604967430 +0000
|
|
Nick Clifton |
1be393 |
@@ -3203,7 +3203,13 @@ _bfd_sparc_elf_relocate_section (bfd *ou
|
|
Nick Clifton |
1be393 |
|
|
Nick Clifton |
1be393 |
if ((input_section->flags & SEC_ALLOC) == 0
|
|
Nick Clifton |
1be393 |
|| h->plt.offset == (bfd_vma) -1)
|
|
Nick Clifton |
1be393 |
- abort ();
|
|
Nick Clifton |
1be393 |
+ {
|
|
Nick Clifton |
1be393 |
+ /* If this is a SHT_NOTE section without SHF_ALLOC, treat
|
|
Nick Clifton |
1be393 |
+ STT_GNU_IFUNC symbol as STT_FUNC. */
|
|
Nick Clifton |
1be393 |
+ if (elf_section_type (input_section) == SHT_NOTE)
|
|
Nick Clifton |
1be393 |
+ goto skip_ifunc;
|
|
Nick Clifton |
1be393 |
+ abort ();
|
|
Nick Clifton |
1be393 |
+ }
|
|
Nick Clifton |
1be393 |
|
|
Nick Clifton |
1be393 |
plt_sec = htab->elf.splt;
|
|
Nick Clifton |
1be393 |
if (! plt_sec)
|
|
Nick Clifton |
1be393 |
@@ -3307,6 +3313,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
|
|
Nick Clifton |
1be393 |
}
|
|
Nick Clifton |
1be393 |
}
|
|
Nick Clifton |
1be393 |
|
|
Nick Clifton |
1be393 |
+ skip_ifunc:
|
|
Nick Clifton |
1be393 |
eh = (struct _bfd_sparc_elf_link_hash_entry *) h;
|
|
Nick Clifton |
1be393 |
resolved_to_zero = (eh != NULL
|
|
Nick Clifton |
1be393 |
&& UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, eh));
|