summaryrefslogtreecommitdiff
path: root/patches/uClibc/0.9.30.2/190-avr32-add-varargs-handling-of-prctl-syscall.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/uClibc/0.9.30.2/190-avr32-add-varargs-handling-of-prctl-syscall.patch')
-rw-r--r--patches/uClibc/0.9.30.2/190-avr32-add-varargs-handling-of-prctl-syscall.patch74
1 files changed, 74 insertions, 0 deletions
diff --git a/patches/uClibc/0.9.30.2/190-avr32-add-varargs-handling-of-prctl-syscall.patch b/patches/uClibc/0.9.30.2/190-avr32-add-varargs-handling-of-prctl-syscall.patch
new file mode 100644
index 0000000..cd22883
--- /dev/null
+++ b/patches/uClibc/0.9.30.2/190-avr32-add-varargs-handling-of-prctl-syscall.patch
@@ -0,0 +1,74 @@
+From 85bc04d5436ca6c8a30a1ad28862260a04b8b3d5 Mon Sep 17 00:00:00 2001
+From: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
+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 <hans-christian.egtvedt@atmel.com>
+---
+ 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 <sys/syscall.h>
++#include <sys/prctl.h>
++#include <stdarg.h>
++
++#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
+