diff options
author | Ulrich Drepper <drepper@redhat.com> | 1996-11-28 04:16:09 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1996-11-28 04:16:09 +0000 |
commit | c66452515d7b4ebf6b0633735397db9a392a839e (patch) | |
tree | 7cf4dc82d4d675e61c61cf696f7d1007d1c467aa /sysdeps | |
parent | 8a52392237c44cbbd1ffc62b164230e1159dfb76 (diff) | |
download | glibc-c66452515d7b4ebf6b0633735397db9a392a839e.zip glibc-c66452515d7b4ebf6b0633735397db9a392a839e.tar.gz glibc-c66452515d7b4ebf6b0633735397db9a392a839e.tar.bz2 |
update from main archive 961127cvs/libc-961128
Thu Nov 28 03:11:11 1996 Ulrich Drepper <drepper@cygnus.com>
* 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 <asun@zoology.washington.edu>.
* 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 <drepper@cygnus.com>
* po/ko.po: Update from Bang Jun-Young <bangjy@nownuri.nowcom.co.kr>.
* 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 <hjl@gnu.ai.mit.edu>.
* 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 <rth@tamu.edu>.
* 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.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/alpha/elf/Makefile | 4 | ||||
-rw-r--r-- | sysdeps/generic/errno-loc.c | 28 | ||||
-rw-r--r-- | sysdeps/stub/libc-lock.h | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/Makefile | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/sys/io.h | 13 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/syscalls.list | 5 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/configure | 22 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/brk.c | 34 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/syscalls.list | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/sysdep.S | 17 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/init-first.c | 34 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/llseek.c | 35 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/m68k/sysdep.S | 13 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/syscalls.list | 1 |
14 files changed, 148 insertions, 66 deletions
diff --git a/sysdeps/alpha/elf/Makefile b/sysdeps/alpha/elf/Makefile new file mode 100644 index 0000000..db849bd --- /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 0000000..46b9f17 --- /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 bb89de2..158a221 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 69c207a..a200064 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 c4aa2c7..208e793 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 4a52bf2..49cc697 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 2592c6c..ef7590d 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 d11c3c4..5bb9d59 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 <errno.h> #include <unistd.h> diff --git a/sysdeps/unix/sysv/linux/i386/syscalls.list b/sysdeps/unix/sysv/linux/i386/syscalls.list index 63dd0bd..d95a120 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 d676004..4b86d1d 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 <sysdeps/unix/i386/sysdep.S> #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 6e1d712..7c5b510 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 <unistd.h> #include <sysdep.h> diff --git a/sysdeps/unix/sysv/linux/llseek.c b/sysdeps/unix/sysv/linux/llseek.c new file mode 100644 index 0000000..a1284db --- /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 <sys/types.h> + + +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 95e6354..5533be2 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 01ca1bc..07a3c1d 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 |