X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/f555c163f90c9de17ebcef8313f86404c5174ca9..a63600a1fc28dbc7ae7ce9f996829c49a25fb33c:/machdep.c?ds=inline diff --git a/machdep.c b/machdep.c index cfdf9d6a..2578b73c 100644 --- a/machdep.c +++ b/machdep.c @@ -19,27 +19,38 @@ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ -#ifndef lint -static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/machdep.c,v 1.4 1999-10-07 23:47:10 mcr Exp $ (LBL)"; +#ifdef HAVE_CONFIG_H +#include #endif -#include +#include + #ifdef __osf__ +#include #include #include -#endif +#endif /* __osf__ */ +#include "varattrs.h" #include "machdep.h" +/* + * On platforms where the CPU doesn't support unaligned loads, force + * unaligned accesses to abort with SIGBUS, rather than being fixed + * up (slowly) by the OS kernel; on those platforms, misaligned accesses + * are bugs, and we want tcpdump to crash so that the bugs are reported. + * + * The only OS on which this is necessary is DEC OSF/1^W^WDigital + * UNIX^W^WTru64 UNIX. + */ int -abort_on_misalignment(char *ebuf) +abort_on_misalignment(char *ebuf _U_, size_t ebufsiz _U_) { #ifdef __osf__ static int buf[2] = { SSIN_UACPROC, UAC_SIGBUS }; if (setsysinfo(SSI_NVPAIRS, (caddr_t)buf, 1, 0, 0) < 0) { - (void)sprintf(ebuf, "setsysinfo: errno %d", errno); + (void)snprintf(ebuf, ebufsiz, "setsysinfo: errno %d", errno); return (-1); } #endif