svn commit: r337436 - head/sys/kern

Konstantin Belousov kib at FreeBSD.org
Tue Aug 7 20:43:51 UTC 2018


Author: kib
Date: Tue Aug  7 20:43:50 2018
New Revision: 337436
URL: https://svnweb.freebsd.org/changeset/base/337436

Log:
  Followup to r337430: only call elf_reloc_ifunc on x86.
  
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week

Modified:
  head/sys/kern/link_elf_obj.c

Modified: head/sys/kern/link_elf_obj.c
==============================================================================
--- head/sys/kern/link_elf_obj.c	Tue Aug  7 19:23:03 2018	(r337435)
+++ head/sys/kern/link_elf_obj.c	Tue Aug  7 20:43:50 2018	(r337436)
@@ -485,10 +485,12 @@ link_elf_link_preload_finish(linker_file_t lf)
 	if (error)
 		return (error);
 
+#if defined(__i386__) || defined(__amd64__)
 	/* Now ifuncs. */
 	error = link_elf_reloc_local(lf, true);
 	if (error != 0)
 		return (error);
+#endif
 
 	/* Invoke .ctors */
 	link_elf_invoke_ctors(lf->ctors_addr, lf->ctors_size);
@@ -994,10 +996,12 @@ link_elf_load_file(linker_class_t cls, const char *fil
 	if (error)
 		goto out;
 
+#if defined(__i386__) || defined(__amd64__)
 	/* Now ifuncs. */
 	error = link_elf_reloc_local(lf, true);
 	if (error != 0)
 		goto out;
+#endif
 
 	/* Invoke .ctors */
 	link_elf_invoke_ctors(lf->ctors_addr, lf->ctors_size);
@@ -1521,9 +1525,11 @@ link_elf_reloc_local(linker_file_t lf, bool ifuncs)
 			    ifuncs)
 				elf_reloc_local(lf, base, rel, ELF_RELOC_REL,
 				    elf_obj_lookup);
+#if defined(__i386__) || defined(__amd64__)
 			else if (ifuncs)
 				elf_reloc_ifunc(lf, base, rel, ELF_RELOC_REL,
 				    elf_obj_lookup);
+#endif
 		}
 	}
 
@@ -1552,9 +1558,11 @@ link_elf_reloc_local(linker_file_t lf, bool ifuncs)
 			    ifuncs)
 				elf_reloc_local(lf, base, rela, ELF_RELOC_RELA,
 				    elf_obj_lookup);
+#if defined(__i386__) || defined(__amd64__)
 			else if (ifuncs)
 				elf_reloc_ifunc(lf, base, rela, ELF_RELOC_RELA,
 				    elf_obj_lookup);
+#endif
 		}
 	}
 	return (0);


More information about the svn-src-head mailing list