Commit Graph

751 Commits

Author SHA1 Message Date
joerg aceb213538 Allow kernel code to access constant databases by moving cdbr(3) and the
required mi_vector_hash(3) into src/common.
2013-12-11 01:24:08 +00:00
lneto c4a02e0a12 changed lua_Number to int64_t 2013-12-02 04:39:10 +00:00
matt 9818090a90 Reduce amount of casts and make LP64 safe. 2013-10-22 08:08:51 +00:00
joerg 1bf0d67629 NetBSD certainly supports TLS in static applications if it supports TLS
on the platform at all.
2013-09-12 15:35:15 +00:00
tron 1ad2891b6d Don't scrub the environment unless we are going to change it. This should
prevent crashes in applications which carefully and manually construct
a temporary environment and later restore the original environment
like Emacs 24.

Problem reported by Thomas Klausner on "pkgsrc-users" mailing list.
2013-09-09 10:21:28 +00:00
matt 8caf10303e Put the startup code in .text.startup 2013-08-19 22:14:37 +00:00
wiz a5684d07dd Use Mt for email addresses. 2013-07-20 21:39:55 +00:00
wiz 55d364d35e Bump date for adding the function to NetBSD. Fix xref. 2013-04-26 19:37:18 +00:00
wiz afd815359c Add commas in list. 2013-04-26 19:37:04 +00:00
wiz 0ccc09335e Bump date after adding function to NetBSD. 2013-04-26 19:36:47 +00:00
christos f5c1f2146c add {at_,}quick_exit(3) from FreeBSD 2013-04-26 18:29:55 +00:00
matt ecaf413acf Remove weak_alias since that's now in the compat_putenv.c 2013-04-25 07:08:56 +00:00
joerg a67fde0356 Add strtol_l and friends. Switch _citrus_bcs_strtol to use plain
strtol_l unless in tools mode. Add note to retire the BCS code on the
next libc major bump.
2013-04-16 21:44:06 +00:00
dholland 2d1469952b typo in comment, from Abhinav Upadhyay in PR 47385 2012-12-30 21:23:20 +00:00
wiz 76b8df0e8c Whitespace improvements. 2012-10-24 22:56:27 +00:00
christos 429bc5b7d7 explain a bit more what's wrong with alloca(3) 2012-10-24 22:25:49 +00:00
apb 977d0ed33c Use the correct field name when describing the equivalence between
ptsname(3) and ioctl TIOCPTSNAME.  It should be pm.sn, not pm.ps.
2012-10-19 10:44:34 +00:00
abs 9e66e6d75e Update old-style definitions to ANSI, remove a couple of register
definitions along the way. Fixed gcc 4.1 build (thank you vax)
2012-06-25 22:32:43 +00:00
christos 3d365e7447 fix old style definitions; XXX: gcc should have picked them up but it did not. 2012-06-24 15:26:02 +00:00
jdf 3a6070abd3 Use correct macro (.Nm is only used within the NAME section, for section 3
manpages).

Patch provided by Bug Hunting.
2012-06-12 21:16:17 +00:00
abs 7d974f9a82 ANSI prototypes 2012-06-08 11:13:33 +00:00
christos d9a1056489 don't trigger diagassert for a null array with 0 elements or 0 elementsize. 2012-05-26 21:47:05 +00:00
christos d703a14882 rename umax2s->size_t2s function per apb's request. 2012-03-21 14:32:22 +00:00
christos d9285aa434 unsigned char portability casts 2012-03-21 14:19:15 +00:00
matt e1a2f47f12 Use C89 function definition 2012-03-21 10:10:36 +00:00
he 912d4f1845 Cast an int argument to umax2s() to size_t. 2012-03-21 09:49:02 +00:00
christos c59812a81a uintmax_t -> size_t (never called with larger than size_t) 2012-03-21 00:38:06 +00:00
matt 44551472c9 Remove use of __P
Switch to using C89 definitions.
2012-03-20 16:38:44 +00:00
christos c5e820cae4 PR/45989: Martin Husemann: lint invocation does include -w only on i386
- turn lint -w for all the platforms after fixing the lint warnings.
- add _DIAGASSERTS() for casts that would assign values to types that
  would not fit.
- change types, add casts
- change into ansii prototypes
- turn on _DIAGNOSTIC for libc (during current, to be eliminated for release
  builds)

