From aab217f3ee841289e63f9778b7799c06f5e3ab3e Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 4 Dec 1998 13:47:40 +0000 Subject: [PATCH] 1998-12-04 Mark Kettenis 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. --- ChangeLog | 19 ++++++++++++++----- hurd/Makefile | 7 +++++++ hurd/Versions | 12 +++++++++++- hurd/compat-20.c | 32 ++++++++++++++++++++++++++++++++ hurd/geteuids.c | 6 ++++++ hurd/hurdinit.c | 15 +++++++++++++-- mach/Versions | 5 +++++ 7 files changed, 88 insertions(+), 8 deletions(-) create mode 100644 hurd/compat-20.c diff --git a/ChangeLog b/ChangeLog index 31b9e1048d..4b74bd47f1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,18 @@ -1998-12-03 Mark Kettenis +1998-12-04 Mark Kettenis - * hurd/Versions [GLIBC_2.1]: Add _hurd_proc_init. - - * hurd/Versions: Move geteuids and seteuids from GLIBC_2.0 to - GLIBC_2.1. + 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 diff --git a/hurd/Makefile b/hurd/Makefile index 3eeb445ca7..250e441acf 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 83974ca5e1..f3e311b2a9 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 0000000000..75d51ce9f7 --- /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 + +/* 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 ed85dfd13d..e37f9c27c2 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 cd0d6e529c..50b6729fd3 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 23fe6d7e99..044084db32 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;