Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/kern_proc.c
Show First 20 Lines • Show All 3,229 Lines • ▼ Show 20 Lines | #endif | ||||
kvm.kvm_min_user_addr = vm_map_min(&vmspace->vm_map); | kvm.kvm_min_user_addr = vm_map_min(&vmspace->vm_map); | ||||
kvm.kvm_max_user_addr = vm_map_max(&vmspace->vm_map); | kvm.kvm_max_user_addr = vm_map_max(&vmspace->vm_map); | ||||
kvm.kvm_text_addr = (uintptr_t)vmspace->vm_taddr; | kvm.kvm_text_addr = (uintptr_t)vmspace->vm_taddr; | ||||
kvm.kvm_text_size = vmspace->vm_tsize; | kvm.kvm_text_size = vmspace->vm_tsize; | ||||
kvm.kvm_data_addr = (uintptr_t)vmspace->vm_daddr; | kvm.kvm_data_addr = (uintptr_t)vmspace->vm_daddr; | ||||
kvm.kvm_data_size = vmspace->vm_dsize; | kvm.kvm_data_size = vmspace->vm_dsize; | ||||
kvm.kvm_stack_addr = (uintptr_t)vmspace->vm_maxsaddr; | kvm.kvm_stack_addr = (uintptr_t)vmspace->vm_maxsaddr; | ||||
kvm.kvm_stack_size = vmspace->vm_ssize; | kvm.kvm_stack_size = vmspace->vm_ssize; | ||||
kvm.kvm_shp_addr = vmspace->vm_shp_base; | |||||
kvm.kvm_shp_size = p->p_sysent->sv_shared_page_len; | |||||
if ((vmspace->vm_map.flags & MAP_WIREFUTURE) != 0) | if ((vmspace->vm_map.flags & MAP_WIREFUTURE) != 0) | ||||
kvm.kvm_map_flags |= KMAP_FLAG_WIREFUTURE; | kvm.kvm_map_flags |= KMAP_FLAG_WIREFUTURE; | ||||
if ((vmspace->vm_map.flags & MAP_ASLR) != 0) | if ((vmspace->vm_map.flags & MAP_ASLR) != 0) | ||||
kvm.kvm_map_flags |= KMAP_FLAG_ASLR; | kvm.kvm_map_flags |= KMAP_FLAG_ASLR; | ||||
if ((vmspace->vm_map.flags & MAP_ASLR_IGNSTART) != 0) | if ((vmspace->vm_map.flags & MAP_ASLR_IGNSTART) != 0) | ||||
kvm.kvm_map_flags |= KMAP_FLAG_ASLR_IGNSTART; | kvm.kvm_map_flags |= KMAP_FLAG_ASLR_IGNSTART; | ||||
if ((vmspace->vm_map.flags & MAP_WXORX) != 0) | if ((vmspace->vm_map.flags & MAP_WXORX) != 0) | ||||
kvm.kvm_map_flags |= KMAP_FLAG_WXORX; | kvm.kvm_map_flags |= KMAP_FLAG_WXORX; | ||||
if ((vmspace->vm_map.flags & MAP_ASLR_STACK) != 0) | if ((vmspace->vm_map.flags & MAP_ASLR_STACK) != 0) | ||||
kvm.kvm_map_flags |= KMAP_FLAG_ASLR_STACK; | kvm.kvm_map_flags |= KMAP_FLAG_ASLR_STACK; | ||||
if (vmspace->vm_shp_base != p->p_sysent->sv_shared_page_base && | |||||
PROC_HAS_SHP(p)) | |||||
kvm.kvm_map_flags |= KMAP_FLAG_ASLR_SHARED_PAGE; | |||||
#ifdef COMPAT_FREEBSD32 | #ifdef COMPAT_FREEBSD32 | ||||
if (SV_CURPROC_FLAG(SV_ILP32)) { | if (SV_CURPROC_FLAG(SV_ILP32)) { | ||||
struct kinfo_vm_layout32 kvm32; | struct kinfo_vm_layout32 kvm32; | ||||
memset(&kvm32, 0, sizeof(kvm32)); | memset(&kvm32, 0, sizeof(kvm32)); | ||||
kvm32.kvm_min_user_addr = (uint32_t)kvm.kvm_min_user_addr; | kvm32.kvm_min_user_addr = (uint32_t)kvm.kvm_min_user_addr; | ||||
kvm32.kvm_max_user_addr = (uint32_t)kvm.kvm_max_user_addr; | kvm32.kvm_max_user_addr = (uint32_t)kvm.kvm_max_user_addr; | ||||
kvm32.kvm_text_addr = (uint32_t)kvm.kvm_text_addr; | kvm32.kvm_text_addr = (uint32_t)kvm.kvm_text_addr; | ||||
kvm32.kvm_text_size = (uint32_t)kvm.kvm_text_size; | kvm32.kvm_text_size = (uint32_t)kvm.kvm_text_size; | ||||
kvm32.kvm_data_addr = (uint32_t)kvm.kvm_data_addr; | kvm32.kvm_data_addr = (uint32_t)kvm.kvm_data_addr; | ||||
kvm32.kvm_data_size = (uint32_t)kvm.kvm_data_size; | kvm32.kvm_data_size = (uint32_t)kvm.kvm_data_size; | ||||
kvm32.kvm_stack_addr = (uint32_t)kvm.kvm_stack_addr; | kvm32.kvm_stack_addr = (uint32_t)kvm.kvm_stack_addr; | ||||
kvm32.kvm_stack_size = (uint32_t)kvm.kvm_stack_size; | kvm32.kvm_stack_size = (uint32_t)kvm.kvm_stack_size; | ||||
kvm32.kvm_shp_addr = (uint32_t)kvm.kvm_shp_addr; | |||||
kvm32.kvm_shp_size = (uint32_t)kvm.kvm_shp_size; | |||||
kvm32.kvm_map_flags = kvm.kvm_map_flags; | kvm32.kvm_map_flags = kvm.kvm_map_flags; | ||||
vmspace_free(vmspace); | vmspace_free(vmspace); | ||||
error = SYSCTL_OUT(req, &kvm32, sizeof(kvm32)); | error = SYSCTL_OUT(req, &kvm32, sizeof(kvm32)); | ||||
goto out; | goto out; | ||||
} | } | ||||
#endif | #endif | ||||
error = SYSCTL_OUT(req, &kvm, sizeof(kvm)); | error = SYSCTL_OUT(req, &kvm, sizeof(kvm)); | ||||
▲ Show 20 Lines • Show All 287 Lines • Show Last 20 Lines |