summary refs log tree commit diff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1996-06-10 09:41:16 +0000
committerRoland McGrath <roland@gnu.org>1996-06-10 09:41:16 +0000
commit564210fe2fdf88dd0800590b256cdb0751da1dec (patch)
tree403cf41f67bdc836d9efc65b6618a8951d815b7d
parent6d9756c910a07bb353af4d6908f88c1ddea15916 (diff)
downloadglibc-564210fe2fdf88dd0800590b256cdb0751da1dec.tar.gz
glibc-564210fe2fdf88dd0800590b256cdb0751da1dec.tar.xz
glibc-564210fe2fdf88dd0800590b256cdb0751da1dec.zip
Mon Jun 10 02:22:24 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
	* sysdeps/unix/sysv/linux/configure.in: New file, start with configure.
	Add check for installed <linux/version.h> being v2.0 or later.

	* sysdeps/generic/dl-sysdep.c (_dl_sysdep_open_zero_fill): Call __open
	instead of open.
	(_dl_sysdep_fatal): Call __write instead of write.
	(_dl_sysdep_message): Likewise.

Sun Jun  9 20:40:00 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/m68k/fpu/e_acosl.c: New file.

	* Makerules (o-objects): New variable.  Use it in place of
	$(objects:.o=$o); it filters out $(elide-routines$o).
	Use o-iterator for ar and ranlib rules so they use the per-type object
	list.

	* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
-rw-r--r--ChangeLog20
-rw-r--r--Makerules57
-rw-r--r--sysdeps/generic/dl-sysdep.c6
-rw-r--r--sysdeps/m68k/fpu/e_acosl.c5
-rw-r--r--sysdeps/unix/bsd/ultrix4/sys/mman.h3
-rw-r--r--sysdeps/unix/sysv/linux/configure39
-rw-r--r--sysdeps/unix/sysv/linux/configure.in25
7 files changed, 127 insertions, 28 deletions
diff --git a/ChangeLog b/ChangeLog
index 5c49c1ce07..295384bc0b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,24 @@
+Mon Jun 10 02:22:24 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>
+
+	* sysdeps/unix/sysv/linux/configure.in: New file, start with configure.
+	Add check for installed <linux/version.h> being v2.0 or later.
+
+	* sysdeps/generic/dl-sysdep.c (_dl_sysdep_open_zero_fill): Call __open
+	instead of open.
+	(_dl_sysdep_fatal): Call __write instead of write.
+	(_dl_sysdep_message): Likewise.
+
+Sun Jun  9 20:40:00 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* sysdeps/m68k/fpu/e_acosl.c: New file.
+
 Sun Jun  9 01:11:49 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>
 
+	* Makerules (o-objects): New variable.  Use it in place of
+	$(objects:.o=$o); it filters out $(elide-routines$o).
+	Use o-iterator for ar and ranlib rules so they use the per-type object
+	list.
+
 	* elf/dl-load.c (_dl_map_object_from_fd): Close FD before return.
 
 	* sysdeps/mach/mprotect.c: Define with __ name and weak alias.
@@ -10,6 +29,7 @@ Sun Jun  9 01:11:49 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>
 	* sysdeps/unix/sysv/linux/sys/mman.h: Likewise.
 	* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
 	* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
+	* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
 
 	* Make-dist ($(tardir).tar): Use sed to check for file names longer
 	than 14 chars, instead of doschk which checks for other things we
diff --git a/Makerules b/Makerules
index bc8d7154d4..d74e5be97a 100644
--- a/Makerules
+++ b/Makerules
@@ -363,9 +363,15 @@ lib: lib-noranlib $(foreach l,$(libtypes),$(patsubst %,$(common-objpfx)$l,c))
 # Pattern rule for libraries: depend on the __.SYMDEF member updated by ranlib.
 lib%.a: lib%.a($(ar-symtab-name)) ;
 
+# For object-suffix $o, the list of objects with that suffix.
+# Makefiles can define `elide-routines.so = foo' to leave foo.so out.
+o-objects = $(patsubst %.o,%$o,$(filter-out $(patsubst %,$(objpfx)%.o,\
+						       $(elide-routines$o)),\
+					    $(objects)))
+
 libobjs: $(foreach o,$(object-suffixes),\
 		   $(common-objpfx)$(patsubst %,$(libtype$o),c)(\
-		   $(notdir $(objects:.o=$o))))
+		   $(notdir $(o-objects))))
 lib-noranlib: libobjs
 others: $(addprefix $(objpfx),$(install-lib))
 
@@ -374,28 +380,33 @@ ifdef objects
 # Define a pattern rule that will match many targets libc.a(foo.%), for
 # each foo.o in $(objects) (% will just happen always to match `o').  This is
 # the only way to define a rule that updates many targets at once with one
