Module Name:    src
Committed By:   matt
Date:           Sat Mar 28 07:51:20 UTC 2015

Modified Files:
        src/external/gpl3/binutils/dist/bfd: elfnn-riscv.c

Log Message:
Deal with GNU IFUNCs properly.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/external/gpl3/binutils/dist/bfd/elfnn-riscv.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/elfnn-riscv.c
diff -u src/external/gpl3/binutils/dist/bfd/elfnn-riscv.c:1.1 src/external/gpl3/binutils/dist/bfd/elfnn-riscv.c:1.2
--- src/external/gpl3/binutils/dist/bfd/elfnn-riscv.c:1.1	Fri Mar 27 06:34:31 2015
+++ src/external/gpl3/binutils/dist/bfd/elfnn-riscv.c	Sat Mar 28 07:51:20 2015
@@ -860,6 +860,7 @@ riscv_elf_adjust_dynamic_symbol (struct 
   /* 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
@@ -868,7 +869,7 @@ riscv_elf_adjust_dynamic_symbol (struct 
   /* If this is a function, put it in the procedure linkage table.  We
      will fill in the contents of the procedure linkage table later
      (although we could actually do it here).  */
-  if (h->type == STT_FUNC || h->needs_plt)
+  if (h->type == STT_FUNC || h->type == STT_GNU_IFUNC || h->needs_plt)
     {
       if (h->plt.refcount <= 0
 	  || SYMBOL_CALLS_LOCAL (info, h)

Reply via email to