Removal of the 6.x kernel compat code from libc
Oliver Pinter
oliver.pinter at hardenedbsd.org
Fri Apr 17 11:39:11 UTC 2015
On Fri, Apr 17, 2015 at 9:59 AM, Konstantin Belousov
<kostikbel at gmail.com> wrote:
> Our libc changes in sync with the kernel, but switching of libc to use
> new interfaces means that upgrade of the userspace becomes the flag day.
> People usually add backward-compatible shims for libc to use older
> interfaces on old kernels.
>
> There is no reason to keep the compat shims after many years of the
> transition. Patch below purges the compat code for pre-r171219, which
> added pad-less versions of syscalls taking off_t, and for r177911, which
> handles the struct flock/oflock transition. This is 6.x/7.x compat,
> we absolutely not support running HEAD libc on such old kernels.
>
> diff --git a/lib/libc/amd64/sys/Makefile.inc b/lib/libc/amd64/sys/Makefile.inc
> index 8e0d614..46ea955 100644
> --- a/lib/libc/amd64/sys/Makefile.inc
> +++ b/lib/libc/amd64/sys/Makefile.inc
> @@ -11,6 +11,3 @@ MDASM= vfork.S brk.S cerror.S exect.S getcontext.S pipe.S ptrace.S \
> NOASM= break.o exit.o getlogin.o openbsd_poll.o sstk.o vfork.o yield.o
>
> PSEUDO= _getlogin.o _exit.o
> -.if ${MK_SYSCALL_COMPAT} != "no"
> -PSEUDO+= _pread.o _pwrite.o _lseek.o _mmap.o _ftruncate.o _truncate.o
> -.endif
> diff --git a/lib/libc/arm/sys/Makefile.inc b/lib/libc/arm/sys/Makefile.inc
> index f36ab71..60c2dc3 100644
> --- a/lib/libc/arm/sys/Makefile.inc
> +++ b/lib/libc/arm/sys/Makefile.inc
> @@ -8,6 +8,3 @@ MDASM= Ovfork.S brk.S cerror.S pipe.S ptrace.S sbrk.S shmat.S sigreturn.S syscal
> NOASM= break.o exit.o getlogin.o openbsd_poll.o sstk.o vfork.o yield.o
>
> PSEUDO= _exit.o _getlogin.o
> -.if ${MK_SYSCALL_COMPAT} != "no"
> -PSEUDO+= _pread.o _pwrite.o _lseek.o _mmap.o _ftruncate.o _truncate.o
> -.endif
> diff --git a/lib/libc/i386/sys/Makefile.inc b/lib/libc/i386/sys/Makefile.inc
> index b56183c..ebaa462 100644
> --- a/lib/libc/i386/sys/Makefile.inc
> +++ b/lib/libc/i386/sys/Makefile.inc
> @@ -15,9 +15,6 @@ MDASM= Ovfork.S brk.S cerror.S exect.S getcontext.S pipe.S ptrace.S \
> NOASM= break.o exit.o getlogin.o openbsd_poll.o sstk.o vfork.o yield.o
>
> PSEUDO= _getlogin.o _exit.o
> -.if ${MK_SYSCALL_COMPAT} != "no"
> -PSEUDO+= _pread.o _pwrite.o _lseek.o _mmap.o _ftruncate.o _truncate.o
> -.endif
>
> MAN+= i386_get_ioperm.2 i386_get_ldt.2 i386_vm86.2
> MAN+= i386_set_watch.3
> diff --git a/lib/libc/include/compat.h b/lib/libc/include/compat.h
> index 2b8f0de..6ab17d7 100644
> --- a/lib/libc/include/compat.h
> +++ b/lib/libc/include/compat.h
> @@ -47,9 +47,7 @@ __sym_compat(shmctl, freebsd7_shmctl, FBSD_1.0);
> #define __weak_reference(sym,alias) \
> .weak alias;.equ alias,sym
>
> -#ifndef SYSCALL_COMPAT
> __weak_reference(__sys_fcntl,__fcntl_compat)
> -#endif
>
> #undef __weak_reference
>
> diff --git a/lib/libc/include/libc_private.h b/lib/libc/include/libc_private.h
> index ceaa2a3..53be867 100644
> --- a/lib/libc/include/libc_private.h
> +++ b/lib/libc/include/libc_private.h
> @@ -276,21 +276,12 @@ extern void (*__cleanup)(void) __hidden;
>
> /*
> * Get kern.osreldate to detect ABI revisions. Explicitly
> - * ignores value of $OSVERSION and caches result. Prototypes
> - * for the wrapped "new" pad-less syscalls are here for now.
> + * ignores value of $OSVERSION and caches result.
> */
> int __getosreldate(void);
> #include <sys/_types.h>
> #include <sys/_sigset.h>
>
> -/* With pad */
> -__off_t __sys_freebsd6_lseek(int, int, __off_t, int);
> -int __sys_freebsd6_ftruncate(int, int, __off_t);
> -int __sys_freebsd6_truncate(const char *, int, __off_t);
> -__ssize_t __sys_freebsd6_pread(int, void *, __size_t, int, __off_t);
> -__ssize_t __sys_freebsd6_pwrite(int, const void *, __size_t, int, __off_t);
> -void * __sys_freebsd6_mmap(void *, __size_t, int, int, int, int, __off_t);
> -
> struct aiocb;
> struct fd_set;
> struct iovec;
> diff --git a/lib/libc/powerpc/sys/Makefile.inc b/lib/libc/powerpc/sys/Makefile.inc
> index ad98ba1..98ec888 100644
> --- a/lib/libc/powerpc/sys/Makefile.inc
> +++ b/lib/libc/powerpc/sys/Makefile.inc
> @@ -6,6 +6,3 @@ MDASM+= brk.S cerror.S exect.S pipe.S ptrace.S sbrk.S setlogin.S
> NOASM= break.o exit.o getlogin.o openbsd_poll.o sstk.o yield.o
>
> PSEUDO= _getlogin.o _exit.o
> -.if ${MK_SYSCALL_COMPAT} != "no"
> -PSEUDO+= _pread.o _pwrite.o _lseek.o _mmap.o _ftruncate.o _truncate.o
> -.endif
> diff --git a/lib/libc/powerpc64/sys/Makefile.inc b/lib/libc/powerpc64/sys/Makefile.inc
> index ad98ba1..98ec888 100644
> --- a/lib/libc/powerpc64/sys/Makefile.inc
> +++ b/lib/libc/powerpc64/sys/Makefile.inc
> @@ -6,6 +6,3 @@ MDASM+= brk.S cerror.S exect.S pipe.S ptrace.S sbrk.S setlogin.S
> NOASM= break.o exit.o getlogin.o openbsd_poll.o sstk.o yield.o
>
> PSEUDO= _getlogin.o _exit.o
> -.if ${MK_SYSCALL_COMPAT} != "no"
> -PSEUDO+= _pread.o _pwrite.o _lseek.o _mmap.o _ftruncate.o _truncate.o
> -.endif
> diff --git a/lib/libc/sparc64/sys/Makefile.inc b/lib/libc/sparc64/sys/Makefile.inc
> index 726c0c9..a62aac2 100644
> --- a/lib/libc/sparc64/sys/Makefile.inc
> +++ b/lib/libc/sparc64/sys/Makefile.inc
> @@ -18,6 +18,3 @@ MDASM+= brk.S cerror.S exect.S pipe.S ptrace.S sbrk.S setlogin.S sigaction1.S
> NOASM= break.o exit.o getlogin.o openbsd_poll.o sstk.o yield.o
>
> PSEUDO= _getlogin.o _exit.o
> -.if ${MK_SYSCALL_COMPAT} != "no"
> -PSEUDO+= _pread.o _pwrite.o _lseek.o _mmap.o _ftruncate.o _truncate.o
> -.endif
> diff --git a/lib/libc/sys/Makefile.inc b/lib/libc/sys/Makefile.inc
> index 7745b2a..b63aa89 100644
> --- a/lib/libc/sys/Makefile.inc
> +++ b/lib/libc/sys/Makefile.inc
> @@ -26,18 +26,6 @@ SRCS+= \
> __error.c \
> interposing_table.c
>
> -.if ${MK_SYSCALL_COMPAT} != "no"
> -SYSCALL_COMPAT_SRCS= \
> - ftruncate.c \
> - lseek.c \
> - mmap.c \
> - pread.c \
> - pwrite.c \
> - truncate.c
> -SRCS+= ${SYSCALL_COMPAT_SRCS}
> -NOASM+= ${SYSCALL_COMPAT_SRCS:S/.c/.o/}
> -.endif
> -
> SRCS+= futimens.c utimensat.c
> NOASM+= futimens.o utimensat.o
> PSEUDO+= _futimens.o _utimensat.o
> diff --git a/lib/libc/sys/fcntl.c b/lib/libc/sys/fcntl.c
> index 7af617e..dfc722a 100644
> --- a/lib/libc/sys/fcntl.c
> +++ b/lib/libc/sys/fcntl.c
> @@ -3,6 +3,12 @@
> * Authors: Doug Rabson <dfr at rabson.org>
> * Developed with Red Inc: Alfred Perlstein <alfred at freebsd.org>
> *
> + * Copyright (c) 2014, 2015 The FreeBSD Foundation.
> + * All rights reserved.
> + *
> + * Portions of this software were developed by Konstantin Belousov
> + * under sponsorship from the FreeBSD Foundation.
> + *
> * Redistribution and use in source and binary forms, with or without
> * modification, are permitted provided that the following conditions
> * are met:
> @@ -48,59 +54,3 @@ fcntl(int fd, int cmd, ...)
> return (((int (*)(int, int, ...))
> __libc_interposing[INTERPOS_fcntl])(fd, cmd, arg));
> }
> -
> -#ifdef SYSCALL_COMPAT
> -__weak_reference(__fcntl_compat, __fcntl);
> -
> -int
> -__fcntl_compat(int fd, int cmd, ...)
> -{
> - va_list args;
> - long arg;
> - struct __oflock ofl;
> - struct flock *flp;
> - int res;
> -
> - va_start(args, cmd);
> - arg = va_arg(args, long);
> - va_end(args);
> -
> - if (__getosreldate() >= 800028) {
> - return (__sys_fcntl(fd, cmd, arg));
> - } else {
> - if (cmd == F_GETLK || cmd == F_SETLK || cmd == F_SETLKW) {
> - /*
> - * Convert new-style struct flock (which
> - * includes l_sysid) to old-style.
> - */
> - flp = (struct flock *) (uintptr_t) arg;
> - ofl.l_start = flp->l_start;
> - ofl.l_len = flp->l_len;
> - ofl.l_pid = flp->l_pid;
> - ofl.l_type = flp->l_type;
> - ofl.l_whence = flp->l_whence;
> -
> - switch (cmd) {
> - case F_GETLK:
> - res = __sys_fcntl(fd, F_OGETLK, &ofl);
> - if (res >= 0) {
> - flp->l_start = ofl.l_start;
> - flp->l_len = ofl.l_len;
> - flp->l_pid = ofl.l_pid;
> - flp->l_type = ofl.l_type;
> - flp->l_whence = ofl.l_whence;
> - flp->l_sysid = 0;
> - }
> - return (res);
> -
> - case F_SETLK:
> - return (__sys_fcntl(fd, F_OSETLK, &ofl));
> -
> - case F_SETLKW:
> - return (__sys_fcntl(fd, F_OSETLKW, &ofl));
> - }
> - }
> - return (__sys_fcntl(fd, cmd, arg));
> - }
> -}
> -#endif
> diff --git a/lib/libc/sys/ftruncate.c b/lib/libc/sys/ftruncate.c
> deleted file mode 100644
> index 78b5a36..0000000
> --- a/lib/libc/sys/ftruncate.c
> +++ /dev/null
> @@ -1,55 +0,0 @@
> -/*
> - * Copyright (c) 1992, 1993
> - * The Regents of the University of California. All rights reserved.
> - *
> - * Redistribution and use in source and binary forms, with or without
> - * modification, are permitted provided that the following conditions
> - * are met:
> - * 1. Redistributions of source code must retain the above copyright
> - * notice, this list of conditions and the following disclaimer.
> - * 2. Redistributions in binary form must reproduce the above copyright
> - * notice, this list of conditions and the following disclaimer in the
> - * documentation and/or other materials provided with the distribution.
> - * 4. Neither the name of the University nor the names of its contributors
> - * may be used to endorse or promote products derived from this software
> - * without specific prior written permission.
> - *
> - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
> - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
> - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> - * SUCH DAMAGE.
> - */
> -
> -#if defined(LIBC_SCCS) && !defined(lint)
> -static char sccsid[] = "@(#)ftruncate.c 8.1 (Berkeley) 6/17/93";
> -#endif /* LIBC_SCCS and not lint */
> -#include <sys/cdefs.h>
> -__FBSDID("$FreeBSD$");
> -
> -#include <sys/types.h>
> -#include <sys/syscall.h>
> -#include <unistd.h>
> -#include "libc_private.h"
> -
> -/*
> - * This function provides 64-bit offset padding that
> - * is not supplied by GCC 1.X but is supplied by GCC 2.X.
> - */
> -int
> -ftruncate(fd, length)
> - int fd;
> - off_t length;
> -{
> -
> - if (__getosreldate() >= 700051)
> - return(__sys_ftruncate(fd, length));
> - else
> - return(__sys_freebsd6_ftruncate(fd, 0, length));
> -}
> diff --git a/lib/libc/sys/interposing_table.c b/lib/libc/sys/interposing_table.c
> index 4290bc6..0ffc426 100644
> --- a/lib/libc/sys/interposing_table.c
> +++ b/lib/libc/sys/interposing_table.c
> @@ -44,7 +44,7 @@ interpos_func_t __libc_interposing[INTERPOS_MAX] = {
> SLOT(aio_suspend, __sys_aio_suspend),
> SLOT(close, __sys_close),
> SLOT(connect, __sys_connect),
> - SLOT(fcntl, __fcntl_compat),
> + SLOT(fcntl, __sys_fcntl),
> SLOT(fsync, __sys_fsync),
> SLOT(fork, __sys_fork),
> SLOT(msync, __sys_msync),
> diff --git a/lib/libc/sys/lseek.c b/lib/libc/sys/lseek.c
> deleted file mode 100644
> index a086be1..0000000
> --- a/lib/libc/sys/lseek.c
> +++ /dev/null
> @@ -1,56 +0,0 @@
> -/*
> - * Copyright (c) 1992, 1993
> - * The Regents of the University of California. All rights reserved.
> - *
> - * Redistribution and use in source and binary forms, with or without
> - * modification, are permitted provided that the following conditions
> - * are met:
> - * 1. Redistributions of source code must retain the above copyright
> - * notice, this list of conditions and the following disclaimer.
> - * 2. Redistributions in binary form must reproduce the above copyright
> - * notice, this list of conditions and the following disclaimer in the
> - * documentation and/or other materials provided with the distribution.
> - * 4. Neither the name of the University nor the names of its contributors
> - * may be used to endorse or promote products derived from this software
> - * without specific prior written permission.
> - *
> - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
> - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
> - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> - * SUCH DAMAGE.
> - */
> -
> -#if defined(LIBC_SCCS) && !defined(lint)
> -static char sccsid[] = "@(#)lseek.c 8.1 (Berkeley) 6/17/93";
> -#endif /* LIBC_SCCS and not lint */
> -#include <sys/cdefs.h>
> -__FBSDID("$FreeBSD$");
> -
> -#include <sys/types.h>
> -#include <sys/syscall.h>
> -#include <unistd.h>
> -#include "libc_private.h"
> -
> -/*
> - * This function provides 64-bit offset padding that
> - * is not supplied by GCC 1.X but is supplied by GCC 2.X.
> - */
> -off_t
> -lseek(fd, offset, whence)
> - int fd;
> - off_t offset;
> - int whence;
> -{
> -
> - if (__getosreldate() >= 700051)
> - return(__sys_lseek(fd, offset, whence));
> - else
> - return(__sys_freebsd6_lseek(fd, 0, offset, whence));
> -}
> diff --git a/lib/libc/sys/mmap.c b/lib/libc/sys/mmap.c
> deleted file mode 100644
> index 0fa03ba..0000000
> --- a/lib/libc/sys/mmap.c
> +++ /dev/null
> @@ -1,56 +0,0 @@
> -/*
> - * Copyright (c) 1992, 1993
> - * The Regents of the University of California. All rights reserved.
> - *
> - * Redistribution and use in source and binary forms, with or without
> - * modification, are permitted provided that the following conditions
> - * are met:
> - * 1. Redistributions of source code must retain the above copyright
> - * notice, this list of conditions and the following disclaimer.
> - * 2. Redistributions in binary form must reproduce the above copyright
> - * notice, this list of conditions and the following disclaimer in the
> - * documentation and/or other materials provided with the distribution.
> - * 4. Neither the name of the University nor the names of its contributors
> - * may be used to endorse or promote products derived from this software
> - * without specific prior written permission.
> - *
> - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
> - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
> - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> - * SUCH DAMAGE.
> - */
> -
> -#if defined(LIBC_SCCS) && !defined(lint)
> -static char sccsid[] = "@(#)mmap.c 8.1 (Berkeley) 6/17/93";
> -#endif /* LIBC_SCCS and not lint */
> -#include <sys/cdefs.h>
> -__FBSDID("$FreeBSD$");
> -
> -#include <sys/types.h>
> -#include <sys/mman.h>
> -#include <sys/syscall.h>
> -#include <unistd.h>
> -#include "libc_private.h"
> -
> -/*
> - * This function provides 64-bit offset padding that
> - * is not supplied by GCC 1.X but is supplied by GCC 2.X.
> - */
> -void *
> -mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset)
> -{
> -
> - if (__getosreldate() >= 700051) {
> - return (__sys_mmap(addr, len, prot, flags, fd, offset));
> - } else {
> - return (__sys_freebsd6_mmap(addr, len, prot, flags, fd, 0,
> - offset));
> - }
> -}
> diff --git a/lib/libc/sys/pread.c b/lib/libc/sys/pread.c
> deleted file mode 100644
> index 7566566..0000000
> --- a/lib/libc/sys/pread.c
> +++ /dev/null
> @@ -1,57 +0,0 @@
> -/*
> - * Copyright (c) 1992, 1993
> - * The Regents of the University of California. All rights reserved.
> - *
> - * Redistribution and use in source and binary forms, with or without
> - * modification, are permitted provided that the following conditions
> - * are met:
> - * 1. Redistributions of source code must retain the above copyright
> - * notice, this list of conditions and the following disclaimer.
> - * 2. Redistributions in binary form must reproduce the above copyright
> - * notice, this list of conditions and the following disclaimer in the
> - * documentation and/or other materials provided with the distribution.
> - * 4. Neither the name of the University nor the names of its contributors
> - * may be used to endorse or promote products derived from this software
> - * without specific prior written permission.
> - *
> - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
> - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
> - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> - * SUCH DAMAGE.
> - */
> -
> -#if defined(LIBC_SCCS) && !defined(lint)
> -static char sccsid[] = "@(#)mmap.c 8.1 (Berkeley) 6/17/93";
> -#endif /* LIBC_SCCS and not lint */
> -#include <sys/cdefs.h>
> -__FBSDID("$FreeBSD$");
> -
> -#include <sys/types.h>
> -#include <sys/syscall.h>
> -#include <unistd.h>
> -#include "libc_private.h"
> -
> -/*
> - * This function provides 64-bit offset padding that
> - * is not supplied by GCC 1.X but is supplied by GCC 2.X.
> - */
> -ssize_t
> -pread(fd, buf, nbyte, offset)
> - int fd;
> - void *buf;
> - size_t nbyte;
> - off_t offset;
> -{
> -
> - if (__getosreldate() >= 700051)
> - return (__sys_pread(fd, buf, nbyte, offset));
> - else
> - return (__sys_freebsd6_pread(fd, buf, nbyte, 0, offset));
> -}
> diff --git a/lib/libc/sys/pwrite.c b/lib/libc/sys/pwrite.c
> deleted file mode 100644
> index d17ed29..0000000
> --- a/lib/libc/sys/pwrite.c
> +++ /dev/null
> @@ -1,56 +0,0 @@
> -/*
> - * Copyright (c) 1992, 1993
> - * The Regents of the University of California. All rights reserved.
> - *
> - * Redistribution and use in source and binary forms, with or without
> - * modification, are permitted provided that the following conditions
> - * are met:
> - * 1. Redistributions of source code must retain the above copyright
> - * notice, this list of conditions and the following disclaimer.
> - * 2. Redistributions in binary form must reproduce the above copyright
> - * notice, this list of conditions and the following disclaimer in the
> - * documentation and/or other materials provided with the distribution.
> - * 4. Neither the name of the University nor the names of its contributors
> - * may be used to endorse or promote products derived from this software
> - * without specific prior written permission.
> - *
> - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
> - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
> - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> - * SUCH DAMAGE.
> - */
> -
> -#if defined(LIBC_SCCS) && !defined(lint)
> -static char sccsid[] = "@(#)mmap.c 8.1 (Berkeley) 6/17/93";
> -#endif /* LIBC_SCCS and not lint */
> -#include <sys/cdefs.h>
> -__FBSDID("$FreeBSD$");
> -
> -#include <sys/types.h>
> -#include <sys/syscall.h>
> -#include <unistd.h>
> -#include "libc_private.h"
> -
> -/*
> - * This function provides 64-bit offset padding that
> - * is not supplied by GCC 1.X but is supplied by GCC 2.X.
> - */
> -ssize_t
> -pwrite(fd, buf, nbyte, offset)
> - int fd;
> - const void *buf;
> - size_t nbyte;
> - off_t offset;
> -{
> - if (__getosreldate() >= 700051)
> - return (__sys_pwrite(fd, buf, nbyte, offset));
> - else
> - return (__sys_freebsd6_pwrite(fd, buf, nbyte, 0, offset));
> -}
> diff --git a/lib/libc/sys/truncate.c b/lib/libc/sys/truncate.c
> deleted file mode 100644
> index 375c9d9..0000000
> --- a/lib/libc/sys/truncate.c
> +++ /dev/null
> @@ -1,55 +0,0 @@
> -/*
> - * Copyright (c) 1992, 1993
> - * The Regents of the University of California. All rights reserved.
> - *
> - * Redistribution and use in source and binary forms, with or without
> - * modification, are permitted provided that the following conditions
> - * are met:
> - * 1. Redistributions of source code must retain the above copyright
> - * notice, this list of conditions and the following disclaimer.
> - * 2. Redistributions in binary form must reproduce the above copyright
> - * notice, this list of conditions and the following disclaimer in the
> - * documentation and/or other materials provided with the distribution.
> - * 4. Neither the name of the University nor the names of its contributors
> - * may be used to endorse or promote products derived from this software
> - * without specific prior written permission.
> - *
> - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
> - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
> - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> - * SUCH DAMAGE.
> - */
> -
> -#if defined(LIBC_SCCS) && !defined(lint)
> -static char sccsid[] = "@(#)truncate.c 8.1 (Berkeley) 6/17/93";
> -#endif /* LIBC_SCCS and not lint */
> -#include <sys/cdefs.h>
> -__FBSDID("$FreeBSD$");
> -
> -#include <sys/types.h>
> -#include <sys/syscall.h>
> -#include <unistd.h>
> -#include "libc_private.h"
> -
> -/*
> - * This function provides 64-bit offset padding that
> - * is not supplied by GCC 1.X but is supplied by GCC 2.X.
> - */
> -int
> -truncate(path, length)
> - const char *path;
> - off_t length;
> -{
> -
> - if (__getosreldate() >= 700051)
> - return(__sys_truncate(path, length));
> - else
> - return(__sys_freebsd6_truncate(path, 0, length));
> -}
> diff --git a/lib/libthr/thread/thr_syscalls.c b/lib/libthr/thread/thr_syscalls.c
> index e71bf4a..a3c6151 100644
> --- a/lib/libthr/thread/thr_syscalls.c
> +++ b/lib/libthr/thread/thr_syscalls.c
> @@ -95,10 +95,6 @@ __FBSDID("$FreeBSD$");
> #include "libc_private.h"
> #include "thr_private.h"
>
> -#ifdef SYSCALL_COMPAT
> -extern int __fcntl_compat(int, int, ...);
> -#endif
> -
> static int
> __thr_accept(int s, struct sockaddr *addr, socklen_t *addrlen)
> {
> @@ -203,18 +199,10 @@ __thr_fcntl(int fd, int cmd, ...)
> va_start(ap, cmd);
> if (cmd == F_OSETLKW || cmd == F_SETLKW) {
> _thr_cancel_enter(curthread);
> -#ifdef SYSCALL_COMPAT
> - ret = __fcntl_compat(fd, cmd, va_arg(ap, void *));
> -#else
> ret = __sys_fcntl(fd, cmd, va_arg(ap, void *));
> -#endif
> _thr_cancel_leave(curthread, ret == -1);
> } else {
> -#ifdef SYSCALL_COMPAT
> - ret = __fcntl_compat(fd, cmd, va_arg(ap, void *));
> -#else
> ret = __sys_fcntl(fd, cmd, va_arg(ap, void *));
> -#endif
> }
> va_end(ap);
>
> diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c
> index 8fc1db9..213801a 100644
> --- a/sys/kern/sys_generic.c
> +++ b/sys/kern/sys_generic.c
> @@ -219,6 +219,7 @@ sys_pread(td, uap)
> return(error);
> }
>
> +#if defined(COMPAT_FREEBSD6)
> int
> freebsd6_pread(td, uap)
> struct thread *td;
> @@ -232,6 +233,7 @@ freebsd6_pread(td, uap)
> oargs.offset = uap->offset;
> return (sys_pread(td, &oargs));
> }
> +#endif
>
> /*
> * Scatter read system call.
> @@ -430,6 +432,7 @@ sys_pwrite(td, uap)
> return(error);
> }
>
> +#if defined(COMPAT_FREEBSD6)
> int
> freebsd6_pwrite(td, uap)
> struct thread *td;
> @@ -443,6 +446,7 @@ freebsd6_pwrite(td, uap)
> oargs.offset = uap->offset;
> return (sys_pwrite(td, &oargs));
> }
> +#endif
>
> /*
> * Gather write system call.
> diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master
> index 09d38d4..9873868 100644
> --- a/sys/kern/syscalls.master
> +++ b/sys/kern/syscalls.master
> @@ -342,9 +342,9 @@
> int a4); }
> ; XXX should be { int shmsys(int which, ...); }
> 172 AUE_NULL UNIMPL nosys
> -173 AUE_PREAD STD { ssize_t freebsd6_pread(int fd, void *buf, \
> +173 AUE_PREAD COMPAT6 { ssize_t pread(int fd, void *buf, \
> size_t nbyte, int pad, off_t offset); }
> -174 AUE_PWRITE STD { ssize_t freebsd6_pwrite(int fd, \
> +174 AUE_PWRITE COMPAT6 { ssize_t pwrite(int fd, \
> const void *buf, \
> size_t nbyte, int pad, off_t offset); }
> 175 AUE_NULL STD { int setfib(int fibnum); }
> @@ -376,16 +376,16 @@
> __setrlimit_args int
> 196 AUE_GETDIRENTRIES STD { int getdirentries(int fd, char *buf, \
> u_int count, long *basep); }
> -197 AUE_MMAP STD { caddr_t freebsd6_mmap(caddr_t addr, \
> +197 AUE_MMAP COMPAT6 { caddr_t mmap(caddr_t addr, \
> size_t len, int prot, int flags, int fd, \
> int pad, off_t pos); }
> 198 AUE_NULL NOPROTO { int nosys(void); } __syscall \
> __syscall_args int
> -199 AUE_LSEEK STD { off_t freebsd6_lseek(int fd, int pad, \
> +199 AUE_LSEEK COMPAT6 { off_t lseek(int fd, int pad, \
> off_t offset, int whence); }
> -200 AUE_TRUNCATE STD { int freebsd6_truncate(char *path, int pad, \
> +200 AUE_TRUNCATE COMPAT6 { int truncate(char *path, int pad, \
> off_t length); }
> -201 AUE_FTRUNCATE STD { int freebsd6_ftruncate(int fd, int pad, \
> +201 AUE_FTRUNCATE COMPAT6 { int ftruncate(int fd, int pad, \
> off_t length); }
> 202 AUE_SYSCTL STD { int __sysctl(int *name, u_int namelen, \
> void *old, size_t *oldlenp, void *new, \
> diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
> index 8c8ca31..c5c479d 100644
> --- a/sys/kern/vfs_syscalls.c
> +++ b/sys/kern/vfs_syscalls.c
> @@ -1933,6 +1933,7 @@ olseek(td, uap)
> }
> #endif /* COMPAT_43 */
>
> +#if defined(COMPAT_FREEBSD6)
> /* Version with the 'pad' argument */
> int
> freebsd6_lseek(td, uap)
> @@ -1946,6 +1947,7 @@ freebsd6_lseek(td, uap)
> ouap.whence = uap->whence;
> return (sys_lseek(td, &ouap));
> }
> +#endif
>
> /*
> * Check access permissions using passed credentials.
> @@ -3423,6 +3425,7 @@ otruncate(td, uap)
> }
> #endif /* COMPAT_43 */
>
> +#if defined(COMPAT_FREEBSD6)
> /* Versions with the pad argument */
> int
> freebsd6_truncate(struct thread *td, struct freebsd6_truncate_args *uap)
> @@ -3443,6 +3446,7 @@ freebsd6_ftruncate(struct thread *td, struct freebsd6_ftruncate_args *uap)
> ouap.length = uap->length;
> return (sys_ftruncate(td, &ouap));
> }
> +#endif
>
> /*
> * Sync an open file.
> diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
> index a9ff248..02634d6 100644
> --- a/sys/vm/vm_mmap.c
> +++ b/sys/vm/vm_mmap.c
> @@ -462,6 +462,7 @@ done:
> return (error);
> }
>
> +#if defined(COMPAT_FREEBSD6)
> int
> freebsd6_mmap(struct thread *td, struct freebsd6_mmap_args *uap)
> {
> @@ -475,6 +476,7 @@ freebsd6_mmap(struct thread *td, struct freebsd6_mmap_args *uap)
> oargs.pos = uap->pos;
> return (sys_mmap(td, &oargs));
> }
> +#endif
>
> #ifdef COMPAT_43
> #ifndef _SYS_SYSPROTO_H_
Is there any chanche to get ride of the very old (FreeBSD 2.x) compat
hacks like these:
https://github.com/freebsd/freebsd/blob/master/lib/libc/gen/setproctitle.c#L40 ?
I like the idea, to purge out the old stuffs/hacks from the FreeBSD.
> _______________________________________________
> freebsd-arch at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arch
> To unsubscribe, send any mail to "freebsd-arch-unsubscribe at freebsd.org"
More information about the freebsd-arch
mailing list