1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-01 10:06:57 +03:00
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.
This commit is contained in:
Ulrich Drepper
1998-09-16 17:54:34 +00:00
parent a8125d8552
commit 9c4c002459
42 changed files with 796 additions and 353 deletions

122
ChangeLog
View File

@ -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> 1998-09-16 00:47 Tim Waugh <tim@cyberelk.demon.co.uk>
* posix/wordexp-test.c: If expansion or substitution occurs * posix/wordexp-test.c: If expansion or substitution occurs

View File

@ -77,7 +77,6 @@ all-headers := $(sort $(headers) \
# the source directory. # the source directory.
all-headers := $(filter-out ../%,$(all-headers)) all-headers := $(filter-out ../%,$(all-headers))
+subdir-nodist := $(patsubst +nodist+%,%,$(filter +nodist+%,$(+distinfo))) +subdir-nodist := $(patsubst +nodist+%,%,$(filter +nodist+%,$(+distinfo)))
+subdir-headers := $(filter-out $(headers),$(all-headers))
endif endif
foo:=$(shell echo 'IS THIS WORKING??? all-headers=$(all-headers)' >&2) 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)))) \ $(addsuffix /$(file),$(sysdep_dirs)))) \
$(+sysdep-dist) $(+sysdep-dist)
+tsrcs := $(+tsrcs) $(+sysdep-tsrcs) +tsrcs := $(+tsrcs) $(+sysdep-tsrcs) $(wildcard $(+sysdep-names:%=include/%))
ifeq ($(with-cvs),yes) ifeq ($(with-cvs),yes)
define autoconf-it define autoconf-it

View File

