summaryrefslogtreecommitdiffstats
path: root/usr.bin
diff options
context:
space:
mode:
authorbdrewery <bdrewery@FreeBSD.org>2014-03-28 16:11:20 +0000
committerbdrewery <bdrewery@FreeBSD.org>2014-03-28 16:11:20 +0000
commitc0990ceabbb10c4cf2923a4e5e3ddbbfeaba0bf4 (patch)
treed4a64b609ff6677f5a9072ba034506029256c5ec /usr.bin
parenta6e5d8b2483ac0fb3eeba3ce3517c5ac5c36aaae (diff)
downloadFreeBSD-src-c0990ceabbb10c4cf2923a4e5e3ddbbfeaba0bf4.zip
FreeBSD-src-c0990ceabbb10c4cf2923a4e5e3ddbbfeaba0bf4.tar.gz
Add `-S' to display syscall numbers in the output as well.
This is useful for debugging compat modules. Sponsored by: EMC / Isilon Storage Division Obtained from: Isilon OneFS (based on work by Jeff Hughes) MFC after: 2 weeks
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/kdump/kdump.16
-rw-r--r--usr.bin/kdump/kdump.c35
2 files changed, 30 insertions, 11 deletions
diff --git a/usr.bin/kdump/kdump.1 b/usr.bin/kdump/kdump.1
index f8e87e4..a3cc1cf 100644
--- a/usr.bin/kdump/kdump.1
+++ b/usr.bin/kdump/kdump.1
@@ -28,7 +28,7 @@
.\" @(#)kdump.1 8.1 (Berkeley) 6/6/93
.\" $FreeBSD$
.\"
-.Dd June 4, 2012
+.Dd March 28, 2014
.Dt KDUMP 1
.Os
.Sh NAME
@@ -36,7 +36,7 @@
.Nd display kernel trace data
.Sh SYNOPSIS
.Nm
-.Op Fl dEnlHRsTA
+.Op Fl dEnlHRSsTA
.Op Fl f Ar trfile
.Op Fl m Ar maxdata
.Op Fl p Ar pid
@@ -95,6 +95,8 @@ Display relative timestamps (time since previous entry).
.It Fl r
When decoding STRU records, display structure members such as UIDs,
GIDs, dates etc. symbolically instead of numerically.
+.It Fl S
+Display system call numbers.
.It Fl s
Suppress display of I/O data.
.It Fl T
diff --git a/usr.bin/kdump/kdump.c b/usr.bin/kdump/kdump.c
index 12ffb31..f6e1c79 100644
--- a/usr.bin/kdump/kdump.c
+++ b/usr.bin/kdump/kdump.c
@@ -123,7 +123,7 @@ void ioctlname(unsigned long, int);
#define TIMESTAMP_RELATIVE 0x4
int timestamp, decimal, fancy = 1, suppressdata, tail, threads, maxdata,
- resolv = 0, abiflag = 0;
+ resolv = 0, abiflag = 0, syscallno = 0;
const char *tracefile = DEF_TRACEFILE;
struct ktr_header ktr_header;
@@ -261,7 +261,7 @@ main(int argc, char *argv[])
timestamp = TIMESTAMP_NONE;
- while ((ch = getopt(argc,argv,"f:dElm:np:AHRrsTt:")) != -1)
+ while ((ch = getopt(argc,argv,"f:dElm:np:AHRrSsTt:")) != -1)
switch (ch) {
case 'A':
abiflag = 1;
@@ -287,6 +287,9 @@ main(int argc, char *argv[])
case 'r':
resolv = 1;
break;
+ case 'S':
+ syscallno = 1;
+ break;
case 's':
suppressdata = 1;
break;
@@ -678,8 +681,11 @@ ktrsyscall(struct ktr_syscall *ktr, u_int flags)
if ((flags != 0 && ((flags & SV_ABI_MASK) != SV_ABI_FREEBSD)) ||
(ktr->ktr_code >= nsyscalls || ktr->ktr_code < 0))
printf("[%d]", ktr->ktr_code);
- else
+ else {
printf("%s", syscallnames[ktr->ktr_code]);
+ if (syscallno)
+ printf("[%d]", ktr->ktr_code);
+ }
ip = &ktr->ktr_args[0];
if (narg) {
char c = '(';
@@ -1271,8 +1277,12 @@ ktrsysret(struct ktr_sysret *ktr, u_int flags)
if ((flags != 0 && ((flags & SV_ABI_MASK) != SV_ABI_FREEBSD)) ||
(code >= nsyscalls || code < 0))
printf("[%d] ", code);
- else
- printf("%s ", syscallnames[code]);
+ else {
+ printf("%s", syscallnames[code]);
+ if (syscallno)
+ printf("[%d]", code);
+ printf(" ");
+ }
if (error == 0) {
if (fancy) {
@@ -1910,8 +1920,11 @@ linux_ktrsyscall(struct ktr_syscall *ktr)
if (ktr->ktr_code >= nlinux_syscalls || ktr->ktr_code < 0)
printf("[%d]", ktr->ktr_code);
- else
+ else {
printf("%s", linux_syscallnames[ktr->ktr_code]);
+ if (syscallno)
+ printf("[%d]", ktr->ktr_code);
+ }
ip = &ktr->ktr_args[0];
if (narg) {
char c = '(';
@@ -1931,8 +1944,12 @@ linux_ktrsysret(struct ktr_sysret *ktr)
if (code >= nlinux_syscalls || code < 0)
printf("[%d] ", code);
- else
- printf("%s ", linux_syscallnames[code]);
+ else {
+ printf("%s", linux_syscallnames[code]);
+ if (syscallno)
+ printf("[%d]", code);
+ printf(" ");
+ }
if (error == 0) {
if (fancy) {
@@ -1965,7 +1982,7 @@ linux_ktrsysret(struct ktr_sysret *ktr)
void
usage(void)
{
- fprintf(stderr, "usage: kdump [-dEnlHRrsTA] [-f trfile] "
+ fprintf(stderr, "usage: kdump [-dEnlHRrSsTA] [-f trfile] "
"[-m maxdata] [-p pid] [-t trstr]\n");
exit(1);
}
OpenPOWER on IntegriCloud