]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 16 Sep 1998 17:54:34 +0000 (17:54 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 16 Sep 1998 17:54:34 +0000 (17:54 +0000)
1998-09-14  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

* sysdeps/mach/hurd/dl-cache.c (_dl_unload_cache): New dummy
function.  Reported by okuji@kuicr.kyoto-u.ac.jp [PR libc/789].

1998-09-15  David S. Miller  <davem@pierdol.cobaltmicro.com>

* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_runtime_setup):
Add profiling support.
(TRAMPOLINE_TEMPLATE): New macro.
(ELF_MACHINE_RUNTIME_TRAMPOLINE): Define in terms of that.
(RTLD_START): Prettify, and set __libc_stack_end properly.
(elf_machine_rela) [R_SPARC_COPY]: Remove RTLD_BOOTSTRAP ifndef
and check for sym being NULL instead.
* sysdeps/sparc/sparc64/addmul_1.S: Adjust to allocate 192 bytes
of stack space.
* sysdeps/sparc/sparc64/lshift.S: Likewise.
* sysdeps/sparc/sparc64/mul_1.S: Likewise.
* sysdeps/sparc/sparc64/rshift.S: Likewise.
* sysdeps/sparc/sparc64/submul_1.S: Likewise.
* sysdeps/sparc/sparc64/elf/crtbegin.S: Likewise and remove old
MEDANY code model %g4 usage.
* sysdeps/sparc/sparc64/elf/crtend.S: Likewise and remove old
MEDANY code model %g4 usage.
* sysdeps/sparc/sparc64/elf/start.S: Rework to not use old FULLANY
code model address formation.
* sysdeps/sparc/sparc64/dl-machine.h: Don't include link.h, do
include elf/ldsodefs.h
(DT_SPARC): Remove.
(elf_machine_matches_host): It is now EM_SPARCV9.
(elf_machine_dynamic): Clean up to remove ugly cast.
(elf_machine_fixup_plt): Rework for new V9 ABI, add support for
new PLT formats.
(elf_machine_rela): Don't do anything at all for R_SPARC_NONE.
Prettify rest of function.
[R_SPARC_COPY]: Check for sym being NULL.
[R_SPARC_32]: Handle it.
[R_SPARC_H44, R_SPARC_M44, R_SPARC_L44]: Handle them for the
MEDMID code model.
[R_SPARC_HH22, R_SPARC_HM10, R_SPARC_LM22]: Handle them for the
MEDANY code model.
[R_SPARC_NONE]: Remove this case, as it is now checked earlier.
(elf_machine_runtime_setup): Rewrite for new V9 ABI plt formats.
Add profiling support.
(TRAMPOLINE_TEMPLATE): New macro.
(ELF_MACHINE_RUNTIME_TRAMPOLINE): Define in terms of that.
(RTLD_START): Prettify and set __libc_stack_end.
* sysdeps/unix/sysv/linux/sparc/bits/sigaction.h (SA_SIGINFO):
Define.
* sysdeps/unix/sysv/linux/sparc/bits/signum.h (_NSIG): Set to 64.
(SIGRTMIN, SIGRTMAX, __SIGRTMIN, __SIGRTMAX): Define.
* sysdeps/unix/sysv/linux/sparc/sparc32/brk.c (__brk): Remove
unused variable scratch.
* sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
(__syscall_rt_sigaction, __rt_sigreturn_stub, __sigreturn_stub):
Declare.
(__sigaction): Rewrite rt_sigaction case to pass correct sigreturn
stub to rt_sigaction syscalls.  Rewrite non-rt case to use correct
old format kernel sigaction structures.
* sysdeps/unix/sysv/linux/sparc/sparc64/ucontext.h: Move...
* sysdeps/unix/sysv/linux/sparc/sparc64/sys/ucontext.h: to here.
* sysdeps/unix/sysv/linux/sparc/sparc64/Dist: Remove ucontext.h
* sysdeps/unix/sysv/linux/sparc/sparc64/bits/setjmp.h: Fix
ucontext include.
(_JMPBUF_UNWINDS): Define.
* sysdeps/unix/sysv/linux/sparc/sparc64/bits/statfs.h: Declare
statfs64 structure, which is exactly the same as the normal one.
* sysdeps/unix/sysv/linux/sparc/sparc64/brk.S: Allocate 192 bytes
of stack.  Use correct syscall trap number.  Add branch prediction
settings to branch instructions.  Remove old MEDANY code model %g4
referneces for non-PIC.
* sysdeps/unix/sysv/linux/sparc/sparc64/clone.S: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S: Add
__libc_longjmp and __libc_siglongjmp strong aliases.
* sysdeps/unix/sysv/linux/sparc/sparc64/readdir.c (__readdir64):
Also define to __no__readdir64_decl around readdir.c inclusion.
(__readdir64): Add strong alias.
* sysdeps/unix/sysv/linux/sparc/sparc64/socket.S: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (getrlimit):
Set strong and weak names properly.

1998-09-16 11:25  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

* manual/Makefile (AWK): Default to gawk if standalone.

1998-09-15  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

* Makefile (distribute): Undo last change.
* Make-dist (+tsrc) [not subdir]: Also include indirection headers
for sysdep headers.
(+subdir-headers): Removed, unused.

1998-09-15  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

* stdio-common/Makefile ($(inst_includedir)/bits/stdio_lim.h): Use
$(do-install).

1998-09-15  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

* Makerules ($(+sysdir_pfx)sysd-Makefile): Don't check for
absolute name in $(config-sysdirs), can never happen.
($(+sysdir_pfx)sysd-rules): Likewise.
* Makeconfig (full-config-sysdirs): Likewise.
(all-Subdirs-files): Prepend $(..).

* configure.in: Don't check for absolute name in $add_ons_pfx, can
not happen.  Let --enable-add-ons=yes work if no add-ons actually
exist.

1998-09-15  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

* Rules ($(common-objpfx)bits/stdio_%.h): Remove extra
continuations in command.

1998-09-15  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

* libio/oldstdfiles.c (_IO_stdin_used): Update declaration.

42 files changed:
ChangeLog
Make-dist
Makeconfig
Makefile
Makerules
Rules
configure
configure.in
libio/oldstdfiles.c
linuxthreads/sysdeps/sparc/sparc32/pt-machine.h
linuxthreads/sysdeps/sparc/sparc64/pt-machine.h
manual/Makefile
posix/wordexp.c
stdio-common/Makefile
sysdeps/mach/hurd/dl-cache.c
sysdeps/sparc/sparc32/dl-machine.h
sysdeps/sparc/sparc64/addmul_1.S
sysdeps/sparc/sparc64/dl-machine.h
sysdeps/sparc/sparc64/elf/crtbegin.S
sysdeps/sparc/sparc64/elf/crtend.S
sysdeps/sparc/sparc64/elf/start.S
sysdeps/sparc/sparc64/lshift.S
sysdeps/sparc/sparc64/mul_1.S
sysdeps/sparc/sparc64/rshift.S
sysdeps/sparc/sparc64/submul_1.S
sysdeps/unix/sysv/linux/sparc/bits/sigaction.h
sysdeps/unix/sysv/linux/sparc/bits/signum.h
sysdeps/unix/sysv/linux/sparc/sparc32/brk.c
sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
sysdeps/unix/sysv/linux/sparc/sparc64/Dist
sysdeps/unix/sysv/linux/sparc/sparc64/bits/setjmp.h
sysdeps/unix/sysv/linux/sparc/sparc64/bits/statfs.h
sysdeps/unix/sysv/linux/sparc/sparc64/brk.S
sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h
sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S
sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S
sysdeps/unix/sysv/linux/sparc/sparc64/readdir.c
sysdeps/unix/sysv/linux/sparc/sparc64/sys/ucontext.h [moved from sysdeps/unix/sysv/linux/sparc/sparc64/ucontext.h with 93% similarity]
sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S
sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h

index ab24a4902135ae979288263be24a133184b1c36d..aeaebd78ac68bb51b5d1b7e06eb7c408d2f0b7bc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,125 @@
+1998-09-14  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+       * sysdeps/mach/hurd/dl-cache.c (_dl_unload_cache): New dummy
+       function.  Reported by okuji@kuicr.kyoto-u.ac.jp [PR libc/789].
+
+1998-09-15  David S. Miller  <davem@pierdol.cobaltmicro.com>
+
+       * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_runtime_setup):
+       Add profiling support.
+       (TRAMPOLINE_TEMPLATE): New macro.
+       (ELF_MACHINE_RUNTIME_TRAMPOLINE): Define in terms of that.
+       (RTLD_START): Prettify, and set __libc_stack_end properly.
+       (elf_machine_rela) [R_SPARC_COPY]: Remove RTLD_BOOTSTRAP ifndef
+       and check for sym being NULL instead.
+       * sysdeps/sparc/sparc64/addmul_1.S: Adjust to allocate 192 bytes
+       of stack space.
+       * sysdeps/sparc/sparc64/lshift.S: Likewise.
+       * sysdeps/sparc/sparc64/mul_1.S: Likewise.
+       * sysdeps/sparc/sparc64/rshift.S: Likewise.
+       * sysdeps/sparc/sparc64/submul_1.S: Likewise.
+       * sysdeps/sparc/sparc64/elf/crtbegin.S: Likewise and remove old
+       MEDANY code model %g4 usage.
+       * sysdeps/sparc/sparc64/elf/crtend.S: Likewise and remove old
+       MEDANY code model %g4 usage.
+       * sysdeps/sparc/sparc64/elf/start.S: Rework to not use old FULLANY
+       code model address formation.
+       * sysdeps/sparc/sparc64/dl-machine.h: Don't include link.h, do
+       include elf/ldsodefs.h
+       (DT_SPARC): Remove.
+       (elf_machine_matches_host): It is now EM_SPARCV9.
+       (elf_machine_dynamic): Clean up to remove ugly cast.
+       (elf_machine_fixup_plt): Rework for new V9 ABI, add support for
+       new PLT formats.
+       (elf_machine_rela): Don't do anything at all for R_SPARC_NONE.
+       Prettify rest of function.
+       [R_SPARC_COPY]: Check for sym being NULL.
+       [R_SPARC_32]: Handle it.
+       [R_SPARC_H44, R_SPARC_M44, R_SPARC_L44]: Handle them for the
+       MEDMID code model.
+       [R_SPARC_HH22, R_SPARC_HM10, R_SPARC_LM22]: Handle them for the
+       MEDANY code model.
+       [R_SPARC_NONE]: Remove this case, as it is now checked earlier.
+       (elf_machine_runtime_setup): Rewrite for new V9 ABI plt formats.
+       Add profiling support.
+       (TRAMPOLINE_TEMPLATE): New macro.
+       (ELF_MACHINE_RUNTIME_TRAMPOLINE): Define in terms of that.
+       (RTLD_START): Prettify and set __libc_stack_end.
+       * sysdeps/unix/sysv/linux/sparc/bits/sigaction.h (SA_SIGINFO):
+       Define.
+       * sysdeps/unix/sysv/linux/sparc/bits/signum.h (_NSIG): Set to 64.
+       (SIGRTMIN, SIGRTMAX, __SIGRTMIN, __SIGRTMAX): Define.
+       * sysdeps/unix/sysv/linux/sparc/sparc32/brk.c (__brk): Remove
+       unused variable scratch.
+       * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
+       (__syscall_rt_sigaction, __rt_sigreturn_stub, __sigreturn_stub):
+       Declare.
+       (__sigaction): Rewrite rt_sigaction case to pass correct sigreturn
+       stub to rt_sigaction syscalls.  Rewrite non-rt case to use correct
+       old format kernel sigaction structures.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/ucontext.h: Move...
+       * sysdeps/unix/sysv/linux/sparc/sparc64/sys/ucontext.h: to here.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/Dist: Remove ucontext.h
+       * sysdeps/unix/sysv/linux/sparc/sparc64/bits/setjmp.h: Fix
+       ucontext include.
+       (_JMPBUF_UNWINDS): Define.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/bits/statfs.h: Declare
+       statfs64 structure, which is exactly the same as the normal one.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/brk.S: Allocate 192 bytes
+       of stack.  Use correct syscall trap number.  Add branch prediction
+       settings to branch instructions.  Remove old MEDANY code model %g4
+       referneces for non-PIC.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/clone.S: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/pipe.S: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/syscall.S: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S: Add
+       __libc_longjmp and __libc_siglongjmp strong aliases.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/readdir.c (__readdir64):
+       Also define to __no__readdir64_decl around readdir.c inclusion.
+       (__readdir64): Add strong alias.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/socket.S: New file.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (getrlimit):
+       Set strong and weak names properly.
+
+1998-09-16 11:25  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * manual/Makefile (AWK): Default to gawk if standalone.
+
+1998-09-15  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * Makefile (distribute): Undo last change.
+       * Make-dist (+tsrc) [not subdir]: Also include indirection headers
+       for sysdep headers.
+       (+subdir-headers): Removed, unused.
+
+1998-09-15  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * stdio-common/Makefile ($(inst_includedir)/bits/stdio_lim.h): Use
+       $(do-install).
+
+1998-09-15  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * Makerules ($(+sysdir_pfx)sysd-Makefile): Don't check for
+       absolute name in $(config-sysdirs), can never happen.
+       ($(+sysdir_pfx)sysd-rules): Likewise.
+       * Makeconfig (full-config-sysdirs): Likewise.
+       (all-Subdirs-files): Prepend $(..).
+
+       * configure.in: Don't check for absolute name in $add_ons_pfx, can
+       not happen.  Let --enable-add-ons=yes work if no add-ons actually
+       exist.
+
+1998-09-15  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * Rules ($(common-objpfx)bits/stdio_%.h): Remove extra
+       continuations in command.
+
+1998-09-15  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * libio/oldstdfiles.c (_IO_stdin_used): Update declaration.
+
 1998-09-16 00:47  Tim Waugh  <tim@cyberelk.demon.co.uk>
 
        * posix/wordexp-test.c: If expansion or substitution occurs
