| Commit message (Expand) | Author | Age | Files | Lines |
| * | wireup linux/name_to_handle_at and name_to_handle_at syscalls | Khem Raj | 2018-09-12 | 2 | -0/+18 |
| * | remove spurious inclusion of libc.h for LFS64 ABI aliases•••the LFS64 macro was not self-documenting and barely saved any
characters. simply use weak_alias directly so that it's clear what's
being done, and doesn't depend on a header to provide a strange macro.
| Rich Felker | 2018-09-12 | 4 | -8/+4 |
| * | reduce spurious inclusion of libc.h•••libc.h was intended to be a header for access to global libc state and
related interfaces, but ended up included all over the place because
it was the way to get the weak_alias macro. most of the inclusions
removed here are places where weak_alias was needed. a few were
recently introduced for hidden. some go all the way back to when
libc.h defined CANCELPT_BEGIN and _END, and all (wrongly implemented)
cancellation points had to include it.
remaining spurious users are mostly callers of the LOCK/UNLOCK macros
and files that use the LFS64 macro to define the awful *64 aliases.
in a few places, new inclusion of libc.h is added because several
internal headers no longer implicitly include libc.h.
declarations for __lockfile and __unlockfile are moved from libc.h to
stdio_impl.h so that the latter does not need libc.h. putting them in
libc.h made no sense at all, since the macros in stdio_impl.h are
needed to use them correctly anyway.
| Rich Felker | 2018-09-12 | 6 | -5/+2 |
| * | remove unused __getdents, rename and move file•••the __-prefixed filename does not make sense when the only purpose of
this file is implementing a public function that's not used as a
backend for implementing the standard dirent functions.
| Rich Felker | 2018-09-12 | 1 | -0/+9 |
| * | overhaul internally-public declarations using wrapper headers•••commits leading up to this one have moved the vast majority of
libc-internal interface declarations to appropriate internal headers,
allowing them to be type-checked and setting the stage to limit their
visibility. the ones that have not yet been moved are mostly
namespace-protected aliases for standard/public interfaces, which
exist to facilitate implementing plain C functions in terms of POSIX
functionality, or C or POSIX functionality in terms of extensions that
are not standardized. some don't quite fit this description, but are
"internally public" interfacs between subsystems of libc.
rather than create a number of newly-named headers to declare these
functions, and having to add explicit include directives for them to
every source file where they're needed, I have introduced a method of
wrapping the corresponding public headers.
parallel to the public headers in $(srcdir)/include, we now have
wrappers in $(srcdir)/src/include that come earlier in the include
path order. they include the public header they're wrapping, then add
declarations for namespace-protected versions of the same interfaces
and any "internally public" interfaces for the subsystem they
correspond to.
along these lines, the wrapper for features.h is now responsible for
the definition of the hidden, weak, and weak_alias macros. this means
source files will no longer need to include any special headers to
access these features.
over time, it is my expectation that the scope of what is "internally
public" will expand, reducing the number of source files which need to
include *_impl.h and related headers down to those which are actually
implementing the corresponding subsystems, not just using them.
| Rich Felker | 2018-09-12 | 1 | -2/+0 |
| * | fix issues from public functions defined without declaration visible•••policy is that all public functions which have a public declaration
should be defined in a context where that public declaration is
visible, to avoid preventable type mismatches.
an audit performed using GCC's -Wmissing-declarations turned up the
violations corrected here. in some cases the public header had not
been included; in others, a feature test macro needed to make the
declaration visible had been omitted.
in the case of gethostent and getnetent, the omission seems to have
been intentional, as a hack to admit a single stub definition for both
functions. this kind of hack is no longer acceptable; it's UB and
would not fly with LTO or advanced toolchains. the hack is undone to
make exposure of the declarations possible.
| Rich Felker | 2018-09-12 | 3 | -0/+6 |
| * | add memfd_create syscall wrapper•••memfd_create was added in linux v3.17 and glibc has api for it.
| Szabolcs Nagy | 2018-06-20 | 1 | -0/+8 |
| * | add mlock2 linux syscall wrapper•••mlock2 syscall was added in linux v4.4 and glibc has api for it.
It falls back to mlock in case of flags==0, so that case works
even on older kernels.
MLOCK_ONFAULT is moved under _GNU_SOURCE following glibc.
| Szabolcs Nagy | 2018-06-20 | 1 | -0/+10 |
| * | add getrandom syscall wrapper•••This syscall is available since Linux 3.17 and was also implemented in
glibc in version 2.25 using the same interfaces.
| Hauke Mehrtens | 2018-02-22 | 1 | -0/+7 |
| * | fix undefined behavior in ptrace | Alexander Monakov | 2017-07-04 | 1 | -2/+6 |
| * | move x32 sysinfo impl and syscall fixup code out of arch/x32/src•••all such arch-specific translation units are being moved to
appropriate arch dirs under the main src tree.
| Rich Felker | 2016-01-22 | 2 | -1/+50 |
| * | fix incorrect void return type for syncfs function•••being nonstandard, the closest thing to a specification for this
function is its man page, which documents it as returning int. it can
fail with EBADF if the file descriptor passed is invalid.
| Rich Felker | 2015-07-09 | 1 | -2/+2 |
| * | fix missing argument to syscall in fanotify_mark | Clément Vasseur | 2014-06-14 | 1 | -1/+1 |
| * | fix breakage from recent syscall commits due to missing errno macros | Rich Felker | 2014-05-30 | 3 | -0/+3 |
| * | fix for broken kernel side RLIM_INFINITY on mips•••On 32 bit mips the kernel uses -1UL/2 to mark RLIM_INFINITY (and
this is the definition in the userspace api), but since it is in
the middle of the valid range of limits and limits are often
compared with relational operators, various kernel side logic is
broken if larger than -1UL/2 limits are used. So we truncate the
limits to -1UL/2 in get/setrlimit and prlimit.
Even if the kernel side logic consistently treated -1UL/2 as greater
than any other limit value, there wouldn't be any clean workaround
that allowed using large limits:
* using -1UL/2 as RLIM_INFINITY in userspace would mean different
infinity value for get/setrlimt and prlimit (where infinity is always
-1ULL) and userspace logic could break easily (just like the kernel
is broken now) and more special case code would be needed for mips.
* translating -1UL/2 kernel side value to -1ULL in userspace would
mean that -1UL/2 limit cannot be set (eg. -1UL/2+1 had to be passed
to the kernel instead).
| Szabolcs Nagy | 2014-05-30 | 1 | -1/+16 |
| * | support linux kernel apis (new archs) with old syscalls removed•••such archs are expected to omit definitions of the SYS_* macros for
syscalls their kernels lack from arch/$ARCH/bits/syscall.h. the
preprocessor is then able to select the an appropriate implementation
for affected functions. two basic strategies are used on a
case-by-case basis:
where the old syscalls correspond to deprecated library-level
functions, the deprecated functions have been converted to wrappers
for the modern function, and the modern function has fallback code
(omitted at the preprocessor level on new archs) to make use of the
old syscalls if the new syscall fails with ENOSYS. this also improves
functionality on older kernels and eliminates the incentive to program
with deprecated library-level functions for the sake of compatibility
with older kernels.
in other situations where the old syscalls correspond to library-level
functions which are not deprecated but merely lack some new features,
such as the *at functions, the old syscalls are still used on archs
which support them. this may change at some point in the future if or
when fallback code is added to the new functions to make them usable
(possibly with reduced functionality) on old kernels.
| Rich Felker | 2014-05-29 | 5 | -8/+29 |
| * | add namespace-protected name for sysinfo function•••it will be needed to implement some things in sysconf, and the syscall
can't easily be used directly because the x32 syscall uses the wrong
structure layout. the l (uncreative, for "linux") prefix is used since
the symbol name __sysinfo is already taken for AT_SYSINFO from the aux
vector.
the way the x32 override of this function works is also changed to be
simpler and avoid the useless jump instruction.
| Rich Felker | 2014-04-15 | 2 | -6/+5 |
| * | x32: fix sysinfo()•••the kernel uses long longs in the struct, but the documentation
says they're long. so we need to fixup the mismatch between the
userspace and kernelspace structs.
since the struct offers a mem_unit member, we can avoid truncation
by adjusting that value.
| rofl0r | 2014-03-06 | 1 | -0/+5 |
| * | clone: make clone a wrapper around __clone•••The architecture-specific assembly versions of clone did not set errno on
failure, which is inconsistent with glibc. __clone still returns the error
via its return value, and clone is now a wrapper that sets errno as needed.
The public clone has also been moved to src/linux, as it's not directly
related to the pthreads API.
__clone is called by pthread_create, which does not report errors via
errno. Though not strictly necessary, it's nice to avoid clobbering errno
here.
| Bobby Bingham | 2014-02-09 | 1 | -0/+19 |
| * | fix const-correctness of argument to stime•••it's unclear what the historical signature for this function was, but
semantically, the argument should be a pointer to const, and this is
what glibc uses. correct programs should not be using this function
anyway, so it's unlikely to matter.
| Rich Felker | 2014-01-07 | 1 | -1/+1 |
| * | fix signedness of pgoff argument to remap_file_pages•••both the kernel and glibc agree that this argument is unsigned; the
incorrect type ssize_t came from erroneous man pages.
| Rich Felker | 2014-01-07 | 1 | -1/+1 |
| * | fix incorrect type for wd argument of inotify_rm_watch•••this was wrong since the original commit adding inotify, and I don't
see any explanation for it. not even the man pages have it wrong. it
was most likely a copy-and-paste error.
| Rich Felker | 2014-01-07 | 1 | -1/+1 |
| * | add some missing LFS64 aliases for fadvise/fallocate functions | Rich Felker | 2014-01-06 | 1 | -0/+4 |
| * | fanotify.c: fix typo in header inclusion•••the header is included only as a guard to check that the declaration
and definition match, so the typo didn't cause any breakage aside
from omitting this check.
| rofl0r | 2014-01-03 | 1 | -1/+1 |
| * | disable the brk function•••the reasons are the same as for sbrk. unlike sbrk, there is no safe
usage because brk does not return any useful information, so it should
just fail unconditionally.
| Rich Felker | 2014-01-02 | 1 | -1/+2 |
| * | disable sbrk for all values of increment except 0•••use of sbrk is never safe; it conflicts with malloc, and malloc may be
used internally by the implementation basically anywhere. prior to
this change, applications attempting to use sbrk to do their own heap
management simply caused untrackable memory corruption; now, they will
fail with ENOMEM allowing the errors to be fixed.
sbrk(0) is still permitted as a way to get the current brk; some
misguided applications use this as a measurement of their memory
usage or for other related purposes, and such usage is harmless.
eventually sbrk may be re-added if/when malloc is changed to avoid
using the brk by using mmap for all allocations.
| Rich Felker | 2014-01-02 | 1 | -3/+3 |
| * | add fanotify syscall wrapper and header | rofl0r | 2014-01-02 | 1 | -0/+14 |
| * | add sys/quota.h and quotactl syscall wrapper•••based on patch by Timo Teräs.
| Rich Felker | 2013-12-20 | 1 | -0/+7 |
| * | include cleanups: remove unused headers and add feature test macros | Szabolcs Nagy | 2013-12-12 | 14 | -10/+12 |
| * | fix the prototype of settimeofday to follow the original BSD declaration | Szabolcs Nagy | 2013-05-26 | 1 | -1/+2 |
| * | fix signalfd not to ignore flags•••also include fallback code for broken kernels that don't support the
flags. as usual, the fallback has a race condition that can leak file
descriptors.
| Rich Felker | 2013-04-07 | 1 | -1/+12 |
| * | remove __SYSCALL_SSLEN arch macro in favor of using public _NSIG•••the issue at hand is that many syscalls require as an argument the
kernel-ABI size of sigset_t, intended to allow the kernel to switch to
a larger sigset_t in the future. previously, each arch was defining
this size in syscall_arch.h, which was redundant with the definition
of _NSIG in bits/signal.h. as it's used in some not-quite-portable
application code as well, _NSIG is much more likely to be recognized
and understood immediately by someone reading the code, and it's also
shorter and less cluttered.
note that _NSIG is actually 65/129, not 64/128, but the division takes
care of throwing away the off-by-one part.
| Rich Felker | 2013-03-26 | 3 | -3/+6 |
| * | remove __arch_prctl alias for arch_prctl•••if there's evidence of any use for it, we can add it back later. as
far as I can tell, glibc has it only for internal use (and musl uses a
direct syscall in that case rather than a function call), not for
exposing it to applications.
| Rich Felker | 2012-12-07 | 1 | -3/+1 |
| * | move new linux syscall wrapper functions to proper source dir | Rich Felker | 2012-12-07 | 2 | -0/+16 |
| * | add port io functions to sys/io.h•••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.
| Rich Felker | 2012-11-18 | 2 | -2/+4 |
| * | mips cache flush/ctl syscall support and header | Rich Felker | 2012-11-04 | 1 | -0/+18 |
| * | move accept4, dup3, and pipe2 to non-linux-specific locations•••these interfaces have been adopted by the Austin Group for inclusion
in the next version of POSIX.
| Rich Felker | 2012-09-29 | 3 | -27/+0 |
| * | fix some indention-with-spaces that crept in | Rich Felker | 2012-09-29 | 2 | -4/+4 |
| * | LFS64 alias for prlimit•••issue reported/requested by Justin Cormack
| Rich Felker | 2012-09-21 | 1 | -0/+3 |
| * | add clock_adjtime, remap_file_pages, and syncfs syscall wrappers•••patch by Justin Cormack, with slight modification
| Rich Felker | 2012-09-16 | 3 | -0/+25 |
| * | fix another ppoll issue (missing sigset_t size argument) | Rich Felker | 2012-09-10 | 1 | -1/+1 |
| * | fix ppoll with null timeout argument | Rich Felker | 2012-09-10 | 1 | -2/+2 |
| * | add linux ppoll syscall wrapper | Rich Felker | 2012-09-09 | 1 | -0/+9 |
| * | reenable sync_file_range; should no longer break on mips | Rich Felker | 2012-09-09 | 1 | -2/+2 |
| * | disable sync_file_range for now•••something is wrong with the logic for the argument layout, resulting
in compile errors on mips due to too many args to syscall... further
information on how it's supposed to work will be needed before it can
be reactivated.
| Rich Felker | 2012-09-08 | 1 | -2/+3 |
| * | add acct, accept4, setns, and dup3 syscalls (linux extensions)•••based on patch by Justin Cormack
| Rich Felker | 2012-09-08 | 3 | -0/+28 |
| * | add linux tee syscall | Rich Felker | 2012-09-08 | 1 | -0/+8 |
| * | add linux sync_file_range syscall | Rich Felker | 2012-09-08 | 1 | -0/+16 |
| * | move fallocate syscall wrapper to linux-specific syscalls dir | Rich Felker | 2012-09-08 | 1 | -0/+9 |
| * | add linux readahead syscall | Rich Felker | 2012-09-08 | 1 | -0/+8 |