diff options
-rw-r--r-- | ChangeLog | 20 | ||||
-rw-r--r-- | Makerules | 57 | ||||
-rw-r--r-- | sysdeps/generic/dl-sysdep.c | 6 | ||||
-rw-r--r-- | sysdeps/m68k/fpu/e_acosl.c | 5 | ||||
-rw-r--r-- | sysdeps/unix/bsd/ultrix4/sys/mman.h | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/configure | 39 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/configure.in | 25 |
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 |