index ed1dec4d47a2d388c37259e8ea86149d3800ddcf..576887468ec165550d5172797bfcd7128b2d0e0e 100644 (file)
--- a/Make-dist
+++ b/Make-dist
@@ -77,7 +77,6 @@ all-headers := $(sort $(headers) \
 # the source directory.
 all-headers := $(filter-out ../%,$(all-headers))
 +subdir-nodist := $(patsubst +nodist+%,%,$(filter +nodist+%,$(+distinfo)))
-+subdir-headers := $(filter-out $(headers),$(all-headers))
 endif
 foo:=$(shell echo 'IS THIS WORKING??? all-headers=$(all-headers)' >&2)
 
@@ -182,7 +181,7 @@ foo:=$(shell echo '+sysdep-dist=$(+sysdep-dist)' >&2)
                                      $(addsuffix /$(file),$(sysdep_dirs)))) \
                 $(+sysdep-dist)
 
-+tsrcs := $(+tsrcs) $(+sysdep-tsrcs)
++tsrcs := $(+tsrcs) $(+sysdep-tsrcs) $(wildcard $(+sysdep-names:%=include/%))
 
 ifeq ($(with-cvs),yes)
 define autoconf-it
index 1858dd54a9cf63f436706f703212fab7d9d26759..0b7b0384edb8080c820f44c8db1f0475ccd065b4 100644 (file)
@@ -93,9 +93,7 @@ binfmt-subdir = aout
 endif
 
 # Complete path to sysdep dirs.
-full-config-sysdirs := $(filter /%, $(config-sysdirs)) \
-                      $(addprefix $(..), $(filter-out /%, $(config-sysdirs)))
-export full-config-sysdirs := $(full-config-sysdirs)
+export full-config-sysdirs := $(addprefix $(..),$(config-sysdirs))
 
 # Run config.status to update config.make and config.h.  We don't show the
 # dependence of config.h to Make, because it is only touched when it
@@ -767,7 +765,7 @@ subdirs = $(all-subdirs)
 subdirs        := $(filter mach,$(subdirs)) $(filter hurd,$(subdirs)) \
           $(filter-out mach hurd,$(subdirs))
 