-# sequence of commands.  We in fact define the pattern rule to match
-# targets libc.a(foo.%), libc_pic.a(foo.%), etc, to avoid repeating the rule.
-# Each match will only ever be called upon to make member objects of
-# the appropriate type in each library (i.e. libc_pic.a(foo.so)).
-$(foreach l,$(libtypes),\
-	  $(common-objpfx)$(patsubst %,$l,c)($(notdir $(objects:.o=.%)))): \
+# sequence of commands.
+define o-iterator-doit
+$(common-objpfx)$(patsubst %,$(libtype$o),c)(\
+$(addsuffix .%,$(filter-out $(elide-routines$o),$(notdir $(objects:.o=))))): \
   $(objpfx)stamp.%-$(subdir) ;
+endef
+object-suffixes-left := $(object-suffixes)
+include $(o-iterator)
 
 # The pattern rule tells Make to remake $(objpfx)stamp.%-$(subdir) as
-# the way to update all the foo.% object files in $(objects).
-# Now we define a static pattern rule to update each
-# $(objpfx)stamp.SUFFIX-$(subdir) timestamp file;
-# these rules (one explicit rule is generated for each object suffix)
-# will update the parent archive with
-$(foreach o,$(object-suffixes),$(objpfx)stamp$o-$(subdir)): \
-  $(objpfx)stamp%-$(subdir): $(objects:.o=%)
-	$(patsubst %,cd %;,$(objdir)) \
-	$(AR) cru$(verbose) ${O%-lib} \
-	      $(patsubst $(objpfx)%,%,$^)
-# `touch' won't let me touch a world-writable file I don't own.  Sigh.
-	rm -f $@
-	touch $@
+# the way to update all the foo.% object files in $(objects).  Now we
+# define explicit rules to update each $(objpfx)stamp.SUFFIX-$(subdir)
+# timestamp file; these rules (one explicit rule is generated for each
+# object suffix) will update the parent archive with ar.  Use a static
+# pattern rule so $* is set to the object type during the commands.
+define o-iterator-doit
+$(objpfx)stamp$o-$(subdir): $(objpfx)stamp%-$(subdir): $(o-objects); $$(do-ar)
+endef
+object-suffixes-left := $(object-suffixes)
+include $(o-iterator)
+define do-ar
+$(patsubst %,cd %;,$(objdir)) \
+$(AR) cru$(verbose) ${O%-lib} \
+      $(patsubst $(objpfx)%,%,$^)
+rm -f $@
+touch $@
+endef
 ifdef subdir
 O%-lib = $(filter ../,$(firstword $(objdir) ../))$(patsubst %,$(libtype$*),c)
 else
@@ -409,7 +420,7 @@ endif
 define o-iterator-doit
 $(common-objpfx)$(patsubst %,$(libtype$o),c)($(ar-symtab-name)): \
 	  $(common-objpfx)$(patsubst %,$(libtype$o),c)(\
-	  $(patsubst $(objpfx)%.o,%$o,$(objects))) \
+	    $(patsubst $(objpfx)%,%,$(o-objects))) \
 	  $(filter subdir_lib,$(firstword $(subdir) subdir_lib)); \
 	$$(RANLIB) $$(common-objpfx)$$(patsubst %,$$(libtype$o),c)
 endef
@@ -419,7 +430,7 @@ include $(o-iterator)
 
 # This makes all the object files.
 .PHONY: objects objs
-objects objs: $(foreach o,$(object-suffixes),$(objects:.o=$o)) \
+objects objs: $(foreach o,$(object-suffixes),$(o-objects)) \
 	      $(addprefix $(objpfx),$(extra-objs))
 
 # Canned sequence for building an extra library archive.
@@ -748,7 +759,7 @@ common-mostlyclean:
 	$(rmobjs)
 define rmobjs
 $(foreach o,$(object-suffixes),
--rm -f $(addprefix $(objpfx),stamp$o-$(subdir)) $(objects:.o=$o))
+-rm -f $(addprefix $(objpfx),stamp$o-$(subdir)) $(o-objects))
 endef
 
 # Also remove the dependencies and generated source files.
diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c
index 4d5faad69f..41d9cc98f9 100644
--- a/sysdeps/generic/dl-sysdep.c
+++ b/sysdeps/generic/dl-sysdep.c
@@ -109,7 +109,7 @@ _dl_sysdep_start_cleanup (void)
 int
 _dl_sysdep_open_zero_fill (void)
 {
-  return open ("/dev/zero", O_RDONLY);
+  return __open ("/dev/zero", O_RDONLY);
 }
 
 #include <stdarg.h>
@@ -123,7 +123,7 @@ _dl_sysdep_fatal (const char *msg, ...)
   do
     {
       size_t len = strlen (msg);
-      write (STDERR_FILENO, msg, len);
+      __write (STDERR_FILENO, msg, len);
       msg = va_arg (ap, const char *);
     } while (msg);
   va_end (ap);
