On Fri, 2011-08-19 at 22:55 +0400, Dmitry V. Levin wrote: > On Fri, Aug 19, 2011 at 05:38:19PM +0200, Denys Vlasenko wrote: > > On Fri, 2011-08-19 at 00:02 +0400, Dmitry V. Levin wrote: > [...] > > > > --- strace.5/defs.h 2011-08-18 11:57:30.512416447 +0200 > > > > +++ strace.6/defs.h 2011-08-18 11:46:56.349540479 +0200 > > > > @@ -64,7 +64,7 @@ > > > > #define DEFAULT_ACOLUMN 40 /* default alignment column for > > > > results */ > > > > #endif > > > > #ifndef MAX_ARGS > > > > -# ifdef HPPA > > > > +# if defined HPPA || defined X86_64 || defined I386 > > > > # define MAX_ARGS 6 /* maximum number of args to a syscall > > > > */ > > > > # else > > > > /* Way too big. Switch your arch to saner size after you tested that > > > > it works */ > > > > > > What about other architectures? Is there any with MAX_ARGS > 6? > > > Can we assume MAX_ARGS == 6 on linux? > > > > I looked deeper. Apparently FREEBSD needs MAX_ARGS = 8. Also there's > > a bug in sys_mmap64 where it will try to access (but not write to) > > u_args[6,7] wrongly - see other mail. > > > > My current knowledge is summed up by this comment: > > > > /* Maximum number of args to a syscall. > > * > > * Make sure that all entries in all syscallent.h files > > * have nargs <= MAX_ARGS! > > * linux/<ARCH>/syscallent.h: ia64 has many syscalls with > > * nargs = 8, mips has two with nargs = 7 (both are printargs), > > * all others are <= 6. > > * freebsd/i386/syscallent.h: one syscall with nargs = 8 > > * (sys_sendfile, looks legitimate) > > * and one with nargs = 7 (sys_mmap, maybe it should have 6?). > > * sunos4/syscallent.h: all are <= 6. > > * svr4/syscallent.h: all are -1. > > */ > > > > Basically, all linux arches sans ia64 should be ok with MAX_ARGS = 6. > > All linux/ia64/syscallent.h entries with nargs == 8 are printargs. > I checked those 3 of them that have meaningful sys_name (other than SYS_*), > they definitely take less than 6 arguments. So I suppose ia64 entries > with nargs == 8 are just wrong, and we can safely assume MAX_ARGS == 6 > on linux.
I agree. Just pushed a change which sets MAX_ARGS to 6 for all Linux builds, and changes ia64 and mips printagrs to use MAX_ARGS, not 7 or 8. -- vda ------------------------------------------------------------------------------ Get a FREE DOWNLOAD! and learn more about uberSVN rich system, user administration capabilities and model configuration. Take the hassle out of deploying and managing Subversion and the tools developers use with it. http://p.sf.net/sfu/wandisco-d2d-2 _______________________________________________ Strace-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/strace-devel
