[PATCH] add selectable varargs handling of prctl syscall

Hans-Christian Egtvedt hans-christian.egtvedt at atmel.com
Mon Dec 28 16:42:53 UTC 2009


On Wed, 16 Dec 2009 13:23:56 +0100
Hans-Christian Egtvedt <hans-christian.egtvedt at atmel.com> wrote:

Bump

> prctl is defined to use varargs in the header file, hence might need varargs
> specific handling in the source. This patch properly handles the variodic
> argument before the syscall is passed to the kernel if the
> __UCLIBC_VARARGS_REQUIRED__ symbol is defined.
> 
> Since not all architectures need to handle varargs explicit, an uClibc
> architecture feature was added to enable this feature. The config symbol is
> named __UCLIBC_VARARGS_REQUIRED__ and is added as undefined to all
> architectures except AVR32.
> 
> Signed-off-by: Hans-Christian Egtvedt <hans-christian.egtvedt at atmel.com>
> ---
>  .../linux/alpha/bits/uClibc_arch_features.h        |    6 +++++
>  libc/sysdeps/linux/arm/bits/uClibc_arch_features.h |    6 +++++
>  .../linux/avr32/bits/uClibc_arch_features.h        |    6 +++++
>  .../sysdeps/linux/bfin/bits/uClibc_arch_features.h |    6 +++++
>  .../linux/common/bits/uClibc_arch_features.h       |    6 +++++
>  libc/sysdeps/linux/common/prctl.c                  |   24 ++++++++++++++++++++
>  .../sysdeps/linux/cris/bits/uClibc_arch_features.h |    6 +++++
>  libc/sysdeps/linux/e1/bits/uClibc_arch_features.h  |    6 +++++
>  libc/sysdeps/linux/frv/bits/uClibc_arch_features.h |    6 +++++
>  .../linux/h8300/bits/uClibc_arch_features.h        |    6 +++++
>  .../sysdeps/linux/hppa/bits/uClibc_arch_features.h |    6 +++++
>  .../sysdeps/linux/i386/bits/uClibc_arch_features.h |    6 +++++
>  .../sysdeps/linux/i960/bits/uClibc_arch_features.h |    6 +++++
>  .../sysdeps/linux/ia64/bits/uClibc_arch_features.h |    6 +++++
>  .../sysdeps/linux/m68k/bits/uClibc_arch_features.h |    6 +++++
>  .../linux/microblaze/bits/uClibc_arch_features.h   |    6 +++++
>  .../sysdeps/linux/mips/bits/uClibc_arch_features.h |    6 +++++
>  .../sysdeps/linux/nios/bits/uClibc_arch_features.h |    6 +++++
>  .../linux/nios2/bits/uClibc_arch_features.h        |    6 +++++
>  .../linux/powerpc/bits/uClibc_arch_features.h      |    6 +++++
>  libc/sysdeps/linux/sh/bits/uClibc_arch_features.h  |    6 +++++
>  .../sysdeps/linux/sh64/bits/uClibc_arch_features.h |    6 +++++
>  .../linux/sparc/bits/uClibc_arch_features.h        |    6 +++++
>  .../sysdeps/linux/v850/bits/uClibc_arch_features.h |    6 +++++
>  libc/sysdeps/linux/vax/bits/uClibc_arch_features.h |    6 +++++
>  .../linux/x86_64/bits/uClibc_arch_features.h       |    6 +++++
>  .../linux/xtensa/bits/uClibc_arch_features.h       |    6 +++++
>  27 files changed, 180 insertions(+), 0 deletions(-)
> 
> diff --git a/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h b/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h
> index e106d12..cc44cb0 100644
> --- a/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h
> @@ -44,4 +44,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h b/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h
> index 14621d9..e4d2370 100644
> --- a/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h
> @@ -48,4 +48,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h b/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h
> index c306577..61ea6ca 100644
> --- a/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h
> @@ -45,4 +45,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#define __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h b/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h
> index 4bab547..30da91f 100644
> --- a/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h
> @@ -45,4 +45,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/common/bits/uClibc_arch_features.h b/libc/sysdeps/linux/common/bits/uClibc_arch_features.h
> index 6cb6177..2019e7b 100644
> --- a/libc/sysdeps/linux/common/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/common/bits/uClibc_arch_features.h
> @@ -47,4 +47,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/common/prctl.c b/libc/sysdeps/linux/common/prctl.c
> index a6764c5..4624fad 100644
> --- a/libc/sysdeps/linux/common/prctl.c
> +++ b/libc/sysdeps/linux/common/prctl.c
> @@ -12,6 +12,30 @@
>  /* psm: including sys/prctl.h would depend on kernel headers */
>  
>  #ifdef __NR_prctl
> +#ifndef __UCLIBC_VARARGS_REQUIRED__
>  extern int prctl (int, long, long, long, long);
>  _syscall5(int, prctl, int, option, long, arg2, long, arg3, long, arg4, long, arg5)
> +#else
> +#include <sys/prctl.h>
> +
> +#define __NR___syscall_prctl	__NR_prctl
> +static inline _syscall5(int, __syscall_prctl, int, option, long, arg2, long, arg3,
> +		long, arg4, long, arg5);
> +int prctl(int __option, ...) {
> +	long arg2;
> +	long arg3;
> +	long arg4;
> +	long arg5;
> +	va_list ap;
> +
> +	va_start(ap, __option);
> +	arg2 = va_arg(ap, long);
> +	arg3 = va_arg(ap, long);
> +	arg4 = va_arg(ap, long);
> +	arg5 = va_arg(ap, long);
> +	va_end(ap);
> +
> +	return INLINE_SYSCALL(prctl, 5, __option, arg2, arg3, arg4, arg5);
> +}
> +#endif
>  #endif
> diff --git a/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h b/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h
> index fc14946..7c42e55 100644
> --- a/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h
> @@ -45,4 +45,10 @@
>  /* only weird assemblers generally need this */
>  #define __UCLIBC_ASM_LINE_SEP__ @
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h b/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h
> index 2a9422e..969f7cb 100644
> --- a/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h
> @@ -45,4 +45,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h b/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h
> index 2a9422e..969f7cb 100644
> --- a/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h
> @@ -45,4 +45,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h b/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h
> index 4bab547..30da91f 100644
> --- a/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h
> @@ -45,4 +45,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h b/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h
> index 722447d..cbb5fb0 100644
> --- a/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h
> @@ -44,4 +44,10 @@
>  /* the default ; is a comment on hppa */
>  #define __UCLIBC_ASM_LINE_SEP__ !
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h b/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h
> index deeec03..c9e2242 100644
> --- a/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h
> @@ -45,6 +45,12 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #if defined _LIBC
>  #define internal_function __attribute__ ((regparm (3), stdcall))
>  #endif
> diff --git a/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h b/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h
> index 0ddef34..19fadb9 100644
> --- a/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h
> @@ -45,4 +45,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/ia64/bits/uClibc_arch_features.h b/libc/sysdeps/linux/ia64/bits/uClibc_arch_features.h
> index a3644ce..0bbf670 100644
> --- a/libc/sysdeps/linux/ia64/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/ia64/bits/uClibc_arch_features.h
> @@ -44,4 +44,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h b/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h
> index 518fb39..69fa2c2 100644
> --- a/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h
> @@ -48,4 +48,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h b/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h
> index 2a9422e..969f7cb 100644
> --- a/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h
> @@ -45,4 +45,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h b/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h
> index 82f67bf..88ac2c6 100644
> --- a/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h
> @@ -44,4 +44,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h b/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h
> index 2a9422e..969f7cb 100644
> --- a/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h
> @@ -45,4 +45,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h b/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h
> index 2a9422e..969f7cb 100644
> --- a/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h
> @@ -45,4 +45,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h b/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h
> index 6f1f396..f01a997 100644
> --- a/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h
> @@ -44,4 +44,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h b/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h
> index 5e3528d..600874a 100644
> --- a/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h
> @@ -48,4 +48,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h b/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h
> index 46bf23e..5cb5baf 100644
> --- a/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h
> @@ -44,4 +44,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h b/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h
> index 1dbfa2b..6e3afac 100644
> --- a/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h
> @@ -44,4 +44,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h b/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h
> index 2a9422e..969f7cb 100644
> --- a/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h
> @@ -45,4 +45,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/vax/bits/uClibc_arch_features.h b/libc/sysdeps/linux/vax/bits/uClibc_arch_features.h
> index f9a7b39..383d60c 100644
> --- a/libc/sysdeps/linux/vax/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/vax/bits/uClibc_arch_features.h
> @@ -44,4 +44,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h b/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h
> index 748e544..9f6532d 100644
> --- a/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h
> @@ -44,4 +44,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
> diff --git a/libc/sysdeps/linux/xtensa/bits/uClibc_arch_features.h b/libc/sysdeps/linux/xtensa/bits/uClibc_arch_features.h
> index fef1765..1598fc0 100644
> --- a/libc/sysdeps/linux/xtensa/bits/uClibc_arch_features.h
> +++ b/libc/sysdeps/linux/xtensa/bits/uClibc_arch_features.h
> @@ -44,4 +44,10 @@
>  /* only weird assemblers generally need this */
>  #undef __UCLIBC_ASM_LINE_SEP__
>  
> +/*
> + * define if target requires to handle varargs explicit as stated in the GNU
> + * documentation.
> + */
> +#undef __UCLIBC_VARARGS_REQUIRED__
> +
>  #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */


-- 
Best regards,
Hans-Christian Egtvedt


More information about the uClibc mailing list