diff options
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 cf7058e..6e9ad45 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 7c0e78a..0d12cb3 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 c1b6ec9..383f617 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 5173b21..e08089e 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 0000000..a133586 --- /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 0000000..7349d67 --- /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 0000000..a58e9ea --- /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 e9c933f..0000000 --- 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 a10b273..d14a1b9 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 c2bf233..63c716c 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 0000000..81011eb --- /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 0000000..a133586 --- /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 6bcd6da..f55c3f6 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 |