Index: head/usr.bin/kdump/kdump.c =================================================================== --- head/usr.bin/kdump/kdump.c +++ head/usr.bin/kdump/kdump.c @@ -94,10 +94,10 @@ #include #endif -u_int abidump(struct ktr_header *); int fetchprocinfo(struct ktr_header *, u_int *); +u_int findabi(struct ktr_header *); int fread_tail(void *, int, int); -void dumpheader(struct ktr_header *); +void dumpheader(struct ktr_header *, u_int); void ktrsyscall(struct ktr_syscall *, u_int); void ktrsysret(struct ktr_sysret *, u_int); void ktrnamei(char *, int); @@ -466,10 +466,6 @@ drop_logged = 1; } } - if (trpoints & (1< size) { @@ -482,12 +478,13 @@ errx(1, "data too short"); if (fetchprocinfo(&ktr_header, (u_int *)m) != 0) continue; - sv_flags = abidump(&ktr_header); if (pid && ktr_header.ktr_pid != pid && ktr_header.ktr_tid != pid) continue; if ((trpoints & (1<pid == kth->ktr_pid) { - flags = pi->sv_flags; - break; + return (pi->sv_flags); } } - - if (abiflag == 0) - return (flags); - - switch (flags & SV_ABI_MASK) { - case SV_ABI_LINUX: - abi = "L"; - break; - case SV_ABI_FREEBSD: - abi = "F"; - break; - case SV_ABI_CLOUDABI: - abi = "C"; - break; - default: - abi = "U"; - break; - } - - if (flags & SV_LP64) - arch = "64"; - else if (flags & SV_ILP32) - arch = "32"; - else - arch = "00"; - - printf("%s%s ", abi, arch); - - return (flags); + return (0); } void -dumpheader(struct ktr_header *kth) +dumpheader(struct ktr_header *kth, u_int sv_flags) { static char unknown[64]; static struct timeval prevtime, prevtime_e; struct timeval temp; + const char *abi; + const char *arch; const char *type; const char *sign; @@ -670,10 +637,6 @@ case KTR_SYSCTL: type = "SCTL"; break; - case KTR_PROCCTOR: - /* FALLTHROUGH */ - case KTR_PROCDTOR: - return; case KTR_CAPFAIL: type = "CAP "; break; @@ -731,6 +694,31 @@ } } printf("%s ", type); + if (abiflag != 0) { + switch (sv_flags & SV_ABI_MASK) { + case SV_ABI_LINUX: + abi = "L"; + break; + case SV_ABI_FREEBSD: + abi = "F"; + break; + case SV_ABI_CLOUDABI: + abi = "C"; + break; + default: + abi = "U"; + break; + } + + if ((sv_flags & SV_LP64) != 0) + arch = "64"; + else if ((sv_flags & SV_ILP32) != 0) + arch = "32"; + else + arch = "00"; + + printf("%s%s ", abi, arch); + } } #include