This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 28/29] [AARCH64] Add typesizes.h for ILP32
- From: Chris Metcalf <cmetcalf at tilera dot com>
- To: Andrew Pinski <apinski at cavium dot com>, <libc-alpha at sourceware dot org>
- Date: Mon, 27 Oct 2014 12:31:58 -0400
- Subject: Re: [PATCH 28/29] [AARCH64] Add typesizes.h for ILP32
- Authentication-results: sourceware.org; auth=none
- References: <1414396793-9005-1-git-send-email-apinski at cavium dot com> <1414396793-9005-29-git-send-email-apinski at cavium dot com>
On 10/27/2014 3:59 AM, Andrew Pinski wrote:
+# undef __SIGINFO_INNER
+# ifdef __AARCH64EB__
+# define __SIGINFO_INNER(type, field) \
+ __extension__ struct { \
+ int __pad_##field; \
+ type field; \
+ } __attribute__((aligned(8) ))
Since __SIGINFO_INNER is used for a bunch of non-siginfo purposes in this header, I think it would be clearer to define some more generic name (__TYPESIZES_PAD32 or whatever) and then use that name throughout.
In fact I wonder if it would be clearer to require that type (bomb the typesizes.h headers) and just use it directly in places like the linux-generic "struct shmid_ds", etc. The "64-bit everywhere" model seems to be the new standard (x32 and now aarch64 compat) so we may want to think forward.
A more standard macro model for this would also moot your __RUSAGE_LONG #ifndef (along with __SIGINFO_VOIDPTR, __SIGINFO_BAND, your hand-rolled "struct sigaltstack" and "struct ucontext", etc), and you could just directly use the now-standard macro in that spot. The more I think about it the more it seems like it does less damage to the header files to switch to a single common macro defined for all platforms that captures ILP32 and endianness conversions from kernel data structures.
Arguably I should have done this originally for linux-generic, but now that we have another 32-bit case to handle here, I think it's time for a more general solution.
[...]
+
+#define __SIGSET_INNER_T __SYSCALL_ULONG_TYPE
+#define __FD_MASK_TYPE __SYSCALL_SLONG_TYPE
+#define __FD_MASK_CONST(a) (__extension__ a##ull)
+#endif
Missing indent for these #defines.
--
Chris Metcalf, Tilera Corp.
http://www.tilera.com