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