about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog15
-rw-r--r--Makeconfig6
-rw-r--r--Makerules1
-rw-r--r--features.h10
-rw-r--r--gnu-versions.h50
-rw-r--r--locale/locale-ctype.c12
6 files changed, 85 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index e9812c8054..b133e7589e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+Tue Jun 20 02:18:19 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+	* Makerules (lib%.so: lib%_pic.a): Pass -soname switch giving the
+ 	library's name including $(libprefix) and major version number.
+
+	* locale/locale-ctype.c (allocate_arrays): Use xmalloc and bzero
+ 	in place of xcalloc.
+
+	* Makeconfig (prefix, exec_prefix, libprefix): Instead of
+ 	`ifndef', use the $(origin) function to only set these if they are
+ 	undefined, and not if they are defined to empty.
+
+	* gnu-versions.h: New file.
+	* features.h (__GNU_LIBRARY__): Increase value to 5.
+
 Wed Jun 14 03:45:24 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
 	* stdio/stdio.h (__validfp): Use ({...}) rather than a comma
diff --git a/Makeconfig b/Makeconfig
index 620f23d991..b63dabb831 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -115,12 +115,12 @@ export sysdep_dir := $(sysdep_dir)
 
 
 # Common prefix for machine-independent installation directories.
-ifndef prefix
+ifeq ($(origin prefix),undefined) # ifndef would override explicit empty value.
 prefix = /usr/local
 endif
 
 # Common prefix for machine-dependent installation directories.
-ifndef exec_prefix
+ifeq ($(origin exec_prefix),undefined)
 exec_prefix = $(prefix)
 endif
 
@@ -133,7 +133,7 @@ endif
 # the prefix is spliced between `lib' and the name, so the linker switch
 # `-l$(libprefix)NAME' finds the library; for other files the prefix is
 # just prepended to the whole file name.
-ifndef libprefix
+ifeq ($(origin libprefix),undefined)
 libprefix =
 endif
 
diff --git a/Makerules b/Makerules
index 2191251f35..c6de338570 100644
--- a/Makerules
+++ b/Makerules
@@ -554,6 +554,7 @@ ifeq (yes,$(build-shared))
 # on other shared objects.
 lib%.so: lib%_pic.a
 	$(LINK.o) -shared -o $@ \
+		  -soname lib$(libprefix)$*.so$($(@F)-version) \
 		  $(LDFLAGS.so) $(LDFLAGS-$(notdir $*).so) \
 		  -L$(firstword $(objdir) .)  -L$(common-objpfx:%/=%) \
 		  $(LDLIBS-$(notdir $*).so) -Wl,--whole-archive $< \
diff --git a/features.h b/features.h
index 0778092ed9..7801bb8c20 100644
--- a/features.h
+++ b/features.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1993, 1995 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
@@ -126,8 +126,14 @@ Cambridge, MA 02139, USA.  */
 #endif
 
 
+/* This macro indicates that the installed library is the GNU C Library.
+   Its value must be incremented whenever any existing library interface
+   changes such that callers must be recompiled with the new header files.
+   This value should always coincide with the major version number used for
+   the shared C library corresponding to this set of header files.  */
+
 #undef	__GNU_LIBRARY__
-#define	__GNU_LIBRARY__	1
+#define	__GNU_LIBRARY__	5
 
 
 #if	!defined(__GNUC__) || __GNUC__ < 2
diff --git a/gnu-versions.h b/gnu-versions.h
new file mode 100644
index 0000000000..631a0f7fbf
--- /dev/null
+++ b/gnu-versions.h
@@ -0,0 +1,50 @@
+/* Header with interface version macros for library pieces copied elsewhere.
+Copyright (C) 1995 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., 675 Mass Ave,
+Cambridge, MA 02139, USA.  */
+
+#ifndef _GNU_VERSIONS_H
+#define	_GNU_VERSIONS_H	1
+
+/* This file exists to define these few macros.  Each specifies a version
+   number associated with the library interface of a piece of the C library
+   which is also distributed with other GNU packages.  These pieces are
+   both part of the GNU C library and also distributed with other GNU
+   packages so those packages may use their facilities on systems lacking
+   the GNU C library.  The source files for each piece surround all their
+   code with `#ifndef ELIDE_CODE' after defining it with this:
+
+   #define OBSTACK_INTERFACE_VERSION 1
+   #if !defined (_LIBC) && defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1
+   #include <gnu-versions.h>
+   #if _GNU_OBSTACK_INTERFACE_VERSION == OBSTACK_INTERFACE_VERSION
+   #define ELIDE_CODE
+   #endif
+   #endif
+
+   This allows those one to avoid compiling those files when part of a GNU
+   package not libc, on a system using a GNU C library that supports the
+   same interface.
+
+   Please preserve the format of the comments after each macro.  And
+   remember, if any of these versions change, the libc.so major version
+   number must change too (so avoid it)!  */
+
+#define _GNU_OBSTACK_INTERFACE_VERSION	1 /* vs malloc/obstack.c */
+#define _GNU_REGEX_INTERFACE_VERSION	1 /* vs posix/regex.c */
+
+#endif	/* gnu-versions.h */
diff --git a/locale/locale-ctype.c b/locale/locale-ctype.c
index 1ce09bab2b..e7a1e97960 100644
--- a/locale/locale-ctype.c
+++ b/locale/locale-ctype.c
@@ -534,16 +534,20 @@ allocate_arrays (void)
       char *ptr;
       int size = charmap_data.hash_size * charmap_data.hash_layers;
 
-      ctype_b = (u16 *) xcalloc (size - (-128), sizeof (u16));
+      ctype_b = xmalloc ((size - (-128)) * sizeof (u16));
+      bzero (ctype_b, (size - (-128)) * sizeof (u16));
       ctype_b += 128;
 
 
-      names_b = (i32 *) xcalloc (size, sizeof (i32));
+      names_b = xmalloc (size * sizeof (i32));
+      bzero (names_b, size * sizeof (i32));
 
-      toupper_b = (i32 *) xcalloc ((size - (-128)), sizeof  (i32));
+      toupper_b = xmalloc ((size - (-128)) * sizeof (i32));
+      bzero (toupper_b, (size - (-128)) * sizeof (i32));
       toupper_b += 128;
 
-      tolower_b = (i32 *) xcalloc ((size - (-128)), sizeof (i32));
+      tolower_b = xmalloc ((size - (-128)) * sizeof (i32));
+      bzero (tolower_b, (size - (-128)) * sizeof (i32));
       tolower_b += 128;
 
       ptr = NULL;