Module Name:    src
Committed By:   matt
Date:           Tue Aug 26 17:03:51 UTC 2014

Modified Files:
        src/external/gpl3/binutils/dist/bfd: elf32-m68k.c elf32-sh.c
            elf32-vax.c

Log Message:
Allow STT_GNU_IFUNC to be dynamic symbols


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/external/gpl3/binutils/dist/bfd/elf32-m68k.c \
    src/external/gpl3/binutils/dist/bfd/elf32-sh.c
cvs rdiff -u -r1.9 -r1.10 src/external/gpl3/binutils/dist/bfd/elf32-vax.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/gpl3/binutils/dist/bfd/elf32-m68k.c
diff -u src/external/gpl3/binutils/dist/bfd/elf32-m68k.c:1.4 src/external/gpl3/binutils/dist/bfd/elf32-m68k.c:1.5
--- src/external/gpl3/binutils/dist/bfd/elf32-m68k.c:1.4	Sun Sep 29 14:03:29 2013
+++ src/external/gpl3/binutils/dist/bfd/elf32-m68k.c	Tue Aug 26 17:03:51 2014
@@ -3104,6 +3104,7 @@ elf_m68k_adjust_dynamic_symbol (struct b
   /* Make sure we know what is going on here.  */
   BFD_ASSERT (dynobj != NULL
 	      && (h->needs_plt
+		  || h->type == STT_GNU_IFUNC
 		  || h->u.weakdef != NULL
 		  || (h->def_dynamic
 		      && h->ref_regular
@@ -3112,7 +3113,7 @@ elf_m68k_adjust_dynamic_symbol (struct b
   /* If this is a function, put it in the procedure linkage table.  We
      will fill in the contents of the procedure linkage table later,
      when we know the address of the .got section.  */
-  if (h->type == STT_FUNC
+  if ((h->type == STT_FUNC || h->type == STT_GNU_IFUNC)
       || h->needs_plt)
     {
       if ((h->plt.refcount <= 0
Index: src/external/gpl3/binutils/dist/bfd/elf32-sh.c
diff -u src/external/gpl3/binutils/dist/bfd/elf32-sh.c:1.4 src/external/gpl3/binutils/dist/bfd/elf32-sh.c:1.5
--- src/external/gpl3/binutils/dist/bfd/elf32-sh.c:1.4	Sun Sep 29 14:03:29 2013
+++ src/external/gpl3/binutils/dist/bfd/elf32-sh.c	Tue Aug 26 17:03:51 2014
@@ -2808,6 +2808,7 @@ sh_elf_adjust_dynamic_symbol (struct bfd
   /* Make sure we know what is going on here.  */
   BFD_ASSERT (htab->root.dynobj != NULL
 	      && (h->needs_plt
+		  || h->type == STT_GNU_IFUNC
 		  || h->u.weakdef != NULL
 		  || (h->def_dynamic
 		      && h->ref_regular
@@ -2816,7 +2817,7 @@ sh_elf_adjust_dynamic_symbol (struct bfd
   /* If this is a function, put it in the procedure linkage table.  We
      will fill in the contents of the procedure linkage table later,
      when we know the address of the .got section.  */
-  if (h->type == STT_FUNC
+  if ((h->type == STT_FUNC || h->type == STT_GNU_IFUNC)
       || h->needs_plt)
     {
       if (h->plt.refcount <= 0

Index: src/external/gpl3/binutils/dist/bfd/elf32-vax.c
diff -u src/external/gpl3/binutils/dist/bfd/elf32-vax.c:1.9 src/external/gpl3/binutils/dist/bfd/elf32-vax.c:1.10
--- src/external/gpl3/binutils/dist/bfd/elf32-vax.c:1.9	Thu Oct  3 12:06:04 2013
+++ src/external/gpl3/binutils/dist/bfd/elf32-vax.c	Tue Aug 26 17:03:51 2014
@@ -946,6 +946,7 @@ elf_vax_adjust_dynamic_symbol (info, h)
   /* Make sure we know what is going on here.  */
   BFD_ASSERT (dynobj != NULL
 	      && (h->needs_plt
+		  || h->type == STT_GNU_IFUNC
 		  || h->u.weakdef != NULL
 		  || (h->def_dynamic
 		      && h->ref_regular
@@ -954,7 +955,7 @@ elf_vax_adjust_dynamic_symbol (info, h)
   /* If this is a function, put it in the procedure linkage table.  We
      will fill in the contents of the procedure linkage table later,
      when we know the address of the .got section.  */
-  if (h->type == STT_FUNC
+  if ((h->type == STT_FUNC || h->type == STT_GNU_IFUNC)
       || h->needs_plt)
     {
       if (h->plt.refcount <= 0

Reply via email to