Commit Graph

1925 Commits

Author SHA1 Message Date
Rich Felker
67e793e5e1 better fix sysconf pthread stack min 2011-04-08 12:16:24 -04:00
Rich Felker
5e72cb4a36 consistency with pthread stack min in limits.h 2011-04-08 12:15:37 -04:00
Rich Felker
60685ecad1 fix broken sigsetjmp on x86_64 2011-04-08 11:56:52 -04:00
Rich Felker
7168790763 workaround broken msghdr struct on 64bit linux
POSIX clearly specifies the type of msg_iovlen and msg_controllen, and
Linux ignores it and makes them both size_t instead. to work around
this we add padding (instead of just using the wrong types like glibc
does), but we also need to patch-up the struct before passing it to
the kernel in case the caller did not zero-fill it.

if i could trust the kernel to just ignore the upper 32 bits, this
would not be necessary, but i don't think it will ignore them...
2011-04-08 09:24:19 -04:00
Rich Felker
5b8d81f706 fix ipv6 address printing: 2001 appeared as 201, etc. 2011-04-08 09:21:51 -04:00
Rich Felker
d104c1f7e2 fix broken dns response parsing code that made most ipv6 lookups fail 2011-04-08 08:49:28 -04:00
Rich Felker
e2cc0bee11 return the requested string as the "canonical name" for numeric addresses
previously NULL was returned in ai_canonname, resulting in crashes in
some callers. this behavior was incorrect. note however that the new
behavior differs from glibc, which performs reverse dns lookups. POSIX
is very clear that a reverse DNS lookup must not be performed for
numeric addresses.
2011-04-08 08:14:28 -04:00
Rich Felker
d4fbebe18d fix uninitialized variables in dns lookup code 2011-04-07 23:18:12 -04:00
Rich Felker
74f75541ff fix bug in TRE found by clang (typo && instead of &) 2011-04-07 23:13:47 -04:00
Rich Felker
cb8dff2149 fix misplaced *'s in string functions (harmless) 2011-04-07 16:19:30 -04:00
Rich Felker
4095f8338d fix broken unsigned comparison in wcstoumax 2011-04-07 16:13:47 -04:00
Rich Felker
bb8d3d00e2 fix breakage due to converting a return type to size_t in iconv... 2011-04-07 16:10:44 -04:00
Rich Felker
6682ed1e74 fixed crash in new rsyscall (failure to set sa_flags for signal handler) 2011-04-06 20:43:39 -04:00
Rich Felker
c2cd25bff8 consistency: change all remaining syscalls to use SYS_ rather than __NR_ prefix 2011-04-06 20:32:53 -04:00
Rich Felker
b2486a8922 move rsyscall out of pthread_create module
this is something of a tradeoff, as now set*id() functions, rather
than pthread_create, are what pull in the code overhead for dealing
with linux's refusal to implement proper POSIX thread-vs-process
semantics. my motivations are:

1. it's cleaner this way, especially cleaner to optimize out the
rsyscall locking overhead from pthread_create when it's not needed.
2. it's expected that only a tiny number of core system programs will
ever use set*id() functions, whereas many programs may want to use
threads, and making thread overhead tiny is an incentive for "light"
programs to try threads.
2011-04-06 20:27:07 -04:00
Rich Felker
74950b336d pthread exit stuff: don't bother setting errno when we won't check it. 2011-04-06 19:47:50 -04:00
Rich Felker
622804ece7 fix rsyscall handler: must not clobber errno from signal context 2011-04-06 19:46:46 -04:00
Rich Felker
095ad15673 fix typo in sys/msg.h 2011-04-06 17:50:38 -04:00
Rich Felker
92bd4c6031 add startup abi functions, dummy for now. eventually needed for c++ support. 2011-04-06 16:40:19 -04:00
Rich Felker
97d0988fd8 add _res (__res_state()) dummy 2011-04-06 15:47:26 -04:00
Rich Felker
2b55a619e4 add IN_LOOPBACKNET constant (nonstandard but in reserved namespace) 2011-04-06 15:44:39 -04:00
Rich Felker
00817f0739 document more changes for 0.7.7 2011-04-06 14:46:37 -04:00
Rich Felker
1fee6186fe fix prototype for strsep 2011-04-06 14:28:29 -04:00
Rich Felker
6b87e941f9 fix completely bogus loop condition in getmntent_r
somehow this worked on my simple fstab, but horribly broke in general,
leading to use of uninitialized offset array and crashes.
2011-04-06 12:35:05 -04:00
Rich Felker
a113434cd6 major semaphore improvements (performance and correctness)
1. make sem_[timed]wait interruptible by signals, per POSIX
2. keep a waiter count in order to avoid unnecessary futex wake syscalls
2011-04-06 12:24:34 -04:00
Rich Felker
cd3bb38412 fix signal-based timers with null sigevent argument
since timer_create is no longer allocating a structure for the timer_t
and simply using the kernel timer id, it was impossible to specify the
timer_t as the argument to the signal handler. the solution is to pass
the null sigevent pointer on to the kernel, rather than filling it in
userspace, so that the kernel does the right thing. however, that
precludes the clever timerid-versus-threadid encoding we were doing.