approved by core@
2012-03-13 21:13:30 +00:00
christos abe98abf0f base0 == NULL is allowed when nmemb == 0, in fact the nsdispatch code calls
bsearch this way.
2012-03-04 20:01:45 +00:00
dholland 27eed90c42 Clarify the behavior of exit(x) for out-of-range x. PR 45769 2012-01-02 15:55:29 +00:00
christos 66744c9484 Put a recursion limit to avoid DoS attacks (Maksymilian Arciemowicz)
While there do minor KNF, and do as the manual says: exit with EXIT_FAILURE
2011-10-22 22:08:47 +00:00
joerg 1669bc8401 sys/endian.h might not exist in the src/tools case 2011-10-21 23:45:56 +00:00
rmind 50902a3b80 Mention POSIX conformance of some functions, when they appeared, sprinkle .Xr. 2011-10-15 21:35:49 +00:00
christos adc9c9a3d6 Provide symbol definitions for environ and __progname. These are duplicate
definitions to the ones provided by csu, but harmless since the linker resolves
them. There are 3 non weak data symbols provided in crt0.o:

    D __progname [initialized data, assigned to ""]
    B __ps_strings [BSS since assigned to 0]
    C environ [common, uninitialized]

__ps_strings had already a second definition in libc (in BSS), now we added
__progname and __ps_strings (in BSS).

To get rid of the duplicate definition, we can remove them from csu, and
move the assignments to libc.

This is done so that libc has no undefined symbols so that linker maps
that want to do:
    ...
	local:
		*;
    ...
don't end up producing link failures for libc.
2011-10-06 20:31:41 +00:00
christos fb9e5ffdea remove the advertising clause so it can be used by the OpenJDK. 2011-09-17 16:54:39 +00:00
wiz 19ea2ccd09 Various fixes, mostly missing words or letters. 2011-09-15 09:14:54 +00:00
christos 05845f985a add re-entrant versions of the hash functions based on the GNU api. 2011-09-14 23:33:51 +00:00
jruoho b43f95128d Note memoryallocators(9) in this perhaps too generally named page. 2011-09-11 10:05:23 +00:00
christos 0461c07844 no need for the snprintf/asprintf dance; use fixed width formats. 2011-08-14 09:07:15 +00:00
wiz ae6b6d0795 Sort sections. 2011-06-21 09:36:43 +00:00
jruoho 706138d7ee Note the potential danger in the options. Fixes PR lib/31112. 2011-06-21 03:02:57 +00:00
njoly 463c1a0c0f Fix prologue macros order. 2011-06-08 18:09:57 +00:00
dsl 67d513dd66 Remove __P() 2011-05-18 19:36:36 +00:00
christos 713ea1897d cleanup saving and restoring errno, and make it similar. 2011-05-18 01:59:39 +00:00
christos 1ff5a5dfd6 don't let readlink trash errno.; 2011-05-13 23:11:00 +00:00
wiz 93cfe89ec0 Add missing preposition. 2011-05-05 07:36:44 +00:00
jruoho 19742b4964 Fix lead paragraph. 2011-05-05 05:58:14 +00:00
wiz daf04c06a3 Remove \*[q] -- not necessary, just use plain double quotes instead. 2011-05-03 09:36:24 +00:00
jruoho b29fd93227 Collect also the division functions to single place, div(3). 2011-04-13 07:12:52 +00:00
jruoho 19606f522d Collect abs(3), labs(3), llabs(3), and imaxabs(3) to a single small page. 2011-04-13 06:56:50 +00:00
jruoho 2ba8acef07 Fix another bug (no 'imaxint_t' type). 2011-04-13 06:41:11 +00:00
jruoho 5bbfa36d7b Fix obvious bug. 2011-04-13 06:35:48 +00:00
jruoho e1897fd6ba Fix xref; security(8) -> security(7). 2011-03-21 04:42:50 +00:00
joerg 5c3ccd6eba Pass down ELF Auxillary Vectors for static NetBSD binaries too.
Rename __libc_init to _libc_init and call it explicitly from CSU code.
This enforces the constructor run order for newly linked programs.
Keep it as constructor with run-once semantic for binary compatibility.
Implement dl_iterate_phdr for statically linked programs.

