Date: Sun, 12 Nov 2017 01:36:48 +0000 (UTC) From: Will Andrews <will@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r325732 - head/lib/libkvm Message-ID: <201711120136.vAC1amkK032294@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: will Date: Sun Nov 12 01:36:48 2017 New Revision: 325732 URL: https://svnweb.freebsd.org/changeset/base/325732 Log: libkvm: fix build failures Modified: head/lib/libkvm/kvm.h head/lib/libkvm/kvm_aarch64.h head/lib/libkvm/kvm_amd64.c head/lib/libkvm/kvm_amd64.h head/lib/libkvm/kvm_minidump_aarch64.c head/lib/libkvm/kvm_minidump_amd64.c head/lib/libkvm/kvm_minidump_arm.c head/lib/libkvm/kvm_minidump_i386.c head/lib/libkvm/kvm_minidump_mips.c head/lib/libkvm/kvm_private.c Modified: head/lib/libkvm/kvm.h ============================================================================== --- head/lib/libkvm/kvm.h Sun Nov 12 01:28:20 2017 (r325731) +++ head/lib/libkvm/kvm.h Sun Nov 12 01:36:48 2017 (r325732) @@ -36,7 +36,14 @@ #include <sys/cdefs.h> #include <sys/types.h> #include <nlist.h> -#include <vm/vm.h> + +/* + * Including vm/vm.h causes namespace pollution issues. For the + * most part, only things using kvm_walk_pages() need to #include it. + */ +#ifndef VM_H +typedef u_char vm_prot_t; +#endif /* Default version symbol. */ #define VRS_SYM "_version" Modified: head/lib/libkvm/kvm_aarch64.h ============================================================================== --- head/lib/libkvm/kvm_aarch64.h Sun Nov 12 01:28:20 2017 (r325731) +++ head/lib/libkvm/kvm_aarch64.h Sun Nov 12 01:36:48 2017 (r325732) @@ -42,8 +42,8 @@ typedef uint64_t aarch64_pte_t; /* Source: arm64/include/pte.h */ #define AARCH64_ATTR_MASK 0xfff0000000000fff -#define AARCH64_ATTR_UXN (1UL << 54) -#define AARCH64_ATTR_PXN (1UL << 53) +#define AARCH64_ATTR_UXN (1ULL << 54) +#define AARCH64_ATTR_PXN (1ULL << 53) #define AARCH64_ATTR_XN (AARCH64_ATTR_PXN | AARCH64_ATTR_UXN) #define AARCH64_ATTR_AP(x) ((x) << 6) #define AARCH64_ATTR_AP_RO (1 << 1) Modified: head/lib/libkvm/kvm_amd64.c ============================================================================== --- head/lib/libkvm/kvm_amd64.c Sun Nov 12 01:28:20 2017 (r325731) +++ head/lib/libkvm/kvm_amd64.c Sun Nov 12 01:36:48 2017 (r325732) @@ -51,6 +51,7 @@ static char sccsid[] = "@(#)kvm_hp300.c 8.1 (Berkeley) #include <stdlib.h> #include <string.h> #include <unistd.h> +#include <vm/vm.h> #include <kvm.h> #include <limits.h> Modified: head/lib/libkvm/kvm_amd64.h ============================================================================== --- head/lib/libkvm/kvm_amd64.h Sun Nov 12 01:28:20 2017 (r325731) +++ head/lib/libkvm/kvm_amd64.h Sun Nov 12 01:36:48 2017 (r325732) @@ -55,7 +55,9 @@ typedef uint64_t amd64_pml4e_t; #define AMD64_NPML4EPG (AMD64_PAGE_SIZE / sizeof(amd64_pml4e_t)) #define AMD64_PML4SHIFT 39 +#define AMD64_PG_NX (1ULL << 63) #define AMD64_PG_V 0x001 +#define AMD64_PG_RW 0x002 #define AMD64_PG_PS 0x080 #define AMD64_PG_FRAME (0x000ffffffffff000) #define AMD64_PG_PS_FRAME (0x000fffffffe00000) Modified: head/lib/libkvm/kvm_minidump_aarch64.c ============================================================================== --- head/lib/libkvm/kvm_minidump_aarch64.c Sun Nov 12 01:28:20 2017 (r325731) +++ head/lib/libkvm/kvm_minidump_aarch64.c Sun Nov 12 01:36:48 2017 (r325732) @@ -37,6 +37,7 @@ __FBSDID("$FreeBSD$"); #include <stdlib.h> #include <string.h> #include <unistd.h> +#include <vm/vm.h> #include <kvm.h> #include "../../sys/arm64/include/minidump.h" Modified: head/lib/libkvm/kvm_minidump_amd64.c ============================================================================== --- head/lib/libkvm/kvm_minidump_amd64.c Sun Nov 12 01:28:20 2017 (r325731) +++ head/lib/libkvm/kvm_minidump_amd64.c Sun Nov 12 01:36:48 2017 (r325732) @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include <stdlib.h> #include <string.h> #include <unistd.h> +#include <vm/vm.h> #include <kvm.h> #include "../../sys/amd64/include/minidump.h" @@ -59,9 +60,9 @@ _amd64_entry_to_prot(uint64_t entry) { vm_prot_t prot = VM_PROT_READ; - if ((entry & PG_RW) != 0) + if ((entry & AMD64_PG_RW) != 0) prot |= VM_PROT_WRITE; - if ((entry & PG_NX) == 0) + if ((entry & AMD64_PG_NX) == 0) prot |= VM_PROT_EXECUTE; return prot; } @@ -351,12 +352,12 @@ _amd64_minidump_walk_pages(kvm_t *kd, kvm_walk_pages_c return (0); for (pdeindex = 0; pdeindex < npdes; pdeindex++) { - pd_entry_t pde = _amd64_pde_get(kd, pdeindex); - pt_entry_t *ptes; + amd64_pde_t pde = _amd64_pde_get(kd, pdeindex); + amd64_pte_t *ptes; u_long i; va = vm->hdr.kernbase + (pdeindex << AMD64_PDRSHIFT); - if ((pde & PG_V) == 0) + if ((pde & AMD64_PG_V) == 0) continue; if ((pde & AMD64_PG_PS) != 0) { @@ -366,7 +367,7 @@ _amd64_minidump_walk_pages(kvm_t *kd, kvm_walk_pages_c * that every page here uses the same PDE to * generate permissions. */ - pa = pde & AMD64_PG_PS_FRAME + + pa = (pde & AMD64_PG_PS_FRAME) + ((va & AMD64_PDRMASK) ^ VA_OFF(vm, va)); dva = vm->hdr.dmapbase + pa; _kvm_bitmap_set(&bm, pa, AMD64_PAGE_SIZE); @@ -383,12 +384,12 @@ _amd64_minidump_walk_pages(kvm_t *kd, kvm_walk_pages_c if (ptes == NULL) continue; - for (i = 0; i < NPTEPG; i++) { - pt_entry_t pte = (u_long)ptes[i]; + for (i = 0; i < AMD64_NPTEPG; i++) { + amd64_pte_t pte = (u_long)ptes[i]; pa = pte & AMD64_PG_FRAME; dva = vm->hdr.dmapbase + pa; - if ((pte & PG_V) != 0) { + if ((pte & AMD64_PG_V) != 0) { _kvm_bitmap_set(&bm, pa, AMD64_PAGE_SIZE); if (!_kvm_visit_cb(kd, cb, arg, pa, va, dva, _amd64_entry_to_prot(pte), pgsz, 0)) { Modified: head/lib/libkvm/kvm_minidump_arm.c ============================================================================== --- head/lib/libkvm/kvm_minidump_arm.c Sun Nov 12 01:28:20 2017 (r325731) +++ head/lib/libkvm/kvm_minidump_arm.c Sun Nov 12 01:36:48 2017 (r325732) @@ -35,6 +35,7 @@ __FBSDID("$FreeBSD$"); #include <sys/endian.h> #include <sys/param.h> +#include <vm/vm.h> #include <kvm.h> #include <limits.h> #include <stdint.h> Modified: head/lib/libkvm/kvm_minidump_i386.c ============================================================================== --- head/lib/libkvm/kvm_minidump_i386.c Sun Nov 12 01:28:20 2017 (r325731) +++ head/lib/libkvm/kvm_minidump_i386.c Sun Nov 12 01:36:48 2017 (r325732) @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include <stdlib.h> #include <string.h> #include <unistd.h> +#include <vm/vm.h> #include <kvm.h> #include "../../sys/i386/include/minidump.h" @@ -285,6 +286,10 @@ _i386_iterator_next(struct i386_iter *it, u_long *pa, int found = 0; *dva = 0; + *pa = 0; + *va = 0; + *dva = 0; + *prot = 0; for (; it->pteindex < it->nptes && found == 0; it->pteindex++) { if (vm->hdr.paemode) { pte64 = _i386_pte_pae_get(it->kd, it->pteindex); Modified: head/lib/libkvm/kvm_minidump_mips.c ============================================================================== --- head/lib/libkvm/kvm_minidump_mips.c Sun Nov 12 01:28:20 2017 (r325731) +++ head/lib/libkvm/kvm_minidump_mips.c Sun Nov 12 01:36:48 2017 (r325732) @@ -35,6 +35,7 @@ __FBSDID("$FreeBSD$"); */ #include <sys/param.h> +#include <vm/vm.h> #include <kvm.h> #include <limits.h> #include <stdint.h> @@ -296,6 +297,8 @@ _mips_iterator_next(struct mips_iter *it, u_long *pa, * pages are R|X at least. */ *prot = VM_PROT_READ | VM_PROT_EXECUTE; + *pa = 0; + *va = 0; *dva = 0; for (;it->pteindex < it->nptes && found == 0; it->pteindex++) { if (vm->pte_size == 64) { Modified: head/lib/libkvm/kvm_private.c ============================================================================== --- head/lib/libkvm/kvm_private.c Sun Nov 12 01:28:20 2017 (r325731) +++ head/lib/libkvm/kvm_private.c Sun Nov 12 01:36:48 2017 (r325732) @@ -49,6 +49,7 @@ __FBSDID("$FreeBSD$"); #include <assert.h> #include <fcntl.h> +#include <vm/vm.h> #include <kvm.h> #include <limits.h> #include <paths.h> @@ -263,9 +264,9 @@ popcount_bytes(uint64_t *addr, uint32_t bit0, uint32_t void * _kvm_pmap_get(kvm_t *kd, u_long idx, size_t len) { - off_t off = idx * len; + uintptr_t off = idx * len; - if (off >= kd->pt_sparse_off) + if ((off_t)off >= kd->pt_sparse_off) return (NULL); return (void *)((uintptr_t)kd->page_map + off); } @@ -362,9 +363,9 @@ _kvm_pt_init(kvm_t *kd, size_t map_len, off_t map_off, MAP_PRIVATE, kd->pmfd, kd->pt_sparse_off); if (kd->sparse_map == MAP_FAILED) { _kvm_err(kd, kd->program, "cannot map %" PRIu64 - " bytes from fd %d offset %ld for sparse map: %s", + " bytes from fd %d offset %jd for sparse map: %s", kd->pt_sparse_size, kd->pmfd, - kd->pt_sparse_off, strerror(errno)); + (intmax_t)kd->pt_sparse_off, strerror(errno)); return (-1); } return (0); @@ -385,7 +386,7 @@ _kvm_pmap_init(kvm_t *kd, uint32_t pmap_size, off_t pm } if (pread(kd->pmfd, kd->page_map, pmap_size, pmap_off) != exp_len) { _kvm_err(kd, kd->program, "cannot read %d bytes from " - "offset %ld for page map", pmap_size, pmap_off); + "offset %jd for page map", pmap_size, (intmax_t)pmap_off); return (-1); } return (0);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201711120136.vAC1amkK032294>