This is the mail archive of the libc-hacker@cygnus.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

patch PR 936


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";


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]