diff options
-rw-r--r-- | ChangeLog | 70 | ||||
-rw-r--r-- | Makeconfig | 17 | ||||
-rw-r--r-- | Rules | 24 | ||||
-rw-r--r-- | elf/Makefile | 13 | ||||
-rw-r--r-- | elf/rtld.map | 12 | ||||
-rw-r--r-- | grp/Makefile | 2 | ||||
-rw-r--r-- | libc.map | 10 | ||||
-rw-r--r-- | libio/iofclose.c | 4 | ||||
-rw-r--r-- | libio/iofdopen.c | 4 | ||||
-rw-r--r-- | libio/iofopen.c | 4 | ||||
-rw-r--r-- | libio/oldfileops.c | 6 | ||||
-rw-r--r-- | pwd/Makefile | 2 | ||||
-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 |
25 files changed, 347 insertions, 82 deletions
diff --git a/ChangeLog b/ChangeLog index f8dc304692..b96b848ece 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,73 @@ +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. + 1998-02-11 Andreas Jaeger <aj@arthur.rhein-neckar.de> * manual/memory.texi (Using the Memory Debugger): Fix typo. diff --git a/Makeconfig b/Makeconfig index 86109fce0b..ab01f95df8 100644 --- a/Makeconfig +++ b/Makeconfig @@ -380,6 +380,18 @@ ifndef +link $(common-objpfx)libc% $(+postinit),$^) \ $(link-extra-libs) $(link-libc) $(+postctor) $(+postinit) endif +# Command for statically linking programs with the C library. +ifndef +link-static ++link-static = $(CC) -nostdlib -nostartfiles -static -o $@ \ + $(sysdep-LDFLAGS) $(LDFLAGS) \ + $(addprefix $(csu-objpfx),$(start-installed-name)) \ + $(+preinit) $(+prector) \ + $(filter-out $(addprefix $(csu-objpfx),start.o \ + $(start-installed-name))\ + $(+preinit) $(link-extra-libs-static) \ + $(common-objpfx)libc% $(+postinit),$^) \ + $(link-extra-libs-static) $(link-libc-static) $(+postctor) $(+postinit) +endif ifndef config-LDFLAGS ifeq (yes,$(build-shared)) config-LDFLAGS = -Wl,-dynamic-linker=$(slibdir)/$(rtld-installed-name) @@ -425,6 +437,11 @@ else link-extra-libs = $(foreach lib,$(LDLIBS-$(@F)),$(common-objpfx)$(lib).a) endif endif + +# The static libraries. +link-libc-static = $(common-objpfx)libc.a $(gnulib) $(common-objpfx)libc.a +link-extra-libs-static = $(foreach lib,$(LDLIBS-$(@F)),$(common-objpfx)$(lib).a) + ifndef gnulib gnulib := -lgcc endif diff --git a/Rules b/Rules index 90a518f866..a0086350f6 100644 --- a/Rules +++ b/Rules @@ -94,19 +94,27 @@ tests: $(tests:%=$(objpfx)%.out) endif ifeq ($(build-programs),yes) -ifneq "$(strip $(others) $(tests) $(test-srcs))" "" -$(addprefix $(objpfx),$(others) $(tests) $(test-srcs)): %: %.o \ - $(sort $(filter $(common-objpfx)libc%,$(link-libc))) \ - $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) - $(+link) -endif +binaries-all = $(others) $(tests) $(test-srcs) +binaries-static = $(others-static) $(tests-static) $(test-srcs-static) else -ifneq "$(strip $(tests) $(test-srcs))" "" -$(addprefix $(objpfx),$(tests) $(test-srcs)): %: %.o \ +binaries-all = $(tests) $(test-srcs) +binaries-static = $(tests-static) $(test-srcs-static) +endif + +binaries-shared = $(filter-out $(binaries-static), $(binaries-all)) + +ifneq "$(strip $(binaries-shared))" "" +$(addprefix $(objpfx),$(binaries-shared)): %: %.o \ $(sort $(filter $(common-objpfx)libc%,$(link-libc))) \ $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) $(+link) endif + +ifneq "$(strip $(binaries-static))" "" +$(addprefix $(objpfx),$(binaries-static)): %: %.o \ + $(sort $(filter $(common-objpfx)libc%,$(link-libc-static))) \ + $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) + $(+link-static) endif ifneq "$(strip $(tests) $(test-srcs))" "" diff --git a/elf/Makefile b/elf/Makefile index eb3ff48caf..85dba53f99 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -35,7 +35,6 @@ elide-routines.os = $(dl-routines) dl-support enbl-secure # ld.so uses those routines, plus some special stuff for being the program # interpreter and operating independent of libc. rtld-routines := rtld $(dl-routines) dl-sysdep dl-minimal -rtld-map := rtld.map distribute = $(rtld-routines:=.c) dynamic-link.h do-rel.h dl-machine.h \ dl-hash.h soinit.c sofini.c ldd.sh.in ldd.bash.in eval.c \ genrtldtbl.awk atomicity.h dl-procinfo.h @@ -61,15 +60,9 @@ generated += ldd endif ifeq (yes,$(has-ldconfig)) +others-static += ldconfig others += ldconfig install-rootsbin = ldconfig - -$(objpfx)ldconfig: $(objpfx)ldconfig.o - $(CC) -nostdlib -nostartfiles -o $@ $(sysdep-LDFLAGS) -static \ - $(addprefix $(csu-objpfx),start.o) $(+preinit) \ - $(filter-out $(addprefix $(csu-objpfx),start.o) $(+preinit) \ - $(link-extra-libs) $(common-objpfx)libc% $(+postinit),$^) \ - $(link-extra-libs) $(common-objpfx)libc.a $(gnulib) $(+postinit) endif include ../Rules @@ -114,7 +107,7 @@ define rtld-link $(LINK.o) -nostdlib -nostartfiles -shared -o $@ \ -Wl,-rpath=$(default-rpath) $(LDFLAGS-rtld) \ $(filter-out $(objpfx)rtld-ldscript,$^) \ - -Wl,--version-script=$(rtld-map) + -Wl,--version-script=$(libc-map) endef else $(objpfx)ld.so: $(objpfx)librtld.os @@ -123,7 +116,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os define rtld-link $(LINK.o) -nostdlib -nostartfiles -shared -o $@ \ -Wl,-rpath=$(default-rpath) $^ \ - -Wl,--version-script=$(rtld-map) + -Wl,--version-script=$(libc-map) endef endif diff --git a/elf/rtld.map b/elf/rtld.map deleted file mode 100644 index 8daf2aa97a..0000000000 --- a/elf/rtld.map +++ /dev/null @@ -1,12 +0,0 @@ -GLIBC_2.0 { - global: - # Not right, but I'll figure it out. - *; - -# local: -# *; -}; - -GLIBC_2.1 { - -} GLIBC_2.0; diff --git a/grp/Makefile b/grp/Makefile index 7f2734e034..ac889218c1 100644 --- a/grp/Makefile +++ b/grp/Makefile @@ -31,7 +31,7 @@ tests := testgrp include ../Rules # We can later add the names of other thread packages here. -ifeq (,$(findstring linuxthreads,$(add-ons))) +ifneq (,$(findstring linuxthreads,$(add-ons))) CFLAGS-getgrgid_r.c = -DUSE_NSCD=1 CFLAGS-getgrnam_r.c = -DUSE_NSCD=1 diff --git a/libc.map b/libc.map index 15f6e62205..9cd9646b21 100644 --- a/libc.map +++ b/libc.map @@ -426,6 +426,14 @@ GLIBC_2.0 { xdrrec_endofrecord; xdrrec_eof; xdrrec_skiprecord; xdrstdio_create; xencrypt; xprt_register; xprt_unregister; + # Those are in the dynamic linker, but used by libc.so. + __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; + local: *; }; @@ -454,4 +462,6 @@ GLIBC_2.1 { getrusage; wait4; + # New errlist. + _sys_errlist; sys_errlist; sys_nerr; } GLIBC_2.0; diff --git a/libio/iofclose.c b/libio/iofclose.c index 35a23fa6ae..7100425556 100644 --- a/libio/iofclose.c +++ b/libio/iofclose.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU IO Library. This library is free software; you can redistribute it and/or @@ -53,7 +53,7 @@ _IO_new_fclose (fp) return status; } -#ifdef DO_VERSIONING +#if defined PIC && DO_VERSIONING strong_alias (_IO_new_fclose, __new_fclose) default_symbol_version (_IO_new_fclose, _IO_fclose, GLIBC_2.1); default_symbol_version (__new_fclose, fclose, GLIBC_2.1); diff --git a/libio/iofdopen.c b/libio/iofdopen.c index 2ecbce3ad0..a51bc3c49a 100644 --- a/libio/iofdopen.c +++ b/libio/iofdopen.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1994, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1994, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU IO Library. This library is free software; you can redistribute it and/or @@ -129,7 +129,7 @@ _IO_new_fdopen (fd, mode) return (_IO_FILE *) &new_f->fp; } -#ifdef DO_VERSIONING +#if defined PIC && DO_VERSIONING strong_alias (_IO_new_fdopen, __new_fdopen) default_symbol_version (_IO_new_fdopen, _IO_fdopen, GLIBC_2.1); default_symbol_version (__new_fdopen, fdopen, GLIBC_2.1); diff --git a/libio/iofopen.c b/libio/iofopen.c index 41da8f1721..e8f39ae9ac 100644 --- a/libio/iofopen.c +++ b/libio/iofopen.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU IO Library. This library is free software; you can redistribute it and/or @@ -59,7 +59,7 @@ _IO_new_fopen (filename, mode) return NULL; } -#ifdef DO_VERSIONING +#if defined PIC && DO_VERSIONING strong_alias (_IO_new_fopen, __new_fopen) default_symbol_version (_IO_new_fopen, _IO_fopen, GLIBC_2.1); default_symbol_version (__new_fopen, fopen, GLIBC_2.1); diff --git a/libio/oldfileops.c b/libio/oldfileops.c index a8237c6887..41fbc692e8 100644 --- a/libio/oldfileops.c +++ b/libio/oldfileops.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU IO Library. Written by Per Bothner <bothner@cygnus.com>. @@ -26,7 +26,7 @@ /* This is a compatibility file. If we don't build the libc with versioning don't compile this file. */ -#if DO_VERSIONING +#if defined PIC && DO_VERSIONING #ifndef _POSIX_SOURCE @@ -719,4 +719,4 @@ struct _IO_jump_t _IO_old_file_jumps = }; -#endif /* DO_VERSIONING */ +#endif /* PIC && DO_VERSIONING */ diff --git a/pwd/Makefile b/pwd/Makefile index a5d0d5c15b..6bb5b66005 100644 --- a/pwd/Makefile +++ b/pwd/Makefile @@ -29,7 +29,7 @@ routines := fgetpwent getpw putpwent \ include ../Rules # We can later add the names of other thread packages here. -ifeq (,$(findstring linuxthreads,$(add-ons))) +ifneq (,$(findstring linuxthreads,$(add-ons))) CFLAGS-getpwuid_r.c = -DUSE_NSCD=1 CFLAGS-getpwnam_r.c = -DUSE_NSCD=1 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 |