From c66452515d7b4ebf6b0633735397db9a392a839e Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 28 Nov 1996 04:16:09 +0000 Subject: update from main archive 961127 Thu Nov 28 03:11:11 1996 Ulrich Drepper * libio/fileops.c: Update from latest libg++. * sysdeps/unix/sysv/linux/init-first.c: Reformat copyright. * sysdeps/stub/libc-lock.h: Add __libc_lock_init_recursive. * libio/genops.c (_IO_init): Use __libc_lock_init_recursive instead of __libc_lock_init for streams. Reported by a sun . * sysdepsunix/sysv/linux/i386/brk.c: Reformat copyright. * sysdeps/generic/errno-loc.c: New file. Generic definition of __errno_location function. * sysdeps/unix/sysv/linux/i386/sysdep.S: Remove definition of __errno_location. * sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/Makefile [$(subdir)=csu]: Add errno-loc to sysdep-routines. * sysdeps/unix/sysv/linux/configure: Add test for linuxthreads and crypt add-on and warn if not available. Wed Nov 27 23:09:37 1996 Ulrich Drepper * po/ko.po: Update from Bang Jun-Young . * sysdeps/unix/sysv/linux/syscalls.list: Remove _llseek. * sysdeps/unix/sysv/linux/Makefile [$(subdir)=misc] (routines): Add llseek. * sysdeps/unix/sysv/linux/llseek.c: New file. Uses syscall. * sysdeps/unix/sysv/linux/i386/syscalls.list: Add __sys_llseek. * sysdeps/unix/sysv/linux/m68k/syscalls.list: Add __sys_llseek. Reported by HJ Lu . * sysdeps/unix/sysv/linux/alpha/syscalls.list: Add llseek. * sysdeps/unix/sysv/linux/alpha/llseek.S: Remove. Generic syscall is enough. Patch by Richard Henderson . * sysdeps/unix/sysv/linux/alpha/sys/io.h: Add prototypes for pciconfig_read and pciconfig_write. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Add new syscalls pciconfig_read and pciconfig_write. * login/getutent_r.c: Fix several bugs in last change. --- sysdeps/alpha/elf/Makefile | 4 ++++ sysdeps/generic/errno-loc.c | 28 +++++++++++++++++++++++ sysdeps/stub/libc-lock.h | 3 +++ sysdeps/unix/sysv/linux/Makefile | 4 +++- sysdeps/unix/sysv/linux/alpha/sys/io.h | 13 +++++++++++ sysdeps/unix/sysv/linux/alpha/syscalls.list | 5 +++++ sysdeps/unix/sysv/linux/configure | 22 ++++++++++++++++++ sysdeps/unix/sysv/linux/i386/brk.c | 34 ++++++++++++++-------------- sysdeps/unix/sysv/linux/i386/syscalls.list | 1 + sysdeps/unix/sysv/linux/i386/sysdep.S | 17 -------------- sysdeps/unix/sysv/linux/init-first.c | 34 ++++++++++++++-------------- sysdeps/unix/sysv/linux/llseek.c | 35 +++++++++++++++++++++++++++++ sysdeps/unix/sysv/linux/m68k/sysdep.S | 13 ----------- sysdeps/unix/sysv/linux/syscalls.list | 1 - 14 files changed, 148 insertions(+), 66 deletions(-) create mode 100644 sysdeps/alpha/elf/Makefile create mode 100644 sysdeps/generic/errno-loc.c create mode 100644 sysdeps/unix/sysv/linux/llseek.c (limited to 'sysdeps') diff --git a/sysdeps/alpha/elf/Makefile b/sysdeps/alpha/elf/Makefile new file mode 100644 index 0000000000..db849bd9bf --- /dev/null +++ b/sysdeps/alpha/elf/Makefile @@ -0,0 +1,4 @@ +ifeq ($(subdir), csu) +extra-objs += crtbegin.o crtend.o +install-lib += crtbegin.o crtend.o +endif diff --git a/sysdeps/generic/errno-loc.c b/sysdeps/generic/errno-loc.c new file mode 100644 index 0000000000..46b9f173d1 --- /dev/null +++ b/sysdeps/generic/errno-loc.c @@ -0,0 +1,28 @@ +/* MT support function to get address of `errno' variable, non-threaded + version. + Copyright (C) 1996 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +extern int errno; + +int * +weak_const_function +__errno_location (void) +{ + return &errno; +} diff --git a/sysdeps/stub/libc-lock.h b/sysdeps/stub/libc-lock.h index bb89de25b5..158a221718 100644 --- a/sysdeps/stub/libc-lock.h +++ b/sysdeps/stub/libc-lock.h @@ -37,6 +37,9 @@ state. */ #define __libc_lock_init(NAME) +/* Same as last but this time we initialize a recursive mutex. */ +#define __libc_lock_init_recursive(NAME) + /* Finalize the named lock variable, which must be locked. It cannot be used again until __libc_lock_init is called again on it. This must be called on a lock variable before the containing storage is reused. */ diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index 69c207a575..a200064a1c 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -1,9 +1,11 @@ ifeq ($(subdir), csu) CFLAGS-init-first.c = -fkeep-inline-functions + +sysdep_routines += errno-loc endif ifeq ($(subdir), misc) -sysdep_routines += sysctl clone +sysdep_routines += sysctl clone llseek sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h sys/mtio.h \ sys/module.h sys/io.h sys/klog.h sys/kdaemon.h \ diff --git a/sysdeps/unix/sysv/linux/alpha/sys/io.h b/sysdeps/unix/sysv/linux/alpha/sys/io.h index c4aa2c776c..208e793119 100644 --- a/sysdeps/unix/sysv/linux/alpha/sys/io.h +++ b/sysdeps/unix/sysv/linux/alpha/sys/io.h @@ -54,6 +54,19 @@ extern unsigned long bus_base_sparse __P ((void)) __attribute__ ((const)); extern int _hae_shift __P ((void)) __attribute__ ((const)); extern int hae_shift __P ((void)) __attribute__ ((const)); +/* Access PCI space protected from machine checks. */ +extern int pciconfig_read __P ((unsigned long int __bus, + unsigned long int __dfn, + unsigned long int __off, + unsigned long int __len, + unsigned char *__buf)); + +extern int pciconfig_write __P ((unsigned long int __bus, + unsigned long int __dfn, + unsigned long int __off, + unsigned long int __len, + unsigned char *__buf)); + __END_DECLS #endif /* _SYS_IO_H */ diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list index 4a52bf2818..49cc697489 100644 --- a/sysdeps/unix/sysv/linux/alpha/syscalls.list +++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list @@ -21,6 +21,7 @@ getdents - getdents 3 __getdirentries getdirentries getpeername - getpeername 3 __getpeername getpeername getpriority - getpriority 2 __getpriority getpriority mmap - mmap 6 __mmap mmap +llseek EXTRA lseek 3 llseek # these are actually common with the x86: fstatfs - fstatfs 2 __fstatfs fstatfs @@ -46,3 +47,7 @@ setsockopt - setsockopt 5 __setsockopt setsockopt shutdown - shutdown 2 __shutdown shutdown socketpair - socketpair 4 __socketpair socketpair sysctl - _sysctl 6 sysctl + +# access pci space protected from machine checks: +pciconfig_read EXTRA pciconfig_read 5 pciconfig_read +pciconfig_write EXTRA pciconfig_write 5 pciconfig_write diff --git a/sysdeps/unix/sysv/linux/configure b/sysdeps/unix/sysv/linux/configure index 2592c6c8c8..ef7590d367 100644 --- a/sysdeps/unix/sysv/linux/configure +++ b/sysdeps/unix/sysv/linux/configure @@ -52,3 +52,25 @@ if test "$prefix" = "/usr"; then libc_cv_slibdir="/lib" libc_cv_sysconfdir="/etc" fi + +# Under Linux the LinuxThreads and crypt add-on should be available. +case $add_ons in + # Both are available. Good. + *linuxthreads*des-crypt* | *des-crypt*linuxthreads*) + ;; + *linuxthreads*) + echo "\ +*** WARNING: +*** Are you sure you do not want to use the \`crypt' add-on?" + ;; + *des-crypt*) + echo "\ +*** WARNING: +*** Are you sure you do not want to use the \`LinuxThread' add-on?" + ;; + *) + echo "\ +*** WARNING: Are you sure you do not want to use the \`LinuxThreads' +*** and \`crypt' add-ons?" + ;; +esac diff --git a/sysdeps/unix/sysv/linux/i386/brk.c b/sysdeps/unix/sysv/linux/i386/brk.c index d11c3c40d9..5bb9d59d5c 100644 --- a/sysdeps/unix/sysv/linux/i386/brk.c +++ b/sysdeps/unix/sysv/linux/i386/brk.c @@ -1,21 +1,21 @@ /* brk system call for Linux/i386. -Copyright (C) 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + Copyright (C) 1995, 1996 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ #include #include diff --git a/sysdeps/unix/sysv/linux/i386/syscalls.list b/sysdeps/unix/sysv/linux/i386/syscalls.list index 63dd0bd8e2..d95a120aa0 100644 --- a/sysdeps/unix/sysv/linux/i386/syscalls.list +++ b/sysdeps/unix/sysv/linux/i386/syscalls.list @@ -1,3 +1,4 @@ # File name Caller Syscall name # args Strong name Weak names +s_llseek llseek _llseek 5 __sys_llseek vm86 - vm86 1 __vm86 vm86 diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.S b/sysdeps/unix/sysv/linux/i386/sysdep.S index d676004084..4b86d1dfe7 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.S +++ b/sysdeps/unix/sysv/linux/i386/sysdep.S @@ -52,20 +52,3 @@ ENTRY (__syscall_error) #include #endif /* !PIC */ - - - .weak __errno_location - .type __errno_location,@function - .align 16 -__errno_location: - CALL_MCOUNT -#ifdef PIC - call .L2 -.L2: popl %ecx - addl $_GLOBAL_OFFSET_TABLE_+[.-.L2], %ecx - movl errno@GOT(%ecx), %eax -#else - movl $errno, %eax -#endif - ret -END (__errno_location) diff --git a/sysdeps/unix/sysv/linux/init-first.c b/sysdeps/unix/sysv/linux/init-first.c index 6e1d71204c..7c5b510956 100644 --- a/sysdeps/unix/sysv/linux/init-first.c +++ b/sysdeps/unix/sysv/linux/init-first.c @@ -1,21 +1,21 @@ /* Initialization code run first thing by the ELF startup code. Linux version. -Copyright (C) 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + Copyright (C) 1995, 1996 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ #include #include diff --git a/sysdeps/unix/sysv/linux/llseek.c b/sysdeps/unix/sysv/linux/llseek.c new file mode 100644 index 0000000000..a1284db6be --- /dev/null +++ b/sysdeps/unix/sysv/linux/llseek.c @@ -0,0 +1,35 @@ +/* Long-long seek operation. + Copyright (C) 1996 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include + + +extern int __sys_llseek (int fd, off_t offset_hi, off_t offset_lo, + loff_t *result, int whence); + +/* Seek to OFFSET on FD, starting from WHENCE. */ +loff_t +llseek (int fd, loff_t offset, int whence) +{ + loff_t result; + + return (loff_t) (__sys_llseek (fd, (off_t) (offset >> 32), + (off_t) (offset & 0xffffffff), + &result, whence) ?: result); +} diff --git a/sysdeps/unix/sysv/linux/m68k/sysdep.S b/sysdeps/unix/sysv/linux/m68k/sysdep.S index 95e63542ee..5533be2c1b 100644 --- a/sysdeps/unix/sysv/linux/m68k/sysdep.S +++ b/sysdeps/unix/sysv/linux/m68k/sysdep.S @@ -61,16 +61,3 @@ __syscall_error: rts END (__syscall_error) #endif /* PIC */ - - .weak __errno_location - .type __errno_location,@function - .align 4 -__errno_location: - CALL_MCOUNT -#ifdef PIC - move.l (%pc, errno@GOTPC), %a0 -#else - lea errno, %a0 -#endif - rts -END (__errno_location) diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 01ca1bc8bb..07a3c1db4b 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -20,7 +20,6 @@ ioperm - ioperm 3 ioperm iopl - iopl 1 iopl ipc msgget ipc 5 __ipc klogctl EXTRA syslog 3 klogctl -llseek EXTRA _llseek 5 _llseek llseek mlock EXTRA mlock 2 __mlock mlock mlockall EXTRA mlockall 1 __mlockall mlockall mount EXTRA mount 5 __mount mount -- cgit v1.2.3