aboutsummaryrefslogtreecommitdiff
path: root/meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0026-Add-kernel_sigaction.h-for-AARCH64-ILP32.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0026-Add-kernel_sigaction.h-for-AARCH64-ILP32.patch')
-rw-r--r--meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0026-Add-kernel_sigaction.h-for-AARCH64-ILP32.patch78
1 files changed, 0 insertions, 78 deletions
diff --git a/meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0026-Add-kernel_sigaction.h-for-AARCH64-ILP32.patch b/meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0026-Add-kernel_sigaction.h-for-AARCH64-ILP32.patch
deleted file mode 100644
index 69355d0c..00000000
--- a/meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0026-Add-kernel_sigaction.h-for-AARCH64-ILP32.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 5fd5c369cf7ed9fc3640f944aeb848b160a343b2 Mon Sep 17 00:00:00 2001
-From: Andrew Pinski <apinski@cavium.com>
-Date: Mon, 27 Oct 2014 00:59:49 -0700
-Subject: [PATCH 26/32] Add kernel_sigaction.h for AARCH64 ILP32
-
-In ILP32, the sigaction struct is the same as AARCH64 so we need
-the header file kernel_sigaction.h. To allow for this to work,
-we use a long long fields and then add extra casts when converting
-between the user exposed struct and the kernel exposed struct.
-
-* sysdeps/unix/sysv/linux/aarch64/kernel_sigaction.h: New file.
-* sysdeps/unix/sysv/linux/aarch64/sigaction.c (__libc_sigaction):
-Add cast here it is necessary.
----
- sysdeps/unix/sysv/linux/aarch64/kernel_sigaction.h | 12 ++++++++++++
- sysdeps/unix/sysv/linux/aarch64/sigaction.c | 10 ++++++----
- 2 files changed, 18 insertions(+), 4 deletions(-)
- create mode 100644 sysdeps/unix/sysv/linux/aarch64/kernel_sigaction.h
-
-diff --git a/sysdeps/unix/sysv/linux/aarch64/kernel_sigaction.h b/sysdeps/unix/sysv/linux/aarch64/kernel_sigaction.h
-new file mode 100644
-index 0000000..7b3023b
---- /dev/null
-+++ b/sysdeps/unix/sysv/linux/aarch64/kernel_sigaction.h
-@@ -0,0 +1,12 @@
-+
-+#define HAVE_SA_RESTORER
-+
-+/* This is the sigaction structure in aarch64 kernel.
-+ Note the ILP32 struct uses the same struct as LP64
-+ which is why the fields are 64bit in size. */
-+struct kernel_sigaction {
-+ unsigned long long k_sa_handler;
-+ unsigned long long sa_flags;
-+ unsigned long long sa_restorer;
-+ sigset_t sa_mask;
-+};
-diff --git a/sysdeps/unix/sysv/linux/aarch64/sigaction.c b/sysdeps/unix/sysv/linux/aarch64/sigaction.c
-index ae6c3fd..8adcbba 100644
---- a/sysdeps/unix/sysv/linux/aarch64/sigaction.c
-+++ b/sysdeps/unix/sysv/linux/aarch64/sigaction.c
-@@ -39,15 +39,17 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
-
- if (act)
- {
-- kact.k_sa_handler = act->sa_handler;
-+ kact.k_sa_handler = (unsigned long long)(uintptr_t)act->sa_handler;
- memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t));
- kact.sa_flags = act->sa_flags;
- #ifdef HAVE_SA_RESTORER
- if (kact.sa_flags & SA_RESTORER)
-- kact.sa_restorer = act->sa_restorer;
-+ kact.sa_restorer = (unsigned long long)(uintptr_t)act->sa_restorer;
- #endif
- }
-
-+ /* This is needed for ILP32 as the structures are two different sizes due to
-+ using the LP64 structure. */
- result = INLINE_SYSCALL (rt_sigaction, 4, sig,
- act ? &kact : NULL,
- oact ? &koact : NULL, _NSIG / 8);
-@@ -55,11 +57,11 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
- {
- if (oact && result >= 0)
- {
-- oact->sa_handler = koact.k_sa_handler;
-+ oact->sa_handler = (void*)(uintptr_t)koact.k_sa_handler;
- memcpy (&oact->sa_mask, &koact.sa_mask, sizeof (sigset_t));
- oact->sa_flags = koact.sa_flags;
- #ifdef HAVE_SA_RESTORER
-- oact->sa_restorer = koact.sa_restorer;
-+ oact->sa_restorer = (void*)(uintptr_t)koact.sa_restorer;
- #endif
- }
- }
---
-1.9.3
-