Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 28 Aug 2010 15:04:54 +0000 (UTC)
From:      Nathan Whitehorn <nwhitehorn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r211935 - head/usr.bin/truss
Message-ID:  <201008281504.o7SF4ssN034704@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: nwhitehorn
Date: Sat Aug 28 15:04:53 2010
New Revision: 211935
URL: http://svn.freebsd.org/changeset/base/211935

Log:
  Fix breakage introduced in r211725 and improve functionality of truss on
  64-bit powerpc by adding 32-bit compatibility features.

Modified:
  head/usr.bin/truss/Makefile
  head/usr.bin/truss/extern.h
  head/usr.bin/truss/main.c
  head/usr.bin/truss/powerpc-fbsd.c
  head/usr.bin/truss/powerpc64-fbsd.c

Modified: head/usr.bin/truss/Makefile
==============================================================================
--- head/usr.bin/truss/Makefile	Sat Aug 28 15:03:11 2010	(r211934)
+++ head/usr.bin/truss/Makefile	Sat Aug 28 15:04:53 2010	(r211935)
@@ -2,7 +2,13 @@
 
 NO_WERROR=
 PROG=	truss
-SRCS=	main.c setup.c syscalls.c syscalls.h ioctl.c ${MACHINE_CPUARCH}-fbsd.c
+SRCS=	main.c setup.c syscalls.c syscalls.h ioctl.c
+
+.if exists(${.CURDIR}/${MACHINE_ARCH}-fbsd.c)
+SRCS+= ${MACHINE_ARCH}-fbsd.c
+.else
+SRCS+= ${MACHINE_CPUARCH}-fbsd.c
+.endif
 
 CFLAGS+= -I${.CURDIR} -I.
 CLEANFILES= syscalls.master syscalls.h ioctl.c
@@ -53,4 +59,16 @@ freebsd32_syscalls.h:	fbsd32-syscalls.ma
 		${.CURDIR}/fbsd32.conf
 .endif
 
+.if ${MACHINE_ARCH} == "powerpc64"
+SRCS+=	powerpc-fbsd.c freebsd32_syscalls.h
+CLEANFILES+=fbsd32-syscalls.master freebsd32_syscalls.h
+
+fbsd32-syscalls.master: ${.CURDIR}/../../sys/compat/freebsd32/syscalls.master
+	cat ${.ALLSRC} > ${.TARGET}
+
+freebsd32_syscalls.h:	fbsd32-syscalls.master
+	/bin/sh ${.CURDIR}/../../sys/kern/makesyscalls.sh ${.ALLSRC} \
+		${.CURDIR}/fbsd32.conf
+.endif
+
 .include <bsd.prog.mk>

Modified: head/usr.bin/truss/extern.h
==============================================================================
--- head/usr.bin/truss/extern.h	Sat Aug 28 15:03:11 2010	(r211934)
+++ head/usr.bin/truss/extern.h	Sat Aug 28 15:04:53 2010	(r211935)
@@ -58,6 +58,8 @@ extern long ia64_syscall_exit(struct tru
 #ifdef __powerpc__
 extern void powerpc_syscall_entry(struct trussinfo *, int);
 extern long powerpc_syscall_exit(struct trussinfo *, int);
+extern void powerpc64_syscall_entry(struct trussinfo *, int);
+extern long powerpc64_syscall_exit(struct trussinfo *, int);
 #endif
 #ifdef __sparc64__
 extern void sparc64_syscall_entry(struct trussinfo *, int);

Modified: head/usr.bin/truss/main.c
==============================================================================
--- head/usr.bin/truss/main.c	Sat Aug 28 15:03:11 2010	(r211934)
+++ head/usr.bin/truss/main.c	Sat Aug 28 15:04:53 2010	(r211935)
@@ -97,6 +97,9 @@ struct ex_types {
 #ifdef __powerpc__
 	{ "FreeBSD ELF", powerpc_syscall_entry, powerpc_syscall_exit },
 	{ "FreeBSD ELF32", powerpc_syscall_entry, powerpc_syscall_exit },
+#ifdef __powerpc64__
+	{ "FreeBSD ELF64", powerpc64_syscall_entry, powerpc64_syscall_exit },
+#endif
 #endif
 #ifdef __sparc64__
 	{ "FreeBSD ELF64", sparc64_syscall_entry, sparc64_syscall_exit },

Modified: head/usr.bin/truss/powerpc-fbsd.c
==============================================================================
--- head/usr.bin/truss/powerpc-fbsd.c	Sat Aug 28 15:03:11 2010	(r211934)
+++ head/usr.bin/truss/powerpc-fbsd.c	Sat Aug 28 15:04:53 2010	(r211935)
@@ -63,7 +63,12 @@ static const char rcsid[] =
 
 static int cpid = -1;
 
+#ifdef __powerpc64__	/* 32-bit compatibility */
+#include "freebsd32_syscalls.h"
+#define  syscallnames freebsd32_syscallnames
+#else			/* native 32-bit */
 #include "syscalls.h"
+#endif
 
 static int nsyscalls = sizeof(syscallnames) / sizeof(syscallnames[0]);
 

Modified: head/usr.bin/truss/powerpc64-fbsd.c
==============================================================================
--- head/usr.bin/truss/powerpc64-fbsd.c	Sat Aug 28 15:03:11 2010	(r211934)
+++ head/usr.bin/truss/powerpc64-fbsd.c	Sat Aug 28 15:04:53 2010	(r211935)
@@ -109,7 +109,7 @@ clear_fsc(void) {
  */
 
 void
-powerpc_syscall_entry(struct trussinfo *trussinfo, int nargs) {
+powerpc64_syscall_entry(struct trussinfo *trussinfo, int nargs) {
   char buf[32];
   struct reg regs;
   void *args;
@@ -254,7 +254,7 @@ powerpc_syscall_entry(struct trussinfo *
  */
 
 long
-powerpc_syscall_exit(struct trussinfo *trussinfo, int syscall_num __unused)
+powerpc64_syscall_exit(struct trussinfo *trussinfo, int syscall_num __unused)
 {
   struct reg regs;
   long retval;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201008281504.o7SF4ssN034704>