diff --git a/usr.bin/kdump/Makefile b/usr.bin/kdump/Makefile index 0af84ccb42d4..afa94bb7d127 100644 --- a/usr.bin/kdump/Makefile +++ b/usr.bin/kdump/Makefile @@ -22,7 +22,7 @@ CLEANFILES= ioctl.c kdump_subr.c kdump_subr.h linux_syscalls.c ioctl.c: mkioctls env MACHINE=${MACHINE} \ - sh ${.CURDIR}/mkioctls ${DESTDIR}/usr/include > ${.TARGET} + sh ${.CURDIR}/mkioctls print ${DESTDIR}/usr/include > ${.TARGET} kdump_subr.h: mksubr sh ${.CURDIR}/mksubr ${DESTDIR}/usr/include | \ diff --git a/usr.bin/kdump/mkioctls b/usr.bin/kdump/mkioctls index 7ef2865b26e8..22ca26854dc1 100644 --- a/usr.bin/kdump/mkioctls +++ b/usr.bin/kdump/mkioctls @@ -1,20 +1,26 @@ #!/bin/sh # # $FreeBSD$ +# +# When editing this script, keep in mind that truss also uses it. +# set -e -if [ -z "$1" ]; then - echo "usage: sh $0 include-dir" +if [ $# -ne 2 -o \( $1 != "print" -a $1 != "return" \) ]; then + echo "usage: sh $0 print|return include-dir" exit 1 fi +style="$1" +includedir="$2" + LC_ALL=C; export LC_ALL # Build a list of headers that have ioctls in them. # XXX should we use an ANSI cpp? ioctl_includes=$( - cd $1 + cd $includedir find -H -s * -name '*.h' | grep -v '.*disk.*\.h' | \ xargs egrep -l \ '^#[ ]*define[ ]+[A-Za-z_][A-Za-z0-9_]*[ ]+_IO[^a-z0-9_]' | @@ -33,7 +39,7 @@ esac awk -v x="$ioctl_includes" 'BEGIN {print x}' | gcc -E -I$1 -dM -DCOMPAT_43TTY - | - awk -v ioctl_includes="$ioctl_includes" ' + awk -v ioctl_includes="$ioctl_includes" -v style="$style" ' BEGIN { print "/* XXX obnoxious prerequisites. */" print "#define COMPAT_43" @@ -58,12 +64,19 @@ BEGIN { print "#include " print "#include " print "" - print "void ioctlname(unsigned long val, int decimal);" - print "" print ioctl_includes print "" - print "void" - print "ioctlname(unsigned long val, int decimal)" + if (style == "print") { + print "void ioctlname(unsigned long val, int decimal);" + print "" + print "void" + print "ioctlname(unsigned long val, int decimal)" + } else { + print "const char *ioctlname(unsigned long val);" + print "" + print "const char *" + print "ioctlname(unsigned long val)" + } print "{" print "\tconst char *str = NULL;" print "" @@ -77,20 +90,24 @@ BEGIN { break; ++i; # - print("\t"); + printf("\t"); if (n++ > 0) - print("else "); + printf("else "); printf("if (val == %s)\n", $i); printf("\t\tstr = \"%s\";\n", $i); } END { - print "\n" - print "\tif (str != NULL)\n" - print "\t\tprintf(\"%s\", str);\n" - print "\telse if (decimal)\n" - print "\t\tprintf(\"%lu\", val);\n" - print "\telse\n" - print "\t\tprintf(\"%#lx\", val);\n" + print "" + if (style == "print") { + print "\tif (str != NULL)" + print "\t\tprintf(\"%s\", str);" + print "\telse if (decimal)" + print "\t\tprintf(\"%lu\", val);" + print "\telse" + print "\t\tprintf(\"%#lx\", val);" + } else { + print "\treturn (str);" + } print "}" } ' diff --git a/usr.bin/truss/Makefile b/usr.bin/truss/Makefile index f80ac0367ea6..31f08d49b444 100644 --- a/usr.bin/truss/Makefile +++ b/usr.bin/truss/Makefile @@ -23,7 +23,8 @@ syscalls.h: syscalls.master ${.CURDIR}/i386.conf ioctl.c: ${.CURDIR}/../kdump/mkioctls - sh ${.CURDIR}/../kdump/mkioctls ${DESTDIR}/usr/include > ${.TARGET} + env MACHINE=${MACHINE} \ + /bin/sh ${.CURDIR}/../kdump/mkioctls return ${DESTDIR}/usr/include > ${.TARGET} .if ${MACHINE_CPUARCH} == "i386" SRCS+= i386-linux.c linux_syscalls.h diff --git a/usr.bin/truss/extern.h b/usr.bin/truss/extern.h index e3ffc4f566a3..a56a01eb634f 100644 --- a/usr.bin/truss/extern.h +++ b/usr.bin/truss/extern.h @@ -35,7 +35,7 @@ extern int setup_and_wait(char **); extern int start_tracing(int); extern void restore_proc(int); extern void waitevent(struct trussinfo *); -extern const char *ioctlname(register_t val); +extern const char *ioctlname(unsigned long val); extern char *strsig(int sig); #ifdef __amd64__ extern void amd64_syscall_entry(struct trussinfo *, int);