Hi,

On Mon, Dec 14, 2015 at 09:05:50PM +0100, Szabolcs Nagy wrote:
> currently the syscall_name argument of the SYS_FUNC and
> SEN macros is subject to macro expansion (because it is
> passed to other function-like macros as parameter before
> it is prefixed).
> 
> if lfs64 support is requested (_GNU_SOURCE is defined),
> musl defines lfs64 names as macros like
> 
>       #define fstat64 fstat
> 
> (there is no easy way around this because both stat64
> function and stat64 struct tag should be redirected to
> plain stat, doing it with proper wrappers would add
> significant boilerplate to the libc).
> 
> so strace fails to build. (sys_fstat64 becomes sys_fstat)
> 
> i'd like to propose a workaround that always prefixes
> the syscall_name before anything is done with it.
> (it seems to me that the code assumes sys_ prefix anyway.)

Looks good.

> --- a/linux/ia64/syscallent.h
> +++ b/linux/ia64/syscallent.h
> @@ -31,10 +31,10 @@
>   * with 64-bit layout get redirected to printargs.
>   */
>  #undef SYS_FUNC_NAME
> -#define SYS_FUNC_NAME(syscall_name) printargs
> +#define SYS_FUNC_NAME(syscall_name) sys_printargs

You don't need this, sys_printargs is a macro defined to printargs.


-- 
ldv

Attachment: pgpteWHlVaJ5T.pgp
Description: PGP signature

------------------------------------------------------------------------------
_______________________________________________
Strace-devel mailing list
Strace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to