This material is based upon work partially supported by
The NetBSD Foundation under a contract with Joerg Sonnenberger.
2011-03-07 05:09:09 +00:00
njoly 51cca89d16 Switch from floating point to fixed point integer for run sizes maths.
From FreeBSD (part of revision 1.154).
2011-02-26 23:27:49 +00:00
jruoho 5c1bce6b00 Reference strsuftoll(3) and orders(7) with each other. 2010-12-14 13:00:34 +00:00
christos b77d89c7da ansify 2010-11-27 18:33:54 +00:00
tron 4a3a313897 Include "namespace.h" to get namespace protection. 2010-11-17 13:25:53 +00:00
tron d0e6f50de3 Implement mark & sweep garbage collection as suggested by Enami Tsugutomo
on "current-users" mailing list. Garbage collection is performed if:
1.) We previously allocated memory for the environment array which
    is no longer used because the application overwrote "environ".
2.) We find a non-NULL pointer in the allocated environment array after
    the end of the environment. This happens if the applications attempts
    to clear the environment with something like "environ[0] = NULL;".
2010-11-16 17:23:10 +00:00
enami 4f54ea7667 Fix typos in comment. 2010-11-16 03:02:20 +00:00
tron 2f85740ecc 1.) Rename internal function __findvar() to __findenvvar().
2.) Add a wrapper function __findenv() which implements the previous
    *internal* interface. It turns out that ld.elf_so(1) and pthread(3)
    both use it.

Stripping e.g. "LD_LIBRARY_PATH" from the environment while running
setuid binaries works again now.
2010-11-14 22:04:36 +00:00
tron 268c79e4cc Set errno to ENOENT if we reject the environment variable name in
getenv_r() instead of leaving it unchanged.
2010-11-14 20:37:02 +00:00
tron fbf4aa1699 Improve and simplify implementation of *env(3) functions:
- Use RB tree to keep track of memory allocated via setenv(3) as
  suggested by Enami Tsugutomo in private e-mail.
  This simplifies the code a lot as we no longer need to keep the size
  of "environ" in sync with an array of allocated environment variables.
  It also makes it possible to free environment variables in unsetenv(3)
  if something has changed the order of the "environ" array.
- Fix a bug in getenv(3) and getenv_r(3) which would return bogus
  results e.g. for " getenv("A=B") " if an environment variable "A"
  with value "B=C" exists.
- Clean up the internal functions:
  - Don't expose the read/write lock for the environment to other parts
    of "libc". Provide locking functions instead.
  - Use "bool" to report success or failure.
  - Use "ssize_t" or "size_t" instead of "int" for indexes.
  - Provide internal functions with simpler interfaces e.g. don't
    combine return values and reference arguments.
  - Don't copy "environ" into an allocated block unless we really need
    to grow it.

Code reviewed by Joerg Sonnenberger and Christos Zoulas, tested by
Joerg Sonnenberger and me. These changes also fix problems in
zsh 4.3.* and pam_ssh according to Joerg.
2010-11-14 18:11:42 +00:00
enami 5260b632e4 Clear all entries past the NULL while scrubing environ vector. 2010-11-10 02:40:08 +00:00
enami ef075363bd Indent using tab rather than four spaces. 2010-11-10 02:33:49 +00:00
christos ee29967bad scrub the whole array, not just the first n malloced entries. 2010-11-04 21:49:45 +00:00
christos 3954ad831d Handle the case where a program attempted to cleanup the environment by
setting *environ = NULL;
2010-11-03 15:01:07 +00:00
enami b447d18264 - Simplify the code
- Reword the comment.
2010-11-02 03:44:05 +00:00
enami ee9d44a7c1 Double the array only when really necessary. Otherwise memory will be
exhausted if user modifies the variable envrion itself repeatedly..
2010-11-01 02:41:27 +00:00
wiz 83306973da Improve wording after consultation with njoly. 2010-10-26 22:34:33 +00:00
njoly 5d63576039 Make putenv(3) fails with EINVAL for a null pointer, or for a string
that either miss or start with a `=' character.

Adjust man page and testcase accordingly.
2010-10-25 20:35:36 +00:00
tron 1dc4fb4ea1 Double the size of the allocate environment vector when we resize it.
This should speed up extending the environment via setenv(3).
2010-10-24 17:53:27 +00:00
njoly 4c968434a3 Make setenv(3) follow the standard, by rejecting invalid strings. It
now fails with EINVAL errno when variable is NULL, empty or contains
an `=' character; or value is NULL.

