aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog21
-rw-r--r--hurd/Makefile7
-rw-r--r--hurd/Versions12
-rw-r--r--hurd/compat-20.c32
-rw-r--r--hurd/geteuids.c6
-rw-r--r--hurd/hurdinit.c15
-rw-r--r--mach/Versions5
7 files changed, 89 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 31b9e10..4b74bd4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,18 @@
-1998-12-03 Mark Kettenis <kettenis@phys.uva.nl>
-
- * hurd/Versions [GLIBC_2.1]: Add _hurd_proc_init.
-
- * hurd/Versions: Move geteuids and seteuids from GLIBC_2.0 to
- GLIBC_2.1.
+1998-12-04 Mark Kettenis <kettenis@phys.uva.nl>
+
+ Provide backwards binary compatibility for the Hurd.
+ * hurd/geteuids.c [PIC && DO_VERSIONING]: Make __getuids a weak
+ alias for geteuids.
+ * hurd/Versions [GLIBC_2.0]: Add __getuids,
+ __hurd_file_name_lookup and _hurd_umask.
+ [GLIBC_2.1]: Add _hurd_proc_init.
+ * hurd/Makefile [versioning] (routines): Add compat-20.
+ (shared-only-routines): Likewise.
+ * hurd/hurdinit.c (_hurd_new_proc_init): Renamed from
+ _hurd_proc_init. Use it as the default _hurd_proc_init version
+ for GLIBC_2.1.
+ * hurd/compat-20.c: New file.
+ * mach/Versions [GLIBC_2.0]: Add __vm_allocate.
1998-12-02 Ulrich Drepper <drepper@cygnus.com>
diff --git a/hurd/Makefile b/hurd/Makefile
index 3eeb445..250e441 100644
--- a/hurd/Makefile
+++ b/hurd/Makefile
@@ -66,6 +66,13 @@ distribute = hurdstartup.h hurdfault.h hurdhost.h \
# XXX this is a temporary hack; see hurdmalloc.h
routines += hurdmalloc
distribute += hurdmalloc.h
+
+# Binary compatibility for libc.so.0.2[GLIBC_2.0].
+ifeq ($(versioning),yes)
+routines += compat-20
+endif
+
+shared-only-routines = compat-20
include ../mach/Machrules
include ../Rules
diff --git a/hurd/Versions b/hurd/Versions
index 83974ca..f3e311b 100644
--- a/hurd/Versions
+++ b/hurd/Versions
@@ -1,5 +1,13 @@
libc {
GLIBC_2.0 {
+ # These few symbols are here only for binary compatibility
+ # with the pre-versioning libc.so.0.2 ABI. Their replacements
+ # are in the GLIBC_2.1 version set. When the soname changes,
+ # these can be removed.
+ __getuids;
+ __hurd_file_name_lookup;
+ _hurd_proc_init; _hurd_umask;
+
# necessary for the Hurd brk implementation
_end;
@@ -49,7 +57,6 @@ libc {
_hurd_port_get;
_hurd_port_locked_get;
_hurd_ports_use;
- _hurd_proc_init;
_hurd_thread_sigstate;
# functions in normal name space
@@ -91,6 +98,9 @@ libc {
vpprintf;
}
GLIBC_2.1 {
+ # "quasi-internal" functions
+ _hurd_proc_init;
+
# g*
geteuids;
diff --git a/hurd/compat-20.c b/hurd/compat-20.c
new file mode 100644
index 0000000..75d51ce
--- /dev/null
+++ b/hurd/compat-20.c
@@ -0,0 +1,32 @@
+/* Old-versioned functions for binary compatibility with glibc-2.0.
+ 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 <hurd.h>
+
+/* This file provides definitions for binary compatibility with
+ the GLIBC_2.0 version set for the libc.so.0.2 soname.
+
+ These definitions can be removed when the soname changes. */
+
+void
+_hurd_proc_init_compat_20 (char **argv)
+{
+ _hurd_proc_init (argv, NULL, 0);
+}
+symbol_version (_hurd_proc_init_compat_20, _hurd_proc_init, GLIBC_2.0);
diff --git a/hurd/geteuids.c b/hurd/geteuids.c
index ed85dfd..e37f9c2 100644
--- a/hurd/geteuids.c
+++ b/hurd/geteuids.c
@@ -61,3 +61,9 @@ geteuids (int n, uid_t *uidset)
return nuids;
}
+
+/* XXX Remove this alias when we bump the libc soname. */
+
+#if defined PIC && DO_VERSIONING
+weak_alias (geteuids, __getuids)
+#endif
diff --git a/hurd/hurdinit.c b/hurd/hurdinit.c
index cd0d6e5..50b6729 100644
--- a/hurd/hurdinit.c
+++ b/hurd/hurdinit.c
@@ -118,8 +118,8 @@ DEFINE_HOOK (_hurd_proc_subinit, (void));
Call _hurdsig_init to set up signal processing. */
void
-_hurd_proc_init (char **argv,
- const int *intarray, size_t intarraysize)
+_hurd_new_proc_init (char **argv,
+ const int *intarray, size_t intarraysize)
{
mach_port_t oldmsg;
struct hurd_userlink ulink;
@@ -160,6 +160,17 @@ _hurd_proc_init (char **argv,
our parent (presumably a debugger) that the exec has completed. */
__msg_sig_post (_hurd_msgport, SIGTRAP, 0, __mach_task_self ());
}
+
+/* XXX Remove this versioning stuff and rename __new_hurd_proc_init
+ above back to _hurd_proc_init when we bump the libc soname. */
+
+#if defined PIC && DO_VERSIONING
+default_symbol_version (_hurd_new_proc_init, _hurd_proc_init, GLIBC_2.1);
+#else
+# ifdef weak_alias
+weak_alias (_hurd_new_proc_init, _hurd_proc_init)
+# endif
+#endif
/* Called when we get a message telling us to change our proc server port. */
diff --git a/mach/Versions b/mach/Versions
index 23fe6d7..044084d 100644
--- a/mach/Versions
+++ b/mach/Versions
@@ -1,5 +1,10 @@
libc {
GLIBC_2.0 {
+ # This symbol is here only for binary compatibility with the
+ # pre-versioning libc.so.0.2 ABI. When the soname changes,
+ # it can be removed.
+ __vm_allocate;
+
# variables used in Mach-specific macros
__mach_task_self_;
__vm_page_size;