aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-02-12 18:22:41 +0000
committerUlrich Drepper <drepper@redhat.com>1998-02-12 18:22:41 +0000
commite15867921d8f3b75deb0d91628cf9a323709ea9f (patch)
treec168591a7baea545810c839c764cc4f4ef754baa /sysdeps
parent241b119df706eec5dc76bf3e63878241339f456c (diff)
downloadglibc-e15867921d8f3b75deb0d91628cf9a323709ea9f.zip
glibc-e15867921d8f3b75deb0d91628cf9a323709ea9f.tar.gz
glibc-e15867921d8f3b75deb0d91628cf9a323709ea9f.tar.bz2
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.awk15
-rw-r--r--sysdeps/gnu/errlist.c13
-rw-r--r--sysdeps/unix/sysv/linux/Dist3
-rw-r--r--sysdeps/unix/sysv/linux/Makefile6
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sizes.h24
-rw-r--r--sysdeps/unix/sysv/linux/errlist.c58
-rw-r--r--sysdeps/unix/sysv/linux/errlist.h25
-rw-r--r--sysdeps/unix/sysv/linux/oldsiglist.c21
-rw-r--r--sysdeps/unix/sysv/linux/siglist.c42
-rw-r--r--sysdeps/unix/sysv/linux/siglist.h4
-rw-r--r--sysdeps/unix/sysv/linux/sizes.h24
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/sizes.h24
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list2
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