summaryrefslogtreecommitdiffstats
path: root/usr.bin/kdump
diff options
context:
space:
mode:
authorsjg <sjg@FreeBSD.org>2015-05-27 01:19:58 +0000
committersjg <sjg@FreeBSD.org>2015-05-27 01:19:58 +0000
commit65145fa4c81da358fcbc3b650156dab705dfa34e (patch)
tree55c065b6730aaac2afb6c29933ee6ec5fa4c4249 /usr.bin/kdump
parent60ff4eb0dff94a04d75d0d52a3957aaaf5f8c693 (diff)
parente6b664c390af88d4a87208bc042ce503da664c3b (diff)
downloadFreeBSD-src-65145fa4c81da358fcbc3b650156dab705dfa34e.zip
FreeBSD-src-65145fa4c81da358fcbc3b650156dab705dfa34e.tar.gz
Merge sync of head
Diffstat (limited to 'usr.bin/kdump')
-rw-r--r--usr.bin/kdump/Makefile23
-rw-r--r--usr.bin/kdump/Makefile.depend4
-rw-r--r--usr.bin/kdump/kdump.c38
-rw-r--r--usr.bin/kdump/mkioctls1
4 files changed, 42 insertions, 24 deletions
diff --git a/usr.bin/kdump/Makefile b/usr.bin/kdump/Makefile
index e91a8ea..601192b 100644
--- a/usr.bin/kdump/Makefile
+++ b/usr.bin/kdump/Makefile
@@ -11,12 +11,11 @@ SFX= 32
PROG= kdump
SRCS= kdump_subr.c kdump.c ioctl.c subr.c
-DPSRCS= kdump_subr.h
+DPSRCS= kdump_subr.h
CFLAGS+= -I${.CURDIR}/../ktrace -I${.CURDIR} -I${.CURDIR}/../.. -I.
.if ${MK_CASPER} != "no"
-DPADD+= ${LIBCAPSICUM} ${LIBNV}
-LDADD+= -lcapsicum -lnv
+LIBADD= capsicum
CFLAGS+=-DHAVE_LIBCAPSICUM
.endif
@@ -24,13 +23,13 @@ CFLAGS+=-DHAVE_LIBCAPSICUM
CFLAGS+=-DPF
.endif
-.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
-SRCS+= linux_syscalls.c
-.endif
-
NO_WERROR?= YES
-CLEANFILES= ioctl.c kdump_subr.c kdump_subr.h linux_syscalls.c
+CLEANFILES= ioctl.c kdump_subr.c kdump_subr.h
+
+.if (${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386")
+CLEANFILES+= linux_syscalls.c
+.endif
ioctl.c: mkioctls
env MACHINE=${MACHINE} CPP="${CPP}" \
@@ -42,11 +41,9 @@ kdump_subr.h: mksubr
kdump_subr.c: mksubr kdump_subr.h
sh ${.CURDIR}/mksubr ${DESTDIR}${INCLUDEDIR} >${.TARGET}
-
-linux_syscalls.c:
- /bin/sh ${.CURDIR}/../../sys/kern/makesyscalls.sh \
+.if (${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386")
+ sh ${.CURDIR}/../../sys/kern/makesyscalls.sh \
${.CURDIR}/../../sys/${MACHINE_ARCH}/linux${SFX}/syscalls.master ${.CURDIR}/linux_syscalls.conf
- echo "int nlinux_syscalls = sizeof(linux_syscallnames) / sizeof(linux_syscallnames[0]);" \
- >> linux_syscalls.c
+.endif
.include <bsd.prog.mk>
diff --git a/usr.bin/kdump/Makefile.depend b/usr.bin/kdump/Makefile.depend
index 07c251c..dcb7174 100644
--- a/usr.bin/kdump/Makefile.depend
+++ b/usr.bin/kdump/Makefile.depend
@@ -24,11 +24,11 @@ DIRDEPS = \
ioctl.o: ioctl.c
ioctl.po: ioctl.c
kdump.o: kdump_subr.h
+kdump.o: linux_syscalls.c
kdump.po: kdump_subr.h
+kdump.po: linux_syscalls.c
kdump_subr.o: kdump_subr.c
kdump_subr.o: kdump_subr.h
kdump_subr.po: kdump_subr.c
kdump_subr.po: kdump_subr.h
-linux_syscalls.o: linux_syscalls.c
-linux_syscalls.po: linux_syscalls.c
.endif
diff --git a/usr.bin/kdump/kdump.c b/usr.bin/kdump/kdump.c
index e0a6079..a46fe65 100644
--- a/usr.bin/kdump/kdump.c
+++ b/usr.bin/kdump/kdump.c
@@ -148,8 +148,11 @@ static struct ktr_header ktr_header;
void linux_ktrsyscall(struct ktr_syscall *);
void linux_ktrsysret(struct ktr_sysret *);
-extern char *linux_syscallnames[];
-extern int nlinux_syscalls;
+extern const char *linux_syscallnames[];
+
+#include <linux_syscalls.c>
+static int nlinux_syscalls = sizeof(linux_syscallnames) / \
+ sizeof(linux_syscallnames[0]);
/*
* from linux.h
@@ -349,8 +352,6 @@ main(int argc, char *argv[])
limitfd(STDIN_FILENO);
limitfd(STDOUT_FILENO);
limitfd(STDERR_FILENO);
- if (cap_sandboxed())
- fprintf(stderr, "capability mode sandbox enabled\n");
TAILQ_INIT(&trace_procs);
drop_logged = 0;
@@ -583,6 +584,7 @@ dumpheader(struct ktr_header *kth)
static char unknown[64];
static struct timeval prevtime, prevtime_e, temp;
const char *type;
+ const char *sign;
switch (kth->ktr_type) {
case KTR_SYSCALL:
@@ -659,10 +661,20 @@ dumpheader(struct ktr_header *kth)
timevaladd(&kth->ktr_time, &prevtime_e);
}
if (timestamp & TIMESTAMP_RELATIVE) {
+ if (prevtime.tv_sec == 0)
+ prevtime = kth->ktr_time;
temp = kth->ktr_time;
timevalsub(&kth->ktr_time, &prevtime);
- prevtime = temp;
- printf("%jd.%06ld ", (intmax_t)kth->ktr_time.tv_sec,
+ if ((intmax_t)kth->ktr_time.tv_sec < 0) {
+ kth->ktr_time = prevtime;
+ prevtime = temp;
+ timevalsub(&kth->ktr_time, &prevtime);
+ sign = "-";
+ } else {
+ prevtime = temp;
+ sign = "";
+ }
+ printf("%s%jd.%06ld ", sign, (intmax_t)kth->ktr_time.tv_sec,
kth->ktr_time.tv_usec);
}
}
@@ -711,6 +723,7 @@ ktrsyscall(struct ktr_syscall *ktr, u_int flags)
case SYS_readlinkat:
case SYS_renameat:
case SYS_unlinkat:
+ case SYS_utimensat:
putchar('(');
atfdname(*ip, decimal);
c = ',';
@@ -1151,7 +1164,7 @@ ktrsyscall(struct ktr_syscall *ktr, u_int flags)
print_number(ip, narg, c);
print_number(ip, narg, c);
putchar(',');
- sendfileflagsname(*ip);
+ sendfileflagsname(*(int *)ip);
ip++;
narg--;
break;
@@ -1527,6 +1540,8 @@ ktrcsw(struct ktr_csw *cs)
#define UTRACE_PRELOAD_FINISHED 8
#define UTRACE_INIT_CALL 9
#define UTRACE_FINI_CALL 10
+#define UTRACE_DLSYM_START 11
+#define UTRACE_DLSYM_STOP 12
struct utrace_rtld {
char sig[4]; /* 'RTLD' */
@@ -1606,6 +1621,13 @@ ktruser_rtld(int len, void *p)
printf("RTLD: fini %p for %p (%s)\n", ut->mapbase, ut->handle,
ut->name);
break;
+ case UTRACE_DLSYM_START:
+ printf("RTLD: dlsym(%p, %s)\n", ut->handle, ut->name);
+ break;
+ case UTRACE_DLSYM_STOP:
+ printf("RTLD: %p = dlsym(%p, %s)\n", ut->mapbase, ut->handle,
+ ut->name);
+ break;
default:
cp = p;
cp += 4;
@@ -1934,7 +1956,7 @@ void
ktrfault(struct ktr_fault *ktr)
{
- printf("0x%jx ", ktr->vaddr);
+ printf("0x%jx ", (uintmax_t)ktr->vaddr);
vmprotname(ktr->type);
printf("\n");
}
diff --git a/usr.bin/kdump/mkioctls b/usr.bin/kdump/mkioctls
index f9dff50..6880ee6 100644
--- a/usr.bin/kdump/mkioctls
+++ b/usr.bin/kdump/mkioctls
@@ -54,7 +54,6 @@ BEGIN {
print "#include <bsm/audit.h>"
print "#include <net/ethernet.h>"
print "#include <net/if.h>"
- print "#include <net/if_var.h>"
print "#ifdef PF"
print "#include <net/pfvar.h>"
print "#include <net/if_pfsync.h>"
OpenPOWER on IntegriCloud