- 13 1月, 2013 4 次提交
-
-
由 Szabolcs Nagy 提交于
-
由 Szabolcs Nagy 提交于
mips and powerpc already had this termios flag defined
-
由 Szabolcs Nagy 提交于
-
由 Szabolcs Nagy 提交于
it was already defined for mips, but was missing from other archs
-
- 07 12月, 2012 2 次提交
-
-
由 Rich Felker 提交于
they were accidentally exposed under just baseline POSIX, which is a big namespace pollution issue. thankfully glibc only exposes them under _GNU_SOURCE, not under any of its other options, so omitting the pollution in the default _BSD_SOURCE profile does not hurt application compatibility at all.
-
由 rofl0r 提交于
glibc exposes them from ucontext.h. since that header includes signal.h, it is safe to put them into bits/signal.h, if _GNU_SOURCE is defined.
-
- 06 12月, 2012 2 次提交
- 26 11月, 2012 2 次提交
-
-
由 Rich Felker 提交于
-
由 Rich Felker 提交于
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.
-
- 24 11月, 2012 2 次提交
-
-
由 Rich Felker 提交于
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 提交于
-
- 22 11月, 2012 1 次提交
-
-
由 Rich Felker 提交于
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.
-
- 19 11月, 2012 2 次提交
-
-
由 Rich Felker 提交于
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 提交于
based on proposal by Isaac Dunham. nonexistance of bits/io.h will cause inclusion of sys/io.h to produce an error on archs that are not supposed to have it. this is probably the desired behavior, but the error message may be a bit unusual.
-
- 18 11月, 2012 1 次提交
-
-
由 rofl0r 提交于
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.
-
- 22 9月, 2012 1 次提交
-
-
由 Rich Felker 提交于
not tested on mips and arm; they may still be broken. x86_64 should be ok now.
-
- 16 9月, 2012 1 次提交
-
-
由 Rich Felker 提交于
the linux O_PATH mode provides the necessary semantics for both the O_SEARCH and O_EXEC modes defined and required by POSIX 2008.
-
- 14 9月, 2012 1 次提交
-
-
由 Rich Felker 提交于
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.
-
- 09 9月, 2012 2 次提交
-
-
由 Rich Felker 提交于
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 提交于
based on patch by Justin Cormack
-
- 03 9月, 2012 1 次提交
-
-
由 Rich Felker 提交于
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.
-
- 11 8月, 2012 1 次提交
-
-
由 Rich Felker 提交于
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.
-
- 10 8月, 2012 1 次提交
-
-
由 Rich Felker 提交于
yet another gratuitous mips incompatibility...
-
- 13 7月, 2012 1 次提交
-
-
由 Rich Felker 提交于
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.
-
- 04 7月, 2012 1 次提交
-
-
由 Rich Felker 提交于
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.
-
- 24 6月, 2012 1 次提交
-
-
由 Rich Felker 提交于
patch submitted by Kristian L. <email@thexception.net>
-
- 21 6月, 2012 1 次提交
-
-
由 Rich Felker 提交于
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.
-
- 23 5月, 2012 1 次提交
-
-
由 Rich Felker 提交于
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.
-
- 30 4月, 2012 1 次提交
-
-
由 Rich Felker 提交于
-
- 27 4月, 2012 1 次提交
-
-
由 Rich Felker 提交于
if the compiler provides a value, use it; otherwise fallback to the platform default (2).
-
- 25 4月, 2012 1 次提交
-
-
由 Rich Felker 提交于
otherwise this BADLY breaks if -funsigned-char is passed to gcc
-
- 16 4月, 2012 2 次提交
-
-
由 Rich Felker 提交于
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 提交于
F_* is in the reserved namespace so no feature test is needed
-
- 04 4月, 2012 1 次提交
-
-
由 Rich Felker 提交于
when the "r" (register) constraint is used to let gcc choose a register, gcc will sometimes assign the same register that was used for one of the other fixed-register operands, if it knows the values are the same. one common case is multiple zero arguments to a syscall. this horribly breaks the intended usage, which is swapping the GOT pointer from ebx into the temp register and back to perform the syscall. presumably there is a way to fix this with advanced usage of register constaints on the inline asm, but having bad memories about hellish compatibility issues with different gcc versions, for the time being i'm just going to hard-code specific registers to be used. this may hurt the compiler's ability to optimize, but it will fix serious miscompilation issues. so far the only function i know what compiled incorrectly is getrlimit.c, and naturally the bug only applies to shared (PIC) builds, but it may be more extensive and may have gone undetected..
-
- 22 3月, 2012 1 次提交
-
-
由 Rich Felker 提交于
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.
-
- 16 2月, 2012 1 次提交
-
-
由 Rich Felker 提交于
-
- 09 2月, 2012 1 次提交
-
-
由 Rich Felker 提交于
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.
-
- 21 1月, 2012 1 次提交
-
-
由 Rich Felker 提交于
-
- 15 10月, 2011 1 次提交
-
-
由 Rich Felker 提交于
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.
-