Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Apr 2015 13:39:04 +0200
From:      Oliver Pinter <oliver.pinter@hardenedbsd.org>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        "freebsd-arch@freebsd.org" <arch@freebsd.org>, peter@freebsd.org
Subject:   Re: Removal of the 6.x kernel compat code from libc
Message-ID:  <CAPQ4ffsrMNLBChrUc5wBrY%2BnSwnfZhBqSp%2BhES0tpLUJi-bXow@mail.gmail.com>
In-Reply-To: <20150417075942.GI2390@kib.kiev.ua>
References:  <20150417075942.GI2390@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Apr 17, 2015 at 9:59 AM, Konstantin Belousov
<kostikbel@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@rabson.org>
>   * Developed with Red Inc: Alfred Perlstein <alfred@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@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arch
> To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPQ4ffsrMNLBChrUc5wBrY%2BnSwnfZhBqSp%2BhES0tpLUJi-bXow>