diff -r 000000000000 -r c0162f201864 patches/uClibc/0.9.30.2/190-avr32-add-varargs-handling-of-prctl-syscall.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/uClibc/0.9.30.2/190-avr32-add-varargs-handling-of-prctl-syscall.patch Wed Jul 28 21:32:42 2010 +0200 @@ -0,0 +1,74 @@ +From 85bc04d5436ca6c8a30a1ad28862260a04b8b3d5 Mon Sep 17 00:00:00 2001 +From: Hans-Christian Egtvedt +Date: Wed, 16 Dec 2009 13:16:08 +0100 +Subject: [PATCH 02/15] avr32: add varargs handling of prctl syscall + +prctl is defined to use varargs in the header file, hence it needs varargs +specific handling in the source. This patch properly handles the variodic +argument before the syscall is passed to the kernel for the AVR32 architecture. + +Signed-off-by: Hans-Christian Egtvedt +--- + libc/sysdeps/linux/avr32/Makefile.arch | 2 +- + libc/sysdeps/linux/avr32/prctl.c | 36 ++++++++++++++++++++++++++++++++ + 2 files changed, 37 insertions(+), 1 deletions(-) + create mode 100644 libc/sysdeps/linux/avr32/prctl.c + +diff --git a/libc/sysdeps/linux/avr32/Makefile.arch b/libc/sysdeps/linux/avr32/Makefile.arch +index bc5f625..98b85a7 100644 +--- a/libc/sysdeps/linux/avr32/Makefile.arch ++++ b/libc/sysdeps/linux/avr32/Makefile.arch +@@ -5,7 +5,7 @@ + # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. + # + +-CSRC := brk.c clone.c mmap.c sigaction.c ++CSRC := brk.c clone.c mmap.c prctl.c sigaction.c + + SSRC := __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \ + sigrestorer.S syscall.S vfork.S +diff --git a/libc/sysdeps/linux/avr32/prctl.c b/libc/sysdeps/linux/avr32/prctl.c +new file mode 100644 +index 0000000..4e146e3 +--- /dev/null ++++ b/libc/sysdeps/linux/avr32/prctl.c +@@ -0,0 +1,36 @@ ++/* ++ * prctl syscall for AVR32 Linux. ++ * ++ * Copyright (C) 2010 Atmel Corporation ++ * ++ * This file is subject to the terms and conditions of the GNU Lesser General ++ * Public License. See the file "COPYING.LIB" in the main directory of this ++ * archive for more details. ++ */ ++#include ++#include ++#include ++ ++#ifdef __NR_prctl ++#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 +-- +1.6.6.1 +