[PATCH] set saner MAX_ARGS

Dmitry V. Levin ldv at altlinux.org
Fri Aug 19 18:55:45 UTC 2011


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.


-- 
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20110819/f4f3c196/attachment.bin>


More information about the Strace-devel mailing list