@ -93,9 +93,7 @@ binfmt-subdir = aout
endif endif
# Complete path to sysdep dirs. # Complete path to sysdep dirs.
full-config-sysdirs := $(filter /%, $(config-sysdirs)) \ export full-config-sysdirs := $(addprefix $(..),$(config-sysdirs))
$(addprefix $(..), $(filter-out /%, $(config-sysdirs)))
export full-config-sysdirs := $(full-config-sysdirs)
# Run config.status to update config.make and config.h. We don't show the # 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 # 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)) \ subdirs := $(filter mach,$(subdirs)) $(filter hurd,$(subdirs)) \
$(filter-out mach 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) $(common-objpfx)sysd-dirs: $(common-objpfx)config.make $(all-Subdirs-files)
(echo define sysdep-subdirs; \ (echo define sysdep-subdirs; \
sed 's/#.*$$//' $(all-Subdirs-files) /dev/null; \ sed 's/#.*$$//' $(all-Subdirs-files) /dev/null; \

View File

@ -253,7 +253,6 @@ distribute := README README.libm INSTALL FAQ FAQ.in NOTES NEWS BUGS \
version.h shlib-versions rpm/Makefile rpm/template \ version.h shlib-versions rpm/Makefile rpm/template \
rpm/rpmrc glibcbug.in abi-tags stub-tag.h \ rpm/rpmrc glibcbug.in abi-tags stub-tag.h \
test-skeleton.c include/des.h Versions.def \ test-skeleton.c include/des.h Versions.def \
include/sys/mman.h \
$(addprefix scripts/, \ $(addprefix scripts/, \
rellns-sh config.sub config.guess \ rellns-sh config.sub config.guess \
mkinstalldirs move-if-change install-sh \ mkinstalldirs move-if-change install-sh \

View File

@ -104,17 +104,9 @@ $(+sysdir_pfx)sysd-Makefile: $(+sysdir_pfx)config.make $(..)Makerules \
$(sysd-Makefile-force) $(sysd-Makefile-force)
-@rm -f $@T -@rm -f $@T
(echo 'sysd-Makefile-sysdirs := $(config-sysdirs)'; \ (echo 'sysd-Makefile-sysdirs := $(config-sysdirs)'; \
for dir in $(config-sysdirs); do \ for file in $(config-sysdirs:=/Makefile); do \
file=$$dir/Makefile; \ if [ -f $(..)$$file ]; then \
case $$dir in \ echo include "\$$(..)$$file"; \
/*) rel= ;; \
*) rel=$(..) ;; \
esac; \
if [ -f $$rel$$file ]; then \
case $$dir in \
/*) echo include "$$file" ;; \
*) echo include "\$$(..)$$file" ;; \
esac; \
else true; fi; \ else true; fi; \
done; \ done; \
echo 'sysd-Makefile-done=t') > $@T echo 'sysd-Makefile-done=t') > $@T
@ -244,11 +236,7 @@ $(+sysdir_pfx)sysd-rules: $(+sysdir_pfx)config.make $(..)Makerules \
$(sysd-rules-force) $(sysd-rules-force)
-@rm -f $@T -@rm -f $@T
(echo 'sysd-rules-sysdirs := $(config-sysdirs)'; \ (echo 'sysd-rules-sysdirs := $(config-sysdirs)'; \
for sysdir in $(config-sysdirs); do \ for dir in $(config-sysdirs:%='$$(..)%'); do \
case $$sysdir in \
/*) dir=$$sysdir ;; \
*) dir="\$$(..)$$sysdir" ;; \
esac; \
for o in $(all-object-suffixes); do \ for o in $(all-object-suffixes); do \
$(open-check-inhibit-asm) \ $(open-check-inhibit-asm) \
echo "\$$(objpfx)%$$o: $$dir/%.S \$$(before-compile); \ echo "\$$(objpfx)%$$o: $$dir/%.S \$$(before-compile); \

6
Rules
View File

@ -223,7 +223,7 @@ $(common-objpfx)bits/stdio_%.h $(common-objpfx)bits/stdio_%.d: \
$(CC) $(+includes) -E -dM -xc - -o $(@:.d=.h)T $(CC) $(+includes) -E -dM -xc - -o $(@:.d=.h)T
sed -e 's!MARKER!$(@:.h=.d) $(@:.d=.h)!' \ sed -e 's!MARKER!$(@:.h=.d) $(@:.d=.h)!' \
-e 's!$(common-objpfx)!$$(common-objpfx)!g' \ -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) mv -f $(@:.h=.d)t $(@:.h=.d)
fopen_max=`sed -n 's/^#define OPEN_MAX //p' $(@:.d=.h)T`; \ fopen_max=`sed -n 's/^#define OPEN_MAX //p' $(@:.d=.h)T`; \
filename_max=`sed -n 's/^#define PATH_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/@TMP_MAX@/$(TMP_MAX)/" \
-e "s/@L_ctermid@/$(L_ctermid)/" \ -e "s/@L_ctermid@/$(L_ctermid)/" \
-e "s/@L_cuserid@/$(L_cuserid)/" \ -e "s/@L_cuserid@/$(L_cuserid)/" \
$< > $(@:.d=.h).new && \ $< > $(@:.d=.h).new
mv -f $(@:.d=.h).new $(@:.d=.h); \ mv -f $(@:.d=.h).new $(@:.d=.h)
# Remove these last so that they can be examined if something went wrong. # Remove these last so that they can be examined if something went wrong.
rm -f $(@:.d=.h)T $(@:.h=.d)T rm -f $(@:.d=.h)T $(@:.h=.d)T
# Get dependencies. # Get dependencies.

274
configure vendored
View File

@ -12,7 +12,7 @@
# Guess values for system-dependent variables and create Makefiles. # 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. # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
# #
# This configure script is free software; the Free Software Foundation # This configure script is free software; the Free Software Foundation
@ -103,6 +103,7 @@ mandir='${prefix}/man'
# Initialize some other variables. # Initialize some other variables.
subdirs= subdirs=
MFLAGS= MAKEFLAGS= MFLAGS= MAKEFLAGS=
SHELL=${CONFIG_SHELL-/bin/sh}
# Maximum number of lines to put in a shell here document. # Maximum number of lines to put in a shell here document.
ac_max_here_lines=12 ac_max_here_lines=12
@ -386,7 +387,7 @@ EOF
verbose=yes ;; verbose=yes ;;
-version | --version | --versio | --versi | --vers) -version | --version | --versio | --versi | --vers)
echo "configure generated by autoconf version 2.12" echo "configure generated by autoconf version 2.12.2"
exit 0 ;; exit 0 ;;
-with-* | --with-*) -with-* | --with-*)
@ -556,9 +557,11 @@ ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CPP $CPPFLAGS' ac_cpp='$CPP $CPPFLAGS'
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' 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 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 if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
# Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. # 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 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 if test "${enable_add_ons+set}" = set; then
enableval="$enable_add_ons" enableval="$enable_add_ons"
case "$enableval" in case "$enableval" in
yes) if test "$srcdir" = "."; then yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
add_ons=`echo */configure | sed -e 's!/configure!!g'` test "$add_ons" = "*" && add_ons= ;;
else
add_ons=`echo $srcdir/*/configure | \
sed -e 's!/configure!!g' -e "s!$srcdir/!!g"`
fi;;
*) add_ons=`echo "$enableval" | sed 's/,/ /g'`;; *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
esac esac
else else
@ -805,26 +804,26 @@ fi
# Make sure we can run config.sub. # 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; } else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi fi
echo $ac_n "checking host system type""... $ac_c" 1>&6 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 host_alias=$host
case "$host_alias" in case "$host_alias" in
NONE) NONE)
case $nonopt in case $nonopt in
NONE) 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; } else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
fi ;; fi ;;
*) host_alias=$nonopt ;; *) host_alias=$nonopt ;;
esac ;; esac ;;
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_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
@ -933,7 +932,7 @@ fi
# This can take a while to compute. # This can take a while to compute.
sysdep_dir=$srcdir/sysdeps sysdep_dir=$srcdir/sysdeps
echo $ac_n "checking sysdep dirs""... $ac_c" 1>&6 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. # 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'`" 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" try="${d}sysdeps$m0$b$v$o$m"
test -n "$enable_debug_configure" && test -n "$enable_debug_configure" &&
echo "$0 DEBUG: try $try" >&2 echo "$0 DEBUG: try $try" >&2
case $try in if test -d $srcdir/$try; then
/*) dest=$try ;;
*) dest=$srcdir/$try ;;
esac
if test -d $dest; then
sysnames="$sysnames $try" sysnames="$sysnames $try"
{ test -n "$o" || test -n "$b"; } && os_used=t { test -n "$o" || test -n "$b"; } && os_used=t
{ test -n "$m" || test -n "$m0"; } && machine_used=t { test -n "$m" || test -n "$m0"; } && machine_used=t
@ -1047,12 +1042,8 @@ fi
if test "$elf" = yes; then if test "$elf" = yes; then
elf_dirs= elf_dirs=
for d in $add_ons_pfx ''; do for d in $add_ons_pfx ''; do
case $d in
/*) xsrcdir= ;;
*) xsrcdir=$srcdir/ ;;
esac
for m in $mach; do 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" elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
fi fi
done done
@ -1138,28 +1129,30 @@ echo "$ac_t""$default_sysnames" 1>&6
# SunOS /usr/etc/install # SunOS /usr/etc/install
# IRIX /sbin/install # IRIX /sbin/install
# AIX /bin/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 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh. # ./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 $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 test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:" IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
for ac_dir in $PATH; do for ac_dir in $PATH; do
# Account for people who put trailing slashes in PATH elements. # Account for people who put trailing slashes in PATH elements.
case "$ac_dir/" in case "$ac_dir/" in
/|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
*) *)
# OSF1 and SCO ODT 3.0 have their own names for install. # 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 -f $ac_dir/$ac_prog; then
if test $ac_prog = install && if test $ac_prog = install &&
grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention. # AIX install. It has an incompatible calling convention.
# OSF/1 installbsd also uses dspmsg, but is usable.
: :
else else
ac_cv_path_install="$ac_dir/$ac_prog -c" 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' INSTALL='\$(..)./install-sh -c'
fi fi
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1219,7 +1212,7 @@ fi
# These programs are version sensitive. # These programs are version sensitive.
echo $ac_n "checking build system type""... $ac_c" 1>&6 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 build_alias=$build
case "$build_alias" in case "$build_alias" in
@ -1230,7 +1223,7 @@ NONE)
esac ;; esac ;;
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_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` 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. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
if test -n "$CC"; then if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test. ac_cv_prog_CC="$CC" # Let the user override the test.
else else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
for ac_dir in $PATH; do for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=. test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then if test -f $ac_dir/$ac_word; then
@ -1280,7 +1273,7 @@ if test -z "$CC"; then
else else
# Found it, now check the version. # Found it, now check the version.
echo $ac_n "checking version of $CC""... $ac_c" 1>&6 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'` ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcstp-]*[0-9.]*\).*$/\1/p'`
case $ac_prog_version in case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; '') 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. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
if test -n "$MAKE"; then if test -n "$MAKE"; then
ac_cv_prog_MAKE="$MAKE" # Let the user override the test. ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
else else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
for ac_dir in $PATH; do for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=. test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then if test -f $ac_dir/$ac_word; then
@ -1333,7 +1326,7 @@ if test -z "$MAKE"; then
else else
# Found it, now check the version. # Found it, now check the version.
echo $ac_n "checking version of $MAKE""... $ac_c" 1>&6 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'` ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*version \([0-9][0-9.]*\), by.*$/\1/p'`
case $ac_prog_version in case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; '') 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. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
if test -n "$MSGFMT"; then if test -n "$MSGFMT"; then
ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test. ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
else else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
for ac_dir in $PATH; do for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=. test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then if test -f $ac_dir/$ac_word; then
@ -1387,7 +1380,7 @@ if test -z "$MSGFMT"; then
else else
# Found it, now check the version. # Found it, now check the version.
echo $ac_n "checking version of $MSGFMT""... $ac_c" 1>&6 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'` ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; '') 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. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
if test -n "$MAKEINFO"; then if test -n "$MAKEINFO"; then
ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test. ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
else else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
for ac_dir in $PATH; do for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=. test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then if test -f $ac_dir/$ac_word; then
@ -1440,7 +1433,7 @@ if test -z "$MAKEINFO"; then
else else
# Found it, now check the version. # Found it, now check the version.
echo $ac_n "checking version of $MAKEINFO""... $ac_c" 1>&6 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'` ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo \([0-9][0-9.]*\).*$/\1/p'`
case $ac_prog_version in case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; '') 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 $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 if eval "test \"`echo '$''{'ac_cv_prog_cc_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1478,15 +1471,15 @@ ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CPP $CPPFLAGS' ac_cpp='$CPP $CPPFLAGS'
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' 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 cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1486 "configure" #line 1479 "configure"
#include "confdefs.h" #include "confdefs.h"
main(){return(0);} main(){return(0);}
EOF 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 ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler. # If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then if (./conftest; exit) 2>/dev/null; then
@ -1511,7 +1504,7 @@ else
cross_linkable=yes cross_linkable=yes
fi fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_cc_cross'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1523,7 +1516,7 @@ echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1532,7 +1525,7 @@ else
yes; yes;
#endif #endif
EOF 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 ac_cv_prog_gcc=yes
else else
ac_cv_prog_gcc=no ac_cv_prog_gcc=no
@ -1545,7 +1538,7 @@ if test $ac_cv_prog_gcc != yes; then
fi fi
echo $ac_n "checking build system type""... $ac_c" 1>&6 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 build_alias=$build
case "$build_alias" in case "$build_alias" in
@ -1556,7 +1549,7 @@ NONE)
esac ;; esac ;;
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_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` 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. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
if test -n "$BUILD_CC"; then if test -n "$BUILD_CC"; then
ac_cv_prog_BUILD_CC="$BUILD_CC" # Let the user override the test. ac_cv_prog_BUILD_CC="$BUILD_CC" # Let the user override the test.
else else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
for ac_dir in $PATH; do for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=. test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then if test -f $ac_dir/$ac_word; then
@ -1599,7 +1592,7 @@ done
fi fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 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. # On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then if test -n "$CPP" && test -d "$CPP"; then
CPP= CPP=
@ -1614,14 +1607,14 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser, # On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. # not just through cpp.
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1618 "configure" #line 1611 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <assert.h> #include <assert.h>
Syntax Error Syntax Error
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" 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; } { (eval echo configure:1617: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
: :
else else
@ -1631,14 +1624,31 @@ else
rm -rf conftest* rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp" CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1635 "configure" #line 1628 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <assert.h> #include <assert.h>
Syntax Error Syntax Error
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" 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; } { (eval echo configure:1634: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out` 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 if test -z "$ac_err"; then
: :
else else
@ -1650,6 +1660,8 @@ else
fi fi
rm -f conftest* rm -f conftest*
fi fi
rm -f conftest*
fi
rm -f conftest* rm -f conftest*
ac_cv_prog_CPP="$CPP" ac_cv_prog_CPP="$CPP"
fi fi
@ -1670,7 +1682,7 @@ LD=`$CC -print-prog-name=ld`
# Determine whether we are using GNU binutils. # Determine whether we are using GNU binutils.
echo $ac_n "checking whether $AS is GNU as""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_prog_as_gnu'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1688,7 +1700,7 @@ rm -f a.out
gnu_as=$libc_cv_prog_as_gnu gnu_as=$libc_cv_prog_as_gnu
echo $ac_n "checking whether $LD is GNU ld""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_prog_ld_gnu'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else 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. # 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 set dummy ${ac_tool_prefix}ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
if test -n "$AR"; then if test -n "$AR"; then
ac_cv_prog_AR="$AR" # Let the user override the test. ac_cv_prog_AR="$AR" # Let the user override the test.
else else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
for ac_dir in $PATH; do for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=. test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then 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. # 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 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
if test -n "$RANLIB"; then if test -n "$RANLIB"; then
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
else else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
for ac_dir in $PATH; do for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=. test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then 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. # Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2 set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
if test -n "$RANLIB"; then if test -n "$RANLIB"; then
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
else else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
for ac_dir in $PATH; do for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=. test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then 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. # 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 set dummy ${ac_tool_prefix}mig; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_MIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
if test -n "$MIG"; then if test -n "$MIG"; then
ac_cv_prog_MIG="$MIG" # Let the user override the test. ac_cv_prog_MIG="$MIG" # Let the user override the test.
else else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
for ac_dir in $PATH; do for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=. test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then if test -f $ac_dir/$ac_word; then
@ -1843,7 +1855,7 @@ fi
# check if ranlib is necessary # check if ranlib is necessary
echo $ac_n "checking whether ranlib is necessary""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_ranlib_necessary'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1877,7 +1889,7 @@ fi
# - two terminals occur directly after each other # - two terminals occur directly after each other
# - the path contains an element with a dot in it # - the path contains an element with a dot in it
echo $ac_n "checking LD_LIBRARY_PATH variable""... $ac_c" 1>&6 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 case ${LD_LIBRARY_PATH} in
[:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* ) [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
ld_library_path_setting="contains current directory" 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. # Extract the first word of "bash", so it can be a program name with args.
set dummy bash; ac_word=$2 set dummy bash; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else 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 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 for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=. test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then 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. # Extract the first word of "ksh", so it can be a program name with args.
set dummy ksh; ac_word=$2 set dummy ksh; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_path_KSH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else 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 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 for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=. test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then 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. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
if test -n "$AWK"; then if test -n "$AWK"; then
ac_cv_prog_AWK="$AWK" # Let the user override the test. ac_cv_prog_AWK="$AWK" # Let the user override the test.
else else
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
for ac_dir in $PATH; do for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=. test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then 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. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else 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 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 for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=. test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then 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 $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 if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2077,12 +2098,12 @@ EOF
fi fi
echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2086 "configure" #line 2107 "configure"
#include "confdefs.h" #include "confdefs.h"
#define __need_size_t #define __need_size_t
#define __need_wchar_t #define __need_wchar_t
@ -2097,7 +2118,7 @@ size_t size; wchar_t wchar;
if (&size == NULL || &wchar == NULL) abort (); if (&size == NULL || &wchar == NULL) abort ();
; return 0; } ; return 0; }
EOF 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* rm -rf conftest*
libc_cv_friendly_stddef=yes libc_cv_friendly_stddef=yes
else else
@ -2116,7 +2137,7 @@ override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
fi fi
echo $ac_n "checking whether we need to use -P to assemble .S files""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2139,7 +2160,7 @@ asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
fi fi
echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2169,7 +2190,7 @@ EOF
fi fi
echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2203,7 +2224,7 @@ EOF
fi fi
echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_symver_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2222,7 +2243,7 @@ fi
echo "$ac_t""$libc_cv_asm_symver_directive" 1>&6 echo "$ac_t""$libc_cv_asm_symver_directive" 1>&6
echo $ac_n "checking for ld --version-script""... $ac_c" 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 if eval "test \"`echo '$''{'libc_cv_ld_version_script_option'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2245,7 +2266,7 @@ EOF
if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
-nostartfiles -nostdlib -nostartfiles -nostdlib
-Wl,--version-script,conftest.map -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 then
libc_cv_ld_version_script_option=yes libc_cv_ld_version_script_option=yes
else else
@ -2283,7 +2304,7 @@ if test $VERSIONING = no; then
fi fi
if test $elf = yes; then if test $elf = yes; then
echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2291,7 +2312,7 @@ else
.section foo_section .section foo_section
.previous .previous
EOF 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 libc_cv_asm_previous_directive=yes
else else
libc_cv_asm_previous_directive=no libc_cv_asm_previous_directive=no
@ -2307,7 +2328,7 @@ EOF
else else
echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2315,7 +2336,7 @@ else
.pushsection foo_section .pushsection foo_section
.popsection .popsection
EOF 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 libc_cv_asm_popsection_directive=yes
else else
libc_cv_asm_popsection_directive=no libc_cv_asm_popsection_directive=no
@ -2335,12 +2356,12 @@ fi
if test $elf != yes; then if test $elf != yes; then
echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2344 "configure" #line 2365 "configure"
#include "confdefs.h" #include "confdefs.h"
int main() { int main() {
@ -2349,7 +2370,7 @@ asm (".section .init");
asm (".text"); asm (".text");
; return 0; } ; return 0; }
EOF 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* rm -rf conftest*
libc_cv_have_initfini=yes libc_cv_have_initfini=yes
else else
@ -2377,19 +2398,19 @@ if test $elf = yes; then
else else
if test $ac_cv_prog_cc_works = yes; then if test $ac_cv_prog_cc_works = yes; then
echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2386 "configure" #line 2407 "configure"
#include "confdefs.h" #include "confdefs.h"
asm ("_glibc_foobar:"); asm ("_glibc_foobar:");
int main() { int main() {
glibc_foobar (); glibc_foobar ();
; return 0; } ; return 0; }
EOF 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* rm -rf conftest*
libc_cv_asm_underscores=yes libc_cv_asm_underscores=yes
else else
@ -2404,17 +2425,17 @@ fi
echo "$ac_t""$libc_cv_asm_underscores" 1>&6 echo "$ac_t""$libc_cv_asm_underscores" 1>&6
else else
echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2413 "configure" #line 2434 "configure"
#include "confdefs.h" #include "confdefs.h"
void underscore_test(void) { void underscore_test(void) {
return; } return; }
EOF 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 if grep _underscore_test conftest* >/dev/null; then
rm -f conftest* rm -f conftest*
libc_cv_asm_underscores=yes libc_cv_asm_underscores=yes
@ -2446,7 +2467,7 @@ if test $elf = yes; then
fi fi
echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2469,7 +2490,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6
if test $libc_cv_asm_weak_directive = no; then if test $libc_cv_asm_weak_directive = no; then
echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2507,7 +2528,7 @@ EOF
fi fi
echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2518,7 +2539,7 @@ __throw () {}
EOF EOF
if { ac_try='${CC-cc} $CFLAGS if { ac_try='${CC-cc} $CFLAGS
-nostdlib -nostartfiles -Wl,--no-whole-archive -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 libc_cv_ld_no_whole_archive=yes
else else
libc_cv_ld_no_whole_archive=no libc_cv_ld_no_whole_archive=no
@ -2532,7 +2553,7 @@ if test $libc_cv_ld_no_whole_archive = yes; then
fi fi
echo $ac_n "checking for gcc -fexceptions""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_gcc_exceptions'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2543,7 +2564,7 @@ __throw () {}
EOF EOF
if { ac_try='${CC-cc} $CFLAGS if { ac_try='${CC-cc} $CFLAGS
-nostdlib -nostartfiles -fexceptions -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 libc_cv_gcc_exceptions=yes
else else
libc_cv_gcc_exceptions=no libc_cv_gcc_exceptions=no
@ -2558,14 +2579,14 @@ fi
if test "$base_machine" = alpha ; then if test "$base_machine" = alpha ; then
echo $ac_n "checking for function ..ng prefix""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_gcc_alpha_ng_prefix'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.c <<\EOF cat > conftest.c <<\EOF
foo () { } foo () { }
EOF 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 then
libc_cv_gcc_alpha_ng_prefix=yes libc_cv_gcc_alpha_ng_prefix=yes
else 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 # Check for a bug present in at least versions 2.8.x of GCC
# and versions 1.0.x of EGCS. # and versions 1.0.x of EGCS.
echo $ac_n "checking whether clobbering cr0 causes problems""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_c_asmcr0_bug'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2601 "configure" #line 2622 "configure"
#include "confdefs.h" #include "confdefs.h"
int tester(int x) { asm ("" : : : "cc"); return x & 123; } int tester(int x) { asm ("" : : : "cc"); return x & 123; }
int main() { int main() {
; return 0; } ; return 0; }
EOF 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* rm -rf conftest*
libc_cv_c_asmcr0_bug='no' libc_cv_c_asmcr0_bug='no'
else else
@ -2626,12 +2647,12 @@ fi
fi fi
echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_gcc_dwarf2_unwind_info'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.c <<EOF cat > conftest.c <<EOF
#line 2635 "configure" #line 2656 "configure"
static char __EH_FRAME_BEGIN__; static char __EH_FRAME_BEGIN__;
_start () _start ()
{ {
@ -2658,7 +2679,7 @@ __bzero () {}
EOF EOF
if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info
-nostdlib -nostartfiles -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 libc_cv_gcc_dwarf2_unwind_info=static
else else
libc_cv_gcc_dwarf2_unwind_info=no libc_cv_gcc_dwarf2_unwind_info=no
@ -2666,7 +2687,7 @@ fi
if test $libc_cv_gcc_dwarf2_unwind_info = no; then if test $libc_cv_gcc_dwarf2_unwind_info = no; then
if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame
-nostdlib -nostartfiles -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 libc_cv_gcc_dwarf2_unwind_info=yes
else else
libc_cv_gcc_dwarf2_unwind_info=no libc_cv_gcc_dwarf2_unwind_info=no
@ -2740,7 +2761,7 @@ if test "$uname" = "sysdeps/generic"; then
fi fi
echo $ac_n "checking OS release for uname""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2762,7 +2783,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6
uname_release="$libc_cv_uname_release" uname_release="$libc_cv_uname_release"
echo $ac_n "checking OS version for uname""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2784,7 +2805,7 @@ else
fi fi
echo $ac_n "checking stdio selection""... $ac_c" 1>&6 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 case $stdio in
libio) cat >> confdefs.h <<\EOF 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 # Test for old glibc 2.0.x headers so that they can be removed properly
# Search only in includedir. # Search only in includedir.
echo $ac_n "checking for old glibc 2.0.x headers""... $ac_c" 1>&6 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" if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
then then
old_glibc_headers=yes old_glibc_headers=yes
@ -2852,7 +2873,7 @@ if test $shared = default; then
fi fi
echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2919,7 +2940,7 @@ EOF
# Ultrix sh set writes to stderr and can't be redirected directly, # 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. # and sets the high bit in the cache file unless we assign to the vars.
(set) 2>&1 | (set) 2>&1 |
case `(ac_space=' '; set) 2>&1` in case `(ac_space=' '; set) 2>&1 | grep ac_space` in
*ac_space=\ *) *ac_space=\ *)
# `set' does not quote correctly, so add quotes (double-quote substitution # `set' does not quote correctly, so add quotes (double-quote substitution
# turns \\\\ into \\, and sed turns \\ into \). # 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" 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 ;; exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-version | --version | --versio | --versi | --vers | --ver | --ve | --v) -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 ;; exit 0 ;;
-help | --help | --hel | --he | --h) -help | --help | --hel | --he | --h)
echo "\$ac_cs_usage"; exit 0 ;; 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 s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
$ac_vpsub $ac_vpsub
$extrasub $extrasub
s%@SHELL@%$SHELL%g
s%@CFLAGS@%$CFLAGS%g s%@CFLAGS@%$CFLAGS%g
s%@CPPFLAGS@%$CPPFLAGS%g s%@CPPFLAGS@%$CPPFLAGS%g
s%@CXXFLAGS@%$CXXFLAGS%g s%@CXXFLAGS@%$CXXFLAGS%g

View File

@ -96,12 +96,8 @@ AC_ARG_ENABLE(add-ons, dnl
configure and build add-ons in DIR1,DIR2,... configure and build add-ons in DIR1,DIR2,...
search for add-ons if no parameter given], search for add-ons if no parameter given],
[case "$enableval" in [case "$enableval" in
yes) if test "$srcdir" = "."; then yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
add_ons=`echo */configure | sed -e 's!/configure!!g'` test "$add_ons" = "*" && add_ons= ;;
else
add_ons=`echo $srcdir/*/configure | \
sed -e 's!/configure!!g' -e "s!$srcdir/!!g"`
fi;;
*) add_ons=`echo "$enableval" | sed 's/,/ /g'`;; *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
esac], esac],
[add_ons=]) [add_ons=])
@ -319,11 +315,7 @@ for d in $add_ons_pfx ''; do
try="${d}sysdeps$m0$b$v$o$m" try="${d}sysdeps$m0$b$v$o$m"
test -n "$enable_debug_configure" && test -n "$enable_debug_configure" &&
echo "$0 [DEBUG]: try $try" >&2 echo "$0 [DEBUG]: try $try" >&2
case $try in if test -d $srcdir/$try; then
/*) dest=$try ;;
*) dest=$srcdir/$try ;;
esac
if test -d $dest; then
sysnames="$sysnames $try" sysnames="$sysnames $try"
{ test -n "$o" || test -n "$b"; } && os_used=t { test -n "$o" || test -n "$b"; } && os_used=t
{ test -n "$m" || test -n "$m0"; } && machine_used=t { test -n "$m" || test -n "$m0"; } && machine_used=t
@ -355,12 +347,8 @@ fi
if test "$elf" = yes; then if test "$elf" = yes; then
elf_dirs= elf_dirs=
for d in $add_ons_pfx ''; do for d in $add_ons_pfx ''; do
case $d in
/*) xsrcdir= ;;
*) xsrcdir=$srcdir/ ;;
esac
for m in $mach; do 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" elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
fi fi
done done

View File

@ -53,7 +53,7 @@ DEF_STDFILE(_IO_stderr_, 2, &_IO_stdout_.file,
#include <stdio.h> #include <stdio.h>
extern void * _IO_stdin_used; extern const int _IO_stdin_used;
weak_extern (_IO_stdin_used); weak_extern (_IO_stdin_used);
#undef stdin #undef stdin

View File

@ -52,7 +52,7 @@ register struct _pthread_descr_struct *__thread_self __asm__("%g6");
#define THREAD_SELF __thread_self #define THREAD_SELF __thread_self
/* Initialize the thread-unique value. */ /* 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. */ /* Access to data in the thread descriptor is easy. */
#define THREAD_GETMEM(descr, member) __thread_self->member #define THREAD_GETMEM(descr, member) __thread_self->member

View File

@ -48,7 +48,7 @@ register struct _pthread_descr_struct *__thread_self __asm__("%g6");
#define THREAD_SELF __thread_self #define THREAD_SELF __thread_self
/* Initialize the thread-unique value. */ /* 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. */ /* Compare-and-swap for semaphores. */

View File

@ -34,6 +34,7 @@ include ../Makeconfig
else else
MAKEINFO = makeinfo MAKEINFO = makeinfo
TEXI2DVI = texi2dvi TEXI2DVI = texi2dvi
AWK = gawk
endif endif
ifneq ($(strip $(MAKEINFO)),) ifneq ($(strip $(MAKEINFO)),)

View File

@ -898,7 +898,6 @@ exec_comm (char *comm, char **word, size_t *word_length, size_t *max_length,
int fildes[2]; int fildes[2];
int bufsize = 128; int bufsize = 128;
int buflen; int buflen;
int i;
char *buffer; char *buffer;
pid_t pid; pid_t pid;

View File

@ -61,10 +61,7 @@ CFLAGS-scanf7.c = -Wno-format
CFLAGS-tst-printfsz.c = -Wno-format CFLAGS-tst-printfsz.c = -Wno-format
$(inst_includedir)/bits/stdio_lim.h: $(common-objpfx)bits/stdio_lim.h $(inst_includedir)/bits/stdio_lim.h: $(common-objpfx)bits/stdio_lim.h
$(make-target-directory) $(do-install)
if test -r $@ && cmp -s $< $@; \
then echo 'gnu/lib-names.h unchanged'; \
else $(INSTALL_DATA) $< $@; fi
ifeq ($(stdio),libio) ifeq ($(stdio),libio)
ifneq (,$(filter %REENTRANT, $(defines))) ifneq (,$(filter %REENTRANT, $(defines)))

View File

@ -22,3 +22,8 @@ _dl_load_cache_lookup (const char *name)
{ {
return 0; return 0;
} }
void
_dl_unload_cache (void)
{
}

View File

@ -101,14 +101,26 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
{ {
Elf32_Addr *plt; Elf32_Addr *plt;
extern void _dl_runtime_resolve (Elf32_Word); extern void _dl_runtime_resolve (Elf32_Word);
extern void _dl_runtime_profile (Elf32_Word);
if (l->l_info[DT_JMPREL] && lazy) if (l->l_info[DT_JMPREL] && lazy)
{ {
Elf32_Addr rfunc;
/* The entries for functions in the PLT have not yet been filled in. /* 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 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 bits of %g1 with an offset into the .rela.plt section and jump to
the beginning of the PLT. */ the beginning of the PLT. */
plt = (Elf32_Addr *) (l->l_addr + l->l_info[DT_PLTGOT]->d_un.d_ptr); 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: /* 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; plt[0] = OPCODE_SAVE_SP;
/* Construct PC-relative word address. */ /* Construct PC-relative word address. */
plt[1] = OPCODE_CALL | (((Elf32_Addr) &_dl_runtime_resolve - plt[1] = OPCODE_CALL | ((rfunc - (Elf32_Addr) &plt[1]) >> 2);
(Elf32_Addr) &plt[1]) >> 2);
plt[2] = OPCODE_NOP; /* Fill call delay slot. */ plt[2] = OPCODE_NOP; /* Fill call delay slot. */
plt[3] = (Elf32_Addr) l; 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 /* This code is used in dl-runtime.c to call the `fixup' function
and then redirect to the address it returns. */ and then redirect to the address it returns. */
#define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name) \
.globl _dl_runtime_resolve asm ( "\
.type _dl_runtime_resolve, @function .text
_dl_runtime_resolve: .globl " #tramp_name "
.type " #tramp_name ", @function
.align 32
" #tramp_name ":
/* Set up the arguments to fixup -- /* Set up the arguments to fixup --
%o0 = link_map out of plt0 %o0 = link_map out of plt0
%o1 = offset of reloc entry */ %o1 = offset of reloc entry
%o2 = return address */
ld [%o7 + 8], %o0 ld [%o7 + 8], %o0
srl %g1, 10, %o1 srl %g1, 10, %o1
call fixup mov %i7, %o2
call " #fixup_name "
sub %o1, 4*12, %o1 sub %o1, 4*12, %o1
jmp %o0 jmp %o0
restore 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 /* Nonzero iff TYPE should not be allowed to resolve to one of
the main executable's symbols, as for a COPY reloc. */ 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. */ its return value is the user program's entry point. */
#define RTLD_START __asm__ ("\ #define RTLD_START __asm__ ("\
.text .text
.globl _start .globl _start
.type _start,@function .type _start, @function
.align 32
_start: _start:
/* Allocate space for functions to drop their arguments. */ /* Allocate space for functions to drop their arguments. */
sub %sp, 6*4, %sp sub %sp, 6*4, %sp
@ -181,8 +209,8 @@ _start:
call _dl_start call _dl_start
add %sp, 22*4, %o0 add %sp, 22*4, %o0
/* FALTHRU */ /* FALTHRU */
.globl _dl_start_user .globl _dl_start_user
.type _dl_start_user,@function .type _dl_start_user, @function
_dl_start_user: _dl_start_user:
/* Load the PIC register. */ /* Load the PIC register. */
1: call 2f 1: call 2f
@ -191,6 +219,12 @@ _dl_start_user:
add %l7, %o7, %l7 add %l7, %o7, %l7
/* Save the user entry point address in %l0 */ /* Save the user entry point address in %l0 */
mov %o0, %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 /* 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. */ extra leading argument. If so, adjust the contents of the stack. */
sethi %hi(_dl_skip_args), %g2 sethi %hi(_dl_skip_args), %g2
@ -230,7 +264,7 @@ _dl_start_user:
st %i4, [%i1+4] st %i4, [%i1+4]
bne 23b bne 23b
add %i1, 8, %i1 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 3: sethi %hi(_dl_main_searchlist), %g1
or %g1, %lo(_dl_main_searchlist), %g1 or %g1, %lo(_dl_main_searchlist), %g1
ld [%l7+%g1], %l1 ld [%l7+%g1], %l1
@ -242,8 +276,7 @@ _dl_start_user:
beq 5f beq 5f
nop nop
jmpl %o0, %o7 jmpl %o0, %o7
nop sub %o7, 28, %o7
ba,a 4b
/* Clear the startup flag. */ /* Clear the startup flag. */
5: sethi %hi(_dl_starting_up), %g1 5: sethi %hi(_dl_starting_up), %g1
or %g1, %lo(_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. */ /* Jump to the user's entry point and deallocate the extra stack we got. */
jmp %l0 jmp %l0
add %sp, 6*4, %sp add %sp, 6*4, %sp
.size _dl_start_user,.-_dl_start_user .size _dl_start_user, . - _dl_start_user
.previous"); .previous");
static inline void static inline void
elf_machine_fixup_plt (struct link_map *map, const Elf32_Rela *reloc, 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)) switch (ELF32_R_TYPE (reloc->r_info))
{ {
case R_SPARC_COPY: 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 if (sym->st_size > refsym->st_size
|| (_dl_verbose && 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, memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
refsym->st_size)); refsym->st_size));
#endif
break; break;
case R_SPARC_GLOB_DAT: case R_SPARC_GLOB_DAT:
case R_SPARC_32: case R_SPARC_32:

View File

@ -32,7 +32,7 @@
ENTRY(__mpn_addmul_1) ENTRY(__mpn_addmul_1)
!#PROLOGUE# 0 !#PROLOGUE# 0
save %sp,-128,%sp save %sp,-192,%sp
!#PROLOGUE# 1 !#PROLOGUE# 1
sub %g0,%i2,%o7 sub %g0,%i2,%o7

View File

@ -21,19 +21,15 @@
#include <assert.h> #include <assert.h>
#include <string.h> #include <string.h>
#include <link.h>
#include <sys/param.h> #include <sys/param.h>
#include <elf/ldsodefs.h>
#include <sysdep.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. */ /* Return nonzero iff E_MACHINE is compatible with the running host. */
static inline int static inline int
elf_machine_matches_host (Elf64_Half e_machine) 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 /* 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 static inline Elf64_Addr
elf_machine_dynamic (void) 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. */ /* Return the run-time load address of the shared object. */
static inline Elf64_Addr static inline Elf64_Addr
elf_machine_load_address (void) elf_machine_load_address (void)
@ -67,21 +62,92 @@ elf_machine_load_address (void)
return pc - *(Elf64_Addr *)(elf_pic_register + la); 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 static inline void
elf_machine_fixup_plt(struct link_map *map, const Elf64_Rela *reloc, elf_machine_fixup_plt(struct link_map *map, const Elf64_Rela *reloc,
Elf64_Addr *reloc_addr, Elf64_Addr value) Elf64_Addr *reloc_addr, Elf64_Addr value)
{ {
Elf64_Dyn *pltfmt = map->l_info[DT_SPARC(PLTFMT)]; unsigned int *insns = (unsigned int *) reloc_addr;
switch (pltfmt ? pltfmt->d_un.d_val : 0) 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 */ /* sethi %hi(target), %g1
*reloc_addr = value; jmpl %g1 + %lo(target), %g0 */
break;
case 2: /* .got.plt with got-relative addresses */ insns[2] = 0x81c06000 | (value & 0x3ff);
*reloc_addr = value - (map->l_info[DT_PLTGOT]->d_un.d_ptr + map->l_addr); __asm __volatile ("flush %0 + 8" : : "r" (insns));
break;
default: insns[1] = 0x03000000 | ((unsigned int)(value >> 10));
assert (! "unexpected .plt format type"); __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 #endif
*reloc_addr = map->l_addr + reloc->r_addend; *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; const Elf64_Sym *const refsym = sym;
Elf64_Addr value; 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)) switch (ELF64_R_TYPE (reloc->r_info))
{ {
case R_SPARC_COPY: 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 if (sym->st_size > refsym->st_size
|| (_dl_verbose && 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: case R_SPARC_16:
*(short *) reloc_addr = value; *(short *) reloc_addr = value;
break; break;
case R_SPARC_32:
*(unsigned int *) reloc_addr = value;
break;
case R_SPARC_DISP8: case R_SPARC_DISP8:
*(char *) reloc_addr = (value - (Elf64_Addr) reloc_addr); *(char *) reloc_addr = (value - (Elf64_Addr) reloc_addr);
break; break;
@ -171,27 +244,64 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
*(short *) reloc_addr = (value - (Elf64_Addr) reloc_addr); *(short *) reloc_addr = (value - (Elf64_Addr) reloc_addr);
break; break;
case R_SPARC_DISP32: case R_SPARC_DISP32:
*(unsigned int *)reloc_addr = (value - (Elf64_Addr) reloc_addr); *(unsigned int *) reloc_addr = (value - (Elf64_Addr) reloc_addr);
break;
case R_SPARC_LO10:
*(unsigned *)reloc_addr = (*(unsigned *)reloc_addr & ~0x3ff)
| (value & 0x3ff);
break; break;
case R_SPARC_WDISP30: case R_SPARC_WDISP30:
*(unsigned *)reloc_addr = ((*(unsigned *)reloc_addr & 0xc0000000) *(unsigned int *) reloc_addr =
| ((value - (Elf64_Addr) reloc_addr) >> 2)); ((*(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; break;
case R_SPARC_HI22: case R_SPARC_HI22:
*(unsigned *)reloc_addr = (*(unsigned *)reloc_addr & 0xffc00000) *(unsigned int *) reloc_addr =
| (value >> 10); ((*(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; break;
case R_SPARC_JMP_SLOT: case R_SPARC_JMP_SLOT:
elf_machine_fixup_plt(map, reloc, reloc_addr, value); elf_machine_fixup_plt(map, reloc, reloc_addr, value);
break; break;
case R_SPARC_NONE: /* Alright, Wilbur. */
break;
default: default:
assert (! "unexpected dynamic reloc type"); assert (! "unexpected dynamic reloc type");
break; break;
@ -239,16 +349,63 @@ elf_machine_lazy_rel (Elf64_Addr l_addr, const Elf64_Rela *reloc)
static inline int static inline int
elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) 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) if (l->l_info[DT_JMPREL] && lazy)
{ {
got = (Elf64_Addr *) (l->l_addr + l->l_info[DT_PLTGOT]->d_un.d_ptr); extern void _dl_runtime_resolve_0 (void);
/* This function will get called to fix up the GOT entry indicated by extern void _dl_runtime_resolve_1 (void);
the offset on the stack, and then jump to the resolved address. */ extern void _dl_runtime_profile_0 (void);
got[1] = (Elf64_Addr) &_dl_runtime_resolve; extern void _dl_runtime_profile_1 (void);
got[2] = (Elf64_Addr) l; /* Identify this shared object. */ 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; 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 /* This code is used in dl-runtime.c to call the `fixup' function
and then redirect to the address it returns. */ and then redirect to the address it returns. */
#define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name) \
.globl _dl_runtime_resolve asm ("\
.type _dl_runtime_resolve, @function .text
_dl_runtime_resolve: .globl " #tramp_name "_0
save %sp, -160, %sp .type " #tramp_name "_0, @function
mov %g1, %o0 .align 32
call fixup " #tramp_name "_0:
mov %g2, %o1 ldx [%o0 + 32 + 8], %l0
jmp %o0 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 restore
.size _dl_runtime_resolve, .-_dl_runtime_resolve .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 " #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. */ /* The PLT uses Elf64_Rela relocs. */
#define elf_machine_relplt elf_machine_rela #define elf_machine_relplt elf_machine_rela
/* Initial entry point code for the dynamic linker. /* Initial entry point code for the dynamic linker.
The C function `_dl_start' is the real entry point; The C function `_dl_start' is the real entry point;
its return value is the user program's 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 __S(x) __S1(x)
#define RTLD_START __asm__ ( "\ #define RTLD_START __asm__ ( "\
.global _start .text
.type _start, @function .global _start
.type _start, @function
.align 32
_start: _start:
/* Make room for functions to drop their arguments on the stack. */ /* Make room for functions to drop their arguments on the stack. */
sub %sp, 6*8, %sp sub %sp, 6*8, %sp
@ -292,8 +496,8 @@ _start:
/* FALLTHRU */ /* FALLTHRU */
.size _start, .-_start .size _start, .-_start
.global _dl_start_user .global _dl_start_user
.type _dl_start_user, @function .type _dl_start_user, @function
_dl_start_user: _dl_start_user:
/* Load the GOT register. */ /* Load the GOT register. */
1: call 11f 1: call 11f
@ -302,6 +506,12 @@ _dl_start_user:
add %l7,%o7,%l7 add %l7,%o7,%l7
/* Save the user entry point address in %l0. */ /* Save the user entry point address in %l0. */
mov %o0,%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 /* 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 extra leading argument. If so, we must shift things around since we
must keep the stack doubleword aligned. */ must keep the stack doubleword aligned. */
@ -338,7 +548,7 @@ _dl_start_user:
stx %i4, [%i1+8] stx %i4, [%i1+8]
brnz,pt %i3, 13b brnz,pt %i3, 13b
add %i1, 16, %i1 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 2: sethi %hi(_dl_main_searchlist), %g2
or %g2, %lo(_dl_main_searchlist), %g2 or %g2, %lo(_dl_main_searchlist), %g2
ldx [%l7+%g2], %g2 ldx [%l7+%g2], %g2
@ -349,8 +559,7 @@ _dl_start_user:
brz,pn %o0, 4f brz,pn %o0, 4f
nop nop
jmpl %o0, %o7 jmpl %o0, %o7
nop sub %o7, 24, %o7
ba,a 3b
/* Clear the startup flag. */ /* Clear the startup flag. */
4: sethi %hi(_dl_starting_up), %g2 4: sethi %hi(_dl_starting_up), %g2
or %g2, %lo(_dl_starting_up), %g2 or %g2, %lo(_dl_starting_up), %g2
@ -360,7 +569,8 @@ _dl_start_user:
sethi %hi(_dl_fini), %g1 sethi %hi(_dl_fini), %g1
or %g1, %lo(_dl_fini), %g1 or %g1, %lo(_dl_fini), %g1
ldx [%l7+%g1], %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 jmp %l0
add %sp, 6*8, %sp add %sp, 6*8, %sp
.size _dl_start_user, .-_dl_start_user"); .size _dl_start_user, . - _dl_start_user
.previous");

View File

@ -40,7 +40,7 @@ __DTOR_LIST__:
.align 4 .align 4
.type __do_global_dtors_aux,#function .type __do_global_dtors_aux,#function
__do_global_dtors_aux: __do_global_dtors_aux:
save %sp,-160,%sp save %sp,-192,%sp
#ifdef PIC #ifdef PIC
1: call 11f 1: call 11f
@ -53,7 +53,6 @@ __do_global_dtors_aux:
#else #else
sethi %hi(__DTOR_LIST__), %l0 sethi %hi(__DTOR_LIST__), %l0
or %l0, %lo(__DTOR_LIST__), %l0 or %l0, %lo(__DTOR_LIST__), %l0
add %l0, %g4, %l0
#endif #endif
ba 3f ba 3f

View File

@ -40,7 +40,7 @@ __DTOR_END__:
.align 4 .align 4
.type __do_global_ctors_aux,#function .type __do_global_ctors_aux,#function
__do_global_ctors_aux: __do_global_ctors_aux:
save %sp,-160,%sp save %sp,-192,%sp
#ifdef PIC #ifdef PIC
1: call 11f 1: call 11f
@ -53,7 +53,6 @@ __do_global_ctors_aux:
#else #else
sethi %hi(__CTOR_END__), %l0 sethi %hi(__CTOR_END__), %l0
or %l0, %lo(__CTOR_END__), %l0 or %l0, %lo(__CTOR_END__), %l0
add %l0, %g4, %l0
#endif #endif
ba 3f ba 3f

View File

@ -38,24 +38,12 @@ _start:
add %sp, STACK_BIAS+23*8, %o2 add %sp, STACK_BIAS+23*8, %o2
/* Load the addresses of the user entry points. */ /* Load the addresses of the user entry points. */
sethi %uhi(main), %o0 sethi %hi(main), %o0
sethi %uhi(_init), %o3 sethi %hi(_init), %o3
sethi %uhi(_fini), %o4 sethi %hi(_fini), %o4
or %o0, %ulo(main), %o0 or %o0, %lo(main), %o0
or %o3, %ulo(_init), %o3 or %o3, %lo(_init), %o3
or %o4, %ulo(_fini), %o4 or %o4, %lo(_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
/* When starting a binary via the dynamic linker, %g1 contains the /* When starting a binary via the dynamic linker, %g1 contains the
address of the shared library termination function, which will be address of the shared library termination function, which will be

View File

@ -28,7 +28,7 @@
cnt %i3 */ cnt %i3 */
ENTRY(__mpn_lshift) ENTRY(__mpn_lshift)
save %sp, -128, %sp save %sp, -192, %sp
sllx %i2,3,%g1 sllx %i2,3,%g1
add %i1,%g1,%i1 ! make %i1 point at end of src add %i1,%g1,%i1 ! make %i1 point at end of src

View File

@ -31,7 +31,7 @@
ENTRY(__mpn_mul_1) ENTRY(__mpn_mul_1)
!#PROLOGUE# 0 !#PROLOGUE# 0
save %sp,-128,%sp save %sp,-192,%sp
!#PROLOGUE# 1 !#PROLOGUE# 1
sub %g0,%i2,%o7 sub %g0,%i2,%o7

View File

@ -28,7 +28,7 @@
cnt %i3 */ cnt %i3 */
ENTRY(__mpn_rshift) ENTRY(__mpn_rshift)
save %sp, -128, %sp save %sp, -192, %sp
ldx [%i1],%g2 ! load first limb ldx [%i1],%g2 ! load first limb
sub %g0,%i3,%i5 ! negate shift count sub %g0,%i3,%i5 ! negate shift count

View File

@ -31,7 +31,7 @@
ENTRY(__mpn_submul_1) ENTRY(__mpn_submul_1)
!#PROLOGUE# 0 !#PROLOGUE# 0
save %sp,-128,%sp save %sp,-192,%sp
!#PROLOGUE# 1 !#PROLOGUE# 1
sub %g0,%i2,%o7 sub %g0,%i2,%o7

View File

@ -40,6 +40,8 @@ struct sigaction
/* Bits in `sa_flags'. */ /* Bits in `sa_flags'. */
#define SA_NOCLDSTOP 0x00000008 /* Don't send SIGCHLD when children stop. */ #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 #ifdef __USE_MISC
# define SA_STACK 0x00000001 /* Use signal stack by using `sa_restorer'. */ # define SA_STACK 0x00000001 /* Use signal stack by using `sa_restorer'. */
# define SA_RESTART 0x00000002 /* Restart syscall on signal return. */ # define SA_RESTART 0x00000002 /* Restart syscall on signal return. */

View File

@ -32,8 +32,6 @@
* Linux/SPARC has different signal numbers that Linux/i386: I'm trying * Linux/SPARC has different signal numbers that Linux/i386: I'm trying
* to make it OSF/1 binary compatible, at least for normal binaries. * to make it OSF/1 binary compatible, at least for normal binaries.
*/ */
#define _NSIG 32 /* Biggest signal number + 1. */
#define SIGHUP 1 #define SIGHUP 1
#define SIGINT 2 #define SIGINT 2
#define SIGQUIT 3 #define SIGQUIT 3
@ -70,4 +68,15 @@
#define SIGUSR1 30 #define SIGUSR1 30
#define SIGUSR2 31 #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. */ #endif /* <signal.h> included. */

View File

@ -33,7 +33,7 @@ weak_alias (__curbrk, ___brk_addr)
int int
__brk (void *addr) __brk (void *addr)
{ {
void *newbrk, *scratch; void *newbrk;
{ {
register void *o0 __asm__("%o0") = addr; register void *o0 __asm__("%o0") = addr;

View File

@ -23,6 +23,13 @@
#include <errno.h> #include <errno.h>
#include <kernel_sigaction.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 /* The variable is shared between all wrappers around signal handling
functions which have RT equivalents. */ functions which have RT equivalents. */
int __libc_missing_rt_sigs; int __libc_missing_rt_sigs;
@ -30,8 +37,49 @@ int __libc_missing_rt_sigs;
int int
__sigaction (int sig, __const struct sigaction *act, struct sigaction *oact) __sigaction (int sig, __const struct sigaction *act, struct sigaction *oact)
{ {
struct old_kernel_sigaction k_sigact, k_osigact;
int ret; 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 /* 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 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) if (act)
{ {
k_sigact.k_sa_handler = act->sa_handler; 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_flags = act->sa_flags;
k_sigact.sa_restorer = NULL;
} }
{ {
register int r_syscallnr __asm__("%g1") = __NR_sigaction; register int r_syscallnr __asm__("%g1") = __NR_sigaction;
register int r_sig __asm__("%o0") = sig; register int r_sig __asm__("%o0") = sig;
register struct kernel_sigaction *r_act __asm__("%o1"); register struct old_kernel_sigaction *r_act __asm__("%o1");
register struct kernel_sigaction *r_oact __asm__("%o2"); register struct old_kernel_sigaction *r_oact __asm__("%o2");
r_act = act ? &k_sigact : NULL; r_act = act ? &k_sigact : NULL;
r_oact = oact ? &k_osigact : 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" __asm__ __volatile__("t 0x10\n\t"
"bcc 1f\n\t" "bcc 1f\n\t"
" nop\n\t" " nop\n\t"
" sub %%g0,%%o0,%%o0\n" "sub %%g0,%%o0,%%o0\n"
"1:" "1:"
: "=r"(r_sig) : "=r"(r_sig)
: "r"(r_syscallnr), "r"(r_act), "r"(r_oact), : "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; ret = r_sig;
} }
if (ret >= 0) if (oact && ret >= 0)
{ {
if (oact) oact->sa_handler = k_osigact.k_sa_handler;
{ oact->sa_mask.__val[0] = k_osigact.sa_mask;
oact->sa_handler = k_osigact.k_sa_handler; oact->sa_flags = k_osigact.sa_flags;
memcpy (&oact->sa_mask, &k_osigact.sa_mask, sizeof (sigset_t)); oact->sa_restorer = NULL;
oact->sa_flags = k_osigact.sa_flags; return ret;
oact->sa_restorer = NULL;
}
return 0;
} }
__set_errno (-ret); __set_errno (-ret);
@ -83,3 +129,21 @@ __sigaction (int sig, __const struct sigaction *act, struct sigaction *oact)
} }
weak_alias (__sigaction, sigaction); 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));
}

View File

@ -4,5 +4,4 @@ kernel_stat.h
getcontext.S getcontext.S
setcontext.S setcontext.S
sizes.h sizes.h
ucontext.h
init-first.h init-first.h

View File

@ -21,6 +21,11 @@
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead." # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif #endif
#include <ucontext.h> #include <sys/ucontext.h>
typedef ucontext_t __jmp_buf[1]; 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)

View File

@ -39,4 +39,20 @@ struct statfs
long int f_spare[6]; 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 */ #endif /* bits/statfs.h */

View File

@ -38,7 +38,7 @@ __curbrk: .skip 8
.text .text
ENTRY(__brk) ENTRY(__brk)
save %sp, -160, %sp save %sp, -192, %sp
#ifdef PIC #ifdef PIC
1: call 2f 1: call 2f
sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7 sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
@ -49,24 +49,23 @@ ENTRY(__brk)
LOADSYSCALL(brk) LOADSYSCALL(brk)
mov %i0, %o0 mov %i0, %o0
ta 0x11 ta 0x6d
/* All the ways we can fail... */ /* All the ways we can fail... */
bcs,pn %xcc, .Lerr1 bcs,pn %xcc, .Lerr1
nop nop
brz %i0, .Lok brz,pt %i0, .Lok
subcc %i0, %o0, %g0 subcc %i0, %o0, %g0
bne,pn %xcc, .Lerr0 bne,pn %xcc, .Lerr0
nop
/* Update __curbrk and return cleanly. */ /* Update __curbrk and return cleanly. */
.Lok: sethi %hi(__curbrk), %g1 .Lok: sethi %hi(__curbrk), %g1
or %g1, %lo(__curbrk), %g1 or %g1, %lo(__curbrk), %g1
#ifdef PIC #ifdef PIC
ldx [%l7+%g1], %g1 ldx [%l7+%g1], %g1
stx %o0, [%g1]
#else
stx %o0, [%g4+%g1]
#endif #endif
stx %o0, [%g1]
mov %g0, %i0 mov %g0, %i0
/* Don't use "ret" cause the preprocessor will eat it. */ /* Don't use "ret" cause the preprocessor will eat it. */
@ -81,10 +80,8 @@ ENTRY(__brk)
or %g1, %lo(errno), %g1 or %g1, %lo(errno), %g1
#ifdef PIC #ifdef PIC
ldx [%l7+%g1], %g1 ldx [%l7+%g1], %g1
st %o0, [%g1]
#else
st %o0, [%g4+%g1]
#endif #endif
st %o0, [%g1]
#else #else
call __errno_location call __errno_location
mov %o0,%l1 mov %o0,%l1

View File

@ -30,7 +30,7 @@
.type __clone,@function .type __clone,@function
__clone: __clone:
save %sp,-160,%sp save %sp, -192, %sp
/* sanity check arguments */ /* sanity check arguments */
brz,pn %i0, 99f brz,pn %i0, 99f
@ -42,10 +42,10 @@ __clone:
mov %i1, %o1 mov %i1, %o1
mov %i2, %o0 mov %i2, %o0
set __NR_clone, %g1 set __NR_clone, %g1
ta 0x11 ta 0x6d
bcs,pn %xcc, 99f bcs,pn %xcc, 99f
nop nop
brnz %o0, __thread_start brnz,pn %o0, __thread_start
mov %o0, %i0 mov %o0, %i0
ret ret
restore restore
@ -62,7 +62,6 @@ __clone:
st %i0, [%l7+%g2] st %i0, [%l7+%g2]
#else #else
sethi %hi(errno), %g2 sethi %hi(errno), %g2
add %g2, %g4, %g2
set EINVAL, %i0 set EINVAL, %i0
st %i0, [%g2+%lo(errno)] st %i0, [%g2+%lo(errno)]
#endif #endif

View File

@ -33,7 +33,7 @@
.global " #NAME " .global " #NAME "
.type " #NAME ",@function .type " #NAME ",@function
" #NAME ": " #NAME ":
save %sp, -128, %sp save %sp, -192, %sp
1: call 11f 1: call 11f
sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7 sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
11: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7 11: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
@ -73,11 +73,10 @@
or %g2, %lo(_dl_starting_up), %g2 or %g2, %lo(_dl_starting_up), %g2
brz,pt %g2, 3f brz,pt %g2, 3f
sethi %hi(__libc_multiple_libcs), %g3 sethi %hi(__libc_multiple_libcs), %g3
ld [%g4+%g2], %g1 ld [%g2], %g1
mov %g0, %g2 mov %g0, %g2
movrz %g1, 1, %g2 movrz %g1, 1, %g2
3: or %g3, %lo(__libc_multiple_libcs), %g3 3: st %g2, [%g3 + %lo(__libc_multiple_libcs)]
st %g2, [%g3+%g4]
/* If so, argc et al are in %o0-%o2 already. Otherwise, load them. */ /* If so, argc et al are in %o0-%o2 already. Otherwise, load them. */
brnz,pn %g2, " #INIT " brnz,pn %g2, " #INIT "
nop nop

View File

@ -44,5 +44,7 @@ ENTRY(longjmp)
END(longjmp) END(longjmp)
strong_alias(longjmp, __longjmp) strong_alias(longjmp, __longjmp)
strong_alias(longjmp, __libc_longjmp)
strong_alias(longjmp, __libc_siglongjmp)
weak_alias(longjmp, _longjmp) weak_alias(longjmp, _longjmp)
weak_alias(longjmp, siglongjmp) weak_alias(longjmp, siglongjmp)

View File

@ -22,7 +22,7 @@
ENTRY (__libc_pipe) ENTRY (__libc_pipe)
mov %o0, %o2 /* Save PIPEDES. */ mov %o0, %o2 /* Save PIPEDES. */
LOADSYSCALL(pipe) LOADSYSCALL(pipe)
ta 0x11 ta 0x6d
bcc,pn %xcc, 2f bcc,pn %xcc, 2f
nop nop
SYSCALL_ERROR_HANDLER SYSCALL_ERROR_HANDLER

View File

@ -1,4 +1,7 @@
#define readdir64 __no_readdir64_decl #define readdir64 __no_readdir64_decl
#define __readdir64 __no___readdir64_decl
#include <sysdeps/unix/readdir.c> #include <sysdeps/unix/readdir.c>
#undef __readdir64
strong_alias (__readdir, __readdir64)
#undef readdir64 #undef readdir64
weak_alias (__readdir, readdir64) weak_alias (__readdir, readdir64)

View File

@ -1,5 +1,5 @@
#ifndef _UCONTEXT_H #ifndef _SYS_UCONTEXT_H
#define _UCONTEXT_H #define _SYS_UCONTEXT_H
#include <signal.h> #include <signal.h>
@ -64,4 +64,4 @@ struct ucontext {
}; };
typedef struct ucontext ucontext_t; typedef struct ucontext ucontext_t;
#endif /* ucontext.h */ #endif /* sys/ucontext.h */

View File

@ -28,7 +28,7 @@ ENTRY (syscall)
mov %o4,%o3 mov %o4,%o3
mov %o5,%o4 mov %o5,%o4
ta 0x11 ta 0x6d
bcc,pt %xcc,1f bcc,pt %xcc,1f
nop nop

View File

@ -6,7 +6,7 @@ pread - pread 4 __pread pread __pread64 pread64
pwrite - pwrite 4 __pwrite pwrite __pwrite64 pwrite64 pwrite - pwrite 4 __pwrite pwrite __pwrite64 pwrite64
fstatfs - fstatfs 2 __fstatfs fstatfs fstatfs64 fstatfs - fstatfs 2 __fstatfs fstatfs fstatfs64
statfs - statfs 2 __statfs statfs statfs64 statfs - statfs 2 __statfs statfs statfs64
getrlimit - getrlimit 2 getrlimit getrlimit64 getrlimit - getrlimit 2 __getrlimit getrlimit getrlimit64
setrlimit - setrlimit 2 setrlimit setrlimit64 setrlimit - setrlimit 2 setrlimit setrlimit64
ftruncate - ftruncate 2 __ftruncate ftruncate ftruncate64 ftruncate - ftruncate 2 __ftruncate ftruncate ftruncate64
truncate - truncate 2 truncate truncate64 truncate - truncate 2 truncate truncate64

View File

@ -46,49 +46,48 @@
#ifdef PIC #ifdef PIC
# ifdef _LIBC_REENTRANT # ifdef _LIBC_REENTRANT
# define SYSCALL_ERROR_HANDLER \ # define SYSCALL_ERROR_HANDLER \
save %sp,-160,%sp; \ save %sp, -192, %sp; \
call __errno_location; \ call __errno_location; \
nop; \ nop; \
st %i0,[%o0]; \ st %i0,[%o0]; \
sub %g0,1,%i0; \ sub %g0,1,%i0; \
jmpl %i7+8, %g0; \ jmpl %i7+8, %g0; \
restore restore
# else # else
# define SYSCALL_ERROR_HANDLER \ # define SYSCALL_ERROR_HANDLER \
.global C_SYMBOL_NAME(errno); \ .global C_SYMBOL_NAME(errno); \
.type C_SYMBOL_NAME(errno),@object; \ .type C_SYMBOL_NAME(errno),@object; \
mov %o7,%g3; \ mov %o7, %g3; \
101: call 102f; \ 101: call 102f; \
sethi %hi(_GLOBAL_OFFSET_TABLE_-(101b-.)),%g2; \ sethi %hi(_GLOBAL_OFFSET_TABLE_-(101b-.)), %g2; \
102: or %g2,%lo(_GLOBAL_OFFSET_TABLE_-(101b-.)),%g2; \ 102: or %g2,%lo(_GLOBAL_OFFSET_TABLE_-(101b-.)), %g2; \
sethi %hi(errno),%o1; \ sethi %hi(errno), %o1; \
add %g2,%o7,%l7; \ add %g2, %o7, %l7; \
or %o1,%lo(errno),%o1; \ or %o1, %lo(errno), %o1; \
mov %g3,%o7; \ mov %g3,%o7; \
ldx [%l7+%o1],%g2; \ ldx [%l7+%o1], %g2; \
st %o0,[%g2]; \ st %o0, [%g2]; \
retl; \ retl; \
sub %g0,1,%i0 sub %g0, 1, %i0
# endif # endif
#else #else
# ifdef _LIBC_REENTRANT # ifdef _LIBC_REENTRANT
# define SYSCALL_ERROR_HANDLER \ # define SYSCALL_ERROR_HANDLER \
save %sp,-160,%sp; \ save %sp, -192, %sp; \
call __errno_location; \ call __errno_location; \
nop; \ nop; \
st %i0,[%o0]; \ st %i0, [%o0]; \
sub %g0,1,%i0; \ sub %g0, 1, %i0; \
jmpl %i7+8, %g0; \ jmpl %i7+8, %g0; \
restore restore
# else # else
# define SYSCALL_ERROR_HANDLER \ # define SYSCALL_ERROR_HANDLER \
.global C_SYMBOL_NAME(errno); \ .global C_SYMBOL_NAME(errno); \
.type C_SYMBOL_NAME(errno),@object; \ .type C_SYMBOL_NAME(errno),@object; \
sethi %hi(errno),%g1; \ sethi %hi(errno), %g1; \
or %g1,%lo(errno),%g1; \ st %i0, [%g1 + %lo(errno)]; \
st %i0,[%g1+%g4]; \
retl; \ retl; \
sub %g0,1,%i0 sub %g0, 1, %i0
# endif # endif
#endif #endif
@ -96,8 +95,8 @@
.text; \ .text; \
ENTRY(name); \ ENTRY(name); \
LOADSYSCALL(syscall_name); \ LOADSYSCALL(syscall_name); \
ta 0x11; \ ta 0x6d; \
bcc,pt %xcc,1f; \ bcc,pt %xcc, 1f; \
nop; \ nop; \
SYSCALL_ERROR_HANDLER; \ SYSCALL_ERROR_HANDLER; \
1: 1: