[PATCH] add selectable varargs handling of prctl syscall

Carmelo AMOROSO carmelo.amoroso at st.com
Mon Jan 11 16:53:54 UTC 2010


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hans-Christian Egtvedt wrote:
> 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 */
> 
> 

Hi,
is it not easier/cleaner to provide a AVR32 specific implementation
of prctl instead of adding the arch feature as undefined for all other archs
polluting all the arch_features headers pointlessly ?

Cheers,
Carmelo

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iEYEARECAAYFAktLV6IACgkQoRq/3BrK1s/oiwCdFoPxhGHGoB6hmaeu6olD+bHw
60kAoOXB3lUmrLq4SbApGia6fCWj439s
=mATP
-----END PGP SIGNATURE-----


More information about the uClibc mailing list