freebsd-skq/lib/libc/include
Warner Losh 5ab191c42b Forward compatibility for ino64.
Add forward compatibility so that new binaries can run on old
kernels. If the new system call from ino64 isn't available on your
system, then the old one will be used and the results translated.  The
stat and statfs families of functions are fully emulated. While not
required by policy, in this case it is helpful to our users to provide
this compatibility. In this case, it allows rollback of the kernel
after installing a new userland should a problem be discovered. It
also prevents foot-shooting if a user does an install before rebooting
with the new kernel. Finally, it allows the use case where one needs
to run new binaries on an old kernel as part of an upgrade process.

The getdirentries family uses tricks that may not work on remote
filesystems. Specifically, it uses a buffer 1/4 the size requested to
get the data from he old syscall.

The code carefully uses direct syscalls for old system calls to avoid
referencing freebsd11_* symbols, which contaminate ld-elf.so.1's
export table due to its use of stat functions, which causes errno to
be incorrect in client programs due to the wrong *stat* function being
resolved in some cases.

This code should removed sometime after 12 is branched.

Tested on: 12-current binaries on a 10.3-beta kernel run and return
       consistent results. 12-current kernel and userland with
       packages from before ino64 was committed also work.

Differential Revision: https://reviews.freebsd.org/D11185
Reviewed by: kib@, emaste@
2017-06-23 18:06:20 +00:00
..
isc Update our stub resolver to final version of libbind. 2014-08-12 12:36:06 +00:00
block_abi.h Add an extra void* cast to work around a bug in FreeBSD-gcc inherited 2014-04-03 08:08:36 +00:00
compat.h Add abstime kqueue(2) timers and expand struct kevent members. 2017-06-17 00:57:26 +00:00
errlst.h Revert r274772: it is not valid on MIPS 2014-11-25 03:50:31 +00:00
fpmath.h
libc_private.h Forward compatibility for ino64. 2017-06-23 18:06:20 +00:00
namespace.h Add clock_nanosleep() 2017-03-19 00:51:12 +00:00
nscache.h
nscachedcli.h
nss_tls.h
port_after.h
port_before.h Update our stub resolver to final version of libbind. 2014-08-12 12:36:06 +00:00
reentrant.h libc: spelling fixes. 2016-04-30 01:24:24 +00:00
resolv_mt.h
spinlock.h Remove old spinlock_debug code from libc 2017-05-20 17:32:01 +00:00
un-namespace.h Add clock_nanosleep() 2017-03-19 00:51:12 +00:00