imgact_aout.c (1e1e0b44635dd1f8946929ef8a136ca65afb170a) | imgact_aout.c (68940ac1a05aed6f6ec47c8540a640f3eab17f79) |
---|---|
1/* 2 * Copyright (c) 1993, David Greenman 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 14 unchanged lines hidden (view full) --- 23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29 * SUCH DAMAGE. 30 * | 1/* 2 * Copyright (c) 1993, David Greenman 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 14 unchanged lines hidden (view full) --- 23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29 * SUCH DAMAGE. 30 * |
31 * $Id: imgact_aout.c,v 1.9 1994/09/25 19:33:31 phk Exp $ | 31 * $Id: imgact_aout.c,v 1.10 1995/02/14 19:22:27 sos Exp $ |
32 */ 33 34#include <sys/param.h> 35#include <sys/systm.h> 36#include <sys/resourcevar.h> 37#include <sys/exec.h> 38#include <sys/mman.h> 39#include <sys/imgact.h> --- 125 unchanged lines hidden (view full) --- 165 a_out->a_data, 166 VM_PROT_READ | VM_PROT_WRITE | (a_out->a_text ? 0 : VM_PROT_EXECUTE), 167 VM_PROT_ALL, MAP_PRIVATE | MAP_FIXED, 168 (caddr_t) iparams->vnodep, 169 file_offset + a_out->a_text); 170 if (error) 171 return (error); 172 | 32 */ 33 34#include <sys/param.h> 35#include <sys/systm.h> 36#include <sys/resourcevar.h> 37#include <sys/exec.h> 38#include <sys/mman.h> 39#include <sys/imgact.h> --- 125 unchanged lines hidden (view full) --- 165 a_out->a_data, 166 VM_PROT_READ | VM_PROT_WRITE | (a_out->a_text ? 0 : VM_PROT_EXECUTE), 167 VM_PROT_ALL, MAP_PRIVATE | MAP_FIXED, 168 (caddr_t) iparams->vnodep, 169 file_offset + a_out->a_text); 170 if (error) 171 return (error); 172 |
173 /* 174 * Allocate demand-zeroed area for uninitialized data 175 * "bss" = 'block started by symbol' - named after the IBM 7090 176 * instruction of the same name. 177 */ 178 vmaddr = virtual_offset + a_out->a_text + a_out->a_data; 179 error = vm_allocate(&vmspace->vm_map, &vmaddr, bss_size, FALSE); 180 if (error) 181 return (error); | 173 if (bss_size != 0) { 174 /* 175 * Allocate demand-zeroed area for uninitialized data 176 * "bss" = 'block started by symbol' - named after the IBM 7090 177 * instruction of the same name. 178 */ 179 vmaddr = virtual_offset + a_out->a_text + a_out->a_data; 180 error = vm_map_find(&vmspace->vm_map, NULL, 0, &vmaddr, bss_size, FALSE); 181 if (error) 182 return (error); 183 } |
182 183 /* Fill in process VM information */ 184 vmspace->vm_tsize = a_out->a_text >> PAGE_SHIFT; 185 vmspace->vm_dsize = (a_out->a_data + bss_size) >> PAGE_SHIFT; 186 vmspace->vm_taddr = (caddr_t) virtual_offset; 187 vmspace->vm_daddr = (caddr_t) virtual_offset + a_out->a_text; 188 189 /* Fill in image_params */ --- 15 unchanged lines hidden --- | 184 185 /* Fill in process VM information */ 186 vmspace->vm_tsize = a_out->a_text >> PAGE_SHIFT; 187 vmspace->vm_dsize = (a_out->a_data + bss_size) >> PAGE_SHIFT; 188 vmspace->vm_taddr = (caddr_t) virtual_offset; 189 vmspace->vm_daddr = (caddr_t) virtual_offset + a_out->a_text; 190 191 /* Fill in image_params */ --- 15 unchanged lines hidden --- |