diff options
author | 2005-01-14 15:32:44 +0000 | |
---|---|---|
committer | 2005-01-14 15:32:44 +0000 | |
commit | f97196c9ba3a123356bb37f027de87a024943f78 (patch) | |
tree | 4e63efb7cb0717164efd12dbda53db776bd3288c | |
parent | add $OpenBSD$ tag. ok miod (diff) | |
download | wireguard-openbsd-f97196c9ba3a123356bb37f027de87a024943f78.tar.xz wireguard-openbsd-f97196c9ba3a123356bb37f027de87a024943f78.zip |
Allows for VA!=PA addresses in the kernel. ok deraadt@
-rw-r--r-- | distrib/common/elfrdsetroot.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/distrib/common/elfrdsetroot.c b/distrib/common/elfrdsetroot.c index 2d8c5b56e37..1ea4f36c009 100644 --- a/distrib/common/elfrdsetroot.c +++ b/distrib/common/elfrdsetroot.c @@ -1,4 +1,4 @@ -/* $OpenBSD: elfrdsetroot.c,v 1.8 2005/01/14 08:27:22 deraadt Exp $ */ +/* $OpenBSD: elfrdsetroot.c,v 1.9 2005/01/14 15:32:44 drahn Exp $ */ /* $NetBSD: rdsetroot.c,v 1.2 1995/10/13 16:38:39 gwr Exp $ */ /* @@ -221,11 +221,19 @@ find_rd_root_image(file, eh, ph) kernel_start = ph->p_paddr; kernel_size = ph->p_filesz; - rd_root_size_off = wantsyms[0].n_value - kernel_start; - rd_root_image_off = wantsyms[1].n_value - kernel_start; + rd_root_size_off = wantsyms[0].n_value - kernel_start; + rd_root_size_off -= (ph->p_vaddr - ph->p_paddr); + rd_root_image_off = wantsyms[1].n_value - kernel_start; + rd_root_image_off -= (ph->p_vaddr - ph->p_paddr); #ifdef DEBUG printf("rd_root_size_off = 0x%x\n", rd_root_size_off); + if ((ph->p_vaddr - ph->p_paddr) != 0) + printf("root_off v %x p %x, diff %x altered %x\n", + ph->p_vaddr, ph->p_paddr, + (ph->p_vaddr - ph->p_paddr), + rd_root_size_off - (ph->p_vaddr - ph->p_paddr)); + printf("rd_root_image_off = 0x%x\n", rd_root_image_off); #endif |