-all-Subdirs-files = $(wildcard $(addsuffix /Subdirs, $(config-sysdirs)))
+all-Subdirs-files = $(wildcard $(config-sysdirs:%=$(..)%/Subdirs))
 $(common-objpfx)sysd-dirs: $(common-objpfx)config.make $(all-Subdirs-files)
        (echo define sysdep-subdirs;                            \
         sed 's/#.*$$//' $(all-Subdirs-files) /dev/null;        \
index 8f1223b91b61b620d31a34795314a241d50040ee..21ae9d508a43672da5e7431e5e477c32c8fceb2c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -253,7 +253,6 @@ distribute  :=      README README.libm INSTALL FAQ FAQ.in NOTES NEWS BUGS   \
                version.h shlib-versions rpm/Makefile rpm/template      \
                rpm/rpmrc glibcbug.in abi-tags stub-tag.h               \
                test-skeleton.c include/des.h Versions.def              \
-               include/sys/mman.h                                      \
                $(addprefix scripts/,                                   \
                            rellns-sh config.sub config.guess           \
                            mkinstalldirs move-if-change install-sh     \
index 2e724fabd578be93768abf360a315fc991e6a5f2..1284cf54e0041888ec1fe6752e2135028cc5ce56 100644 (file)
--- a/Makerules
+++ b/Makerules
@@ -104,17 +104,9 @@ $(+sysdir_pfx)sysd-Makefile: $(+sysdir_pfx)config.make $(..)Makerules \
                             $(sysd-Makefile-force)
        -@rm -f $@T
        (echo 'sysd-Makefile-sysdirs := $(config-sysdirs)';                   \
-        for dir in $(config-sysdirs); do                                     \
-          file=$$dir/Makefile;                                               \
-          case $$dir in                                                      \
-            /*) rel= ;;                                                      \
-            *)  rel=$(..) ;;                                                 \
-          esac;                                                              \
-          if [ -f $$rel$$file ]; then                                        \
-            case $$dir in                                                    \
-              /*) echo include "$$file" ;;                                   \
-              *)  echo include "\$$(..)$$file" ;;                            \
-            esac;                                                            \
+        for file in $(config-sysdirs:=/Makefile); do                         \
+          if [ -f $(..)$$file ]; then                                        \
+            echo include "\$$(..)$$file";                                    \
           else true; fi;                                                     \
         done;                                                                \
         echo 'sysd-Makefile-done=t') > $@T
@@ -244,11 +236,7 @@ $(+sysdir_pfx)sysd-rules: $(+sysdir_pfx)config.make $(..)Makerules \
                          $(sysd-rules-force)
        -@rm -f $@T
        (echo 'sysd-rules-sysdirs := $(config-sysdirs)';                      \
-        for sysdir in $(config-sysdirs); do                                  \
-          case $$sysdir in \
-            /*) dir=$$sysdir ;; \
-            *)  dir="\$$(..)$$sysdir" ;; \
-          esac; \
+        for dir in $(config-sysdirs:%='$$(..)%'); do                         \
           for o in $(all-object-suffixes); do \
             $(open-check-inhibit-asm) \
             echo "\$$(objpfx)%$$o: $$dir/%.S \$$(before-compile); \
diff --git a/Rules b/Rules
index 9c61b8418a699007af0f7bcde6e6859799fb1fac..ab7c309d60889600dfa67954e09ef130f81c87d6 100644 (file)
--- a/Rules
+++ b/Rules
@@ -223,7 +223,7 @@ $(common-objpfx)bits/stdio_%.h $(common-objpfx)bits/stdio_%.d:              \
        $(CC) $(+includes) -E -dM -xc - -o $(@:.d=.h)T
        sed -e 's!MARKER!$(@:.h=.d) $(@:.d=.h)!'                        \
            -e 's!$(common-objpfx)!$$(common-objpfx)!g'                 \
-               $(@:.h=.d)T > $(@:.h=.d)t &&                            \
+               $(@:.h=.d)T > $(@:.h=.d)t
        mv -f $(@:.h=.d)t $(@:.h=.d)
        fopen_max=`sed -n 's/^#define OPEN_MAX //p' $(@:.d=.h)T`;       \
        filename_max=`sed -n 's/^#define PATH_MAX //p' $(@:.d=.h)T`;    \
@@ -235,8 +235,8 @@ $(common-objpfx)bits/stdio_%.h $(common-objpfx)bits/stdio_%.d:              \
            -e "s/@TMP_MAX@/$(TMP_MAX)/"                                \
            -e "s/@L_ctermid@/$(L_ctermid)/"                            \
            -e "s/@L_cuserid@/$(L_cuserid)/"                            \
-           $< > $(@:.d=.h).new &&                                      \
-       mv -f $(@:.d=.h).new $(@:.d=.h);                                \
+           $< > $(@:.d=.h).new
+       mv -f $(@:.d=.h).new $(@:.d=.h)
 # Remove these last so that they can be examined if something went wrong.
        rm -f $(@:.d=.h)T $(@:.h=.d)T
 # Get dependencies.
index 7a59c8ab26ba3fb7ee604406db497f274e9250a5..50a2443fa663c7b6a014433df9aaf391cc0b6887 100755 (executable)
--- a/configure
+++ b/configure
@@ -12,7 +12,7 @@
 
 
 # Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.12 
+# Generated automatically using autoconf version 2.12.2 
 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
 #
 # This configure script is free software; the Free Software Foundation
@@ -103,6 +103,7 @@ mandir='${prefix}/man'
 # Initialize some other variables.
 subdirs=
 MFLAGS= MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
 # Maximum number of lines to put in a shell here document.
 ac_max_here_lines=12
 
@@ -386,7 +387,7 @@ EOF
     verbose=yes ;;
 
   -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.12"
+    echo "configure generated by autoconf version 2.12.2"
     exit 0 ;;
 
   -with-* | --with-*)
@@ -556,9 +557,11 @@ ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
 cross_compiling=$ac_cv_prog_cc_cross
 
+ac_exeext=
+ac_objext=o
 if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
   # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
   if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
@@ -751,12 +754,8 @@ fi
 if test "${enable_add_ons+set}" = set; then
   enableval="$enable_add_ons"
   case "$enableval" in
-    yes) if test "$srcdir" = "."; then
-          add_ons=`echo */configure | sed -e 's!/configure!!g'`
-        else
-          add_ons=`echo $srcdir/*/configure | \
-                   sed -e 's!/configure!!g' -e "s!$srcdir/!!g"`
-        fi;;
+    yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
+        test "$add_ons" = "*" && add_ons= ;;
     *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
    esac
 else
@@ -805,26 +804,26 @@ fi
 
 
 # Make sure we can run config.sub.
-if $ac_config_sub sun4 >/dev/null 2>&1; then :
+if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
 else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:814: checking host system type" >&5
+echo "configure:813: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
 NONE)
   case $nonopt in
   NONE)
-    if host_alias=`$ac_config_guess`; then :
+    if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
     else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
     fi ;;
   *) host_alias=$nonopt ;;
   esac ;;
 esac
 
-host=`$ac_config_sub $host_alias`
+host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
 host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
 host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
 host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
@@ -933,7 +932,7 @@ fi
 # This can take a while to compute.
 sysdep_dir=$srcdir/sysdeps
 echo $ac_n "checking sysdep dirs""... $ac_c" 1>&6
-echo "configure:937: checking sysdep dirs" >&5
+echo "configure:936: checking sysdep dirs" >&5
 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
 
@@ -1011,11 +1010,7 @@ for d in $add_ons_pfx ''; do
              try="${d}sysdeps$m0$b$v$o$m"
              test -n "$enable_debug_configure" &&
              echo "$0 DEBUG: try $try" >&2
-             case $try in
-               /*) dest=$try ;;
-               *)  dest=$srcdir/$try ;;
-             esac
-             if test -d $dest; then
+             if test -d $srcdir/$try; then
                sysnames="$sysnames $try"
                { test -n "$o" || test -n "$b"; } && os_used=t
                { test -n "$m" || test -n "$m0"; } && machine_used=t
@@ -1047,12 +1042,8 @@ fi
 if test "$elf" = yes; then
   elf_dirs=
   for d in $add_ons_pfx ''; do
-    case $d in
-      /*) xsrcdir= ;;
-      *)  xsrcdir=$srcdir/ ;;
-    esac
     for m in $mach; do
-      if test -d $xsrcdir${d}sysdeps$m/elf; then
+      if test -d $srcdir/${d}sysdeps$m/elf; then
        elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
       fi
     done
@@ -1138,28 +1129,30 @@ echo "$ac_t""$default_sysnames" 1>&6
 # SunOS /usr/etc/install
 # IRIX /sbin/install
 # AIX /bin/install
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1146: checking for a BSD compatible install" >&5
+echo "configure:1138: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-    IFS="${IFS=        }"; ac_save_IFS="$IFS"; IFS="${IFS}:"
+    IFS="${IFS=        }"; ac_save_IFS="$IFS"; IFS=":"
   for ac_dir in $PATH; do
     # Account for people who put trailing slashes in PATH elements.
     case "$ac_dir/" in
     /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
     *)
       # OSF1 and SCO ODT 3.0 have their own names for install.
-      for ac_prog in ginstall installbsd scoinst install; do
+      # Don't use installbsd from OSF since it installs stuff as root
+      # by default.
+      for ac_prog in ginstall scoinst install; do
         if test -f $ac_dir/$ac_prog; then
          if test $ac_prog = install &&
             grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
            # AIX install.  It has an incompatible calling convention.
-           # OSF/1 installbsd also uses dspmsg, but is usable.
            :
          else
            ac_cv_path_install="$ac_dir/$ac_prog -c"
@@ -1196,7 +1189,7 @@ if test "$INSTALL" = "${srcdir}/install-sh -c"; then
   INSTALL='\$(..)./install-sh -c'
 fi
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1200: checking whether ln -s works" >&5
+echo "configure:1193: checking whether ln -s works" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1219,7 +1212,7 @@ fi
 
 # These programs are version sensitive.
 echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1223: checking build system type" >&5
+echo "configure:1216: checking build system type" >&5
 
 build_alias=$build
 case "$build_alias" in
@@ -1230,7 +1223,7 @@ NONE)
   esac ;;
 esac
 
-build=`$ac_config_sub $build_alias`
+build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
 build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
 build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
 build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
@@ -1247,14 +1240,14 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1251: checking for $ac_word" >&5
+echo "configure:1244: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
   for ac_dir in $PATH; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
@@ -1280,7 +1273,7 @@ if test -z "$CC"; then
 else
   # Found it, now check the version.
   echo $ac_n "checking version of $CC""... $ac_c" 1>&6
-echo "configure:1284: checking version of $CC" >&5
+echo "configure:1277: checking version of $CC" >&5
   ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcstp-]*[0-9.]*\).*$/\1/p'`
   case $ac_prog_version in
     '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
@@ -1300,14 +1293,14 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1304: checking for $ac_word" >&5
+echo "configure:1297: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$MAKE"; then
   ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
   for ac_dir in $PATH; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
@@ -1333,7 +1326,7 @@ if test -z "$MAKE"; then
 else
   # Found it, now check the version.
   echo $ac_n "checking version of $MAKE""... $ac_c" 1>&6
-echo "configure:1337: checking version of $MAKE" >&5
+echo "configure:1330: checking version of $MAKE" >&5
   ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*version \([0-9][0-9.]*\), by.*$/\1/p'`
   case $ac_prog_version in
     '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
@@ -1354,14 +1347,14 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1358: checking for $ac_word" >&5
+echo "configure:1351: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$MSGFMT"; then
   ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
   for ac_dir in $PATH; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
@@ -1387,7 +1380,7 @@ if test -z "$MSGFMT"; then
 else
   # Found it, now check the version.
   echo $ac_n "checking version of $MSGFMT""... $ac_c" 1>&6
-echo "configure:1391: checking version of $MSGFMT" >&5
+echo "configure:1384: checking version of $MSGFMT" >&5
   ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
   case $ac_prog_version in
     '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
@@ -1407,14 +1400,14 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1411: checking for $ac_word" >&5
+echo "configure:1404: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$MAKEINFO"; then
   ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
   for ac_dir in $PATH; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
@@ -1440,7 +1433,7 @@ if test -z "$MAKEINFO"; then
 else
   # Found it, now check the version.
   echo $ac_n "checking version of $MAKEINFO""... $ac_c" 1>&6
-echo "configure:1444: checking version of $MAKEINFO" >&5
+echo "configure:1437: checking version of $MAKEINFO" >&5
   ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo \([0-9][0-9.]*\).*$/\1/p'`
   case $ac_prog_version in
     '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
@@ -1469,7 +1462,7 @@ test -n "$aux_missing" && echo "configure: warning:
 
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1473: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1466: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_works'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1478,15 +1471,15 @@ ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
 cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext <<EOF
-#line 1486 "configure"
+#line 1479 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
-if { (eval echo configure:1490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1511,7 +1504,7 @@ else
  cross_linkable=yes
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1515: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1508: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_cross'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1523,7 +1516,7 @@ echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1527: checking whether we are using GNU C" >&5
+echo "configure:1520: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1532,7 +1525,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1536: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1529: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1545,7 +1538,7 @@ if test $ac_cv_prog_gcc != yes; then
 fi
 
 echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1549: checking build system type" >&5
+echo "configure:1542: checking build system type" >&5
 
 build_alias=$build
 case "$build_alias" in
@@ -1556,7 +1549,7 @@ NONE)
   esac ;;
 esac
 
-build=`$ac_config_sub $build_alias`
+build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
 build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
 build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
 build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
@@ -1568,14 +1561,14 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1572: checking for $ac_word" >&5
+echo "configure:1565: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$BUILD_CC"; then
   ac_cv_prog_BUILD_CC="$BUILD_CC" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
   for ac_dir in $PATH; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
@@ -1599,7 +1592,7 @@ done
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1603: checking how to run the C preprocessor" >&5
+echo "configure:1596: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1614,14 +1607,14 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1618 "configure"
+#line 1611 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1624: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
+{ (eval echo configure:1617: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
 else
@@ -1631,14 +1624,31 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1635 "configure"
+#line 1628 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1641: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
+{ (eval echo configure:1634: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  :
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  CPP="${CC-cc} -nologo -E"
+  cat > conftest.$ac_ext <<EOF
+#line 1645 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1651: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
 else
@@ -1650,6 +1660,8 @@ else
 fi
 rm -f conftest*
 fi
+rm -f conftest*
+fi
 rm -f conftest*
   ac_cv_prog_CPP="$CPP"
 fi
@@ -1670,7 +1682,7 @@ LD=`$CC -print-prog-name=ld`
 
 # Determine whether we are using GNU binutils.
 echo $ac_n "checking whether $AS is GNU as""... $ac_c" 1>&6
-echo "configure:1674: checking whether $AS is GNU as" >&5
+echo "configure:1686: checking whether $AS is GNU as" >&5
 if eval "test \"`echo '$''{'libc_cv_prog_as_gnu'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1688,7 +1700,7 @@ rm -f a.out
 gnu_as=$libc_cv_prog_as_gnu
 
 echo $ac_n "checking whether $LD is GNU ld""... $ac_c" 1>&6
-echo "configure:1692: checking whether $LD is GNU ld" >&5
+echo "configure:1704: checking whether $LD is GNU ld" >&5
 if eval "test \"`echo '$''{'libc_cv_prog_ld_gnu'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1707,14 +1719,14 @@ gnu_ld=$libc_cv_prog_ld_gnu
 # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ar; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1711: checking for $ac_word" >&5
+echo "configure:1723: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$AR"; then
   ac_cv_prog_AR="$AR" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
   for ac_dir in $PATH; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
@@ -1738,14 +1750,14 @@ fi
 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1742: checking for $ac_word" >&5
+echo "configure:1754: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
   for ac_dir in $PATH; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
@@ -1769,14 +1781,14 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1773: checking for $ac_word" >&5
+echo "configure:1785: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
   for ac_dir in $PATH; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
@@ -1803,14 +1815,14 @@ fi
 # Extract the first word of "${ac_tool_prefix}mig", so it can be a program name with args.
 set dummy ${ac_tool_prefix}mig; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1807: checking for $ac_word" >&5
+echo "configure:1819: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$MIG"; then
   ac_cv_prog_MIG="$MIG" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
   for ac_dir in $PATH; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
@@ -1843,7 +1855,7 @@ fi
 
 # check if ranlib is necessary
 echo $ac_n "checking whether ranlib is necessary""... $ac_c" 1>&6
-echo "configure:1847: checking whether ranlib is necessary" >&5
+echo "configure:1859: checking whether ranlib is necessary" >&5
 if eval "test \"`echo '$''{'libc_cv_ranlib_necessary'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1877,7 +1889,7 @@ fi
 # - two terminals occur directly after each other
 # - the path contains an element with a dot in it
 echo $ac_n "checking LD_LIBRARY_PATH variable""... $ac_c" 1>&6
-echo "configure:1881: checking LD_LIBRARY_PATH variable" >&5
+echo "configure:1893: checking LD_LIBRARY_PATH variable" >&5
 case ${LD_LIBRARY_PATH} in
   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
     ld_library_path_setting="contains current directory"
@@ -1897,7 +1909,7 @@ fi
 # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1901: checking for $ac_word" >&5
+echo "configure:1913: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1905,8 +1917,11 @@ else
   /*)
   ac_cv_path_BASH="$BASH" # Let the user override the test with a path.
   ;;
+  ?:/*)                         
+  ac_cv_path_BASH="$BASH" # Let the user override the test with a dos path.
+  ;;
   *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
   for ac_dir in $PATH; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
@@ -1939,7 +1954,7 @@ if test "$BASH" = no; then
   # Extract the first word of "ksh", so it can be a program name with args.
 set dummy ksh; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1943: checking for $ac_word" >&5
+echo "configure:1958: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_KSH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1947,8 +1962,11 @@ else
   /*)
   ac_cv_path_KSH="$KSH" # Let the user override the test with a path.
   ;;
+  ?:/*)                         
+  ac_cv_path_KSH="$KSH" # Let the user override the test with a dos path.
+  ;;
   *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
   for ac_dir in $PATH; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
@@ -1985,14 +2003,14 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1989: checking for $ac_word" >&5
+echo "configure:2007: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$AWK"; then
   ac_cv_prog_AWK="$AWK" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
   for ac_dir in $PATH; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
@@ -2018,7 +2036,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2022: checking for $ac_word" >&5
+echo "configure:2040: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2026,8 +2044,11 @@ else
   /*)
   ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
   ;;
+  ?:/*)                         
+  ac_cv_path_PERL="$PERL" # Let the user override the test with a dos path.
+  ;;
   *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
   for ac_dir in $PATH; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
@@ -2053,7 +2074,7 @@ test -n "$PERL" || PERL="no"
 
 
 echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6
-echo "configure:2057: checking for signed size_t type" >&5
+echo "configure:2078: checking for signed size_t type" >&5
 if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2077,12 +2098,12 @@ EOF
 fi
 
 echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6
-echo "configure:2081: checking for libc-friendly stddef.h" >&5
+echo "configure:2102: checking for libc-friendly stddef.h" >&5
 if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2086 "configure"
+#line 2107 "configure"
 #include "confdefs.h"
 #define __need_size_t
 #define __need_wchar_t
@@ -2097,7 +2118,7 @@ size_t size; wchar_t wchar;
 if (&size == NULL || &wchar == NULL) abort ();
 ; return 0; }
 EOF
-if { (eval echo configure:2101: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2122: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   libc_cv_friendly_stddef=yes
 else
@@ -2116,7 +2137,7 @@ override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
 fi
 
 echo $ac_n "checking whether we need to use -P to assemble .S files""... $ac_c" 1>&6
-echo "configure:2120: checking whether we need to use -P to assemble .S files" >&5
+echo "configure:2141: checking whether we need to use -P to assemble .S files" >&5
 if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2139,7 +2160,7 @@ asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
 fi
 
 echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6
-echo "configure:2143: checking for assembler global-symbol directive" >&5
+echo "configure:2164: checking for assembler global-symbol directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2169,7 +2190,7 @@ EOF
 fi
 
 echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6
-echo "configure:2173: checking for .set assembler directive" >&5
+echo "configure:2194: checking for .set assembler directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2203,7 +2224,7 @@ EOF
 fi
 
 echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6
-echo "configure:2207: checking for .symver assembler directive" >&5
+echo "configure:2228: checking for .symver assembler directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_symver_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2222,7 +2243,7 @@ fi
 
 echo "$ac_t""$libc_cv_asm_symver_directive" 1>&6
 echo $ac_n "checking for ld --version-script""... $ac_c" 1>&6
-echo "configure:2226: checking for ld --version-script" >&5
+echo "configure:2247: checking for ld --version-script" >&5
 if eval "test \"`echo '$''{'libc_cv_ld_version_script_option'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2245,7 +2266,7 @@ EOF
     if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
                                        -nostartfiles -nostdlib
                                        -Wl,--version-script,conftest.map
-                      1>&5'; { (eval echo configure:2249: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
+                      1>&5'; { (eval echo configure:2270: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
     then
       libc_cv_ld_version_script_option=yes
     else
@@ -2283,7 +2304,7 @@ if test $VERSIONING = no; then
 fi
 if test $elf = yes; then
   echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6
-echo "configure:2287: checking for .previous assembler directive" >&5
+echo "configure:2308: checking for .previous assembler directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2291,7 +2312,7 @@ else
 .section foo_section
 .previous
 EOF
-  if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2295: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+  if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2316: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
     libc_cv_asm_previous_directive=yes
   else
     libc_cv_asm_previous_directive=no
@@ -2307,7 +2328,7 @@ EOF
 
   else
     echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6
-echo "configure:2311: checking for .popsection assembler directive" >&5
+echo "configure:2332: checking for .popsection assembler directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2315,7 +2336,7 @@ else
 .pushsection foo_section
 .popsection
 EOF
-    if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2319: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+    if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2340: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
       libc_cv_asm_popsection_directive=yes
     else
       libc_cv_asm_popsection_directive=no
@@ -2335,12 +2356,12 @@ fi
 
 if test $elf != yes; then
   echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6
-echo "configure:2339: checking for .init and .fini sections" >&5
+echo "configure:2360: checking for .init and .fini sections" >&5
 if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2344 "configure"
+#line 2365 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -2349,7 +2370,7 @@ asm (".section .init");
                                    asm (".text");
 ; return 0; }
 EOF
-if { (eval echo configure:2353: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   libc_cv_have_initfini=yes
 else
@@ -2377,19 +2398,19 @@ if test $elf = yes; then
 else
   if test $ac_cv_prog_cc_works = yes; then
     echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
-echo "configure:2381: checking for _ prefix on C symbol names" >&5
+echo "configure:2402: checking for _ prefix on C symbol names" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2386 "configure"
+#line 2407 "configure"
 #include "confdefs.h"
 asm ("_glibc_foobar:");
 int main() {
 glibc_foobar ();
 ; return 0; }
 EOF
-if { (eval echo configure:2393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   libc_cv_asm_underscores=yes
 else
@@ -2404,17 +2425,17 @@ fi
 echo "$ac_t""$libc_cv_asm_underscores" 1>&6
   else
     echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
-echo "configure:2408: checking for _ prefix on C symbol names" >&5
+echo "configure:2429: checking for _ prefix on C symbol names" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2413 "configure"
+#line 2434 "configure"
 #include "confdefs.h"
 void underscore_test(void) {
 return; }
 EOF
-if { (eval echo configure:2418: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2439: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   if grep _underscore_test conftest* >/dev/null; then
     rm -f conftest*
     libc_cv_asm_underscores=yes
@@ -2446,7 +2467,7 @@ if test $elf = yes; then
 fi
 
 echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6
-echo "configure:2450: checking for assembler .weak directive" >&5
+echo "configure:2471: checking for assembler .weak directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2469,7 +2490,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6
 
 if test $libc_cv_asm_weak_directive = no; then
   echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6
-echo "configure:2473: checking for assembler .weakext directive" >&5
+echo "configure:2494: checking for assembler .weakext directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2507,7 +2528,7 @@ EOF
 fi
 
 echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6
-echo "configure:2511: checking for ld --no-whole-archive" >&5
+echo "configure:2532: checking for ld --no-whole-archive" >&5
 if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2518,7 +2539,7 @@ __throw () {}
 EOF
 if { ac_try='${CC-cc} $CFLAGS
                            -nostdlib -nostartfiles -Wl,--no-whole-archive
-                           -o conftest conftest.c 1>&5'; { (eval echo configure:2522: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+                           -o conftest conftest.c 1>&5'; { (eval echo configure:2543: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_ld_no_whole_archive=yes
 else
   libc_cv_ld_no_whole_archive=no
@@ -2532,7 +2553,7 @@ if test $libc_cv_ld_no_whole_archive = yes; then
 fi
 
 echo $ac_n "checking for gcc -fexceptions""... $ac_c" 1>&6
-echo "configure:2536: checking for gcc -fexceptions" >&5
+echo "configure:2557: checking for gcc -fexceptions" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_exceptions'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2543,7 +2564,7 @@ __throw () {}
 EOF
 if { ac_try='${CC-cc} $CFLAGS
                            -nostdlib -nostartfiles -fexceptions
-                           -o conftest conftest.c 1>&5'; { (eval echo configure:2547: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+                           -o conftest conftest.c 1>&5'; { (eval echo configure:2568: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_gcc_exceptions=yes
 else
   libc_cv_gcc_exceptions=no
@@ -2558,14 +2579,14 @@ fi
 
 if test "$base_machine" = alpha ; then
 echo $ac_n "checking for function ..ng prefix""... $ac_c" 1>&6
-echo "configure:2562: checking for function ..ng prefix" >&5
+echo "configure:2583: checking for function ..ng prefix" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_alpha_ng_prefix'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.c <<\EOF
 foo () { }
 EOF
-if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:2569: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
+if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:2590: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
 then
   libc_cv_gcc_alpha_ng_prefix=yes
 else
@@ -2592,19 +2613,19 @@ if test "$host_cpu" = powerpc ; then
 # Check for a bug present in at least versions 2.8.x of GCC
 # and versions 1.0.x of EGCS.
 echo $ac_n "checking whether clobbering cr0 causes problems""... $ac_c" 1>&6
-echo "configure:2596: checking whether clobbering cr0 causes problems" >&5
+echo "configure:2617: checking whether clobbering cr0 causes problems" >&5
 if eval "test \"`echo '$''{'libc_cv_c_asmcr0_bug'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2601 "configure"
+#line 2622 "configure"
 #include "confdefs.h"
 int tester(int x) { asm ("" : : : "cc"); return x & 123; }
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2629: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   libc_cv_c_asmcr0_bug='no'
 else
@@ -2626,12 +2647,12 @@ fi
 fi
 
 echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6
-echo "configure:2630: checking for DWARF2 unwind info support" >&5
+echo "configure:2651: checking for DWARF2 unwind info support" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_dwarf2_unwind_info'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.c <<EOF
-#line 2635 "configure"
+#line 2656 "configure"
 static char __EH_FRAME_BEGIN__;
 _start ()
 {
@@ -2658,7 +2679,7 @@ __bzero () {}
 EOF
 if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info
                            -nostdlib -nostartfiles
-                           -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2662: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+                           -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2683: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_gcc_dwarf2_unwind_info=static
 else
   libc_cv_gcc_dwarf2_unwind_info=no
@@ -2666,7 +2687,7 @@ fi
 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
   if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame
                              -nostdlib -nostartfiles
-                             -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2670: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+                             -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2691: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
     libc_cv_gcc_dwarf2_unwind_info=yes
   else
     libc_cv_gcc_dwarf2_unwind_info=no
@@ -2740,7 +2761,7 @@ if test "$uname" = "sysdeps/generic"; then
   fi
 
   echo $ac_n "checking OS release for uname""... $ac_c" 1>&6
-echo "configure:2744: checking OS release for uname" >&5
+echo "configure:2765: checking OS release for uname" >&5
 if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2762,7 +2783,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6
   uname_release="$libc_cv_uname_release"
 
   echo $ac_n "checking OS version for uname""... $ac_c" 1>&6
-echo "configure:2766: checking OS version for uname" >&5
+echo "configure:2787: checking OS version for uname" >&5
 if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2784,7 +2805,7 @@ else
 fi
 
 echo $ac_n "checking stdio selection""... $ac_c" 1>&6
-echo "configure:2788: checking stdio selection" >&5
+echo "configure:2809: checking stdio selection" >&5
 
 case $stdio in
 libio) cat >> confdefs.h <<\EOF
@@ -2798,7 +2819,7 @@ echo "$ac_t""$stdio" 1>&6
 # Test for old glibc 2.0.x headers so that they can be removed properly
 # Search only in includedir.
 echo $ac_n "checking for old glibc 2.0.x headers""... $ac_c" 1>&6
-echo "configure:2802: checking for old glibc 2.0.x headers" >&5
+echo "configure:2823: checking for old glibc 2.0.x headers" >&5
 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
 then
   old_glibc_headers=yes
@@ -2852,7 +2873,7 @@ if test $shared = default; then
 fi
 
 echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6
-echo "configure:2856: checking whether -fPIC is default" >&5
+echo "configure:2877: checking whether -fPIC is default" >&5
 if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2919,7 +2940,7 @@ EOF
 # Ultrix sh set writes to stderr and can't be redirected directly,
 # and sets the high bit in the cache file unless we assign to the vars.
 (set) 2>&1 |
-  case `(ac_space=' '; set) 2>&1` in
+  case `(ac_space=' '; set) 2>&1 | grep ac_space` in
   *ac_space=\ *)
     # `set' does not quote correctly, so add quotes (double-quote substitution
     # turns \\\\ into \\, and sed turns \\ into \).
@@ -2986,7 +3007,7 @@ do
     echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
     exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
   -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.12"
+    echo "$CONFIG_STATUS generated by autoconf version 2.12.2"
     exit 0 ;;
   -help | --help | --hel | --he | --h)
     echo "\$ac_cs_usage"; exit 0 ;;
@@ -3006,6 +3027,7 @@ sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
  s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
 $ac_vpsub
 $extrasub
+s%@SHELL@%$SHELL%g
 s%@CFLAGS@%$CFLAGS%g
 s%@CPPFLAGS@%$CPPFLAGS%g
 s%@CXXFLAGS@%$CXXFLAGS%g
index 979f982f51f5957b088b020c9a0f6b4105535173..cd65da1b65ce50cf4937a9360979919e8b55710a 100644 (file)
@@ -96,12 +96,8 @@ AC_ARG_ENABLE(add-ons, dnl
                          configure and build add-ons in DIR1,DIR2,...
                           search for add-ons if no parameter given],
   [case "$enableval" in
-    yes) if test "$srcdir" = "."; then
-          add_ons=`echo */configure | sed -e 's!/configure!!g'`
-        else
-          add_ons=`echo $srcdir/*/configure | \
-                   sed -e 's!/configure!!g' -e "s!$srcdir/!!g"`
-        fi;;
+    yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
+        test "$add_ons" = "*" && add_ons= ;;
     *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
    esac],
   [add_ons=])
@@ -319,11 +315,7 @@ for d in $add_ons_pfx ''; do
              try="${d}sysdeps$m0$b$v$o$m"
              test -n "$enable_debug_configure" &&
              echo "$0 [DEBUG]: try $try" >&2
-             case $try in
-               /*) dest=$try ;;
-               *)  dest=$srcdir/$try ;;
-             esac
-             if test -d $dest; then
+             if test -d $srcdir/$try; then
                sysnames="$sysnames $try"
                { test -n "$o" || test -n "$b"; } && os_used=t
                { test -n "$m" || test -n "$m0"; } && machine_used=t
@@ -355,12 +347,8 @@ fi
 if test "$elf" = yes; then
   elf_dirs=
   for d in $add_ons_pfx ''; do
-    case $d in
-      /*) xsrcdir= ;;
-      *)  xsrcdir=$srcdir/ ;;
-    esac
     for m in $mach; do
-      if test -d $xsrcdir${d}sysdeps$m/elf; then
+      if test -d $srcdir/${d}sysdeps$m/elf; then
        elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
       fi
     done
index baf655048d4103aa7fdc4974dbe5f20130328182..7781a17449f4ca7d4228a81e820da4ba3b2bd206 100644 (file)
@@ -53,7 +53,7 @@ DEF_STDFILE(_IO_stderr_, 2, &_IO_stdout_.file,
 
 #include <stdio.h>
 
-extern void * _IO_stdin_used;
+extern const int _IO_stdin_used;
 weak_extern (_IO_stdin_used);
 
 #undef stdin
index 894972d574c7524cc8f645532004ae8cdd486fe1..ea9685b59dd6f012cf6941e409159540665eafdd 100644 (file)
@@ -52,7 +52,7 @@ register struct _pthread_descr_struct *__thread_self __asm__("%g6");
 #define THREAD_SELF  __thread_self
 
 /* Initialize the thread-unique value.  */
-#define INIT_THREAD_SELF(descr)  (__thread_self = (descr))
+#define INIT_THREAD_SELF(descr, nr)  (__thread_self = (descr))
 
 /* Access to data in the thread descriptor is easy.  */
 #define THREAD_GETMEM(descr, member) __thread_self->member
index 24c214117c80c99ebfd7864b05b480d205e69387..768956197ddc57fb9636d3732b36c90c884f2302 100644 (file)
@@ -48,7 +48,7 @@ register struct _pthread_descr_struct *__thread_self __asm__("%g6");
 #define THREAD_SELF  __thread_self
 
 /* Initialize the thread-unique value.  */
-#define INIT_THREAD_SELF(descr)  (__thread_self = (descr))
+#define INIT_THREAD_SELF(descr, nr)  (__thread_self = (descr))
 
 
 /* Compare-and-swap for semaphores. */
index 2314c0c93df67b4ff8cf6be0c95d6d310f18d7fd..538bb29a9c6be02d7f30e051b8255ca6fb58f75a 100644 (file)
@@ -34,6 +34,7 @@ include ../Makeconfig
 else
 MAKEINFO = makeinfo
 TEXI2DVI = texi2dvi
+AWK = gawk
 endif
 
 ifneq ($(strip $(MAKEINFO)),)
index e4bf414ced5aee11413efc08163524bb0cfa99a2..0cda9deb766a242bffb41f7871b7d12e36d7698f 100644 (file)
@@ -898,7 +898,6 @@ exec_comm (char *comm, char **word, size_t *word_length, size_t *max_length,
   int fildes[2];
   int bufsize = 128;
   int buflen;
-  int i;
   char *buffer;
   pid_t pid;
 
index f7d65d8ef010d1b581b017b6e45e9f62b9b9eae9..49f9ddb4f7d86d0b250d7e29d9cb94867fedeba2 100644 (file)
@@ -61,10 +61,7 @@ CFLAGS-scanf7.c = -Wno-format
 CFLAGS-tst-printfsz.c = -Wno-format
 
 $(inst_includedir)/bits/stdio_lim.h: $(common-objpfx)bits/stdio_lim.h
-       $(make-target-directory)
-       if test -r $@ && cmp -s $< $@; \
-       then echo 'gnu/lib-names.h unchanged'; \
-       else $(INSTALL_DATA) $< $@; fi
+       $(do-install)
 
 ifeq ($(stdio),libio)
 ifneq (,$(filter %REENTRANT, $(defines)))
index e7aca39aee484e062d059b4affc8cc68a7218dc5..8b47cf073b3058b1c462b24d94b6e011f7d79981 100644 (file)
@@ -22,3 +22,8 @@ _dl_load_cache_lookup (const char *name)
 {
   return 0;
 }
+
+void
+_dl_unload_cache (void)
+{
+}
index da15e94a695794d8184b70f37463ef89e6b50b23..e1fb2b68ce15e84f41bb5b2414a9a9fcdb2bde77 100644 (file)
@@ -101,14 +101,26 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
 {
   Elf32_Addr *plt;
   extern void _dl_runtime_resolve (Elf32_Word);
+  extern void _dl_runtime_profile (Elf32_Word);
 
   if (l->l_info[DT_JMPREL] && lazy)
     {
+      Elf32_Addr rfunc;
+
       /* The entries for functions in the PLT have not yet been filled in.
         Their initial contents will arrange when called to set the high 22
         bits of %g1 with an offset into the .rela.plt section and jump to
         the beginning of the PLT.  */
       plt = (Elf32_Addr *) (l->l_addr + l->l_info[DT_PLTGOT]->d_un.d_ptr);
+      if (! profile)
+       rfunc = (Elf32_Addr) &_dl_runtime_resolve;
+      else
+       {
+         rfunc = (Elf32_Addr) &_dl_runtime_profile;
+
+         if (_dl_name_match_p (_dl_profile, l))
+           _dl_profile_map = l;
+       }
 
       /* The beginning of the PLT does:
 
@@ -123,8 +135,7 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
 
       plt[0] = OPCODE_SAVE_SP;
       /* Construct PC-relative word address.  */
-      plt[1] = OPCODE_CALL | (((Elf32_Addr) &_dl_runtime_resolve -
-                              (Elf32_Addr) &plt[1]) >> 2);
+      plt[1] = OPCODE_CALL | ((rfunc - (Elf32_Addr) &plt[1]) >> 2);
       plt[2] = OPCODE_NOP;     /* Fill call delay slot.  */
       plt[3] = (Elf32_Addr) l;
     }
@@ -134,20 +145,36 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
 
 /* This code is used in dl-runtime.c to call the `fixup' function
    and then redirect to the address it returns.  */
-#define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\
-       .globl _dl_runtime_resolve
-       .type _dl_runtime_resolve, @function
-_dl_runtime_resolve:
+#define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name)    \
+  asm ( "\
+       .text
+       .globl  " #tramp_name "
+       .type   " #tramp_name ", @function
+       .align  32
+" #tramp_name ":
        /* Set up the arguments to fixup --
           %o0 = link_map out of plt0
-          %o1 = offset of reloc entry  */
+          %o1 = offset of reloc entry
+          %o2 = return address  */
        ld      [%o7 + 8], %o0
        srl     %g1, 10, %o1
-       call    fixup
+       mov     %i7, %o2
+       call    " #fixup_name "
         sub    %o1, 4*12, %o1
        jmp     %o0
         restore
-       .size _dl_runtime_resolve, . - _dl_runtime_resolve");
+       .size   " #tramp_name ", . - " #tramp_name "
+       .previous")
+
+#ifndef PROF
+#define ELF_MACHINE_RUNTIME_TRAMPOLINE                         \
+  TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup);    \
+  TRAMPOLINE_TEMPLATE (_dl_runtime_profile, profile_fixup);
+#else
+#define ELF_MACHINE_RUNTIME_TRAMPOLINE                 \
+  TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup);    \
+  TRAMPOLINE_TEMPLATE (_dl_runtime_profile, fixup);
+#endif
 
 /* Nonzero iff TYPE should not be allowed to resolve to one of
    the main executable's symbols, as for a COPY reloc.  */
@@ -171,9 +198,10 @@ _dl_runtime_resolve:
    its return value is the user program's entry point.  */
 
 #define RTLD_START __asm__ ("\
-.text
-       .globl _start
-       .type _start,@function
+       .text
+       .globl  _start
+       .type   _start, @function
+       .align  32
 _start:
   /* Allocate space for functions to drop their arguments.  */
        sub     %sp, 6*4, %sp
@@ -181,8 +209,8 @@ _start:
        call    _dl_start
         add    %sp, 22*4, %o0
        /* FALTHRU */
-       .globl _dl_start_user
-       .type _dl_start_user,@function
+       .globl  _dl_start_user
+       .type   _dl_start_user, @function
 _dl_start_user:
   /* Load the PIC register.  */
 1:     call    2f
@@ -191,6 +219,12 @@ _dl_start_user:
        add     %l7, %o7, %l7
   /* Save the user entry point address in %l0 */
        mov     %o0, %l0
+  /* Store the highest stack address.  */
+       sethi   %hi(__libc_stack_end), %g2
+       or      %g2, %lo(__libc_stack_end), %g2
+       ld      [%l7 + %g2], %l1
+       add     %sp, 6*4, %l2
+       st      %l2, [%l1]
   /* See if we were run as a command with the executable file name as an
      extra leading argument.  If so, adjust the contents of the stack.  */
        sethi   %hi(_dl_skip_args), %g2
@@ -230,7 +264,7 @@ _dl_start_user:
        st      %i4, [%i1+4]
        bne     23b
         add    %i1, 8, %i1
-  /* Load _dl_main_searchlist to pass to _dl_init_next.  */
+  /* Load searchlist of the main object to pass to _dl_init_next.  */
 3:     sethi   %hi(_dl_main_searchlist), %g1
        or      %g1, %lo(_dl_main_searchlist), %g1
        ld      [%l7+%g1], %l1
@@ -242,8 +276,7 @@ _dl_start_user:
        beq     5f
         nop
        jmpl    %o0, %o7
-        nop
-       ba,a    4b
+        sub    %o7, 28, %o7
   /* Clear the startup flag.  */
 5:     sethi   %hi(_dl_starting_up), %g1
        or      %g1, %lo(_dl_starting_up), %g1
@@ -256,8 +289,8 @@ _dl_start_user:
   /* Jump to the user's entry point and deallocate the extra stack we got.  */
        jmp     %l0
         add    %sp, 6*4, %sp
-       .size   _dl_start_user,.-_dl_start_user
-.previous");
+       .size   _dl_start_user, . - _dl_start_user
+       .previous");
 
 static inline void
 elf_machine_fixup_plt (struct link_map *map, const Elf32_Rela *reloc,
@@ -343,7 +376,10 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
       switch (ELF32_R_TYPE (reloc->r_info))
        {
        case R_SPARC_COPY:
-#ifndef RTLD_BOOTSTRAP
+         if (sym == NULL)
+           /* This can happen in trace mode if an object could not be
+              found.  */
+           break;
          if (sym->st_size > refsym->st_size
              || (_dl_verbose && sym->st_size < refsym->st_size))
            {
@@ -359,7 +395,6 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
            }
          memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
                                                   refsym->st_size));
-#endif
          break;
        case R_SPARC_GLOB_DAT:
        case R_SPARC_32:
index 260481230fe53177acd0955fccadd37072bb4a93..6782db77df407a3e15feadb33ec299b6396d8949 100644 (file)
@@ -32,7 +32,7 @@
 
 ENTRY(__mpn_addmul_1)
        !#PROLOGUE#     0
-       save    %sp,-128,%sp
+       save    %sp,-192,%sp
        !#PROLOGUE#     1
 
        sub     %g0,%i2,%o7
index 788e239779bddf75d3eedc46686098f90353c11b..33def6b45506dd0fdcc32cb6d19e41be58fc8181 100644 (file)
 
 #include <assert.h>
 #include <string.h>
-#include <link.h>
 #include <sys/param.h>
+#include <elf/ldsodefs.h>
 #include <sysdep.h>
 
-
-/* Translate a processor-specific dynamic tag to the index into l_info.  */
-#define DT_SPARC(x)    (DT_SPARC_##x - DT_LOPROC + DT_NUM)
-
 /* Return nonzero iff E_MACHINE is compatible with the running host.  */
 static inline int
 elf_machine_matches_host (Elf64_Half e_machine)
 {
-  return e_machine == EM_SPARC64;
+  return e_machine == EM_SPARCV9;
 }
 
 /* Return the link-time address of _DYNAMIC.  Conveniently, this is the
@@ -42,12 +38,11 @@ elf_machine_matches_host (Elf64_Half e_machine)
 static inline Elf64_Addr
 elf_machine_dynamic (void)
 {
-  register Elf64_Addr elf_pic_register __asm__("%l7");
+  register Elf64_Addr *elf_pic_register __asm__("%l7");
 
-  return *(Elf64_Addr *)elf_pic_register;
+  return *elf_pic_register;
 }
 
-
 /* Return the run-time load address of the shared object.  */
 static inline Elf64_Addr
 elf_machine_load_address (void)
@@ -67,21 +62,92 @@ elf_machine_load_address (void)
   return pc - *(Elf64_Addr *)(elf_pic_register + la);
 }
 
+/* We have 3 cases to handle.  And we code different code sequences
+   for each one.  I love V9 code models...  */
 static inline void
 elf_machine_fixup_plt(struct link_map *map, const Elf64_Rela *reloc,
                       Elf64_Addr *reloc_addr, Elf64_Addr value)
 {
-  Elf64_Dyn *pltfmt = map->l_info[DT_SPARC(PLTFMT)];
-  switch (pltfmt ? pltfmt->d_un.d_val : 0)
+  unsigned int *insns = (unsigned int *) reloc_addr;
+  Elf64_Addr plt_vaddr = (Elf64_Addr) reloc_addr;
+
+  /* Now move plt_vaddr up to the call instruction.  */
+  plt_vaddr += (2 * 4);
+
+  /* 32-bit Sparc style, the target is in the lower 32-bits of
+     address space.  */
+  if ((value >> 32) == 0)
     {
-    case 1: /* .got.plt with absolute addresses */
-      *reloc_addr = value;
-      break;
-    case 2: /* .got.plt with got-relative addresses */
-      *reloc_addr = value - (map->l_info[DT_PLTGOT]->d_un.d_ptr + map->l_addr);
-      break;
-    default:
-      assert (! "unexpected .plt format type");
+      /* sethi %hi(target), %g1
+        jmpl   %g1 + %lo(target), %g0  */
+
+      insns[2] = 0x81c06000 | (value & 0x3ff);
+      __asm __volatile ("flush %0 + 8" : : "r" (insns));
+
+      insns[1] = 0x03000000 | ((unsigned int)(value >> 10));
+      __asm __volatile ("flush %0 + 4" : : "r" (insns));
+    }
+  /* We can also get somewhat simple sequences if the distance between
+     the target and the PLT entry is within +/- 2GB.  */
+  else if ((plt_vaddr > value
+           && ((plt_vaddr - value) >> 32) == 0)
+          || (value > plt_vaddr
+              && ((value - plt_vaddr) >> 32) == 0))
+    {
+      unsigned int displacement;
+
+      if (plt_vaddr > value)
+       displacement = (0 - (plt_vaddr - value));
+      else
+       displacement = value - plt_vaddr;
+
+      /* mov   %o7, %g1
+        call   displacement
+         mov   %g1, %o7  */
+
+      insns[3] = 0x9e100001;
+      __asm __volatile ("flush %0 + 12" : : "r" (insns));
+
+      insns[2] = 0x40000000 | (displacement >> 2);
+      __asm __volatile ("flush %0 + 8" : : "r" (insns));
+
+      insns[1] = 0x8210000f;
+      __asm __volatile ("flush %0 + 4" : : "r" (insns));
+    }
+  /* Worst case, ho hum...  */
+  else
+    {
+      unsigned int high32 = (value >> 32);
+      unsigned int low32 = (unsigned int) value;
+
+      /* ??? Some tricks can be stolen from the sparc64 egcs backend
+            constant formation code I wrote.  -DaveM  */
+
+      /* sethi %hh(value), %g1
+        sethi  %lm(value), %g2
+        or     %g1, %hl(value), %g1
+        or     %g2, %lo(value), %g2
+        sllx   %g1, 32, %g1
+        jmpl   %g1 + %g2, %g0
+         nop  */
+
+      insns[6] = 0x81c04002;
+      __asm __volatile ("flush %0 + 24" : : "r" (insns));
+
+      insns[5] = 0x83287020;
+      __asm __volatile ("flush %0 + 20" : : "r" (insns));
+
+      insns[4] = 0x8410a000 | (low32 & 0x3ff);
+      __asm __volatile ("flush %0 + 16" : : "r" (insns));
+
+      insns[3] = 0x82106000 | (high32 & 0x3ff);
+      __asm __volatile ("flush %0 + 12" : : "r" (insns));
+
+      insns[2] = 0x05000000 | (low32 >> 10);
+      __asm __volatile ("flush %0 + 8" : : "r" (insns));
+
+      insns[1] = 0x03000000 | (high32 >> 10);
+      __asm __volatile ("flush %0 + 4" : : "r" (insns));
     }
 }
 
@@ -119,7 +185,7 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
 #endif
        *reloc_addr = map->l_addr + reloc->r_addend;
     }
-  else
+  else if (ELF64_R_TYPE (reloc->r_info) != R_SPARC_NONE) /* Who is Wilbur? */
     {
       const Elf64_Sym *const refsym = sym;
       Elf64_Addr value;
@@ -137,6 +203,10 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
       switch (ELF64_R_TYPE (reloc->r_info))
        {
        case R_SPARC_COPY:
+         if (sym == NULL)
+           /* This can happen in trace mode if an object could not be
+              found.  */
+           break;
          if (sym->st_size > refsym->st_size
              || (_dl_verbose && sym->st_size < refsym->st_size))
            {
@@ -164,6 +234,9 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
        case R_SPARC_16:
          *(short *) reloc_addr = value;
          break;
+       case R_SPARC_32:
+         *(unsigned int *) reloc_addr = value;
+         break;
        case R_SPARC_DISP8:
          *(char *) reloc_addr = (value - (Elf64_Addr) reloc_addr);
          break;
@@ -171,27 +244,64 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
          *(short *) reloc_addr = (value - (Elf64_Addr) reloc_addr);
          break;
        case R_SPARC_DISP32:
-         *(unsigned int *)reloc_addr = (value - (Elf64_Addr) reloc_addr);
-         break;
-       case R_SPARC_LO10:
-         *(unsigned *)reloc_addr = (*(unsigned *)reloc_addr & ~0x3ff)
-                                    | (value & 0x3ff);
+         *(unsigned int *) reloc_addr = (value - (Elf64_Addr) reloc_addr);
          break;
        case R_SPARC_WDISP30:
-         *(unsigned *)reloc_addr = ((*(unsigned *)reloc_addr & 0xc0000000)
-                        | ((value - (Elf64_Addr) reloc_addr) >> 2));
+         *(unsigned int *) reloc_addr =
+           ((*(unsigned int *)reloc_addr & 0xc0000000) |
+            ((value - (Elf64_Addr) reloc_addr) >> 2));
+         break;
+
+       /* MEDLOW code model relocs */
+       case R_SPARC_LO10:
+         *(unsigned int *) reloc_addr =
+           ((*(unsigned int *)reloc_addr & ~0x3ff) |
+            (value & 0x3ff));
          break;
        case R_SPARC_HI22:
-         *(unsigned *)reloc_addr = (*(unsigned *)reloc_addr & 0xffc00000)
-                                    | (value >> 10);
+         *(unsigned int *) reloc_addr =
+           ((*(unsigned int *)reloc_addr & 0xffc00000) |
+            (value >> 10));
+         break;
+
+       /* MEDMID code model relocs */
+       case R_SPARC_H44:
+         *(unsigned int *) reloc_addr =
+           ((*(unsigned int *)reloc_addr & 0xffc00000) |
+            (value >> 22));
+         break;
+       case R_SPARC_M44:
+         *(unsigned int *) reloc_addr =
+           ((*(unsigned int *)reloc_addr & ~0x3ff) |
+            ((value >> 12) & 0x3ff));
+         break;
+       case R_SPARC_L44:
+         *(unsigned int *) reloc_addr =
+           ((*(unsigned int *)reloc_addr & ~0xfff) |
+            (value & 0xfff));
+         break;
+
+       /* MEDANY code model relocs */
+       case R_SPARC_HH22:
+         *(unsigned int *) reloc_addr =
+           ((*(unsigned int *)reloc_addr & 0xffc00000) |
+            (value >> 42));
+         break;
+       case R_SPARC_HM10:
+         *(unsigned int *) reloc_addr =
+           ((*(unsigned int *)reloc_addr & ~0x3ff) |
+            ((value >> 32) & 0x3ff));
+         break;
+       case R_SPARC_LM22:
+         *(unsigned int *) reloc_addr =
+           ((*(unsigned int *)reloc_addr & 0xffc00000) |
+            ((value >> 10) & 0x003fffff));
          break;
 
        case R_SPARC_JMP_SLOT:
          elf_machine_fixup_plt(map, reloc, reloc_addr, value);
          break;
 
-       case R_SPARC_NONE:              /* Alright, Wilbur.  */
-         break;
        default:
          assert (! "unexpected dynamic reloc type");
          break;
@@ -239,16 +349,63 @@ elf_machine_lazy_rel (Elf64_Addr l_addr, const Elf64_Rela *reloc)
 static inline int
 elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
 {
-  Elf64_Addr *got;
-  extern void _dl_runtime_resolve (void);
-
   if (l->l_info[DT_JMPREL] && lazy)
     {
-      got = (Elf64_Addr *) (l->l_addr + l->l_info[DT_PLTGOT]->d_un.d_ptr);
-      /* This function will get called to fix up the GOT entry indicated by
-         the offset on the stack, and then jump to the resolved address.  */
-      got[1] = (Elf64_Addr) &_dl_runtime_resolve;
-      got[2] = (Elf64_Addr) l;  /* Identify this shared object.  */
+      extern void _dl_runtime_resolve_0 (void);
+      extern void _dl_runtime_resolve_1 (void);
+      extern void _dl_runtime_profile_0 (void);
+      extern void _dl_runtime_profile_1 (void);
+      Elf64_Addr res0_addr, res1_addr;
+      unsigned int *plt = (unsigned int *)
+       (l->l_addr + l->l_info[DT_PLTGOT]->d_un.d_ptr);
+
+      if (! profile)
+       {
+         res0_addr = (Elf64_Addr) &_dl_runtime_resolve_0;
+         res1_addr = (Elf64_Addr) &_dl_runtime_resolve_1;
+       }
+      else
+       {
+         res0_addr = (Elf64_Addr) &_dl_runtime_profile_0;
+         res1_addr = (Elf64_Addr) &_dl_runtime_profile_1;
+         if (_dl_name_match_p (_dl_profile, l))
+           _dl_profile_map = l;
+       }
+
+      /* PLT0 looks like:
+
+        save   %sp, -192, %sp
+        sethi  %hh(_dl_runtime_{resolve,profile}_0), %g3
+        sethi  %lm(_dl_runtime_{resolve,profile}_0), %g4
+        or     %g3, %hm(_dl_runtime_{resolve,profile}_0), %g3
+        or     %g4, %lo(_dl_runtime_{resolve,profile}_0), %g4
+        sllx   %g3, 32, %g3
+        jmpl   %g3 + %g4, %o0
+         nop
+
+        PLT1 is similar except we jump to _dl_runtime_{resolve,profile}_1.  */
+
+      plt[0] = 0x9de3bf40;
+      plt[1] = 0x07000000 | (res0_addr >> (64 - 22));
+      plt[2] = 0x09000000 | ((res0_addr >> 10) & 0x003fffff);
+      plt[3] = 0x8610e000 | ((res0_addr >> 32) & 0x3ff);
+      plt[4] = 0x88112000 | (res0_addr & 0x3ff);
+      plt[5] = 0x8728f020;
+      plt[6] = 0x91c0c004;
+      plt[7] = 0x01000000;
+
+      plt[8 + 0] = 0x9de3bf40;
+      plt[8 + 1] = 0x07000000 | (res1_addr >> (64 - 22));
+      plt[8 + 2] = 0x09000000 | ((res1_addr >> 10) & 0x003fffff);
+      plt[8 + 3] = 0x8610e000 | ((res1_addr >> 32) & 0x3ff);
+      plt[8 + 4] = 0x88112000 | (res1_addr & 0x3ff);
+      plt[8 + 5] = 0x8728f020;
+      plt[8 + 6] = 0x91c0c004;
+      plt[8 + 7] = 0x01000000;
+
+      /* Now put the magic cookie at the beginning of .PLT3
+        Entry .PLT4 is unused by this implementation.  */
+      *((struct link_map **)(&plt[16 + 0])) = l;
     }
 
   return lazy;
@@ -256,23 +413,68 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
 
 /* This code is used in dl-runtime.c to call the `fixup' function
    and then redirect to the address it returns.  */
-#define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\
-       .globl _dl_runtime_resolve
-       .type _dl_runtime_resolve, @function
-_dl_runtime_resolve:
-       save %sp, -160, %sp
-       mov %g1, %o0
-       call fixup
-        mov %g2, %o1
-       jmp %o0
+#define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name)    \
+  asm ("\
+       .text
+       .globl  " #tramp_name "_0
+       .type   " #tramp_name "_0, @function
+       .align  32
+" #tramp_name "_0:
+       ldx     [%o0 + 32 + 8], %l0
+       sethi   %hi(1048576), %g2
+       sub     %g1, %o0, %o0
+       xor     %g2, -20, %g2
+       sethi   %hi(5120), %g3
+       add     %o0, %g2, %o0
+       sethi   %hi(32768), %o2
+       udivx   %o0, %g3, %g3
+       sllx    %g3, 2, %g1
+       add     %g1, %g3, %g1
+       sllx    %g1, 10, %g2
+       sllx    %g1, 5, %g1
+       sub     %o0, %g2, %o0
+       udivx   %o0, 24, %o0
+       add     %o0, %o2, %o0
+       add     %g1, %o0, %g1
+       sllx    %g1, 1, %o1
+       mov     %l0, %o0
+       add     %o1, %g1, %o1
+       mov     %i7, %o2
+       call    " #fixup_name "
+        sllx   %o1, 3, %o1
+       jmp     %o0
+        restore
+       .size   " #tramp_name "_0, . - " #tramp_name "_0
+
+       .globl  " #tramp_name "_1
+       .type   " #tramp_name "_1, @function
+       .align  32
+" #tramp_name "_1:
+       srlx    %g1, 15, %o1
+       ldx     [%o0 + 8], %o0
+       sllx    %o1, 1, %o3
+       add     %o1, %o3, %o1
+       mov     %i7, %o2
+       call    " #fixup_name "
+        sllx   %o1, 3, %o1
+       jmp     %o0
         restore
-       .size _dl_runtime_resolve, .-_dl_runtime_resolve
-");
+       .size   " #tramp_name "_1, . - " #tramp_name "_1
+       .previous");
+
+#ifndef PROF
+#define ELF_MACHINE_RUNTIME_TRAMPOLINE                         \
+  TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup);    \
+  TRAMPOLINE_TEMPLATE (_dl_runtime_profile, profile_fixup);
+#else
+#define ELF_MACHINE_RUNTIME_TRAMPOLINE                 \
+  TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup);    \
+  TRAMPOLINE_TEMPLATE (_dl_runtime_profile, fixup);
+#endif
 
 /* The PLT uses Elf64_Rela relocs.  */
 #define elf_machine_relplt elf_machine_rela
 
-
 /* Initial entry point code for the dynamic linker.
    The C function `_dl_start' is the real entry point;
    its return value is the user program's entry point.  */
@@ -281,8 +483,10 @@ _dl_runtime_resolve:
 #define __S(x) __S1(x)
 
 #define RTLD_START __asm__ ( "\
-       .global _start
-       .type _start, @function
+       .text
+       .global _start
+       .type   _start, @function
+       .align  32
 _start:
    /* Make room for functions to drop their arguments on the stack.  */
        sub     %sp, 6*8, %sp
@@ -292,8 +496,8 @@ _start:
        /* FALLTHRU */
        .size _start, .-_start
 
-       .global _dl_start_user
-       .type _dl_start_user, @function
+       .global _dl_start_user
+       .type   _dl_start_user, @function
 _dl_start_user:
    /* Load the GOT register.  */
 1:     call    11f
@@ -302,6 +506,12 @@ _dl_start_user:
        add     %l7,%o7,%l7
    /* Save the user entry point address in %l0.  */
        mov     %o0,%l0
+  /* Store the highest stack address.  */
+       sethi   %hi(__libc_stack_end), %g2
+       or      %g2, %lo(__libc_stack_end), %g2
+       ldx     [%l7 + %g2], %l1
+       add     %sp, 6*8, %l2
+       stx     %l2, [%l1]
    /* See if we were run as a command with the executable file name as an
       extra leading argument.  If so, we must shift things around since we
       must keep the stack doubleword aligned.  */
@@ -338,7 +548,7 @@ _dl_start_user:
        stx     %i4, [%i1+8]
        brnz,pt %i3, 13b
         add    %i1, 16, %i1
-   /* Load _dl_main_searchlist to pass to _dl_init_next.  */
+  /* Load searchlist of the main object to pass to _dl_init_next.  */
 2:     sethi   %hi(_dl_main_searchlist), %g2
        or      %g2, %lo(_dl_main_searchlist), %g2
        ldx     [%l7+%g2], %g2
@@ -349,8 +559,7 @@ _dl_start_user:
        brz,pn  %o0, 4f
         nop
        jmpl    %o0, %o7
-        nop
-       ba,a    3b
+        sub    %o7, 24, %o7
    /* Clear the startup flag.  */
 4:     sethi   %hi(_dl_starting_up), %g2
        or      %g2, %lo(_dl_starting_up), %g2
@@ -360,7 +569,8 @@ _dl_start_user:
        sethi   %hi(_dl_fini), %g1
        or      %g1, %lo(_dl_fini), %g1
        ldx     [%l7+%g1], %g1
-   /* Jump to the user's entry point & undo the allocation of the xtra regs.  */
+  /* Jump to the user's entry point and deallocate the extra stack we got.  */
        jmp     %l0
         add    %sp, 6*8, %sp
-       .size _dl_start_user, .-_dl_start_user");
+       .size   _dl_start_user, . - _dl_start_user
+       .previous");
index 318e7a6a3f1adb76047168d641d0b136c32289ab..c2fe01f6b0234602ddc4b1710d19513b2e987207 100644 (file)
@@ -40,7 +40,7 @@ __DTOR_LIST__:
        .align 4
        .type __do_global_dtors_aux,#function
 __do_global_dtors_aux:
-       save    %sp,-160,%sp
+       save    %sp,-192,%sp
 
 #ifdef PIC
 1:     call    11f
@@ -53,7 +53,6 @@ __do_global_dtors_aux:
 #else
        sethi   %hi(__DTOR_LIST__), %l0
        or      %l0, %lo(__DTOR_LIST__), %l0
-       add     %l0, %g4, %l0
 #endif
 
        ba      3f
index 7a5c067b0732ff8f6a11b88985fae5aa7cf4fec5..db0ac87ecd23c645aeea0981728281022968532a 100644 (file)
@@ -40,7 +40,7 @@ __DTOR_END__:
        .align 4
        .type __do_global_ctors_aux,#function
 __do_global_ctors_aux:
-       save    %sp,-160,%sp
+       save    %sp,-192,%sp
 
 #ifdef PIC
 1:     call    11f
@@ -53,7 +53,6 @@ __do_global_ctors_aux:
 #else
        sethi   %hi(__CTOR_END__), %l0
        or      %l0, %lo(__CTOR_END__), %l0
-       add     %l0, %g4, %l0
 #endif
 
        ba      3f
index 140cd366e502b526538a97d3471f9d89b131f28e..1fc24619cf12f2c0cf316bf4edb9066d000dd962 100644 (file)
@@ -38,24 +38,12 @@ _start:
        add     %sp, STACK_BIAS+23*8, %o2
 
   /* Load the addresses of the user entry points.  */
-        sethi   %uhi(main), %o0
-        sethi   %uhi(_init), %o3
-        sethi   %uhi(_fini), %o4
-        or      %o0, %ulo(main), %o0
-        or      %o3, %ulo(_init), %o3
-        or      %o4, %ulo(_fini), %o4
-        sethi   %hi(main), %i0
-        sethi   %hi(_init), %i3
-        sethi   %hi(_fini), %i4
-       sllx    %o0, 32, %o0
-        or      %i0, %lo(main), %i0
-       sllx    %o3, 32, %o3
-        or      %i3, %lo(_init), %i3
-       sllx    %o4, 32, %o4
-        or      %i4, %lo(_fini), %i4
-       or      %o0, %i0, %o0
-       or      %o3, %i3, %o3
-       or      %o4, %i4, %o4
+        sethi   %hi(main), %o0
+        sethi   %hi(_init), %o3
+        sethi   %hi(_fini), %o4
+        or      %o0, %lo(main), %o0
+        or      %o3, %lo(_init), %o3
+        or      %o4, %lo(_fini), %o4
 
   /* When starting a binary via the dynamic linker, %g1 contains the
      address of the shared library termination function, which will be
index 1678991529acbe283a73953d83d2e039e639acf4..f211924ddb3bb9e05e588727b4176b32d5e2f420 100644 (file)
@@ -28,7 +28,7 @@
    cnt         %i3  */
 
 ENTRY(__mpn_lshift)
-       save    %sp, -128, %sp
+       save    %sp, -192, %sp
 
        sllx    %i2,3,%g1
        add     %i1,%g1,%i1     ! make %i1 point at end of src
index 87e441d7ebe090eab0b9666bffb6836c8ac86056..757856b4cd793c4b1b0cbd8eafa73459f17fe70b 100644 (file)
@@ -31,7 +31,7 @@
 
 ENTRY(__mpn_mul_1)
        !#PROLOGUE#     0
-       save    %sp,-128,%sp
+       save    %sp,-192,%sp
        !#PROLOGUE#     1
 
        sub     %g0,%i2,%o7
index e1b3aca1121cf192a824895fed4bd6eea7f8748d..51eb4af3ab8be06d5317f10caf5076ae4251e0db 100644 (file)
@@ -28,7 +28,7 @@
    cnt         %i3  */
 
 ENTRY(__mpn_rshift)
-       save    %sp, -128, %sp
+       save    %sp, -192, %sp
 
        ldx     [%i1],%g2       ! load first limb
        sub     %g0,%i3,%i5     ! negate shift count
index 3cc0e3bb0872e13e2222f1b8df8fad2ff5f0a1a9..ce9a80464f1b590acaff12d00f67627a9f6f8971 100644 (file)
@@ -31,7 +31,7 @@
 
 ENTRY(__mpn_submul_1)
        !#PROLOGUE#     0
-       save    %sp,-128,%sp
+       save    %sp,-192,%sp
        !#PROLOGUE#     1
 
        sub     %g0,%i2,%o7
index 1858ef485749fc831f952c6a8130ed07e4b9029d..3e4e855915f9b49116abb03e060d5cd18eb2fabb 100644 (file)
@@ -40,6 +40,8 @@ struct sigaction
 
 /* Bits in `sa_flags'.  */
 #define        SA_NOCLDSTOP 0x00000008  /* Don't send SIGCHLD when children stop.  */
+#define SA_SIGINFO   0x00000200  /* Invoke signal-catching function with
+                                   three arguments instead of one.  */
 #ifdef __USE_MISC
 # define SA_STACK     0x00000001 /* Use signal stack by using `sa_restorer'. */
 # define SA_RESTART   0x00000002 /* Restart syscall on signal return.  */
index fae38260230dd233796e39eae3d4f3abc61348c9..976eef275846cd7ea665dc0093407d687f630f8c 100644 (file)
@@ -32,8 +32,6 @@
  * Linux/SPARC has different signal numbers that Linux/i386: I'm trying
  * to make it OSF/1 binary compatible, at least for normal binaries.
  */
-#define        _NSIG           32      /* Biggest signal number + 1.  */
-
 #define SIGHUP          1
 #define SIGINT          2
 #define SIGQUIT                 3
 #define SIGUSR1                30
 #define SIGUSR2                31
 
+#define        _NSIG           64      /* Biggest signal number + 1
+                                  (including real-time signals).  */
+
+#define SIGRTMIN        (__libc_current_sigrtmin ())
+#define SIGRTMAX        (__libc_current_sigrtmax ())
+
+/* These are the hard limits of the kernel.  These values should not be
+   used directly at user level.  */
+#define __SIGRTMIN     32
+#define __SIGRTMAX     (_NSIG - 1)
+
 #endif /* <signal.h> included.  */
index 7e784cab8f55fc4736e87ba93b9f430f6ad89817..4d38631a19d827a50ccfb1de1a9e242496b51d7c 100644 (file)
@@ -33,7 +33,7 @@ weak_alias (__curbrk, ___brk_addr)
 int
 __brk (void *addr)
 {
-  void *newbrk, *scratch;
+  void *newbrk;
 
   {
     register void *o0 __asm__("%o0") = addr;
index 742ac5583c08da4dd9d213099e7b9a0b3851829b..ae44328fadca9c755bd857af87fe7582f2a99356 100644 (file)
 #include <errno.h>
 #include <kernel_sigaction.h>
 
+extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *,
+                                  struct kernel_sigaction *, unsigned long,
+                                  size_t);
+
+static void __rt_sigreturn_stub (void);
+static void __sigreturn_stub (void);
+
 /* The variable is shared between all wrappers around signal handling
    functions which have RT equivalents.  */
 int __libc_missing_rt_sigs;
@@ -30,8 +37,49 @@ int __libc_missing_rt_sigs;
 int
 __sigaction (int sig, __const struct sigaction *act, struct sigaction *oact)
 {
+  struct old_kernel_sigaction k_sigact, k_osigact;
   int ret;
-  struct kernel_sigaction k_sigact, k_osigact;
+
+  /* First try the RT signals.  */
+  if (!__libc_missing_rt_sigs)
+    {
+      struct kernel_sigaction kact, koact;
+      unsigned long stub = 0;
+      int saved_errno = errno;
+
+      if (act)
+       {
+         kact.k_sa_handler = act->sa_handler;
+         memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t));
+         if (((kact.sa_flags = act->sa_flags) & SA_SIGINFO) != 0)
+           stub = (unsigned long) &__rt_sigreturn_stub;
+         else
+           stub = (unsigned long) &__sigreturn_stub;
+         stub -= 8;
+         kact.sa_restorer = NULL;
+       }
+
+      /* XXX The size argument hopefully will have to be changed to the
+        real size of the user-level sigset_t.  */
+      ret = __syscall_rt_sigaction (sig, act ? &kact : 0,
+                                   oact ? &koact : 0,
+                                   stub, _NSIG / 8);
+
+      if (ret >= 0 || errno != ENOSYS)
+       {
+         if (oact && ret >= 0)
+           {
+             oact->sa_handler = koact.k_sa_handler;
+             memcpy (&oact->sa_mask, &koact.sa_mask, sizeof (sigset_t));
+             oact->sa_flags = koact.sa_flags;
+             oact->sa_restorer = koact.sa_restorer;
+           }
+         return ret;
+       }
+
+      __set_errno (saved_errno);
+      __libc_missing_rt_sigs = 1;
+    }
 
   /* Magic to tell the kernel we are using "new-style" signals, in that
      the signal table is not kept in userspace.  Not the same as the
@@ -41,15 +89,16 @@ __sigaction (int sig, __const struct sigaction *act, struct sigaction *oact)
   if (act)
     {
       k_sigact.k_sa_handler = act->sa_handler;
-      memcpy (&k_sigact.sa_mask, &act->sa_mask, sizeof (sigset_t));
+      k_sigact.sa_mask = act->sa_mask.__val[0];
       k_sigact.sa_flags = act->sa_flags;
+      k_sigact.sa_restorer = NULL;
     }
 
   {
     register int r_syscallnr __asm__("%g1") = __NR_sigaction;
     register int r_sig __asm__("%o0") = sig;
-    register struct kernel_sigaction *r_act __asm__("%o1");
-    register struct kernel_sigaction *r_oact __asm__("%o2");
+    register struct old_kernel_sigaction *r_act __asm__("%o1");
+    register struct old_kernel_sigaction *r_oact __asm__("%o2");
 
     r_act = act ? &k_sigact : NULL;
     r_oact = oact ? &k_osigact : NULL;
@@ -57,7 +106,7 @@ __sigaction (int sig, __const struct sigaction *act, struct sigaction *oact)
     __asm__ __volatile__("t 0x10\n\t"
                         "bcc 1f\n\t"
                         " nop\n\t"
-                        " sub %%g0,%%o0,%%o0\n"
+                        "sub %%g0,%%o0,%%o0\n"
                         "1:"
                         : "=r"(r_sig)
                         : "r"(r_syscallnr), "r"(r_act), "r"(r_oact),
@@ -66,16 +115,13 @@ __sigaction (int sig, __const struct sigaction *act, struct sigaction *oact)
     ret = r_sig;
   }
 
-  if (ret >= 0)
+  if (oact && ret >= 0)
     {
-      if (oact)
-       {
-         oact->sa_handler = k_osigact.k_sa_handler;
-         memcpy (&oact->sa_mask, &k_osigact.sa_mask, sizeof (sigset_t));
-         oact->sa_flags = k_osigact.sa_flags;
-         oact->sa_restorer = NULL;
-       }
-      return 0;
+      oact->sa_handler = k_osigact.k_sa_handler;
+      oact->sa_mask.__val[0] = k_osigact.sa_mask;
+      oact->sa_flags = k_osigact.sa_flags;
+      oact->sa_restorer = NULL;
+      return ret;
     }
 
   __set_errno (-ret);
@@ -83,3 +129,21 @@ __sigaction (int sig, __const struct sigaction *act, struct sigaction *oact)
 }
 
 weak_alias (__sigaction, sigaction);
+
+static void
+__rt_sigreturn_stub (void)
+{
+  __asm__ ("mov %0, %%g1\n\t"
+          "ta  0x10\n\t"
+          : /* no outputs */
+          : "i" (__NR_rt_sigreturn));
+}
+
+static void
+__sigreturn_stub (void)
+{
+  __asm__ ("mov %0, %%g1\n\t"
+          "ta  0x10\n\t"
+          : /* no outputs */
+          : "i" (__NR_sigreturn));
+}
index 50f83311cd851d5149655f3cae9c5406da1e3883..c22b73ebd2aa571beda4a86ce626c6c6c37066d0 100644 (file)
@@ -4,5 +4,4 @@ kernel_stat.h
 getcontext.S
 setcontext.S
 sizes.h
-ucontext.h
 init-first.h
index b200b718d23734adc6e14c4f5ff52f6a7775840b..e51f81a5a000f693f31fd0ab9fd7aee3edc0bc90 100644 (file)
 # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
 #endif
 
-#include <ucontext.h>
+#include <sys/ucontext.h>
 
 typedef ucontext_t __jmp_buf[1];
+
+/* Test if longjmp to JMPBUF would unwind the frame
+   containing a local variable at ADDRESS.  */
+#define _JMPBUF_UNWINDS(jmpbuf, address) \
+  ((unsigned long int) (address) < (jmpbuf)->uc_mcontext.mc_fp)
index 9027eca2ac22fda0d340ff15dae7a58b663ffcd0..b6178f5a8effc8e53a7b94fa51c8ca21a97a652d 100644 (file)
@@ -39,4 +39,20 @@ struct statfs
     long int f_spare[6];
   };
 
+/* We already use 64-bit types in the normal structure,
+   so this is the same as the above.  */
+struct statfs64
+  {
+    long int f_type;
+    long int f_bsize;
+    long int f_blocks;
+    long int f_bfree;
+    long int f_bavail;
+    long int f_files;
+    long int f_ffree;
+    __fsid_t f_fsid;
+    long int f_namelen;
+    long int f_spare[6];
+  };
+
 #endif /* bits/statfs.h */
index 333f9916f82e6b528c20f248b70edf7c4ad56e1f..e21b60d637e6c9ed34d9785a00afb9a9de3a8a81 100644 (file)
@@ -38,7 +38,7 @@ __curbrk: .skip 8
 
        .text
 ENTRY(__brk)
-       save    %sp, -160, %sp
+       save    %sp, -192, %sp
 #ifdef PIC
 1:     call    2f
        sethi   %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
@@ -49,24 +49,23 @@ ENTRY(__brk)
        LOADSYSCALL(brk)
        mov     %i0, %o0
 
-       ta      0x11
+       ta      0x6d
 
        /* All the ways we can fail... */
        bcs,pn  %xcc, .Lerr1
         nop
-       brz     %i0, .Lok
+       brz,pt  %i0, .Lok
         subcc  %i0, %o0, %g0
        bne,pn  %xcc, .Lerr0
+        nop
 
        /* Update __curbrk and return cleanly.  */
 .Lok:  sethi   %hi(__curbrk), %g1
        or      %g1, %lo(__curbrk), %g1
 #ifdef PIC
        ldx     [%l7+%g1], %g1
-       stx     %o0, [%g1]
-#else
-       stx     %o0, [%g4+%g1]
 #endif
+       stx     %o0, [%g1]
        mov     %g0, %i0
 
        /* Don't use "ret" cause the preprocessor will eat it.  */
@@ -81,10 +80,8 @@ ENTRY(__brk)
        or      %g1, %lo(errno), %g1
 #ifdef PIC
        ldx     [%l7+%g1], %g1
-       st      %o0, [%g1]
-#else
-       st      %o0, [%g4+%g1]
 #endif
+       st      %o0, [%g1]
 #else
        call    __errno_location
         mov    %o0,%l1
index 6c619fcdc3b505d03fc567ed5a87ea47ba8fe170..d7506b7c72c7fb0758551cc0eaf4de2818addc86 100644 (file)
@@ -30,7 +30,7 @@
        .type   __clone,@function
 
 __clone:
-       save    %sp,-160,%sp
+       save    %sp, -192, %sp
 
        /* sanity check arguments */
        brz,pn  %i0, 99f
@@ -42,10 +42,10 @@ __clone:
        mov     %i1, %o1
        mov     %i2, %o0
        set     __NR_clone, %g1
-       ta      0x11
+       ta      0x6d
        bcs,pn  %xcc, 99f
         nop
-       brnz    %o0, __thread_start
+       brnz,pn %o0, __thread_start
         mov    %o0, %i0
        ret
         restore
@@ -62,7 +62,6 @@ __clone:
        st      %i0, [%l7+%g2]
 #else
        sethi   %hi(errno), %g2
-       add     %g2, %g4, %g2
        set     EINVAL, %i0
        st      %i0, [%g2+%lo(errno)]
 #endif
index 955714dc4ffbe3967bd05a9ec5deb77036fdc1f6..ece284ab44264035b3465e9cdd490403b08275b3 100644 (file)
@@ -33,7 +33,7 @@
        .global " #NAME "
        .type " #NAME ",@function
 " #NAME ":
-       save    %sp, -128, %sp
+       save    %sp, -192, %sp
 1:     call    11f
        sethi   %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
 11:    or      %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
        or      %g2, %lo(_dl_starting_up), %g2
        brz,pt  %g2, 3f
         sethi  %hi(__libc_multiple_libcs), %g3
-       ld      [%g4+%g2], %g1
+       ld      [%g2], %g1
        mov     %g0, %g2
        movrz   %g1, 1, %g2
-3:     or      %g3, %lo(__libc_multiple_libcs), %g3
-       st      %g2, [%g3+%g4]
+3:     st      %g2, [%g3 + %lo(__libc_multiple_libcs)]
        /* If so, argc et al are in %o0-%o2 already.  Otherwise, load them.  */
        brnz,pn %g2, " #INIT "
         nop
index d63762cb154d9be2be87479c05aa140fd5afd488..963aa6d89dfab1ee53341817229408b54166ec11 100644 (file)
@@ -44,5 +44,7 @@ ENTRY(longjmp)
 END(longjmp)
 
 strong_alias(longjmp, __longjmp)
+strong_alias(longjmp, __libc_longjmp)
+strong_alias(longjmp, __libc_siglongjmp)
 weak_alias(longjmp, _longjmp)
 weak_alias(longjmp, siglongjmp)
index 82ff4eae3c5672a4c411b2e1525338745d095699..38a6f8f8b87c19ae5a75bfcd36edd0cb6191eabc 100644 (file)
@@ -22,7 +22,7 @@
 ENTRY (__libc_pipe)
         mov    %o0, %o2            /* Save PIPEDES. */
        LOADSYSCALL(pipe)
-       ta      0x11
+       ta      0x6d
        bcc,pn  %xcc, 2f
         nop
        SYSCALL_ERROR_HANDLER
index 96a6a7694522d02769ae25a7bf15d4f1d74352f6..300ebb26297cb5a24aa5154acd8a64cca12ba337 100644 (file)
@@ -1,4 +1,7 @@
 #define readdir64 __no_readdir64_decl
+#define __readdir64 __no___readdir64_decl
 #include <sysdeps/unix/readdir.c>
+#undef __readdir64
+strong_alias (__readdir, __readdir64)
 #undef readdir64
 weak_alias (__readdir, readdir64)
similarity index 93%
rename from sysdeps/unix/sysv/linux/sparc/sparc64/ucontext.h
rename to sysdeps/unix/sysv/linux/sparc/sparc64/sys/ucontext.h
index 160e2fc43a71d752e9a265765282a0c20e9d95a8..f62b542b2f1dead2d498927c900b77af0001000a 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef _UCONTEXT_H
-#define _UCONTEXT_H
+#ifndef _SYS_UCONTEXT_H
+#define _SYS_UCONTEXT_H
 
 #include <signal.h>
 
@@ -64,4 +64,4 @@ struct ucontext {
 };
 typedef struct ucontext ucontext_t;
 
-#endif /* ucontext.h */
+#endif /* sys/ucontext.h */
index 30dace59034336dd7e13f3061ac5ad47fc5403f8..5864bfcbc3282e1294e1f1e95ebadcaab4b94777 100644 (file)
@@ -28,7 +28,7 @@ ENTRY (syscall)
        mov     %o4,%o3
        mov     %o5,%o4
 
-       ta      0x11
+       ta      0x6d
 
        bcc,pt %xcc,1f
         nop
index fcf556b818cc9ed9fc29218b730164e0493ced84..1ec42fa42e8a51dd000a4a26b9faa50507e15569 100644 (file)
@@ -6,7 +6,7 @@ pread           -       pread           4       __pread         pread __pread64 pread64
 pwrite         -       pwrite          4       __pwrite        pwrite __pwrite64 pwrite64
 fstatfs                -       fstatfs         2       __fstatfs       fstatfs fstatfs64
 statfs         -       statfs          2       __statfs        statfs statfs64
-getrlimit      -       getrlimit       2       getrlimit       getrlimit64
+getrlimit      -       getrlimit       2       __getrlimit     getrlimit getrlimit64
 setrlimit      -       setrlimit       2       setrlimit       setrlimit64
 ftruncate      -       ftruncate       2       __ftruncate     ftruncate ftruncate64
 truncate       -       truncate        2       truncate        truncate64
index 2cc8547c1afeb106cfb9dc3c94b624ae9fbec172..5a9a4e249bd9040d306ad246bd97151f5c70030c 100644 (file)
 #ifdef PIC
 # ifdef _LIBC_REENTRANT
 #  define SYSCALL_ERROR_HANDLER                                                \
-       save %sp,-160,%sp;                                              \
-       call __errno_location;                                          \
+       save    %sp, -192, %sp;                                         \
+       call    __errno_location;                                       \
         nop;                                                           \
-       st %i0,[%o0];                                                   \
-       sub %g0,1,%i0;                                                  \
-       jmpl %i7+8, %g0;                                                \
+       st      %i0,[%o0];                                              \
+       sub     %g0,1,%i0;                                              \
+       jmpl    %i7+8, %g0;                                             \
         restore
 # else
 #  define SYSCALL_ERROR_HANDLER                                                \
        .global C_SYMBOL_NAME(errno);                                   \
        .type C_SYMBOL_NAME(errno),@object;                             \
-       mov %o7,%g3;                                                    \
-  101: call 102f;                                                      \
-       sethi %hi(_GLOBAL_OFFSET_TABLE_-(101b-.)),%g2;                  \
-  102: or %g2,%lo(_GLOBAL_OFFSET_TABLE_-(101b-.)),%g2;                 \
-       sethi %hi(errno),%o1;                                           \
-       add %g2,%o7,%l7;                                                \
-       or %o1,%lo(errno),%o1;                                          \
-       mov %g3,%o7;                                                    \
-       ldx [%l7+%o1],%g2;                                              \
-       st %o0,[%g2];                                                   \
+       mov     %o7, %g3;                                               \
+  101: call    102f;                                                   \
+       sethi   %hi(_GLOBAL_OFFSET_TABLE_-(101b-.)), %g2;               \
+  102: or      %g2,%lo(_GLOBAL_OFFSET_TABLE_-(101b-.)), %g2;           \
+       sethi   %hi(errno), %o1;                                        \
+       add     %g2, %o7, %l7;                                          \
+       or      %o1, %lo(errno), %o1;                                   \
+       mov     %g3,%o7;                                                \
+       ldx     [%l7+%o1], %g2;                                         \
+       st      %o0, [%g2];                                             \
        retl;                                                           \
-        sub %g0,1,%i0
+        sub    %g0, 1, %i0
 # endif
 #else
 # ifdef _LIBC_REENTRANT
 #  define SYSCALL_ERROR_HANDLER                                                \
-       save %sp,-160,%sp;                                              \
-       call __errno_location;                                          \
+       save    %sp, -192, %sp;                                         \
+       call    __errno_location;                                       \
         nop;                                                           \
-       st %i0,[%o0];                                                   \
-       sub %g0,1,%i0;                                                  \
-       jmpl %i7+8, %g0;                                                \
+       st      %i0, [%o0];                                             \
+       sub     %g0, 1, %i0;                                            \
+       jmpl    %i7+8, %g0;                                             \
         restore
 # else
 #  define SYSCALL_ERROR_HANDLER                                                \
        .global C_SYMBOL_NAME(errno);                                   \
        .type C_SYMBOL_NAME(errno),@object;                             \
-       sethi %hi(errno),%g1;                                           \
-       or %g1,%lo(errno),%g1;                                          \
-       st %i0,[%g1+%g4];                                               \
+       sethi   %hi(errno), %g1;                                        \
+       st      %i0, [%g1 + %lo(errno)];                                \
        retl;                                                           \
-        sub %g0,1,%i0
+        sub    %g0, 1, %i0
 # endif
 #endif
 
@@ -96,8 +95,8 @@
        .text;                                                          \
        ENTRY(name);                                                    \
        LOADSYSCALL(syscall_name);                                      \
-       ta 0x11;                                                        \
-       bcc,pt %xcc,1f;                                                 \
+       ta      0x6d;                                                   \
+       bcc,pt  %xcc, 1f;                                               \
         nop;                                                           \
        SYSCALL_ERROR_HANDLER;                                          \
 1: