diff --git a/sys/kern/link_elf_obj.c b/sys/kern/link_elf_obj.c index 94d29769142f..e72ed1e4cfa1 100644 --- a/sys/kern/link_elf_obj.c +++ b/sys/kern/link_elf_obj.c @@ -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 *filename, 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);