| Commit message (Expand) | Author | Age | Files | Lines |
| * | fix regression in arm user.h that happened during big user.h changes | Rich Felker | 2012-12-04 | 1 | -0/+1 |
| * | fixup mcontext stuff to expost gregset_t/fpregset_t as appropriate | Rich Felker | 2012-11-25 | 1 | -0/+1 |
| * | make sys/procfs.h mostly work on most archs•••these structures are purely for use by trace/debug tools and tools
working with core files. the definition of fpregset_t, which was
previously here, has been removed because it was wrong; fpregset_t
should be the type used in mcontext_t, not the type used in
ptrace/core stuff.
| Rich Felker | 2012-11-25 | 1 | -2/+4 |
| * | begin sys/user.h and sys/reg.h fixes for ports•••aside from microblaze, these should be roughly correct for all archs
now. some misc junk macros and typedefs are missing, which should
probably be added for max compatibility with trace/debug tools.
| Rich Felker | 2012-11-23 | 1 | -21/+14 |
| * | sigcontext/mcontext cleanup for arch-specific bits•••with these changes, the members/types of mcontext_t and related stuff
should closely match the glibc definitions. unlike glibc, however, the
definitions here avoid using typedefs as much as possible and work
directly with the underlying types, to minimize namespace pollution
from signal.h in the default (_BSD_SOURCE) profile.
this is a first step in improving compatibility with applications
which poke at context/register information -- mainly debuggers, trace
utilities, etc. additional definitions in ucontext.h and other headers
may be needed later.
if feature test macros are used to request a conforming namespace,
mcontext_t is replaced with an opaque structure of the equivalent size
and alignment; conforming programs cannot examine its contents anyway.
| Rich Felker | 2012-11-23 | 1 | -13/+13 |
| * | fix up leftover, incorrect NSIG definitions in arch-specific signal.h | Rich Felker | 2012-11-23 | 1 | -1/+0 |
| * | add back NSIG, removed from powerpc in last commit, but for all archs•••unlike the previous definition, NSIG/_NSIG is supposed to be one more
than the highest signal number. adding this will allow simplifying
libc-internal code that makes signal-related syscalls, which can be
done as a later step. some apps might use it too; while this usage is
questionable, it's at least not insane.
| Rich Felker | 2012-11-21 | 1 | -0/+2 |
| * | fix breakage from introducing bits header for sys/io.h•••apparently some other archs have sys/io.h and should not break just
because they don't have the x86 port io functions. provide a blank
bits/io.h everywhere for now.
| Rich Felker | 2012-11-18 | 1 | -0/+0 |
| * | fcntl.h: O_SEARCH was missing for powerpc•••put some macros that do not differ between architectures in the
main header and remove from bits.
restructure mips header so it has the same structure as the others.
| rofl0r | 2012-11-18 | 1 | -3/+0 |
| * | better support for reverse-endian variants of arm/mips/microblaze•••these macros are supported by more compilers
| Rich Felker | 2012-10-18 | 1 | -0/+4 |
| * | fix broken semctl on systems that don't use IPC_64 flag•••not tested on mips and arm; they may still be broken. x86_64 should be
ok now.
| Rich Felker | 2012-09-22 | 1 | -0/+2 |
| * | add O_EXEC open mode•••the linux O_PATH mode provides the necessary semantics for both the
O_SEARCH and O_EXEC modes defined and required by POSIX 2008.
| Rich Felker | 2012-09-15 | 1 | -0/+1 |
| * | add O_PATH/O_SEARCH support to fcntl.h•••I'm not 100% sure that Linux's O_PATH meets the POSIX requirements for
O_SEARCH, but it seems very close if not perfect. and old kernels
ignore it, so O_SEARCH will still work as desired as long as the
caller has read permissions to the directory.
| Rich Felker | 2012-09-13 | 1 | -0/+2 |
| * | syscall organization overhaul•••now public syscall.h only exposes __NR_* and SYS_* constants and the
variadic syscall function. no macros or inline functions, no
__syscall_ret or other internal details, no 16-/32-bit legacy syscall
renaming, etc. this logic has all been moved to src/internal/syscall.h
with the arch-specific parts in arch/$(ARCH)/syscall_arch.h, and the
amount of arch-specific stuff has been reduced to a minimum.
changes still need to be reviewed/double-checked. minimal testing on
i386 and mips has already been performed.
| Rich Felker | 2012-09-08 | 1 | -191/+0 |
| * | avoid "inline" in public headers for strict c89 compatibility•••while musl itself requires a c99 compiler, some applications insist on
being compiled with c89 compilers, and use of "inline" in the headers
was breaking them. much of this had been avoided already by just
skipping the inline keyword in pre-c99 compilers or modes, but this
new unified solution is cleaner and may/should result in better code
generation in the default gcc configuration.
| Rich Felker | 2012-09-02 | 1 | -7/+7 |
| * | use int instead of long for ptrdiff_t on all 32-bit archs•••this is needed to match the underlying "ABI" standards. it's not
really an ABI issue since the binary representations are the same, but
having the wrong type can lead to errors when the type arising from a
difference-of-pointers expression does not match the defined type of
ptrdiff_t. most of the problems affect C++, not C.
| Rich Felker | 2012-08-10 | 1 | -1/+1 |
| * | add defines for number of sigset_t bytes syscalls expect•••yet another gratuitous mips incompatibility...
| Rich Felker | 2012-08-09 | 1 | -0/+2 |
| * | workaround another sendmsg kernel bug on 64-bit machines•••the kernel wrongly expects the cmsg length field to be size_t instead
of socklen_t. in order to work around the issue, we have to impose a
length limit and copy to a local buffer. the length limit should be
more than sufficient for any real-world use; these headers are only
used for passing file descriptors and permissions between processes
over unix sockets.
| Rich Felker | 2012-07-12 | 1 | -0/+7 |
| * | make arm syscalls (still non-inline) more efficient•••no need to pass zero for unused arguments; just omit them.
| Rich Felker | 2012-07-08 | 1 | -6/+6 |
| * | jmp_buf overhaul fixing several issues•••on arm, the location of the saved-signal-mask flag and mask were off
by one between sigsetjmp and siglongjmp, causing incorrect behavior
restoring the signal mask. this is because the siglongjmp code assumed
an extra slot was in the non-sig jmp_buf for the flag, but arm did not
have this. now, the extra slot is removed for all archs since it was
useless.
also, arm eabi requires jmp_buf to have 8-byte alignment. we achieve
that using long long as the type rather than with non-portable gcc
attribute tags.
| Rich Felker | 2012-07-03 | 1 | -1/+1 |
| * | update syscall defs to latest kernel ones•••patch submitted by Kristian L. <email@thexception.net>
| Rich Felker | 2012-06-23 | 1 | -0/+4 |
| * | proper error handling for fcntl F_GETOWN on modern kernels•••on old kernels, there's no way to detect errors; we must assume
negative syscall return values are pgrp ids. but if the F_GETOWN_EX
fcntl works, we can get a reliable answer.
| Rich Felker | 2012-06-20 | 1 | -0/+3 |
| * | fix arm syscall.h to reflect which syscalls actually exist (on EABI) | Rich Felker | 2012-05-24 | 1 | -22/+0 |
| * | fix missing _BSD_SOURCE support in bits/*.h•••this is actually rather ugly, and would get even uglier if we ever
want to support further feature test macros. at some point i may
factor the bits headers into separate files for C base, POSIX base,
and nonstandard extensions (the only distinctions that seem to matter
now) and then the logic for which to include can go in the main header
rather than being duplicated for each arch. the downside of this is
that it would result in more files having to be opened during
compilation, so as long as the ugliness does not grow, i'm inclined to
leave it alone for now.
| Rich Felker | 2012-05-22 | 3 | -4/+4 |
| * | use signed char rather than plain char for int8_t•••otherwise this BADLY breaks if -funsigned-char is passed to gcc
| Rich Felker | 2012-04-24 | 1 | -4/+4 |
| * | move F_DUPFD_CLOEXEC out of bits•••fcntl values 1024 and up are universal, arch-independent. later I'll
add some of the other linux-specific ones for notify, leases, pipe
size, etc. here too.
| Rich Felker | 2012-04-15 | 1 | -2/+0 |
| * | add F_SETSIG and F_GETSIG (linux specific) to fcntl.h•••F_* is in the reserved namespace so no feature test is needed
| Rich Felker | 2012-04-15 | 1 | -0/+2 |
| * | fix DECIMAL_DIG definitions•••DECIMAL_DIG is not the same as LDBL_DIG
type_DIG is the maximimum number of decimal digits that can survive a
round trip from decimal to type and back to decimal.
DECIMAL_DIG is the minimum number of decimal digits required in order
for any floating point type to survive the round trip to decimal and
back, and it is generally larger than LDBL_DIG. since the exact
formula is non-trivial, and defining it larger than necessary may be
legal but wasteful, just define the right value in bits/float.h.
| Rich Felker | 2012-03-21 | 1 | -0/+2 |
| * | add float_t and double_t to math.h | Rich Felker | 2012-02-15 | 1 | -0/+3 |
| * | replace bad cancellation cleanup abi with a sane one•••the old abi was intended to duplicate glibc's abi at the expense of
being ugly and slow, but it turns out glib was not even using that abi
except on non-gcc-compatible compilers (which it doesn't even support)
and was instead using an exceptions-in-c/unwind-based approach whose
abi we could not duplicate anyway without nasty dwarf2/unwind
integration.
the new abi is copied from a very old glibc abi, which seems to still
be supported/present in current glibc. it avoids all unwinding,
whether by sjlj or exceptions, and merely maintains a linked list of
cleanup functions to be called from the context of pthread_exit. i've
made some care to ensure that longjmp out of a cleanup function should
work, even though it is not required to.
this change breaks abi compatibility with programs which were using
pthread cancellation, which is unfortunate, but that's why i'm making
the change now rather than later. considering that most pthread
features have not been usable until recently anyway, i don't see it as
a major issue at this point.
| Rich Felker | 2012-02-09 | 1 | -6/+0 |
| * | fix some details in ugly stuff that doesn't belong in libc•••patches by sh4rm4, presumably needed to make gdb or some similar junk
happy...
| Rich Felker | 2011-10-17 | 1 | -6/+6 |
| * | don't define wchar_t on c++•••it's a keyword in c++ (wtf). i'm not sure this is the cleanest
solution; it might be better to avoid ever defining __NEED_wchar_t on
c++. but in any case, this works for now.
| Rich Felker | 2011-10-15 | 1 | -0/+2 |
| * | fix fcntl O_* flags for arm•••no idea why these 4 are permuted and the rest are standard/generic
| Rich Felker | 2011-10-05 | 1 | -4/+4 |
| * | update syscalls with off_t arguments to handle argument alignment, if needed•••the arm syscall abi requires 64-bit arguments to be aligned on an even
register boundary. these new macros facilitate meeting the abi
requirement without imposing significant ugliness on the code.
| Rich Felker | 2011-09-21 | 1 | -1/+2 |
| * | fix the definition of struct statvfs to match lsb abi•••at the same time, make struct statfs match the traditional definition
and make it more useful, especially the fsid_t stuff.
| Rich Felker | 2011-09-19 | 1 | -15/+6 |
| * | cleanup redundancy in bits/signal.h versions | Rich Felker | 2011-09-19 | 1 | -121/+12 |
| * | fix the type of wchar_t on arm; support wchar_t varying with arch•••really wchar_t should never vary, but the ARM EABI defines it as an
unsigned 32-bit int instead of a signed one, and gcc follows this
nonsense. thus, to give a conformant environment, we have to follow
(otherwise L""[0] and L'\0' would be 0U rather than 0, but the
application would be unaware due to a mismatched definition for
WCHAR_MIN and WCHAR_MAX, and Bad Things could happen with respect to
signed/unsigned comparisons, promotions, etc.).
fortunately no rules are imposed by the C standard on the relationship
between wchar_t and wint_t, and WEOF has type wint_t, so we can still
make wint_t always-signed and use -1 for WEOF.
| Rich Felker | 2011-09-19 | 2 | -6/+6 |
| * | fix incorrect long double parameters on arm (and other future ports)•••this was the cause of crashes in printf when attempting to print
floating point values.
| Rich Felker | 2011-09-19 | 1 | -10/+10 |
| * | initial commit of the arm port•••this port assumes eabi calling conventions, eabi linux syscall
convention, and presence of the kernel helpers at 0xffff0f?0 needed
for threads support. otherwise it makes very few assumptions, and the
code should work even on armv4 without thumb support, as well as on
systems with thumb interworking. the bits headers declare this a
little endian system, but as far as i can tell the code should work
equally well on big endian.
some small details are probably broken; so far, testing has been
limited to qemu/aboriginal linux.
| Rich Felker | 2011-09-18 | 25 | -0/+1957 |