This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 27/29] [AARCH64] Fix up ucontext for ILP32
- From: Andrew Pinski <apinski at cavium dot com>
- To: libc-alpha at sourceware dot org
- Cc: Andrew Pinski <apinski at cavium dot com>
- Date: Mon, 27 Oct 2014 00:59:51 -0700
- Subject: [PATCH 27/29] [AARCH64] Fix up ucontext for ILP32
- Authentication-results: sourceware.org; auth=none
- References: <1414396793-9005-1-git-send-email-apinski at cavium dot com>
In ILP32 we want to use the same layout of the structure ucontext as LP64 so
we need to add a padding for uc_link and change the type of uc_flags to
be the kernel unsigned long type.
* sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h (struct ucontext):
Change the type of uc_flags to __SYSCALL_ULONG_TYPE.
Add padding for uc_link if ILP32.
---
sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
index 476f5de..5d224fb 100644
--- a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
@@ -46,8 +46,14 @@ typedef struct sigcontext mcontext_t;
/* Userlevel context. */
typedef struct ucontext
{
- unsigned long uc_flags;
- struct ucontext *uc_link;
+ __SYSCALL_ULONG_TYPE uc_flags;
+#if defined(__ILP32__) && defined(__AARCH64EB__)
+ int __pad_uc_link;
+#endif
+ struct ucontext *uc_link;
+#if defined(__ILP32__) && !defined(__AARCH64EB__)
+ int __pad_uc_link;
+#endif
stack_t uc_stack;
__sigset_t uc_sigmask;
mcontext_t uc_mcontext;
--
1.7.2.5