Adjust the man page accordingly, and exercize them in the existing
environment testcase.
2010-10-16 11:23:41 +00:00
enami 4a94dc0b8f Avoid unnecessary malloc(). Since __findenv() kindly treats
equal sign as an end of string, we can pass the string of
form "key=value" to lookup "key".
2010-10-05 02:23:38 +00:00
tron ae557324e5 Restore binary compatibility with applications which use putenv(3)
on constant strings (e.g. postdrop(1)):
- Don't write to the environment string passed to putenv(3).
- Don't overwrite the value of an existing environment string
  unless the memory was actually allocated by setenv(3).
2010-10-02 16:56:03 +00:00
tron c3bcf19cf7 Make sure that all extra elements of the environment vector are set
to NULL. This stop su(1) from crashing.
2010-10-02 10:51:07 +00:00
tron 12c10b36d2 Remember that we didn't malloc() memory for an environment variable
if it has been set via putenv(3).
2010-10-02 10:05:55 +00:00
wiz 732dd678dd Fix a typo, remove trailing whitespace. 2010-10-01 20:57:50 +00:00
christos 7acc3301d8 make putenv POSIX compliant. 2010-10-01 20:11:32 +00:00
tron 2445ce72d2 Be slightly more careful about freeing memory allocated for environment
variables: only free memory if the current value points to the same
memory area as the allocated block. This will prevent crashes if an
application changes the order of the environment array.

Unfortunately this is still not enough to stop zsh 4.2.* from crashing.
zsh 4.3.* works fine before and after this change.
2010-09-30 12:41:33 +00:00
enami be59ef257e If new length is exactly equals to the current length,
there is nothing to do.
2010-09-29 00:44:04 +00:00
enami 248290ef3a Don't put space before close paren. 2010-09-29 00:40:17 +00:00
christos 0588f13b3b be more conservative about allocing. 2010-09-25 19:31:51 +00:00
tron ed5e497e60 Remember the correct pointer which we will free later. 2010-09-25 19:10:37 +00:00
tron 1f5de17d4a Unlock the environment lock if __alocenv() fails. 2010-09-25 18:37:24 +00:00
tron 5cdca2e600 Remember memory used by allocated environment variables instead of
using a bitmap. This deals with the case where a variable is first
set via setenv(3) or putenv(3), then overwritten by changing
"environ" directory and afterwards overwritten with setenv(3) again.

This stops "zsh" from crashing under NetBSD-current.

Code reviewed by Christos Zoulas.
2010-09-25 18:11:40 +00:00
christos da3a4052e4 protect the __allocenv call with the mutex; from Enami 2010-09-24 14:34:44 +00:00
christos f6033a77ae Fix memory leaks; thanks Enami! 2010-09-24 14:31:15 +00:00
christos 7db74b9a82 Use a bit array to keep track of malloced environment entries so we can
free them.
2010-09-23 17:30:49 +00:00
christos e957123b85 PR/43899: Nicolas Joly: setenv(3)/unsetenv(3) memory leak.
Partial fix: Don't allocate a new string if the length is equal to the
old length, because presumably the old string was also nul terminated
so it has the extra byte needed.
The real fix is to keep an adjunct array of bits, one for each environment
variable and keep track if the entry was allocated or not so that we can
free it in unsetenv.
2010-09-23 16:02:41 +00:00
njoly abdcf63ade Add empty line in ERRORS section. 2010-09-23 12:49:31 +00:00
skrll 2a4732aadc Only do the __libc_init hack in libc, i.e. remove it from ld.elf_so.
This fixes hppa ld.elf_so by reducing the number of PLABELs required to
the number before the hack was applied.

