Blame SOURCES/binutils-2.27-aarch64-ifunc.patch

1a405f
diff -rup binutils.orig/bfd/elfnn-aarch64.c binutils-2.27/bfd/elfnn-aarch64.c
1a405f
--- binutils.orig/bfd/elfnn-aarch64.c	2017-02-21 10:45:19.311956006 +0000
1a405f
+++ binutils-2.27/bfd/elfnn-aarch64.c	2017-02-21 11:55:07.517922655 +0000
1a405f
@@ -4947,6 +4947,7 @@ elfNN_aarch64_final_link_relocate (reloc
1a405f
      it here if it is defined in a non-shared object.  */
1a405f
   if (h != NULL
1a405f
       && h->type == STT_GNU_IFUNC
1a405f
+      && (input_section->flags & SEC_ALLOC)
1a405f
       && h->def_regular)
1a405f
     {
1a405f
       asection *plt;
1a405f
Only in binutils.orig/ld/testsuite/ld-ifunc: .#pr18808b.c
1a405f
Only in binutils.orig/ld/testsuite/ld-ifunc: #pr18808b.c#
1a405f
diff -rup binutils.orig/ld/testsuite/ld-ifunc/pr18808b.c binutils-2.27/ld/testsuite/ld-ifunc/pr18808b.c
1a405f
--- binutils.orig/ld/testsuite/ld-ifunc/pr18808b.c	2017-02-21 10:45:27.418826491 +0000
1a405f
+++ binutils-2.27/ld/testsuite/ld-ifunc/pr18808b.c	2017-02-21 10:45:41.049608726 +0000
1a405f
@@ -6,7 +6,7 @@ static int foo_impl(int x)
1a405f
   return x;
1a405f
 }
1a405f
 
1a405f
-int bar()
1a405f
+void bar ()
1a405f
 {
1a405f
   int (*f)(int) = foo;
1a405f