glibc/sysdeps
Adhemerval Zanella 78ca091cdd Fix {INLINE,INTERNAL}_SYSCALL macros for x32
The problem for x32 is the {INTERNAL,INLINE}_SYSCALL C macros explicit
cast the arguments to 'long int', thus passing as 32 bits arguments
that should be passed to 64 bits.

Previous x32 implementation uses the auto-generated syscalls from
assembly macros (syscalls.list), so the {INTERNAL,INLINE}_SYSCALL
macros are never used with 64 bit argument in x32 (which are
internally broken for this ILP).

To fix it I used a strategy similar to MIPS64n32 (although both
ABI differs for some syscalls on how top pass 64-bits arguments)
where argument types for kernel call are defined using GCC extension
'typeof' with a arithmetic operation.  This allows 64-bits arguments
to be defined while 32-bits argument will still passed as 32-bits.

I also cleanup the {INLINE,INTERNAL}_SYSCALL definition by defining
'inline_syscallX' instead of constructing the argument passing using
macros (it adds some readability) and removed the ununsed
INTERNAL_SYSCALL_NCS_TYPES define (since the patch idea is exactly to
avoid requiric explicit types passing).

Tested on x86_64 and x32.

	* sysdeps/unix/sysv/linux/x86_64/sysdep.h
	(INTERNAL_SYSCALL_NCS_TYPES): Remove define.
	(LOAD_ARGS_0): Likewise.
	(LOAD_ARGS_1): Likewise.
	(LOAD_ARGS_2): Likewise.
	(LOAD_ARGS_3): Likewise.
	(LOAD_ARGS_4): Likewise.
	(LOAD_ARGS_5): Likewise.
	(LOAD_ARGS_6): Likewise.
	(LOAD_REGS_0): Likewise.
	(LOAD_REGS_1): Likewise.
	(LOAD_REGS_2): Likewise.
	(LOAD_REGS_3): Likewise.
	(LOAD_REGS_4): Likewise.
	(LOAD_REGS_5): Likewise.
	(LOAD_REGS_6): Likewise.
	(ASM_ARGS_0): Likewise.
	(ASM_ARGS_1): Likewise.
	(ASM_ARGS_2): Likewise.
	(ASM_ARGS_3): Likewise.
	(ASM_ARGS_4): Likewise.
	(ASM_ARGS_5): Likewise.
	(ASM_ARGS_6): Likewise.
	(LOAD_ARGS_TYPES_1): Likewise.
	(LOAD_ARGS_TYPES_2): Likewise.
	(LOAD_ARGS_TYPES_3): Likewise.
	(LOAD_ARGS_TYPES_4): Likewise.
	(LOAD_ARGS_TYPES_5): Likewise.
	(LOAD_ARGS_TYPES_6): Likewise.
	(LOAD_REGS_TYPES_1): Likewise.
	(LOAD_REGS_TYPES_2): Likewise.
	(LOAD_REGS_TYPES_3): Likewise.
	(LOAD_REGS_TYPES_4): Likewise.
	(LOAD_REGS_TYPES_5): Likewise.
	(LOAD_REGS_TYPES_6): Likewise.
	(TYPEFY): New define.
	(ARGIFY): Likewise.
	(internal_syscall0): Likewise.
	(internal_syscall1): Likewise.
	(internal_syscall2): Likewise.
	(internal_syscall3): Likewise.
	(internal_syscall4): Likewise.
	(internal_syscall5): Likewise.
	(internal_syscall6): Likewise.
	* sysdeps/unix/sysv/linux/x86_64/x32/times.c
	(INTERNAL_SYSCALL_NCS): Remove define.
	(internal_syscall1): Add define.
2017-08-22 17:27:02 -03:00
..
aarch64 [AArch64] Optimized memcmp. 2017-08-10 17:00:38 +01:00
alpha Remove sysdeps/alpha/bb_init_func.S 2017-08-20 06:51:15 -07:00
arm Fix uc_* namespace (bug 21457). 2017-08-09 17:51:26 +00:00
generic Remove non cancellable sigsuspend definition 2017-08-22 14:25:08 -03:00
gnu Regenerate sysdeps/gnu/errlist.c. 2017-06-04 15:27:14 -04:00
hppa Remove extra semicolons in struct pthread_mutex (bug 21804) 2017-07-24 12:22:05 +02:00
i386 i386: Replace internal_function attribute for __mcount_internal 2017-08-15 14:51:55 +02:00
ia64 Obsolete matherr, _LIB_VERSION, libieee.a. 2017-08-21 17:45:10 +00:00
ieee754 Fix GCC 7 build of k_standard.c. 2017-08-21 21:43:32 +00:00
init_array Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
m68k Fix uc_* namespace (bug 21457). 2017-08-09 17:51:26 +00:00
mach Remove non cancellable sigsuspend definition 2017-08-22 14:25:08 -03:00
microblaze Update Microblaze libm-test-ulps 2017-07-28 09:19:40 -03:00
mips Fix uc_* namespace (bug 21457). 2017-08-09 17:51:26 +00:00
nios2 Update Nios II ULPs file. 2017-07-28 03:54:35 -07:00
nptl Remove extra semicolons in struct pthread_mutex (bug 21804) 2017-07-24 12:22:05 +02:00
posix Consolidate non cancellable pause call 2017-08-22 14:25:03 -03:00
powerpc powerpc: Shrink ULPs for float128 2017-08-22 15:04:46 -03:00
pthread aio: Remove support for BROKEN_THREAD_SIGNALS 2017-08-15 17:54:19 +02:00
s390 S390: Add new s390 platform z14. 2017-08-15 14:00:07 +02:00
sh PowerPC64 ELFv2 PPC64_OPT_LOCALENTRY 2017-06-14 10:47:25 +09:30
sparc Remove SPARC sqrt wrappers (bug 21973). 2017-08-21 17:46:34 +00:00
tile Do not use __ptr_t. 2017-08-08 17:14:49 +00:00
unix Fix {INLINE,INTERNAL}_SYSCALL macros for x32 2017-08-22 17:27:02 -03:00
wordsize-32 Build divdi3 only for architecture that required it 2017-04-06 15:14:34 -03:00
wordsize-64 Add missing header files throughout the testsuite. 2017-02-16 17:33:18 -05:00
x86 x86: Add IBT/SHSTK bits to cpu-features 2017-08-14 05:54:38 -07:00
x86_64 Mark internal SSE2 functions with attribute_hidden [BZ #18822] 2017-08-19 16:46:53 -07:00