Hi Joerg!
2010-09-09 10:19:31 +00:00
joerg e883e926df Ensure that initfini.c is referenced by exit.c. The start up code has to
reference the latter as a return of main() results in a call to exit(3),
so this ensures that the libc constructors are run for statically linked
programs. Fixes PR 37454.
2010-06-28 21:58:02 +00:00
jruoho 0e2d5f4d40 Use standard section headers. 2010-05-14 16:05:49 +00:00
wiz 6f1249aa8e Join %U. 2010-05-13 23:30:52 +00:00
jruoho c713a498a5 Note POSIX compliance. 2010-05-06 18:55:34 +00:00
jruoho 26a87898ae Fix previous commit by also moving the type of _malloc_options. In addition,
add a (commented) note that _malloc_message should be documented better.
2010-05-03 08:23:20 +00:00
jruoho 60d71be703 Move the '_malloc_options' variable from malloc(3) to jemalloc(3). 2010-05-03 08:11:57 +00:00
jruoho 49bb3cb02e Note the problems with SSP. 2010-05-03 06:11:38 +00:00
jruoho ef40c024f6 Move the examples to where they belong, in EXAMPLES. 2010-05-03 05:11:34 +00:00
jruoho 26e9ae259a Split the implementation details of malloc(3) to a separate jemalloc(3)
manual page. This way malloc(3) can follow the standard terse format used
elsewhere in the libc, while additional details can be added to jemalloc(3).

Note HISTORY and AUTHORS in jemalloc(3), and add some reading material to
SEE ALSO.
2010-05-03 05:01:53 +00:00
jruoho a80a543b80 Add more markup. 2010-05-03 03:47:51 +00:00
jruoho 280488d6bc Note that the return type sould arguably be intmax_t instead of long long. 2010-05-01 08:35:52 +00:00
jruoho 061351141b Remove the (incorrect) note about inconsistent return values. Name the exit
code as EXIT_FAILURE instead of integer 1.
2010-05-01 08:30:00 +00:00
jruoho 413ef23a32 Add more bugs. Namely, besides the return values that are confusing, no
function in a modern standard C library, exposed by <stdlib.h>, should be as
easy to (buffer) overflow as strsuftollx(3).

In addition, improvements to wording and markup.
2010-05-01 08:12:30 +00:00
jruoho 4519228649 Improvements to wording and markup.
In addition, list more bugs and caveats. Namely, the NetBSD implementation
(like the FreeBSD one where this was ported to) requires that the comparison
keys are allocated dynamically, and that hdestroy() will try to free(3) each
key. This obviously severely limits the portability, given that other
implementations (for example, the Linux one) make no such assumptions. Both
approaches are legitimate, and thus the real bug is in the ambiguity of the
standard.
2010-05-01 06:18:03 +00:00
jruoho a293ac8fcc Rewrite the HISTORY section. 2010-04-30 10:24:02 +00:00
jruoho eecb0b5e2c Put the period outside the quotation marks. 2010-04-30 10:09:23 +00:00
jruoho cb375ee477 Add STANDARDS and CAVEATS. The latter notes the ambiguity of tdelete() when
deleting the root node.
2010-04-30 10:06:52 +00:00
jruoho 42e4725801 Also: in the example EOVERFLOW is probably better than ENOMEM. 2010-04-30 07:16:35 +00:00
jruoho 67e69a6bf8 As err(3) instructs, use EXIT_FAILURE in the example. 2010-04-30 07:14:15 +00:00
jruoho 75d4d306c5 Steal the "malloc() vs. calloc()" -idiom from the OpenBSD's malloc(3).
While it may be debated how useful this is, good idiomatic usage examples
are exactly the kind of thing one would hope to see more in manual pages.
2010-04-30 07:00:51 +00:00
joerg 1c3412fa2f Use .In for header files instead of .Ar Pa and variations. 2010-03-22 19:30:53 +00:00
jruoho ab524958e3 Emphasize imaxint_t. 2010-03-21 13:39:51 +00:00
joerg ec66a10c91 Namespace protection for mi_vector_hash. 2010-03-19 18:11:30 +00:00
enami 3df6d33667 Fix race condition on reallocation of huge category.
We need to remove the old region before mremap() since if it relesae the
old region, other thread may map it for the same huge category allocation
and insert it to the tree before we acquire a lock after mremap().

