6 Commits

Author SHA1 Message Date
Rich Felker
4f69594689 fix dangling pointers in x32 syscall timespec fixup code
the lifetime of compound literals is the block in which they appear.
the temporary struct __timespec_kernel objects created as compound
literals no longer existed at the time their addresses were passed to
the kernel.
2015-05-01 21:22:27 -04:00
Rich Felker
cbc02ba23c consistently use hidden visibility for cancellable syscall internals
in a few places, non-hidden symbols were referenced from asm in ways
that assumed ld-time binding. while these is no semantic reason these
symbols need to be hidden, fixing the references without making them
hidden was going to be ugly, and hidden reduces some bloat anyway.

in the asm files, .global/.hidden directives have been moved to the
top to unclutter the actual code.
2015-04-14 11:18:59 -04:00
Rich Felker
de20a8ffc5 add namespace-protected name for sysinfo function
it will be needed to implement some things in sysconf, and the syscall
can't easily be used directly because the x32 syscall uses the wrong
structure layout. the l (uncreative, for "linux") prefix is used since
the symbol name __sysinfo is already taken for AT_SYSINFO from the aux
vector.

the way the x32 override of this function works is also changed to be
simpler and avoid the useless jump instruction.
2014-04-15 18:16:37 -04:00
rofl0r
dae8ca738c x32: fix sysinfo()
the kernel uses long longs in the struct, but the documentation
says they're long. so we need to fixup the mismatch between the
userspace and kernelspace structs.
since the struct offers a mem_unit member, we can avoid truncation
by adjusting that value.
2014-03-06 05:35:13 +01:00
rofl0r
e002f660b8 fix some issues in x32 syscall_cp_fixup
- the nanosleep fixup "fixed" the second timespec* argument erroneusly.
- the futex fixup was missing the check for FUTEX_WAIT.
- general cleanup using a macro.
2014-02-23 16:38:40 +01:00
rofl0r
664cd34192 x32 port (diff against vanilla x86_64) 2014-02-23 11:09:16 +01:00