musl - an implementation of the standard library for Linux-based systems
Go to file
Rich Felker 84b5c5479e remove rlimit hacks from multi-threaded set*id() code
the code being removed was introduced to work around "partial failure"
of multi-threaded set*id() operations, where some threads would
succeed in changing their ids but an RLIMIT_NPROC setting would
prevent the rest from succeeding, leaving the process in an
inconsistent and dangerous state. however, the workaround code did not
handle important usage cases like swapping real and effective uids
then restoring their original values, and the wrongful kernel
enforcement of RLIMIT_NPROC at setuid time was removed in Linux 3.1,
making the workaround obsolete.

since the partial failure still is dangerous on old kernels, and could
in principle happen on post-fix kernels as well if set*id() syscalls
fail for another spurious reason such as resource-related failures,
new code is added to detect and forcibly kill the process if/when such
a situation arises. future documentation releases should be updated to
reflect that setting RLIMIT_NPROC to RLIM_INFINITY is necessary to
avoid this forced-kill on old kernels. ideally, at some point the
kernel will get proper multi-threaded set*id() syscalls capable of
performing their actions atomically, and all of the userspace code to
emulate them can be treated as a fallback for outdated kernels.
2015-01-12 18:16:32 -05:00
arch add new syscall numbers for bpf and kexec_file_load 2014-12-23 01:44:19 -05:00
crt add or1k (OpenRISC 1000) architecture port 2014-07-18 14:10:23 -04:00
dist add another example option to dist/config.mak 2012-04-24 16:49:11 -04:00
include add new prctl command PR_SET_MM_MAP to sys/prctl.h 2014-12-23 01:46:22 -05:00
lib new solution for empty lib dir (old one had some problems) 2011-02-17 17:12:52 -05:00
src remove rlimit hacks from multi-threaded set*id() code 2015-01-12 18:16:32 -05:00
tools fix system breakage window during make install due to permissions 2014-01-15 22:29:13 -05:00
.gitignore add version.h to .gitignore; it is a generated file 2014-01-21 01:06:42 -05:00
COPYRIGHT update COPYRIGHT file to reflect new contributors 2014-07-31 16:06:11 -04:00
INSTALL update notice on broken gcc versions in INSTALL file 2014-07-31 19:02:54 -04:00
Makefile add tarball-producing targets to Makefile for ease of release 2014-06-25 16:14:37 -04:00
README update version reference in the README file 2014-06-25 14:16:53 -04:00
VERSION release 1.1.5 2014-10-14 13:32:42 -04:00
WHATSNEW release 1.1.5 2014-10-14 13:32:42 -04:00
configure add or1k (OpenRISC 1000) architecture port 2014-07-18 14:10:23 -04:00

README

    musl libc

musl, pronounced like the word "mussel", is an MIT-licensed
implementation of the standard C library targetting the Linux syscall
API, suitable for use in a wide range of deployment environments. musl
offers efficient static and dynamic linking support, lightweight code
and low runtime overhead, strong fail-safe guarantees under correct
usage, and correctness in the sense of standards conformance and
safety. musl is built on the principle that these goals are best
achieved through simple code that is easy to understand and maintain.

The 1.1 release series for musl features coverage for all interfaces
defined in ISO C99 and POSIX 2008 base, along with a number of
non-standardized interfaces for compatibility with Linux, BSD, and
glibc functionality.

For basic installation instructions, see the included INSTALL file.
Information on full musl-targeted compiler toolchains, system
bootstrapping, and Linux distributions built on musl can be found on
the project website:

    http://www.musl-libc.org/