@@ -141,7 +141,7 @@ _dl_sysdep_message (const char *msg, ...)
   do
     {
       size_t len = strlen (msg);
-      write (STDOUT_FILENO, msg, len);
+      __write (STDOUT_FILENO, msg, len);
       msg = va_arg (ap, const char *);
     } while (msg);
   va_end (ap);
diff --git a/sysdeps/m68k/fpu/e_acosl.c b/sysdeps/m68k/fpu/e_acosl.c
new file mode 100644
index 0000000000..e3dcd170f3
--- /dev/null
+++ b/sysdeps/m68k/fpu/e_acosl.c
@@ -0,0 +1,5 @@
+#ifndef FUNC
+#define FUNC __ieee754_acosl
+#endif
+#define float_type long double
+#include <e_acos.c>
diff --git a/sysdeps/unix/bsd/ultrix4/sys/mman.h b/sysdeps/unix/bsd/ultrix4/sys/mman.h
index d49da02c32..d929ca9e84 100644
--- a/sysdeps/unix/bsd/ultrix4/sys/mman.h
+++ b/sysdeps/unix/bsd/ultrix4/sys/mman.h
@@ -1,5 +1,5 @@
 /* Definitions for BSD-style memory management.  Ultrix 4 version.
-Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+Copyright (C) 1994, 1995, 1996 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
@@ -79,6 +79,7 @@ int munmap __P ((__caddr_t __addr, size_t __len));
 /* Change the memory protection of the region starting at ADDR and
    extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors
    (and sets errno).  */
+int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
 int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
 
 /* Ultrix 4 does not implement `msync' or `madvise'.  */
diff --git a/sysdeps/unix/sysv/linux/configure b/sysdeps/unix/sysv/linux/configure
index 62d8538003..8884d555a0 100644
--- a/sysdeps/unix/sysv/linux/configure
+++ b/sysdeps/unix/sysv/linux/configure
@@ -1,7 +1,44 @@
-# On Linux, the default is to use libio instead of stdio.
+ # Local configure fragment for sysdeps/unix/sysv/linux.
 
+# On Linux, the default is to use libio instead of stdio.
 test $stdio = default && stdio=libio
 
 # Don't bother trying to generate any glue code to be compatible with the
 # existing system library, because we are the only system library.
 inhibit_glue=yes
+
+echo $ac_n "checking installed Linux kernel header files""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'libc_cv_linux2'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 16 "configure"
+#include "confdefs.h"
+#include <linux/version.h>
+int main() { return 0; }
+int t() {
+#if LINUX_VERSION_CODE < (2 *65536+ 0 *256+ 0) /* 2.0.0 */
+eat flaming death
+#endif
+; return 0; }
+EOF
+if { (eval echo configure:26: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  libc_cv_linux2='2.0 or later'
+else
+  rm -rf conftest*
+  libc_cv_linux2='TOO OLD!'
+fi
+rm -f conftest*
+
+fi
+
+echo "$ac_t""$libc_cv_linux2" 1>&6
+if test "$libc_cv_linux2" != '2.0 or later'; then
+  { echo "configure: error: GNU libc requires kernel header files from Linux 2.0
+or later to be installed before configuring.  The kernel header files
+are found usually in /usr/include/asm and /usr/include/linux; make sure
+these directories use files from Linux 2.0 or later.  This check uses
+<linux/version.h>, so make sure that file was built correctly when
+installing the kernel header files." 1>&2; exit 1; }
+fi
diff --git a/sysdeps/unix/sysv/linux/configure.in b/sysdeps/unix/sysv/linux/configure.in
new file mode 100644
index 0000000000..5686c26153
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/configure.in
@@ -0,0 +1,25 @@
+sinclude(./aclocal.m4)dnl Autoconf lossage
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/unix/sysv/linux.
+
+# On Linux, the default is to use libio instead of stdio.
+test $stdio = default && stdio=libio
+
+# Don't bother trying to generate any glue code to be compatible with the
+# existing system library, because we are the only system library.
+inhibit_glue=yes
+
+AC_CACHE_CHECK(installed Linux kernel header files, libc_cv_linux2, [dnl
+AC_TRY_COMPILE([#include <linux/version.h>],
+[#if LINUX_VERSION_CODE < (2 *65536+ 0 *256+ 0) /* 2.0.0 */
+eat flaming death
+#endif],
+	       libc_cv_linux2='2.0 or later', libc_cv_linux2='TOO OLD!')])
+if test "$libc_cv_linux2" != '2.0 or later'; then
+  AC_MSG_ERROR([GNU libc requires kernel header files from Linux 2.0
+or later to be installed before configuring.  The kernel header files
+are found usually in /usr/include/asm and /usr/include/linux; make sure
+these directories use files from Linux 2.0 or later.  This check uses
+<linux/version.h>, so make sure that file was built correctly when
+installing the kernel header files.])
+fi