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