instead, just assume timerids are below 1M and thread pointers are
above 1M. (in perspective: timerids are sequentially allocated and
seem limited to 32k, and thread pointers are at roughly 3G.)
2011-04-06 09:26:41 -04:00
Rich Felker
104d013441 fix incorrect (and conflicting on LP64 archs) types for sysv ipc msgq functions 2011-04-06 00:02:20 -04:00
Rich Felker
fc0cf2852d fix (hopefully) statvfs breakage on x86_64 that resulted from fixing i386... 2011-04-05 23:58:36 -04:00
Rich Felker
59a37f8f1f document more changes 2011-04-05 18:58:47 -04:00
Rich Felker
729cb49f52 new framework to inhibit thread cancellation when needed
with these small changes, libc functions which need to call functions
which are cancellation points, but which themselves must not be
cancellation points, can use the CANCELPT_INHIBIT and CANCELPT_RESUME
macros to temporarily inhibit all cancellation.
2011-04-05 18:00:28 -04:00
Rich Felker
918a40f257 add ip6 pktinfo stuff for x86_64
these defs should probably all be moved out of bits and unified...
2011-04-05 17:27:28 -04:00
Rich Felker
8bb82b4e58 add sysv ipc message queues (completely untested) 2011-04-05 16:33:55 -04:00
Rich Felker
0438e9fd63 getopt.h is a GNU-getopt-specific header. always expose GNU functions. 2011-04-05 15:45:24 -04:00
Rich Felker
5788d97221 add sysexits.h legacy header 2011-04-05 15:40:36 -04:00
Rich Felker
f209440bcf implement the adjtime and adjtimex functions (nonstandard) 2011-04-05 15:38:20 -04:00
Rich Felker
2c4e9e6e4b add getmntent_r interface (all of mntent is nonstandard anyway) 2011-04-05 14:11:14 -04:00
Rich Felker
e86cc888df add some missing ipv6 stuff 2011-04-05 14:05:11 -04:00
Rich Felker
92b2eb8d03 implement if_indextoname and if_nametoindex functions 2011-04-05 13:20:08 -04:00
Rich Felker
ef8b4b1aa6 add (nonstandard) cfmakeraw function 2011-04-05 12:35:09 -04:00
Rich Felker
5546f7a73a add pivot_root syscall wrapper 2011-04-05 12:32:10 -04:00
Rich Felker
e72180083e add more legacy functions: setlinebuf and setbuffer 2011-04-05 12:25:31 -04:00
Rich Felker
8b61c81693 alternate name for syslog.h 2011-04-05 12:13:54 -04:00
Rich Felker
f93de08ca4 uncomment IP_PKTINFO
this was a hack leftover from testing before the initial
check-in to git.
2011-04-05 12:07:42 -04:00
Rich Felker
39e48531ef support the nonstandard err.h interfaces
note that unlike the originals, these do not print the program
name/argv[0] because we have not saved it anywhere. this could be
changed in __libc_start_main if desired.
2011-04-05 11:16:49 -04:00
Rich Felker
25ce7621e0 release notes for next bugfix release 2011-04-05 10:28:08 -04:00
Rich Felker
16675df793 fix misaligned read on early string termination in strchr
this could actually cause rare crashes in the case where a short
string is located at the end of a page and the following page is not
readable, and in fact this was seen in gcc compiling certain files.
2011-04-05 09:27:41 -04:00
Rich Felker
2f3d02cd83 fix overflow in printf %N$ argument handling 2011-04-05 09:24:03 -04:00
Rich Felker
f9569662c0 fix various floating point rounding and formatting errors in *printf 2011-04-05 09:16:40 -04:00
Rich Felker
bd1f6eba8c release notes for 0.7.6 bugfix release 2011-04-04 18:00:02 -04:00
Rich Felker
b761bd19aa fix rare but nasty under-allocation bug in malloc with large requests
the bug appeared only with requests roughly 2*sizeof(size_t) to
4*sizeof(size_t) bytes smaller than a multiple of the page size, and
only for requests large enough to be serviced by mmap instead of the
normal heap. it was only ever observed on 64-bit machines but
presumably could also affect 32-bit (albeit with a smaller window of
opportunity).
2011-04-04 17:26:41 -04:00