diff options
author | sjg <sjg@FreeBSD.org> | 2015-05-27 01:19:58 +0000 |
---|---|---|
committer | sjg <sjg@FreeBSD.org> | 2015-05-27 01:19:58 +0000 |
commit | 65145fa4c81da358fcbc3b650156dab705dfa34e (patch) | |
tree | 55c065b6730aaac2afb6c29933ee6ec5fa4c4249 /usr.bin/kdump | |
parent | 60ff4eb0dff94a04d75d0d52a3957aaaf5f8c693 (diff) | |
parent | e6b664c390af88d4a87208bc042ce503da664c3b (diff) | |
download | FreeBSD-src-65145fa4c81da358fcbc3b650156dab705dfa34e.zip FreeBSD-src-65145fa4c81da358fcbc3b650156dab705dfa34e.tar.gz |
Merge sync of head
Diffstat (limited to 'usr.bin/kdump')
-rw-r--r-- | usr.bin/kdump/Makefile | 23 | ||||
-rw-r--r-- | usr.bin/kdump/Makefile.depend | 4 | ||||
-rw-r--r-- | usr.bin/kdump/kdump.c | 38 | ||||
-rw-r--r-- | usr.bin/kdump/mkioctls | 1 |
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>" |