This is the mail archive of the
libc-hacker@cygnus.com
mailing list for the glibc project.
patch PR 936
- To: libc-hacker@cygnus.com
- Subject: patch PR 936
- From: Ulrich Drepper <drepper@cygnus.com>
- Date: 02 Feb 1999 16:42:43 -0800
- Reply-To: drepper@cygnus.com (Ulrich Drepper)
I append a patch for the PR. It introduces an own map for ld.so. I
said in the last mail this will solve the problem once and for all but
this is not right. We still use malloc, calloc, realloc, and free
from the global namespace. This won't change (for Linux) until we
have implemented the mechnisms to drop support for old kernels.
Maybe somebody who saw the problem can give this patch a try. I'll
check it in right after the 2.1 release for 2.1.1.
--
---------------. drepper at gnu.org ,-. 1325 Chesapeake Terrace
Ulrich Drepper \ ,-------------------' \ Sunnyvale, CA 94089 USA
Cygnus Solutions `--' drepper at cygnus.com `------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Index: Versions.def
===================================================================
RCS file: /glibc/cvsfiles/libc/Versions.def,v
retrieving revision 1.2
diff -u -r1.2 Versions.def
--- Versions.def 1998/09/23 13:53:50 1.2
+++ Versions.def 1999/02/03 00:28:05
@@ -67,3 +67,7 @@
libdb1 {
GLIBC_2.0
}
+ld.so {
+ GLIBC_2.0
+ GLIBC_2.1 GLIBC_2.0
+}
Index: csu/Versions
===================================================================
RCS file: /glibc/cvsfiles/libc/csu/Versions,v
retrieving revision 1.4
diff -u -r1.4 Versions
--- csu/Versions 1999/01/23 09:58:01 1.4
+++ csu/Versions 1999/02/03 00:28:05
@@ -15,9 +15,6 @@
errno;
}
GLIBC_2.1 {
- # global variables
- __libc_stack_end;
-
# New special glibc functions.
gnu_get_libc_release; gnu_get_libc_version;
}
Index: elf/Makefile
===================================================================
RCS file: /glibc/cvsfiles/libc/elf/Makefile,v
retrieving revision 1.120
diff -u -r1.120 Makefile
--- elf/Makefile 1999/01/27 09:54:52 1.120
+++ elf/Makefile 1999/02/03 00:28:07
@@ -55,7 +55,7 @@
before-compile = $(objpfx)trusted-dirs.h
ifeq ($(versioning),yes)
-ld-map = $(common-objpfx)libc.map
+ld-map = $(common-objpfx)ld.so.map
endif
ifeq (yes,$(build-shared))
Index: elf/Versions
===================================================================
RCS file: /glibc/cvsfiles/libc/elf/Versions,v
retrieving revision 1.10
diff -u -r1.10 Versions
--- elf/Versions 1998/11/02 22:20:31 1.10
+++ elf/Versions 1999/02/03 00:28:07
@@ -1,11 +1,19 @@
libc {
GLIBC_2.0 {
+ # functions used in other libraries
+ _dl_open; _dl_close; _dl_addr;
+ }
+ GLIBC_2.1 {
+ # functions used in other libraries
+ _dl_mcount_wrapper; _dl_mcount_wrapper_check;
+ }
+}
+
+ld.so {
+ GLIBC_2.0 {
# global variables
_dl_debug_impcalls; _dl_debug_fd;
- # functions used in other libraries
- _dl_open; _dl_close; _dl_addr; _dl_sysdep_output; _dl_debug_message;
-
# 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;
@@ -15,15 +23,19 @@
_dl_sysdep_start; _r_debug;
_dl_global_scope; _dl_lookup_symbol_skip;
_dl_lookup_versioned_symbol; _dl_lookup_versioned_symbol_skip;
+ _dl_debug_message;
+
+ # Function from libc.so which must be shared with libc.
+ calloc; free; malloc; realloc;
}
GLIBC_2.1 {
# global variables
_dl_profile; _dl_profile_map; _dl_profile_output; _dl_start_profile;
_dl_loaded; _dl_main_searchlist; _dl_fpu_control; _dl_initial_searchlist;
- _dl_global_scope_alloc;
+ _dl_global_scope_alloc; __libc_stack_end;
# functions used in other libraries
- _dl_mcount; _dl_mcount_wrapper; _dl_mcount_wrapper_check; _dl_unload_cache;
+ _dl_mcount; _dl_unload_cache;
}
}
Index: scripts/versions.awk
===================================================================
RCS file: /glibc/cvsfiles/libc/scripts/versions.awk,v
retrieving revision 1.3
diff -u -r1.3 versions.awk
--- scripts/versions.awk 1999/01/29 14:30:31 1.3
+++ scripts/versions.awk 1999/02/03 00:28:33
@@ -12,7 +12,7 @@
BEGIN {
nlibs=0;
while (getline < defsfile) {
- if (/^[a-zA-Z0-9_]+ \{/) {
+ if (/^[a-zA-Z0-9_.]+ \{/) {
libs[$1] = 1;
curlib = $1;
while (getline < defsfile && ! /^}/) {
@@ -38,7 +38,7 @@
}
# This matches the beginning of the version information for a new library.
-/^[a-zA-Z0-9_]+/ {
+/^[a-zA-Z0-9_.]+/ {
actlib = $1;
if (!libs[$1]) {
printf("no versions defined for %s\n", $1) > "/dev/stderr";