URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/tags/gnu-src/newlib-1.18.0/newlib-1.18.0-or32-1.0rc1/newlib/libc/machine/i960
- from Rev 207 to Rev 345
- ↔ Reverse comparison
Rev 207 → Rev 345
/memchr_ca.S
0,0 → 1,153
/******************************************************************************* |
* |
* Copyright (c) 1993 Intel Corporation |
* |
* Intel hereby grants you permission to copy, modify, and distribute this |
* software and its documentation. Intel grants this permission provided |
* that the above copyright notice appears in all copies and that both the |
* copyright notice and this permission notice appear in supporting |
* documentation. In addition, Intel grants this permission provided that |
* you prominently mark as "not part of the original" any modifications |
* made to this software or documentation, and that the name of Intel |
* Corporation not be used in advertising or publicity pertaining to |
* distribution of the software or the documentation without specific, |
* written prior permission. |
* |
* Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR |
* IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY |
* OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or |
* representations regarding the use of, or the results of the use of, |
* the software and documentation in terms of correctness, accuracy, |
* reliability, currentness, or otherwise; and you rely on the software, |
* documentation and results solely at your own risk. |
* |
* IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, |
* LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES |
* OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM |
* PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. |
* |
******************************************************************************/ |
|
.file "memchr_ca.s" |
#ifdef __PIC |
.pic |
#endif |
#ifdef __PID |
.pid |
#endif |
/* |
* (c) copyright 1988,1993 Intel Corp., all rights reserved |
*/ |
|
/* |
procedure memchr (optimized assembler version for the CA) |
|
src_addr = memchr (src_addr, char, max_bytes) |
|
searching from src_addr for max_bytes bytes, return a pointer to the |
first byte that contains the indicated byte in the source string. |
Return null if the byte is not found. |
|
Undefined behavior will occur if the end of the source string (i.e. |
the terminating null byte) is in the last two words of the program's |
allocated memory space. This is so because, in several cases, memchr |
will fetch ahead. Disallowing the fetch ahead would impose a severe |
performance penalty. |
|
This program handles two cases: |
|
1) the argument starts on a word boundary |
2) the argument doesn't start on a word boundary |
|
At the time of this writing, only g0 thru g7 and g13 are available |
for use in this leafproc; other registers would have to be saved and |
restored. These nine registers, plus tricky use of g14 are sufficient |
to implement the routine. The registers are used as follows: |
|
g0 src ptr; upon return it is a pointer to the matching byte, or null |
g1 char to seek |
g2 maximum number of bytes to check |
g3 char to seek, broadcast to all four bytes |
g4 word of the source string |
g5 copy of the word |
g6 mask to avoid unimportant bytes in first word |
g7 byte extraction mask |
g13 return address |
g14 |
*/ |
|
.globl _memchr |
.globl __memchr |
.leafproc _memchr, __memchr |
.align 2 |
_memchr: |
#ifndef __PIC |
lda Lrett,g14 |
#else |
lda Lrett-(.+8)(ip),g14 |
#endif |
__memchr: |
|
mov g14,g13 # preserve return address |
lda 0xff,g7 # byte extraction mask |
and g1,g7,g1 # make char an 8-bit ordinal |
lda 0,g14 # conform to register linkage standard |
cmpibge.f 0,g2,Lnot_found # do nothing if max_bytes <= 0 |
addo g0,g2,g2 # compute ending address from start and len |
and g0,3,g6 # extract byte offset of src |
notand g0,3,g0 # extract word addr of start of src |
shlo 8,g1,g3 # broadcast the char to four bytes |
ld (g0),g4 # fetch word containing at least first byte |
or g1,g3,g3 |
shlo 16,g3,g5 |
cmpo g1,g7 # is char being sought 0xff? |
or g5,g3,g3 |
shlo 3,g6,g6 # get shift count for making mask for first word |
subi 1,0,g5 # mask initially all ones |
#if __i960_BIG_ENDIAN__ |
shro g6,g5,g5 # get mask for bytes needed from first word |
#else |
shlo g6,g5,g5 # get mask for bytes needed from first word |
#endif |
notor g4,g5,g4 # set unneeded bytes to all ones |
be.f Lsearch_for_0xff # branch if seeking 0xff |
|
Lsearch_for_word_with_char: |
scanbyte g3,g4 # check for byte with char |
lda 4(g0),g0 # pre-increment src word pointer |
mov g4,g5 # keep a copy of word |
ld (g0),g4 # fetch next word of src |
bo.f Lsearch_for_char # branch if null found |
cmpoble.t g0,g2,Lsearch_for_word_with_char # branch if not null |
|
Lnot_found: |
mov 0,g0 # char not found. Return null |
Lexit_code: |
bx (g13) # g0 = addr of char in src (or null); g14 = 0 |
Lrett: |
ret |
|
Lsearch_for_char: |
subo 4,g0,g0 # back up the byte pointer |
Lsearch_for_char.a: |
cmpobe.f g0,g2,Lnot_found # quit if max_bytes exhausted |
#if __i960_BIG_ENDIAN__ |
rotate 8,g5,g5 # shift word to position next byte |
#endif |
and g5,g7,g6 # extract byte |
cmpo g1,g6 # is it char? |
lda 1(g0),g0 # bump src byte ptr |
#if ! __i960_BIG_ENDIAN__ |
shro 8,g5,g5 # shift word to position next byte |
#endif |
bne.t Lsearch_for_char.a |
subo 1,g0,g0 # back up the byte pointer |
b Lexit_code |
|
Lsearch_for_0xff: |
lda 0xf0f0f0f0,g6 # make first comparison mask for char=-1 case. |
or g6,g5,g6 |
and g4,g6,g4 # make unimportant bytes of first word 0x0f |
b Lsearch_for_word_with_char |
|
/* end of memchr */ |
memchr_ca.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: configure
===================================================================
--- configure (nonexistent)
+++ configure (revision 345)
@@ -0,0 +1,4991 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.63 for newlib 1.18.0.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+ if (eval ":") 2>/dev/null; then
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+
+ if test $as_have_required = yes && (eval ":
+(as_func_return () {
+ (exit \$1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+ as_lineno_1=\$LINENO
+ as_lineno_2=\$LINENO
+ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+ :
+else
+ as_candidate_shells=
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ case $as_dir in
+ /*)
+ for as_base in sh bash ksh sh5; do
+ as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+ done;;
+ esac
+done
+IFS=$as_save_IFS
+
+
+ for as_shell in $as_candidate_shells $SHELL; do
+ # Try only shells that exist, to save several forks.
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { ("$as_shell") 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+_ASEOF
+}; then
+ CONFIG_SHELL=$as_shell
+ as_have_required=yes
+ if { "$as_shell" 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+(as_func_return () {
+ (exit $1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+ break
+fi
+
+fi
+
+ done
+
+ if test "x$CONFIG_SHELL" != x; then
+ for as_var in BASH_ENV ENV
+ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ done
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+ if test $as_have_required = no; then
+ echo This script requires a shell more modern than all the
+ echo shells that I found on your system. Please install a
+ echo modern shell, or manually run the script under such a
+ echo shell if you do have one.
+ { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+ (exit \$1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+ echo No shell found that supports shell functions.
+ echo Please tell bug-autoconf@gnu.org about your system,
+ echo including any error possibly output before this message.
+ echo This can help us improve future autoconf versions.
+ echo Configuration will now proceed without shell functions.
+}
+
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line after each line using $LINENO; the second 'sed'
+ # does the real work. The second script uses 'N' to pair each
+ # line-number line with the line containing $LINENO, and appends
+ # trailing '-' during substitution so that $LINENO is not a special
+ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # scripts with optimization help from Paolo Bonzini. Blame Lee
+ # E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+ case `echo 'x\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ *) ECHO_C='\c';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+exec 7<&0 &1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME='newlib'
+PACKAGE_TARNAME='newlib'
+PACKAGE_VERSION='1.18.0'
+PACKAGE_STRING='newlib 1.18.0'
+PACKAGE_BUGREPORT=''
+
+ac_unique_file="memccpy_ca.S"
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+sys_dir
+machine_dir
+libm_machine_dir
+lpfx
+aext
+oext
+OBJEXT
+USE_LIBTOOL_FALSE
+USE_LIBTOOL_TRUE
+ELIX_LEVEL_4_FALSE
+ELIX_LEVEL_4_TRUE
+ELIX_LEVEL_3_FALSE
+ELIX_LEVEL_3_TRUE
+ELIX_LEVEL_2_FALSE
+ELIX_LEVEL_2_TRUE
+ELIX_LEVEL_1_FALSE
+ELIX_LEVEL_1_TRUE
+ELIX_LEVEL_0_FALSE
+ELIX_LEVEL_0_TRUE
+LDFLAGS
+NEWLIB_CFLAGS
+CCASFLAGS
+CCAS
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+READELF
+RANLIB
+AR
+AS
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+CC
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+newlib_basedir
+MAY_SUPPLY_SYSCALLS_FALSE
+MAY_SUPPLY_SYSCALLS_TRUE
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_multilib
+enable_target_optspace
+enable_malloc_debugging
+enable_newlib_multithread
+enable_newlib_iconv
+enable_newlib_elix_level
+enable_newlib_io_float
+enable_newlib_supplied_syscalls
+enable_dependency_tracking
+enable_maintainer_mode
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CCAS
+CCASFLAGS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+ { (exit 1); exit 1; }; }
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+ { (exit 1); exit 1; }; }
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+ { (exit 1); exit 1; }; }
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+ { (exit 1); exit 1; }; }
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ { $as_echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
+ { (exit 1); exit 1; }; } ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; }
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ { $as_echo "$as_me: error: working directory cannot be determined" >&2
+ { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
+ { (exit 1); exit 1; }; }
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
+ { (exit 1); exit 1; }; }
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures newlib 1.18.0 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/newlib]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of newlib 1.18.0:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-multilib build many library versions (default)
+ --enable-target-optspace optimize for space
+ --enable-malloc-debugging indicate malloc debugging requested
+ --enable-newlib-multithread enable support for multiple threads
+ --enable-newlib-iconv enable iconv library support
+ --enable-newlib-elix-level supply desired elix library level (1-4)
+ --disable-newlib-io-float disable printf/scanf family float support
+ --disable-newlib-supplied-syscalls disable newlib from supplying syscalls
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer
+
+Some influential environment variables:
+ CCAS assembler compiler command (defaults to CC)
+ CCASFLAGS assembler compiler flags (defaults to CFLAGS)
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+newlib configure 1.18.0
+generated by GNU Autoconf 2.63
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by newlib $as_me 1.18.0, which was
+generated by GNU Autoconf 2.63. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+ 2)
+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ ac_configure_args="$ac_configure_args '$ac_arg'"
+ ;;
+ esac
+ done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) $as_unset $ac_var ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test -r "$ac_site_file"; then
+ { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special
+ # files actually), so we avoid doing that.
+ if test -f "$cache_file"; then
+ { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+ac_aux_dir=
+for ac_dir in ../../../.. "$srcdir"/../../../..; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ../../../.. \"$srcdir\"/../../../.." >&5
+$as_echo "$as_me: error: cannot find install-sh or install.sh in ../../../.. \"$srcdir\"/../../../.." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+{ $as_echo "$as_me:$LINENO: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+$as_echo "$as_me: error: invalid value of canonical build" >&2;}
+ { (exit 1); exit 1; }; };;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+am__api_version='1.11'
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# 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"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ { { $as_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5
+$as_echo "$as_me: error: unsafe absolute working directory name" >&2;}
+ { (exit 1); exit 1; }; };;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5
+$as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;}
+ { (exit 1); exit 1; }; };;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&5
+$as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+$as_echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+done
+IFS=$as_save_IFS
+
+fi
+
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ test -d ./--version && rmdir ./--version
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:$LINENO: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+
+# Check whether --enable-multilib was given.
+if test "${enable_multilib+set}" = set; then
+ enableval=$enable_multilib; case "${enableval}" in
+ yes) multilib=yes ;;
+ no) multilib=no ;;
+ *) { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for multilib option" >&5
+$as_echo "$as_me: error: bad value ${enableval} for multilib option" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+else
+ multilib=yes
+fi
+
+# Check whether --enable-target-optspace was given.
+if test "${enable_target_optspace+set}" = set; then
+ enableval=$enable_target_optspace; case "${enableval}" in
+ yes) target_optspace=yes ;;
+ no) target_optspace=no ;;
+ *) { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for target-optspace option" >&5
+$as_echo "$as_me: error: bad value ${enableval} for target-optspace option" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+else
+ target_optspace=
+fi
+
+# Check whether --enable-malloc-debugging was given.
+if test "${enable_malloc_debugging+set}" = set; then
+ enableval=$enable_malloc_debugging; case "${enableval}" in
+ yes) malloc_debugging=yes ;;
+ no) malloc_debugging=no ;;
+ *) { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for malloc-debugging option" >&5
+$as_echo "$as_me: error: bad value ${enableval} for malloc-debugging option" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+else
+ malloc_debugging=
+fi
+
+# Check whether --enable-newlib-multithread was given.
+if test "${enable_newlib_multithread+set}" = set; then
+ enableval=$enable_newlib_multithread; case "${enableval}" in
+ yes) newlib_multithread=yes ;;
+ no) newlib_multithread=no ;;
+ *) { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for newlib-multithread option" >&5
+$as_echo "$as_me: error: bad value ${enableval} for newlib-multithread option" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+else
+ newlib_multithread=yes
+fi
+
+# Check whether --enable-newlib-iconv was given.
+if test "${enable_newlib_iconv+set}" = set; then
+ enableval=$enable_newlib_iconv; if test "${newlib_iconv+set}" != set; then
+ case "${enableval}" in
+ yes) newlib_iconv=yes ;;
+ no) newlib_iconv=no ;;
+ *) { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for newlib-iconv option" >&5
+$as_echo "$as_me: error: bad value ${enableval} for newlib-iconv option" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+ fi
+else
+ newlib_iconv=${newlib_iconv}
+fi
+
+# Check whether --enable-newlib-elix-level was given.
+if test "${enable_newlib_elix_level+set}" = set; then
+ enableval=$enable_newlib_elix_level; case "${enableval}" in
+ 0) newlib_elix_level=0 ;;
+ 1) newlib_elix_level=1 ;;
+ 2) newlib_elix_level=2 ;;
+ 3) newlib_elix_level=3 ;;
+ 4) newlib_elix_level=4 ;;
+ *) { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for newlib-elix-level option" >&5
+$as_echo "$as_me: error: bad value ${enableval} for newlib-elix-level option" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+else
+ newlib_elix_level=0
+fi
+
+# Check whether --enable-newlib-io-float was given.
+if test "${enable_newlib_io_float+set}" = set; then
+ enableval=$enable_newlib_io_float; case "${enableval}" in
+ yes) newlib_io_float=yes ;;
+ no) newlib_io_float=no ;;
+ *) { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for newlib-io-float option" >&5
+$as_echo "$as_me: error: bad value ${enableval} for newlib-io-float option" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+else
+ newlib_io_float=yes
+fi
+
+# Check whether --enable-newlib-supplied-syscalls was given.
+if test "${enable_newlib_supplied_syscalls+set}" = set; then
+ enableval=$enable_newlib_supplied_syscalls; case "${enableval}" in
+ yes) newlib_may_supply_syscalls=yes ;;
+ no) newlib_may_supply_syscalls=no ;;
+ *) { { $as_echo "$as_me:$LINENO: error: bad value ${enableval} for newlib-supplied-syscalls option" >&5
+$as_echo "$as_me: error: bad value ${enableval} for newlib-supplied-syscalls option" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+else
+ newlib_may_supply_syscalls=yes
+fi
+
+ if test x${newlib_may_supply_syscalls} = xyes; then
+ MAY_SUPPLY_SYSCALLS_TRUE=
+ MAY_SUPPLY_SYSCALLS_FALSE='#'
+else
+ MAY_SUPPLY_SYSCALLS_TRUE='#'
+ MAY_SUPPLY_SYSCALLS_FALSE=
+fi
+
+
+
+test -z "${with_target_subdir}" && with_target_subdir=.
+
+if test "${srcdir}" = "."; then
+ if test "${with_target_subdir}" != "."; then
+ newlib_basedir="${srcdir}/${with_multisrctop}../../../.."
+ else
+ newlib_basedir="${srcdir}/${with_multisrctop}../../.."
+ fi
+else
+ newlib_basedir="${srcdir}/../../.."
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+$as_echo "$as_me: error: invalid value of canonical host" >&2;}
+ { (exit 1); exit 1; }; };;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='newlib'
+ VERSION='1.18.0'
+
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+# FIXME: We temporarily define our own version of AC_PROG_CC. This is
+# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
+# are probably using a cross compiler, which will not be able to fully
+# link an executable. This should really be fixed in autoconf
+# itself.
+
+
+
+
+
+
+
+# Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="gcc"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: no acceptable cc found in \$PATH" >&5
+$as_echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+{ $as_echo "$as_me:$LINENO: checking whether we are using GNU C" >&5
+$as_echo_n "checking whether we are using GNU C... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } | egrep yes >/dev/null 2>&1; then
+ ac_cv_c_compiler_gnu=yes
+else
+ ac_cv_c_compiler_gnu=no
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+
+if test $ac_cv_c_compiler_gnu = yes; then
+ GCC=yes
+ ac_test_CFLAGS="${CFLAGS+set}"
+ ac_save_CFLAGS="$CFLAGS"
+ ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ CFLAGS=""
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS="$ac_save_CFLAGS"
+ elif test $ac_cv_prog_cc_g = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-O2"
+ fi
+else
+ GCC=
+ test "${CFLAGS+set}" = set || CFLAGS="-g"
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AS+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AS"; then
+ ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AS="${ac_tool_prefix}as"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+ { $as_echo "$as_me:$LINENO: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AS"; then
+ ac_ct_AS=$AS
+ # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_AS+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AS"; then
+ ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_AS="as"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_AS" = x; then
+ AS=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AS=$ac_ct_AS
+ fi
+else
+ AS="$ac_cv_prog_AS"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # 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
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AR+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:$LINENO: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_AR="ar"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_AR" = x; then
+ AR=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+else
+ AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # 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
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}readelf", so it can be a program name with args.
+set dummy ${ac_tool_prefix}readelf; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_READELF+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$READELF"; then
+ ac_cv_prog_READELF="$READELF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_READELF="${ac_tool_prefix}readelf"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+READELF=$ac_cv_prog_READELF
+if test -n "$READELF"; then
+ { $as_echo "$as_me:$LINENO: result: $READELF" >&5
+$as_echo "$READELF" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_READELF"; then
+ ac_ct_READELF=$READELF
+ # Extract the first word of "readelf", so it can be a program name with args.
+set dummy readelf; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_READELF+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_READELF"; then
+ ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_READELF="readelf"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_READELF=$ac_cv_prog_ac_ct_READELF
+if test -n "$ac_ct_READELF"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_READELF" >&5
+$as_echo "$ac_ct_READELF" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_READELF" = x; then
+ READELF=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ READELF=$ac_ct_READELF
+ fi
+else
+ READELF="$ac_cv_prog_READELF"
+fi
+
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# 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"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+# Hack to ensure that INSTALL won't be set to "../" with autoconf 2.13. */
+ac_given_INSTALL=$INSTALL
+
+
+{ $as_echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+ # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then
+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+ if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+# By default we simply use the C compiler to build assembly code.
+
+test "${CCAS+set}" = set || CCAS=$CC
+test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
+
+
+
+
+# We need AC_EXEEXT to keep automake happy in cygnus mode. However,
+# at least currently, we never actually build a program, so we never
+# need to use $(EXEEXT). Moreover, the test for EXEEXT normally
+# fails, because we are probably configuring with a cross compiler
+# which can't create executables. So we include AC_EXEEXT to keep
+# automake happy, but we don't execute it, since we don't care about
+# the result.
+if false; then
+
+ dummy_var=1
+fi
+
+. ${newlib_basedir}/configure.host
+
+newlib_cflags="${newlib_cflags} -fno-builtin"
+
+NEWLIB_CFLAGS=${newlib_cflags}
+
+
+LDFLAGS=${ldflags}
+
+
+ if test x${newlib_elix_level} = x0; then
+ ELIX_LEVEL_0_TRUE=
+ ELIX_LEVEL_0_FALSE='#'
+else
+ ELIX_LEVEL_0_TRUE='#'
+ ELIX_LEVEL_0_FALSE=
+fi
+
+ if test x${newlib_elix_level} = x1; then
+ ELIX_LEVEL_1_TRUE=
+ ELIX_LEVEL_1_FALSE='#'
+else
+ ELIX_LEVEL_1_TRUE='#'
+ ELIX_LEVEL_1_FALSE=
+fi
+
+ if test x${newlib_elix_level} = x2; then
+ ELIX_LEVEL_2_TRUE=
+ ELIX_LEVEL_2_FALSE='#'
+else
+ ELIX_LEVEL_2_TRUE='#'
+ ELIX_LEVEL_2_FALSE=
+fi
+
+ if test x${newlib_elix_level} = x3; then
+ ELIX_LEVEL_3_TRUE=
+ ELIX_LEVEL_3_FALSE='#'
+else
+ ELIX_LEVEL_3_TRUE='#'
+ ELIX_LEVEL_3_FALSE=
+fi
+
+ if test x${newlib_elix_level} = x4; then
+ ELIX_LEVEL_4_TRUE=
+ ELIX_LEVEL_4_FALSE='#'
+else
+ ELIX_LEVEL_4_TRUE='#'
+ ELIX_LEVEL_4_FALSE=
+fi
+
+
+ if test x${use_libtool} = xyes; then
+ USE_LIBTOOL_TRUE=
+ USE_LIBTOOL_FALSE='#'
+else
+ USE_LIBTOOL_TRUE='#'
+ USE_LIBTOOL_FALSE=
+fi
+
+
+# Hard-code OBJEXT. Normally it is set by AC_OBJEXT, but we
+# use oext, which is set in configure.host based on the target platform.
+OBJEXT=${oext}
+
+
+
+
+
+
+
+
+
+
+
+ac_config_files="$ac_config_files Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# 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.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) $as_unset $ac_var ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ test "x$cache_file" != "x/dev/null" &&
+ { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+ { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+ g
+ s/^\n//
+ s/\n/ /g
+ p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${MAY_SUPPLY_SYSCALLS_TRUE}" && test -z "${MAY_SUPPLY_SYSCALLS_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"MAY_SUPPLY_SYSCALLS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"MAY_SUPPLY_SYSCALLS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${ELIX_LEVEL_0_TRUE}" && test -z "${ELIX_LEVEL_0_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"ELIX_LEVEL_0\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"ELIX_LEVEL_0\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${ELIX_LEVEL_1_TRUE}" && test -z "${ELIX_LEVEL_1_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"ELIX_LEVEL_1\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"ELIX_LEVEL_1\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${ELIX_LEVEL_2_TRUE}" && test -z "${ELIX_LEVEL_2_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"ELIX_LEVEL_2\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"ELIX_LEVEL_2\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${ELIX_LEVEL_3_TRUE}" && test -z "${ELIX_LEVEL_3_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"ELIX_LEVEL_3\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"ELIX_LEVEL_3\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${ELIX_LEVEL_4_TRUE}" && test -z "${ELIX_LEVEL_4_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"ELIX_LEVEL_4\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"ELIX_LEVEL_4\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${USE_LIBTOOL_TRUE}" && test -z "${USE_LIBTOOL_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"USE_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"USE_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line after each line using $LINENO; the second 'sed'
+ # does the real work. The second script uses 'N' to pair each
+ # line-number line with the line containing $LINENO, and appends
+ # trailing '-' during substitution so that $LINENO is not a special
+ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # scripts with optimization help from Paolo Bonzini. Blame Lee
+ # E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+ case `echo 'x\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ *) ECHO_C='\c';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+
+# Save the log message, to keep $[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by newlib $as_me 1.18.0, which was
+generated by GNU Autoconf 2.63. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTION]... [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Configuration commands:
+$config_commands
+
+Report bugs to ."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_version="\\
+newlib config.status 1.18.0
+configured by $0, generated by GNU Autoconf 2.63,
+ with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h | --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { $as_echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+ *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp=
+ trap 'exit_status=$?
+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} ||
+{
+ $as_echo "$as_me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr='
+'
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\).*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\).*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' >$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
+$as_echo "$as_me: error: could not setup config files machinery" >&2;}
+ { (exit 1); exit 1; }; }
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[ ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
+$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
+ { (exit 1); exit 1; }; };;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ ac_file_inputs="$ac_file_inputs '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$tmp/stdin" \
+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ { as_dir="$ac_dir"
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+ { (exit 1); exit 1; }; }
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&2;}
+
+ rm -f "$tmp/stdin"
+ case $ac_file in
+ -) cat "$tmp/out" && rm -f "$tmp/out";;
+ *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+ esac \
+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+
+
+ :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ { as_dir=$dirpart/$fdir
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+
+ esac
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
configure
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: strncat_ca.S
===================================================================
--- strncat_ca.S (nonexistent)
+++ strncat_ca.S (revision 345)
@@ -0,0 +1,300 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "sncat_ca.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure strncat (optimized assembler version for the CA)
+
+ dest_addr = strncat (dest_addr, src_addr, max_bytes)
+
+ append the null terminated string pointed to by src_addr to the null
+ terminated string pointed to by dest_addr. Return the original
+ dest_addr. If the source string is longer than max_bytes, then
+ append only max_bytes bytes, and tack on a null byte on the end
+
+ This routine will fail if the source and destination string
+ overlap (in particular, if the end of the source is overlapped
+ by the beginning of the destination). The behavior is undefined.
+ This is acceptable according to the draft C standard.
+
+ Undefined behavior will also occur if the end of the source string
+ (i.e. the terminating null byte) is in the last word of the program's
+ allocated memory space. This is so because, in several cases, strncat
+ will fetch ahead one word. Disallowing the fetch ahead would impose
+ a severe performance penalty.
+
+ This program handles five cases:
+
+ 1) both arguments start on a word boundary
+ 2) neither are word aligned, but they are offset by the same amount
+ 3) source is word aligned, destination is not
+ 4) destination is word aligned, source is not
+ 5) neither is word aligned, and they are offset by differing amounts
+
+ At the time of this writing, only g0 thru g7 and g13 are available
+ for use in this leafproc; other registers would have to be saved and
+ restored. These nine registers, plus tricky use of g14 are sufficient
+ to implement the routine. The registers are used as follows:
+
+ g0 original dest ptr; not modified, so that it may be returned.
+ g1 src ptr; shift count
+ g2 max_bytes
+ g3 src ptr (word aligned)
+ g4 dest ptr (word aligned)
+ g5 0xff -- byte extraction mask
+ Little endian:
+ g6 lsw of double word for extraction of 4 bytes
+ g7 msw of double word for extraction of 4 bytes
+ Big endian:
+ g6 msw of double word for extraction of 4 bytes
+ g7 lsw of double word for extraction of 4 bytes
+ g13 return address
+ g14 byte extracted.
+*/
+
+#if __i960_BIG_ENDIAN__
+#define MSW g6
+#define LSW g7
+#else
+#define LSW g6
+#define MSW g7
+#endif
+
+ .globl _strncat
+ .globl __strncat
+ .leafproc _strncat, __strncat
+ .align 2
+_strncat:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__strncat:
+ notand g0,3,g4 # extract word addr of start of dest
+ lda (g14),g13 # preserve return address
+ cmpibge.f 0,g2,Lexit_code # Lexit if number of bytes to move is <= zero.
+ and g0,3,LSW # extract byte offset of dest
+ ld (g4),MSW # fetch word containing at least first byte
+ shlo 3,LSW,g14 # get shift count for making mask for first word
+ subi 1,0,LSW # mask initially all ones
+#if __i960_BIG_ENDIAN__
+ shro g14,LSW,LSW # get mask for bytes needed from first word
+#else
+ shlo g14,LSW,LSW # get mask for bytes needed from first word
+#endif
+ notor MSW,LSW,MSW # set unneeded bytes to all ones
+ lda 0xff,g5 # byte extraction mask
+Lsearch_for_word_with_null:
+ scanbyte 0,MSW # check for null byte
+ lda 4(g4),g4 # post-increment dest word pointer
+ mov MSW,LSW # keep a copy of current word
+ ld (g4),MSW # fetch next word of dest
+ bno.t Lsearch_for_word_with_null # branch if null not found yet
+#if __i960_BIG_ENDIAN__
+ shro 24,LSW,g14 # extract byte
+#else
+ and g5,LSW,g14 # extract byte
+#endif
+ cmpo 0,g14 # branch if null is first byte of word
+ subo 4,g4,g4 # move dest word ptr to word with null
+ notand g1,3,g3 # extract word addr of start of src
+ bne.t Lsearch_for_null
+
+Lcase_14:
+ cmpo g1,g3 # check alignment of source
+ ld (g3),LSW # fetch first word of source
+ shlo 3,g1,g14 # compute shift count
+ lda 4(g3),g3 # post-increment src addr
+ bne.f Lcase_4 # branch if source is unaligned
+Lcase_1:
+Lcase_1_wloop: # word copying loop
+ cmpi g2,4 # check for fewer than four bytes to move
+ lda (LSW),g1 # keep a copy of the src word
+ bl.f Lcase_1_cloop # branch if fewer than four bytes to copy
+ scanbyte 0,g1 # check for null byte in src word
+ ld (g3),LSW # pre-fetch next word of src
+ addo 4,g3,g3 # post-increment src addr
+ bo.f Lcase_1_cloop # branch if word contains null byte
+ subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved
+ st g1,(g4) # store word in dest string
+ addo 4,g4,g4 # post-increment dest addr
+ b Lcase_1_wloop
+
+Lcase_3_cloop:
+Lcase_1_cloop: # character copying loop (max_bytes <= 3)
+ cmpdeci 0,g2,g2 # is max_bytes exhausted?
+#if __i960_BIG_ENDIAN__
+ rotate 8,g1,g1 # move next byte into position for extraction
+#endif
+ and g5,g1,g14 # extract next char
+ be.f Lstore_null # if max_bytes is exhausted, store null and quit
+ cmpo 0,g14 # check for null byte
+ stob g14,(g4) # store the byte in dest
+#if ! __i960_BIG_ENDIAN__
+ shro 8,g1,g1 # move next byte into position for extraction
+#endif
+ lda 1(g4),g4 # post-increment dest byte addr
+ bne.t Lcase_1_cloop # branch if null not reached
+ bx (g13) # Lexit (g14 == 0)
+
+Lstore_null:
+ mov 0,g14 # store null, and set g14 to zero
+ stob g14,(g4)
+ bx (g13)
+
+
+Lsearch_for_null:
+#if __i960_BIG_ENDIAN__
+ shlo 8,LSW,LSW # check next byte
+ shro 24,LSW,g14
+#else
+ shlo 8,g5,g5 # move mask up to next byte
+ and g5,LSW,g14 # extract byte
+#endif
+ lda 1(g4),g4 # move dest byte ptr to next byte
+ cmpobne.t 0,g14,Lsearch_for_null # branch if null is not yet found
+
+Lcase_235:
+ cmpo g1,g3 # check alignment of src
+ ld (g3),LSW # pre-fetch word with start of src
+ and 3,g1,g1 # compute shift count
+ lda 0xff,g5 # load mask for byte extraction
+ shlo 3,g1,g14
+ lda 4(g3),g3 # post-increment src word counter
+ be.t Lcase_3 # branch if src is word aligned
+ and g4,3,MSW # extract byte offset for dest string
+ cmpo MSW,g1 # < indicates first word of dest has more bytes
+ /* than first word of source. */
+ ld (g3),MSW # fetch second word of src
+#if __i960_BIG_ENDIAN__
+ subo g14,0,g14 # adjust shift count for big endian
+#endif
+ eshro g14,g6,g5 # extract four bytes
+#if __i960_BIG_ENDIAN__
+ bge.f 1f
+#else
+ bg.f 1f
+#endif
+ mov MSW,LSW
+ lda 4(g3),g3 # move src word addr to second word boundary
+1:
+ mov g5,MSW
+ lda 0xff,g5
+ b Lcase_25
+
+Lcase_3: # src is word aligned; dest is not
+ mov LSW,MSW # make copy of first word of src
+ lda 32,g14 # initialize shift count to zero (mod 32)
+Lcase_25:
+
+Lcase_3_cloop_at_start: # character copying loop for start of dest str
+ cmpdeci 0,g2,g2 # is max_bytes exhausted?
+#if __i960_BIG_ENDIAN__
+ shro 24,MSW,g5 # extract next char
+#else
+ and g5,MSW,g5 # extract next char
+#endif
+ be.f Lstore_null # Lexit if max_bytes is exhausted
+ cmpo 0,g5 # check for null byte
+ stob g5,(g4) # store the byte in dest
+ addo 1,g4,g4 # post-increment dest ptr
+ lda 0xff,g5 # re-initialize byte extraction mask
+ notand g4,3,g1 # extract word address
+ be.t Lexit_code # Lexit if null byte reached
+ cmpo g1,g4 # have we reached word boundary in dest yet?
+#if __i960_BIG_ENDIAN__
+ lda -8(g14),g14 # augment the shift counter
+ rotate 8,MSW,MSW # move next byte into position for extraction
+#else
+ lda 8(g14),g14 # augment the shift counter
+ shro 8,MSW,MSW # move next byte into position for extraction
+#endif
+ bne.t Lcase_3_cloop_at_start # branch if reached word boundary?
+
+#if __i960_BIG_ENDIAN__
+ cmpo 0,g14
+ ld (g3),MSW # fetch msw of operand for double shift
+ bne Lcase_3_wloop # branch if src is still unaligned.
+
+Lcase_3_wloop2:
+ cmpi g2,4 # less than four bytes to move?
+ mov LSW,g1 # extract 4 bytes of src
+ lda 4(g3),g3 # post-increment src word addr
+ bl.f Lcase_3_cloop # branch if < four bytes left to move
+ scanbyte 0,g1 # check for null byte
+ mov MSW,LSW # move msw to lsw
+ ld (g3),MSW # pre-fetch msw of operand for double shift
+ bo.f Lcase_3_cloop # branch if word contains null byte
+ subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved
+ st g1,(g4) # store 4 bytes to dest
+ addo 4,g4,g4 # post-increment dest ptr
+ b Lcase_3_wloop2
+Lcase_4:
+ subo g14,0,g14 # adjust shift count for big endian
+#else
+Lcase_4:
+#endif
+
+ ld (g3),MSW # fetch msw of operand for double shift
+
+Lcase_3_wloop:
+ cmpi g2,4 # less than four bytes to move?
+ eshro g14,g6,g1 # extract 4 bytes of src
+ lda 4(g3),g3 # post-increment src word addr
+ bl.f Lcase_3_cloop # branch if < four bytes left to move
+ scanbyte 0,g1 # check for null byte
+ mov MSW,LSW # move msw to lsw
+ ld (g3),MSW # pre-fetch msw of operand for double shift
+ bo.f Lcase_3_cloop # branch if word contains null byte
+ subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved
+ st g1,(g4) # store 4 bytes to dest
+ addo 4,g4,g4 # post-increment dest ptr
+ b Lcase_3_wloop
+
+
+Lexit_code:
+ mov 0,g14 # conform to register conventions
+ bx (g13) # g0 = addr of dest; g14 = 0
+Lrett:
+ ret
+
+/* end of strncat */
+
strncat_ca.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: Makefile.in
===================================================================
--- Makefile.in (nonexistent)
+++ Makefile.in (revision 345)
@@ -0,0 +1,346 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/configure $(am__configure_deps) \
+ $(srcdir)/../../../../mkinstalldirs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../../../acinclude.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/../../../../mkinstalldirs
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+lib_a_AR = $(AR) $(ARFLAGS)
+lib_a_LIBADD =
+am_lib_a_OBJECTS =
+lib_a_OBJECTS = $(am_lib_a_OBJECTS)
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp =
+am__depfiles_maybe =
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(lib_a_SOURCES)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCAS = @CCAS@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NEWLIB_CFLAGS = @NEWLIB_CFLAGS@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+READELF = @READELF@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+aext = @aext@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libm_machine_dir = @libm_machine_dir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lpfx = @lpfx@
+machine_dir = @machine_dir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+newlib_basedir = @newlib_basedir@
+oext = @oext@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sys_dir = @sys_dir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = cygnus
+INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
+AM_CCASFLAGS = $(INCLUDES)
+noinst_LIBRARIES = lib.a
+lib_a_SOURCES =
+lib_a_CCASFLAGS = $(AM_CCASFLAGS)
+lib_a_CFLAGS = $(AM_CFLAGS)
+ACLOCAL_AMFLAGS = -I ../../.. -I ../../../..
+CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
+all: all-am
+
+.SUFFIXES:
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --cygnus'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --cygnus \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --cygnus Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+lib.a: $(lib_a_OBJECTS) $(lib_a_DEPENDENCIES)
+ -rm -f lib.a
+ $(lib_a_AR) lib.a $(lib_a_OBJECTS) $(lib_a_LIBADD)
+ $(RANLIB) lib.a
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+check-am:
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am am--refresh check check-am clean clean-generic \
+ clean-noinstLIBRARIES distclean distclean-compile \
+ distclean-generic dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+ uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: memcmp_ca.S
===================================================================
--- memcmp_ca.S (nonexistent)
+++ memcmp_ca.S (revision 345)
@@ -0,0 +1,205 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "memcm_ca.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1992,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure memcmp (optimized assembler version for the CA)
+
+ result = memcmp (src1_addr, src2_addr, max_bytes)
+
+ compare the byte array pointed to by src1_addr to the byte array
+ pointed to by src2_addr. Return 0 iff the arrays are equal, -1 if
+ src1_addr is lexicly less than src2_addr, and 1 if it is lexicly
+ greater. Do not compare more than max_bytes bytes.
+
+ Undefined behavior will occur if the end of either source array
+ is in the last word of the program's allocated memory space. This
+ is so because, in several cases, memcmp will fetch ahead one word.
+ Disallowing the fetch ahead would impose a severe performance penalty.
+
+ This program handles five cases:
+
+ 1) both arguments start on a word boundary
+ 2) neither are word aligned, but they are offset by the same amount
+ 3) source1 is word aligned, source2 is not
+ 4) source2 is word aligned, source1 is not
+ 5) neither is word aligned, and they are offset by differing amounts
+
+ At the time of this writing, only g0 thru g7 and g14 are available
+ for use in this leafproc; other registers would have to be saved and
+ restored. These nine registers are sufficient to implement the routine.
+ The registers are used as follows:
+
+ g0 original src1 ptr; extracted word; return result
+ g1 src2 ptr; byt extraction mask
+ g2 maximum number of bytes to compare
+ g3 src2 word ptr
+ Little endian
+ g4 lsw of src1
+ g5 msw of src1
+ g6 src2 word
+ g7 src1 word ptr
+ Big endian
+ g4 msw of src1
+ g5 lsw of src1
+ g6 src1 word ptr
+ g7 src2 word
+ g13 return address
+ g14 shift count
+*/
+
+#if __i960_BIG_ENDIAN__
+#define MSW g4
+#define LSW g5
+#define SRC1 g6
+#define SRC2 g7
+#else
+#define LSW g4
+#define MSW g5
+#define SRC2 g6
+#define SRC1 g7
+#endif
+
+ .globl _memcmp
+ .globl __memcmp
+ .leafproc _memcmp, __memcmp
+ .align 2
+_memcmp:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__memcmp:
+Lrestart:
+#if __i960_BIG_ENDIAN__
+ subo 1,g0,SRC1
+ notand SRC1,3,SRC1 # extract word addr of start of src1
+#else
+ notand g0,3,SRC1 # extract word addr of start of src1
+#endif
+ lda (g14),g13 # preserve return address
+ cmpibge.f 0,g2,Lequal_exit # return equality if number bytes 0
+ notand g1,3,g3 # extract word addr of start of src2
+ ld (SRC1),LSW # fetch word with at least first byte of src1
+ cmpo g3,g1 # check alignment of src2
+ ld 4(SRC1),MSW # fetch second word of src1
+ shlo 3,g0,g14 # compute shift count for src1
+#if __i960_BIG_ENDIAN__
+ subo g14,0,g14 # adjust shift count for big endian.
+#endif
+ ld (g3),SRC2 # fetch word with at least first byte of src2
+ eshro g14,g4,LSW # extract word of src1
+ lda 8(SRC1),SRC1 # advance src1 word addr
+ bne.f Lsrc2_unaligned # branch if src2 is NOT word aligned
+
+ mov LSW,g0 # at least src2 is word aligned
+
+ lda 0xff,g1
+
+Lwloop: # word comparing loop
+ cmpo SRC2,g0 # compare src1 and src2 words
+ lda 4(g3),g3 # pre-increment src2 addr
+ mov MSW,LSW # move msw of src1 to lsw
+ ld (SRC1),MSW # pre-fetch next msw of src1
+ subi 4,g2,g2 # decrement maximum byte count
+ bne.f Lcloop # branch if src1 and src2 unequal
+ cmpi 0,g2
+ ld (g3),SRC2 # pre-fetch next word of src2
+ eshro g14,g4,g0 # extract word of src1
+ lda 4(SRC1),SRC1 # post-increment src1 addr
+ bl.t Lwloop # branch if max_bytes not reached yet
+
+ b Lequal_exit # strings were equal up through max_bytes
+
+Lcloop_setup: # setup for coming from Lsrc2_unaligned
+ mov LSW,g0 # restore extracted src1 word
+ subo 4,g2,g2 # make up for later re-incrementing
+ lda 0xff,g1 # byte extraction mask
+
+Lcloop: # character comparing loop
+#if __i960_BIG_ENDIAN__
+ rotate 24,g1,g1 # shift mask for next byte
+#endif
+ and SRC2,g1,g3 # extract next char of src2
+ and g0,g1,LSW # extract next char of src1
+ cmpobne.f LSW,g3,.diff # check for equality
+#if ! __i960_BIG_ENDIAN__
+ shlo 8,g1,g1 # shift mask for next byte
+#endif
+ subi 1,g2,g2 # decrement character counter
+ b Lcloop # branch if null not reached
+
+
+Lequal_exit: # words are equal up thru null byte
+ mov 0,g14 # conform to register conventions
+ lda 0,g0 # return zero, indicating equality
+ bx (g13) # return
+Lrett:
+ ret
+
+.diff:
+ addo 4,g2,g2 # to make up for extra decrement in loop
+ lda 0,g14
+ bl Lless_than_exit
+Lgreater_than_exit:
+ cmpibge.f 0,g2,Lequal_exit # branch if difference is beyond max_bytes
+ mov 1,g0
+ bx (g13) # g0 = 1 (src1 > src2)
+Lless_than_exit:
+ cmpibge.f 0,g2,Lequal_exit # branch if difference is beyond max_bytes
+ subi 1,0,g0
+ bx (g13) # g0 = -1 (src1 < src2)
+
+Lsrc2_unaligned:
+ notor g1,3,g14 # first step in computing new src1 ptr
+ ld 4(g3),SRC1 # fetch second word of src2
+ shlo 3,g1,MSW # compute shift count for src2
+#if __i960_BIG_ENDIAN__
+ subo MSW,0,MSW
+#endif
+ eshro MSW,g6,SRC2 # extract word of src2
+ cmpo LSW,SRC2 # compare src1 and src2 words
+ lda 4(g3),g1 # set new src2 ptr
+ bne.f Lcloop_setup # first four bytes differ
+ subo g14,g0,g0 # second (final) step in computing new src1 ptr
+ addi g14,g2,g2 # compute new max_bytes too
+ lda (g13),g14 # prepare return pointer for Lrestart
+ b Lrestart # continue with both string fetches shifted
memcmp_ca.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strcpy.S
===================================================================
--- strcpy.S (nonexistent)
+++ strcpy.S (revision 345)
@@ -0,0 +1,177 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "strcpy.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+/*
+ procedure strcpy (optimized assembler version for the 80960K series)
+ procedure strcat (optimized assembler version for the 80960K series)
+
+ dest_addr = strcpy (dest_addr, src_addr)
+
+ copy the null terminated string pointed to by src_addr to
+ the string space pointed to by dest_addr. Return the original
+ dest_addr.
+
+ This routine will fail if the source and destination string
+ overlap (in particular, if the end of the source is overlapped
+ by the beginning of the destination). The behavior is undefined.
+ This is acceptable according to the draft C standard.
+
+ Undefined behavior will also occur if the end of the source string
+ (i.e. the terminating null byte) is in the last two words of the
+ program's allocated memory space. This is so because strcpy fetches
+ ahead. Disallowing the fetch ahead would impose a severe performance
+ penalty.
+
+ Strategy:
+
+ Fetch the source string and store the destination string by words
+ until the null byte is encountered. When the word with the null
+ byte is reached, store it by bytes up through the null byte only.
+
+ Tactics:
+
+ 1) Do NOT try to fetch and store the words in a word aligned manner
+ because, in my judgement, the performance degradation experienced due
+ to non-aligned accesses does NOT outweigh the time and complexity added
+ by the preamble and convoluted body that would be necessary to assure
+ alignment. This is supported by the intuition that most source and
+ destination strings will be word aligned to begin with.
+
+
+ procedure strcat
+
+ dest_addr = strcat (dest_addr, src_addr)
+
+ Appends the string pointed to by src_addr to the string pointed
+ to by dest_addr. The first character of the source string is
+ copied to the location initially occupied by the trailing null
+ byte of the destination string. Thereafter, characters are copied
+ from the source to the destination up thru the null byte that
+ trails the source string.
+
+ See the strcpy routine, above, for its caveats, as they apply here too.
+
+ Strategy:
+
+ Skip to the end (null byte) of the destination string, and then drop
+ into the strcpy code.
+
+ Tactics:
+
+ Skipping to the null byte is Ldone by reading the destination string
+ in long-words and scanbyte'ing them, then examining the bytes of the
+ word that contains the null byte, until the address of the null byte is
+ known. Then we drop into the strcpy routine. It is probable (approx.
+ three out of four times) that the destination string as strcpy sees
+ it will NOT be word aligned (i.e. that the null byte won't be the
+ last byte of a word). But it is not worth the complication to that
+ routine to force word aligned memory accesses to be gaurenteed.
+*/
+ .globl _strcpy, _strcat
+ .globl __strcpy, __strcat
+ .leafproc _strcpy,__strcpy
+ .leafproc _strcat,__strcat
+ .align 2
+_strcat:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__strcat:
+ mov g14,g13 # preserve return address
+ ldl (g0),g4 # fetch first two words
+ addo 8,g0,g2 # post-increment src word pointer
+ lda 0xff,g3 # byte extraction mask
+
+Lsearch_for_word_with_null_byte:
+ scanbyte 0,g4 # check for null byte
+ mov g5,g7 # copy second word
+ bo.f Lsearch_for_null # branch if null found
+ scanbyte 0,g7 # check for null byte
+ ldl (g2),g4 # fetch next pair of word of src
+ addo 8,g2,g2 # post-increment src word pointer
+ bno Lsearch_for_word_with_null_byte # branch if null not found yet
+
+ subo 4,g2,g2 # back up the byte pointer
+ mov g7,g4 # move word with null to search word
+Lsearch_for_null:
+ subo 9,g2,g5 # back up the byte pointer
+Lsearch_for_null.a:
+ and g4,g3,g6 # extract byte
+ cmpo 0,g6 # is it null?
+ addo 1,g5,g5 # bump src byte ptr
+ shro 8,g4,g4 # shift word to position next byte
+ bne Lsearch_for_null.a
+ b Lend_of_dest_found
+
+_strcpy:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__strcpy:
+ mov g0, g5
+Lend_of_dest_found:
+ ld (g1), g2 # fetch first word of source
+ mov g14,g6 # preserve return address
+ lda 0xff, g3 # byte extraction mask = 0xff;
+Lwloop: # word copying loop
+ addo 4, g1, g1 # post-increment source ptr
+ scanbyte 0, g2 # does source word contain null byte?
+ mov g2, g4 # save a copy of the source word
+ be Lcloop # branch if null present
+ ld (g1), g2 # pre-fetch next word of source
+ st g4, (g5) # store current word
+ addo 4, g5, g5 # post-increment dest ptr
+ b Lwloop
+
+Lcloop: # character copying loop
+ and g3, g4, g14 # extract next char
+ shro 8, g4, g4 # position word for next byte extraction
+ cmpo 0, g14 # is it null?
+ stob g14, (g5) # store the byte
+ addo 1, g5, g5 # post-increment dest ptr
+ bne Lcloop # quit if null encountered
+
+ bx (g6) # g0 = dest string address; g14 = 0
+Lrett:
+ ret
strcpy.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strpbrk.S
===================================================================
--- strpbrk.S (nonexistent)
+++ strpbrk.S (revision 345)
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+/*
+ * (c) copyright 1989,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure strpbrk (optimized assembler version: 80960K series, 80960CA)
+
+ char_addr = strpbrk (string, brkset_string)
+
+ Return the address of the first character in string that is NOT
+ in the brkset_string. Return NULL if none exists.
+
+ At the time of this writing, only g0 thru g7 and g13 are available
+ for use in this leafproc; other registers would have to be saved and
+ restored. These nine registers, plus tricky use of g14 are sufficient
+ to implement the routine.
+
+ This routine stays out of g3 and g4 altogether. They may be used by
+ the strtok routine, which calls this routine in an incestuous way.
+*/
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+
+ .file "strprk.s"
+ .globl _strpbrk
+ .globl __strpbrk
+ .leafproc _strpbrk, __strpbrk
+ .align 2
+
+_strpbrk:
+#ifdef __PIC
+ lda Lrett-(.+8)(ip),g14
+ b __strpbrk
+#else
+ lda Lrett,g14
+ b __strpbrk
+#endif
+
+Lrett: ret
+
+__strpbrk:
+
+Lnext_char_strpbrk:
+ addo 1,g1,g2 # g2 will be the brkset ptr
+ ldob (g0),g7 # fetch next character of string
+ ldob (g1),g6 # fetch first character of brkset
+ cmpobe.f 0,g7,Lexit_char_not_found # quit if at end of string
+Lscan_set_strpbrk:
+ cmpo g6,g7 # is brkset char equal to string char?
+ ldob (g2),g5 # fetch next brkset char
+ addo 1,g2,g2 # bump brkset ptr
+ be.f Lexit_char_found
+ cmpo g6,0 # is brkset_string exhausted?
+ lda (g5),g6
+ bne.t Lscan_set_strpbrk # check next character of brkset
+ addo 1,g0,g0 # check next character of string
+ b Lnext_char_strpbrk
+
+Lexit_char_not_found:
+ mov 0,g0 # return null if brkset char not found in string
+Lexit_char_found:
+ mov g14,g13 # save return address
+ lda 0,g14 # conform to register conventions
+ bx (g13)
+
+/* end of strpbrk */
strpbrk.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strrchr.S
===================================================================
--- strrchr.S (nonexistent)
+++ strrchr.S (revision 345)
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "strrchr.s"
+#ifdef __i960_BIG_ENDIAN__
+#error "This does not work in big-endian"
+#endif
+
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure strrchr (optimized assembler version for the 80960K series)
+
+ src_addr = strrchr (src_addr, char)
+
+ return a pointer to the last byte that contains the indicated
+ byte in the source string. Return null if the byte is not found.
+
+ Undefined behavior will occur if the end of the source string (i.e.
+ the terminating null byte) is in the last two words of the program's
+ allocated memory space. This is so because strrchr fetches ahead.
+ Disallowing the fetch ahead would impose a severe performance penalty.
+
+ Strategy:
+
+ Fetch the source string by words and scanbyte the words for the
+ char until either a word with the byte is found or the null byte is
+ encountered. In the former case, move through the word to find the
+ matching byte and save its memory address, then continue the search.
+ In the latter case, return the saved address, or zero (null) if none
+ was ever found to save.
+
+ Tactics:
+
+ 1) Do NOT try to fetch the words in a word aligned manner because,
+ in my judgement, the performance degradation experienced due to
+ non-aligned accesses does NOT outweigh the time and complexity added
+ by the preamble that would be necessary to assure alignment. This
+ is supported by the intuition that most source arrays (even more
+ true of most big source arrays) will be word aligned to begin with.
+*/
+
+ .globl _strrchr
+ .globl __strrchr
+ .leafproc _strrchr, __strrchr
+ .align 2
+_strrchr:
+#ifdef __PIC
+ lda Lrett-(.+8)(ip),g14
+#else
+ lda Lrett,g14
+#endif
+__strrchr:
+
+ ld (g0),g4 # fetch first word
+ lda 0xff,g7 # byte extraction mask
+ and g1,g7,g1 # make char an 8-bit ordinal
+ shlo 8,g1,g2 # broadcast the char to four bytes
+ or g1,g2,g2
+ shlo 16,g2,g5
+ or g2,g5,g3
+ mov g14,g13 # preserve return address
+ addo 4,g0,g2 # post-increment src pointer
+ mov 1,g0 # prepare to return null pointer
+ mov g3,g6 # prepare to return null pointer
+
+Lsearch_for_word_with_char_or_null:
+ mov g4,g5 # copy word
+ scanbyte 0,g5 # check for null byte
+ ld (g2),g4 # fetch next word of src
+ bo Lword_has_null # branch if null found
+ scanbyte g3,g5 # check for byte with char
+ addo 4,g2,g2 # post-increment src pointer
+ bno Lsearch_for_word_with_char_or_null # branch if no copy of char
+ mov g5,g6 # save word that has char in it (at least once)
+ subo 4,g2,g0 # save addr of byte after word with char
+ b Lsearch_for_word_with_char_or_null
+
+Lword_has_null:
+ subo 4,g2,g2 # move src pointer back to word with null
+Lfind_null:
+ addo 1,g2,g2 # advance src pointer to byte after current
+ and g7,g5,g14 # extract next byte
+ cmpo g1,g14 # is current byte char?
+ shro 8,g5,g5 # position next byte for extraction
+ bne 1f # skip if not char sought after
+ mov g2,g0 # save addr of byte after char
+ mov g3,g6 # save word of all char to short circuit search
+1: cmpobne 0,g14,Lfind_null # is current byte null?
+
+Lfind_last_char:
+ rotate 8,g6,g6 # position next highest byte
+ and g7,g6,g5 # extract byte
+ subo 1,g0,g0 # move pointer to that byte (or nullify)
+ cmpobne g5,g1,Lfind_last_char # branch if not at char
+
+ bx (g13) # g0 = addr of char in src (or null); g14 = 0
+Lrett:
+ ret
+
+/* end of strrchr */
strrchr.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strncmp_ca.S
===================================================================
--- strncmp_ca.S (nonexistent)
+++ strncmp_ca.S (revision 345)
@@ -0,0 +1,253 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "sncmp_ca.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure strncmp (optimized assembler version for the CA)
+
+ result = strncmp (src1_addr, src2_addr, max_bytes)
+
+ compare the null terminated string pointed to by src1_addr to
+ the string space pointed to by src2_addr. Return 0 iff the strings
+ are equal, -1 if src1_addr is lexicly less than src2_addr, and 1
+ if it is lexicly greater. Do not compare more than max_bytes bytes.
+
+ Undefined behavior will occur if the end of either source string
+ (i.e. the terminating null byte) is in the last word of the program's
+ allocated memory space. This is so because, in several cases, strncmp
+ will fetch ahead one word. Disallowing the fetch ahead would impose
+ a severe performance penalty.
+
+ This program handles five cases:
+
+ 1) both arguments start on a word boundary
+ 2) neither are word aligned, but they are offset by the same amount
+ 3) source1 is word aligned, source2 is not
+ 4) source2 is word aligned, source1 is not
+ 5) neither is word aligned, and they are offset by differing amounts
+
+ At the time of this writing, only g0 thru g7 and g14 are available
+ for use in this leafproc; other registers would have to be saved and
+ restored. These nine registers are sufficient to implement the routine.
+ The registers are used as follows:
+
+ g0 original src1 ptr; extracted word; return result
+ g1 src2 ptr; 0xff -- byte extraction mask
+ g2 maximum number of bytes to compare
+ g3 src2 word ptr
+ Little endian:
+ g4 lsw of src1
+ g5 msw of src1
+ g6 src2 word
+ g7 src1 word ptr
+ Big endian:
+ g4 msw of src1
+ g5 lsw of src1
+ g6 src1 word ptr
+ g7 src2 word
+ g13 return address
+ g14 shift count
+*/
+
+#if __i960_BIG_ENDIAN__
+#define MSW g4
+#define LSW g5
+#define SRC1 g6
+#define SRC2 g7
+#else
+#define LSW g4
+#define MSW g5
+#define SRC2 g6
+#define SRC1 g7
+#endif
+
+ .globl _strncmp
+ .globl __strncmp
+ .leafproc _strncmp, __strncmp
+ .align 2
+_strncmp:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__strncmp:
+Lrestart:
+ notand g0,3,SRC1 # extract word addr of start of src1
+ lda (g14),g13 # preserve return address
+ cmpibge.f 0,g2,Lequal_exit # return equality if number of bytes to
+ /* compare is none. */
+#if __i960_BIG_ENDIAN__
+ cmpo g0,SRC1 # check alignment of src1
+#endif
+ ld (SRC1),LSW # fetch word with at least first byte of src1
+ notand g1,3,g3 # extract word addr of start of src2
+ ld 4(SRC1),MSW # fetch second word of src1
+#if __i960_BIG_ENDIAN__
+ bne Lsrc1_unaligned # branch if src1 is unaligned
+ cmpo g3,g1 # check alignment of src2
+ ld (g3),SRC2 # fetch word with at least first byte of src2
+ shlo 3,g0,g14 # compute shift count for src1
+ subo g14,0,g14 # adjust shift count for big endian
+ lda 8(SRC1),SRC1 # advance src1 word addr
+ bne.f Lsrc2_unaligned # branch if src2 is NOT word aligned
+
+ /* src2 is word aligned */
+
+ mov LSW,g0
+
+Lwloop2: # word comparing loop
+ cmpo SRC2,g0 # compare src1 and src2 words
+ lda 0xff000000,g1 # byte extraction mask
+ mov MSW,LSW # move msw of src1 to lsw
+ ld (SRC1),MSW # pre-fetch next msw of src1
+ addo 4,SRC1,SRC1 # post-increment src1 addr
+ lda 4(g3),g3 # pre-increment src2 addr
+ bne.f Lcloop # branch if src1 and src2 unequal
+ scanbyte 0,g0 # check for null byte in src1 word
+ ld (g3),SRC2 # pre-fetch next word of src2
+ mov LSW,g0 # extract word of src1
+ subi 4,g2,g2 # decrement maximum byte count
+ bo.f Lequal_exit # branch if null byte encountered
+ cmpibl.t 0,g2,Lwloop2 # branch if max_bytes not reached yet
+
+ b Lequal_exit # strings were equal up through max_bytes
+
+Lsrc1_unaligned:
+#endif
+ cmpo g3,g1 # check alignment of src2
+ ld (g3),SRC2 # fetch word with at least first byte of src2
+ shlo 3,g0,g14 # compute shift count for src1
+#if __i960_BIG_ENDIAN__
+ subo g14,0,g14 # adjust shift count for big endian
+#endif
+ eshro g14,g4,LSW # extract word of src1
+ lda 8(SRC1),SRC1 # advance src1 word addr
+ bne.f Lsrc2_unaligned # branch if src2 is NOT word aligned
+
+ /* at least src2 is word aligned */
+
+ mov LSW,g0
+
+Lwloop: # word comparing loop
+ cmpo SRC2,g0 # compare src1 and src2 words
+#if __i960_BIG_ENDIAN__
+ lda 0xff000000,g1 # byte extraction mask
+#else
+ lda 0xff,g1 # byte extraction mask
+#endif
+ mov MSW,LSW # move msw of src1 to lsw
+ ld (SRC1),MSW # pre-fetch next msw of src1
+ addo 4,SRC1,SRC1 # post-increment src1 addr
+ lda 4(g3),g3 # pre-increment src2 addr
+ bne.f Lcloop # branch if src1 and src2 unequal
+ scanbyte 0,g0 # check for null byte in src1 word
+ ld (g3),SRC2 # pre-fetch next word of src2
+ eshro g14,g4,g0 # extract word of src1
+ subi 4,g2,g2 # decrement maximum byte count
+ bo.f Lequal_exit # branch if null byte encountered
+ cmpibl.t 0,g2,Lwloop # branch if max_bytes not reached yet
+
+ b Lequal_exit # strings were equal up through max_bytes
+
+Lcloop_setup: # setup for coming from Lsrc2_unaligned
+ mov LSW,g0 # restore extracted src1 word
+#if __i960_BIG_ENDIAN__
+ lda 0xff000000,g1 # byte extraction mask
+#else
+ lda 0xff,g1 # byte extraction mask
+#endif
+
+Lcloop: # character comparing loop
+ and SRC2,g1,g3 # extract next char of src2
+ and g0,g1,LSW # extract next char of src1
+ cmpobne.f LSW,g3,.diff # check for equality
+ cmpo 0,LSW # check for null byte
+#if __i960_BIG_ENDIAN__
+ shro 8,g1,g1 # shift mask for next byte
+#else
+ shlo 8,g1,g1 # shift mask for next byte
+#endif
+ subi 1,g2,g2 # decrement character counter
+ bne.t Lcloop # branch if null not reached
+
+ /* words are equal up thru null byte */
+
+Lequal_exit:
+ mov 0,g14 # conform to register conventions
+ lda 0,g0 # return zero, indicating equality
+ bx (g13) # return
+
+Lrett:
+ ret
+
+.diff:
+ mov 0,g14
+ bl Lless_than_exit
+Lgreater_than_exit:
+ cmpibge.f 0,g2,Lequal_exit # branch if difference is beyond max_bytes
+ mov 1,g0
+ bx (g13) # g0 = 1 (src1 > src2)
+Lless_than_exit:
+ cmpibge.f 0,g2,Lequal_exit # branch if difference is beyond max_bytes
+ subi 1,0,g0
+ bx (g13) # g0 = -1 (src1 < src2)
+
+Lsrc2_unaligned:
+ notor g1,3,g14 # first step in computing new src1 ptr
+ ld 4(g3),SRC1 # fetch second word of src2
+ shlo 3,g1,MSW # compute shift count for src2
+#if __i960_BIG_ENDIAN__
+ subo MSW,0,MSW # adjust shift count for big endian
+#endif
+ eshro MSW,g6,SRC2 # extract word of src2
+ cmpo LSW,SRC2 # compare src1 and src2 words
+ lda 4(g3),g1 # set new src2 ptr
+ bne.f Lcloop_setup # first four bytes differ
+ scanbyte 0,LSW # check for null byte
+ subo g14,g0,g0 # second (final) step in computing new src1 ptr
+ addi g14,g2,g2 # compute new max_bytes too
+ lda (g13),g14 # prepare return pointer for Lrestart
+ bno.t Lrestart # if null byte not encountered, continue
+ /* with both string fetches shifted such that*/
+ /* src2 is now word aligned.*/
+ mov 0,g14 # conform to register conventions.
+ lda 0,g0 # return indicator of equality.
+ bx (g13)
strncmp_ca.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: memcpy.S
===================================================================
--- memcpy.S (nonexistent)
+++ memcpy.S (revision 345)
@@ -0,0 +1,160 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "memcpy.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+/*
+ procedure memmove (optimized assembler version for the 80960K series)
+ procedure memcpy (optimized assembler version for the 80960K series)
+
+ dest_addr = memmove (dest_addr, src_addr, len)
+ dest_addr = memcpy (dest_addr, src_addr, len)
+
+ copy len bytes pointed to by src_addr to the space pointed to by
+ dest_addr. Return the original dest_addr.
+
+ These routines will work even if the arrays overlap. The standard
+ requires this of memmove, but memcpy is allowed to fail if overlap
+ is present. Nevertheless, it is implemented the same as memmove
+ because the overhead is trifling.
+
+ Undefined behavior will occur if the end of the source array is in
+ the last two words of the program's allocated memory space. This
+ is so because the routine fetches ahead. Disallowing the fetch
+ ahead would impose a severe performance penalty.
+
+ Strategy:
+
+ Fetch the source array by words and store them by words to the
+ destination array, until there are fewer than three bytes left
+ to copy. Then, using the last word of the source (the one that
+ contains the remaining 0, 1, 2, or 3 bytes to be copied), store
+ a byte at a time until Ldone.
+
+ Tactics:
+
+ 1) Do NOT try to fetch and store the words in a word aligned manner
+ because, in my judgement, the performance degradation experienced due
+ to non-aligned accesses does NOT outweigh the time and complexity added
+ by the preamble and convoluted body that would be necessary to assure
+ alignment. This is supported by the intuition that most source and
+ destination arrays (even more true of most big source arrays) will
+ be word aligned to begin with.
+
+ 2) For non-overlapping arrays, rather than decrementing len to zero,
+ I calculate the address of the byte after the last byte of the
+ destination array, and quit when the destination byte pointer passes
+ that.
+
+ 3) For overlapping arrays where the source starts at a lower address
+ than the destination the move is performed in reverse order.
+
+ 4) Overlapping arrays where the source starts at a higher address
+ are treated like non-overlapping case. Where the two arrays exactly
+ coincide, the routine is short-circuited; no move is Ldone at all.
+ This costs only one cycle.
+*/
+
+ .globl _memcpy, _memmove
+ .globl __memcpy, __memmove
+ .leafproc _memmove, __memmove
+ .leafproc _memcpy, __memcpy
+ .align 2
+_memmove:
+_memcpy:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__memmove:
+__memcpy:
+ mov g14, g13 # preserve return address
+ cmpibge 0,g2,Lexit # exit if number of bytes to move is <= zero.
+ cmpo g0,g1 # does start of dest overlap end of src?
+ addo g2,g1,g3
+ be Lexit # no move necessary if src and dest are same
+ concmpo g3,g0
+ addo g2, g0, g6
+ bg Lbackwards # if overlap, then do move backwards
+
+ ld (g1), g7 # fetch first word of source
+ mov g0, g5
+ b Lwloop_b
+
+Lwloop_a:
+ ld (g1), g7 # fetch ahead next word of source
+ st g4, (g5) # store word to dest
+ addo 4, g5, g5 # post-increment dest pointer
+Lwloop_b: # word copying loop
+ addo 4, g1, g1 # pre-increment src pointer
+ cmpo g3, g1 # is len <= 3 ?
+ mov g7, g4 # keep a copy of the current word
+ bge Lwloop_a # loop if more than 3 bytes to move
+ cmpobe g6, g5, Lexit # quit if no more bytes to move
+
+Lcloop_a: # character copying loop (len < 3)
+ stob g4, (g5) # store a byte
+ shro 8, g4, g4 # position next byte for storing
+ addo 1, g5, g5
+ cmpobne g6, g5, Lcloop_a # quit if no more bytes to move
+
+Lexit:
+ mov 0, g14
+ bx (g13) # g0 = dest array address; g14 = 0
+Lrett:
+ ret
+
+Lwloop.a:
+ subo 4, g6, g6 # pre-decrement dest pointer
+ st g7, (g6) # store word to dest
+Lbackwards: # word copying loop
+ subo 4, g3, g3 # pre-decrement src pointer
+ cmpo g1, g3 # is len <= 3?
+ ld (g3), g7 # fetch ahead next word of source
+ ble Lwloop.a # loop if more than 3 bytes to move
+ cmpobe g6, g0, Lexit # quit if no more bytes to move
+
+Lcloop.a:
+ subo 1, g6, g6
+ rotate 8, g7, g7 # position byte for storing
+ stob g7, (g6) # store byte
+ cmpobne g6, g0, Lcloop.a # quit if no more bytes to move
+ b Lexit
+
+/* end of memmove */
memcpy.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strncpy.S
===================================================================
--- strncpy.S (nonexistent)
+++ strncpy.S (revision 345)
@@ -0,0 +1,154 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "strncpy.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+/*
+ procedure strncpy (optimized assembler version for the 80960K Series)
+
+ dest_addr = strncpy (dest_addr, src_addr, max_bytes)
+
+ copy the null terminated string pointed to by src_addr to the
+ string pointed to by dest_addr. Return the original dest_addr.
+ If the source string is shorter than max_bytes, then null-pad
+ the destination string. If it is longer than max_bytes, the
+ copy stops at max_bytes bytes (and no terminating null appears
+ in the destination string).
+
+ This routine will fail if the source and destination string
+ overlap (in particular, if the end of the source is overlapped
+ by the beginning of the destination). The behavior is undefined.
+ This is acceptable according to the draft C standard.
+
+ Undefined behavior will also occur if the end of the source string
+ (i.e. the terminating null byte) is in the last two words of the
+ program's allocated memory space. This is so because strncpy fetches
+ ahead. Disallowing the fetch ahead would impose a severe performance
+ penalty.
+
+ Strategy:
+
+ Fetch and store the strings by words and go to a character move loop
+ as soon as a null byte is encountered. If max_bytes is exhausted
+ first, then terminate after moving only max_bytes (with the last
+ 0, 1, 2, or 3 bytes moved as single bytes, not as a word).
+ Otherwise, the character move loop moves the last bytes or the
+ source string, and then null-pads the destination string until
+ max_bytes is exhausted.
+
+ Tactics:
+
+ 1) Do NOT try to fetch the words in a word aligned manner because,
+ in my judgement, the performance degradation experienced due to
+ non-aligned accesses does NOT outweigh the time and complexity added
+ by the preamble and convoluted body that would be necessary to assure
+ alignment.
+
+ 2) When the null byte is encountered in a source word, null out the
+ higher-numbered bytes in that word, store the word in the destination,
+ and go to the word null-padder, which may eventually go to the byte
+ null-padder.
+*/
+
+ .globl _strncpy
+ .globl __strncpy
+ .leafproc _strncpy,__strncpy
+ .align 2
+_strncpy:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__strncpy:
+ mov g14, g13
+ cmpibge 0,g2,Lexit # quit early if max_bytes <= 0
+ ld (g1), g7 # fetch the first word of the source
+ mov g0, g5
+ lda 0xff, g3 # byte extraction mask
+ addo g1, g2, g6
+ addo g2, g5, g2
+Lwloop: # word copying loop
+ addo 4, g1, g1 # post-increment source ptr
+ cmpo g6, g1 # max_bytes < 4 ?
+ mov g7, g4 # keep a copy of source word
+ bl Lcloop.a # if less than four bytes to go, go to char loop
+ scanbyte 0, g4 # null byte found?
+ ld (g1), g7 # pre-fetch next word of the source
+ be Lcloop.c # go to char loop if null encountered
+ st g4, (g5) # store current word
+ addo 4, g5, g5 # post-increment destination ptr
+ b Lwloop
+
+Lcloop.a: # character copying loop (max_bytes < 3)
+ and g3, g4, g14 # extract byte
+Lcloop.b:
+ cmpo g2, g5 # max_bytes <= 0 ?
+ shro 8, g4, g4 # position word to extract next byte
+ be Lexit # exit if max_bytes exhausted
+ cmpo 0, g14 # is it null?
+ stob g14, (g5) # store it
+ addo 1, g5, g5 # post-increment dest ptr
+ bne Lcloop.a # branch if we are NOT null padding
+ b Lcloop.b # branch if we are null padding
+
+Lexit:
+ mov 0, g14
+ bx (g13) # g0 = dest string address; g14 = 0
+Lrett:
+ ret
+
+Lcloop.c: # character copying loop
+ and g3, g4, g14 # extract byte
+ cmpo 0, g14 # is it null?
+ mov g3, g7 # save mask
+ shlo 8, g3, g3 # shift mask to next byte position
+ bne Lcloop.c # loop until null found
+ subo 1, g7, g3 # mask to null pad after null byte
+ and g3, g4, g4 # null-out stuff after null byte
+ st g4, (g5) # store last part of src and first of null-pad
+ subo 8,g2,g6 # adjust max_byte counter
+
+Lzwloop:
+ cmpo g5, g6 # max_bytes < 4 ?
+ addo 4, g5, g5
+ bg Lcloop.b # if so, goto character loop
+ st g14, (g5) # store four null bytes
+ b Lzwloop
+
+/* end of strncpy */
strncpy.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: setjmp.S
===================================================================
--- setjmp.S (nonexistent)
+++ setjmp.S (revision 345)
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+/******************************************************************************/
+/* */
+/* setjmp(), longjmp() */
+/* */
+/******************************************************************************/
+ .file "setjmp.as"
+ .text
+ /* .link_pix */
+
+ .align 4
+ .globl _setjmp
+_setjmp:
+ flushreg
+ andnot 0xf,pfp,g1 /* get pfp, mask out return status bits */
+ st g1, 0x58(g0) /* save fp of caller*/
+ /* save globals not killed by the calling convention */
+ stq g8, 0x40(g0) /* save g8-g11*/
+ st g12, 0x50(g0) /* save g12*/
+ st g14, 0x54(g0) /* save g14*/
+ /* save previous frame local registers */
+ ldq (g1), g4 /* get previous frame pfp, sp, rip, r3 */
+ stq g4, (g0) /* save pfp, sp, rip, r3 */
+ ldq 0x10(g1), g4 /* get previous frame r4-r7 */
+ stq g4, 0x10(g0) /* save r4-r7 */
+ ldq 0x20(g1), g4 /* get previous frame r8-r11 */
+ stq g4, 0x20(g0) /* save r8-r11 */
+ ldq 0x30(g1), g4 /* get previous frame r12-r15 */
+ stq g4, 0x30(g0) /* save r12-r15 */
+
+ mov 0, g0 /* return 0 */
+ ret
+
+ /*
+ * fake a return to the place that called the corresponding _setjmp
+ */
+ .align 4
+ .globl _longjmp
+_longjmp:
+ call 0f /* ensure there is at least one stack frame */
+
+0:
+ flushreg /* do this before swapping stack */
+ ld 0x58(g0), pfp /* get fp of caller of setjmp */
+ /* restore local registers
+ * the following code modifies the frame of the function which originally
+ * called setjmp.
+ */
+ ldq (g0), g4 /* get pfp, sp, rip, r3 */
+ stq g4, (pfp) /* restore pfp, sp, rip, r3 */
+ ldq 0x10(g0), g4 /* get r4-r7 */
+ stq g4, 0x10(pfp) /* restore r4-r7 */
+ ldq 0x20(g0), g4 /* get r8-r11 */
+ stq g4, 0x20(pfp) /* restore r8-r11 */
+ ldq 0x30(g0), g4 /* get r12-r15 */
+ stq g4, 0x30(pfp) /* restore r12-r15 */
+ /* restore global registers */
+ ldq 0x40(g0), g8 /* get old g8-g11 values */
+ ld 0x50(g0), g12 /* get old g12 value */
+ ld 0x54(g0), g14 /* get old g14 value */
+
+ mov g1, g0 /* get return value */
+ cmpo g0, 0 /* make sure it is not zero */
+ bne 0f
+ mov 1, g0 /* return 1 by default */
+0:
+ ret /* return to caller of _setjmp */
setjmp.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strlen.S
===================================================================
--- strlen.S (nonexistent)
+++ strlen.S (revision 345)
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "strlen.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure strlen (optimized assembler version for the 80960K series)
+
+ src_addr = strlen (src_addr)
+
+ return the number of bytes that precede the null byte in the
+ string pointed to by src_addr.
+
+ Undefined behavior will occur if the end of the source string (i.e.
+ the terminating null byte) is in the last four words of the program's
+ allocated memory space. This is so because strlen fetches ahead
+ several words. Disallowing the fetch ahead would impose a severe
+ performance penalty.
+
+ Strategy:
+
+ Fetch the source array by long-words and scanbyte the words for the
+ null byte until found. Examine the word in which the null byte is
+ found, to determine its actual position, and return the length.
+
+ Tactics:
+
+ 1) Do NOT try to fetch the words in a word aligned manner because,
+ in my judgement, the performance degradation experienced due to
+ non-aligned accesses does NOT outweigh the time and complexity added
+ by the preamble that would be necessary to assure alignment. This
+ is supported by the intuition that many source strings will be word
+ aligned to begin with.
+*/
+
+ .globl _strlen
+ .globl __strlen
+ .leafproc _strlen, __strlen
+ .align 2
+_strlen:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__strlen:
+
+ mov g14,g13 # preserve return address
+ ldl (g0),g4 # fetch first two words
+ addo 8,g0,g2 # post-increment src word pointer
+ lda 0xff,g3 # byte extraction mask
+
+
+Lsearch_for_word_with_null_byte:
+ scanbyte 0,g4 # check for null byte
+ mov g5,g7 # copy second word
+ bo.f Lsearch_for_null # branch if null found
+ scanbyte 0,g7 # check for null byte
+ ldl (g2),g4 # fetch next pair of word of src
+ addo 8,g2,g2 # post-increment src word pointer
+ bno Lsearch_for_word_with_null_byte # branch if null not found yet
+
+ subo 4,g2,g2 # back up the byte pointer
+ mov g7,g4 # move word with null to search word
+Lsearch_for_null:
+ subo 9,g2,g2 # back up the byte pointer
+Lsearch_for_null.a:
+ and g4,g3,g14 # extract byte
+ cmpo 0,g14 # is it null?
+ addo 1,g2,g2 # bump src byte ptr
+ shro 8,g4,g4 # shift word to position next byte
+ bne Lsearch_for_null.a
+
+Lexit_code:
+ subo g0,g2,g0 # calculate string length
+ bx (g13) # g0 = addr of src; g14 = 0
+Lrett:
+ ret
+
+/* end of strlen */
strlen.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strcmp.S
===================================================================
--- strcmp.S (nonexistent)
+++ strcmp.S (revision 345)
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "strcmp.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+/*
+ procedure strcmp (optimized assembler version for the 80960K Series)
+
+ result = strcmp (src1_addr, src2_addr)
+
+ compare the null terminated string pointed to by src1_addr to
+ the string pointed to by src2_addr. Return 0 iff the strings
+ are equal, -1 if src1_addr is lexicographically less than src2_addr,
+ and 1 if it is lexicographically greater.
+
+ Undefined behavior will occur if the end of either source string
+ (i.e. the terminating null byte) is in the last two words of the
+ program's allocated memory space. This is so because strcmp fetches
+ ahead. Disallowing the fetch ahead would impose a severe performance
+ penalty.
+
+ Strategy:
+
+ Fetch the source strings by words and compare the words until either
+ differing words are found or the null byte is encountered. In either
+ case, move through the word until either the differing byte if found,
+ in which case return -1 or 1 appropriately; or the null byte is
+ encountered, in which case, return zero (equality).
+
+ Tactics:
+
+ 1) Do NOT try to fetch the words in a word aligned manner because,
+ in my judgement, the performance degradation experienced due to
+ non-aligned accesses does NOT outweigh the time and complexity added
+ by the preamble and convoluted body that would be necessary to assure
+ alignment. This is supported by the intuition that many source
+ strings will be word aligned to begin with.
+*/
+
+ .globl _strcmp
+ .globl __strcmp
+ .leafproc _strcmp,__strcmp
+ .align 2
+
+_strcmp:
+#ifndef __PIC
+ lda .Lrett,g14
+#else
+ lda .Lrett-(.+8)(ip),g14
+#endif
+__strcmp:
+ ld (g0), g5 # fetch first word of source_1
+ mov g14,g7 # preserve return address
+ ldconst 0,g14 # conform to register conventions
+ ldconst 0xff,g4 # byte extraction mask
+.Lwloop:
+ addo 4,g0,g0 # post-increment source_1 byte ptr
+ ld (g1), g3 # fetch word of source_2
+ scanbyte 0,g5 # does word have a null byte?
+ mov g5,g2 # save a copy of the source_1 word
+ be .Lcloop # branch if null byte encountered
+ cmpo g2,g3 # are the source words the same?
+ addo 4,g1,g1 # post-increment source_2 byte ptr
+ ld (g0), g5 # fetch ahead next word of source_1
+ be .Lwloop # fall thru if words are unequal
+
+.Lcloop: and g4,g2,g5 # extract and compare individual bytes
+ and g4,g3,g6
+ cmpobne g5,g6,.diff # if they differ, go return 1 or -1
+ cmpo 0,g6 # they are the same. Are they null?
+ shlo 8,g4,g4 # position mask for next extraction
+ bne .Lcloop # loop if null not encountered
+
+ mov 0,g0 # return equality
+ bx (g7)
+.Lrett:
+ ret
+.diff: bl .neg
+ mov 1,g0
+ bx (g7)
+.neg: subi 1,0,g0
+.Lexit:
+ bx (g7)
strcmp.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strlen_ca.S
===================================================================
--- strlen_ca.S (nonexistent)
+++ strlen_ca.S (revision 345)
@@ -0,0 +1,146 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "strle_ca.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure strlen (optimized assembler version for the CA)
+
+ src_addr = strlen (src_addr)
+
+ return the number of bytes that precede the null byte in the
+ string pointed to by src_addr.
+
+ Undefined behavior will occur if the end of the source string (i.e.
+ the terminating null byte) is in the last four words of the program's
+ allocated memory space. This is so because, in several cases, strlen
+ will fetch ahead several words. Disallowing the fetch ahead would
+ impose a severe performance penalty.
+
+ This program handles two cases:
+
+ 1) the argument starts on a word boundary
+ 2) the argument doesn't start on a word boundary
+
+ At the time of this writing, only g0 thru g7 and g13 are available
+ for use in this leafproc; other registers would have to be saved and
+ restored. These nine registers, plus tricky use of g14 are sufficient
+ to implement the routine. The registers are used as follows:
+
+ g0 original src ptr; upon return it is the byte count.
+ g1
+ g2 src ptr
+ g3 mask
+ g4 even word of the source string
+ g5 odd word of the source string
+ g6 copy of even word, shift count
+ g7 copy of odd word
+ g13 return address
+ g14 byte extracted.
+*/
+
+ .globl _strlen
+ .globl __strlen
+ .leafproc _strlen, __strlen
+ .align 2
+_strlen:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__strlen:
+
+ notand g0,3,g2 # extract word addr of start of src
+ lda (g14),g13 # preserve return address
+ and g0,3,g7 # extract byte offset of src
+ ld (g2),g5 # fetch word containing at least first byte
+ shlo 3,g7,g7 # get shift count for making mask for first word
+ lda 4(g2),g2 # post-increment src word pointer
+ subi 1,0,g3 # mask initially all ones
+ chkbit 2,g2 # are we on an even word boundary or an odd one?
+#if __i960_BIG_ENDIAN__
+ shro g7,g3,g3 # get mask for bytes needed from first word
+ notor g5,g3,g7 # set unneeded bytes to all ones
+ lda 0xff000000,g3 # byte extraction mask
+#else
+ shlo g7,g3,g3 # get mask for bytes needed from first word
+ notor g5,g3,g7 # set unneeded bytes to all ones
+ lda 0xff,g3 # byte extraction mask
+#endif
+ bno.f Lodd_word # branch if first word is odd
+ mov g7,g4 # move first word to copy thereof
+ ld (g2),g5 # load odd word
+ lda 4(g2),g2 # post-increment src word pointer
+
+
+Leven_word:
+ scanbyte 0,g4 # check for null byte
+ movl g4,g6 # copy both words
+Lodd_word: # trickery! if we branch here, following branch
+ /* instruction will fall thru, as we want, */
+ /* effecting the load of g4 and g5 only. */
+ ldl (g2),g4 # fetch next pair of word of src
+ bo.f Lsearch_for_null # branch if null found
+ scanbyte 0,g7 # check for null byte
+ lda 8(g2),g2 # post-increment src word pointer
+ bno.t Leven_word # branch if null not found yet
+
+ subo 4,g2,g2 # back up the byte pointer
+ lda (g7),g6 # move odd word to search word
+Lsearch_for_null:
+ subo 9,g2,g2 # back up the byte pointer
+Lsearch_for_null.a:
+ and g6,g3,g14 # extract byte
+ cmpo 0,g14 # is it null?
+ lda 1(g2),g2 # bump src byte ptr
+#if __i960_BIG_ENDIAN__
+ shlo 8,g6,g6 # shift word to position next byte
+#else
+ shro 8,g6,g6 # shift word to position next byte
+#endif
+ bne.t Lsearch_for_null.a
+
+Lexit_code:
+ subo g0,g2,g0 # calculate string length
+ bx (g13) # g0 = addr of src; g14 = 0
+Lrett:
+ ret
+
+/* end of strlen */
strlen_ca.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: memcmp.S
===================================================================
--- memcmp.S (nonexistent)
+++ memcmp.S (revision 345)
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "memcmp.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+/*
+ procedure memcmp (optimized assembler version for the 80960K series)
+
+ result = memcmp (src1_addr, src2_addr, max_bytes)
+
+ compare the byte array pointed to by src1_addr to the byte array
+ pointed to by src2_addr. Return 0 iff the arrays are equal, -1 iff
+ src1_addr is lexicographically less than src2_addr, and 1 iff it is
+ lexicographically greater. Do not compare more than max_bytes bytes.
+
+ Undefined behavior will occur if the end of either source array
+ is in the last two words of the program's allocated memory space.
+ This is so because memcmp fetches ahead. Disallowing the fetch ahead
+ would impose a severe performance penalty.
+
+ Strategy:
+
+ Fetch the source strings by words and compare the words until either
+ a differing word is found or max_bytes is exhausted. In the former
+ case, move through the words to find the differing byte and return
+ plus or minus one, appropriately. In the latter case, return zero
+ (equality).
+
+ Tactics:
+
+ 1) Do NOT try to fetch the words in a word aligned manner because,
+ in my judgement, the performance degradation experienced due to
+ non-aligned accesses does NOT outweigh the time and complexity added
+ by the preamble that would be necessary to assure alignment. This
+ is supported by the intuition that most source arrays (even more
+ true of most big source arrays) will be word aligned to begin with.
+
+ 2) Rather than decrementing max_bytes to zero, I calculate the
+ address of the byte after the last byte of the source_1 array, and
+ quit when the source byte pointer passes that.
+*/
+
+ .globl _memcmp
+ .globl __memcmp
+ .leafproc _memcmp,__memcmp
+ .align 2
+
+_memcmp:
+#ifndef __PIC
+ lda .Lrett,g14
+#else
+ lda .Lrett-(.+8)(ip),g14
+#endif
+__memcmp:
+ mov g14,g13 # preserve return address
+ ldconst 0,g14 # conform to register conventions
+ cmpibge 0,g2,Lequal_exit # quit if max_bytes <= 0
+ addo g0,g2,g2 # calculate byte addr of byte after last in src1
+
+.Lwloop:
+ cmpo g0,g2
+ ld (g0), g5 # fetch word of source_1
+ bge Lequal_exit # quit (equal) if max_bytes exhausted
+ ld (g1), g3 # fetch word of source_2
+ addo 4,g0,g0 # post-increment source_1 byte ptr
+ addo 4,g1,g1 # post-increment source_2 byte ptr
+ cmpobe g5,g3,.Lwloop # branch if source words are equal
+
+ ldconst 0xff,g4 # byte extraction mask
+ subo 4,g0,g0 # back up src1 pointer
+
+.Lcloop: and g4,g5,g7 # extract and compare individual bytes
+ and g4,g3,g6
+ cmpobne g7,g6,.diff # branch if they are different
+ shlo 8,g4,g4 # position mask for next extraction
+ addo 1,g0,g0
+ cmpobl g0,g2,.Lcloop # quit if max_bytes is exhausted
+
+Lequal_exit:
+ mov 0,g0
+ bx (g13)
+.Lrett:
+ ret
+
+.diff: bl .neg # arrays differ at current byte.
+ /* return 1 or -1 appropriately */
+ mov 1,g0
+ bx (g13)
+.neg: subi 1,0,g0
+.Lexit:
+ bx (g13)
+
+/* end or memcmp */
memcmp.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strncat.S
===================================================================
--- strncat.S (nonexistent)
+++ strncat.S (revision 345)
@@ -0,0 +1,155 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "strncat.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+/*
+ procedure strncat (optimized assembler version for the 80960K Series)
+
+ dest_addr = strncat (dest_addr, src_addr, max_bytes)
+
+ append the null terminated string pointed to by src_addr to the null
+ terminated string pointed to by dest_addr. Return the original
+ dest_addr. If the source string is longer than max_bytes, then
+ append only max_bytes bytes, and tack on a null byte on the end.
+
+ This routine will fail if the source and destination string
+ overlap (in particular, if the end of the source is overlapped
+ by the beginning of the destination). The behavior is undefined.
+ This is acceptable according to the draft C standard.
+
+ Undefined behavior will also occur if the end of the source string
+ (i.e. the terminating null byte) is in the last two words of the
+ program's allocated memory space. This is so because strncat fetches
+ ahead. Disallowing the fetch ahead would impose a severe performance
+ penalty.
+
+ Strategy:
+
+ First, skip to the null byte in the destination string. Then
+ fetch the source string by words and store them by words to the
+ destination string, until there are fewer than three bytes left
+ to copy. Then, using the last word of the source (the one that
+ contains the remaining 0, 1, 2, or 3 bytes to be copied), store
+ a byte at a time until Ldone.
+
+ If, before exhausting the max_byte count, the null byte is encountered
+ in the source string, then just copy up thru the null byte.
+
+ Tactics:
+
+ 1) Do NOT try to fetch and store the words in a word aligned manner
+ because, in my judgement, the performance degradation experienced due
+ to non-aligned accesses does NOT outweigh the time and complexity added
+ by the preamble and convoluted body that would be necessary to assure
+ alignment.
+*/
+
+ .globl _strncat
+ .globl __strncat
+ .leafproc _strncat,__strncat
+ .align 2
+_strncat:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__strncat:
+ mov g14,g6
+ cmpibge 0, g2, Lno_operation # Lexit early if max_bytes <= 0
+ mov g0, g5
+Lskip_word_loop:
+ ld (g5), g7 # fetch word of dest string
+ addo 4, g5, g5 # post-increment dest ptr
+ scanbyte 0, g7 # does it contain null byte?
+ bno Lskip_word_loop # if not, loop
+ subo 5, g5, g5 # adjust dest ptr
+ lda 0xff, g3 # byte extraction mask = 0xff;
+Lskip_byte_loop:
+ and g7, g3, g14 # extract byte of last word of dest string
+ cmpo 0, g14 # is it null?
+ addo 1, g5, g5 # adjust dest ptr
+ shro 8, g7, g7 # position next byte for extraction
+ bne Lskip_byte_loop # loop if null not found yet
+
+ ld (g1), g7 # fetch first word of source string
+Lwloop: # word copying loop
+ cmpo 4, g2 # max_bytes < 4 ?
+ addo 4, g1, g1 # post-increment source ptr
+ bge Lcloop.a # branch if less than 4 bytes to move
+ scanbyte 0, g7 # is null byte reached yet?
+ mov g7, g4 # keep a copy of the source word
+ be Lcloop # branch if null byte reached
+ ld (g1), g7 # pre-fetch next word of source
+ subo 4, g2, g2 # reduce max_byte counter
+ st g4, (g5) # store current word
+ addo 4, g5, g5 # post-increment destination ptr
+ b Lwloop
+
+Lcloop.b:
+ addo 1, g5, g5 # post-increment destination ptr
+ shro 8, g7, g7 # position next byte for extraction
+Lcloop: # character copying loop (max_byte > 3)
+ and g3, g7, g4 # extract character
+ cmpo 0, g4 # is it null?
+ stob g4, (g5) # store it
+ bne Lcloop.b # loop if null not encountered yet
+
+ bx (g6) # g0 = dest string address; g14 = 0
+Lrett:
+ ret
+
+Lcloop.c:
+ addo 1, g5, g5 # post-increment destination ptr
+ shro 8, g7, g7 # position next byte for extraction
+Lcloop.a: # character copying loop (max_byte <= 3)
+ cmpdeco 0,g2,g2 # max_byte == 0?
+ and g3, g7, g4 # extract character
+ be Ldone # store null and Lexit if max_byte exhausted
+ cmpo 0, g4 # is it null?
+ stob g4, (g5) # store it
+ bne Lcloop.c # loop if null not encountered yet
+
+Ldone: stob g14, (g5) # store trailing null
+ bx (g6) # g0 = dest string address; g14 = 0
+
+Lno_operation: mov 0, g14 # conform to register conventions
+ bx (g6)
+
+/* end of strncat */
strncat.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strdup.S
===================================================================
--- strdup.S (nonexistent)
+++ strdup.S (revision 345)
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "strdup.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+
+/*
+ * (c) copyright 1989,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure strdup (optimized assembler version: 80960K series, 80960CA)
+
+ dest_addr = strdup (src_addr)
+
+ Allocate memory and copy thereto the string pointed to by src_addr.
+ Return the address of the copy, or null if unable to perform the
+ operation.
+*/
+
+ .text
+ .align 2
+ .globl _strdup
+_strdup:
+ mov g0,r3 # Keep a copy of the original string addr
+ callj _strlen # Determine how much to allocate
+ addo 1,g0,g0 # Add one byte for the null byte at end
+ callj _malloc # Allocate the storage
+ cmpo 0,g0
+ mov r3,g1 # Original string addr is now src for copy
+ bne.t _strcpy # Jump if allocation was successful
+ ret # Return the null ptr otherwise
+
+/* end of strdup */
strdup.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: configure.in
===================================================================
--- configure.in (nonexistent)
+++ configure.in (revision 345)
@@ -0,0 +1,14 @@
+dnl This is the newlib/libc/machine/i960 configure.in file.
+dnl Process this file with autoconf to produce a configure script.
+
+AC_PREREQ(2.59)
+AC_INIT([newlib],[NEWLIB_VERSION])
+AC_CONFIG_SRCDIR([memccpy_ca.S])
+
+dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake.
+AC_CONFIG_AUX_DIR(../../../..)
+
+NEWLIB_CONFIGURE(../../..)
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
configure.in
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strncmp.S
===================================================================
--- strncmp.S (nonexistent)
+++ strncmp.S (revision 345)
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "strncmp.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+/*
+ procedure strncmp (optimized assembler version for the 80960K Series)
+
+ result = strncmp (src1_addr, src2_addr, max_bytes)
+
+ compare the null terminated string pointed to by src1_addr to
+ the string pointed to by src2_addr. Return 0 iff the strings
+ are equal, -1 if src1_addr is lexicographically less than src2_addr,
+ and 1 if it is lexicographically greater. Do not compare more than
+ max_bytes bytes.
+
+ Undefined behavior will occur if the end of either source string
+ (i.e. the terminating null byte) is in the last two words of the
+ program's allocated memory space. This is so because strncmp
+ will fetch ahead. Disallowing the fetch ahead would impose
+ a severe performance penalty.
+
+ Strategy:
+
+ Fetch and compare the strings by words and go to a character
+ comparison loop as soon as a pair of words differ. If the
+ words are equal up through either the exhaustion of max_bytes
+ or the presence of the null byte, return 0 (equality). Otherwise,
+ the character comparator will return -1 or 1 for inequality, or
+ 0 if the differing byte is after the null byte or after the
+ exhaustion of max_bytes.
+
+ Tactics:
+
+ 1) Do NOT try to fetch the words in a word aligned manner because,
+ in my judgement, the performance degradation experienced due to
+ non-aligned accesses does NOT outweigh the time and complexity added
+ by the preamble and convoluted body that would be necessary to assure
+ alignment.
+*/
+
+ .globl _strncmp
+ .globl __strncmp
+ .leafproc _strncmp,__strncmp
+ .align 2
+
+_strncmp:
+#ifndef __PIC
+ lda .Lrett,g14
+#else
+ lda .Lrett-(.+8)(ip),g14
+#endif
+__strncmp:
+ mov g14,g13
+ ldconst 0,g14
+ cmpibge 0,g2,Lequal_exit # Lexit early if max_bytes <= 0
+ addo g2,g0,g2
+.Lwloop:
+ cmpo g0,g2 # are max_bytes exhausted?
+ ld (g0), g5 # fetch word of source_1
+ bge Lequal_exit # Lexit (equality) if max_bytes exhausted
+ ld (g1), g3 # fetch word of source_2
+ addo 4,g0,g0 # post-increment source_1 ptr
+ scanbyte 0,g5 # is a null byte present?
+ addo 4,g1,g1 # post-increment source_1 ptr
+ be .Lcloop.a # perform char comparator if null byte found
+ cmpobe g5,g3,.Lwloop # perform char comparator if words are unequal
+
+.Lcloop.a: subo 4,g0,g0 # adjust max_byte counter
+ ldconst 0xff,g4 # byte extraction mask
+
+.Lcloop: and g4,g5,g7 # compare individual bytes
+ and g4,g3,g6
+ cmpobne g7,g6,.diff # if different, return -1 or 1
+ cmpo 0,g6 # they are equal. are they null?
+ shlo 8,g4,g4 # position mask to extract next byte
+ be Lequal_exit # if they are null, Lexit (equality)
+ addo 1,g0,g0 # is max_bytes exhausted?
+ cmpobl g0,g2,.Lcloop # if not, loop. if so, Lexit (equality)
+
+Lequal_exit:
+ mov 0,g0
+ bx (g13)
+.Lrett:
+ ret
+.diff: bl .neg
+ mov 1,g0
+ bx (g13)
+
+.neg: subi 1,0,g0
+.Lexit:
+ bx (g13)
+
+/* end of strncmp */
strncmp.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strcpy_ca.S
===================================================================
--- strcpy_ca.S (nonexistent)
+++ strcpy_ca.S (revision 345)
@@ -0,0 +1,284 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "strcp_ca.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure strcpy (optimized assembler version for the CA)
+
+ dest_addr = strcpy (dest_addr, src_addr)
+
+ copy the null terminated string pointed to by src_addr to
+ the string space pointed to by dest_addr. Return the original
+ dest_addr.
+
+ This routine will fail if the source and destination string
+ overlap (in particular, if the end of the source is overlapped
+ by the beginning of the destination). The behavior is undefined.
+ This is acceptable according to the draft C standard.
+
+ Undefined behavior will also occur if the end of the source string
+ (i.e. the terminating null byte) is in the last word of the program's
+ allocated memory space. This is so because, in several cases, strcpy
+ will fetch ahead one word. Disallowing the fetch ahead would impose
+ a severe performance penalty.
+
+ This program handles five cases:
+
+ 1) both arguments start on a word boundary
+ 2) neither are word aligned, but they are offset by the same amount
+ 3) source is word aligned, destination is not
+ 4) destination is word aligned, source is not
+ 5) neither is word aligned, and they are offset by differing amounts
+
+ At the time of this writing, only g0 thru g7 and g13 are available
+ for use in this leafproc; other registers would have to be saved and
+ restored. These nine registers, plus tricky use of g14 are sufficient
+ to implement the routine. The registers are used as follows:
+
+ g0 original dest ptr; not modified, so that it may be returned.
+ g1 src ptr; shift count
+ g2 dest ptr; 4 bytes of src
+ g3 src ptr (word aligned)
+ g4 dest ptr (word aligned)
+ g5 0xff -- byte extraction mask
+ g6 lsw of double word for extraction of 4 bytes (little endian)
+ msw of double word for extraction of 4 bytes (big endian)
+ g7 msw of double word for extraction of 4 bytes (little endian)
+ lsw of double word for extraction of 4 bytes (big endian)
+ g13 return address
+ g14 byte extracted. When reaches null byte, which is zero, we will
+ be in conformance with register conventions, and can return to
+ the caller with a clear conscience.
+
+ procedure strcat
+
+ dest_addr = strcat (dest_addr, src_addr)
+
+ Appends the string pointed to by src_addr to the string pointed
+ to by dest_addr. The first character of the source string is
+ copied to the location initially occupied by the trailing null
+ byte of the destination string. Thereafter, characters are copied
+ from the source to the destination up thru the null byte that
+ trails the source string.
+*/
+
+#if __i960_BIG_ENDIAN__
+#define MSW g6
+#define LSW g7
+#else
+#define LSW g6
+#define MSW g7
+#endif
+
+ .globl _strcpy, _strcat
+ .globl __strcpy, __strcat
+ .leafproc _strcpy, __strcpy
+ .leafproc _strcat, __strcat
+ .align 2
+_strcat:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__strcat:
+ notand g0,3,g4 # extract word addr of start of dest
+ lda (g14),g13 # preserve return address
+ and g0,3,LSW # extract byte offset of dest
+ ld (g4),MSW # fetch word containing at least first byte
+ shlo 3,LSW,g14 # get shift count for making mask for first word
+ subi 1,0,LSW # mask initially all ones
+#if __i960_BIG_ENDIAN__
+ shro g14,LSW,LSW # get mask for bytes needed from first word
+ lda 0xff000000,g5 # byte extraction mask
+#else
+ shlo g14,LSW,LSW # get mask for bytes needed from first word
+ lda 0xff,g5 # byte extraction mask
+#endif
+ notor MSW,LSW,MSW # set unneeded bytes to all ones
+Lsearch_for_word_with_null:
+ scanbyte 0,MSW # check for null byte
+ lda 4(g4),g4 # post-increment dest word pointer
+ mov MSW,LSW # keep a copy of current word
+ ld (g4),MSW # fetch next word of dest
+ bno.t Lsearch_for_word_with_null # branch if null not found yet
+ and g5,LSW,g14 # extract byte
+ cmpo 0,g14 # branch if null is first byte of word
+ subo 4,g4,g4 # move dest word ptr back to word with null
+ notand g1,3,g3 # extract word addr of start of src
+ lda (g4),g2 # set dest byte ptr to 1st byte of word w/ null
+ be.f Lcase_14
+Lsearch_for_null:
+#if __i960_BIG_ENDIAN__
+ shro 8,g5,g5 # move mask down to next byte
+#else
+ shlo 8,g5,g5 # move mask up to next byte
+#endif
+ lda 1(g2),g2 # move dest byte ptr to next byte
+ and g5,LSW,g14 # extract byte
+ cmpobne.t 0,g14,Lsearch_for_null # branch if null is not yet found
+ lda 0xff,g5 # byte extraction mask
+ b Lcase_235.a
+
+
+_strcpy:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__strcpy:
+ notand g0,3,g4 # extract word addr of start of dest
+ lda (g14),g13 # preserve return address
+ cmpo g0,g4 # check alignment of dest
+ lda 0xff,g5 # load mask for byte extraction
+ notand g1,3,g3 # extract word addr of start of src
+ bne.f Lcase_235 # branch if dest is NOT word aligned
+
+Lcase_14:
+ cmpo g3,g1 # check alignment of src
+ ld (g3),LSW # fetch word containing at least first byte
+ shlo 3,g1,g1 # compute shift count
+ lda 4(g3),g3 # advance src word addr
+#if __i960_BIG_ENDIAN__
+ lda 0xff,g5 # byte extraction mask
+#endif
+ bne.f Lcase_4 # branch if src is NOT word aligned
+
+Lcase_1: # src and dest are word aligned
+ subo 4,g4,g4 # store is pre-incrementing; back up dest addr
+Lcase_1_wloop: # word copying loop
+ scanbyte 0,LSW # check for null byte in src word
+ lda (LSW),g2 # keep a copy of the src word
+ addo 4,g4,g4 # pre-increment dest addr
+ ld (g3),LSW # pre-fetch next word of src
+ addo 4,g3,g3 # post-increment src addr
+ bo.f Lcase_1_cloop # branch if word contains null byte
+ st g2,(g4) # store word in dest string
+ b Lcase_1_wloop
+
+Lcase_3_cloop:
+Lcase_1_cloop: # character copying loop
+#if __i960_BIG_ENDIAN__
+ rotate 8,g2,g2 # move next byte into position for extraction
+ and g5,g2,g14 # extract next char
+#else
+ and g5,g2,g14 # extract next char
+ shro 8,g2,g2 # move next byte into position for extraction
+#endif
+ cmpo 0,g14 # check for null byte
+ stob g14,(g4) # store the byte in dest
+ lda 1(g4),g4 # post-increment dest byte addr
+ bne.t Lcase_1_cloop # branch if null not reached
+
+Lexit_code:
+ bx (g13) # g0 = addr of dest; g14 = 0
+Lrett:
+ ret
+
+Lcase_3: # src is word aligned; dest is not
+ addo 4,g4,g4 # move dest word ptr to first word boundary
+ mov LSW,MSW # make copy of first word of src
+ lda 0,g1 # initialize shift count to zero
+
+Lcase_25:
+Lcase_3_cloop_at_start: # character copying loop for start of dest str
+#if __i960_BIG_ENDIAN__
+ rotate 8,MSW,MSW # move next byte into position for extraction
+ and g5,MSW,g14 # extract next char
+#else
+ and g5,MSW,g14 # extract next char
+ shro 8,MSW,MSW # move next byte into position for extraction
+#endif
+ cmpo 0,g14 # check for null byte
+ stob g14,(g2) # store the byte in dest
+ lda 1(g2),g2 # post-increment dest ptr
+ be.f Lexit_code # branch if null byte reached
+ cmpo g2,g4 # have we reached word boundary in dest?
+ lda 8(g1),g1 # augment the shift counter
+ bne.t Lcase_3_cloop_at_start
+
+Lcase_4:
+ ld (g3),MSW # fetch msw of operand for double shift
+#if __i960_BIG_ENDIAN__
+ subo g1,0,g1 # Adjust shift count for big endian.
+#endif
+
+Lcase_3_wloop:
+ eshro g1,g6,g2 # extract 4 bytes of src
+ lda 4(g3),g3 # post-increment src word addr
+ scanbyte 0,g2 # check for null byte
+ lda (MSW),LSW # move msw to lsw
+ ld (g3),MSW # pre-fetch msw of operand for double shift
+ bo.f Lcase_3_cloop # branch if word contains null byte
+ st g2,(g4) # store 4 bytes to dest
+ addo 4,g4,g4 # post-increment dest ptr
+ b Lcase_3_wloop
+
+Lcase_235:
+ lda (g0),g2 # copy dest ptr
+Lcase_235.a:
+ cmpo g3,g1 # check alignment of src
+ ld (g3),LSW # fetch word containing at least first byte
+ and 3,g1,g14 # compute shift count
+ lda 4(g3),g3 # advance src word addr
+ shlo 3,g14,g1
+ be.t Lcase_3 # branch if dest is word aligned
+ or g4,g14,g14 # is src earlier in word, later, or sync w/ dst
+ ld (g3),MSW # pre-fetch second half
+ cmpo g2,g14 # < indicates first word of dest has more bytes
+ lda 4(g4),g4 # move dest word addr to first word boundary
+ /* than first word of source. */
+#if __i960_BIG_ENDIAN__
+ subo g1,0,g14 # Adjust shift count for big endian.
+ eshro g14,g6,g14 # extract four bytes
+ bge.f 1f
+#else
+ eshro g1,g6,g14 # extract four bytes
+ bg.f 1f
+#endif
+ mov MSW,LSW
+ lda 4(g3),g3 # move src word addr to second word boundary
+1:
+ mov g14,MSW
+ b Lcase_25
+
+/* end of strcpy */
+
strcpy_ca.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: memset.S
===================================================================
--- memset.S (nonexistent)
+++ memset.S (revision 345)
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "memset.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1989,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure memset (optimized assembler version: 80960K series, 80960CA)
+
+ dest_addr = memset (dest_addr, char, len)
+
+ Fill len bytes pointed to by dest_addr with the value of char.
+ Return the original address of dest_addr.
+
+ This program avoids performing unaligned accesses. It stores
+ from zero to seven bytes, and then stores aligned longwords,
+ and then stores from zero to seven bytes, as necessary to
+ store len bytes starting at dest_addr.
+
+ At the time of this writing, only g0 thru g7 and g13 are available
+ for use in this leafproc; other registers would have to be saved and
+ restored. These nine registers, plus tricky use of g14 are sufficient
+ to implement the routine.
+*/
+
+ .globl _memset
+ .globl __memset
+ .leafproc _memset, __memset
+ .align 2
+_memset:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__memset:
+ cmpo 7,g2 # are there fewer than seven characters to move?
+ lda (g14),g13 # save return address
+ notand g0,7,g3 # test for non-aligned dest_ptr
+ lda 0,g14 # conform to register conventions
+ shlo 24,g1,g4 # prepare word of char
+ lda (g0),g6 # preserve dest_ptr for return
+ shro 8,g4,g5
+ bge.f Lcloop_setup
+ cmpo g3,g0 # is dest longword aligned
+ lda 7(g3),g3 # bump dest_ptr to next longword boundary
+ or g4,g5,g4
+ be.t Lwloop_setup
+
+Lbgn_cloop:
+ cmpo g6,g3 # Have we reached longword boundary?
+ stob g1,(g6) # store one byte of char
+ subo 1,g2,g2 # decrement len
+ lda 1(g6),g6 # increment dest_ptr
+ bne.t Lbgn_cloop # loop if more bytes to store before longword
+
+ cmpobge.f 7,g2,Lcloop
+
+Lwloop_setup:
+ shro 16,g4,g5
+ or g4,g5,g4
+ mov g4,g5 # now have a longword of char
+
+Lwloop:
+ cmpo 15,g2 # Do we have to store more longwords?
+ stl g4,(g6) # Store longword of char
+ subo 8,g2,g2 # Decrement len
+ lda 8(g6),g6 # Increment dest_ptr
+ bl.t Lwloop # loop if more longwords to store
+
+Lcloop_setup:
+ cmpobge.t 0,g2,Lexit
+
+Lcloop:
+ cmpo 1,g2 # Is len exhausted?
+ stob g1,(g6) # Store byte
+ subo 1,g2,g2 # Decrement len
+ lda 1(g6),g6 # Increment dest_ptr
+ bne.t Lcloop # loop if more bytes to store
+
+Lexit:
+ bx (g13)
+Lrett:
+ ret
+
+/* end of memset */
memset.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strcspn.S
===================================================================
--- strcspn.S (nonexistent)
+++ strcspn.S (revision 345)
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "strcspn.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1989,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure strcspn (optimized assembler version: 80960K series, 80960CA)
+
+ len = strcspn (string, charset)
+
+ Return the number of characters in the maximum leading segment
+ of string which consists solely of characters NOT from charset.
+
+ At the time of this writing, only g0 thru g7 and g13 are available
+ for use in this leafproc; other registers would have to be saved and
+ restored. These nine registers, plus tricky use of g14 are sufficient
+ to implement the routine.
+*/
+
+ .globl _strcspn
+ .globl __strcspn
+ .leafproc _strcspn, __strcspn
+ .align 2
+
+_strcspn:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__strcspn:
+ mov g14,g13 # save return address
+ lda (g0),g3 # copy string pointer
+ mov 0,g14 # conform to register conventions
+
+Lnext_char:
+ ldob (g3),g7 # fetch next character of string
+ addo 1,g1,g2 # g2 will be the charset ptr
+ ldob (g1),g6 # fetch first character of charset
+ cmpobe.f 0,g7,Lexit # quit if at end of string
+Lscan_set:
+ cmpo g6,g7 # is charset char same as string char?
+ ldob (g2),g5 # fetch next charset char
+ addo 1,g2,g2 # bump charset ptr
+ be.f Lexit
+ cmpo g6,0 # is charset exhausted?
+ lda (g5),g6
+ bne.t Lscan_set # check next character of charset
+ addo 1,g3,g3 # check next character of string
+ b Lnext_char
+
+Lexit:
+ subo g0,g3,g0 # compute string length
+ bx (g13)
+Lrett:
+ ret
+
+/* end of strcspn */
strcspn.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: memcpy_ca.S
===================================================================
--- memcpy_ca.S (nonexistent)
+++ memcpy_ca.S (revision 345)
@@ -0,0 +1,353 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "memcp_ca.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1992,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure memmove (optimized assembler version for the CA)
+ procedure memcpy (optimized assembler version for the CA)
+
+ dest_addr = memmove (dest_addr, src_addr, len)
+ dest_addr = memcpy (dest_addr, src_addr, len)
+
+ copy len bytes pointed to by src_addr to the space pointed to by
+ dest_addr. Return the original dest_addr.
+
+ Memcpy will fail if the source and destination string overlap
+ (in particular, if the end of the source is overlapped by the
+ beginning of the destination). The behavior is undefined.
+ This is acceptable according to the draft C standard.
+ Memmove will not fail if overlap exists.
+
+ Undefined behavior will also occur if the end of the source string
+ (i.e. the terminating null byte) is in the last word of the program's
+ allocated memory space. This is so because, in several cases, the
+ routine will fetch ahead one word. Disallowing the fetch ahead would
+ impose a severe performance penalty.
+
+ This program handles five cases:
+
+ 1) both arguments start on a word boundary
+ 2) neither are word aligned, but they are offset by the same amount
+ 3) source is word aligned, destination is not
+ 4) destination is word aligned, source is not
+ 5) neither is word aligned, and they are offset by differing amounts
+
+ At the time of this writing, only g0 thru g7 and g13 are available
+ for use in this leafproc; other registers would have to be saved and
+ restored. These nine registers, plus tricky use of g14 are sufficient
+ to implement the routine. The registers are used as follows:
+
+ g0 dest ptr; not modified, so that it may be returned
+ g1 src ptr; shift count
+ g2 len
+ g3 src ptr (word aligned)
+ g4 dest ptr (word aligned)
+ g5 -4 for Lbackwards move
+ Little endian
+ g6 lsw of double word for extraction of 4 bytes
+ g7 msw of double word for extraction of 4 bytes
+ Big endian
+ g6 msw of double word for extraction of 4 bytes
+ g7 lsw of double word for extraction of 4 bytes
+ g13 return address
+ g14 byte extracted.
+*/
+
+#if __i960_BIG_ENDIAN__
+#define MSW g6
+#define LSW g7
+#else
+#define LSW g6
+#define MSW g7
+#endif
+
+ .globl _memmove, _memcpy
+ .globl __memmove, __memcpy
+ .leafproc _memmove, __memmove
+ .leafproc _memcpy, __memcpy
+ .align 2
+_memcpy:
+_memmove:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__memcpy:
+__memmove:
+ cmpibge.f 0,g2,Lquick_exit # Lexit if number of bytes to move is <= zero.
+ cmpo g0,g1 # if dest starts earlier than src ...
+ lda (g14),g13 # preserve return address
+ addo g2,g1,g5 # compute addr of byte after last byte of src
+ be.f Lexit_code # no move necessary if src and dest are same
+ concmpo g5,g0 # ... or if dest starts after end of src ...
+ notand g1,3,g3 # extract word addr of start of src
+ bg.f Lbackwards # ... then drop thru, else do move backwards
+ cmpo g3,g1 # check alignment of src
+ ld (g3),LSW # fetch word containing at least first byte
+ notand g0,3,g4 # extract word addr of start of dest
+ lda 4(g3),g3 # advance src word addr
+ bne.f Lcase_245 # branch if src is NOT word aligned
+
+Lcase_13:
+ cmpo g0,g4 # check alignment of dest
+ subo 4,g4,g4 # store is pre-incrementing; back up dest addr
+ be.t Lcase_1 # branch if dest word aligned
+
+Lcase_3: # src is word aligned; dest is not
+ addo 8,g4,g4 # move dest word ptr to first word boundary
+ lda (g0),g1 # copy dest byte ptr
+ mov LSW,MSW # make copy of first word of src
+ lda 32,g14 # initialize shift count to zero (mod 32)
+
+Lcase_25:
+Lcase_3_cloop_at_start: # character copying loop for start of dest str
+ cmpdeci 0,g2,g2 # is max_bytes exhausted?
+ be.f Lexit_code # Lexit if max_bytes is exhausted
+#if __i960_BIG_ENDIAN__
+ rotate 8,MSW,MSW # move next byte into position for extraction
+ subo 8,g14,g14 # augment the shift counter
+ stob MSW,(g1) # store the byte in dest
+#else
+ addo 8,g14,g14 # augment the shift counter
+ stob MSW,(g1) # store the byte in dest
+ shro 8,MSW,MSW # move next byte into position for extraction
+#endif
+ lda 1(g1),g1 # post-increment dest ptr
+ cmpobne.t g1,g4,Lcase_3_cloop_at_start # branch if reached word boundary
+
+ ld (g3),MSW # fetch msw of operand for double shift
+
+Lcase_4:
+Lcase_3_wloop:
+ cmpi g2,4 # less than four bytes to move?
+ lda 4(g3),g3 # post-increment src word addr
+ eshro g14,g6,g1 # extract 4 bytes of src
+ bl.f Lcase_3_cloop # branch if < four bytes left to move
+ mov MSW,LSW # move msw to lsw
+ ld (g3),MSW # pre-fetch msw of operand for double shift
+ subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved
+ st g1,(g4) # store 4 bytes to dest
+ addo 4,g4,g4 # post-increment dest ptr
+ b Lcase_3_wloop
+
+Lcase_1_wloop: # word copying loop
+ subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved
+ ld (g3),LSW # pre-fetch next word of src
+ addo 4,g3,g3 # post-increment src addr
+ st g1,(g4) # store word in dest string
+Lcase_1: # src and dest are word aligned
+ cmpi g2,4 # check for fewer than four bytes to move
+ addo 4,g4,g4 # pre-increment dest addr
+ lda (LSW),g1 # keep a copy of the src word
+ bge.t Lcase_1_wloop # branch if at least four bytes to copy
+Lcase_3_cloop:
+ cmpibe.f 0,g2,Lexit_code # Lexit if max_bytes is exhausted
+
+Lcase_1_cloop:
+#if __i960_BIG_ENDIAN__
+ rotate 8,g1,g1 # move next byte into position for extraction
+#endif
+ subi 1,g2,g2
+ stob g1,(g4) # store the byte in dest
+ cmpi 0,g2
+ lda 1(g4),g4 # post-increment dest byte addr
+#if ! __i960_BIG_ENDIAN__
+ shro 8,g1,g1 # move next byte into position for extraction
+#endif
+ bne.t Lcase_1_cloop # Lexit if max_bytes is exhausted
+
+Lexit_code:
+ mov 0,g14 # conform to register conventions
+ bx (g13) # g0 = addr of dest; g14 = 0
+Lrett:
+ ret
+
+
+Lcase_245:
+ cmpo g0,g4 # check alignment of dest
+ ld (g3),MSW # pre-fetch second half
+ and 3,g1,g1 # compute shift count
+ shlo 3,g1,g14
+#if __i960_BIG_ENDIAN__
+ subo g14,0,g14 # adjust shift count for big endian
+#endif
+ be.t Lcase_4 # branch if dest is word aligned
+ or g4,g1,g1 # is src earlier in word, later, or sync w/ dst
+ cmpo g0,g1 # < indicates first word of dest has more bytes
+ lda 4(g4),g4 # move dest word addr to first word boundary
+ eshro g14,g6,g5 # extract four bytes
+ lda (g0),g1
+#if __i960_BIG_ENDIAN__
+ bge.f 1f
+#else
+ bg.f 1f
+#endif
+ mov MSW,LSW
+ lda 4(g3),g3 # move src word addr to second word boundary
+1:
+ mov g5,MSW
+ b Lcase_25
+
+
+Lbackwards:
+ notand g5,3,MSW # extract word addr of byte after end of src
+ cmpo MSW,g5 # check alignment of end of src
+ subo 4,MSW,g3 # retreat src word addr
+ addo g2,g0,g1 # compute addr of byte after end of dest
+ notand g1,3,g4 # extract word addr of start of dest
+ bne.f Lcase.245 # branch if src is NOT word aligned
+
+Lcase.13:
+ cmpo g1,g4 # check alignment of dest
+ ld (g3),MSW # fetch last word of src
+ subo 4,g3,g3 # retreat src word addr
+ be.t Lcase.1 # branch if dest word aligned
+
+Lcase.3: # src is word aligned; dest is not
+ mov MSW,LSW # make copy of first word of src
+ lda 32,g14 # initialize shift count to zero (mod 32)
+
+Lcase.25:
+Lcase.3_cloop_at_start: # character copying loop for start of dest str
+ cmpdeci 0,g2,g2 # is max.bytes exhausted?
+ be.f Lexit_code # Lexit if max_bytes is exhausted
+#if ! __i960_BIG_ENDIAN__
+ rotate 8,LSW,LSW # move next byte into position for storing
+#endif
+ lda -1(g1),g1 # pre-decrement dest ptr
+ cmpo g1,g4 # have we reached word boundary in dest yet?
+ stob LSW,(g1) # store the byte in dest
+#if __i960_BIG_ENDIAN__
+ shro 8,LSW,LSW # move next byte into position for storing
+ addo 8,g14,g14 # augment the shift counter
+#else
+ subo 8,g14,g14 # augment the shift counter
+#endif
+ bne.t Lcase.3_cloop_at_start # branch if reached word boundary?
+
+ ld (g3),LSW # fetch lsw of operand for double shift
+
+#if __i960_BIG_ENDIAN__
+ cmpobne 0,g14,Lcase.3_wloop
+Lcase.3_wloop2:
+ cmpi g2,4 # less than four bytes to move?
+ lda -4(g3),g3 # post-decrement src word addr
+ mov MSW,g1 # extract 4 bytes of src
+ lda (LSW),MSW # move lsw to msw
+ subo 4,g4,g4 # pre-decrement dest ptr
+ bl.f Lcase.3_cloop # branch if < four bytes left to move
+ ld (g3),LSW # pre-fetch lsw of operand for double shift
+ subi 4,g2,g2 # decrease max.byte count by the 4 bytes moved
+ st g1,(g4) # store 4 bytes to dest
+ b Lcase.3_wloop2
+#endif
+
+Lcase.4:
+Lcase.3_wloop:
+ cmpi g2,4 # less than four bytes to move?
+ lda -4(g3),g3 # post-decrement src word addr
+ eshro g14,g6,g1 # extract 4 bytes of src
+ lda (LSW),MSW # move lsw to msw
+ subo 4,g4,g4 # pre-decrement dest ptr
+ bl.f Lcase.3_cloop # branch if < four bytes left to move
+ ld (g3),LSW # pre-fetch lsw of operand for double shift
+ subi 4,g2,g2 # decrease max.byte count by the 4 bytes moved
+ st g1,(g4) # store 4 bytes to dest
+ b Lcase.3_wloop
+
+Lcase.1_wloop: # word copying loop
+ subi 4,g2,g2 # decrease max.byte count by the 4 bytes moved
+ ld (g3),MSW # pre-fetch next word of src
+ subo 4,g3,g3 # post-decrement src addr
+ st g1,(g4) # store word in dest string
+Lcase.1: # src and dest are word aligned
+ cmpi g2,4 # check for fewer than four bytes to move
+ subo 4,g4,g4 # pre-decrement dest addr
+ lda (MSW),g1 # keep a copy of the src word
+ bge.t Lcase.1_wloop # branch if at least four bytes to copy
+Lcase.3_cloop:
+ cmpibe.f 0,g2,Lexit_code # Lexit if max_bytes is exhausted
+#if ! __i960_BIG_ENDIAN__
+ rotate 8,g1,g1 # move next byte into position for storing
+#endif
+ lda 4(g4),g4 # pre-decremented dest addr 4 too much
+
+Lcase.1_cloop:
+ subi 1,g4,g4 # pre-decrement dest byte addr
+ cmpi g4,g0 # has dest ptr reached beginning of dest?
+ stob g1,(g4) # store the byte in dest
+#if __i960_BIG_ENDIAN__
+ shro 8,g1,g1 # move next byte into position for storing
+#else
+ rotate 8,g1,g1 # move next byte into position for storing
+#endif
+ bne.t Lcase.1_cloop # Lexit if move is completed
+ b Lexit_code
+
+Lcase.245:
+ cmpo g1,g4 # check alignment of dest
+ ld (MSW),MSW # pre-fetch word with at least last byte
+ and 3,g5,g5 # compute shift count
+ ld (g3),LSW # pre-fetch second to last word
+ shlo 3,g5,g14
+#if __i960_BIG_ENDIAN__
+ subo g14,0,g14 # adjust shift count for big endian
+#endif
+ be.t Lcase.4 # branch if dest is word aligned
+ or g4,g5,g5 # is src earlier in word, later, or sync w/ dst
+ cmpo g1,g5 # < indicates last word of dest has less bytes
+ eshro g14,g6,g5 # extract four bytes
+ bl.t 1f
+ mov LSW,MSW
+#if ! __i960_BIG_ENDIAN__
+ be.t 1f
+#endif
+ subo 4,g3,g3 # move src word addr to second word boundary
+1:
+ mov g5,LSW
+ b Lcase.25
+
+
+Lquick_exit:
+ mov g14,g13
+ b Lexit_code
+
+/* end of memmove */
memcpy_ca.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: memccpy.S
===================================================================
--- memccpy.S (nonexistent)
+++ memccpy.S (revision 345)
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "memccpy.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1989,1993 Intel Corp., all rights reserved
+ */
+/*
+ procedure memccpy (optimized assembler version for the 80960K series)
+
+ dest_addr = memccpy (dest_addr, src_addr, char, len)
+
+ copy len bytes pointed to by src_addr to the space pointed to by
+ dest_addr, stopping if char is copied. If char is copied,
+ return address of byte after char in dest string; else null.
+
+
+ Undefined behavior will occur if the end of the source array is in
+ the last two words of the program's allocated memory space. This
+ is so because the routine fetches ahead. Disallowing the fetch
+ ahead would impose a severe performance penalty.
+
+ Undefined behavior will also occur if the source and destination
+ strings overlap.
+
+ Strategy:
+
+ Fetch the source array by words and store them by words to the
+ destination array, until there are fewer than three bytes left
+ to copy. Then, using the last word of the source (the one that
+ contains the remaining 0, 1, 2, or 3 bytes to be copied), store
+ a byte at a time until Ldone.
+
+ Tactics:
+
+ 1) Do NOT try to fetch and store the words in a word aligned manner
+ because, in my judgement, the performance degradation experienced due
+ to non-aligned accesses does NOT outweigh the time and complexity added
+ by the preamble and convoluted body that would be necessary to assure
+ alignment. This is supported by the intuition that most source and
+ destination arrays (even more true of most big source arrays) will
+ be word aligned to begin with.
+
+ 2) Rather than decrementing len to zero,
+ I calculate the address of the byte after the last byte of the
+ destination array, and quit when the destination byte pointer passes
+ that.
+
+*/
+
+ .globl _memccpy
+ .leafproc _memccpy, __memccpy
+ .align 2
+_memccpy:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__memccpy:
+ mov g14, g13 # preserve return address
+ cmpibge 0,g3,Lexit_char_not_found
+
+ addo g3,g1,g3 # compute beyond end of src
+ ld (g1), g7 # fetch first word of source
+ lda 0xff,g5 # mask for char
+ and g5,g2,g2 # extract only char
+ shlo 8,g2,g6
+ or g2,g6,g6
+ shlo 16,g6,g4
+ or g6,g4,g6 # word of char
+ b Lwloop_b
+
+Lwloop_a:
+ ld (g1), g7 # fetch ahead next word of source
+ st g4, (g0) # store word to dest
+ addo 4, g0, g0 # post-increment dest pointer
+Lwloop_b: # word copying loop
+ addo 4, g1, g1 # pre-increment src pointer
+ cmpo g3, g1 # is len <= 3 ?
+ mov g7, g4 # keep a copy of the current word
+ bl Lcloop_setup # quit word loop if less than 4 bytes
+ scanbyte g6, g7 # check for char
+ bno Lwloop_a # continue word loop if char not found.
+
+Lcloop_setup:
+ subo 4, g1, g1 # back down src pointer
+ cmpobe g1, g3, Lexit_char_not_found
+
+Lcloop_a: # character copying loop (len < 3)
+ and g5,g4,g7 # check the byte against char
+ cmpo g7,g2
+ stob g7,(g0) # store the byte
+ addo 1, g0, g0
+ be Lexit_char_found
+ addo 1,g1,g1
+ cmpo g1,g3
+ shro 8,g4,g4 # position next byte
+ bne Lcloop_a
+
+Lexit_char_not_found:
+ mov 0, g0
+Lexit_char_found:
+ lda 0,g14
+ bx (g13) # g0 = dest array address; g14 = 0
+Lrett:
+ ret
+
+
+/* end of memccpy */
memccpy.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: memccpy_ca.S
===================================================================
--- memccpy_ca.S (nonexistent)
+++ memccpy_ca.S (revision 345)
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "mccpy_ca.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1989,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure memccpy (optimized assembler version for the 80960CA)
+
+ dest_addr = memccpy (dest_addr, src_addr, char, len)
+
+ copy len bytes pointed to by src_addr to the space pointed to by
+ dest_addr, stopping if char is copied. If char is copied,
+ return address of byte after char in dest string; else null.
+
+ Undefined behavior will occur if the end of the source array is in
+ the last two words of the program's allocated memory space. This
+ is so because the routine fetches ahead. Disallowing the fetch
+ ahead would impose a severe performance penalty.
+
+ Undefined behavior will also occur if the source and destination
+ strings overlap.
+
+
+ This program handles five cases:
+
+ 1) both arguments start on a word boundary
+ 2) neither are word aligned, but they are offset by the same amount
+ 3) source is word aligned, destination is not
+ 4) destination is word aligned, source is not
+ 5) neither is word aligned, and they are offset by differing amounts
+
+ At the time of this writing, only g0 thru g7 and g13 are available
+ for use in this leafproc; other registers would have to be saved and
+ restored. These nine registers, plus tricky use of g14 are sufficient
+ to implement the routine.
+*/
+
+#if __i960_BIG_ENDIAN__
+#define MSW g6
+#define LSW g7
+#else
+#define LSW g6
+#define MSW g7
+#endif
+
+ .globl _memccpy
+ .leafproc _memccpy, __memccpy
+ .align 2
+_memccpy:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__memccpy:
+ notand g1,3,g5 # extract word addr of start of src
+ lda (g14),g13 # preserve return address
+ cmpibge.f 0,g3,Lexit_char_not_found # Lexit if # of bytes to move is <= 0
+ cmpo g5,g1 # check alignment of src
+ ld (g5),LSW # fetch word containing at least first byte
+ notand g0,3,g4 # extract word addr of start of dest
+ lda 4(g5),g5 # advance src word addr
+ shlo 24,g2,g2 # reduce char to single byte
+ bne.f Lcase_245 # branch if src is NOT word aligned
+
+Lcase_13:
+ cmpobe.t g0,g4,Lcase_1_setup # branch if dest word aligned
+
+Lcase_3: # src is word aligned; dest is not
+ mov LSW,MSW # make copy of first word of src
+ addo 4,g4,g1 # move dest word ptr to first word boundary
+ lda 32,g14 # initialize shift count to zero
+
+Lcase_25:
+Lcase_3_cloop_at_start: # character copying loop for start of dest str
+ cmpdeci 0,g3,g3 # is max_bytes exhausted?
+#if __i960_BIG_ENDIAN__
+ lda -8(g14),g14 # augment the shift counter
+#else
+ lda 8(g14),g14 # augment the shift counter
+#endif
+ be.f Lexit_char_not_found # Lexit if max_bytes is exhausted
+#if __i960_BIG_ENDIAN__
+ rotate 8,MSW,MSW # move next byte into position for extraction
+#endif
+ shlo 24,MSW,g4
+ stob MSW,(g0) # store the byte in dest
+ cmpo g4,g2
+ lda 1(g0),g0 # post-increment dest ptr
+#if ! __i960_BIG_ENDIAN__
+ shro 8,MSW,MSW # move next byte into position for extraction
+#endif
+ be.f Lexit_char_found # Lexit if char found
+ cmpobne.t g1,g0,Lcase_3_cloop_at_start # branch if reached word boundary
+
+ ld (g5),MSW # fetch msw of operand for double shift
+
+Lcase_4:
+ shro 8,g2,g4
+ or g4,g2,g1
+ shro 16,g1,g4
+ or g4,g1,g4
+
+#if __i960_BIG_ENDIAN__
+ cmpobne 0,g14,Lcase_3_wloop
+
+Lcase_3_wloop2:
+ cmpi g3,4 # less than four bytes to move?
+ lda 4(g5),g5 # post-increment src word addr
+ mov LSW,g1 # extract 4 bytes of src
+ bl.f Lcase_13_cloop_setup # branch if < four bytes left to move
+ scanbyte g4,g1 # branch if word has char in it
+ bo.f Lcase_13_cloop_setup
+ mov MSW,LSW # move msw to lsw
+ ld (g5),MSW # pre-fetch msw of operand for double shift
+ subi 4,g3,g3 # decrease max_byte count by the 4 bytes moved
+ st g1,(g0) # store 4 bytes to dest
+ addo 4,g0,g0 # post-increment dest ptr
+ b Lcase_3_wloop2
+#endif
+
+Lcase_3_wloop:
+ cmpi g3,4 # less than four bytes to move?
+ lda 4(g5),g5 # post-increment src word addr
+ eshro g14,g6,g1 # extract 4 bytes of src
+ bl.f Lcase_13_cloop_setup # branch if < four bytes left to move
+ scanbyte g4,g1 # branch if word has char in it
+ bo.f Lcase_13_cloop_setup
+ mov MSW,LSW # move msw to lsw
+ ld (g5),MSW # pre-fetch msw of operand for double shift
+ subi 4,g3,g3 # decrease max_byte count by the 4 bytes moved
+ st g1,(g0) # store 4 bytes to dest
+ addo 4,g0,g0 # post-increment dest ptr
+ b Lcase_3_wloop
+
+Lcase_1_setup:
+ subo 4,g0,g0 # store is pre-incrementing; back up dest addr
+ shro 8,g2,g4
+ or g4,g2,MSW
+ shro 16,MSW,g4
+ or g4,MSW,g4
+ b Lcase_1
+Lcase_1_wloop: # word copying loop
+ subi 4,g3,g3 # decrease max_byte count by the 4 bytes moved
+ ld (g5),LSW # pre-fetch next word of src
+ addo 4,g5,g5 # post-increment src addr
+ st g1,(g0) # store word in dest string
+Lcase_1: # src and dest are word aligned
+ cmpi g3,4 # check for fewer than four bytes to move
+ addo 4,g0,g0 # pre-increment dest addr
+ lda (LSW),g1 # keep a copy of the src word
+ bl.f Lcase_13_cloop_setup # branch if less than four bytes to copy
+ scanbyte LSW,g4 # branch if char is not in foursome
+ bno.t Lcase_1_wloop
+Lcase_13_cloop_setup:
+ cmpibe.f 0,g3,Lexit_char_not_found # Lexit if max_bytes is exhausted
+
+Lcase_1_cloop:
+#if __i960_BIG_ENDIAN__
+ rotate 8,g1,g1 # move next byte into position for extraction
+#endif
+ shlo 24,g1,g4
+ stob g1,(g0) # store the byte in dest
+ cmpo g4,g2
+ lda 1(g0),g0 # post-increment dest byte addr
+ subi 1,g3,g3
+ be.f Lexit_char_found # Lexit if char reached
+ cmpi 0,g3
+#if ! __i960_BIG_ENDIAN__
+ shro 8,g1,g1 # move next byte into position for extraction
+#endif
+ bne.t Lcase_1_cloop # continue if len not exhausted
+
+Lexit_char_not_found:
+ mov 0,g0
+Lexit_char_found:
+ lda 0,g14
+ bx (g13) # g0 = dest array address; g14 = 0
+Lrett:
+ ret
+
+
+Lcase_245:
+ cmpo g0,g4 # check alignment of dest
+ ld (g5),MSW # pre-fetch second half
+ and 3,g1,g1 # compute shift count
+ shlo 3,g1,g14
+#if __i960_BIG_ENDIAN__
+ subo g14,0,g14 # adjust shift count for big endian
+#endif
+ be.t Lcase_4 # branch if dest is word aligned
+ or g4,g1,g1 # is src earlier in word, later, or sync w/ dst
+ cmpo g0,g1 # < indicates first word of dest has more bytes
+ /* than first word of source. */
+ eshro g14,g6,g4 # extract four bytes
+ lda 4(g0),g1 # move dest word addr to first word boundary
+#if __i960_BIG_ENDIAN__
+ bge.f 1f
+#else
+ bg.f 1f
+#endif
+ mov MSW,LSW
+ lda 4(g5),g5 # move src word addr to second word boundary
+1:
+ notand g1,3,g1
+ mov g4,MSW
+ b Lcase_25
+
+/* end of memccpy */
memccpy_ca.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strchr.S
===================================================================
--- strchr.S (nonexistent)
+++ strchr.S (revision 345)
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "strchr.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure strchr (optimized assembler version for the 80960K series)
+
+ src_addr = strchr (src_addr, char)
+
+ return a pointer to the first byte that contains the indicated
+ byte in the source string. Return null if the byte is not found.
+
+ Undefined behavior will occur if the end of the source string (i.e.
+ the terminating null byte) is in the last two words of the program's
+ allocated memory space. This is so because strchr fetches ahead.
+ Disallowing the fetch ahead would impose a severe performance penalty.
+
+ Strategy:
+
+ Fetch the source string by words and scanbyte the words for the
+ char until either a word with the byte is found or the null byte is
+ encountered. In the former case, move through the word to find the
+ matching byte and return its memory address. In the latter case,
+ return zero (null).
+
+ Tactics:
+
+ 1) Do NOT try to fetch the words in a word aligned manner because,
+ in my judgement, the performance degradation experienced due to
+ non-aligned accesses does NOT outweigh the time and complexity added
+ by the preamble that would be necessary to assure alignment. This
+ is supported by the intuition that most source arrays (even more
+ true of most big source arrays) will be word aligned to begin with.
+*/
+
+ .globl _strchr
+ .globl __strchr
+ .leafproc _strchr, __strchr
+ .align 2
+_strchr:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__strchr:
+
+ ld (g0),g4 # fetch first word
+ lda 0xff,g7 # byte extraction mask
+ and g1,g7,g1 # make char an 8-bit ordinal
+ shlo 8,g1,g2 # broadcast the char to four bytes
+ or g1,g2,g2
+ shlo 16,g2,g5
+ or g2,g5,g3
+ mov g14,g13 # preserve return address
+ addo 4,g0,g0 # post-increment src pointer
+ mov 0,g14 # conform to register linkage standard
+
+Lsearch_for_word_with_char_or_null:
+ mov g4,g5 # copy word
+ scanbyte g3,g5 # check for byte with char
+ ld (g0),g4 # fetch next word of src
+ bo Lsearch_for_char # branch if char found
+ scanbyte 0,g5 # check for null byte
+ addo 4,g0,g0 # post-increment src pointer
+ bno Lsearch_for_word_with_char_or_null # branch if not null
+
+Lnot_found:
+ mov 0,g0 # char not found. Return null
+Lexit_code:
+ bx (g13) # g0 = addr of char in src (or null); g14 = 0
+Lrett:
+ ret
+
+Lsearch_for_char:
+ subo 5,g0,g0 # back up the byte pointer
+Lsearch_for_char.a:
+ and g5,g7,g6 # extract byte
+ cmpo g1,g6 # is it char?
+ addo 1,g0,g0 # bump src byte ptr
+ shro 8,g5,g5 # shift word to position next byte
+ be Lexit_code
+ cmpobne 0,g6,Lsearch_for_char.a # quit if null comes before char
+ b Lnot_found
+
+/* end of strchr */
strchr.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strncpy_ca.S
===================================================================
--- strncpy_ca.S (nonexistent)
+++ strncpy_ca.S (revision 345)
@@ -0,0 +1,289 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "sncpy_ca.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure strncpy (optimized assembler version for the CA)
+
+ dest_addr = strncpy (dest_addr, src_addr, max_bytes)
+
+ copy the null terminated string pointed to by src_addr to
+ the string space pointed to by dest_addr. Return the original
+ dest_addr. If the source string is shorter than max_bytes,
+ then null-pad the destination string.
+
+ This routine will fail if the source and destination string
+ overlap (in particular, if the end of the source is overlapped
+ by the beginning of the destination). The behavior is undefined.
+ This is acceptable according to the draft C standard.
+
+ Undefined behavior will also occur if the end of the source string
+ (i.e. the terminating null byte) is in the last word of the program's
+ allocated memory space. This is so because, in several cases, strcpy
+ will fetch ahead one word. Disallowing the fetch ahead would impose
+ a severe performance penalty.
+
+ This program handles five cases:
+
+ 1) both arguments start on a word boundary
+ 2) neither are word aligned, but they are offset by the same amount
+ 3) source is word aligned, destination is not
+ 4) destination is word aligned, source is not
+ 5) neither is word aligned, and they are offset by differing amounts
+
+ At the time of this writing, only g0 thru g7 and g13 are available
+ for use in this leafproc; other registers would have to be saved and
+ restored. These nine registers, plus tricky use of g14 are sufficient
+ to implement the routine. The registers are used as follows:
+
+ g0 original dest ptr; not modified, so that it may be returned.
+ g1 src ptr; shift count
+ g2 max_bytes
+ g3 src ptr (word aligned)
+ g4 dest ptr (word aligned)
+ g5 0xff -- byte extraction mask
+ Little endian:
+ g6 lsw of double word for extraction of 4 bytes
+ g7 msw of double word for extraction of 4 bytes
+ Big endian:
+ g6 msw of double word for extraction of 4 bytes
+ g7 lsw of double word for extraction of 4 bytes
+ g13 return address
+ g14 byte extracted.
+*/
+
+#if __i960_BIG_ENDIAN__
+#define MSW g6
+#define LSW g7
+#else
+#define LSW g6
+#define MSW g7
+#endif
+
+ .globl _strncpy
+ .globl __strncpy
+ .leafproc _strncpy, __strncpy
+ .align 2
+_strncpy:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__strncpy:
+ notand g1,3,g3 # extract word addr of start of src
+ lda (g14),g13 # preserve return address
+ cmpibge.f 0,g2,Lexit_code # Lexit if number of bytes to move is <= zero.
+ cmpo g3,g1 # check alignment of src
+ ld (g3),LSW # fetch word containing at least first byte
+ notand g0,3,g4 # extract word addr of start of dest
+ lda 4(g3),g3 # advance src word addr
+ bne.f Lcase_245 # branch if src is NOT word aligned
+
+Lcase_13:
+ cmpo g0,g4 # check alignment of dest
+ lda 0xff,g5 # load mask for byte extraction
+ subo 4,g4,g4 # store is pre-incrementing; back up dest addr
+ bne.f Lcase_3 # branch if dest not word aligned
+
+Lcase_1: # src and dest are word aligned
+Lcase_1_wloop: # word copying loop
+ cmpi g2,4 # check for fewer than four bytes to move
+ lda (LSW),g1 # keep a copy of the src word
+ addo 4,g4,g4 # pre-increment dest addr
+ bl.f Lcase_1_cloop.a # branch if fewer than four bytes to copy
+ scanbyte 0,g1 # check for null byte in src word
+ ld (g3),LSW # pre-fetch next word of src
+ subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved
+ bo.f Lcase_1_cloop.c # branch if word contains null byte
+ addo 4,g3,g3 # post-increment src addr
+ st g1,(g4) # store word in dest string
+ b Lcase_1_wloop
+
+Lcase_3_cloop.a:
+Lcase_1_cloop.a: # character copying loop (max_bytes <= 3)
+#if __i960_BIG_ENDIAN__
+ rotate 8,g1,g1 # move next byte into position for extraction
+#endif
+ and g5,g1,g14 # extract next char
+Lcase_1_cloop.b:
+ cmpdeci 0,g2,g2 # is max_bytes exhausted?
+ be.f Lexit_code # Lexit if max_bytes is exhausted
+ cmpo 0,g14 # check for null byte
+ stob g14,(g4) # store the byte in dest
+#if ! __i960_BIG_ENDIAN__
+ shro 8,g1,g1 # move next byte into position for extraction
+#endif
+ lda 1(g4),g4 # post-increment dest byte addr
+ bne.t Lcase_1_cloop.a # branch if null not reached
+ b Lcase_1_cloop.b
+
+Lexit_code:
+ mov 0,g14 # conform to register conventions
+ bx (g13) # g0 = addr of dest; g14 = 0
+Lrett:
+ ret
+
+Lcase_1_cloop.c:
+Lcase_3_cloop.c:
+#if __i960_BIG_ENDIAN__
+ rotate 24,g5,g5 # move mask into position for testing next byte
+#endif
+ and g5,g1,g14 # extract next char
+ cmpo 0,g14 # check for null byte
+#if ! __i960_BIG_ENDIAN__
+ lda (g5),LSW # keep a copy of the current mask
+ shlo 8,g5,g5 # move mask into position for testing next byte
+#endif
+ bne.t Lcase_1_cloop.c # branch if null not reached
+#if __i960_BIG_ENDIAN__
+ subo 1,g5,g5 # null pad.
+ andnot g5,g1,g1 # last bytes to copy, and null pad rest of word
+#else
+ subo 1,LSW,g5 # mask to get last bytes to copy, and null pad
+ and g5,g1,g1 # last bytes to copy, and null pad rest of word
+#endif
+ st g1,(g4)
+
+Lcase_1_zwloop: # zero word loop
+ cmpi g2,4 # check for fewer than four bytes to move
+ addo 4,g4,g4 # pre-increment dest addr
+ bl.f Lcase_1_cloop.b # branch if fewer than four bytes to copy
+ subo 4,g2,g2 # decrease max_byte count by the 4 bytes moved
+ st g14,(g4) # store word in dest string
+ b Lcase_1_zwloop
+
+Lcase_3: # src is word aligned; dest is not
+ addo 8,g4,g4 # move dest word ptr to first word boundary
+ lda (g0),g1 # copy dest byte ptr
+ mov LSW,MSW # make copy of first word of src
+ lda 32,g14 # initialize shift count to zero (mod 32)
+
+Lcase_25:
+Lcase_3_cloop_at_start: # character copying loop for start of dest str
+ cmpdeci 0,g2,g2 # is max_bytes exhausted?
+#if __i960_BIG_ENDIAN__
+ shro 24,MSW,g5 # extract next char
+#else
+ and g5,MSW,g5 # extract next char
+#endif
+ be.f Lexit_code # Lexit if max_bytes is exhausted
+ cmpo 0,g5 # check for null byte
+ stob g5,(g1) # store the byte in dest
+ addo 1,g1,g1 # post-increment dest ptr
+ lda 0xff,g5 # re-initialize byte extraction mask
+ bne.t 1f # drop thru if null byte reached (to pad)
+ movl 0,g6 # blank out remainder of input buffer
+1:
+ cmpo g1,g4 # have we reached word boundary in dest yet?
+#if __i960_BIG_ENDIAN__
+ lda -8(g14),g14 # augment the shift counter
+ rotate 8,MSW,MSW # move next byte into position for extraction
+#else
+ lda 8(g14),g14 # augment the shift counter
+ shro 8,MSW,MSW # move next byte into position for extraction
+#endif
+ bne.t Lcase_3_cloop_at_start # branch if reached word boundary?
+
+ ld (g3),MSW # fetch msw of operand for double shift
+
+Lcase_4:
+
+#if __i960_BIG_ENDIAN__
+ cmpobne 0,g14,Lcase_3_wloop # branch if src is still unaligned.
+
+Lcase_3_wloop2:
+ cmpi g2,4 # less than four bytes to move?
+ lda (LSW),g1 # extract 4 bytes of src
+ lda 4(g3),g3 # post-increment src word addr
+ bl.f Lcase_3_cloop.a # branch if < four bytes left to move
+ scanbyte 0,g1 # check for null byte
+ lda (MSW),LSW # move msw to lsw
+ subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved
+ ld (g3),MSW # pre-fetch msw of operand for double shift
+ bo.f Lcase_3_cloop.c # branch if word contains null byte
+ st g1,(g4) # store 4 bytes to dest
+ addo 4,g4,g4 # post-increment dest ptr
+ b Lcase_3_wloop2
+
+#endif
+
+Lcase_3_wloop:
+ cmpi g2,4 # less than four bytes to move?
+ eshro g14,g6,g1 # extract 4 bytes of src
+ lda 4(g3),g3 # post-increment src word addr
+ bl.f Lcase_3_cloop.a # branch if < four bytes left to move
+ scanbyte 0,g1 # check for null byte
+ lda (MSW),LSW # move msw to lsw
+ subi 4,g2,g2 # decrease max_byte count by the 4 bytes moved
+ ld (g3),MSW # pre-fetch msw of operand for double shift
+ bo.f Lcase_3_cloop.c # branch if word contains null byte
+ st g1,(g4) # store 4 bytes to dest
+ addo 4,g4,g4 # post-increment dest ptr
+ b Lcase_3_wloop
+
+Lcase_245:
+ cmpo g0,g4 # check alignment of dest
+ ld (g3),MSW # pre-fetch second half
+ and 3,g1,g1 # compute shift count
+ lda 0xff,g5 # load mask for byte extraction
+#if __i960_BIG_ENDIAN__
+ subo g1,4,g14 # adjust shift count for big endian.
+ shlo 3,g14,g14
+#else
+ shlo 3,g1,g14
+#endif
+ be.t Lcase_4 # branch if dest is word aligned
+ or g4,g1,g1 # is src earlier in word, later, or sync w/ dst
+ cmpo g0,g1 # < indicates first word of dest has more bytes
+ /* than first word of source. */
+ lda 4(g4),g4 # move dest word addr to first word boundary
+ eshro g14,g6,g5 # extract four bytes
+ lda (g0),g1
+ bg.f 1f
+ mov MSW,LSW
+ lda 4(g3),g3 # move src word addr to second word boundary
+1:
+ mov g5,MSW
+ lda 0xff,g5
+ b Lcase_25
+
+/* end of strncpy */
+
strncpy_ca.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: Makefile.am
===================================================================
--- Makefile.am (nonexistent)
+++ Makefile.am (revision 345)
@@ -0,0 +1,16 @@
+## Process this file with automake to generate Makefile.in
+
+AUTOMAKE_OPTIONS = cygnus
+
+INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
+
+AM_CCASFLAGS = $(INCLUDES)
+
+noinst_LIBRARIES = lib.a
+
+lib_a_SOURCES =
+lib_a_CCASFLAGS=$(AM_CCASFLAGS)
+lib_a_CFLAGS=$(AM_CFLAGS)
+
+ACLOCAL_AMFLAGS = -I ../../.. -I ../../../..
+CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
Makefile.am
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strchr_ca.S
===================================================================
--- strchr_ca.S (nonexistent)
+++ strchr_ca.S (revision 345)
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "strch_ca.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure strchr (optimized assembler version for the CA)
+
+ src_addr = strchr (src_addr, char)
+
+ return a pointer to the first byte that contains the indicated
+ byte in the source string. Return null if the byte is not found.
+
+ Undefined behavior will occur if the end of the source string (i.e.
+ the terminating null byte) is in the last two words of the program's
+ allocated memory space. This is so because, in several cases, strchr
+ will fetch ahead. Disallowing the fetch ahead would impose a severe
+ performance penalty.
+
+ This program handles two cases:
+
+ 1) the argument starts on a word boundary
+ 2) the argument doesn't start on a word boundary
+
+ At the time of this writing, only g0 thru g7 and g13 are available
+ for use in this leafproc; other registers would have to be saved and
+ restored. These nine registers, plus tricky use of g14 are sufficient
+ to implement the routine. The registers are used as follows:
+
+ g0 src ptr; upon return it is a pointer to the matching byte, or null
+ g1 char to seek
+ g2 mask to avoid unimportant bytes in first word
+ g3 char to seek, broadcast to all four bytes
+ g4 word of the source string
+ g5 copy of the word
+ g6 extracted character
+ g7 byte extraction mask
+ g13 return address
+ g14
+*/
+
+ .globl _strchr
+ .globl __strchr
+ .leafproc _strchr, __strchr
+ .align 2
+_strchr:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__strchr:
+
+ lda 0xff,g7 # byte extraction mask
+ and g1,g7,g1 # make char an 8-bit ordinal
+ shlo 8,g1,g2 # broadcast the char to four bytes
+ or g1,g2,g2
+ shlo 16,g2,g4
+ cmpo g1,g7 # is char being sought 0xff?
+ or g4,g2,g3
+ lda (g14),g13 # preserve return address
+ notand g0,3,g5 # extract word addr of start of src
+ lda 0,g14 # conform to register linkage standard
+ and g0,3,g6 # extract byte offset of src
+ ld (g5),g4 # fetch word containing at least first byte
+ shlo 3,g6,g6 # get shift count for making mask for first word
+ lda 4(g5),g0 # post-increment src word pointer
+ subi 1,0,g5 # mask initially all ones
+#if __i960_BIG_ENDIAN__
+ shro g6,g5,g5 # get mask for bytes needed from first word
+#else
+ shlo g6,g5,g5 # get mask for bytes needed from first word
+#endif
+ notor g4,g5,g4 # set unneeded bytes to all ones
+ be.f Lsearch_for_0xff # branch if seeking 0xff
+
+Lsearch_for_word_with_char_or_null:
+ scanbyte g3,g4 # check for byte with char
+ lda (g4),g5 # copy word
+ ld (g0),g4 # fetch next word of src
+ bo.f Lsearch_for_char # branch if null found
+ scanbyte 0,g5 # check for null byte
+ lda 4(g0),g0 # post-increment src word pointer
+ bno.t Lsearch_for_word_with_char_or_null # branch if not null
+
+Lnot_found:
+ mov 0,g0 # char not found. Return null
+Lexit_code:
+ bx (g13) # g0 = addr of char in src (or null); g14 = 0
+Lrett:
+ ret
+
+Lsearch_for_char:
+ subo 5,g0,g0 # back up the byte pointer
+Lsearch_for_char.a:
+#if __i960_BIG_ENDIAN__
+ rotate 8,g5,g5 # shift word to position next byte
+#endif
+ and g5,g7,g6 # extract byte
+ cmpo g1,g6 # is it char?
+ lda 1(g0),g0 # bump src byte ptr
+#if ! __i960_BIG_ENDIAN__
+ shro 8,g5,g5 # shift word to position next byte
+#endif
+ be.f Lexit_code
+ cmpobne.t 0,g6,Lsearch_for_char.a # quit if null comes before char
+ b Lnot_found
+
+Lsearch_for_0xff:
+ lda 0xf0f0f0f0,g2 # make first comparison mask for char=-1 case.
+ or g5,g2,g2
+ and g4,g2,g4 # make unimportant bytes of first word 0x0f
+ b Lsearch_for_word_with_char_or_null
+
+/* end of strchr */
+
strchr_ca.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: memchr.S
===================================================================
--- memchr.S (nonexistent)
+++ memchr.S (revision 345)
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "memchr.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure memchr (optimized assembler version for the 80960K series)
+
+ src_addr = memchr (src_addr, char, max_bytes)
+
+ searching from src_addr for a span of max_bytes bytes, return a
+ pointer to the first byte in the source array that contains the
+ indicated char. Return null if the char is not found.
+
+ Undefined behavior will occur if the last byte of the source array
+ is in the last two words of the program's allocated memory space.
+ This is so because memchr fetches ahead. Disallowing the fetch
+ ahead would impose a severe performance penalty.
+
+ Strategy:
+
+ Fetch the source array by words and scanbyte the words for the
+ char until either a word with the byte is found or max_bytes is
+ exhausted. In the former case, move through the word to find the
+ matching byte and return its memory address. In the latter case,
+ return zero (null).
+
+ Tactics:
+
+ 1) Do NOT try to fetch the words in a word aligned manner because,
+ in my judgement, the performance degradation experienced due to
+ non-aligned accesses does NOT outweigh the time and complexity added
+ by the preamble that would be necessary to assure alignment. This
+ is supported by the intuition that most source arrays (even more
+ true of most big source arrays) will be word aligned to begin with.
+
+ 2) Rather than decrementing max_bytes to zero, I calculate the
+ address of the byte after the last byte of the source array, and
+ quit when the source byte pointer passes that. Refining, actually
+ I calculate the address of the fifth byte after the last byte of
+ the source array, because the source byte pointer is ahead of the
+ actual examination point due to fetch ahead.
+*/
+
+ .globl _memchr
+ .globl __memchr
+ .leafproc _memchr, __memchr
+ .align 2
+_memchr:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+__memchr:
+
+ mov g14,g13 # preserve return address
+ lda 0xff,g7 # byte extraction mask
+ and g1,g7,g1 # make char an 8-bit ordinal
+ mov 0,g14 # conform to register linkage standard
+ cmpibge 0,g2,Lnot_found # do nothing if max_bytes <= 0
+ addo 4,g0,g6 # post-increment src word pointer
+ addo g2,g6,g2 # compute ending address from start and len
+ ld (g0),g4 # fetch first word
+ shlo 8,g1,g3 # broadcast the char to four bytes
+ or g1,g3,g3
+ shlo 16,g3,g5
+ or g3,g5,g3
+
+Lsearch_for_word_with_char:
+ mov g4,g5 # keep a copy of word
+ scanbyte g3,g5 # check for byte with char
+ ld (g6),g4 # fetch next word of src
+ bo Lsearch_for_char # branch if null found
+ addo 4,g6,g6 # post-increment src word pointer
+ cmpobge g2,g6,Lsearch_for_word_with_char # branch if max_bytes > 3
+
+Lnot_found:
+ mov 0,g0 # char not found. Return null
+ bx (g13) # g0 = addr of char in src (or null); g14 = 0
+Lrett:
+ ret
+
+Lsearch_for_char:
+ cmpobe.f g6,g2,Lnot_found # quit if max_bytes exhausted
+ and g5,g7,g0 # extract byte
+ cmpo g1,g0 # is it char?
+ addo 1,g6,g6 # bump src byte ptr
+ shro 8,g5,g5 # shift word to position next byte
+ bne.t Lsearch_for_char
+ subo 5,g6,g0 # back up the byte pointer
+ bx (g13)
+
+/* end of memchr */
memchr.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: strcmp_ca.S
===================================================================
--- strcmp_ca.S (nonexistent)
+++ strcmp_ca.S (revision 345)
@@ -0,0 +1,246 @@
+/*******************************************************************************
+ *
+ * Copyright (c) 1993 Intel Corporation
+ *
+ * Intel hereby grants you permission to copy, modify, and distribute this
+ * software and its documentation. Intel grants this permission provided
+ * that the above copyright notice appears in all copies and that both the
+ * copyright notice and this permission notice appear in supporting
+ * documentation. In addition, Intel grants this permission provided that
+ * you prominently mark as "not part of the original" any modifications
+ * made to this software or documentation, and that the name of Intel
+ * Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software or the documentation without specific,
+ * written prior permission.
+ *
+ * Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR
+ * IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY
+ * OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or
+ * representations regarding the use of, or the results of the use of,
+ * the software and documentation in terms of correctness, accuracy,
+ * reliability, currentness, or otherwise; and you rely on the software,
+ * documentation and results solely at your own risk.
+ *
+ * IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS,
+ * LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES
+ * OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM
+ * PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER.
+ *
+ ******************************************************************************/
+
+ .file "strcm_ca.s"
+#ifdef __PIC
+ .pic
+#endif
+#ifdef __PID
+ .pid
+#endif
+/*
+ * (c) copyright 1988,1993 Intel Corp., all rights reserved
+ */
+
+/*
+ procedure strcmp (optimized assembler version for the CA)
+
+ result = strcmp (src1_addr, src2_addr)
+
+ compare the null terminated string pointed to by src1_addr to
+ the string space pointed to by src2_addr. Return 0 iff the strings
+ are equal, -1 if src1_addr is lexicly less than src2_addr, and 1
+ if it is lexicly greater.
+
+ Undefined behavior will occur if the end of either source string
+ (i.e. the terminating null byte) is in the last word of the program's
+ allocated memory space. This is so because, in several cases, strcmp
+ will fetch ahead one word. Disallowing the fetch ahead would impose
+ a severe performance penalty.
+
+ This program handles five cases:
+
+ 1) both arguments start on a word boundary
+ 2) neither are word aligned, but they are offset by the same amount
+ 3) source1 is word aligned, source2 is not
+ 4) source2 is word aligned, source1 is not
+ 5) neither is word aligned, and they are offset by differing amounts
+
+ At the time of this writing, only g0 thru g7 and g14 are available
+ for use in this leafproc; other registers would have to be saved and
+ restored. These nine registers are sufficient to implement the routine.
+ The registers are used as follows:
+
+ g0 original src1 ptr; return result
+ g1 src2 ptr; 0xff -- byte extraction mask
+ g2 src1 word ptr
+ g3 src2 word ptr
+ Little endian:
+ g4 lsw of src1
+ g5 msw of src1
+ g6 src2 word
+ g7 extracted src1
+ Big endian:
+ g4 msw of src1
+ g5 lsw of src1
+ g6 extracted src1
+ g7 src2 word
+ g13 return address
+ g14 shift count
+*/
+
+#if __i960_BIG_ENDIAN__
+#define MSW g4
+#define LSW g5
+#define SRC1 g6
+#define SRC2 g7
+#else
+#define LSW g4
+#define MSW g5
+#define SRC2 g6
+#define SRC1 g7
+#endif
+
+ .globl _strcmp
+ .globl __strcmp
+ .leafproc _strcmp, __strcmp
+ .align 2
+_strcmp:
+#ifndef __PIC
+ lda Lrett,g14
+#else
+ lda Lrett-(.+8)(ip),g14
+#endif
+
+__strcmp:
+Lrestart:
+ notand g0,3,g2 # extract word addr of start of src1
+ lda (g14),g13 # preserve return address
+#if __i960_BIG_ENDIAN__
+ cmpo g0,g2 # check alignment of src1
+#endif
+ ld (g2),LSW # fetch word with at least first byte of src1
+ notand g1,3,g3 # extract word addr of start of src2
+ ld 4(g2),MSW # fetch second word of src1
+#if __i960_BIG_ENDIAN__
+ bne Lsrc1_unaligned # branch if src1 is unaligned
+ cmpo g3,g1 # check alignment of src2
+ ld (g3),SRC2 # fetch word with at least first byte of src2
+ mov LSW,SRC1 # extract word of src1
+ lda 8(g2),g2 # advance src1 word addr
+ bne.f Lsrc2_unaligned # branch if src2 is NOT word aligned
+
+ /* src2 is word aligned */
+
+Lwloop2: # word comparing loop
+ cmpo SRC2,SRC1 # compare src1 and src2 words
+ lda 0xff000000,g1 # byte extraction mask
+ mov MSW,LSW # move msw of src1 to lsw
+ ld (g2),MSW # pre-fetch next msw of src1
+ addo 4,g2,g2 # post-increment src1 addr
+ lda 4(g3),g3 # pre-increment src2 addr
+ bne.f Lcloop # branch if src1 and src2 unequal
+ scanbyte 0,SRC1 # check for null byte in src1 word
+ ld (g3),SRC2 # pre-fetch next word of src2
+ mov LSW,SRC1 # extract word of src1
+ lda 0,g0 # prepare to return zero, indicating equality
+ bno.t Lwloop2 # branch if null byte not encountered
+
+ /* words were equal and contained null byte */
+
+ mov 0,g14 # conform to register conventions
+ bx (g13) # return
+
+
+Lsrc1_unaligned:
+#endif
+ cmpo g3,g1 # check alignment of src2
+ ld (g3),SRC2 # fetch word with at least first byte of src2
+ shlo 3,g0,g14 # compute shift count for src1
+#if __i960_BIG_ENDIAN__
+ subo g14,0,g14 # 32 - shift count for big endian.
+#endif
+ eshro g14,g4,SRC1 # extract word of src1
+ lda 8(g2),g2 # advance src1 word addr
+ bne.f Lsrc2_unaligned # branch if src2 is NOT word aligned
+
+ /* at least src2 is word aligned */
+
+Lwloop: # word comparing loop
+ cmpo SRC2,SRC1 # compare src1 and src2 words
+#if __i960_BIG_ENDIAN__
+ lda 0xff000000,g1 # byte extraction mask
+#else
+ lda 0xff,g1 # byte extraction mask
+#endif
+ mov MSW,LSW # move msw of src1 to lsw
+ ld (g2),MSW # pre-fetch next msw of src1
+ addo 4,g2,g2 # post-increment src1 addr
+ lda 4(g3),g3 # pre-increment src2 addr
+ bne.f Lcloop # branch if src1 and src2 unequal
+ scanbyte 0,SRC1 # check for null byte in src1 word
+ ld (g3),SRC2 # pre-fetch next word of src2
+ eshro g14,g4,SRC1 # extract word of src1
+ lda 0,g0 # prepare to return zero, indicating equality
+ bno.t Lwloop # branch if null byte not encountered
+
+ /* words were equal and contained null byte */
+
+ mov 0,g14 # conform to register conventions
+ bx (g13) # return
+
+Lcloop_setup: # setup for coming from Lsrc2_unaligned
+ mov LSW,SRC1 # restore extracted src1 word
+#if __i960_BIG_ENDIAN__
+ lda 0xff000000,g1 # byte extraction mask
+#else
+ lda 0xff,g1 # byte extraction mask
+#endif
+
+Lcloop: # character comparing loop
+ and SRC2,g1,g3 # extract next char of src2
+ and SRC1,g1,g0 # extract next char of src1
+ cmpobne.f g0,g3,.diff # check for equality
+ cmpo 0,g0 # check for null byte
+#if __i960_BIG_ENDIAN__
+ shro 8,g1,g1 # shift mask for next byte
+#else
+ shlo 8,g1,g1 # shift mask for next byte
+#endif
+ bne.t Lcloop # branch if null not reached
+
+ /* words are equal up thru null byte */
+
+ mov 0,g14
+ bx (g13) # g0 = 0 (src1 == src2)
+Lrett:
+ ret
+
+.diff:
+ mov 0,g14
+ bl Lless_than_exit
+Lgreater_than_exit:
+ mov 1,g0
+ bx (g13) # g0 = 1 (src1 > src2)
+Lless_than_exit:
+ subi 1,0,g0
+ bx (g13) # g0 = -1 (src1 < src2)
+
+Lsrc2_unaligned:
+ mov SRC1,LSW # retain src1 extracted word
+ ld 4(g3),SRC1 # fetch second word of src2
+ shlo 3,g1,MSW # compute shift count for src2
+#if __i960_BIG_ENDIAN__
+ subo MSW,0,MSW # 32 - shift count for big endian.
+#endif
+ eshro MSW,g6,SRC2 # extract word of src2
+ cmpo LSW,SRC2 # compare src1 and src2 words
+ notor g1,3,MSW # first step in computing new src1 ptr
+ lda 4(g3),g1 # set new src2 ptr
+ bne.f Lcloop_setup # first four bytes differ
+ scanbyte 0,LSW # check for null byte
+ lda (g13),g14 # prepare return pointer for Lrestart
+ subo MSW,g0,g0 # second (final) step in computing new src1 ptr
+ bno.t Lrestart # if null byte not encountered, continue
+ /* with both string fetches shifted such that */
+ /* src2 is now word aligned. */
+ mov 0,g14 # conform to register conventions.
+ lda 0,g0 # return indicator of equality.
+ bx (g13)
strcmp_ca.S
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: aclocal.m4
===================================================================
--- aclocal.m4 (nonexistent)
+++ aclocal.m4 (revision 345)
@@ -0,0 +1,992 @@
+# generated automatically by aclocal 1.11 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
+[m4_warning([this file was generated for autoconf 2.63.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.11], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 10
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well. Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+ [enable], [m4_define([am_maintainer_other], [disable])],
+ [disable], [m4_define([am_maintainer_other], [enable])],
+ [m4_define([am_maintainer_other], [enable])
+ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+ dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+ AC_ARG_ENABLE([maintainer-mode],
+[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ [USE_MAINTAINER_MODE=$enableval],
+ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST([MAINT])dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar /dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([../../../acinclude.m4])