Fixes PR/42876.
2010-03-04 22:48:31 +00:00
roy 7ffeaa6526 Include nbtool_config.h as we need to be part of the terminfo toolchain. 2010-02-04 10:27:08 +00:00
pooka 5f6578a865 tyop de fix 2009-12-02 12:50:27 +00:00
pooka 304d27696e Document that strtouq can return UQUAD_MAX. 2009-12-02 12:45:35 +00:00
enami 8f4cd2bee8 Retain old variables when failed to allocate memory. 2009-12-02 09:34:51 +00:00
wiz 567e675c3f Mention that it is included in IEEE Std 1003.1-2008. 2009-11-17 15:02:08 +00:00
wiz 2e7202c574 Mention that getsubopt is an XSI extension for IEEE Std 1003.1, 2004 Edition. Bump date. 2009-11-17 14:52:21 +00:00
snj 550147bd6a Remove 3rd and 4th clauses in christos' license. OK christos. 2009-10-21 01:07:44 +00:00
joerg be403b3398 Fix header to include. From Kristaps Dzonsons. 2009-10-19 22:38:56 +00:00
pooka 50efcfca57 When converting the locking path of mutex+counter to a real recursive
mutex, it's a good idea to convert the unlock path too so that the
recursive mutex gets released as many times as it was locked.
Fixes pthread + cxa deadlock.
2009-10-08 16:33:45 +00:00
dsl 602976fff6 Ansify functions and remove __P/ 2009-09-05 08:53:06 +00:00
dsl 11bcd8ad6a The 'table' of character weights is allowed to be NULL.
The SETUP define sorts it out (in the slowest and nastiest possible way!)
Broken by rev 1.12 almost 10 years ago!
2009-08-21 20:49:50 +00:00
dsl 10ad5ffa71 Add the 'abs', 'div' and 'erand48' sources to stdlib/Makefile.inc.
Change the arch files only include the .S files.
This adds imaxdiv() to some archs where it was missing.
2009-07-31 20:39:59 +00:00
wiz fa52b0ad23 Bump date for previous. 2009-07-23 13:37:34 +00:00
dholland 3cfdfcef43 Clarify the description of the errno behavior, based on the recent
thread in tech-userlevel.
2009-07-23 02:54:27 +00:00
joerg ed9dacacc0 Add HISTORY. 2009-07-21 12:40:52 +00:00
joerg d6e219476b Add a fast, platform independent hash function to libc.
The algorithm used is the Jenkins hash.  The name (mi_vector_hash)
reflects the nature of the hash function.
Add glue for libc ATF tests and include a test case to make sure that
(mis)alignment and endianess are handled correctly.

Bump libc minor to 169.
2009-07-20 17:03:36 +00:00
pooka c6181c7b2f Re-add explanation of how to correctly use realloc. 2009-07-20 12:10:03 +00:00
yamt 99122f39e6 qsort: remove the "switch to insertion sort" optimization because it
causes catastrophic performance for certain inputs.
2009-06-01 06:37:40 +00:00
wiz f6b43a0c43 Markup improvements. No need to mark up numbers as defined values, math
did the definition for us ages ago. Make HTML-ready.
2009-05-21 09:13:35 +00:00
christos fd67370208 mention that these functions return 0 and set errno to ERANGE on invalid base. 2009-05-20 22:01:34 +00:00
wiz 5dd21e58d5 Grammar fix. 2009-05-18 09:00:02 +00:00
wiz 7d88f2f54f Revert parts of v1.25 (jemalloc):
Re-add RCS Id, remove superfluous .Pp, join line, comment out limits(1) xref.
2009-05-13 23:02:11 +00:00
joerg 71c479831e Fix markup. 2009-04-11 16:13:49 +00:00
joerg cc420b6c04 ANSIfy. Remove conditionals around __RCSID. 2009-03-20 14:05:54 +00:00
joerg cc5989d71d ANSIfy. Remove conditional macros around __RCSID. 2009-03-20 13:56:57 +00:00
joerg 9df66b68e0 Explicitly mark : as literal, use Pq. 2009-03-12 12:51:29 +00:00
joerg edc0d6c151 Fix prologue. 2009-03-10 23:37:01 +00:00
lukem 9d1671f467 Fix sign-compare issues 2009-02-12 03:34:33 +00:00
lukem 19b046886f fix sign-compare issue 2009-02-12 03:12:36 +00:00
lukem 2360d0845a Apply some of FreeBSD libc/stdlib/malloc.c rev 1.162
to fix sign-compare issues.
2009-02-12 03:11:01 +00:00
lukem 957ba389e8 sign-compare fix 2009-01-30 23:46:03 +00:00
lukem 8a09e86085 sign-compare fix 2009-01-30 23:35:35 +00:00
ad c984f259af Make threaded programs die correctly:
kill(getpid(), SIGFOO) -> raise(SIGFOO)
2009-01-30 23:21:02 +00:00