summaryrefslogtreecommitdiffstats
path: root/sys/kern/link_elf.c
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2015-02-22 16:04:37 +0000
committerdim <dim@FreeBSD.org>2015-02-22 16:04:37 +0000
commit9bd5a747dd2c968d97a8932065fb94723bbeae9c (patch)
tree62a36bf13e95aeb90982314c4943a29b289e60ee /sys/kern/link_elf.c
parent1e024675bcd5e4ace8bffb2dd6afd3fa8b8ad7f3 (diff)
parent88c4104dd7fac3a58708a6de5dcd21610a7f0316 (diff)
downloadFreeBSD-src-9bd5a747dd2c968d97a8932065fb94723bbeae9c.zip
FreeBSD-src-9bd5a747dd2c968d97a8932065fb94723bbeae9c.tar.gz
Merge ^/head r279023 through r279162.
Diffstat (limited to 'sys/kern/link_elf.c')
-rw-r--r--sys/kern/link_elf.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/kern/link_elf.c b/sys/kern/link_elf.c
index 6274bf1..3cf19e1 100644
--- a/sys/kern/link_elf.c
+++ b/sys/kern/link_elf.c
@@ -381,6 +381,8 @@ link_elf_link_common_finish(linker_file_t lf)
return (0);
}
+extern vm_offset_t __startkernel;
+
static void
link_elf_init(void* arg)
{
@@ -409,7 +411,11 @@ link_elf_init(void* arg)
ef = (elf_file_t) linker_kernel_file;
ef->preloaded = 1;
+#ifdef __powerpc64__
+ ef->address = (caddr_t) (__startkernel - KERNBASE);
+#else
ef->address = 0;
+#endif
#ifdef SPARSE_MAPPING
ef->object = 0;
#endif
@@ -417,7 +423,7 @@ link_elf_init(void* arg)
if (dp != NULL)
parse_dynamic(ef);
- linker_kernel_file->address = (caddr_t) KERNBASE;
+ linker_kernel_file->address += KERNBASE;
linker_kernel_file->size = -(intptr_t)linker_kernel_file->address;
if (modptr != NULL) {
OpenPOWER on IntegriCloud