summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog86
-rw-r--r--MakeTAGS2
-rw-r--r--Makeconfig19
-rw-r--r--Makefile2
-rw-r--r--Makerules42
-rw-r--r--README.libm31
-rw-r--r--Rules10
-rw-r--r--bare/Makefile2
-rw-r--r--catgets/gencat.c3
-rw-r--r--db/makedb.c3
-rw-r--r--locale/programs/locale.c3
-rw-r--r--locale/programs/localedef.c3
-rw-r--r--manual/Makefile13
-rw-r--r--manual/socket.texi24
-rw-r--r--nss/Makefile5
-rw-r--r--nss/db-Makefile68
-rw-r--r--nss/nsswitch.c9
-rw-r--r--nss/nsswitch.conf16
-rw-r--r--sysdeps/generic/Makefile1
-rw-r--r--sysdeps/libm-ieee754/e_acoshl.c72
-rw-r--r--sysdeps/libm-ieee754/e_atanhl.c79
-rw-r--r--sysdeps/libm-ieee754/e_remainderl.c83
-rw-r--r--sysdeps/libm-ieee754/e_scalbl.c59
-rw-r--r--sysdeps/libm-ieee754/s_asinhl.c70
-rw-r--r--sysdeps/libm-ieee754/s_cosl.c87
-rw-r--r--sysdeps/libm-ieee754/s_sinl.c87
-rw-r--r--sysdeps/libm-ieee754/s_tanhl.c91
-rw-r--r--sysdeps/libm-ieee754/s_tanl.c81
-rw-r--r--sysdeps/mach/Makefile6
-rw-r--r--sysdeps/mach/hurd/Makefile14
-rw-r--r--sysdeps/unix/Makefile5
-rw-r--r--sysdeps/unix/make-syscalls.sh2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/Dist3
-rw-r--r--sysdeps/unix/sysv/linux/i386/Dist1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/Dist1
-rw-r--r--version.c3
36 files changed, 999 insertions, 87 deletions
diff --git a/ChangeLog b/ChangeLog
index 079b737c5b..c661e2ddb2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,87 @@
+Fri Aug 30 01:26:44 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/unix/sysv/linux/i386/Dist: Add close.S.
+ * sysdeps/unix/sysv/linux/m68k/Dist: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/Dist: Likewise.
+
+ * version.c: Add comment about where to report bugs to.
+ * catgets/gencat.c (usage): Likewise.
+ * db/makedb.c (usage): Likewise.
+ * locale/programs/locale.c (usage): Likewise.
+ * locale/programs/localedef.c (usage): Likewise.
+
+ * manual/socket.texi: A little bit better wording.
+
+Thu Aug 29 18:03:06 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * Makerules: Make sure directory exists before generating stamp file.
+ (BUILD_CFLAGS): Always refer to using $(..).
+ * manual/Makefile: Make sure directory exists before generating
+ stamp file.
+ (make-target-directory): Add macro definition.
+ * sysdeps/generic/Makefile: Make sure directory exists before
+ generating stamp file.
+
+ * Makefile (distribute): Add autolock.sh. Reported by Fila Kolodny.
+
+Tue Aug 27 10:06:22 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ When compiling in separate directory put objects into
+ subdirectories matching the source layout.
+ * Makeconfig (objpfx) [ifdef objdir]: Append $(subdir).
+ When looking for configparms try in $(common-objpfx).
+ Use $(common-objpfx)SUBDIR to find objects from other subdirectory
+ builds.
+ * Makerules: Add $(objpfx) to vpath list.
+ (make-dummy-dep): Use $(common-objpfx) to avoid creating dummy.d
+ more than once. All uses in dependency lists changed.
+ (+make-deps): Make target directory.
+ (sed-remove-objpfx): Substitute $(common-objpfx).
+ (do-ar, build-extra-lib, $(common-objpfx)stub-$(subdir)): Use
+ $(objpfx) instead of $(objdir) for cd command.
+ (O%-lib): Always find libc relative to $(..).
+ (subdir-stamps): Collect stamp files from subdirs.
+ (common-mostlyclean): Remove stub file in $(common-objpfx).
+ * MakeTAGS ($P/siglist.pot): Find siglist.c in stdio-common.
+ * Rules (dep-dummy-lib): Use $(common-objpfx) to avoid creating to
+ more than once.
+ ($(objpfx)dummy.c, $(objpfx)empty.c): Change target name to use
+ $(common-objfpx). All uses in dependency lists changed.
+ (generated): Prepend $(..) to names.
+ * bare/Makefile ($(objpfx)lib$(config-vendor).a): Remove $(objpfx)
+ from $@.
+ * nss/Makefile ($(objpfx)libnss_dns.so, $(objpfx)libnss_db.so):
+ Use $(common-objpfx) instead of $(..) in dependencies.
+ * sysdeps/mach/Makefile (mach-objpfx): Unconditionally use
+ $(common-objpfx) instead of $(..) and (objpfx).
+ * sysdeps/mach/hurd/Makefile (hurd-objpfx): Likewise.
+ (rpath-link): Likewise.
+ (rpcuserlibs): Likewise.
+ * sysdeps/unix/Makefile [$(subdir) = stdio-common]: Check for
+ errlist.c in $(objpfx), not $(common-objpfx).
+ ($(common-objpfx)s-proto.d): Special rule not covered by pattern
+ rule.
+ * sysdeps/unix/make-syscalls.sh: Make syscall rules depending on
+ s-proto.d in $(common-objpfx), not $(objpfx).
+
+Thu Aug 29 17:45:49 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * nss/nsswitch.c (nss_dlerror_run): Free returned error
+ string.
+
+Thu Aug 29 15:53:33 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/libm-ieee754/e_acoshl.c: New file. `long double'
+ implementation.
+ * sysdeps/libm-ieee754/e_atanhl.c: Likewise.
+ * sysdeps/libm-ieee754/e_remainderl.c: Likewise.
+ * sysdeps/libm-ieee754/e_scalbl.c: Likewise.
+ * sysdeps/libm-ieee754/s_asinhl.c: Likewise.
+ * sysdeps/libm-ieee754/s_cosl.c: Likewise.
+ * sysdeps/libm-ieee754/s_sinl.c: Likewise.
+ * sysdeps/libm-ieee754/s_tanhl.c: Likewise.
+ * sysdeps/libm-ieee754/s_tanl.c: Likewise.
+
Thu Aug 29 12:00:30 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* sysdeps/mach/hurd/setitimer.c (setitimer_locked): Correct
@@ -16,7 +100,7 @@ Thu Aug 29 12:00:30 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
Thu Aug 29 00:28:08 1996 Ulrich Drepper <drepper@cygnus.com>
- * stdio-common/printf_fp.c (__printf_fp): Use default value `.` if
+ * stdio-common/printf_fp.c (__printf_fp): Use default value '.' if
`decimal' char is 0.
* C-numeric.c (not_available): New constant.
diff --git a/MakeTAGS b/MakeTAGS
index bd52497ce3..0e7eecdb4f 100644
--- a/MakeTAGS
+++ b/MakeTAGS
@@ -145,7 +145,7 @@ else
$(extract)
endif
-$P/siglist.pot: $(common-objpfx)siglist.c; $(extract)
+$P/siglist.pot: $(common-objpfx)stdio-common/siglist.c; $(extract)
# Extract all strings from this file; its strings are not marked.
# Their surroundings are also not interesting.
diff --git a/Makeconfig b/Makeconfig
index 413a2537e2..d3d7890903 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -59,8 +59,8 @@ endif
# $(common-objdir) is the place to put objects and
# such that are not specific to a single subdir.
ifdef objdir
-objpfx = $(objdir)/
-common-objpfx = $(objpfx)
+objpfx := $(patsubst %//,%/,$(objdir)/$(subdir)/)
+common-objpfx = $(objdir)/
common-objdir = $(objdir)
else
objpfx :=
@@ -110,8 +110,8 @@ ifneq ($(wildcard $(..)configparms),)
include $(..)configparms
endif
ifneq ($(objpfx),)
-ifneq ($(wildcard $(objpfx)configparms),)
-include $(objpfx)configparms
+ifneq ($(wildcard $(common-objpfx)configparms),)
+include $(common-objpfx)configparms
endif
endif
@@ -325,7 +325,7 @@ default-rpath = $(libdir)
endif
# This is how to find at build-time things that will be installed there.
rpath-link = $(common-objdir):$(elfobjdir):$(nssobjdir)
-nssobjdir := $(firstword $(objdir) $(patsubst ../$(subdir),.,$(..)nss))
+nssobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)nss)
else
link-libc = $(common-objpfx)libc.a $(gnulib) $(common-objpfx)libc.a
endif
@@ -337,13 +337,8 @@ ifeq ($(elf),yes)
+preinit = $(addprefix $(csu-objpfx),crti.o)
+postinit = $(addprefix $(csu-objpfx),crtn.o)
endif
-ifdef objpfx
-csu-objpfx = $(objpfx)
-elf-objpfx = $(objpfx)
-else
-csu-objpfx = $(..)csu/
-elf-objpfx = $(..)elf/
-endif
+csu-objpfx = $(common-objpfx)csu/
+elf-objpfx = $(common-objpfx)elf/
ifeq (yes,$(build-shared))
# The name under which the run-time dynamic linker is installed.
diff --git a/Makefile b/Makefile
index 6f4511a8e6..d269a9f494 100644
--- a/Makefile
+++ b/Makefile
@@ -231,7 +231,7 @@ distribute := README INSTALL FAQ NOTES NEWS PROJECTS \
ansidecl.h mkinstalldirs move-if-change install-sh \
configure configure.in aclocal.m4 config.sub config.guess\
config.h.in config.make.in config-name.in Makefile.in \
- munch-tmpl.c munch.awk \
+ autolock.sh munch-tmpl.c munch.awk \
sysdep.h set-hooks.h libc-symbols.h version.h shlib-versions \
rpm/Makefile rpm/template rpm/rpmrc
diff --git a/Makerules b/Makerules
index ede97c8f31..c0afa63034 100644
--- a/Makerules
+++ b/Makerules
@@ -85,7 +85,7 @@ endif
# This is here so things in sysdep Makefiles can easily depend on foo.h as
# appropriate and not worry about where foo.h comes from, which may be
# system dependent and not known by that Makefile.
-vpath %.h $(subst $(empty) ,:,$(strip $(common-objpfx) \
+vpath %.h $(subst $(empty) ,:,$(strip $(common-objpfx) $(objpfx) \
$(addprefix $(sysdep_dir)/,$(sysdirs)) \
$(..)))
@@ -150,9 +150,9 @@ endif
# have source in .s files, and thus do not in fact need a .d file.
# So we must define rules to make .d files for .s files.
define make-dummy-dep
-$(addprefix ln $(objpfx)dummy.d ,$(filter-out $(wildcard $@),$@))
+$(addprefix ln $(common-objpfx)dummy.d ,$(filter-out $(wildcard $@),$@))
endef
-$(objpfx)dummy.d:
+$(common-objpfx)dummy.d:
echo '# .s files cannot contain includes, so they need no deps.' > $@
# It matters that this set of rules, for compiling from sources in
@@ -169,7 +169,7 @@ $(objpfx)%.o: %.s $(before-compile); $(compile-command.s)
$(objpfx)%.so: %.s $(before-compile); $(compile-command.s)
$(objpfx)%.po: %.s $(before-compile); $(compile-command.s)
$(objpfx)%.go: %.s $(before-compile); $(compile-command.s)
-$(objpfx)%.d: %.s $(objpfx)dummy.d; $(make-dummy-dep)
+$(objpfx)%.d: %.s $(common-objpfx)dummy.d; $(make-dummy-dep)
$(objpfx)%.o: %.c $(before-compile); $(compile-command.c)
$(objpfx)%.so: %.c $(before-compile); $(compile-command.c)
$(objpfx)%.po: %.c $(before-compile); $(compile-command.c)
@@ -190,7 +190,7 @@ $(objpfx)%.o: $(objpfx)%.s $(before-compile); $(compile-command.s)
$(objpfx)%.so: $(objpfx)%.s $(before-compile); $(compile-command.s)
$(objpfx)%.po: $(objpfx)%.s $(before-compile); $(compile-command.s)
$(objpfx)%.go: $(objpfx)%.s $(before-compile); $(compile-command.s)
-$(objpfx)%.d: $(objpfx)%.s $(objpfx)dummy.d; $(make-dummy-dep)
+$(objpfx)%.d: $(objpfx)%.s $(common-objpfx)dummy.d; $(make-dummy-dep)
$(objpfx)%.o: $(objpfx)%.c $(before-compile); $(compile-command.c)
$(objpfx)%.so: $(objpfx)%.c $(before-compile); $(compile-command.c)
$(objpfx)%.po: $(objpfx)%.c $(before-compile); $(compile-command.c)
@@ -239,7 +239,7 @@ $(+sysdir_pfx)sysd-rules: $(+sysdir_pfx)config.make $(..)Makerules \
\$$(compile-command.c)"; \
done; \
$(open-check-inhibit-asm) \
- echo "\$$(objpfx)%.d: $$dir/%.s \$$(objpfx)dummy.d; \
+ echo "\$$(objpfx)%.d: $$dir/%.s \$$(common-objpfx)dummy.d; \
\$$(make-dummy-dep)"; \
echo "\$$(objpfx)%.d: $$dir/%.S \$$(before-compile); \
\$$(+make-deps)"; \
@@ -279,6 +279,7 @@ OUTPUT_OPTION = -o $@
S-CPPFLAGS = $(asm-CPPFLAGS)
define +make-deps
+$(make-target-directory)
-@rm -f $@
$(+mkdep) $< $(CPPFLAGS) $($(<:$*.%=%)-CPPFLAGS) | \
sed -e 's,$(subst .,\.,$*)\.o,$(foreach o,$(object-suffixes),$(@:.d=$o)) $@,' \
@@ -289,7 +290,9 @@ ifneq (,$(objpfx))
# Continuation lines here are dangerous because they introduce spaces!
define sed-remove-objpfx
-e 's@ $(subst .,\.,$(subst @,\@,$(objpfx)))@ $$(objpfx)@g' \
--e 's@^$(subst .,\.,$(subst @,\@,$(objpfx)))@$$(objpfx)@g'
+-e 's@^$(subst .,\.,$(subst @,\@,$(objpfx)))@$$(objpfx)@g' \
+-e 's@ $(subst .,\.,$(subst @,\@,$(common-objpfx)))@ $$(common-objpfx)@g' \
+-e 's@^$(subst .,\.,$(subst @,\@,$(common-objpfx)))@$$(common-objpfx)@g'
endef
endif
@@ -327,7 +330,7 @@ LDFLAGS-c.so = -nostdlib -nostartfiles
# Give libc.so an entry point and make it directly runnable itself.
LDFLAGS-c.so += -e __libc_main
# Use our own special initializer and finalizer files for libc.so.
-elfobjdir := $(firstword $(objdir) $(patsubst ../$(subdir),.,$(..)elf))
+elfobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)elf)
$(common-objpfx)libc.so: $(elfobjdir)/soinit.so \
$(common-objpfx)libc_pic.a \
$(elfobjdir)/sofini.so $(elfobjdir)/ld.so
@@ -443,6 +446,7 @@ ifndef objects
# Create the stamp$o files to keep the parent makefile happy.
subdir_lib: $(foreach o,$(object-suffixes),$(objpfx)stamp$o-$(subdir))
$(foreach o,$(object-suffixes),$(objpfx)stamp$o-$(subdir)):
+ $(make-target-directory)
rm -f $@; > $@
else
@@ -471,17 +475,13 @@ object-suffixes-left := $(object-suffixes)
include $(o-iterator)
define do-ar
topdir=`cd $(..).; pwd`; \
-$(patsubst %,cd %;,$(objdir)) \
+$(patsubst %/,cd %;,$(objpfx)) \
$$topdir/autolock.sh ${O%-lib}.lck $(AR) cru$(verbose) ${O%-lib} \
$(patsubst $(objpfx)%,%,$^)
rm -f $@
touch $@
endef
-ifdef subdir
-O%-lib = $(filter ../,$(firstword $(objdir) ../))$(patsubst %,$(libtype$*),c)
-else
-O%-lib = $(patsubst %,$(libtype$*),c)
-endif
+O%-lib = $(..)$(patsubst %,$(libtype$*),c)
endif
@@ -496,8 +496,7 @@ $(common-objpfx)$(patsubst %,$(libtype$o),c)($(ar-symtab-name)): \
$$(RANLIB) $$(common-objpfx)$$(patsubst %,$$(libtype$o),c)
endef
ifndef subdir
-subdirs-stamps := $(foreach d,$(subdirs),\
- $(firstword $(objdir) $(subdir))/stamp%-$d)
+subdirs-stamps := $(foreach d,$(subdirs),$(common-objpfx)$d/stamp%-$d)
subdirs-stamp-o = $(subst %,$o,$(subdirs-stamps))
$(subdirs-stamps): subdir_lib;
endif
@@ -512,7 +511,7 @@ objects objs: $(foreach o,$(object-suffixes),$(o-objects)) \
# Canned sequence for building an extra library archive.
define build-extra-lib
-$(patsubst %,cd %;,$(objdir)) \
+$(patsubst %/,cd %;,$(objpfx)) \
$(AR) cru$(verbose) $(@:$(objpfx)%=%) \
$(patsubst $(objpfx)%,%,$^)
$(RANLIB) $@
@@ -736,12 +735,7 @@ cd $(@D); $(BUILD_CC) $(BUILD_CFLAGS) $(<:$(common-objpfx)%=%) -o $(@F)
endef
# We always want to use configuration definitions.
-ifdef objdir
-# This is always used in $(common-objdir), so we use no directory name.
-BUILD_CFLAGS = -include config.h
-else
BUILD_CFLAGS = -include $(..)config.h
-endif
# Support the GNU standard name for this target.
.PHONY: check
@@ -773,7 +767,7 @@ common-mostlyclean:
$(addsuffix .o,$(tests) $(others)) \
$(addsuffix .out,$(tests)))
-rm -f $(addprefix $(objpfx),$(extra-objs) $(install-lib))
- -rm -f core $(objpfx)stub-$(subdir)
+ -rm -f core $(common-objpfx)stub-$(subdir)
$(rmobjs)
define rmobjs
$(foreach o,$(object-suffixes),
@@ -796,7 +790,7 @@ s = $(sysdep_dir)/stub
$(common-objpfx)stub-$(subdir): $(+depfiles)
# Use /dev/null since `...` might expand to empty.
(s=`cd $s; /bin/pwd`; \
- $(patsubst %,cd %;,$(objdir)) \
+ $(patsubst %/,cd %;,$(objpfx)) \
sed -n 's/^stub_warning *(\([^)]*\).*$$/#define __stub_\1/p' \
`sed -n 's@^.*$s/\([a-z0-9_-]*\.c\).*$$@'"$$s"/'\1@p' \
$(patsubst $(objpfx)%,%,$^) /dev/null` \
diff --git a/README.libm b/README.libm
new file mode 100644
index 0000000000..fd5dcc3e98
--- /dev/null
+++ b/README.libm
@@ -0,0 +1,31 @@
+The following functions for the `long double' versions of the libm
+function have to be written:
+
+e_acosl.c
+e_asinl.c
+e_atan2l.c
+e_acoshl.c
+e_expl.c
+e_fmodl.c
+e_hypotl.c
+e_j0l.c
+e_j1l.c
+e_jnl.c
+e_lgammal_r.c
+e_logl.c
+e_log10l.c
+e_powl.c
+e_rem_pio2l.c
+e_sinhl.c
+e_sqrtl.c
+
+k_cosl.c
+k_rem_pio2l.c
+k_sinl.c
+k_tanl.c
+
+s_atanl.c
+s_cbrtl.c
+s_erfl.c
+s_expm1l.c
+s_log1pl.c
diff --git a/Rules b/Rules
index 665ac0f685..a2010d657b 100644
--- a/Rules
+++ b/Rules
@@ -62,16 +62,16 @@ subdir_lib: lib-noranlib
# Some subdirs need to install a dummy library.
# They can use "$(objpfx)libfnord.a: $(dep-dummy-lib); $(make-dummy-lib)".
-dep-dummy-lib = $(objpfx)dummy.o
+dep-dummy-lib = $(common-objpfx)dummy.o
define make-dummy-lib
$(AR) cr$(verbose) $@ $<
endef
-$(objpfx)dummy.c:
+$(common-objpfx)dummy.c:
rm -f $@
echo 'void __dummy__ () { }' > $@
-$(objpfx)empty.c:
+$(common-objpfx)empty.c:
cp -f /dev/null $@
-generated := $(generated) dummy.o dummy.c empty.c empty.o
+generated := $(generated) $(..)dummy.o $(..)dummy.c $(..)empty.c $(..)empty.o
# This makes all the auxilliary and test programs.
@@ -141,7 +141,7 @@ endif
ifdef static-only-routines
# These routines are to be omitted from the shared library object,
# so we replace the PIC objects for them with the empty object file.
-$(static-only-routines:%=$(objpfx)%.so): %.so: $(objpfx)empty.o
+$(static-only-routines:%=$(objpfx)%.so): %.so: $(common-objpfx)empty.o
rm -f $@
ln $< $@
endif
diff --git a/bare/Makefile b/bare/Makefile
index 588a713c83..573515347c 100644
--- a/bare/Makefile
+++ b/bare/Makefile
@@ -48,7 +48,7 @@ $(objpfx)lib$(config-vendor).a: $(bare-routines:%=$(objpfx)%.o)
# from scratch each time.
rm -f $@
ifdef objdir
- cd $(objdir); $(AR) cq$(verbose) $@ $(^:$(objpfx)%=%)
+ cd $(objpfx); $(AR) cq$(verbose) $(@:$(objpfx)%=%) $(^:$(objpfx)%=%)
else
$(AR) cq$(verbose) $@ $^
endif
diff --git a/catgets/gencat.c b/catgets/gencat.c
index e78fb0ace0..2e275fcef2 100644
--- a/catgets/gencat.c
+++ b/catgets/gencat.c
@@ -212,7 +212,8 @@ Mandatory arguments to long options are mandatory for short options too.\n\
-o, --output=NAME write output to file NAME\n\
-V, --version output version information and exit\n\
If INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n\
-is -, output is written to standard output.\n"),
+is -, output is written to standard output.\n\
+Report bugs to <bug-glibc@gnu.ai.mit.edu>.\n"),
program_invocation_name, program_invocation_name);
exit (status);
diff --git a/db/makedb.c b/db/makedb.c
index a215f25e59..d72159579d 100644
--- a/db/makedb.c
+++ b/db/makedb.c
@@ -207,7 +207,8 @@ Mandatory arguments to long options are mandatory for short options too.\n\
--quiet don't print messages while building database\n\
-u, --undo print content of database file, one entry a line\n\
-V, --version output version information and exit\n\
-If INPUT-FILE is -, input is read from standard input.\n"),
+If INPUT-FILE is -, input is read from standard input.\n\
+Report bugs to <bug-glibc@gnu.ai.mit.edu>.\n"),
program_invocation_name, program_invocation_name,
program_invocation_name);
diff --git a/locale/programs/locale.c b/locale/programs/locale.c
index a9e415d6b7..a4254e3000 100644
--- a/locale/programs/locale.c
+++ b/locale/programs/locale.c
@@ -244,7 +244,8 @@ Mandatory arguments to long options are mandatory for short options too.\n\
-m, --charmaps write names of available charmaps\n\
\n\
-c, --category-name write names of selected categories\n\
- -k, --keyword-name write names of selected keywords\n"),
+ -k, --keyword-name write names of selected keywords\n\
+Report bugs to <bug-glibc@gnu.ai.mit.edu>."),
__progname);
exit (status);
diff --git a/locale/programs/localedef.c b/locale/programs/localedef.c
index 7a12ac87a5..d47983b277 100644
--- a/locale/programs/localedef.c
+++ b/locale/programs/localedef.c
@@ -396,7 +396,8 @@ Mandatory arguments to long options are mandatory for short options too.\n\
--posix be strictly POSIX conform\n\
\n\
System's directory for character maps: %s\n\
- locale files : %s\n"),
+ locale files : %s\n\
+Report bugs to <bug-glibc@gnu.ai.mit.edu>."),
program_invocation_name, CHARMAP_PATH, LOCALE_PATH);
exit (status);
diff --git a/manual/Makefile b/manual/Makefile
index a6cd048d6e..c0a5782ea7 100644
--- a/manual/Makefile
+++ b/manual/Makefile
@@ -165,8 +165,17 @@ $(glibc-targets):
# changed the library.
lib: $(foreach o,$(object-suffixes),$(objpfx)stamp$o-$(subdir))
stubs: $(common-objpfx)stub-manual
-$(common-objpfx)stub-manual ../po/manual.pot:; cp /dev/null $@
-$(objpfx)stamp%-$(subdir):; cp /dev/null $@
+$(common-objpfx)stub-manual ../po/manual.pot $(objpfx)stamp%-$(subdir):
+ $(make-target-directory)
+ cp /dev/null $@
+
+
+# Make the target directory if it doesn't exist, using the `mkinstalldirs'
+# script that does `mkdir -p' even if `mkdir' doesn't support that flag.
+define make-target-directory
+$(addprefix $(..)./mkinstalldirs ,\
+ $(filter-out $(wildcard $(@D:%/=%)),$(@D:%/=%)))
+endef
# The top-level glibc Makefile expects subdir_install to update the stubs file.
subdir_install: stubs
diff --git a/manual/socket.texi b/manual/socket.texi
index 0b338fca82..91084be16d 100644
--- a/manual/socket.texi
+++ b/manual/socket.texi
@@ -151,7 +151,7 @@ Use of this style is covered in detail in @ref{Connections}.
@comment BSD
@deftypevr Macro int SOCK_DGRAM
The @code{SOCK_DGRAM} style is used for sending
-individually-addressed packets, unreliably.
+individually-addressed packets, unreliably.
It is the diametrical opposite of @code{SOCK_STREAM}.
Each time you write data to a socket of this kind, that data becomes
@@ -585,7 +585,7 @@ for information about this.
* Services Database:: Ports may have symbolic names.
* Byte Order:: Different hosts may use different byte
ordering conventions; you need to
- canonicalize host address and port number.
+ canonicalize host address and port number.
* Inet Example:: Putting it all together.
@end menu
@@ -650,7 +650,7 @@ numeric address it stands for.
* Names: Host Names. Translating host names to host numbers.
@end menu
-@node Abstract Host Addresses
+@node Abstract Host Addresses
@subsubsection Internet Host Addresses
@cindex host address, Internet
@cindex Internet host address
@@ -683,7 +683,7 @@ of an Internet address specifies a network. The remaining bytes of the
Internet address specify the address within that network.
The Class A network 0 is reserved for broadcast to all networks. In
-addition, the host number 0 within each network is reserved for broadcast
+addition, the host number 0 within each network is reserved for broadcast
to all hosts in that network.
The Class A network 127 is reserved for loopback; you can always use
@@ -966,9 +966,9 @@ This condition happens when the name server could not be contacted. If
you try again later, you may succeed then.
@comment netdb.h
-@comment BSD
-@item NO_RECOVERY
-@vindex NO_RECOVERY
+@comment BSD
+@item NO_RECOVERY
+@vindex NO_RECOVERY
A non-recoverable error occurred.
@comment netdb.h
@@ -1421,7 +1421,7 @@ read and write operations. But, like pipes, sockets do not support file
positioning operations.
@end deftypefun
-For examples of how to call the @code{socket} function,
+For examples of how to call the @code{socket} function,
see @ref{File Namespace}, or @ref{Inet Example}.
@@ -1615,7 +1615,7 @@ error conditions are defined for this function:
The socket @var{socket} is not a valid file descriptor.
@item ENOTSOCK
-The socket @var{socket} is not a socket.
+File descriptor @var{socket} is not a socket.
@item EADDRNOTAVAIL
The specified address is not available on the remote machine.
@@ -2635,7 +2635,7 @@ This option gets or sets the size of the input buffer. The value is a
@comment GNU
@item SO_STYLE
@comment sys/socket.h
-@comment BSD
+@comment BSD
@itemx SO_TYPE
This option can be used with @code{getsockopt} only. It is used to
get the socket's communication style. @code{SO_TYPE} is the
@@ -2644,7 +2644,7 @@ The value has type @code{int} and its value designates a communication
style; see @ref{Communication Styles}.
@comment sys/socket.h
-@comment BSD
+@comment BSD
@item SO_ERROR
@c Extra blank line here makes the table look better.
@@ -2712,7 +2712,7 @@ network.
@deftypefun {struct netent *} getnetbyaddr (long @var{net}, int @var{type})
The @code{getnetbyaddr} function returns information about the network
of type @var{type} with number @var{net}. You should specify a value of
-@code{AF_INET} for the @var{type} argument for Internet networks.
+@code{AF_INET} for the @var{type} argument for Internet networks.
@code{getnetbyaddr} returns a null pointer if there is no such
network.
diff --git a/nss/Makefile b/nss/Makefile
index 4a36dcf580..b900e96cc3 100644
--- a/nss/Makefile
+++ b/nss/Makefile
@@ -66,10 +66,9 @@ libnss_db-inhibit-o = $(filter-out .so,$(object-suffixes))
include ../Rules
-$(objpfx)libnss_dns.so: $(firstword $(objdir) $(..)resolv)/libresolv.so
+$(objpfx)libnss_dns.so: $(common-objpfx)resolv/libresolv.so
-$(objpfx)libnss_db.so: $(firstword $(objdir) $(..)db)/libdb.so \
- $(objpfx)libnss_files.so
+$(objpfx)libnss_db.so: $(common-objpfx)db/libdb.so $(objpfx)libnss_files.so
$(libnss_db-routines:%=$(objpfx)%.c): $(objpfx)db-%.c: nss_files/files-%.c
@rm -f $@.new
diff --git a/nss/db-Makefile b/nss/db-Makefile
new file mode 100644
index 0000000000..881cabfa4b
--- /dev/null
+++ b/nss/db-Makefile
@@ -0,0 +1,68 @@
+DATABASES = $(wildcard /etc/passwd /etc/group /etc/ethers /etc/protocols \
+ /etc/rpc /etc/services /etc/shadow)
+
+VAR_DB = /var/db
+
+AWK = awk
+MAKEDB = makedb --quiet
+
+all: $(patsubst %,$(VAR_DB)/%.db,$(notdir $(DATABASES)))
+
+
+$(VAR_DB)/passwd.db: /etc/passwd
+ @echo -n "$(patsubst %.db,%,$(@F))... "
+ @$(AWK) 'BEGIN { FS=":"; OFS=":" } \
+ /^[^#]/ { printf ".%s ", $$1; print; \
+ printf "=%s ", $$3; print }' $^ | \
+ $(MAKEDB) -o $@ -
+ @echo "done."
+
+$(VAR_DB)/group.db: /etc/group
+ @echo -n "$(patsubst %.db,%,$(@F))... "
+ @$(AWK) 'BEGIN { FS=":"; OFS=":" } \
+ /^[^#]/ { printf ".%s ", $$1; print; \
+ printf "=%s ", $$3; print }' $^ | \
+ $(MAKEDB) -o $@ -
+ @echo "done."
+
+$(VAR_DB)/ethers.db: /etc/ethers
+ @echo -n "$(patsubst %.db,%,$(@F))... "
+ @$(AWK) '/^[^#]/ { printf ".%s ", $$1; print; \
+ printf "=%s ", $$2; print }' $^ | \
+ $(MAKEDB) -o $@ -
+ @echo "done."
+
+$(VAR_DB)/protocols.db: /etc/protocols
+ @echo -n "$(patsubst %.db,%,$(@F))... "
+ @$(AWK) '/^[^#]/ { printf ".%s ", $$1; print; \
+ printf "=%s ", $$2; print; \
+ for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
+ { printf ".%s ", $$i; print } }' $^ | \
+ $(MAKEDB) -o $@ -
+ @echo "done."
+
+$(VAR_DB)/rpc.db: /etc/rpc
+ @echo -n "$(patsubst %.db,%,$(@F))... "
+ @$(AWK) '/^[^#]/ { printf ".%s ", $$1; print; \
+ printf "=%s ", $$2; print; \
+ for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
+ { printf ".%s ", $$i; print } }' $^ | \
+ $(MAKEDB) -o $@ -
+ @echo "done."
+
+$(VAR_DB)/services.db: /etc/services
+ @echo -n "$(patsubst %.db,%,$(@F))... "
+ @$(AWK) 'BEGIN { FS="[ \t/]+" } \
+ /^[^#]/ { printf ".%s/%s ", $$1, $$3; print; \
+ printf "=%s/%s ", $$2, $$3; print; \
+ for (i = 4; i <= NF && !($$i ~ /^#/); ++i) \
+ { printf ".%s/%s ", $$i, $$3; print } }' $^ | \
+ $(MAKEDB) -o $@ -
+ @echo "done."
+
+$(VAR_DB)/shadow.db: /etc/shadow
+ @echo -n "$(patsubst %.db,%,$(@F))... "
+ @$(AWK) 'BEGIN { FS=":"; OFS=":" } \
+ /^[^#]/ { printf ".%s ", $$1; print }' $^ | \
+ $(MAKEDB) -o $@ -
+ @echo "done."
diff --git a/nss/nsswitch.c b/nss/nsswitch.c
index 16e1caf50d..79c9d2706d 100644
--- a/nss/nsswitch.c
+++ b/nss/nsswitch.c
@@ -235,12 +235,17 @@ __nss_configure_lookup (const char *dbname, const char *service_line)
static int
nss_dlerror_run (void (*operate) (void))
{
- const char *last_errstring = NULL;
+ char *last_errstring = NULL;
const char *last_object_name = NULL;
+ int result;
(void) _dl_catch_error (&last_errstring, &last_object_name, operate);
- return last_errstring != NULL;
+ result = last_errstring != NULL;
+ if (result)
+ free (last_errstring);
+
+ return result;
}
diff --git a/nss/nsswitch.conf b/nss/nsswitch.conf
new file mode 100644
index 0000000000..08bd96ea10
--- /dev/null
+++ b/nss/nsswitch.conf
@@ -0,0 +1,16 @@
+# /etc/nsswitch.conf
+#
+# Example configuration of GNU Name Service Switch functionality.
+#
+
+passwd: db files
+group: db files
+shadow: db files
+
+hosts: files dns
+networks: files dns
+
+protocols: db files
+services: db files
+ethers: db files
+rpc: db files
diff --git a/sysdeps/generic/Makefile b/sysdeps/generic/Makefile
index f363f1c89d..f160dc8892 100644
--- a/sysdeps/generic/Makefile
+++ b/sysdeps/generic/Makefile
@@ -41,6 +41,7 @@ $(objpfx)siglist.c: $(objpfx)make_siglist
mv $@-tmp $@
$(objpfx)make_siglist: $(sysdep_dir)/generic/make_siglist.c
+ $(make-target-directory)
signum_h=`cd $(dir $(firstword $(wildcard \
$(+sysdep_dirs:%=%/signum.h)))); pwd`/signum.h; \
$(native-compile) \
diff --git a/sysdeps/libm-ieee754/e_acoshl.c b/sysdeps/libm-ieee754/e_acoshl.c
new file mode 100644
index 0000000000..8af7c27aa7
--- /dev/null
+++ b/sysdeps/libm-ieee754/e_acoshl.c
@@ -0,0 +1,72 @@
+/* e_acoshl.c -- long double version of e_acosh.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* __ieee754_acoshl(x)
+ * Method :
+ * Based on
+ * acoshl(x) = logl [ x + sqrtl(x*x-1) ]
+ * we have
+ * acoshl(x) := logl(x)+ln2, if x is large; else
+ * acoshl(x) := logl(2x-1/(sqrtl(x*x-1)+x)) if x>2; else
+ * acoshl(x) := log1pl(t+sqrtl(2.0*t+t*t)); where t=x-1.
+ *
+ * Special cases:
+ * acoshl(x) is NaN with signal if x<1.
+ * acoshl(NaN) is NaN without signal.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double
+#else
+static long double
+#endif
+one = 1.0,
+ln2 = 6.931471805599453094287e-01L; /* 0x3FFE, 0xB17217F7, 0xD1CF79AC */
+
+#ifdef __STDC__
+ long double __ieee754_acoshl(long double x)
+#else
+ long double __ieee754_acoshl(x)
+ long double x;
+#endif
+{
+ long double t;
+ u_int32_t se,i0,i1;
+ EXTRACT_LDOUBLE_WORDS(se,i0,i1,x);
+ if(se<0x3fff) { /* x < 1 */
+ return (x-x)/(x-x);
+ } else if(hx >=0x401b) { /* x > 2**28 */
+ if(hx >=0x7fff) { /* x is inf of NaN */
+ return x+x;
+ } else
+ return __ieee754_logl(x)+ln2; /* acoshl(huge)=logl(2x) */
+ } else if(((se-0x3fff)|i0|i1)==0) {
+ return 0.0; /* acosh(1) = 0 */
+ } else if (hx > 0x4000) { /* 2**28 > x > 2 */
+ t=x*x;
+ return __ieee754_logl(2.0*x-one/(x+__ieee754_sqrtl(t-one)));
+ } else { /* 1<x<2 */
+ t = x-one;
+ return __log1pl(t+__sqrtl(2.0*t+t*t));
+ }
+}
diff --git a/sysdeps/libm-ieee754/e_atanhl.c b/sysdeps/libm-ieee754/e_atanhl.c
new file mode 100644
index 0000000000..d74db481d0
--- /dev/null
+++ b/sysdeps/libm-ieee754/e_atanhl.c
@@ -0,0 +1,79 @@
+/* s_atanhl.c -- long double version of s_atan.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* __ieee754_atanhl(x)
+ * Method :
+ * 1.Reduced x to positive by atanh(-x) = -atanh(x)
+ * 2.For x>=0.5
+ * 1 2x x
+ * atanhl(x) = --- * log(1 + -------) = 0.5 * log1p(2 * --------)
+ * 2 1 - x 1 - x
+ *
+ * For x<0.5
+ * atanhl(x) = 0.5*log1pl(2x+2x*x/(1-x))
+ *
+ * Special cases:
+ * atanhl(x) is NaN if |x| > 1 with signal;
+ * atanhl(NaN) is that NaN with no signal;
+ * atanhl(+-1) is +-INF with signal.
+ *
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double one = 1.0, huge = 1e16380;
+#else
+static long double one = 1.0, huge = 1e16380;
+#endif
+
+#ifdef __STDC__
+static const long double zero = 0.0;
+#else
+static double long zero = 0.0;
+#endif
+
+#ifdef __STDC__
+ long double __ieee754_atanhl(long double x)
+#else
+ long double __ieee754_atanhl(x)
+ long double x;
+#endif
+{
+ long double t;
+ int32_t ix;
+ u_int32_t se,i0,i1;
+ EXTRACT_LDOUBLE_WORDS(se,i0,i1,x);
+ ix = se&0x7fff;
+ if ((ix+((((i0&0x7fffffff)|i1)|(-((i0&0x7fffffff)|i1)))>>31))>0x3fff)
+ /* |x|>1 */
+ return (x-x)/(x-x);
+ if(ix==0x3fff)
+ return x/zero;
+ if(ix<0x3fe3&&(huge+x)>zero) return x; /* x<2**-28 */
+ SET_LDOUBLE_EXP(x,ix);
+ if(ix<0x3ffe) { /* x < 0.5 */
+ t = x+x;
+ t = 0.5*__log1pl(t+t*x/(one-x));
+ } else
+ t = 0.5*__log1pl((x+x)/(one-x));
+ if(se>0x7fff) return t; else return -t;
+}
diff --git a/sysdeps/libm-ieee754/e_remainderl.c b/sysdeps/libm-ieee754/e_remainderl.c
new file mode 100644
index 0000000000..3b2cd7c5e5
--- /dev/null
+++ b/sysdeps/libm-ieee754/e_remainderl.c
@@ -0,0 +1,83 @@
+/* e_remainderl.c -- long double version of e_remainder.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* __ieee754_remainderl(x,p)
+ * Return :
+ * returns x REM p = x - [x/p]*p as if in infinite
+ * precise arithmetic, where [x/p] is the (infinite bit)
+ * integer nearest x/p (in half way case choose the even one).
+ * Method :
+ * Based on fmod() return x-[x/p]chopped*p exactlp.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double zero = 0.0;
+#else
+static long double zero = 0.0;
+#endif
+
+
+#ifdef __STDC__
+ long double __ieee754_remainderl(long double x, long double p)
+#else
+ long double __ieee754_remainderl(x,p)
+ long double x,p;
+#endif
+{
+ u_int32_t sx,sex,sep,x0,x1,p0,p1;
+ long double p_half;
+
+ EXTRACT_LDOUBLE_WORDS(sex,x0,x1,x);
+ EXTRACT_LDOUBLE_WORDS(sep,p0,p1,p);
+ sx = sex&0x8000;
+ sep &= 0x7fff;
+ sex &= 0x7fff;
+
+ /* purge off exception values */
+ if((sep|p0|p1)==0) return (x*p)/(x*p); /* p = 0 */
+ if((sex==0x7fff)|| /* x not finite */
+ ((sep==0x7fff)&& /* p is NaN */
+ ((p0|p1)!=0)))
+ return (x*p)/(x*p);
+
+
+ if (sep<0x7ffe) x = __ieee754_fmodl(x,p+p); /* now x < 2p */
+ if (((sex-sep)|(x0-p0)|(x1-p1))==0) return zero*x;
+ x = fabsl(x);
+ p = fabsl(p);
+ if (sep<0x0002) {
+ if(x+x>p) {
+ x-=p;
+ if(x+x>=p) x -= p;
+ }
+ } else {
+ p_half = 0.5*p;
+ if(x>p_half) {
+ x-=p;
+ if(x>=p_half) x -= p;
+ }
+ }
+ GET_LDOUBLE_EXP(sex,x);
+ SET_LDOUBLE_EXP(x,sex^sx);
+ return x;
+}
diff --git a/sysdeps/libm-ieee754/e_scalbl.c b/sysdeps/libm-ieee754/e_scalbl.c
new file mode 100644
index 0000000000..0dd36d422d
--- /dev/null
+++ b/sysdeps/libm-ieee754/e_scalbl.c
@@ -0,0 +1,59 @@
+/* e_scalbl.c -- long double version of s_scalb.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/*
+ * __ieee754_scalbl(x, fn) is provide for
+ * passing various standard test suite. One
+ * should use scalbnl() instead.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef _SCALB_INT
+#ifdef __STDC__
+ long double __ieee754_scalbl(long double x, int fn)
+#else
+ long double __ieee754_scalbl(x,fn)
+ long double x; int fn;
+#endif
+#else
+#ifdef __STDC__
+ long double __ieee754_scalbl(long double x, long double fn)
+#else
+ long double __ieee754_scalbl(x,fn)
+ long double x, fn;
+#endif
+#endif
+{
+#ifdef _SCALB_INT
+ return scalbnl(x,fn);
+#else
+ if (isnanl(x)||isnanl(fn)) return x*fn;
+ if (!finitel(fn)) {
+ if(fn>0.0) return x*fn;
+ else return x/(-fn);
+ }
+ if (rintl(fn)!=fn) return (fn-fn)/(fn-fn);
+ if ( fn > 65000.0) return scalbnl(x, 65000);
+ if (-fn > 65000.0) return scalbnl(x,-65000);
+ return scalbnl(x,(int)fn);
+#endif
+}
diff --git a/sysdeps/libm-ieee754/s_asinhl.c b/sysdeps/libm-ieee754/s_asinhl.c
new file mode 100644
index 0000000000..823288a1a0
--- /dev/null
+++ b/sysdeps/libm-ieee754/s_asinhl.c
@@ -0,0 +1,70 @@
+/* s_asinhl.c -- long double version of s_asinh.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* asinhl(x)
+ * Method :
+ * Based on
+ * asinhl(x) = signl(x) * logl [ |x| + sqrtl(x*x+1) ]
+ * we have
+ * asinhl(x) := x if 1+x*x=1,
+ * := signl(x)*(logl(x)+ln2)) for large |x|, else
+ * := signl(x)*logl(2|x|+1/(|x|+sqrtl(x*x+1))) if|x|>2, else
+ * := signl(x)*log1pl(|x| + x^2/(1 + sqrtl(1+x^2)))
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double
+#else
+static long double
+#endif
+one = 1.000000000000000000000e+00L, /* 0x3FFF, 0x00000000, 0x00000000 */
+ln2 = 6.931471805599453094287e-01L, /* 0x3FFE, 0xB17217F7, 0xD1CF79AC */
+huge= 1.000000000000000000e+16380L;
+
+#ifdef __STDC__
+ long double __asinhl(long double x)
+#else
+ long double __asinhl(x)
+ long double x;
+#endif
+{
+ long double t,w;
+ int32_t hx,ix;
+ GET_LDOUBLE_EXP(hx,x);
+ ix = hx&0x7fff;
+ if(ix==0x7fff) return x+x; /* x is inf or NaN */
+ if(ix< 0x3fde) { /* |x|<2**-34 */
+ if(huge+x>one) return x; /* return x inexact except 0 */
+ }
+ if(ix>0x4020) { /* |x| > 2**34 */
+ w = __ieee754_logl(fabsl(x))+ln2;
+ } else if (ix>0x4000) { /* 2**34 > |x| > 2.0 */
+ t = fabsl(x);
+ w = __ieee754_logl(2.0*t+one/(__ieee754_sqrtl(x*x+one)+t));
+ } else { /* 2.0 > |x| > 2**-28 */
+ t = x*x;
+ w =__log1pl(fabsl(x)+t/(one+__ieee754_sqrtl(one+t)));
+ }
+ if(hx>0x7fff) return w; else return -w;
+}
+weak_alias (__asinhl, asinhl)
diff --git a/sysdeps/libm-ieee754/s_cosl.c b/sysdeps/libm-ieee754/s_cosl.c
new file mode 100644
index 0000000000..0e7a06d8ba
--- /dev/null
+++ b/sysdeps/libm-ieee754/s_cosl.c
@@ -0,0 +1,87 @@
+/* s_cosl.c -- long double version of s_cos.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* cosl(x)
+ * Return cosine function of x.
+ *
+ * kernel function:
+ * __kernel_sinl ... sine function on [-pi/4,pi/4]
+ * __kernel_cosl ... cosine function on [-pi/4,pi/4]
+ * __ieee754_rem_pio2l ... argument reduction routine
+ *
+ * Method.
+ * Let S,C and T denote the sin, cos and tan respectively on
+ * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ * in [-pi/4 , +pi/4], and let n = k mod 4.
+ * We have
+ *
+ * n sin(x) cos(x) tan(x)
+ * ----------------------------------------------------------
+ * 0 S C T
+ * 1 C -S -1/T
+ * 2 -S -C T
+ * 3 -C S -1/T
+ * ----------------------------------------------------------
+ *
+ * Special cases:
+ * Let trig be any of sin, cos, or tan.
+ * trig(+-INF) is NaN, with signals;
+ * trig(NaN) is that NaN;
+ *
+ * Accuracy:
+ * TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+ long double __cosl(long double x)
+#else
+ long double __cosl(x)
+ long double x;
+#endif
+{
+ long double y[2],z=0.0;
+ int32_t n, se;
+
+ /* High word of x. */
+ GET_LDOUBLE_EXP(se,x);
+
+ /* |x| ~< pi/4 */
+ se &= 0x7fff;
+ if(ix <= 0x3ffe) return __kernel_cosl(x,z);
+
+ /* cos(Inf or NaN) is NaN */
+ else if (se==0x7fff) return x-x;
+
+ /* argument reduction needed */
+ else {
+ n = __ieee754_rem_pio2l(x,y);
+ switch(n&3) {
+ case 0: return __kernel_cosl(y[0],y[1]);
+ case 1: return -__kernel_sinl(y[0],y[1],1);
+ case 2: return -__kernel_cosl(y[0],y[1]);
+ default:
+ return __kernel_sinl(y[0],y[1],1);
+ }
+ }
+}
+weak_alias (__cosl, cosl)
diff --git a/sysdeps/libm-ieee754/s_sinl.c b/sysdeps/libm-ieee754/s_sinl.c
new file mode 100644
index 0000000000..ade86dfa66
--- /dev/null
+++ b/sysdeps/libm-ieee754/s_sinl.c
@@ -0,0 +1,87 @@
+/* s_sinl.c -- long double version of s_sin.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* sinl(x)
+ * Return sine function of x.
+ *
+ * kernel function:
+ * __kernel_sinl ... sine function on [-pi/4,pi/4]
+ * __kernel_cosl ... cose function on [-pi/4,pi/4]
+ * __ieee754_rem_pio2l ... argument reduction routine
+ *
+ * Method.
+ * Let S,C and T denote the sin, cos and tan respectively on
+ * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ * in [-pi/4 , +pi/4], and let n = k mod 4.
+ * We have
+ *
+ * n sin(x) cos(x) tan(x)
+ * ----------------------------------------------------------
+ * 0 S C T
+ * 1 C -S -1/T
+ * 2 -S -C T
+ * 3 -C S -1/T
+ * ----------------------------------------------------------
+ *
+ * Special cases:
+ * Let trig be any of sin, cos, or tan.
+ * trig(+-INF) is NaN, with signals;
+ * trig(NaN) is that NaN;
+ *
+ * Accuracy:
+ * TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+ long double __sinl(long double x)
+#else
+ long double __sinl(x)
+ long double x;
+#endif
+{
+ long double y[2],z=0.0;
+ int32_t n, se;
+
+ /* High word of x. */
+ GET_LDOUBLE_EXP(se,x);
+
+ /* |x| ~< pi/4 */
+ se &= 0x7fff;
+ if(se <= 0x3ffe) return __kernel_sinl(x,z,0);
+
+ /* sin(Inf or NaN) is NaN */
+ else if (se==0x7fff) return x-x;
+
+ /* argument reduction needed */
+ else {
+ n = __ieee754_rem_pio2l(x,y);
+ switch(n&3) {
+ case 0: return __kernel_sinl(y[0],y[1],1);
+ case 1: return __kernel_cosl(y[0],y[1]);
+ case 2: return -__kernel_sinl(y[0],y[1],1);
+ default:
+ return -__kernel_cosl(y[0],y[1]);
+ }
+ }
+}
+weak_alias (__sinl, sinl)
diff --git a/sysdeps/libm-ieee754/s_tanhl.c b/sysdeps/libm-ieee754/s_tanhl.c
new file mode 100644
index 0000000000..984f67108b
--- /dev/null
+++ b/sysdeps/libm-ieee754/s_tanhl.c
@@ -0,0 +1,91 @@
+/* s_tanhl.c -- long double version of s_tanh.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* tanhl(x)
+ * Return the Hyperbolic Tangent of x
+ *
+ * Method :
+ * x -x
+ * e - e
+ * 0. tanhl(x) is defined to be -----------
+ * x -x
+ * e + e
+ * 1. reduce x to non-negative by tanhl(-x) = -tanhl(x).
+ * 2. 0 <= x <= 2**-55 : tanhl(x) := x*(one+x)
+ * -t
+ * 2**-55 < x <= 1 : tanhl(x) := -----; t = expm1l(-2x)
+ * t + 2
+ * 2
+ * 1 <= x <= 23.0 : tanhl(x) := 1- ----- ; t=expm1l(2x)
+ * t + 2
+ * 23.0 < x <= INF : tanhl(x) := 1.
+ *
+ * Special cases:
+ * tanhl(NaN) is NaN;
+ * only tanhl(0)=0 is exact for finite argument.
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+static const long double one=1.0, two=2.0, tiny = 1.0e-16380L;
+#else
+static long double one=1.0, two=2.0, tiny = 1.0e-16380L;
+#endif
+
+#ifdef __STDC__
+ long double __tanhl(long double x)
+#else
+ long double __tanhl(x)
+ long double x;
+#endif
+{
+ long double t,z;
+ int32_t se,j0,j1,ix;
+
+ /* High word of |x|. */
+ GET_LDOUBLE_WORDS(se,j0,j1,x);
+ ix = se&0x7fff;
+
+ /* x is INF or NaN */
+ if(ix==0x7fff) {
+ if (se>=0x7fff) return one/x+one; /* tanhl(+-inf)=+-1 */
+ else return one/x-one; /* tanhl(NaN) = NaN */
+ }
+
+ /* |x| < 23 */
+ if (ix < 0x4003 || (ix == 0x4003 && j0 < 0xb8000000)) { /* |x|<23 */
+ if (ix<0x3fc8) /* |x|<2**-55 */
+ return x*(one+x); /* tanh(small) = small */
+ if (ix>=0x3fff) { /* |x|>=1 */
+ t = __expm1l(two*fabsl(x));
+ z = one - two/(t+two);
+ } else {
+ t = __expm1l(-two*fabsl(x));
+ z= -t/(t+two);
+ }
+ /* |x| > 23, return +-1 */
+ } else {
+ z = one - tiny; /* raised inexact flag */
+ }
+ return (se>0x7fff)? z: -z;
+}
+weak_alias (__tanhl, tanhl)
diff --git a/sysdeps/libm-ieee754/s_tanl.c b/sysdeps/libm-ieee754/s_tanl.c
new file mode 100644
index 0000000000..bce6d07f3d
--- /dev/null
+++ b/sysdeps/libm-ieee754/s_tanl.c
@@ -0,0 +1,81 @@
+/* s_tanl.c -- long double version of s_tan.c.
+ * Conversion to long double by Ulrich Drepper,
+ * Cygnus Support, drepper@cygnus.com.
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* tanl(x)
+ * Return tangent function of x.
+ *
+ * kernel function:
+ * __kernel_tanl ... tangent function on [-pi/4,pi/4]
+ * __ieee754_rem_pio2l ... argument reduction routine
+ *
+ * Method.
+ * Let S,C and T denote the sin, cos and tan respectively on
+ * [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
+ * in [-pi/4 , +pi/4], and let n = k mod 4.
+ * We have
+ *
+ * n sin(x) cos(x) tan(x)
+ * ----------------------------------------------------------
+ * 0 S C T
+ * 1 C -S -1/T
+ * 2 -S -C T
+ * 3 -C S -1/T
+ * ----------------------------------------------------------
+ *
+ * Special cases:
+ * Let trig be any of sin, cos, or tan.
+ * trig(+-INF) is NaN, with signals;
+ * trig(NaN) is that NaN;
+ *
+ * Accuracy:
+ * TRIG(x) returns trig(x) nearly rounded
+ */
+
+#include "math.h"
+#include "math_private.h"
+
+#ifdef __STDC__
+ long double __tanl(long double x)
+#else
+ long double __tanl(x)
+ long double x;
+#endif
+{
+ long double y[2],z=0.0;
+ int32_t n, se;
+
+ /* High word of x. */
+ GET_LDOUBLE_EXP(se,x);
+
+ /* |x| ~< pi/4 */
+ se &= 0x7fff;
+ if(ix <= 0x3ffe) return __kernel_tanl(x,z,1);
+
+ /* tan(Inf or NaN) is NaN */
+ else if (se==0x7fff) return x-x; /* NaN */
+
+ /* argument reduction needed */
+ else {
+ n = __ieee754_rem_pio2l(x,y);
+ return __kernel_tanl(y[0],y[1],1-((n&1)<<1)); /* 1 -- n even
+ -1 -- n odd */
+ }
+}
+weak_alias (__tanl, tanl)
diff --git a/sysdeps/mach/Makefile b/sysdeps/mach/Makefile
index a179b1f83e..2f2a12cb3b 100644
--- a/sysdeps/mach/Makefile
+++ b/sysdeps/mach/Makefile
@@ -25,11 +25,7 @@ ifneq (mach,$(subdir))
# Subdirectories other than mach/ might use the generated Mach headers.
# So make sure we get a chance to run in mach/ to make them before all else.
-ifdef objpfx
-mach-objpfx = $(objpfx)
-else
-mach-objpfx = $(..)mach/
-endif
+mach-objpfx = $(common-objpfx)mach/
# These are all the generated files that <mach.h> includes.
mach-before-compile := $(mach-objpfx)mach-shortcuts.h \
diff --git a/sysdeps/mach/hurd/Makefile b/sysdeps/mach/hurd/Makefile
index 974edfc07c..c9ac18b426 100644
--- a/sysdeps/mach/hurd/Makefile
+++ b/sysdeps/mach/hurd/Makefile
@@ -41,11 +41,7 @@ ifeq (,$(filter mach hurd,$(subdir)))
# (But we don't want to do this in mach/, because hurd/ needs some things
# there, and we know mach/ doesn't need anything from hurd/.)
-ifdef objpfx
-hurd-objpfx = $(objpfx)
-else
-hurd-objpfx = $(..)hurd/
-endif
+hurd-objpfx = $(common-objpfx)hurd/
# These are all the generated headers that <hurd.h> includes.
before-compile += $(patsubst %,$(hurd-objpfx)hurd/%.h,io fs process)
@@ -104,12 +100,10 @@ endif
# For the shared library, we don't need to do the linker script machination.
# Instead, we specify the required libraries when building the shared object.
-rpcuserlibs := $(firstword $(objdir) $(..)mach)/libmachuser.so \
- $(firstword $(objdir) $(..)hurd)/libhurduser.so
+rpcuserlibs := $(common-objpfx)mach/libmachuser.so \
+ $(common-objpfx)hurd/libhurduser.so
$(common-objpfx)libc.so: $(rpcuserlibs)
-ifndef objpfx
-rpath-link += $(..)mach:$(..)hurd
-endif
+rpath-link += $(common-objpfx)mach:$(common-objpfx)hurd
# The RPC stubs from these libraries are needed in building the dynamic
# linker, too. It must be self-contained, so we link the needed PIC
diff --git a/sysdeps/unix/Makefile b/sysdeps/unix/Makefile
index 9c718c0906..627b78c70c 100644
--- a/sysdeps/unix/Makefile
+++ b/sysdeps/unix/Makefile
@@ -209,7 +209,7 @@ common-generated := $(common-generated) \
endif
ifeq ($(subdir),stdio-common)
-ifeq (,$(filter-out $(sysdep_dir)/stub/ $(common-objpfx),\
+ifeq (,$(filter-out $(sysdep_dir)/stub/ $(objpfx),\
$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/errlist.c))))))
before-compile: $(objpfx)errlist.c
@@ -302,4 +302,7 @@ ifndef no_deps
endif
endif
+$(common-objpfx)s-proto.d: $(..)sysdeps/unix/s-proto.S $(before-compile)
+ $(+make-deps)
+
endif
diff --git a/sysdeps/unix/make-syscalls.sh b/sysdeps/unix/make-syscalls.sh
index 260769ed7b..e2c09905d0 100644
--- a/sysdeps/unix/make-syscalls.sh
+++ b/sysdeps/unix/make-syscalls.sh
@@ -58,7 +58,7 @@ EOF
# Emit a compilation rule for this syscall.
echo "\
-\$(foreach o,\$(object-suffixes),\$(objpfx)$file\$o): \$(objpfx)s-proto.d
+\$(foreach o,\$(object-suffixes),\$(objpfx)$file\$o): \$(common-objpfx)s-proto.d
(echo '#include <sysdep.h>'; \\
echo 'PSEUDO ($strong, $syscall, $nargs)'; \\
echo ' ret'; \\
diff --git a/sysdeps/unix/sysv/linux/alpha/Dist b/sysdeps/unix/sysv/linux/alpha/Dist
index 5c0e8d1c7e..79ac03ff90 100644
--- a/sysdeps/unix/sysv/linux/alpha/Dist
+++ b/sysdeps/unix/sysv/linux/alpha/Dist
@@ -1,4 +1,5 @@
-alpha/ptrace.h alpha/regdef.h
+alpha/ptrace.halpha/regdef.h
ieee_get_fp_control.S ieee_set_fp_control.S
ioperm.c
init-first.h
+clone.S
diff --git a/sysdeps/unix/sysv/linux/i386/Dist b/sysdeps/unix/sysv/linux/i386/Dist
index f81ff6a146..4e4f467392 100644
--- a/sysdeps/unix/sysv/linux/i386/Dist
+++ b/sysdeps/unix/sysv/linux/i386/Dist
@@ -1,2 +1,3 @@
sys/perm.h sys/vm86.h
init-first.h
+close.S
diff --git a/sysdeps/unix/sysv/linux/m68k/Dist b/sysdeps/unix/sysv/linux/m68k/Dist
index 2c6d09e88f..a281cba3f9 100644
--- a/sysdeps/unix/sysv/linux/m68k/Dist
+++ b/sysdeps/unix/sysv/linux/m68k/Dist
@@ -1 +1,2 @@
init-first.h
+clone.S
diff --git a/version.c b/version.c
index 37468ad432..8fc5cfe0f1 100644
--- a/version.c
+++ b/version.c
@@ -26,7 +26,8 @@ Compiled by GNU CC version "__VERSION__".\n\
Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions.\n\
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\
-PARTICULAR PURPOSE.\n";
+PARTICULAR PURPOSE.\n\
+Report bugs to <bug-glibc@gnu.ai.mit.edu>.";
#include <unistd.h>