diff options
author | kib <kib@FreeBSD.org> | 2015-09-27 01:33:43 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2015-09-27 01:33:43 +0000 |
commit | b44e8c14438c6602432ef5d490df5fd818d5a1db (patch) | |
tree | 606c7d952a5108145e2f9e88a6ecd9c4b0d13664 /sys/sparc64 | |
parent | 8a6fcabbcf4777957124f6be9ba9dba42b68a9b7 (diff) | |
download | FreeBSD-src-b44e8c14438c6602432ef5d490df5fd818d5a1db.zip FreeBSD-src-b44e8c14438c6602432ef5d490df5fd818d5a1db.tar.gz |
MFC r288000:
Add support for weak symbols to the kernel linkers.
Diffstat (limited to 'sys/sparc64')
-rw-r--r-- | sys/sparc64/sparc64/elf_machdep.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/sparc64/sparc64/elf_machdep.c b/sys/sparc64/sparc64/elf_machdep.c index 4d55717..621e643 100644 --- a/sys/sparc64/sparc64/elf_machdep.c +++ b/sys/sparc64/sparc64/elf_machdep.c @@ -343,6 +343,7 @@ elf_reloc(linker_file_t lf, Elf_Addr relocbase, const void *data, int type, Elf_Addr value; Elf_Addr mask; Elf_Addr addr; + int error; if (type != ELF_RELOC_RELA) return (-1); @@ -371,8 +372,8 @@ elf_reloc(linker_file_t lf, Elf_Addr relocbase, const void *data, int type, value = rela->r_addend; if (RELOC_RESOLVE_SYMBOL(rtype)) { - addr = lookup(lf, symidx, 1); - if (addr == 0) + error = lookup(lf, symidx, 1, &addr); + if (error != 0) return (-1); value += addr; if (RELOC_BARE_SYMBOL(rtype)) |