svn commit: r325732 - head/lib/libkvm
Will Andrews
will at FreeBSD.org
Sun Nov 12 01:36:50 UTC 2017
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);
More information about the svn-src-all
mailing list