summaryrefslogtreecommitdiffstats
path: root/sys/sys/linker.h
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2002-09-27 23:12:53 +0000
committerjake <jake@FreeBSD.org>2002-09-27 23:12:53 +0000
commitc03e93ab3a4cf602e9fad9ef7bc7537a0cf96e8c (patch)
treeba3c4f5add825cc1d7164df7492430782b2070c4 /sys/sys/linker.h
parentd08d61cf7e649a1706432628cc516edea8878dd9 (diff)
downloadFreeBSD-src-c03e93ab3a4cf602e9fad9ef7bc7537a0cf96e8c.zip
FreeBSD-src-c03e93ab3a4cf602e9fad9ef7bc7537a0cf96e8c.tar.gz
Add a workaround for what seems to be confusion between binutils and the
sparc v9 ABI. The Elf_Rela records for local symbols appear to already have the symbol's value added in to the addend field, even though the ABI specifies we need to lookup the symbol and add its value too. This breaks text relocations in klds because the symbol's value is added twice, and the resulting address points off into nowhere land, so for now just use the addend. Tested by: rwatson
Diffstat (limited to 'sys/sys/linker.h')
-rw-r--r--sys/sys/linker.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/sys/linker.h b/sys/sys/linker.h
index 0090a5f..bd45a69 100644
--- a/sys/sys/linker.h
+++ b/sys/sys/linker.h
@@ -230,6 +230,7 @@ extern int kld_debug;
/* Support functions */
int elf_reloc(linker_file_t _lf, const void *_rel, int _type);
Elf_Addr elf_lookup(linker_file_t, Elf_Word, int);
+const Elf_Sym *elf_get_sym(linker_file_t _lf, Elf_Word _symidx);
/* values for type */
#define ELF_RELOC_REL 1
OpenPOWER on IntegriCloud