[Buildroot] [PATCH 1/1] uclibc: add prctl syscall fix for AVR32 architecture

Hans-Christian Egtvedt hans-christian.egtvedt at atmel.com
Tue Dec 15 09:36:33 UTC 2009


From: Peter Korsgaard <jacmet at sunsite.dk>

This patch fixes the prctl syscall for the AVR32 architecture, since this
architecture assumes you handle varargs in a proper way, always.

Signed-off-by: Hans-Christian Egtvedt <hans-christian.egtvedt at atmel.com>
---
 ...0.9.30-fix-varargs-in-prctl-syscall.patch.avr32 |   29 ++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)
 create mode 100644 toolchain/uClibc/uClibc-0.9.30-fix-varargs-in-prctl-syscall.patch.avr32

diff --git a/toolchain/uClibc/uClibc-0.9.30-fix-varargs-in-prctl-syscall.patch.avr32 b/toolchain/uClibc/uClibc-0.9.30-fix-varargs-in-prctl-syscall.patch.avr32
new file mode 100644
index 0000000..8b27a84
--- /dev/null
+++ b/toolchain/uClibc/uClibc-0.9.30-fix-varargs-in-prctl-syscall.patch.avr32
@@ -0,0 +1,29 @@
+--- a/libc/sysdeps/linux/common/prctl.c
++++ b/libc/sysdeps/linux/common/prctl.c
+@@ -12,6 +12,24 @@
+ /* psm: including sys/prctl.h would depend on kernel headers */
+ 
+ #ifdef __NR_prctl
+-extern int prctl (int, long, long, long, long);
+-_syscall5(int, prctl, int, option, long, arg2, long, arg3, long, arg4, long, arg5)
++#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 = 0;
++	long arg3 = 0;
++	long arg4 = 0;
++	long arg5 = 0;
++	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 __syscall_prctl(option, arg2, arg3, arg4, arg5);
++}
+ #endif
-- 
1.6.0.4



More information about the buildroot mailing list