diff options
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> |