diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-02-12 18:22:41 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-02-12 18:22:41 +0000 |
commit | e15867921d8f3b75deb0d91628cf9a323709ea9f (patch) | |
tree | c168591a7baea545810c839c764cc4f4ef754baa /sysdeps | |
parent | 241b119df706eec5dc76bf3e63878241339f456c (diff) | |
download | glibc-e15867921d8f3b75deb0d91628cf9a323709ea9f.tar.gz glibc-e15867921d8f3b75deb0d91628cf9a323709ea9f.tar.xz glibc-e15867921d8f3b75deb0d91628cf9a323709ea9f.zip |
Update.
1998-02-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/syscalls.list: Don't mark lchown as extra syscall. * grp/Makefile: Fix logic when checking for thread package. * pwd/Makefile: Likewise. 1998-02-11 08:23 H.J. Lu <hjl@gnu.org> * elf/Makefile (rtld-map): Replaced by libc-map. * elf/rtld.map: Removed. * libc.map (__libc_enable_secure, _dl_catch_error, _dl_check_all_versions, _dl_debug_initialize, _dl_debug_state, _dl_default_scope, _dl_global_scope_end, _dl_init_next, _dl_lookup_symbol, _dl_map_object, _dl_map_object_deps, _dl_object_relocation_scope, _dl_relocate_object, _dl_signal_error, _dl_starting_up, _dl_sysdep_start, _r_debug): Added for ld.so. 1998-02-10 08:38 H.J. Lu <hjl@gnu.org> * libio/iofclose.c: Check PIC && DO_VERSIONING instead of DO_VERSIONING. * libio/iofdopen.c: Ditto. * libio/iofopen.c: Ditto. * libio/oldfileops.c: Ditto. * libc.map (sys_nerr, _sys_errlist, sys_errlist): Added for version GLIBC_2.1. * sysdeps/unix/sysv/linux/Makefile (stdio-common): Removed oldsiglist from sysdep_routines and shared-only-routines. * sysdeps/unix/sysv/linux/errlist.c: New. * sysdeps/unix/sysv/linux/errlist.h: New. * sysdeps/unix/sysv/linux/sizes.h: New. * sysdeps/unix/sysv/linux/alpha/sizes.h: New. * sysdeps/unix/sysv/linux/sparc64/sizes.h: New. * sysdeps/unix/sysv/linux/oldsiglist.c: Removed. * sysdeps/unix/sysv/linux/siglist.c: Include <sizes.h>. (__old_sys_siglist, __old_sys_sigabbrev): Use ELF .size directive. * sysdeps/unix/sysv/linux/siglist.h (OLD_SIGLIST_SIZE_STR): New. * sysdeps/unix/sysv/linux/Dist (errlist.h, sizes.h.): Added. (oldsiglist.c): Removed. * sysdeps/gnu/errlist.awk (SYS_SIGLIST, SYS_NERR): New. (_sys_siglist): Use SYS_SIGLIST instead. (_sys_nerr): Use SYS_NERR instead. * sysdeps/gnu/errlist.c: Rebuilt. 1998-02-11 08:35 H.J. Lu <hjl@gnu.org> * elf/Makefile (others-static): New, set to ldconfig. ($(objpfx)ldconfig): Removed. * Rules (binaries-all, binaries-static, binaries-shared): New. Create targets for $(binaries-static) and $(binaries-shared). * Makeconfig (+link-static, link-libc-static, link-extra-libs-static): New for static linking.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/gnu/errlist.awk | 15 | ||||
-rw-r--r-- | sysdeps/gnu/errlist.c | 13 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/Dist | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/Makefile | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/sizes.h | 24 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/errlist.c | 58 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/errlist.h | 25 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/oldsiglist.c | 21 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/siglist.c | 42 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/siglist.h | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sizes.h | 24 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/sizes.h | 24 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/syscalls.list | 2 |
13 files changed, 220 insertions, 41 deletions
diff --git a/sysdeps/gnu/errlist.awk b/sysdeps/gnu/errlist.awk index cf7058e293..6e9ad45966 100644 --- a/sysdeps/gnu/errlist.awk +++ b/sysdeps/gnu/errlist.awk @@ -1,4 +1,4 @@ -# Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc. +# Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98 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 @@ -32,7 +32,14 @@ BEGIN { print ""; print "#include <errno.h>"; print ""; - print "const char *const _sys_errlist[] ="; + print "#ifndef SYS_ERRLIST"; + print "# define SYS_ERRLIST _sys_errlist"; + print "#endif"; + print "#ifndef SYS_NERR"; + print "# define SYS_NERR _sys_nerr"; + print "#endif"; + print ""; + print "const char *const SYS_ERRLIST[] ="; print " {"; print " [0] = N_(\"Success\")," } @@ -77,7 +84,9 @@ errnoh == 4 \ END { print " };"; print ""; - print "const int _sys_nerr = sizeof _sys_errlist / sizeof _sys_errlist[0];"; + print "const int SYS_NERR = sizeof SYS_ERRLIST / sizeof SYS_ERRLIST [0];"; + print "#ifndef PIC"; print "weak_alias (_sys_errlist, sys_errlist)"; print "weak_alias (_sys_nerr, sys_nerr)"; + print "#endif"; } diff --git a/sysdeps/gnu/errlist.c b/sysdeps/gnu/errlist.c index 7c0e78abf0..0d12cb32c9 100644 --- a/sysdeps/gnu/errlist.c +++ b/sysdeps/gnu/errlist.c @@ -2,7 +2,14 @@ #include <errno.h> -const char *const _sys_errlist[] = +#ifndef SYS_ERRLIST +# define SYS_ERRLIST _sys_errlist +#endif +#ifndef SYS_NERR +# define SYS_NERR _sys_nerr +#endif + +const char *const SYS_ERRLIST[] = { [0] = N_("Success"), #ifdef EPERM @@ -807,6 +814,8 @@ TRANS This error code has no purpose. */ #endif }; -const int _sys_nerr = sizeof _sys_errlist / sizeof _sys_errlist[0]; +const int SYS_NERR = sizeof SYS_ERRLIST / sizeof SYS_ERRLIST [0]; +#ifndef PIC weak_alias (_sys_errlist, sys_errlist) weak_alias (_sys_nerr, sys_nerr) +#endif diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist index c1b6ec91c2..383f617067 100644 --- a/sysdeps/unix/sysv/linux/Dist +++ b/sysdeps/unix/sysv/linux/Dist @@ -1,14 +1,15 @@ stdio_lim.h.in cmsg_nxthdr.c +errlist.h init-first.h kernel_sigaction.h kernel_stat.h kernel_termios.h llseek.c -oldsiglist.c s_pread64.c s_pwrite64.c siglist.h +sizes.h socketcall.h sysctl.c termio.h diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index 5173b2122d..e08089e022 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -67,12 +67,6 @@ endif ifeq ($(subdir),stdio-common) # Just disable the auto generation in sysdeps/generic inhibit-siglist := yes - -ifeq ($(versioning),yes) -sysdep_routines += oldsiglist -endif - -shared-only-routines += oldsiglist endif ifeq ($(subdir),inet) diff --git a/sysdeps/unix/sysv/linux/alpha/sizes.h b/sysdeps/unix/sysv/linux/alpha/sizes.h new file mode 100644 index 0000000000..a1335868a2 --- /dev/null +++ b/sysdeps/unix/sysv/linux/alpha/sizes.h @@ -0,0 +1,24 @@ +/* Copyright (C) 1998 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. */ + +#ifndef _SIZES_H +#define _SIZES_H 1 + +#define PTR_SIZE_STR "8" + +#endif /* sizes.h */ diff --git a/sysdeps/unix/sysv/linux/errlist.c b/sysdeps/unix/sysv/linux/errlist.c new file mode 100644 index 0000000000..7349d67c62 --- /dev/null +++ b/sysdeps/unix/sysv/linux/errlist.c @@ -0,0 +1,58 @@ +/* Copyright (C) 1998 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 <sizes.h> +#include <errlist.h> + +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING + +# define SYS_ERRLIST __new_sys_errlist +# define SYS_NERR __new_sys_nerr + +asm (".data; .globl __old_sys_errlist; __old_sys_errlist:"); +#endif + +#include <sysdeps/gnu/errlist.c> + +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING +asm (".type __old_sys_errlist,@object;.size __old_sys_errlist," + OLD_ERRLIST_SIZE_STR "*" PTR_SIZE_STR); + +extern const char *const *__old_sys_errlist; + +const int __old_sys_nerr = OLD_ERRLIST_SIZE; + +strong_alias (__old_sys_nerr, _old_sys_nerr); +symbol_version (__old_sys_nerr, _sys_nerr, GLIBC_2.0); +symbol_version (_old_sys_nerr, sys_nerr, GLIBC_2.0); +strong_alias (__old_sys_errlist, _old_sys_errlist); +symbol_version (__old_sys_errlist, _sys_errlist, GLIBC_2.0); +symbol_version (_old_sys_errlist, sys_errlist, GLIBC_2.0); + +strong_alias (__new_sys_nerr, _new_sys_nerr) +#if 0 +default_symbol_version (__new_sys_nerr, _sys_nerr, GLIBC_2.1); +#else +strong_alias (__new_sys_nerr, _sys_nerr); +#endif +default_symbol_version (_new_sys_nerr, sys_nerr, GLIBC_2.1); +strong_alias (__new_sys_errlist, _new_sys_errlist) +default_symbol_version (__new_sys_errlist, _sys_errlist, GLIBC_2.1); +default_symbol_version (_new_sys_errlist, sys_errlist, GLIBC_2.1); + +#endif diff --git a/sysdeps/unix/sysv/linux/errlist.h b/sysdeps/unix/sysv/linux/errlist.h new file mode 100644 index 0000000000..a58e9ea261 --- /dev/null +++ b/sysdeps/unix/sysv/linux/errlist.h @@ -0,0 +1,25 @@ +/* Copyright (C) 1998 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. */ + +#ifndef _ERRLIST_H +#define _ERRLIST_H 1 + +#define OLD_ERRLIST_SIZE_STR "123" +#define OLD_ERRLIST_SIZE 123 + +#endif /* errlist.h */ diff --git a/sysdeps/unix/sysv/linux/oldsiglist.c b/sysdeps/unix/sysv/linux/oldsiglist.c deleted file mode 100644 index e9c933f9b3..0000000000 --- a/sysdeps/unix/sysv/linux/oldsiglist.c +++ /dev/null @@ -1,21 +0,0 @@ -#include <stddef.h> -#include <signal.h> - -const char * const __old_sys_siglist[32] = -{ -#define init_sig(sig, abbrev, desc) [sig] desc, -#include "siglist.h" -#undef init_sig -}; - -const char * const __old_sys_sigabbrev[32] = -{ -#define init_sig(sig, abbrev, desc) [sig] abbrev, -#include "siglist.h" -#undef init_sig -}; - -strong_alias (__old_sys_siglist, _old_sys_siglist) -symbol_version (__old_sys_siglist, _sys_siglist, GLIBC_2.0); -symbol_version (_old_sys_siglist, sys_siglist, GLIBC_2.0); -symbol_version (__old_sys_sigabbrev, sys_sigabbrev, GLIBC_2.0); diff --git a/sysdeps/unix/sysv/linux/siglist.c b/sysdeps/unix/sysv/linux/siglist.c index a10b273db0..d14a1b92f1 100644 --- a/sysdeps/unix/sysv/linux/siglist.c +++ b/sysdeps/unix/sysv/linux/siglist.c @@ -18,28 +18,58 @@ #include <stddef.h> #include <signal.h> +#include <sizes.h> -const char * const __new_sys_siglist[NSIG] = +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING +# define SYS_SIGLIST __new_sys_siglist +# define SYS_SIGABBREV __new_sys_sigabbrev +#else +# define SYS_SIGLIST _sys_siglist +# define SYS_SIGABBREV _sys_sigabbrev +#endif + +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING +asm (".data; .globl __old_sys_siglist; __old_sys_siglist:"); +#endif + +const char *const SYS_SIGLIST[NSIG] = { #define init_sig(sig, abbrev, desc) [sig] desc, #include "siglist.h" #undef init_sig }; -const char * const __new_sys_sigabbrev[NSIG] = +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING +asm (".type __old_sys_siglist,@object;.size __old_sys_siglist," + OLD_SIGLIST_SIZE_STR "*" PTR_SIZE_STR); + +asm (".data; .globl __old_sys_sigabbrev; __old_sys_sigabbrev:"); +#endif + +const char *const SYS_SIGABBREV[NSIG] = { #define init_sig(sig, abbrev, desc) [sig] abbrev, #include "siglist.h" #undef init_sig }; -#ifdef DO_VERSIONING +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING +asm (".type __old_sys_sigabbrev,@object;.size __old_sys_sigabbrev," + OLD_SIGLIST_SIZE_STR "*" PTR_SIZE_STR); + +extern const char *const *__old_sys_siglist; +extern const char *const *__old_sys_sigabbrev; + +strong_alias (__old_sys_siglist, _old_sys_siglist) +symbol_version (__old_sys_siglist, _sys_siglist, GLIBC_2.0); +symbol_version (_old_sys_siglist, sys_siglist, GLIBC_2.0); +symbol_version (__old_sys_sigabbrev, sys_sigabbrev, GLIBC_2.0); + strong_alias (__new_sys_siglist, _new_sys_siglist) default_symbol_version (__new_sys_siglist, _sys_siglist, GLIBC_2.1); default_symbol_version (_new_sys_siglist, sys_siglist, GLIBC_2.1); default_symbol_version (__new_sys_sigabbrev, sys_sigabbrev, GLIBC_2.1); #else -weak_alias(__new_sys_siglist, _sys_siglist) -weak_alias(__new_sys_siglist, sys_siglist) -weak_alias(__new_sys_sigabbrev, sys_sigabbrev) +weak_alias (_sys_siglist, sys_siglist) +weak_alias (_sys_sigabbrev, sys_sigabbrev) #endif diff --git a/sysdeps/unix/sysv/linux/siglist.h b/sysdeps/unix/sysv/linux/siglist.h index c2bf2331d7..63c716cfcb 100644 --- a/sysdeps/unix/sysv/linux/siglist.h +++ b/sysdeps/unix/sysv/linux/siglist.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 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 @@ -63,3 +63,5 @@ #elif defined(SIGPWR) init_sig (SIGPWR, "PWR", N_("Power failure")) #endif + +#define OLD_SIGLIST_SIZE_STR "32" diff --git a/sysdeps/unix/sysv/linux/sizes.h b/sysdeps/unix/sysv/linux/sizes.h new file mode 100644 index 0000000000..81011ebccd --- /dev/null +++ b/sysdeps/unix/sysv/linux/sizes.h @@ -0,0 +1,24 @@ +/* Copyright (C) 1998 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. */ + +#ifndef _SIZES_H +#define _SIZES_H 1 + +#define PTR_SIZE_STR "4" + +#endif /* sizes.h */ diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sizes.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sizes.h new file mode 100644 index 0000000000..a1335868a2 --- /dev/null +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sizes.h @@ -0,0 +1,24 @@ +/* Copyright (C) 1998 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. */ + +#ifndef _SIZES_H +#define _SIZES_H 1 + +#define PTR_SIZE_STR "8" + +#endif /* sizes.h */ diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 6bcd6dab18..f55c3f6fff 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -19,7 +19,7 @@ ioperm - ioperm 3 ioperm iopl - iopl 1 iopl ipc msgget ipc 5 __ipc klogctl EXTRA syslog 3 klogctl -lchown EXTRA lchown 3 __lchown lchown +lchown - lchown 3 __lchown lchown mlock EXTRA mlock 2 __mlock mlock mlockall EXTRA mlockall 1 __mlockall mlockall mount EXTRA mount 5 __mount mount |