From 1d161fb4375d90718292602f401d48991cc5686c Mon Sep 17 00:00:00 2001 From: John Voltz Date: Thu, 6 Mar 2008 18:52:01 +0000 Subject: toolchain updates --- .../binutils/2.17/500-avr32-atmel.1.3.0.patch | 111130 ++++++++++++++++++ .../2.17/501-avr32-fix-pool-alignment.patch | 26 + .../binutils/2.17/502-avr32-fix-got-refcount.patch | 78 + 3 files changed, 111234 insertions(+) create mode 100644 toolchain/binutils/2.17/500-avr32-atmel.1.3.0.patch create mode 100644 toolchain/binutils/2.17/501-avr32-fix-pool-alignment.patch create mode 100644 toolchain/binutils/2.17/502-avr32-fix-got-refcount.patch (limited to 'toolchain/binutils') diff --git a/toolchain/binutils/2.17/500-avr32-atmel.1.3.0.patch b/toolchain/binutils/2.17/500-avr32-atmel.1.3.0.patch new file mode 100644 index 000000000..28a7f0080 --- /dev/null +++ b/toolchain/binutils/2.17/500-avr32-atmel.1.3.0.patch @@ -0,0 +1,111130 @@ +diff -Nrup binutils-2.17/bfd/aclocal.m4 binutils-2.17.atmel.1.3.0/bfd/aclocal.m4 +--- binutils-2.17/bfd/aclocal.m4 2005-09-30 20:38:50.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/bfd/aclocal.m4 2007-03-26 10:30:51.000000000 +0200 +@@ -1,4 +1,4 @@ +-# generated automatically by aclocal 1.9.5 -*- Autoconf -*- ++# generated automatically by aclocal 1.9.6 -*- Autoconf -*- + + # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, + # 2005 Free Software Foundation, Inc. +@@ -28,7 +28,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api + # Call AM_AUTOMAKE_VERSION so it can be traced. + # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. + AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +- [AM_AUTOMAKE_VERSION([1.9.5])]) ++ [AM_AUTOMAKE_VERSION([1.9.6])]) + + # AM_AUX_DIR_EXPAND -*- Autoconf -*- + +diff -Nrup binutils-2.17/bfd/archures.c binutils-2.17.atmel.1.3.0/bfd/archures.c +--- binutils-2.17/bfd/archures.c 2006-03-06 14:42:03.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/bfd/archures.c 2007-03-26 10:20:30.000000000 +0200 +@@ -334,6 +334,9 @@ DESCRIPTION + .#define bfd_mach_avr3 3 + .#define bfd_mach_avr4 4 + .#define bfd_mach_avr5 5 ++. bfd_arch_avr32, {* Atmel AVR32 *} ++.#define bfd_mach_avr32_ap 7000 ++.#define bfd_mach_avr32_uc 3000 + . bfd_arch_bfin, {* ADI Blackfin *} + .#define bfd_mach_bfin 1 + . bfd_arch_cr16c, {* National Semiconductor CompactRISC. *} +@@ -423,6 +426,7 @@ extern const bfd_arch_info_type bfd_alph + extern const bfd_arch_info_type bfd_arc_arch; + extern const bfd_arch_info_type bfd_arm_arch; + extern const bfd_arch_info_type bfd_avr_arch; ++extern const bfd_arch_info_type bfd_avr32_arch; + extern const bfd_arch_info_type bfd_bfin_arch; + extern const bfd_arch_info_type bfd_cr16c_arch; + extern const bfd_arch_info_type bfd_cris_arch; +@@ -490,6 +494,7 @@ static const bfd_arch_info_type * const + &bfd_arc_arch, + &bfd_arm_arch, + &bfd_avr_arch, ++ &bfd_avr32_arch, + &bfd_bfin_arch, + &bfd_cr16c_arch, + &bfd_cris_arch, +diff -Nrup binutils-2.17/bfd/bfd-in2.h binutils-2.17.atmel.1.3.0/bfd/bfd-in2.h +--- binutils-2.17/bfd/bfd-in2.h 2006-03-26 01:38:42.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/bfd/bfd-in2.h 2007-03-26 10:33:41.000000000 +0200 +@@ -1931,6 +1931,9 @@ enum bfd_architecture + #define bfd_mach_avr3 3 + #define bfd_mach_avr4 4 + #define bfd_mach_avr5 5 ++ bfd_arch_avr32, /* Atmel AVR32 */ ++#define bfd_mach_avr32_ap 7000 ++#define bfd_mach_avr32_uc 3000 + bfd_arch_bfin, /* ADI Blackfin */ + #define bfd_mach_bfin 1 + bfd_arch_cr16c, /* National Semiconductor CompactRISC. */ +@@ -3577,6 +3580,87 @@ instructions */ + instructions */ + BFD_RELOC_AVR_6_ADIW, + ++/* Difference between two labels: L2 - L1. The value of L1 is encoded ++as sym + addend, while the initial difference after assembly is ++inserted into the object file by the assembler. */ ++ BFD_RELOC_AVR32_DIFF32, ++ BFD_RELOC_AVR32_DIFF16, ++ BFD_RELOC_AVR32_DIFF8, ++ ++/* Reference to a symbol through the Global Offset Table. The linker ++will allocate an entry for symbol in the GOT and insert the offset ++of this entry as the relocation value. */ ++ BFD_RELOC_AVR32_GOT32, ++ BFD_RELOC_AVR32_GOT16, ++ BFD_RELOC_AVR32_GOT8, ++ ++/* Normal (non-pc-relative) code relocations. Alignment and signedness ++is indicated by the suffixes. S means signed, U means unsigned. W ++means word-aligned, H means halfword-aligned, neither means ++byte-aligned (no alignment.) SUB5 is the same relocation as 16S. */ ++ BFD_RELOC_AVR32_21S, ++ BFD_RELOC_AVR32_16U, ++ BFD_RELOC_AVR32_16S, ++ BFD_RELOC_AVR32_SUB5, ++ BFD_RELOC_AVR32_8S_EXT, ++ BFD_RELOC_AVR32_8S, ++ ++/* PC-relative relocations are signed if neither 'U' nor 'S' is ++specified. However, we explicitly tack on a 'B' to indicate no ++alignment, to avoid confusion with data relocs. All of these resolve ++to sym + addend - offset, except the one with 'N' (negated) suffix. ++This particular one resolves to offset - sym - addend. */ ++ BFD_RELOC_AVR32_22H_PCREL, ++ BFD_RELOC_AVR32_18W_PCREL, ++ BFD_RELOC_AVR32_16B_PCREL, ++ BFD_RELOC_AVR32_16N_PCREL, ++ BFD_RELOC_AVR32_14UW_PCREL, ++ BFD_RELOC_AVR32_11H_PCREL, ++ BFD_RELOC_AVR32_10UW_PCREL, ++ BFD_RELOC_AVR32_9H_PCREL, ++ BFD_RELOC_AVR32_9UW_PCREL, ++ ++/* Subtract the link-time address of the GOT from (symbol + addend) ++and insert the result. */ ++ BFD_RELOC_AVR32_GOTPC, ++ ++/* Reference to a symbol through the GOT. The linker will allocate an ++entry for symbol in the GOT and insert the offset of this entry as ++the relocation value. addend must be zero. As usual, 'S' means ++signed, 'W' means word-aligned, etc. */ ++ BFD_RELOC_AVR32_GOTCALL, ++ BFD_RELOC_AVR32_LDA_GOT, ++ BFD_RELOC_AVR32_GOT21S, ++ BFD_RELOC_AVR32_GOT18SW, ++ BFD_RELOC_AVR32_GOT16S, ++ ++/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make ++a whole lot of sense. */ ++ BFD_RELOC_AVR32_32_CPENT, ++ ++/* Constant pool references. Some of these relocations are signed, ++others are unsigned. It doesn't really matter, since the constant ++pool always comes after the code that references it. */ ++ BFD_RELOC_AVR32_CPCALL, ++ BFD_RELOC_AVR32_16_CP, ++ BFD_RELOC_AVR32_9W_CP, ++ ++/* sym must be the absolute symbol. The addend specifies the alignment ++order, e.g. if addend is 2, the linker must add padding so that the ++next address is aligned to a 4-byte boundary. */ ++ BFD_RELOC_AVR32_ALIGN, ++ ++/* Code relocations that will never make it to the output file. */ ++ BFD_RELOC_AVR32_14UW, ++ BFD_RELOC_AVR32_10UW, ++ BFD_RELOC_AVR32_10SW, ++ BFD_RELOC_AVR32_STHH_W, ++ BFD_RELOC_AVR32_7UW, ++ BFD_RELOC_AVR32_6S, ++ BFD_RELOC_AVR32_6UW, ++ BFD_RELOC_AVR32_4UH, ++ BFD_RELOC_AVR32_3U, ++ + /* Direct 12 bit. */ + BFD_RELOC_390_12, + +diff -Nrup binutils-2.17/bfd/config.bfd binutils-2.17.atmel.1.3.0/bfd/config.bfd +--- binutils-2.17/bfd/config.bfd 2006-04-05 14:41:57.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/bfd/config.bfd 2007-03-26 10:20:30.000000000 +0200 +@@ -317,6 +317,10 @@ case "${targ}" in + targ_underscore=yes + ;; + ++ avr32-*-*) ++ targ_defvec=bfd_elf32_avr32_vec ++ ;; ++ + c30-*-*aout* | tic30-*-*aout*) + targ_defvec=tic30_aout_vec + ;; +diff -Nrup binutils-2.17/bfd/config.in binutils-2.17.atmel.1.3.0/bfd/config.in +--- binutils-2.17/bfd/config.in 2005-11-03 17:06:10.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/bfd/config.in 2007-03-26 10:30:55.000000000 +0200 +@@ -313,18 +313,18 @@ + /* Define to the version of this package. */ + #undef PACKAGE_VERSION + +-/* The size of a `long', as computed by sizeof. */ ++/* The size of `long', as computed by sizeof. */ + #undef SIZEOF_LONG + +-/* The size of a `long long', as computed by sizeof. */ ++/* The size of `long long', as computed by sizeof. */ + #undef SIZEOF_LONG_LONG + +-/* The size of a `off_t', as computed by sizeof. */ ++/* The size of `off_t', as computed by sizeof. */ + #undef SIZEOF_OFF_T + + /* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be +- automatically deduced at run-time. ++ automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +@@ -368,8 +368,8 @@ + #undef inline + #endif + +-/* Define to `long' if does not define. */ ++/* Define to `long int' if does not define. */ + #undef off_t + +-/* Define to `unsigned' if does not define. */ ++/* Define to `unsigned int' if does not define. */ + #undef size_t +diff -Nrup binutils-2.17/bfd/configure binutils-2.17.atmel.1.3.0/bfd/configure +--- binutils-2.17/bfd/configure 2006-06-23 20:17:03.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/bfd/configure 2007-03-26 10:30:54.000000000 +0200 +@@ -1,25 +1,54 @@ + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +-# Generated by GNU Autoconf 2.59. ++# Generated by GNU Autoconf 2.61. + # +-# Copyright (C) 2003 Free Software Foundation, Inc. ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++# 2002, 2003, 2004, 2005, 2006 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 Bourne compatible ++# 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=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix ++ 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 ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh + fi +-DUALCASE=1; export DUALCASE # for MKS sh + + # Support unset when possible. + if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +@@ -29,8 +58,43 @@ else + 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.) ++as_nl=' ++' ++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 ++ 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. +-$as_unset ENV MAIL MAILPATH ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done + PS1='$ ' + PS2='> ' + PS4='+ ' +@@ -44,18 +108,19 @@ do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else +- $as_unset $as_var ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi + done + + # Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then ++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 ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename + else + as_basename=false +@@ -63,157 +128,388 @@ fi + + + # Name of the executable. +-as_me=`$as_basename "$0" || ++as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + ++# CDPATH. ++$as_unset CDPATH + +-# PATH needs CR, and LINENO needs CR and PATH. +-# 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 + +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh ++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 + +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- 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 ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi + +- ;; +- 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 +- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') ++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=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in ++ case $as_dir in + /*) +- if ("$as_dir/$as_base" -c ' ++ 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=: ++ # Zsh 3.x and 4.x performs 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=: ++ # Zsh 3.x and 4.x performs 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 +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac ++ 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 autoconf@gnu.org about your system, ++ echo including any error possibly output before this ++ echo message ++} ++ ++ ++ ++ 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 before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. ++ # 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 +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | ++ # 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 +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, ++ s/-\n.*// + ' >$as_me.lineno && +- chmod +x $as_me.lineno || ++ chmod +x "$as_me.lineno" || + { 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 sensible to this). +- . ./$as_me.lineno ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" + # Exit status is that of the last command. + exit + } + + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; ++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; then ++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 ++fi + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links ++ 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' +- else +- as_ln_s='ln -s' +- fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +-rm -f conf$$ conf$$.exe conf$$.file ++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=: +@@ -222,7 +518,28 @@ else + as_mkdir_p=false + fi + +-as_executable_p="test -f" ++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'" +@@ -231,39 +548,27 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P + as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH + ++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` + +-exec 6>&1 +- + # + # 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} + +-# Maximum number of lines to put in a shell here document. +-# This variable seems obsolete. It should probably be removed, and +-# only ac_max_sed_lines should be used. +-: ${ac_max_here_lines=38} +- + # Identity of this package. + PACKAGE_NAME= + PACKAGE_TARNAME= +@@ -275,42 +580,199 @@ ac_unique_file="libbfd.c" + # Factoring default headers for most tests. + ac_includes_default="\ + #include +-#if HAVE_SYS_TYPES_H ++#ifdef HAVE_SYS_TYPES_H + # include + #endif +-#if HAVE_SYS_STAT_H ++#ifdef HAVE_SYS_STAT_H + # include + #endif +-#if STDC_HEADERS ++#ifdef STDC_HEADERS + # include + # include + #else +-# if HAVE_STDLIB_H ++# ifdef HAVE_STDLIB_H + # include + # endif + #endif +-#if HAVE_STRING_H +-# if !STDC_HEADERS && HAVE_MEMORY_H ++#ifdef HAVE_STRING_H ++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H + # include + # endif + # include + #endif +-#if HAVE_STRINGS_H ++#ifdef HAVE_STRINGS_H + # include + #endif +-#if HAVE_INTTYPES_H ++#ifdef HAVE_INTTYPES_H + # include +-#else +-# if HAVE_STDINT_H +-# include +-# endif + #endif +-#if HAVE_UNISTD_H ++#ifdef HAVE_STDINT_H ++# include ++#endif ++#ifdef HAVE_UNISTD_H + # include + #endif" + +-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE AR ac_ct_AR RANLIB ac_ct_RANLIB LN_S LIBTOOL WARN_CFLAGS NO_WERROR MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT INSTALL_LIBBFD_TRUE INSTALL_LIBBFD_FALSE host_noncanonical target_noncanonical bfdlibdir bfdincludedir CPP EGREP ALLOCA USE_NLS MSGFMT GMSGFMT XGETTEXT USE_INCLUDED_LIBINTL CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLDEPS INTLLIBS INTLOBJS POFILES POSUB INCLUDE_LOCALE_H GT_NO GT_YES MKINSTALLDIRS l HDEFINES BFD_HOST_64BIT_LONG BFD_HOST_LONG_LONG BFD_HOST_64_BIT_DEFINED BFD_HOST_64_BIT BFD_HOST_U_64_BIT CC_FOR_BUILD EXEEXT_FOR_BUILD COREFILE COREFLAG WIN32LDFLAGS WIN32LIBADD TDEFINES wordsize bfd_libs all_backends bfd_backends bfd_machines bfd_default_target_size bfd_file_ptr bfd_ufile_ptr tdefaults datarootdir docdir htmldir LIBOBJS LTLIBOBJS' ++ac_subst_vars='SHELL ++PATH_SEPARATOR ++PACKAGE_NAME ++PACKAGE_TARNAME ++PACKAGE_VERSION ++PACKAGE_STRING ++PACKAGE_BUGREPORT ++exec_prefix ++prefix ++program_transform_name ++bindir ++sbindir ++libexecdir ++datarootdir ++datadir ++sysconfdir ++sharedstatedir ++localstatedir ++includedir ++oldincludedir ++docdir ++infodir ++htmldir ++dvidir ++pdfdir ++psdir ++libdir ++localedir ++mandir ++DEFS ++ECHO_C ++ECHO_N ++ECHO_T ++LIBS ++build_alias ++host_alias ++target_alias ++build ++build_cpu ++build_vendor ++build_os ++host ++host_cpu ++host_vendor ++host_os ++target ++target_cpu ++target_vendor ++target_os ++CC ++CFLAGS ++LDFLAGS ++CPPFLAGS ++ac_ct_CC ++EXEEXT ++OBJEXT ++INSTALL_PROGRAM ++INSTALL_SCRIPT ++INSTALL_DATA ++CYGPATH_W ++PACKAGE ++VERSION ++ACLOCAL ++AUTOCONF ++AUTOMAKE ++AUTOHEADER ++MAKEINFO ++install_sh ++STRIP ++INSTALL_STRIP_PROGRAM ++mkdir_p ++AWK ++SET_MAKE ++am__leading_dot ++AMTAR ++am__tar ++am__untar ++DEPDIR ++am__include ++am__quote ++AMDEP_TRUE ++AMDEP_FALSE ++AMDEPBACKSLASH ++CCDEPMODE ++am__fastdepCC_TRUE ++am__fastdepCC_FALSE ++AR ++RANLIB ++LN_S ++LIBTOOL ++WARN_CFLAGS ++NO_WERROR ++MAINTAINER_MODE_TRUE ++MAINTAINER_MODE_FALSE ++MAINT ++INSTALL_LIBBFD_TRUE ++INSTALL_LIBBFD_FALSE ++host_noncanonical ++target_noncanonical ++bfdlibdir ++bfdincludedir ++CPP ++GREP ++EGREP ++ALLOCA ++USE_NLS ++MSGFMT ++GMSGFMT ++XGETTEXT ++USE_INCLUDED_LIBINTL ++CATALOGS ++CATOBJEXT ++DATADIRNAME ++GMOFILES ++INSTOBJEXT ++INTLDEPS ++INTLLIBS ++INTLOBJS ++POFILES ++POSUB ++INCLUDE_LOCALE_H ++GT_NO ++GT_YES ++MKINSTALLDIRS ++l ++HDEFINES ++BFD_HOST_64BIT_LONG ++BFD_HOST_LONG_LONG ++BFD_HOST_64_BIT_DEFINED ++BFD_HOST_64_BIT ++BFD_HOST_U_64_BIT ++CC_FOR_BUILD ++EXEEXT_FOR_BUILD ++COREFILE ++COREFLAG ++WIN32LDFLAGS ++WIN32LIBADD ++TDEFINES ++wordsize ++bfd_libs ++all_backends ++bfd_backends ++bfd_machines ++bfd_default_target_size ++bfd_file_ptr ++bfd_ufile_ptr ++tdefaults ++LIBOBJS ++LTLIBOBJS' + ac_subst_files='' ++ ac_precious_vars='build_alias ++host_alias ++target_alias ++CC ++CFLAGS ++LDFLAGS ++LIBS ++CPPFLAGS ++CPP' ++ + + # Initialize some variables set by options. + ac_init_help= +@@ -337,34 +799,48 @@ x_libraries=NONE + # 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' +-datadir='${prefix}/share' ++datarootdir='${prefix}/share' ++datadir='${datarootdir}' + sysconfdir='${prefix}/etc' + sharedstatedir='${prefix}/com' + localstatedir='${prefix}/var' +-libdir='${exec_prefix}/lib' + includedir='${prefix}/include' + oldincludedir='/usr/include' +-infodir='${prefix}/info' +-mandir='${prefix}/man' ++docdir='${datarootdir}/doc/${PACKAGE}' ++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" ++ eval $ac_prev=\$ac_option + ac_prev= + continue + fi + +- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` ++ 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_option in ++ case $ac_dashdash$ac_option in ++ --) ++ ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; +@@ -386,33 +862,45 @@ do + --config-cache | -C) + cache_file=config.cache ;; + +- -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ++ -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; +- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ +- | --da=*) ++ -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_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- eval "enable_$ac_feature=no" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=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_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "enable_$ac_feature='$ac_optarg'" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ +@@ -439,6 +927,12 @@ do + -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 ;; +@@ -463,13 +957,16 @@ do + | --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 | --local | --loca | --loc | --lo) ++ | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ +- | --localstate=* | --localstat=* | --localsta=* | --localst=* \ +- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) ++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) +@@ -534,6 +1031,16 @@ do + | --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 ;; +@@ -586,24 +1093,20 @@ do + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package| sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "with_$ac_package='$ac_optarg'" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package | sed 's/-/_/g'` +- eval "with_$ac_package=no" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. +@@ -634,8 +1137,7 @@ Try \`$0 --help' for more information." + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } +- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` +- eval "$ac_envvar='$ac_optarg'" ++ eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) +@@ -655,27 +1157,19 @@ if test -n "$ac_prev"; then + { (exit 1); exit 1; }; } + fi + +-# Be sure to have absolute paths. +-for ac_var in exec_prefix prefix +-do +- eval ac_val=$`echo $ac_var` +- case $ac_val in +- [\\/$]* | ?:[\\/]* | NONE | '' ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# Be sure to have absolute paths. +-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ +- localstatedir libdir includedir oldincludedir infodir mandir ++# Be sure to have absolute directory names. ++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=$`echo $ac_var` ++ eval ac_val=\$$ac_var + case $ac_val in +- [\\/$]* | ?:[\\/]* ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; ++ [\\/$]* | ?:[\\/]* ) continue;; ++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac ++ { 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' +@@ -702,74 +1196,76 @@ test -n "$host_alias" && ac_tool_prefix= + 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 .` || ++ { echo "$as_me: error: Working directory cannot be determined" >&2 ++ { (exit 1); exit 1; }; } ++test "X$ac_ls_di" = "X$ac_pwd_ls_di" || ++ { 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 its parent. +- ac_confdir=`(dirname "$0") 2>/dev/null || ++ # Try the directory containing this script, then the parent directory. ++ ac_confdir=`$as_dirname -- "$0" || + $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X"$0" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ 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 ++ if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi + else + ac_srcdir_defaulted=no + fi +-if test ! -r $srcdir/$ac_unique_file; then +- if test "$ac_srcdir_defaulted" = yes; then +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 +- { (exit 1); exit 1; }; } +- else +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +- { (exit 1); exit 1; }; } +- fi +-fi +-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || +- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +- { (exit 1); exit 1; }; } +-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +-ac_env_build_alias_set=${build_alias+set} +-ac_env_build_alias_value=$build_alias +-ac_cv_env_build_alias_set=${build_alias+set} +-ac_cv_env_build_alias_value=$build_alias +-ac_env_host_alias_set=${host_alias+set} +-ac_env_host_alias_value=$host_alias +-ac_cv_env_host_alias_set=${host_alias+set} +-ac_cv_env_host_alias_value=$host_alias +-ac_env_target_alias_set=${target_alias+set} +-ac_env_target_alias_value=$target_alias +-ac_cv_env_target_alias_set=${target_alias+set} +-ac_cv_env_target_alias_value=$target_alias +-ac_env_CC_set=${CC+set} +-ac_env_CC_value=$CC +-ac_cv_env_CC_set=${CC+set} +-ac_cv_env_CC_value=$CC +-ac_env_CFLAGS_set=${CFLAGS+set} +-ac_env_CFLAGS_value=$CFLAGS +-ac_cv_env_CFLAGS_set=${CFLAGS+set} +-ac_cv_env_CFLAGS_value=$CFLAGS +-ac_env_LDFLAGS_set=${LDFLAGS+set} +-ac_env_LDFLAGS_value=$LDFLAGS +-ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +-ac_cv_env_LDFLAGS_value=$LDFLAGS +-ac_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_env_CPPFLAGS_value=$CPPFLAGS +-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_cv_env_CPPFLAGS_value=$CPPFLAGS +-ac_env_CPP_set=${CPP+set} +-ac_env_CPP_value=$CPP +-ac_cv_env_CPP_set=${CPP+set} +-ac_cv_env_CPP_value=$CPP ++if test ! -r "$srcdir/$ac_unique_file"; then ++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." ++ { 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" || { 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. +@@ -798,9 +1294,6 @@ Configuration: + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +-_ACEOF +- +- cat <<_ACEOF + Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] +@@ -818,15 +1311,22 @@ Fine tuning of the installation director + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] +- --datadir=DIR read-only architecture-independent data [PREFIX/share] + --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] +- --infodir=DIR info documentation [PREFIX/info] +- --mandir=DIR man documentation [PREFIX/man] ++ --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/PACKAGE] ++ --htmldir=DIR html documentation [DOCDIR] ++ --dvidir=DIR dvi documentation [DOCDIR] ++ --pdfdir=DIR pdf documentation [DOCDIR] ++ --psdir=DIR ps documentation [DOCDIR] + _ACEOF + + cat <<\_ACEOF +@@ -880,126 +1380,95 @@ Some influential environment variables: + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory +- CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have +- headers in a nonstandard directory ++ LIBS libraries to pass to the linker, e.g. -l ++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if ++ you have headers in a nonstandard directory + CPP C preprocessor + + 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. +- ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue +- test -d $ac_dir || continue ++ test -d "$ac_dir" || continue + ac_builddir=. + +-if test "$ac_dir" != .; then ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`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 +- .) # No --srcdir option. We are building in place. ++ .) # We are building in place. + ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. ++ 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 ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +- +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac +- +- cd $ac_dir +- # Check for guested configure; otherwise get Cygnus style 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 +- elif test -f $ac_srcdir/configure.ac || +- test -f $ac_srcdir/configure.in; then +- echo +- $ac_configure --help ++ 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 + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 +- fi +- cd $ac_popdir ++ fi || ac_status=$? ++ cd "$ac_pwd" || { ac_status=$?; break; } + done + fi + +-test -n "$ac_init_help" && exit 0 ++test -n "$ac_init_help" && exit $ac_status + if $ac_init_version; then + cat <<\_ACEOF ++configure ++generated by GNU Autoconf 2.61 + +-Copyright (C) 2003 Free Software Foundation, Inc. ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++2002, 2003, 2004, 2005, 2006 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 0 ++ exit + fi +-exec 5>config.log +-cat >&5 <<_ACEOF ++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 $as_me, which was +-generated by GNU Autoconf 2.59. Invocation command line was ++generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + + _ACEOF ++exec 5>>config.log + { + cat <<_ASUNAME + ## --------- ## +@@ -1018,7 +1487,7 @@ uname -v = `(uname -v) 2>/dev/null || ec + /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` +-hostinfo = `(hostinfo) 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` +@@ -1032,6 +1501,7 @@ do + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" + done ++IFS=$as_save_IFS + + } >&5 + +@@ -1053,7 +1523,6 @@ _ACEOF + ac_configure_args= + ac_configure_args0= + ac_configure_args1= +-ac_sep= + ac_must_keep_next=false + for ac_pass in 1 2 + do +@@ -1064,7 +1533,7 @@ do + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ++ *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in +@@ -1086,9 +1555,7 @@ do + -* ) ac_must_keep_next=true ;; + esac + fi +- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" +- # Get rid of the leading space. +- ac_sep=" " ++ ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +@@ -1099,8 +1566,8 @@ $as_unset ac_configure_args1 || test "${ + # 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: Be sure not to use single quotes in there, as some shells, +-# such as our DU 5.0 friend, will then `close' the trap. ++# 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. + { +@@ -1113,20 +1580,34 @@ trap 'exit_status=$? + _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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done + (set) 2>&1 | +- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ 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" +- ;; ++ "s/'\''/'\''\\\\'\'''\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ++ ;; #( + *) +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} ++ esac | ++ sort ++) + echo + + cat <<\_ASBOX +@@ -1137,22 +1618,28 @@ _ASBOX + echo + for ac_var in $ac_subst_vars + do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +-## ------------- ## +-## Output files. ## +-## ------------- ## ++## ------------------- ## ++## File substitutions. ## ++## ------------------- ## + _ASBOX + echo + for ac_var in $ac_subst_files + do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi +@@ -1164,26 +1651,24 @@ _ASBOX + ## ----------- ## + _ASBOX + echo +- sed "/^$/d" confdefs.h | sort ++ cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 +- rm -f core *.core && +- rm -rf conftest* confdefs* conf$$* $ac_clean_files && ++ rm -f core *.core core.conftest.* && ++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +- ' 0 ++' 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 -rf conftest* confdefs.h +-# AIX cpp loses on an empty file, so make sure it contains at least a newline. +-echo >confdefs.h ++rm -f -r conftest* confdefs.h + + # Predefined preprocessor variables. + +@@ -1214,14 +1699,17 @@ _ACEOF + + # Let the site file select an alternate cache file if it wants to. + # Prefer explicitly selected file to automatically selected ones. +-if test -z "$CONFIG_SITE"; then +- if test "x$prefix" != xNONE; then +- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" +- else +- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +- fi ++if test -n "$CONFIG_SITE"; then ++ set x "$CONFIG_SITE" ++elif test "x$prefix" != xNONE; then ++ set x "$prefix/share/config.site" "$prefix/etc/config.site" ++else ++ set x "$ac_default_prefix/share/config.site" \ ++ "$ac_default_prefix/etc/config.site" + fi +-for ac_site_file in $CONFIG_SITE; do ++shift ++for ac_site_file ++do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 + echo "$as_me: loading site script $ac_site_file" >&6;} +@@ -1237,8 +1725,8 @@ if test -r "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 + echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; + esac + fi + else +@@ -1250,12 +1738,11 @@ fi + # Check that the precious variables saved in the cache have kept the same + # value. + ac_cache_corrupted=false +-for ac_var in `(set) 2>&1 | +- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do ++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" ++ 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,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +@@ -1280,8 +1767,7 @@ echo "$as_me: current value: $ac_new_v + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in +@@ -1298,12 +1784,6 @@ echo "$as_me: error: run \`make distclea + { (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 +- + + + +@@ -1320,109 +1800,164 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ++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 $srcdir/.. $srcdir/../..; do +- if test -f $ac_dir/install-sh; then ++for ac_dir in "$srcdir" "$srcdir/.." "$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 ++ 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 ++ 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 +- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} ++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 ++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } + fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. ++ ++# 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. +-$ac_config_sub sun4 >/dev/null 2>&1 || +- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +-echo "$as_me: error: cannot run $ac_config_sub" >&2;} ++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || ++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 ++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +-echo "$as_me:$LINENO: checking build system type" >&5 +-echo $ECHO_N "checking build system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking build system type" >&5 ++echo $ECHO_N "checking build system type... $ECHO_C" >&6; } + if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_build_alias=$build_alias +-test -z "$ac_cv_build_alias" && +- ac_cv_build_alias=`$ac_config_guess` +-test -z "$ac_cv_build_alias" && ++ 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 && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 + echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} ++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + + fi +-echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +-echo "${ECHO_T}$ac_cv_build" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 ++echo "${ECHO_T}$ac_cv_build" >&6; } ++case $ac_cv_build in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 ++echo "$as_me: error: invalid value of canonical build" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + build=$ac_cv_build +-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++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 + + +-echo "$as_me:$LINENO: checking host system type" >&5 +-echo $ECHO_N "checking host system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking host system type" >&5 ++echo $ECHO_N "checking host system type... $ECHO_C" >&6; } + if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_host_alias=$host_alias +-test -z "$ac_cv_host_alias" && +- ac_cv_host_alias=$ac_cv_build_alias +-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} ++ 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` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } ++fi + + fi +-echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +-echo "${ECHO_T}$ac_cv_host" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 ++echo "${ECHO_T}$ac_cv_host" >&6; } ++case $ac_cv_host in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 ++echo "$as_me: error: invalid value of canonical host" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + host=$ac_cv_host +-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++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 + + +-echo "$as_me:$LINENO: checking target system type" >&5 +-echo $ECHO_N "checking target system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking target system type" >&5 ++echo $ECHO_N "checking target system type... $ECHO_C" >&6; } + if test "${ac_cv_target+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_target_alias=$target_alias +-test "x$ac_cv_target_alias" = "x" && +- ac_cv_target_alias=$ac_cv_host_alias +-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} ++ if test "x$target_alias" = x; then ++ ac_cv_target=$ac_cv_host ++else ++ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} + { (exit 1); exit 1; }; } ++fi + + fi +-echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +-echo "${ECHO_T}$ac_cv_target" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5 ++echo "${ECHO_T}$ac_cv_target" >&6; } ++case $ac_cv_target in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 ++echo "$as_me: error: invalid value of canonical target" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + target=$ac_cv_target +-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_target ++shift ++target_cpu=$1 ++target_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++target_os=$* ++IFS=$ac_save_IFS ++case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + + # The aliases save the names the user supplied, while $host etc. +@@ -1439,8 +1974,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1453,32 +1988,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}gcc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1491,36 +2028,51 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="gcc" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + else + CC="$ac_cv_prog_CC" + fi + + if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1533,74 +2085,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}cc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi + ++ fi + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1614,7 +2126,7 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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 +@@ -1625,6 +2137,7 @@ do + 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. +@@ -1642,22 +2155,23 @@ fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1670,36 +2184,38 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="$ac_tool_prefix$ac_prog" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CC" && break + done + fi + if test -z "$CC"; then + ac_ct_CC=$CC +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1712,29 +2228,45 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="$ac_prog" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CC" && break + done + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + fi + + fi +@@ -1747,21 +2279,35 @@ See \`config.log' for more details." >&2 + { (exit 1); exit 1; }; } + + # Provide some information about the compiler. +-echo "$as_me:$LINENO:" \ +- "checking for C compiler version" >&5 ++echo "$as_me:$LINENO: checking for C compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +@@ -1786,47 +2332,77 @@ ac_clean_files="$ac_clean_files a.out a. + # Try to create an executable without -o first, disregard a.out. + # It will help us diagnose broken compilers, and finding out an intuition + # of exeext. +-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 ++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } + ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 +- (eval $ac_link_default) 2>&5 ++# ++# List of possible output files, starting from the most likely. ++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) ++# only as a last resort. b.out is created by i960 compilers. ++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' ++# ++# The IRIX 6 linker writes into existing files which may not be ++# executable, retaining their permissions. Remove them first so a ++# subsequent execution test works. ++ac_rmfiles= ++for ac_file in $ac_files ++do ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; ++ * ) ac_rmfiles="$ac_rmfiles $ac_file";; ++ esac ++done ++rm -f $ac_rmfiles ++ ++if { (ac_try="$ac_link_default" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- # Find the output, starting from the most likely. This scheme is +-# not robust to junk in `.', hence go to wildcards (a.*) only as a last +-# resort. +- +-# Be careful to initialize this variable, since it used to be cached. +-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +-ac_cv_exeext= +-# b.out is created by i960 compilers. +-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out ++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. ++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' ++# in a Makefile. We should not override ac_cv_exeext if it was cached, ++# so that the user can short-circuit this test for compilers unknown to ++# Autoconf. ++for ac_file in $ac_files '' + do + test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) +- ;; +- conftest.$ac_ext ) +- # This is the source file. ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) +- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- # FIXME: I believe we export ac_cv_exeext for Libtool, +- # but it would be cool to find out if it's true. Does anybody +- # maintain Libtool? --akim. +- export ac_cv_exeext ++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ then :; else ++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ fi ++ # We set ac_cv_exeext here because the later test for it is not ++ # safe: cross compilers may not add the suffix if given an `-o' ++ # argument, so we may need to know it at that point already. ++ # Even if this section looks crufty: it has the advantage of ++ # actually working. + break;; + * ) + break;; + esac + done ++test "$ac_cv_exeext" = no && ac_cv_exeext= ++ + else ++ ac_file='' ++fi ++ ++{ echo "$as_me:$LINENO: result: $ac_file" >&5 ++echo "${ECHO_T}$ac_file" >&6; } ++if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +@@ -1838,19 +2414,21 @@ See \`config.log' for more details." >&2 + fi + + ac_exeext=$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_file" >&5 +-echo "${ECHO_T}$ac_file" >&6 + +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 ++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. + if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -1869,22 +2447,27 @@ See \`config.log' for more details." >&2 + fi + fi + fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + + rm -f a.out a.exe conftest$ac_cv_exeext b.out + ac_clean_files=$ac_clean_files_save +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +-echo "$as_me:$LINENO: result: $cross_compiling" >&5 +-echo "${ECHO_T}$cross_compiling" >&6 +- +-echo "$as_me:$LINENO: checking for suffix of executables" >&5 +-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 ++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 ++echo "${ECHO_T}$cross_compiling" >&6; } ++ ++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 ++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +@@ -1895,9 +2478,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l + for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- export ac_cv_exeext + break;; + * ) break;; + esac +@@ -1911,14 +2493,14 @@ See \`config.log' for more details." >&2 + fi + + rm -f conftest$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +-echo "${ECHO_T}$ac_cv_exeext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 ++echo "${ECHO_T}$ac_cv_exeext" >&6; } + + rm -f conftest.$ac_ext + EXEEXT=$ac_cv_exeext + ac_exeext=$EXEEXT +-echo "$as_me:$LINENO: checking for suffix of object files" >&5 +-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 ++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } + if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1938,14 +2520,20 @@ main () + } + _ACEOF + rm -f conftest.o conftest.obj +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do ++ for ac_file in conftest.o conftest.obj conftest.*; do ++ test -f "$ac_file" || continue; + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +@@ -1963,12 +2551,12 @@ fi + + rm -f conftest.$ac_cv_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +-echo "${ECHO_T}$ac_cv_objext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 ++echo "${ECHO_T}$ac_cv_objext" >&6; } + OBJEXT=$ac_cv_objext + ac_objext=$OBJEXT +-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } + if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1991,50 +2579,49 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_compiler_gnu=no ++ ac_compiler_gnu=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } + GCC=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CFLAGS=${CFLAGS+set} + ac_save_CFLAGS=$CFLAGS +-CFLAGS="-g" +-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ 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 +@@ -2050,38 +2637,118 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&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 ++ 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 "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ : ++else ++ 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 "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (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 + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_prog_cc_g=no ++ + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++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 +-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++echo "${ECHO_T}$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 +@@ -2097,12 +2764,12 @@ else + CFLAGS= + fi + fi +-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_stdc+set}" = set; then ++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_prog_cc_stdc=no ++ ac_cv_prog_cc_c89=no + ac_save_CC=$CC + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -2136,12 +2803,17 @@ static char *f (char * (*g) (char **, in + /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated +- as 'x'. The following induces an error, until -std1 is added to get ++ as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something +- that's true only with -std1. */ ++ that's true only with -std. */ + int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ + int test (int i, double x); + struct s1 {int (*f) (int a);}; + struct s2 {int (*f) (double a);}; +@@ -2156,335 +2828,144 @@ return f (e, argv, 0) != argv[0] || f + return 0; + } + _ACEOF +-# Don't try gcc -ansi; that turns off useful extensions and +-# breaks some systems' header files. +-# AIX -qlanglvl=ansi +-# Ultrix and OSF/1 -std1 +-# HP-UX 10.20 and later -Ae +-# HP-UX older versions -Aa -D_HPUX_SOURCE +-# SVR4 -Xc -D__EXTENSIONS__ +-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" + do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_stdc=$ac_arg +-break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_c89=$ac_arg + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext ++ ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break + done +-rm -f conftest.$ac_ext conftest.$ac_objext ++rm -f conftest.$ac_ext + CC=$ac_save_CC + + fi +- +-case "x$ac_cv_prog_cc_stdc" in +- x|xno) +- echo "$as_me:$LINENO: result: none needed" >&5 +-echo "${ECHO_T}none needed" >&6 ;; ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { echo "$as_me:$LINENO: result: none needed" >&5 ++echo "${ECHO_T}none needed" >&6; } ;; ++ xno) ++ { echo "$as_me:$LINENO: result: unsupported" >&5 ++echo "${ECHO_T}unsupported" >&6; } ;; + *) +- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 +- CC="$CC $ac_cv_prog_cc_stdc" ;; ++ CC="$CC $ac_cv_prog_cc_c89" ++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + esac + +-# Some people use a C++ compiler to compile C. Since we use `exit', +-# in C++ we need to declare it. In case someone uses the same compiler +-# for both compiling C and C++ we need to have the C++ compiler decide +-# the declaration of exit, since it's the most demanding environment. ++ ++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 ++ ++ ++{ echo "$as_me:$LINENO: checking for library containing strerror" >&5 ++echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; } ++if test "${ac_cv_search_strerror+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_func_search_save_LIBS=$LIBS + cat >conftest.$ac_ext <<_ACEOF +-#ifndef __cplusplus +- choke me +-#endif +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- for ac_declaration in \ +- '' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_declaration +-#include ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char strerror (); + int + main () + { +-exit (42); ++return strerror (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++for ac_lib in '' cposix; do ++ if test -z "$ac_lib"; then ++ ac_res="none required" ++ else ++ ac_res=-l$ac_lib ++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" ++ fi ++ rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_search_strerror=$ac_res + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-continue +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h +-fi +- +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext ++ if test "${ac_cv_search_strerror+set}" = set; then ++ break + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-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 +- +- +-echo "$as_me:$LINENO: checking for library containing strerror" >&5 +-echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6 ++done + if test "${ac_cv_search_strerror+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_func_search_save_LIBS=$LIBS +-ac_cv_search_strerror=no +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char strerror (); +-int +-main () +-{ +-strerror (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_strerror="none required" +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-if test "$ac_cv_search_strerror" = no; then +- for ac_lib in cposix; do +- LIBS="-l$ac_lib $ac_func_search_save_LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char strerror (); +-int +-main () +-{ +-strerror (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_strerror="-l$ac_lib" +-break ++ : + else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- done ++ ac_cv_search_strerror=no + fi ++rm conftest.$ac_ext + LIBS=$ac_func_search_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 +-echo "${ECHO_T}$ac_cv_search_strerror" >&6 +-if test "$ac_cv_search_strerror" != no; then +- test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS" ++{ echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 ++echo "${ECHO_T}$ac_cv_search_strerror" >&6; } ++ac_res=$ac_cv_search_strerror ++if test "$ac_res" != no; then ++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + fi + +@@ -2503,8 +2984,8 @@ am__api_version="1.9" + # 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. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } + if test -z "$INSTALL"; then + if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -2526,7 +3007,7 @@ case $as_dir/ in + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ++ 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. +@@ -2545,21 +3026,22 @@ case $as_dir/ in + ;; + esac + done ++IFS=$as_save_IFS + + + 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. We don't cache a +- # path for INSTALL within a source directory, because that will ++ # 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 path is relative. ++ # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi + fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -2569,8 +3051,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR + + test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +-echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 ++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } + # Just in case + sleep 1 + echo timestamp > conftest.file +@@ -2612,20 +3094,20 @@ echo "$as_me: error: newly created file + Check your system clock" >&2;} + { (exit 1); exit 1; }; } + fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + test "$program_prefix" != NONE && +- program_transform_name="s,^,$program_prefix,;$program_transform_name" ++ 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" ++ program_transform_name="s&\$&$program_suffix&;$program_transform_name" + # Double any \ or $. echo might interpret backslashes. + # By default was `s,x,x', remove it if useless. + cat <<\_ACEOF >conftest.sed + s/[\\$]/&&/g;s/;s,x,x,$// + _ACEOF + program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +-rm conftest.sed ++rm -f conftest.sed + + # expand $ac_aux_dir to an absolute path + am_aux_dir=`cd $ac_aux_dir && pwd` +@@ -2677,8 +3159,8 @@ 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2691,54 +3173,57 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $AWK" >&5 +-echo "${ECHO_T}$AWK" >&6 ++ { echo "$as_me:$LINENO: result: $AWK" >&5 ++echo "${ECHO_T}$AWK" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$AWK" && break + done + +-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } ++set x ${MAKE-make}; ac_make=`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 + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh + all: +- @echo 'ac_maketemp="$(MAKE)"' ++ @echo '@@@%%%=$(MAKE)=@@@%%%' + _ACEOF + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. +-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +-if test -n "$ac_maketemp"; then +- eval ac_cv_prog_make_${ac_make}_set=yes +-else +- eval ac_cv_prog_make_${ac_make}_set=no +-fi ++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 \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + SET_MAKE= + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" + fi + +@@ -2753,7 +3238,7 @@ rmdir .tst 2>/dev/null + + DEPDIR="${am__leading_dot}deps" + +- ac_config_commands="$ac_config_commands depfiles" ++ac_config_commands="$ac_config_commands depfiles" + + + am_make=${MAKE-make} +@@ -2763,8 +3248,8 @@ am__doit: + .PHONY: am__doit + END + # If we don't find an include directive, just comment out the code. +-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 ++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } + am__include="#" + am__quote= + _am_result=none +@@ -2791,15 +3276,15 @@ if test "$am__include" = "#"; then + fi + + +-echo "$as_me:$LINENO: result: $_am_result" >&5 +-echo "${ECHO_T}$_am_result" >&6 ++{ echo "$as_me:$LINENO: result: $_am_result" >&5 ++echo "${ECHO_T}$_am_result" >&6; } + rm -f confinc confmf + +-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. ++# Check whether --enable-dependency-tracking was given. + if test "${enable_dependency_tracking+set}" = set; then +- enableval="$enable_dependency_tracking" ++ enableval=$enable_dependency_tracking; ++fi + +-fi; + if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +@@ -2836,7 +3321,7 @@ fi + + # Define the identity of the package. + PACKAGE=bfd +- VERSION=2.17 ++ VERSION=2.17.atmel.0.0.99 + + + cat >>confdefs.h <<_ACEOF +@@ -2874,8 +3359,8 @@ 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2888,32 +3373,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2926,27 +3413,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" + fi + fi + ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP + if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- STRIP=$ac_ct_STRIP ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi + else + STRIP="$ac_cv_prog_STRIP" + fi +@@ -2967,8 +3468,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am + + depcc="$CC" am_compiler_list= + +-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } + if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3057,8 +3558,8 @@ else + fi + + fi +-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 ++{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 ++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } + CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + +@@ -3079,8 +3580,8 @@ 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3093,32 +3594,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $AR" >&5 +-echo "${ECHO_T}$AR" >&6 ++ { echo "$as_me:$LINENO: result: $AR" >&5 ++echo "${ECHO_T}$AR" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3131,26 +3634,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +-echo "${ECHO_T}$ac_ct_AR" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 ++echo "${ECHO_T}$ac_ct_AR" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- AR=$ac_ct_AR ++ if test "x$ac_ct_AR" = x; then ++ AR="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ AR=$ac_ct_AR ++ fi + else + AR="$ac_cv_prog_AR" + fi +@@ -3158,8 +3676,8 @@ 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3172,32 +3690,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3210,36 +3730,49 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" + fi + fi + ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB + if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- RANLIB=$ac_ct_RANLIB ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi + else + RANLIB="$ac_cv_prog_RANLIB" + fi + + +-# Check whether --enable-shared or --disable-shared was given. ++# Check whether --enable-shared was given. + if test "${enable_shared+set}" = set; then +- enableval="$enable_shared" +- p=${PACKAGE-default} ++ enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; +@@ -3257,12 +3790,12 @@ no) enable_shared=no ;; + esac + else + enable_shared=no +-fi; ++fi ++ + +-# Check whether --enable-static or --disable-static was given. ++# Check whether --enable-static was given. + if test "${enable_static+set}" = set; then +- enableval="$enable_static" +- p=${PACKAGE-default} ++ enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; +@@ -3280,11 +3813,11 @@ no) enable_static=no ;; + esac + else + enable_static=yes +-fi; +-# Check whether --enable-fast-install or --disable-fast-install was given. ++fi ++ ++# Check whether --enable-fast-install was given. + if test "${enable_fast_install+set}" = set; then +- enableval="$enable_fast_install" +- p=${PACKAGE-default} ++ enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; +@@ -3302,20 +3835,21 @@ no) enable_fast_install=no ;; + esac + else + enable_fast_install=yes +-fi; ++fi ++ + +-# Check whether --with-gnu-ld or --without-gnu-ld was given. ++# Check whether --with-gnu-ld was given. + if test "${with_gnu_ld+set}" = set; then +- withval="$with_gnu_ld" +- test "$withval" = no || with_gnu_ld=yes ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes + else + with_gnu_ld=no +-fi; ++fi ++ + ac_prog=ld + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. +- echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for ld used by GCC" >&5 ++echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw +@@ -3344,11 +3878,11 @@ echo $ECHO_N "checking for ld used by GC + ;; + esac + elif test "$with_gnu_ld" = yes; then +- echo "$as_me:$LINENO: checking for GNU ld" >&5 +-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for GNU ld" >&5 ++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + else +- echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + fi + if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -3377,17 +3911,17 @@ fi + + LD="$lt_cv_path_LD" + if test -n "$LD"; then +- echo "$as_me:$LINENO: result: $LD" >&5 +-echo "${ECHO_T}$LD" >&6 ++ { echo "$as_me:$LINENO: result: $LD" >&5 ++echo "${ECHO_T}$LD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 + echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } + if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3398,25 +3932,25 @@ else + lt_cv_prog_gnu_ld=no + fi + fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 ++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } + with_gnu_ld=$lt_cv_prog_gnu_ld + + +-echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 ++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } + if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + lt_cv_ld_reload_flag='-r' + fi +-echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 ++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } + reload_flag=$lt_cv_ld_reload_flag + test -n "$reload_flag" && reload_flag=" $reload_flag" + +-echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 ++echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } + if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3451,22 +3985,22 @@ fi + fi + + NM="$lt_cv_path_NM" +-echo "$as_me:$LINENO: result: $NM" >&5 +-echo "${ECHO_T}$NM" >&6 ++{ echo "$as_me:$LINENO: result: $NM" >&5 ++echo "${ECHO_T}$NM" >&6; } + +-echo "$as_me:$LINENO: checking whether ln -s works" >&5 +-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 ++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } + LN_S=$as_ln_s + if test "$LN_S" = "ln -s"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + else +- echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +-echo "${ECHO_T}no, using $LN_S" >&6 ++ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 ++echo "${ECHO_T}no, using $LN_S" >&6; } + fi + +-echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 +-echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 ++echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6; } + if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3628,8 +4162,8 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + esac + + fi +-echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 ++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } + file_magic_cmd=$lt_cv_file_magic_cmd + deplibs_check_method=$lt_cv_deplibs_check_method + +@@ -3639,8 +4173,8 @@ deplibs_check_method=$lt_cv_deplibs_chec + # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + + # find the maximum length of command line arguments +-echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 ++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } + if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3691,11 +4225,11 @@ else + fi + + if test -n "$lt_cv_sys_max_cmd_len" ; then +- echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 ++ { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 ++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } + else +- echo "$as_me:$LINENO: result: none" >&5 +-echo "${ECHO_T}none" >&6 ++ { echo "$as_me:$LINENO: result: none" >&5 ++echo "${ECHO_T}none" >&6; } + fi + + +@@ -3703,8 +4237,8 @@ fi + case $deplibs_check_method in + file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 ++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } + if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3758,17 +4292,17 @@ fi + + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then +- echo "$as_me:$LINENO: checking for file" >&5 +-echo $ECHO_N "checking for file... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for file" >&5 ++echo $ECHO_N "checking for file... $ECHO_C" >&6; } + if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3822,11 +4356,11 @@ fi + + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + else +@@ -3841,8 +4375,8 @@ esac + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3855,32 +4389,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3893,27 +4429,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" + fi + fi + ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB + if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- RANLIB=$ac_ct_RANLIB ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi + else + RANLIB="$ac_cv_prog_RANLIB" + fi +@@ -3921,8 +4471,8 @@ fi + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3935,32 +4485,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3973,27 +4525,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" + fi + fi + ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP + if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- STRIP=$ac_ct_STRIP ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi + else + STRIP="$ac_cv_prog_STRIP" + fi +@@ -4008,22 +4574,22 @@ test "$GCC" = yes && libtool_flags="$lib + test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" + + +-# Check whether --enable-libtool-lock or --disable-libtool-lock was given. ++# Check whether --enable-libtool-lock was given. + if test "${enable_libtool_lock+set}" = set; then +- enableval="$enable_libtool_lock" ++ enableval=$enable_libtool_lock; ++fi + +-fi; + test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" + test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" + + +-# Check whether --with-pic or --without-pic was given. ++# Check whether --with-pic was given. + if test "${with_pic+set}" = set; then +- withval="$with_pic" +- pic_mode="$withval" ++ withval=$with_pic; pic_mode="$withval" + else + pic_mode=default +-fi; ++fi ++ + test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic" + test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic" + +@@ -4032,7 +4598,7 @@ test x"$pic_mode" = xno && libtool_flags + case $host in + *-*-irix6*) + # Find out which ABI we are using. +- echo '#line 4035 "configure"' > conftest.$ac_ext ++ echo '#line 4601 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +@@ -4137,13 +4703,12 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*li + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" +- echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 ++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } + if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + +- + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -4166,35 +4731,32 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + lt_cv_cc_needs_belf=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-lt_cv_cc_needs_belf=no ++ lt_cv_cc_needs_belf=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' +@@ -4203,8 +4765,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLA + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 ++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" +@@ -4234,39 +4796,58 @@ _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, don't put newlines in cache variables' values. ++# 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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ + (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ 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 \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} | ++ esac | ++ sort ++) | + sed ' ++ /^ac_cv_env_/b end + t clear +- : clear ++ :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end +- /^ac_cv_env/!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" && echo "updating cache $cache_file" ++ 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" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else +- echo "not updating unwritable cache $cache_file" ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi + fi + rm -f confcache +@@ -4292,8 +4873,8 @@ if test -r "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 + echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; + esac + fi + else +@@ -4319,10 +4900,9 @@ exec 5>>./config.log + + + +-# Check whether --enable-64-bit-bfd or --disable-64-bit-bfd was given. ++# Check whether --enable-64-bit-bfd was given. + if test "${enable_64_bit_bfd+set}" = set; then +- enableval="$enable_64_bit_bfd" +- case "${enableval}" in ++ enableval=$enable_64_bit_bfd; case "${enableval}" in + yes) want64=true ;; + no) want64=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for 64-bit-bfd option" >&5 +@@ -4331,10 +4911,10 @@ echo "$as_me: error: bad value ${enablev + esac + else + want64=false +-fi; # Check whether --enable-targets or --disable-targets was given. ++fi ++# Check whether --enable-targets was given. + if test "${enable_targets+set}" = set; then +- enableval="$enable_targets" +- case "${enableval}" in ++ enableval=$enable_targets; case "${enableval}" in + yes | "") { { echo "$as_me:$LINENO: error: enable-targets option must specify target names or 'all'" >&5 + echo "$as_me: error: enable-targets option must specify target names or 'all'" >&2;} + { (exit 1); exit 1; }; } +@@ -4342,21 +4922,21 @@ echo "$as_me: error: enable-targets opti + no) enable_targets= ;; + *) enable_targets=$enableval ;; + esac +-fi; # Check whether --enable-commonbfdlib or --disable-commonbfdlib was given. ++fi ++# Check whether --enable-commonbfdlib was given. + if test "${enable_commonbfdlib+set}" = set; then +- enableval="$enable_commonbfdlib" +- case "${enableval}" in ++ enableval=$enable_commonbfdlib; case "${enableval}" in + yes) commonbfdlib=true ;; + no) commonbfdlib=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for BFD commonbfdlib option" >&5 + echo "$as_me: error: bad value ${enableval} for BFD commonbfdlib option" >&2;} + { (exit 1); exit 1; }; } ;; + esac +-fi; +-# Check whether --with-mmap or --without-mmap was given. ++fi ++ ++# Check whether --with-mmap was given. + if test "${with_mmap+set}" = set; then +- withval="$with_mmap" +- case "${withval}" in ++ withval=$with_mmap; case "${withval}" in + yes) want_mmap=true ;; + no) want_mmap=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${withval} for BFD with-mmap option" >&5 +@@ -4365,11 +4945,11 @@ echo "$as_me: error: bad value ${withval + esac + else + want_mmap=false +-fi; +-# Check whether --enable-secureplt or --disable-secureplt was given. ++fi ++ ++# Check whether --enable-secureplt was given. + if test "${enable_secureplt+set}" = set; then +- enableval="$enable_secureplt" +- case "${enableval}" in ++ enableval=$enable_secureplt; case "${enableval}" in + yes) use_secureplt=true ;; + no) use_secureplt=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for secureplt option" >&5 +@@ -4378,7 +4958,8 @@ echo "$as_me: error: bad value ${enablev + esac + else + use_secureplt=false +-fi; if test $use_secureplt = true; then ++fi ++if test $use_secureplt = true; then + + cat >>confdefs.h <<\_ACEOF + #define USE_SECUREPLT 1 +@@ -4389,17 +4970,17 @@ fi + + GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" + +-# Check whether --enable-werror or --disable-werror was given. ++# Check whether --enable-werror was given. + if test "${enable_werror+set}" = set; then +- enableval="$enable_werror" +- case "${enableval}" in ++ enableval=$enable_werror; case "${enableval}" in + yes | y) ERROR_ON_WARNING="yes" ;; + no | n) ERROR_ON_WARNING="no" ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-werror" >&5 + echo "$as_me: error: bad value ${enableval} for --enable-werror" >&2;} + { (exit 1); exit 1; }; } ;; + esac +-fi; ++fi ++ + + # Enable -Werror by default when using gcc + if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then +@@ -4416,10 +4997,9 @@ if test "${GCC}" = yes ; then + WARN_CFLAGS="${GCC_WARN_CFLAGS}" + fi + +-# Check whether --enable-build-warnings or --disable-build-warnings was given. ++# Check whether --enable-build-warnings was given. + if test "${enable_build_warnings+set}" = set; then +- enableval="$enable_build_warnings" +- case "${enableval}" in ++ enableval=$enable_build_warnings; case "${enableval}" in + yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; + no) if test "${GCC}" = yes ; then + WARN_CFLAGS="-w" +@@ -4430,7 +5010,8 @@ if test "${enable_build_warnings+set}" = + WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";; + *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;; + esac +-fi; ++fi ++ + + if test x"$silent" != x"yes" && test x"$WARN_CFLAGS" != x""; then + echo "Setting warning flags = $WARN_CFLAGS" 6>&1 +@@ -4440,7 +5021,7 @@ fi + + + +- ac_config_headers="$ac_config_headers config.h:config.in" ++ac_config_headers="$ac_config_headers config.h:config.in" + + + if test -z "$target" ; then +@@ -4449,17 +5030,17 @@ echo "$as_me: error: Unrecognized target + { (exit 1); exit 1; }; } + fi + +-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 +- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. ++{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 ++echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; } ++ # Check whether --enable-maintainer-mode was given. + if test "${enable_maintainer_mode+set}" = set; then +- enableval="$enable_maintainer_mode" +- USE_MAINTAINER_MODE=$enableval ++ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval + else + USE_MAINTAINER_MODE=no +-fi; +- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 ++fi ++ ++ { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 ++echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; } + + + if test $USE_MAINTAINER_MODE = yes; then +@@ -4488,21 +5069,21 @@ esac + *) target_noncanonical=${target_alias} ;; + esac + +-echo "$as_me:$LINENO: checking whether to install libbfd" >&5 +-echo $ECHO_N "checking whether to install libbfd... $ECHO_C" >&6 +- # Check whether --enable-install-libbfd or --disable-install-libbfd was given. ++{ echo "$as_me:$LINENO: checking whether to install libbfd" >&5 ++echo $ECHO_N "checking whether to install libbfd... $ECHO_C" >&6; } ++ # Check whether --enable-install-libbfd was given. + if test "${enable_install_libbfd+set}" = set; then +- enableval="$enable_install_libbfd" +- install_libbfd_p=$enableval ++ enableval=$enable_install_libbfd; install_libbfd_p=$enableval + else + if test "${host}" = "${target}" || test "$enable_shared" = "yes"; then + install_libbfd_p=yes + else + install_libbfd_p=no + fi +-fi; +- echo "$as_me:$LINENO: result: $install_libbfd_p" >&5 +-echo "${ECHO_T}$install_libbfd_p" >&6 ++fi ++ ++ { echo "$as_me:$LINENO: result: $install_libbfd_p" >&5 ++echo "${ECHO_T}$install_libbfd_p" >&6; } + + + if test $install_libbfd_p = yes; then +@@ -4545,8 +5126,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4559,32 +5140,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}gcc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4597,36 +5180,51 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="gcc" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + else + CC="$ac_cv_prog_CC" + fi + + if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4639,74 +5237,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}cc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi + ++ fi + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4720,7 +5278,7 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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 +@@ -4731,6 +5289,7 @@ do + 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. +@@ -4748,22 +5307,23 @@ fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4776,36 +5336,38 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="$ac_tool_prefix$ac_prog" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CC" && break + done + fi + if test -z "$CC"; then + ac_ct_CC=$CC +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4818,29 +5380,45 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="$ac_prog" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CC" && break + done + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + fi + + fi +@@ -4853,27 +5431,41 @@ See \`config.log' for more details." >&2 + { (exit 1); exit 1; }; } + + # Provide some information about the compiler. +-echo "$as_me:$LINENO:" \ +- "checking for C compiler version" >&5 ++echo "$as_me:$LINENO: checking for C compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } + if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4896,50 +5488,49 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_compiler_gnu=no ++ ac_compiler_gnu=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } + GCC=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CFLAGS=${CFLAGS+set} + ac_save_CFLAGS=$CFLAGS +-CFLAGS="-g" +-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ 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 +@@ -4955,46 +5546,126 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (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 + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_prog_cc_g=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +-echo "${ECHO_T}$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 ++ 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 "echo \"\$as_me:$LINENO: $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 ++ 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 ++ 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 "echo \"\$as_me:$LINENO: $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 ++ 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 ++ 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 ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++echo "${ECHO_T}$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" +@@ -5002,12 +5673,12 @@ else + CFLAGS= + fi + fi +-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_stdc+set}" = set; then ++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_prog_cc_stdc=no ++ ac_cv_prog_cc_c89=no + ac_save_CC=$CC + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -5041,12 +5712,17 @@ static char *f (char * (*g) (char **, in + /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated +- as 'x'. The following induces an error, until -std1 is added to get ++ as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something +- that's true only with -std1. */ ++ that's true only with -std. */ + int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ + int test (int i, double x); + struct s1 {int (*f) (int a);}; + struct s2 {int (*f) (double a);}; +@@ -5061,205 +5737,57 @@ return f (e, argv, 0) != argv[0] || f + return 0; + } + _ACEOF +-# Don't try gcc -ansi; that turns off useful extensions and +-# breaks some systems' header files. +-# AIX -qlanglvl=ansi +-# Ultrix and OSF/1 -std1 +-# HP-UX 10.20 and later -Ae +-# HP-UX older versions -Aa -D_HPUX_SOURCE +-# SVR4 -Xc -D__EXTENSIONS__ +-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" + do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_stdc=$ac_arg +-break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_c89=$ac_arg + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext ++ ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break + done +-rm -f conftest.$ac_ext conftest.$ac_objext ++rm -f conftest.$ac_ext + CC=$ac_save_CC + + fi +- +-case "x$ac_cv_prog_cc_stdc" in +- x|xno) +- echo "$as_me:$LINENO: result: none needed" >&5 +-echo "${ECHO_T}none needed" >&6 ;; ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { echo "$as_me:$LINENO: result: none needed" >&5 ++echo "${ECHO_T}none needed" >&6; } ;; ++ xno) ++ { echo "$as_me:$LINENO: result: unsupported" >&5 ++echo "${ECHO_T}unsupported" >&6; } ;; + *) +- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 +- CC="$CC $ac_cv_prog_cc_stdc" ;; ++ CC="$CC $ac_cv_prog_cc_c89" ++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + esac + +-# Some people use a C++ compiler to compile C. Since we use `exit', +-# in C++ we need to declare it. In case someone uses the same compiler +-# for both compiling C and C++ we need to have the C++ compiler decide +-# the declaration of exit, since it's the most demanding environment. +-cat >conftest.$ac_ext <<_ACEOF +-#ifndef __cplusplus +- choke me +-#endif +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- for ac_declaration in \ +- '' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-#include +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-continue +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h +-fi +- +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -5277,8 +5805,8 @@ ALL_LINGUAS="fr tr ja es sv da zh_CN ro + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5291,32 +5819,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5329,27 +5859,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" + fi + fi + ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB + if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- RANLIB=$ac_ct_RANLIB ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi + else + RANLIB="$ac_cv_prog_RANLIB" + fi +@@ -5359,8 +5903,8 @@ 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 +-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 ++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= +@@ -5394,24 +5938,22 @@ cat >>conftest.$ac_ext <<_ACEOF + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -5420,9 +5962,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -5432,24 +5975,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -5460,6 +6001,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -5477,8 +6019,8 @@ fi + else + ac_cv_prog_CPP=$CPP + fi +-echo "$as_me:$LINENO: result: $CPP" >&5 +-echo "${ECHO_T}$CPP" >&6 ++{ echo "$as_me:$LINENO: result: $CPP" >&5 ++echo "${ECHO_T}$CPP" >&6; } + ac_preproc_ok=false + for ac_c_preproc_warn_flag in '' yes + do +@@ -5501,24 +6043,22 @@ cat >>conftest.$ac_ext <<_ACEOF + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -5527,9 +6067,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -5539,24 +6080,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -5567,6 +6106,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -5589,87 +6129,230 @@ ac_link='$CC -o conftest$ac_exeext $CFLA + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +-echo "$as_me:$LINENO: checking for egrep" >&5 +-echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +-if test "${ac_cv_prog_egrep+set}" = set; then ++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 ++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # Extract the first word of "grep ggrep" to use in msg output ++if test -z "$GREP"; then ++set dummy grep ggrep; ac_prog_name=$2 ++if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if echo a | (grep -E '(a|b)') >/dev/null 2>&1 +- then ac_cv_prog_egrep='grep -E' +- else ac_cv_prog_egrep='egrep' ++ ac_path_GREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in grep ggrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue ++ # Check for GNU ac_path_GREP and select it if it is found. ++ # Check for GNU $ac_path_GREP ++case `"$ac_path_GREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'GREP' >> "conftest.nl" ++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_GREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_GREP="$ac_path_GREP" ++ ac_path_GREP_max=$ac_count + fi +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +-echo "${ECHO_T}$ac_cv_prog_egrep" >&6 +- EGREP=$ac_cv_prog_egrep ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac + + +-echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +-if test "${ac_cv_header_stdc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +-#include +-#include +-#include ++ $ac_path_GREP_found && break 3 ++ done ++done + +-int +-main () +-{ ++done ++IFS=$as_save_IFS + +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_header_stdc=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_header_stdc=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +-if test $ac_cv_header_stdc = yes; then +- # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include ++GREP="$ac_cv_path_GREP" ++if test -z "$GREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi + +-_ACEOF ++else ++ ac_cv_path_GREP=$GREP ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 ++echo "${ECHO_T}$ac_cv_path_GREP" >&6; } ++ GREP="$ac_cv_path_GREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for egrep" >&5 ++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 ++ then ac_cv_path_EGREP="$GREP -E" ++ else ++ # Extract the first word of "egrep" to use in msg output ++if test -z "$EGREP"; then ++set dummy egrep; ac_prog_name=$2 ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_EGREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in egrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue ++ # Check for GNU ac_path_EGREP and select it if it is found. ++ # Check for GNU $ac_path_EGREP ++case `"$ac_path_EGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'EGREP' >> "conftest.nl" ++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_EGREP="$ac_path_EGREP" ++ ac_path_EGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_EGREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++EGREP="$ac_cv_path_EGREP" ++if test -z "$EGREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_EGREP=$EGREP ++fi ++ ++ ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 ++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } ++ EGREP="$ac_cv_path_EGREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } ++if test "${ac_cv_header_stdc+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++ ++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 "echo \"\$as_me:$LINENO: $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 ++ 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_header_stdc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_stdc=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++if test $ac_cv_header_stdc = yes; then ++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++_ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +@@ -5713,6 +6396,7 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include ++#include + #if ((' ' & 0x0FF) == 0x020) + # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') + # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +@@ -5732,18 +6416,27 @@ main () + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) +- exit(2); +- exit (0); ++ return 2; ++ return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -5756,12 +6449,14 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) + ac_cv_header_stdc=no + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +-echo "${ECHO_T}$ac_cv_header_stdc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++echo "${ECHO_T}$ac_cv_header_stdc" >&6; } + if test $ac_cv_header_stdc = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -5770,8 +6465,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 ++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } + if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5789,10 +6484,10 @@ main () + #ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; +- const charset x; ++ const charset cs; + /* SunOS 4.1.1 cc rejects this. */ +- char const *const *ccp; +- char **p; ++ char const *const *pcpcc; ++ char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; +@@ -5801,16 +6496,17 @@ main () + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; +- ccp = &g + (g ? g-g : 0); ++ pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ +- ++ccp; +- p = (char**) ccp; +- ccp = (char const *const *) p; ++ ++pcpcc; ++ ppc = (char**) pcpcc; ++ pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; ++ if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; +@@ -5829,7 +6525,9 @@ main () + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; ++ if (!foo) return 0; + } ++ return !cs[0] && !zero.x; + #endif + + ; +@@ -5837,38 +6535,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_c_const=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_c_const=no ++ ac_cv_c_const=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +-echo "${ECHO_T}$ac_cv_c_const" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 ++echo "${ECHO_T}$ac_cv_c_const" >&6; } + if test $ac_cv_c_const = no; then + + cat >>confdefs.h <<\_ACEOF +@@ -5877,8 +6571,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for inline" >&5 +-echo $ECHO_N "checking for inline... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for inline" >&5 ++echo $ECHO_N "checking for inline... $ECHO_C" >&6; } + if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5898,39 +6592,37 @@ $ac_kw foo_t foo () {return 0; } + + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_c_inline=$ac_kw; break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_inline=$ac_kw + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ test "$ac_cv_c_inline" != no && break + done + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +-echo "${ECHO_T}$ac_cv_c_inline" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 ++echo "${ECHO_T}$ac_cv_c_inline" >&6; } + + + case $ac_cv_c_inline in +@@ -5962,9 +6654,9 @@ for ac_header in sys/types.h sys/stat.h + inttypes.h stdint.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -5978,38 +6670,35 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_Header=no" ++ eval "$as_ac_Header=no" + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +@@ -6020,8 +6709,8 @@ fi + done + + +-echo "$as_me:$LINENO: checking for off_t" >&5 +-echo $ECHO_N "checking for off_t... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for off_t" >&5 ++echo $ECHO_N "checking for off_t... $ECHO_C" >&6; } + if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6032,62 +6721,59 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++typedef off_t ac__type_new_; + int + main () + { +-if ((off_t *) 0) ++if ((ac__type_new_ *) 0) + return 0; +-if (sizeof (off_t)) ++if (sizeof (ac__type_new_)) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_type_off_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_off_t=no ++ ac_cv_type_off_t=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +-echo "${ECHO_T}$ac_cv_type_off_t" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 ++echo "${ECHO_T}$ac_cv_type_off_t" >&6; } + if test $ac_cv_type_off_t = yes; then + : + else + + cat >>confdefs.h <<_ACEOF +-#define off_t long ++#define off_t long int + _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for size_t" >&5 +-echo $ECHO_N "checking for size_t... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for size_t" >&5 ++echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } + if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6098,64 +6784,61 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++typedef size_t ac__type_new_; + int + main () + { +-if ((size_t *) 0) ++if ((ac__type_new_ *) 0) + return 0; +-if (sizeof (size_t)) ++if (sizeof (ac__type_new_)) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_type_size_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_size_t=no ++ ac_cv_type_size_t=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +-echo "${ECHO_T}$ac_cv_type_size_t" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 ++echo "${ECHO_T}$ac_cv_type_size_t" >&6; } + if test $ac_cv_type_size_t = yes; then + : + else + + cat >>confdefs.h <<_ACEOF +-#define size_t unsigned ++#define size_t unsigned int + _ACEOF + + fi + + # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works + # for constant arguments. Useless! +-echo "$as_me:$LINENO: checking for working alloca.h" >&5 +-echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for working alloca.h" >&5 ++echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; } + if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6170,44 +6853,42 @@ int + main () + { + char *p = (char *) alloca (2 * sizeof (int)); ++ if (p) return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_working_alloca_h=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_working_alloca_h=no ++ ac_cv_working_alloca_h=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +-echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 ++echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; } + if test $ac_cv_working_alloca_h = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -6216,8 +6897,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for alloca" >&5 +-echo $ECHO_N "checking for alloca... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for alloca" >&5 ++echo $ECHO_N "checking for alloca... $ECHO_C" >&6; } + if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6234,7 +6915,7 @@ cat >>conftest.$ac_ext <<_ACEOF + # include + # define alloca _alloca + # else +-# if HAVE_ALLOCA_H ++# ifdef HAVE_ALLOCA_H + # include + # else + # ifdef _AIX +@@ -6252,44 +6933,42 @@ int + main () + { + char *p = (char *) alloca (1); ++ if (p) return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_func_alloca_works=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_alloca_works=no ++ ac_cv_func_alloca_works=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +-echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 ++echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; } + + if test $ac_cv_func_alloca_works = yes; then + +@@ -6303,15 +6982,15 @@ else + # contain a buggy version. If you still want to use their alloca, + # use ar to extract alloca.o from them instead of compiling alloca.c. + +-ALLOCA=alloca.$ac_objext ++ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + + cat >>confdefs.h <<\_ACEOF + #define C_ALLOCA 1 + _ACEOF + + +-echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +-echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 ++echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; } + if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6321,7 +7000,7 @@ _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#if defined(CRAY) && ! defined(CRAY2) ++#if defined CRAY && ! defined CRAY2 + webecray + #else + wenotbecray +@@ -6337,14 +7016,14 @@ fi + rm -f conftest* + + fi +-echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +-echo "${ECHO_T}$ac_cv_os_cray" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 ++echo "${ECHO_T}$ac_cv_os_cray" >&6; } + if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -6370,68 +7049,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -6444,8 +7115,8 @@ fi + done + fi + +-echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +-echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 ++echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; } + if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6458,6 +7129,7 @@ _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ ++$ac_includes_default + int + find_stack_direction () + { +@@ -6475,17 +7147,26 @@ find_stack_direction () + int + main () + { +- exit (find_stack_direction () < 0); ++ return find_stack_direction () < 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -6498,11 +7179,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) + ac_cv_c_stack_direction=-1 + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +-echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 ++echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; } + + cat >>confdefs.h <<_ACEOF + #define STACK_DIRECTION $ac_cv_c_stack_direction +@@ -6516,18 +7199,19 @@ fi + for ac_header in stdlib.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -6538,41 +7222,37 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -6581,24 +7261,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -6606,9 +7284,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -6632,25 +7311,19 @@ echo "$as_me: WARNING: $ac_header: s + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -6666,9 +7339,9 @@ done + for ac_func in getpagesize + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -6694,68 +7367,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -6764,8 +7429,8 @@ _ACEOF + fi + done + +-echo "$as_me:$LINENO: checking for working mmap" >&5 +-echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for working mmap" >&5 ++echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; } + if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6807,21 +7472,21 @@ $ac_includes_default + #include + #include + +-#if !STDC_HEADERS && !HAVE_STDLIB_H ++#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H + char *malloc (); + #endif + + /* This mess was copied from the GNU getpagesize.h. */ +-#if !HAVE_GETPAGESIZE ++#ifndef HAVE_GETPAGESIZE + /* Assume that all systems that can run configure have sys/param.h. */ +-# if !HAVE_SYS_PARAM_H ++# ifndef HAVE_SYS_PARAM_H + # define HAVE_SYS_PARAM_H 1 + # endif + + # ifdef _SC_PAGESIZE + # define getpagesize() sysconf(_SC_PAGESIZE) + # else /* no _SC_PAGESIZE */ +-# if HAVE_SYS_PARAM_H ++# ifdef HAVE_SYS_PARAM_H + # include + # ifdef EXEC_PAGESIZE + # define getpagesize() EXEC_PAGESIZE +@@ -6860,15 +7525,15 @@ main () + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) +- exit (1); ++ return 1; + if (write (fd, data, pagesize) != pagesize) +- exit (1); ++ return 1; + close (fd); + + /* Next, try to mmap the file at a fixed address which already has +@@ -6876,17 +7541,17 @@ main () + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) +- exit (1); ++ return 1; + data2 = (char *) malloc (2 * pagesize); + if (!data2) +- exit (1); +- data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); ++ return 1; ++ data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) +- exit (1); ++ return 1; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on +@@ -6895,24 +7560,33 @@ main () + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) +- exit (1); ++ return 1; + if (read (fd, data3, pagesize) != pagesize) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) +- exit (1); ++ return 1; + close (fd); +- exit (0); ++ return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -6925,11 +7599,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) + ac_cv_func_mmap_fixed_mapped=no + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +-echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 ++echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; } + if test $ac_cv_func_mmap_fixed_mapped = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -6953,18 +7629,19 @@ for ac_header in argz.h limits.h locale. + unistd.h values.h sys/param.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -6975,41 +7652,37 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -7018,24 +7691,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -7043,9 +7714,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -7069,25 +7741,19 @@ echo "$as_me: WARNING: $ac_header: s + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -7113,9 +7779,9 @@ for ac_func in getcwd munmap putenv sete + __argz_count __argz_stringify __argz_next + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -7141,68 +7807,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -7217,9 +7875,9 @@ done + for ac_func in stpcpy + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -7245,68 +7903,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -7325,8 +7975,8 @@ _ACEOF + fi + + if test $ac_cv_header_locale_h = yes; then +- echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +-echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 ++echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6; } + if test "${am_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7346,39 +7996,36 @@ return LC_MESSAGES + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + am_cv_val_LC_MESSAGES=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-am_cv_val_LC_MESSAGES=no ++ am_cv_val_LC_MESSAGES=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +-echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 ++{ echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 ++echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6; } + if test $am_cv_val_LC_MESSAGES = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -7387,34 +8034,34 @@ _ACEOF + + fi + fi +- echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 +- # Check whether --enable-nls or --disable-nls was given. ++ { echo "$as_me:$LINENO: checking whether NLS is requested" >&5 ++echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; } ++ # Check whether --enable-nls was given. + if test "${enable_nls+set}" = set; then +- enableval="$enable_nls" +- USE_NLS=$enableval ++ enableval=$enable_nls; USE_NLS=$enableval + else + USE_NLS=yes +-fi; +- echo "$as_me:$LINENO: result: $USE_NLS" >&5 +-echo "${ECHO_T}$USE_NLS" >&6 ++fi ++ ++ { echo "$as_me:$LINENO: result: $USE_NLS" >&5 ++echo "${ECHO_T}$USE_NLS" >&6; } + + + USE_INCLUDED_LIBINTL=no + + if test "$USE_NLS" = "yes"; then +- echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 +-echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 ++echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6; } + +-# Check whether --with-included-gettext or --without-included-gettext was given. ++# Check whether --with-included-gettext was given. + if test "${with_included_gettext+set}" = set; then +- withval="$with_included_gettext" +- nls_cv_force_use_gnu_gettext=$withval ++ withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval + else + nls_cv_force_use_gnu_gettext=no +-fi; +- echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 +-echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 ++fi ++ ++ { echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 ++echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6; } + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then +@@ -7423,17 +8070,17 @@ echo "${ECHO_T}$nls_cv_force_use_gnu_get + CATOBJEXT= + + if test "${ac_cv_header_libintl_h+set}" = set; then +- echo "$as_me:$LINENO: checking for libintl.h" >&5 +-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for libintl.h" >&5 ++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; } + if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 ++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking libintl.h usability" >&5 +-echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking libintl.h usability" >&5 ++echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -7444,41 +8091,37 @@ $ac_includes_default + #include + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking libintl.h presence" >&5 +-echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking libintl.h presence" >&5 ++echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -7487,24 +8130,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -7512,9 +8153,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -7538,30 +8180,23 @@ echo "$as_me: WARNING: libintl.h: se + echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for libintl.h" >&5 +-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for libintl.h" >&5 ++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; } + if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_cv_header_libintl_h=$ac_header_preproc + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 ++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; } + + fi + if test $ac_cv_header_libintl_h = yes; then +- echo "$as_me:$LINENO: checking for gettext in libc" >&5 +-echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for gettext in libc" >&5 ++echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6; } + if test "${gt_cv_func_gettext_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7581,43 +8216,40 @@ return (int) gettext ("") + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + gt_cv_func_gettext_libc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-gt_cv_func_gettext_libc=no ++ gt_cv_func_gettext_libc=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5 +-echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6 ++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5 ++echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6; } + + if test "$gt_cv_func_gettext_libc" != "yes"; then +- echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5 +-echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5 ++echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6; } + if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7630,59 +8262,56 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char bindtextdomain (); + int + main () + { +-bindtextdomain (); ++return bindtextdomain (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_intl_bindtextdomain=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_intl_bindtextdomain=no ++ ac_cv_lib_intl_bindtextdomain=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5 +-echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5 ++echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6; } + if test $ac_cv_lib_intl_bindtextdomain = yes; then +- echo "$as_me:$LINENO: checking for gettext in libintl" >&5 +-echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for gettext in libintl" >&5 ++echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6; } + if test "${gt_cv_func_gettext_libintl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7702,39 +8331,36 @@ return (int) gettext ("") + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + gt_cv_func_gettext_libintl=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-gt_cv_func_gettext_libintl=no ++ gt_cv_func_gettext_libintl=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5 +-echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6 ++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5 ++echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6; } + fi + + fi +@@ -7748,8 +8374,8 @@ _ACEOF + + # Extract the first word of "msgfmt", so it can be a program name with args. + set dummy msgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7775,20 +8401,20 @@ esac + fi + MSGFMT="$ac_cv_path_MSGFMT" + if test -n "$MSGFMT"; then +- echo "$as_me:$LINENO: result: $MSGFMT" >&5 +-echo "${ECHO_T}$MSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5 ++echo "${ECHO_T}$MSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + if test "$MSGFMT" != "no"; then + + for ac_func in dcgettext + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -7814,68 +8440,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -7886,8 +8504,8 @@ done + + # Extract the first word of "gmsgfmt", so it can be a program name with args. + set dummy gmsgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7902,32 +8520,33 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; + esac + fi + GMSGFMT=$ac_cv_path_GMSGFMT +- + if test -n "$GMSGFMT"; then +- echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +-echo "${ECHO_T}$GMSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5 ++echo "${ECHO_T}$GMSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + # Extract the first word of "xgettext", so it can be a program name with args. + set dummy xgettext; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7953,11 +8572,11 @@ esac + fi + XGETTEXT="$ac_cv_path_XGETTEXT" + if test -n "$XGETTEXT"; then +- echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +-echo "${ECHO_T}$XGETTEXT" >&6 ++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5 ++echo "${ECHO_T}$XGETTEXT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + cat >conftest.$ac_ext <<_ACEOF +@@ -7977,37 +8596,34 @@ extern int _nl_msg_cat_cntr; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + CATOBJEXT=.gmo + DATADIRNAME=share + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-CATOBJEXT=.mo ++ CATOBJEXT=.mo + DATADIRNAME=lib + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + INSTOBJEXT=.mo + fi +@@ -8029,8 +8645,8 @@ fi + INTLOBJS="\$(GETTOBJS)" + # Extract the first word of "msgfmt", so it can be a program name with args. + set dummy msgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8056,17 +8672,17 @@ esac + fi + MSGFMT="$ac_cv_path_MSGFMT" + if test -n "$MSGFMT"; then +- echo "$as_me:$LINENO: result: $MSGFMT" >&5 +-echo "${ECHO_T}$MSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5 ++echo "${ECHO_T}$MSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. + set dummy gmsgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8081,32 +8697,33 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; + esac + fi + GMSGFMT=$ac_cv_path_GMSGFMT +- + if test -n "$GMSGFMT"; then +- echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +-echo "${ECHO_T}$GMSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5 ++echo "${ECHO_T}$GMSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + # Extract the first word of "xgettext", so it can be a program name with args. + set dummy xgettext; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8132,11 +8749,11 @@ esac + fi + XGETTEXT="$ac_cv_path_XGETTEXT" + if test -n "$XGETTEXT"; then +- echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +-echo "${ECHO_T}$XGETTEXT" >&6 ++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5 ++echo "${ECHO_T}$XGETTEXT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + +@@ -8155,8 +8772,8 @@ fi + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else +- echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5 +-echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6 ++ { echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5 ++echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6; } + XGETTEXT=":" + fi + fi +@@ -8205,8 +8822,8 @@ _ACEOF + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else +- echo "$as_me:$LINENO: checking for catalogs to be installed" >&5 +-echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for catalogs to be installed" >&5 ++echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6; } + NEW_LINGUAS= + for lang in ${LINGUAS=$ALL_LINGUAS}; do + case "$ALL_LINGUAS" in +@@ -8214,8 +8831,8 @@ echo $ECHO_N "checking for catalogs to b + esac + done + LINGUAS=$NEW_LINGUAS +- echo "$as_me:$LINENO: result: $LINGUAS" >&5 +-echo "${ECHO_T}$LINGUAS" >&6 ++ { echo "$as_me:$LINENO: result: $LINGUAS" >&5 ++echo "${ECHO_T}$LINGUAS" >&6; } + fi + + if test -n "$LINGUAS"; then +@@ -8234,17 +8851,17 @@ echo "${ECHO_T}$LINGUAS" >&6 + if test -f $srcdir/po2tbl.sed.in; then + if test "$CATOBJEXT" = ".cat"; then + if test "${ac_cv_header_linux_version_h+set}" = set; then +- echo "$as_me:$LINENO: checking for linux/version.h" >&5 +-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for linux/version.h" >&5 ++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; } + if test "${ac_cv_header_linux_version_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 +-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking linux/version.h usability" >&5 +-echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking linux/version.h usability" >&5 ++echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8255,41 +8872,37 @@ $ac_includes_default + #include + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking linux/version.h presence" >&5 +-echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking linux/version.h presence" >&5 ++echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8298,24 +8911,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -8323,9 +8934,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -8349,25 +8961,18 @@ echo "$as_me: WARNING: linux/version.h: + echo "$as_me: WARNING: linux/version.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: linux/version.h: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: linux/version.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for linux/version.h" >&5 +-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for linux/version.h" >&5 ++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; } + if test "${ac_cv_header_linux_version_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_cv_header_linux_version_h=$ac_header_preproc + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 +-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; } + + fi + if test $ac_cv_header_linux_version_h = yes; then +@@ -8434,8 +9039,8 @@ fi + # 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. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } + if test -z "$INSTALL"; then + if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -8457,7 +9062,7 @@ case $as_dir/ in + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ++ 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. +@@ -8476,21 +9081,22 @@ case $as_dir/ in + ;; + esac + done ++IFS=$as_save_IFS + + + 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. We don't cache a +- # path for INSTALL within a source directory, because that will ++ # 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 path is relative. ++ # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi + fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -8507,8 +9113,8 @@ BFD_HOST_64_BIT_DEFINED=0 + BFD_HOST_64_BIT= + BFD_HOST_U_64_BIT= + +-echo "$as_me:$LINENO: checking for long long" >&5 +-echo $ECHO_N "checking for long long... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for long long" >&5 ++echo $ECHO_N "checking for long long... $ECHO_C" >&6; } + if test "${bfd_cv_has_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8528,43 +9134,39 @@ unsigned long long ll = 1844674407370955 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_has_long_long=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_has_long_long=no ++ bfd_cv_has_long_long=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + +-echo "$as_me:$LINENO: result: $bfd_cv_has_long_long" >&5 +-echo "${ECHO_T}$bfd_cv_has_long_long" >&6 ++{ echo "$as_me:$LINENO: result: $bfd_cv_has_long_long" >&5 ++echo "${ECHO_T}$bfd_cv_has_long_long" >&6; } + if test $bfd_cv_has_long_long = yes; then + BFD_HOST_LONG_LONG=1 +- echo "$as_me:$LINENO: checking for long long" >&5 +-echo $ECHO_N "checking for long long... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for long long" >&5 ++echo $ECHO_N "checking for long long... $ECHO_C" >&6; } + if test "${ac_cv_type_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8575,61 +9177,57 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++typedef long long ac__type_new_; + int + main () + { +-if ((long long *) 0) ++if ((ac__type_new_ *) 0) + return 0; +-if (sizeof (long long)) ++if (sizeof (ac__type_new_)) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_type_long_long=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_long_long=no ++ ac_cv_type_long_long=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 +-echo "${ECHO_T}$ac_cv_type_long_long" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 ++echo "${ECHO_T}$ac_cv_type_long_long" >&6; } + +-echo "$as_me:$LINENO: checking size of long long" >&5 +-echo $ECHO_N "checking size of long long... $ECHO_C" >&6 ++# The cast to long int works around a bug in the HP C Compiler ++# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects ++# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. ++# This bug is HP SR number 8606223364. ++{ echo "$as_me:$LINENO: checking size of long long" >&5 ++echo $ECHO_N "checking size of long long... $ECHO_C" >&6; } + if test "${ac_cv_sizeof_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test "$ac_cv_type_long_long" = yes; then +- # The cast to unsigned long works around a bug in the HP C Compiler +- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +- # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. + cat >conftest.$ac_ext <<_ACEOF +@@ -8639,10 +9237,11 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++ typedef long long ac__type_sizeof_; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= 0)]; ++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; + test_array [0] = 0 + + ; +@@ -8650,27 +9249,22 @@ test_array [0] = 0 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +@@ -8680,10 +9274,11 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++ typedef long long ac__type_sizeof_; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; ++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; + test_array [0] = 0 + + ; +@@ -8691,56 +9286,53 @@ test_array [0] = 0 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid; break + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_lo=`expr $ac_mid + 1` +- if test $ac_lo -le $ac_mid; then +- ac_lo= ac_hi= +- break +- fi +- ac_mid=`expr 2 '*' $ac_mid + 1` ++ ac_lo=`expr $ac_mid + 1` ++ if test $ac_lo -le $ac_mid; then ++ ac_lo= ac_hi= ++ break ++ fi ++ ac_mid=`expr 2 '*' $ac_mid + 1` + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-cat >conftest.$ac_ext <<_ACEOF ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++ typedef long long ac__type_sizeof_; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (long long))) < 0)]; ++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; + test_array [0] = 0 + + ; +@@ -8748,27 +9340,22 @@ test_array [0] = 0 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +@@ -8778,10 +9365,11 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++ typedef long long ac__type_sizeof_; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)]; ++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; + test_array [0] = 0 + + ; +@@ -8789,50 +9377,48 @@ test_array [0] = 0 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_lo=$ac_mid; break + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_hi=`expr '(' $ac_mid ')' - 1` +- if test $ac_mid -le $ac_hi; then +- ac_lo= ac_hi= +- break +- fi +- ac_mid=`expr 2 '*' $ac_mid` ++ ac_hi=`expr '(' $ac_mid ')' - 1` ++ if test $ac_mid -le $ac_hi; then ++ ac_lo= ac_hi= ++ break ++ fi ++ ac_mid=`expr 2 '*' $ac_mid` + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_lo= ac_hi= ++ ac_lo= ac_hi= + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + # Binary search between lo and hi bounds. + while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` +@@ -8843,10 +9429,11 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++ typedef long long ac__type_sizeof_; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; ++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; + test_array [0] = 0 + + ; +@@ -8854,52 +9441,45 @@ test_array [0] = 0 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_lo=`expr '(' $ac_mid ')' + 1` ++ ac_lo=`expr '(' $ac_mid ')' + 1` + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done + case $ac_lo in + ?*) ac_cv_sizeof_long_long=$ac_lo;; +-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 ++'') if test "$ac_cv_type_long_long" = yes; then ++ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long) + See \`config.log' for more details." >&5 +-echo "$as_me: error: cannot compute sizeof (long long), 77 ++echo "$as_me: error: cannot compute sizeof (long long) + See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } ;; ++ { (exit 77); exit 77; }; } ++ else ++ ac_cv_sizeof_long_long=0 ++ fi ;; + esac + else +- if test "$cross_compiling" = yes; then +- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +-See \`config.log' for more details." >&5 +-echo "$as_me: error: cannot run test program while cross compiling +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +-else + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8907,8 +9487,9 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default +-long longval () { return (long) (sizeof (long long)); } +-unsigned long ulongval () { return (long) (sizeof (long long)); } ++ typedef long long ac__type_sizeof_; ++static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } ++static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } + #include + #include + int +@@ -8917,35 +9498,44 @@ main () + + FILE *f = fopen ("conftest.val", "w"); + if (! f) +- exit (1); +- if (((long) (sizeof (long long))) < 0) ++ return 1; ++ if (((long int) (sizeof (ac__type_sizeof_))) < 0) + { +- long i = longval (); +- if (i != ((long) (sizeof (long long)))) +- exit (1); ++ long int i = longval (); ++ if (i != ((long int) (sizeof (ac__type_sizeof_)))) ++ return 1; + fprintf (f, "%ld\n", i); + } + else + { +- unsigned long i = ulongval (); +- if (i != ((long) (sizeof (long long)))) +- exit (1); ++ unsigned long int i = ulongval (); ++ if (i != ((long int) (sizeof (ac__type_sizeof_)))) ++ return 1; + fprintf (f, "%lu\n", i); + } +- exit (ferror (f) || fclose (f) != 0); ++ return ferror (f) || fclose (f) != 0; + + ; + return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -8956,22 +9546,25 @@ echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + ( exit $ac_status ) +-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 ++if test "$ac_cv_type_long_long" = yes; then ++ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long) + See \`config.log' for more details." >&5 +-echo "$as_me: error: cannot compute sizeof (long long), 77 ++echo "$as_me: error: cannot compute sizeof (long long) + See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +-fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++ { (exit 77); exit 77; }; } ++ else ++ ac_cv_sizeof_long_long=0 ++ fi + fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi + rm -f conftest.val +-else +- ac_cv_sizeof_long_long=0 +-fi + fi +-echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 +-echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6; } ++ ++ ++ + cat >>confdefs.h <<_ACEOF + #define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long + _ACEOF +@@ -8979,8 +9572,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for long" >&5 +-echo $ECHO_N "checking for long... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for long" >&5 ++echo $ECHO_N "checking for long... $ECHO_C" >&6; } + if test "${ac_cv_type_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8991,61 +9584,57 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++typedef long ac__type_new_; + int + main () + { +-if ((long *) 0) ++if ((ac__type_new_ *) 0) + return 0; +-if (sizeof (long)) ++if (sizeof (ac__type_new_)) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_type_long=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_long=no ++ ac_cv_type_long=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 +-echo "${ECHO_T}$ac_cv_type_long" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 ++echo "${ECHO_T}$ac_cv_type_long" >&6; } + +-echo "$as_me:$LINENO: checking size of long" >&5 +-echo $ECHO_N "checking size of long... $ECHO_C" >&6 ++# The cast to long int works around a bug in the HP C Compiler ++# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects ++# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. ++# This bug is HP SR number 8606223364. ++{ echo "$as_me:$LINENO: checking size of long" >&5 ++echo $ECHO_N "checking size of long... $ECHO_C" >&6; } + if test "${ac_cv_sizeof_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test "$ac_cv_type_long" = yes; then +- # The cast to unsigned long works around a bug in the HP C Compiler +- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +- # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. + cat >conftest.$ac_ext <<_ACEOF +@@ -9055,10 +9644,11 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++ typedef long ac__type_sizeof_; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)]; ++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; + test_array [0] = 0 + + ; +@@ -9066,27 +9656,22 @@ test_array [0] = 0 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +@@ -9096,10 +9681,11 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++ typedef long ac__type_sizeof_; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; ++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; + test_array [0] = 0 + + ; +@@ -9107,56 +9693,53 @@ test_array [0] = 0 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid; break + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_lo=`expr $ac_mid + 1` +- if test $ac_lo -le $ac_mid; then +- ac_lo= ac_hi= +- break +- fi +- ac_mid=`expr 2 '*' $ac_mid + 1` ++ ac_lo=`expr $ac_mid + 1` ++ if test $ac_lo -le $ac_mid; then ++ ac_lo= ac_hi= ++ break ++ fi ++ ac_mid=`expr 2 '*' $ac_mid + 1` + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-cat >conftest.$ac_ext <<_ACEOF ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++ typedef long ac__type_sizeof_; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)]; ++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; + test_array [0] = 0 + + ; +@@ -9164,27 +9747,22 @@ test_array [0] = 0 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +@@ -9194,10 +9772,11 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++ typedef long ac__type_sizeof_; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)]; ++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; + test_array [0] = 0 + + ; +@@ -9205,50 +9784,48 @@ test_array [0] = 0 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_lo=$ac_mid; break + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_hi=`expr '(' $ac_mid ')' - 1` +- if test $ac_mid -le $ac_hi; then +- ac_lo= ac_hi= +- break +- fi +- ac_mid=`expr 2 '*' $ac_mid` ++ ac_hi=`expr '(' $ac_mid ')' - 1` ++ if test $ac_mid -le $ac_hi; then ++ ac_lo= ac_hi= ++ break ++ fi ++ ac_mid=`expr 2 '*' $ac_mid` + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_lo= ac_hi= ++ ac_lo= ac_hi= + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + # Binary search between lo and hi bounds. + while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` +@@ -9259,10 +9836,11 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++ typedef long ac__type_sizeof_; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; ++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; + test_array [0] = 0 + + ; +@@ -9270,52 +9848,45 @@ test_array [0] = 0 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_lo=`expr '(' $ac_mid ')' + 1` ++ ac_lo=`expr '(' $ac_mid ')' + 1` + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done + case $ac_lo in + ?*) ac_cv_sizeof_long=$ac_lo;; +-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 ++'') if test "$ac_cv_type_long" = yes; then ++ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long) + See \`config.log' for more details." >&5 +-echo "$as_me: error: cannot compute sizeof (long), 77 ++echo "$as_me: error: cannot compute sizeof (long) + See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } ;; ++ { (exit 77); exit 77; }; } ++ else ++ ac_cv_sizeof_long=0 ++ fi ;; + esac + else +- if test "$cross_compiling" = yes; then +- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +-See \`config.log' for more details." >&5 +-echo "$as_me: error: cannot run test program while cross compiling +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +-else + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -9323,8 +9894,9 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default +-long longval () { return (long) (sizeof (long)); } +-unsigned long ulongval () { return (long) (sizeof (long)); } ++ typedef long ac__type_sizeof_; ++static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } ++static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } + #include + #include + int +@@ -9333,35 +9905,44 @@ main () + + FILE *f = fopen ("conftest.val", "w"); + if (! f) +- exit (1); +- if (((long) (sizeof (long))) < 0) ++ return 1; ++ if (((long int) (sizeof (ac__type_sizeof_))) < 0) + { +- long i = longval (); +- if (i != ((long) (sizeof (long)))) +- exit (1); ++ long int i = longval (); ++ if (i != ((long int) (sizeof (ac__type_sizeof_)))) ++ return 1; + fprintf (f, "%ld\n", i); + } + else + { +- unsigned long i = ulongval (); +- if (i != ((long) (sizeof (long)))) +- exit (1); ++ unsigned long int i = ulongval (); ++ if (i != ((long int) (sizeof (ac__type_sizeof_)))) ++ return 1; + fprintf (f, "%lu\n", i); + } +- exit (ferror (f) || fclose (f) != 0); ++ return ferror (f) || fclose (f) != 0; + + ; + return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -9372,22 +9953,25 @@ echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + ( exit $ac_status ) +-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 ++if test "$ac_cv_type_long" = yes; then ++ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long) + See \`config.log' for more details." >&5 +-echo "$as_me: error: cannot compute sizeof (long), 77 ++echo "$as_me: error: cannot compute sizeof (long) + See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +-fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++ { (exit 77); exit 77; }; } ++ else ++ ac_cv_sizeof_long=0 ++ fi + fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi + rm -f conftest.val +-else +- ac_cv_sizeof_long=0 +-fi + fi +-echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 +-echo "${ECHO_T}$ac_cv_sizeof_long" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_long" >&6; } ++ ++ ++ + cat >>confdefs.h <<_ACEOF + #define SIZEOF_LONG $ac_cv_sizeof_long + _ACEOF +@@ -9428,8 +10012,8 @@ fi + if test "x$cross_compiling" = "xno"; then + EXEEXT_FOR_BUILD='$(EXEEXT)' + else +- echo "$as_me:$LINENO: checking for build system executable suffix" >&5 +-echo $ECHO_N "checking for build system executable suffix... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for build system executable suffix" >&5 ++echo $ECHO_N "checking for build system executable suffix... $ECHO_C" >&6; } + if test "${bfd_cv_build_exeext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9446,8 +10030,8 @@ else + rm -f conftest* + test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no + fi +-echo "$as_me:$LINENO: result: $bfd_cv_build_exeext" >&5 +-echo "${ECHO_T}$bfd_cv_build_exeext" >&6 ++{ echo "$as_me:$LINENO: result: $bfd_cv_build_exeext" >&5 ++echo "${ECHO_T}$bfd_cv_build_exeext" >&6; } + EXEEXT_FOR_BUILD="" + test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext} + fi +@@ -9462,18 +10046,19 @@ fi + for ac_header in stddef.h string.h strings.h stdlib.h time.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -9484,41 +10069,37 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -9527,24 +10108,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -9552,9 +10131,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -9578,25 +10158,19 @@ echo "$as_me: WARNING: $ac_header: s + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -9614,18 +10188,19 @@ done + for ac_header in fcntl.h sys/file.h sys/time.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -9636,41 +10211,37 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -9679,24 +10250,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -9704,9 +10273,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -9730,25 +10300,19 @@ echo "$as_me: WARNING: $ac_header: s + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -9760,8 +10324,8 @@ fi + + done + +-echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +-echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 ++echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; } + if test "${ac_cv_header_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9785,38 +10349,34 @@ return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_header_time=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_header_time=no ++ ac_cv_header_time=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +-echo "${ECHO_T}$ac_cv_header_time" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 ++echo "${ECHO_T}$ac_cv_header_time" >&6; } + if test $ac_cv_header_time = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -9833,9 +10393,9 @@ fi + ac_header_dirent=no + for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 +-echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 ++echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -9857,38 +10417,35 @@ return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_Header=no" ++ eval "$as_ac_Header=no" + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +@@ -9900,13 +10457,12 @@ fi + done + # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. + if test $ac_header_dirent = dirent.h; then +- echo "$as_me:$LINENO: checking for library containing opendir" >&5 +-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for library containing opendir" >&5 ++echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } + if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_func_search_save_LIBS=$LIBS +-ac_cv_search_opendir=no + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -9914,126 +10470,83 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char opendir (); + int + main () + { +-opendir (); ++return opendir (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++for ac_lib in '' dir; do ++ if test -z "$ac_lib"; then ++ ac_res="none required" ++ else ++ ac_res=-l$ac_lib ++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" ++ fi ++ rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_opendir="none required" ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_search_opendir=$ac_res + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-if test "$ac_cv_search_opendir" = no; then +- for ac_lib in dir; do +- LIBS="-l$ac_lib $ac_func_search_save_LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char opendir (); +-int +-main () +-{ +-opendir (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_opendir="-l$ac_lib" +-break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++fi + ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext ++ if test "${ac_cv_search_opendir+set}" = set; then ++ break + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- done ++done ++if test "${ac_cv_search_opendir+set}" = set; then ++ : ++else ++ ac_cv_search_opendir=no + fi ++rm conftest.$ac_ext + LIBS=$ac_func_search_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +-echo "${ECHO_T}$ac_cv_search_opendir" >&6 +-if test "$ac_cv_search_opendir" != no; then +- test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" ++{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 ++echo "${ECHO_T}$ac_cv_search_opendir" >&6; } ++ac_res=$ac_cv_search_opendir ++if test "$ac_res" != no; then ++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + fi + + else +- echo "$as_me:$LINENO: checking for library containing opendir" >&5 +-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for library containing opendir" >&5 ++echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } + if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_func_search_save_LIBS=$LIBS +-ac_cv_search_opendir=no + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -10041,122 +10554,80 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char opendir (); + int + main () + { +-opendir (); ++return opendir (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++for ac_lib in '' x; do ++ if test -z "$ac_lib"; then ++ ac_res="none required" ++ else ++ ac_res=-l$ac_lib ++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" ++ fi ++ rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_opendir="none required" ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_search_opendir=$ac_res + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-if test "$ac_cv_search_opendir" = no; then +- for ac_lib in x; do +- LIBS="-l$ac_lib $ac_func_search_save_LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char opendir (); +-int +-main () +-{ +-opendir (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_opendir="-l$ac_lib" +-break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++fi + ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext ++ if test "${ac_cv_search_opendir+set}" = set; then ++ break + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- done ++done ++if test "${ac_cv_search_opendir+set}" = set; then ++ : ++else ++ ac_cv_search_opendir=no + fi ++rm conftest.$ac_ext + LIBS=$ac_func_search_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +-echo "${ECHO_T}$ac_cv_search_opendir" >&6 +-if test "$ac_cv_search_opendir" != no; then +- test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" ++{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 ++echo "${ECHO_T}$ac_cv_search_opendir" >&6; } ++ac_res=$ac_cv_search_opendir ++if test "$ac_res" != no; then ++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + fi + + fi + +-echo "$as_me:$LINENO: checking whether string.h and strings.h may both be included" >&5 +-echo $ECHO_N "checking whether string.h and strings.h may both be included... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether string.h and strings.h may both be included" >&5 ++echo $ECHO_N "checking whether string.h and strings.h may both be included... $ECHO_C" >&6; } + if test "${gcc_cv_header_string+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10177,38 +10648,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + gcc_cv_header_string=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-gcc_cv_header_string=no ++ gcc_cv_header_string=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $gcc_cv_header_string" >&5 +-echo "${ECHO_T}$gcc_cv_header_string" >&6 ++{ echo "$as_me:$LINENO: result: $gcc_cv_header_string" >&5 ++echo "${ECHO_T}$gcc_cv_header_string" >&6; } + if test $gcc_cv_header_string = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -10227,9 +10694,9 @@ fi + for ac_func in fcntl getpagesize setitimer sysconf fdopen getuid getgid + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -10255,68 +10722,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -10329,9 +10788,9 @@ done + for ac_func in strtoull + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -10357,68 +10816,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -10428,8 +10879,8 @@ fi + done + + +-echo "$as_me:$LINENO: checking whether basename is declared" >&5 +-echo $ECHO_N "checking whether basename is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether basename is declared" >&5 ++echo $ECHO_N "checking whether basename is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_basename+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10444,7 +10895,7 @@ int + main () + { + #ifndef basename +- char *p = (char *) basename; ++ (void) basename; + #endif + + ; +@@ -10452,38 +10903,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_basename=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_basename=no ++ ac_cv_have_decl_basename=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_basename" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_basename" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_basename" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_basename" >&6; } + if test $ac_cv_have_decl_basename = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10500,8 +10947,8 @@ _ACEOF + fi + + +-echo "$as_me:$LINENO: checking whether ftello is declared" >&5 +-echo $ECHO_N "checking whether ftello is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether ftello is declared" >&5 ++echo $ECHO_N "checking whether ftello is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_ftello+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10516,7 +10963,7 @@ int + main () + { + #ifndef ftello +- char *p = (char *) ftello; ++ (void) ftello; + #endif + + ; +@@ -10524,38 +10971,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_ftello=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_ftello=no ++ ac_cv_have_decl_ftello=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_ftello" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_ftello" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_ftello" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_ftello" >&6; } + if test $ac_cv_have_decl_ftello = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10572,8 +11015,8 @@ _ACEOF + fi + + +-echo "$as_me:$LINENO: checking whether ftello64 is declared" >&5 +-echo $ECHO_N "checking whether ftello64 is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether ftello64 is declared" >&5 ++echo $ECHO_N "checking whether ftello64 is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_ftello64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10588,7 +11031,7 @@ int + main () + { + #ifndef ftello64 +- char *p = (char *) ftello64; ++ (void) ftello64; + #endif + + ; +@@ -10596,38 +11039,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_ftello64=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_ftello64=no ++ ac_cv_have_decl_ftello64=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_ftello64" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_ftello64" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_ftello64" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_ftello64" >&6; } + if test $ac_cv_have_decl_ftello64 = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10644,8 +11083,8 @@ _ACEOF + fi + + +-echo "$as_me:$LINENO: checking whether fseeko is declared" >&5 +-echo $ECHO_N "checking whether fseeko is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether fseeko is declared" >&5 ++echo $ECHO_N "checking whether fseeko is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_fseeko+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10660,7 +11099,7 @@ int + main () + { + #ifndef fseeko +- char *p = (char *) fseeko; ++ (void) fseeko; + #endif + + ; +@@ -10668,38 +11107,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_fseeko=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_fseeko=no ++ ac_cv_have_decl_fseeko=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_fseeko" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_fseeko" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_fseeko" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_fseeko" >&6; } + if test $ac_cv_have_decl_fseeko = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10716,8 +11151,8 @@ _ACEOF + fi + + +-echo "$as_me:$LINENO: checking whether fseeko64 is declared" >&5 +-echo $ECHO_N "checking whether fseeko64 is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether fseeko64 is declared" >&5 ++echo $ECHO_N "checking whether fseeko64 is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_fseeko64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10732,7 +11167,7 @@ int + main () + { + #ifndef fseeko64 +- char *p = (char *) fseeko64; ++ (void) fseeko64; + #endif + + ; +@@ -10740,38 +11175,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_fseeko64=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_fseeko64=no ++ ac_cv_have_decl_fseeko64=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_fseeko64" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_fseeko64" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_fseeko64" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_fseeko64" >&6; } + if test $ac_cv_have_decl_fseeko64 = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10799,8 +11230,8 @@ _ACEOF + ;; + esac + +-echo "$as_me:$LINENO: checking whether ffs is declared" >&5 +-echo $ECHO_N "checking whether ffs is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether ffs is declared" >&5 ++echo $ECHO_N "checking whether ffs is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_ffs+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10815,7 +11246,7 @@ int + main () + { + #ifndef ffs +- char *p = (char *) ffs; ++ (void) ffs; + #endif + + ; +@@ -10823,38 +11254,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_ffs=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_ffs=no ++ ac_cv_have_decl_ffs=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_ffs" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_ffs" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_ffs" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_ffs" >&6; } + if test $ac_cv_have_decl_ffs = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10871,8 +11298,8 @@ _ACEOF + fi + + +-echo "$as_me:$LINENO: checking whether free is declared" >&5 +-echo $ECHO_N "checking whether free is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether free is declared" >&5 ++echo $ECHO_N "checking whether free is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_free+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10887,7 +11314,7 @@ int + main () + { + #ifndef free +- char *p = (char *) free; ++ (void) free; + #endif + + ; +@@ -10895,38 +11322,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_free=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_free=no ++ ac_cv_have_decl_free=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_free" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_free" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_free" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_free" >&6; } + if test $ac_cv_have_decl_free = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10943,8 +11366,8 @@ _ACEOF + fi + + +-echo "$as_me:$LINENO: checking whether getenv is declared" >&5 +-echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether getenv is declared" >&5 ++echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_getenv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10959,7 +11382,7 @@ int + main () + { + #ifndef getenv +- char *p = (char *) getenv; ++ (void) getenv; + #endif + + ; +@@ -10967,38 +11390,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_getenv=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_getenv=no ++ ac_cv_have_decl_getenv=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6; } + if test $ac_cv_have_decl_getenv = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -11015,8 +11434,8 @@ _ACEOF + fi + + +-echo "$as_me:$LINENO: checking whether malloc is declared" >&5 +-echo $ECHO_N "checking whether malloc is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether malloc is declared" >&5 ++echo $ECHO_N "checking whether malloc is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_malloc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -11031,7 +11450,7 @@ int + main () + { + #ifndef malloc +- char *p = (char *) malloc; ++ (void) malloc; + #endif + + ; +@@ -11039,38 +11458,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_malloc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_malloc=no ++ ac_cv_have_decl_malloc=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_malloc" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_malloc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_malloc" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_malloc" >&6; } + if test $ac_cv_have_decl_malloc = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -11087,8 +11502,8 @@ _ACEOF + fi + + +-echo "$as_me:$LINENO: checking whether realloc is declared" >&5 +-echo $ECHO_N "checking whether realloc is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether realloc is declared" >&5 ++echo $ECHO_N "checking whether realloc is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_realloc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -11103,7 +11518,7 @@ int + main () + { + #ifndef realloc +- char *p = (char *) realloc; ++ (void) realloc; + #endif + + ; +@@ -11111,38 +11526,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_realloc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_realloc=no ++ ac_cv_have_decl_realloc=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_realloc" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_realloc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_realloc" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_realloc" >&6; } + if test $ac_cv_have_decl_realloc = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -11159,8 +11570,8 @@ _ACEOF + fi + + +-echo "$as_me:$LINENO: checking whether stpcpy is declared" >&5 +-echo $ECHO_N "checking whether stpcpy is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether stpcpy is declared" >&5 ++echo $ECHO_N "checking whether stpcpy is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_stpcpy+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -11175,7 +11586,7 @@ int + main () + { + #ifndef stpcpy +- char *p = (char *) stpcpy; ++ (void) stpcpy; + #endif + + ; +@@ -11183,38 +11594,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_stpcpy=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_stpcpy=no ++ ac_cv_have_decl_stpcpy=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_stpcpy" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_stpcpy" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_stpcpy" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_stpcpy" >&6; } + if test $ac_cv_have_decl_stpcpy = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -11231,8 +11638,8 @@ _ACEOF + fi + + +-echo "$as_me:$LINENO: checking whether strstr is declared" >&5 +-echo $ECHO_N "checking whether strstr is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether strstr is declared" >&5 ++echo $ECHO_N "checking whether strstr is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_strstr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -11247,7 +11654,7 @@ int + main () + { + #ifndef strstr +- char *p = (char *) strstr; ++ (void) strstr; + #endif + + ; +@@ -11255,38 +11662,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_strstr=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_strstr=no ++ ac_cv_have_decl_strstr=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_strstr" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_strstr" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strstr" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_strstr" >&6; } + if test $ac_cv_have_decl_strstr = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -11303,8 +11706,8 @@ _ACEOF + fi + + +-echo "$as_me:$LINENO: checking whether snprintf is declared" >&5 +-echo $ECHO_N "checking whether snprintf is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether snprintf is declared" >&5 ++echo $ECHO_N "checking whether snprintf is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_snprintf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -11319,7 +11722,7 @@ int + main () + { + #ifndef snprintf +- char *p = (char *) snprintf; ++ (void) snprintf; + #endif + + ; +@@ -11327,38 +11730,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_snprintf=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_snprintf=no ++ ac_cv_have_decl_snprintf=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_snprintf" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_snprintf" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_snprintf" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_snprintf" >&6; } + if test $ac_cv_have_decl_snprintf = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -11375,8 +11774,8 @@ _ACEOF + fi + + +-echo "$as_me:$LINENO: checking whether vsnprintf is declared" >&5 +-echo $ECHO_N "checking whether vsnprintf is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether vsnprintf is declared" >&5 ++echo $ECHO_N "checking whether vsnprintf is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_vsnprintf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -11391,7 +11790,7 @@ int + main () + { + #ifndef vsnprintf +- char *p = (char *) vsnprintf; ++ (void) vsnprintf; + #endif + + ; +@@ -11399,38 +11798,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_vsnprintf=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_vsnprintf=no ++ ac_cv_have_decl_vsnprintf=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_vsnprintf" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_vsnprintf" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_vsnprintf" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_vsnprintf" >&6; } + if test $ac_cv_have_decl_vsnprintf = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -11609,8 +12004,8 @@ if test "${target}" = "${host}"; then + COREFLAG="$COREFLAG -DAIX_CORE_DUMPX_CORE" + # Not all versions of AIX with -DAIX_CORE_DUMPX_CORE + # have c_impl as a member of struct core_dumpx +- echo "$as_me:$LINENO: checking for c_impl in struct core_dumpx" >&5 +-echo $ECHO_N "checking for c_impl in struct core_dumpx... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for c_impl in struct core_dumpx" >&5 ++echo $ECHO_N "checking for c_impl in struct core_dumpx... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -11627,42 +12022,38 @@ struct core_dumpx c; c.c_impl = 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + + cat >>confdefs.h <<\_ACEOF + #define HAVE_ST_C_IMPL 1 + _ACEOF + +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + rs6000-*-aix4*) COREFILE=rs6000-core.lo ;; + rs6000-*-*) COREFILE=rs6000-core.lo ;; +@@ -11726,18 +12117,19 @@ rm -f conftest.err conftest.$ac_objext c + for ac_header in sys/procfs.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -11748,41 +12140,37 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -11791,24 +12179,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -11816,9 +12202,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -11842,25 +12229,19 @@ echo "$as_me: WARNING: $ac_header: s + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -11873,8 +12254,8 @@ fi + done + + if test "$ac_cv_header_sys_procfs_h" = yes; then +- echo "$as_me:$LINENO: checking for prstatus_t in sys/procfs.h" >&5 +-echo $ECHO_N "checking for prstatus_t in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for prstatus_t in sys/procfs.h" >&5 ++echo $ECHO_N "checking for prstatus_t in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_prstatus_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -11896,36 +12277,32 @@ prstatus_t avar + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_prstatus_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_prstatus_t=no ++ bfd_cv_have_sys_procfs_type_prstatus_t=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_prstatus_t = yes; then +@@ -11935,11 +12312,11 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prstatus_t" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prstatus_t" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prstatus_t" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prstatus_t" >&6; } + +- echo "$as_me:$LINENO: checking for prstatus32_t in sys/procfs.h" >&5 +-echo $ECHO_N "checking for prstatus32_t in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for prstatus32_t in sys/procfs.h" >&5 ++echo $ECHO_N "checking for prstatus32_t in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_prstatus32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -11961,36 +12338,32 @@ prstatus32_t avar + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_prstatus32_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_prstatus32_t=no ++ bfd_cv_have_sys_procfs_type_prstatus32_t=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_prstatus32_t = yes; then +@@ -12000,11 +12373,11 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prstatus32_t" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prstatus32_t" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prstatus32_t" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prstatus32_t" >&6; } + +- echo "$as_me:$LINENO: checking for prstatus_t.pr_who in sys/procfs.h" >&5 +-echo $ECHO_N "checking for prstatus_t.pr_who in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for prstatus_t.pr_who in sys/procfs.h" >&5 ++echo $ECHO_N "checking for prstatus_t.pr_who in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -12026,36 +12399,32 @@ prstatus_t avar; void* aref = (void*) &a + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who=no ++ bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who = yes; then +@@ -12065,11 +12434,11 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who" >&6; } + +- echo "$as_me:$LINENO: checking for prstatus32_t.pr_who in sys/procfs.h" >&5 +-echo $ECHO_N "checking for prstatus32_t.pr_who in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for prstatus32_t.pr_who in sys/procfs.h" >&5 ++echo $ECHO_N "checking for prstatus32_t.pr_who in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -12091,36 +12460,32 @@ prstatus32_t avar; void* aref = (void*) + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who=no ++ bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who = yes; then +@@ -12130,11 +12495,11 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who" >&6; } + +- echo "$as_me:$LINENO: checking for pstatus_t in sys/procfs.h" >&5 +-echo $ECHO_N "checking for pstatus_t in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for pstatus_t in sys/procfs.h" >&5 ++echo $ECHO_N "checking for pstatus_t in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_pstatus_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -12156,36 +12521,32 @@ pstatus_t avar + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_pstatus_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_pstatus_t=no ++ bfd_cv_have_sys_procfs_type_pstatus_t=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_pstatus_t = yes; then +@@ -12195,11 +12556,11 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_pstatus_t" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_pstatus_t" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_pstatus_t" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_pstatus_t" >&6; } + +- echo "$as_me:$LINENO: checking for pxstatus_t in sys/procfs.h" >&5 +-echo $ECHO_N "checking for pxstatus_t in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for pxstatus_t in sys/procfs.h" >&5 ++echo $ECHO_N "checking for pxstatus_t in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_pxstatus_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -12221,36 +12582,32 @@ pxstatus_t avar + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_pxstatus_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_pxstatus_t=no ++ bfd_cv_have_sys_procfs_type_pxstatus_t=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_pxstatus_t = yes; then +@@ -12260,11 +12617,11 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_pxstatus_t" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_pxstatus_t" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_pxstatus_t" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_pxstatus_t" >&6; } + +- echo "$as_me:$LINENO: checking for pstatus32_t in sys/procfs.h" >&5 +-echo $ECHO_N "checking for pstatus32_t in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for pstatus32_t in sys/procfs.h" >&5 ++echo $ECHO_N "checking for pstatus32_t in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_pstatus32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -12286,36 +12643,32 @@ pstatus32_t avar + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_pstatus32_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_pstatus32_t=no ++ bfd_cv_have_sys_procfs_type_pstatus32_t=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_pstatus32_t = yes; then +@@ -12325,11 +12678,11 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_pstatus32_t" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_pstatus32_t" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_pstatus32_t" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_pstatus32_t" >&6; } + +- echo "$as_me:$LINENO: checking for prpsinfo_t in sys/procfs.h" >&5 +-echo $ECHO_N "checking for prpsinfo_t in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for prpsinfo_t in sys/procfs.h" >&5 ++echo $ECHO_N "checking for prpsinfo_t in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_prpsinfo_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -12351,36 +12704,32 @@ prpsinfo_t avar + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_prpsinfo_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_prpsinfo_t=no ++ bfd_cv_have_sys_procfs_type_prpsinfo_t=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_prpsinfo_t = yes; then +@@ -12390,11 +12739,11 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prpsinfo_t" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prpsinfo_t" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prpsinfo_t" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prpsinfo_t" >&6; } + +- echo "$as_me:$LINENO: checking for prpsinfo32_t in sys/procfs.h" >&5 +-echo $ECHO_N "checking for prpsinfo32_t in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for prpsinfo32_t in sys/procfs.h" >&5 ++echo $ECHO_N "checking for prpsinfo32_t in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_prpsinfo32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -12416,36 +12765,32 @@ prpsinfo32_t avar + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_prpsinfo32_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_prpsinfo32_t=no ++ bfd_cv_have_sys_procfs_type_prpsinfo32_t=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_prpsinfo32_t = yes; then +@@ -12455,11 +12800,11 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prpsinfo32_t" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prpsinfo32_t" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prpsinfo32_t" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prpsinfo32_t" >&6; } + +- echo "$as_me:$LINENO: checking for psinfo_t in sys/procfs.h" >&5 +-echo $ECHO_N "checking for psinfo_t in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for psinfo_t in sys/procfs.h" >&5 ++echo $ECHO_N "checking for psinfo_t in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_psinfo_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -12481,36 +12826,32 @@ psinfo_t avar + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_psinfo_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_psinfo_t=no ++ bfd_cv_have_sys_procfs_type_psinfo_t=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_psinfo_t = yes; then +@@ -12520,11 +12861,11 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_psinfo_t" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_psinfo_t" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_psinfo_t" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_psinfo_t" >&6; } + +- echo "$as_me:$LINENO: checking for psinfo32_t in sys/procfs.h" >&5 +-echo $ECHO_N "checking for psinfo32_t in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for psinfo32_t in sys/procfs.h" >&5 ++echo $ECHO_N "checking for psinfo32_t in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_psinfo32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -12546,36 +12887,32 @@ psinfo32_t avar + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_psinfo32_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_psinfo32_t=no ++ bfd_cv_have_sys_procfs_type_psinfo32_t=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_psinfo32_t = yes; then +@@ -12585,11 +12922,11 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_psinfo32_t" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_psinfo32_t" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_psinfo32_t" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_psinfo32_t" >&6; } + +- echo "$as_me:$LINENO: checking for lwpstatus_t in sys/procfs.h" >&5 +-echo $ECHO_N "checking for lwpstatus_t in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for lwpstatus_t in sys/procfs.h" >&5 ++echo $ECHO_N "checking for lwpstatus_t in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_lwpstatus_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -12611,36 +12948,32 @@ lwpstatus_t avar + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_lwpstatus_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_lwpstatus_t=no ++ bfd_cv_have_sys_procfs_type_lwpstatus_t=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_lwpstatus_t = yes; then +@@ -12650,11 +12983,11 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_lwpstatus_t" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_lwpstatus_t" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_lwpstatus_t" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_lwpstatus_t" >&6; } + +- echo "$as_me:$LINENO: checking for lwpxstatus_t in sys/procfs.h" >&5 +-echo $ECHO_N "checking for lwpxstatus_t in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for lwpxstatus_t in sys/procfs.h" >&5 ++echo $ECHO_N "checking for lwpxstatus_t in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_lwpxstatus_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -12676,36 +13009,32 @@ lwpxstatus_t avar + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_lwpxstatus_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_lwpxstatus_t=no ++ bfd_cv_have_sys_procfs_type_lwpxstatus_t=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_lwpxstatus_t = yes; then +@@ -12715,11 +13044,11 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_lwpxstatus_t" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_lwpxstatus_t" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_lwpxstatus_t" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_lwpxstatus_t" >&6; } + +- echo "$as_me:$LINENO: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5 +-echo $ECHO_N "checking for lwpstatus_t.pr_context in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5 ++echo $ECHO_N "checking for lwpstatus_t.pr_context in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -12741,36 +13070,32 @@ lwpstatus_t avar; void* aref = (void*) & + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context=no ++ bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context = yes; then +@@ -12780,11 +13105,11 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context" >&6; } + +- echo "$as_me:$LINENO: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5 +-echo $ECHO_N "checking for lwpstatus_t.pr_reg in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5 ++echo $ECHO_N "checking for lwpstatus_t.pr_reg in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -12806,36 +13131,32 @@ lwpstatus_t avar; void* aref = (void*) & + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg=no ++ bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg = yes; then +@@ -12845,11 +13166,11 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" >&6; } + +- echo "$as_me:$LINENO: checking for win32_pstatus_t in sys/procfs.h" >&5 +-echo $ECHO_N "checking for win32_pstatus_t in sys/procfs.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for win32_pstatus_t in sys/procfs.h" >&5 ++echo $ECHO_N "checking for win32_pstatus_t in sys/procfs.h... $ECHO_C" >&6; } + if test "${bfd_cv_have_sys_procfs_type_win32_pstatus_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -12871,36 +13192,32 @@ win32_pstatus_t avar + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bfd_cv_have_sys_procfs_type_win32_pstatus_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bfd_cv_have_sys_procfs_type_win32_pstatus_t=no ++ bfd_cv_have_sys_procfs_type_win32_pstatus_t=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + if test $bfd_cv_have_sys_procfs_type_win32_pstatus_t = yes; then +@@ -12910,8 +13227,8 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +- echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_win32_pstatus_t" >&5 +-echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_win32_pstatus_t" >&6 ++ { echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_win32_pstatus_t" >&5 ++echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_win32_pstatus_t" >&6; } + + fi + fi +@@ -13070,6 +13387,7 @@ do + bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;; + bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;; + bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;; ++ bfd_elf32_avr32_vec) tb="$tb elf32-avr32.lo elf32.lo $elf" ;; + bfd_elf32_bfin_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;; + bfd_elf32_bfinfdpic_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;; + bfd_elf32_big_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;; +@@ -13389,8 +13707,8 @@ echo "$as_me: WARNING: your compiler may + fi + if test -n "$GCC" ; then + bad_64bit_gcc=no; +- echo "$as_me:$LINENO: checking for gcc version with buggy 64-bit support" >&5 +-echo $ECHO_N "checking for gcc version with buggy 64-bit support... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for gcc version with buggy 64-bit support" >&5 ++echo $ECHO_N "checking for gcc version with buggy 64-bit support... $ECHO_C" >&6; } + # Add more tests for gcc versions with non-working 64-bit support here. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -13403,11 +13721,11 @@ _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP ": 2 : 91 : 1 :" >/dev/null 2>&1; then + bad_64bit_gcc=yes; +- echo "$as_me:$LINENO: result: yes: egcs-1.1.2 on ix86 spotted" >&5 +-echo "${ECHO_T}yes: egcs-1.1.2 on ix86 spotted" >&6 ++ { echo "$as_me:$LINENO: result: yes: egcs-1.1.2 on ix86 spotted" >&5 ++echo "${ECHO_T}yes: egcs-1.1.2 on ix86 spotted" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + rm -f conftest* + +@@ -13445,9 +13763,9 @@ esac + for ac_func in ftello ftello64 fseeko fseeko64 fopen64 + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -13473,68 +13791,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -13544,8 +13854,8 @@ fi + done + + if test x"$ac_cv_func_ftello" = xyes -a x"$ac_cv_func_fseeko" = xyes; then +- echo "$as_me:$LINENO: checking for off_t" >&5 +-echo $ECHO_N "checking for off_t... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for off_t" >&5 ++echo $ECHO_N "checking for off_t... $ECHO_C" >&6; } + if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -13556,61 +13866,57 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++typedef off_t ac__type_new_; + int + main () + { +-if ((off_t *) 0) ++if ((ac__type_new_ *) 0) + return 0; +-if (sizeof (off_t)) ++if (sizeof (ac__type_new_)) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_type_off_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_off_t=no ++ ac_cv_type_off_t=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +-echo "${ECHO_T}$ac_cv_type_off_t" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 ++echo "${ECHO_T}$ac_cv_type_off_t" >&6; } + +-echo "$as_me:$LINENO: checking size of off_t" >&5 +-echo $ECHO_N "checking size of off_t... $ECHO_C" >&6 ++# The cast to long int works around a bug in the HP C Compiler ++# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects ++# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. ++# This bug is HP SR number 8606223364. ++{ echo "$as_me:$LINENO: checking size of off_t" >&5 ++echo $ECHO_N "checking size of off_t... $ECHO_C" >&6; } + if test "${ac_cv_sizeof_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test "$ac_cv_type_off_t" = yes; then +- # The cast to unsigned long works around a bug in the HP C Compiler +- # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +- # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +- # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. + cat >conftest.$ac_ext <<_ACEOF +@@ -13620,10 +13926,11 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++ typedef off_t ac__type_sizeof_; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) >= 0)]; ++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; + test_array [0] = 0 + + ; +@@ -13631,27 +13938,22 @@ test_array [0] = 0 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +@@ -13661,10 +13963,11 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++ typedef off_t ac__type_sizeof_; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) <= $ac_mid)]; ++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; + test_array [0] = 0 + + ; +@@ -13672,56 +13975,53 @@ test_array [0] = 0 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid; break + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_lo=`expr $ac_mid + 1` +- if test $ac_lo -le $ac_mid; then +- ac_lo= ac_hi= +- break +- fi +- ac_mid=`expr 2 '*' $ac_mid + 1` ++ ac_lo=`expr $ac_mid + 1` ++ if test $ac_lo -le $ac_mid; then ++ ac_lo= ac_hi= ++ break ++ fi ++ ac_mid=`expr 2 '*' $ac_mid + 1` + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-cat >conftest.$ac_ext <<_ACEOF ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++ typedef off_t ac__type_sizeof_; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) < 0)]; ++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; + test_array [0] = 0 + + ; +@@ -13729,27 +14029,22 @@ test_array [0] = 0 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +@@ -13759,10 +14054,11 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++ typedef off_t ac__type_sizeof_; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) >= $ac_mid)]; ++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; + test_array [0] = 0 + + ; +@@ -13770,50 +14066,48 @@ test_array [0] = 0 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_lo=$ac_mid; break + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_hi=`expr '(' $ac_mid ')' - 1` +- if test $ac_mid -le $ac_hi; then +- ac_lo= ac_hi= +- break +- fi +- ac_mid=`expr 2 '*' $ac_mid` ++ ac_hi=`expr '(' $ac_mid ')' - 1` ++ if test $ac_mid -le $ac_hi; then ++ ac_lo= ac_hi= ++ break ++ fi ++ ac_mid=`expr 2 '*' $ac_mid` + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_lo= ac_hi= ++ ac_lo= ac_hi= + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + # Binary search between lo and hi bounds. + while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` +@@ -13824,10 +14118,11 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++ typedef off_t ac__type_sizeof_; + int + main () + { +-static int test_array [1 - 2 * !(((long) (sizeof (off_t))) <= $ac_mid)]; ++static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; + test_array [0] = 0 + + ; +@@ -13835,52 +14130,45 @@ test_array [0] = 0 + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_lo=`expr '(' $ac_mid ')' + 1` ++ ac_lo=`expr '(' $ac_mid ')' + 1` + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done + case $ac_lo in + ?*) ac_cv_sizeof_off_t=$ac_lo;; +-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77 ++'') if test "$ac_cv_type_off_t" = yes; then ++ { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t) + See \`config.log' for more details." >&5 +-echo "$as_me: error: cannot compute sizeof (off_t), 77 ++echo "$as_me: error: cannot compute sizeof (off_t) + See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } ;; ++ { (exit 77); exit 77; }; } ++ else ++ ac_cv_sizeof_off_t=0 ++ fi ;; + esac + else +- if test "$cross_compiling" = yes; then +- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +-See \`config.log' for more details." >&5 +-echo "$as_me: error: cannot run test program while cross compiling +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +-else + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -13888,8 +14176,9 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default +-long longval () { return (long) (sizeof (off_t)); } +-unsigned long ulongval () { return (long) (sizeof (off_t)); } ++ typedef off_t ac__type_sizeof_; ++static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } ++static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } + #include + #include + int +@@ -13898,35 +14187,44 @@ main () + + FILE *f = fopen ("conftest.val", "w"); + if (! f) +- exit (1); +- if (((long) (sizeof (off_t))) < 0) ++ return 1; ++ if (((long int) (sizeof (ac__type_sizeof_))) < 0) + { +- long i = longval (); +- if (i != ((long) (sizeof (off_t)))) +- exit (1); ++ long int i = longval (); ++ if (i != ((long int) (sizeof (ac__type_sizeof_)))) ++ return 1; + fprintf (f, "%ld\n", i); + } + else + { +- unsigned long i = ulongval (); +- if (i != ((long) (sizeof (off_t)))) +- exit (1); ++ unsigned long int i = ulongval (); ++ if (i != ((long int) (sizeof (ac__type_sizeof_)))) ++ return 1; + fprintf (f, "%lu\n", i); + } +- exit (ferror (f) || fclose (f) != 0); ++ return ferror (f) || fclose (f) != 0; + + ; + return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -13937,30 +14235,33 @@ echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + ( exit $ac_status ) +-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t), 77 ++if test "$ac_cv_type_off_t" = yes; then ++ { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t) + See \`config.log' for more details." >&5 +-echo "$as_me: error: cannot compute sizeof (off_t), 77 ++echo "$as_me: error: cannot compute sizeof (off_t) + See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +-fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++ { (exit 77); exit 77; }; } ++ else ++ ac_cv_sizeof_off_t=0 ++ fi + fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi + rm -f conftest.val +-else +- ac_cv_sizeof_off_t=0 +-fi + fi +-echo "$as_me:$LINENO: result: $ac_cv_sizeof_off_t" >&5 +-echo "${ECHO_T}$ac_cv_sizeof_off_t" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_off_t" >&5 ++echo "${ECHO_T}$ac_cv_sizeof_off_t" >&6; } ++ ++ ++ + cat >>confdefs.h <<_ACEOF + #define SIZEOF_OFF_T $ac_cv_sizeof_off_t + _ACEOF + + + fi +-echo "$as_me:$LINENO: checking file_ptr type" >&5 +-echo $ECHO_N "checking file_ptr type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking file_ptr type" >&5 ++echo $ECHO_N "checking file_ptr type... $ECHO_C" >&6; } + bfd_file_ptr="long" + bfd_ufile_ptr="unsigned long" + if test x"$ac_cv_func_ftello64" = xyes -a x"$ac_cv_func_fseeko64" = xyes \ +@@ -13968,8 +14269,8 @@ if test x"$ac_cv_func_ftello64" = xyes - + bfd_file_ptr=BFD_HOST_64_BIT + bfd_ufile_ptr=BFD_HOST_U_64_BIT + fi +-echo "$as_me:$LINENO: result: $bfd_file_ptr" >&5 +-echo "${ECHO_T}$bfd_file_ptr" >&6 ++{ echo "$as_me:$LINENO: result: $bfd_file_ptr" >&5 ++echo "${ECHO_T}$bfd_file_ptr" >&6; } + + + +@@ -13987,18 +14288,19 @@ test -n "${havevecs}" && tdefaults="${td + for ac_header in stdlib.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -14009,41 +14311,37 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -14052,24 +14350,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -14077,9 +14373,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -14103,25 +14400,19 @@ echo "$as_me: WARNING: $ac_header: s + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -14137,9 +14428,9 @@ done + for ac_func in getpagesize + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -14165,68 +14456,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -14235,8 +14518,8 @@ _ACEOF + fi + done + +-echo "$as_me:$LINENO: checking for working mmap" >&5 +-echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for working mmap" >&5 ++echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; } + if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -14278,21 +14561,21 @@ $ac_includes_default + #include + #include + +-#if !STDC_HEADERS && !HAVE_STDLIB_H ++#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H + char *malloc (); + #endif + + /* This mess was copied from the GNU getpagesize.h. */ +-#if !HAVE_GETPAGESIZE ++#ifndef HAVE_GETPAGESIZE + /* Assume that all systems that can run configure have sys/param.h. */ +-# if !HAVE_SYS_PARAM_H ++# ifndef HAVE_SYS_PARAM_H + # define HAVE_SYS_PARAM_H 1 + # endif + + # ifdef _SC_PAGESIZE + # define getpagesize() sysconf(_SC_PAGESIZE) + # else /* no _SC_PAGESIZE */ +-# if HAVE_SYS_PARAM_H ++# ifdef HAVE_SYS_PARAM_H + # include + # ifdef EXEC_PAGESIZE + # define getpagesize() EXEC_PAGESIZE +@@ -14331,15 +14614,15 @@ main () + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) +- exit (1); ++ return 1; + if (write (fd, data, pagesize) != pagesize) +- exit (1); ++ return 1; + close (fd); + + /* Next, try to mmap the file at a fixed address which already has +@@ -14347,17 +14630,17 @@ main () + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) +- exit (1); ++ return 1; + data2 = (char *) malloc (2 * pagesize); + if (!data2) +- exit (1); +- data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); ++ return 1; ++ data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) +- exit (1); ++ return 1; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on +@@ -14366,24 +14649,33 @@ main () + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) +- exit (1); ++ return 1; + if (read (fd, data3, pagesize) != pagesize) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) +- exit (1); ++ return 1; + close (fd); +- exit (0); ++ return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -14396,11 +14688,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) + ac_cv_func_mmap_fixed_mapped=no + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +-echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 ++echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; } + if test $ac_cv_func_mmap_fixed_mapped = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -14415,9 +14709,9 @@ rm -f conftest.mmap + for ac_func in madvise mprotect + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -14443,68 +14737,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -14522,9 +14808,9 @@ _ACEOF + esac + + rm -f doc/config.status +- ac_config_files="$ac_config_files Makefile doc/Makefile bfd-in3.h:bfd-in2.h po/Makefile.in:po/Make-in" ++ac_config_files="$ac_config_files Makefile doc/Makefile bfd-in3.h:bfd-in2.h po/Makefile.in:po/Make-in" + +- ac_config_commands="$ac_config_commands default" ++ac_config_commands="$ac_config_commands default" + + + +@@ -14549,39 +14835,58 @@ _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, don't put newlines in cache variables' values. ++# 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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ + (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ 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 \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} | ++ esac | ++ sort ++) | + sed ' ++ /^ac_cv_env_/b end + t clear +- : clear ++ :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end +- /^ac_cv_env/!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" && echo "updating cache $cache_file" ++ 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" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else +- echo "not updating unwritable cache $cache_file" ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi + fi + rm -f confcache +@@ -14590,32 +14895,18 @@ test "x$prefix" = xNONE && prefix=$ac_de + # Let make expand exec_prefix. + test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +-# 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 +- + DEFS=-DHAVE_CONFIG_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_i=`echo "$ac_i" | +- sed 's/\$U\././;s/\.o$//;s/\.obj$//'` +- # 2. Add them. +- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" +- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' ++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ++ ac_i=`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 + +@@ -14674,17 +14965,45 @@ cat >>$CONFIG_STATUS <<\_ACEOF + ## M4sh Initialization. ## + ## --------------------- ## + +-# Be Bourne compatible ++# 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=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix ++ 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 ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh + fi +-DUALCASE=1; export DUALCASE # for MKS sh + + # Support unset when possible. + if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +@@ -14694,8 +15013,43 @@ else + 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.) ++as_nl=' ++' ++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 ++ 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. +-$as_unset ENV MAIL MAILPATH ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done + PS1='$ ' + PS2='> ' + PS4='+ ' +@@ -14709,18 +15063,19 @@ do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else +- $as_unset $as_var ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi + done + + # Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then ++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 ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename + else + as_basename=false +@@ -14728,159 +15083,120 @@ fi + + + # Name of the executable. +-as_me=`$as_basename "$0" || ++as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + +- +-# PATH needs CR, and LINENO needs CR and PATH. +-# 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 +- +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh +-fi ++# CDPATH. ++$as_unset CDPATH + + +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- 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 + +- ;; +- 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 +- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') +- 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=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in +- /*) +- if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac ++ 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 before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. ++ # 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 +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | ++ # 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 +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, ++ s/-\n.*// + ' >$as_me.lineno && +- chmod +x $as_me.lineno || +- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} ++ chmod +x "$as_me.lineno" || ++ { 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 sensible to this). +- . ./$as_me.lineno ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" + # Exit status is that of the last command. + exit + } + + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; ++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; then ++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 ++fi + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links ++ 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' +- else +- as_ln_s='ln -s' +- fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +-rm -f conf$$ conf$$.exe conf$$.file ++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=: +@@ -14889,7 +15205,28 @@ else + as_mkdir_p=false + fi + +-as_executable_p="test -f" ++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'" +@@ -14898,31 +15235,14 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P + as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH +- + exec 6>&1 + +-# Open the log real soon, to keep \$[0] and so on meaningful, and to ++# 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. Logging --version etc. is OK. +-exec 5>>config.log +-{ +- echo +- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +-## Running $as_me. ## +-_ASBOX +-} >&5 +-cat >&5 <<_CSEOF +- ++# values after options handling. ++ac_log=" + This file was extended by $as_me, which was +-generated by GNU Autoconf 2.59. Invocation command line was ++generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS +@@ -14930,30 +15250,20 @@ generated by GNU Autoconf 2.59. Invocat + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +-_CSEOF +-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +-echo >&5 ++on `(hostname || uname -n) 2>/dev/null | sed 1q` ++" ++ + _ACEOF + ++cat >>$CONFIG_STATUS <<_ACEOF + # Files that config.status was made for. +-if test -n "$ac_config_files"; then +- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +-fi ++config_files="$ac_config_files" ++config_headers="$ac_config_headers" ++config_commands="$ac_config_commands" + +-if test -n "$ac_config_headers"; then +- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_links"; then +- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_commands"; then +- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +-fi ++_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF +- + ac_cs_usage="\ + \`$as_me' instantiates files from templates according to the + current configuration. +@@ -14961,7 +15271,7 @@ current configuration. + Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit +- -V, --version print version number, then exit ++ -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions +@@ -14980,19 +15290,21 @@ Configuration commands: + $config_commands + + Report bugs to ." +-_ACEOF + ++_ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + ac_cs_version="\\ + config.status +-configured by $0, generated by GNU Autoconf 2.59, +- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ++configured by $0, generated by GNU Autoconf 2.61, ++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +-Copyright (C) 2003 Free Software Foundation, Inc. ++Copyright (C) 2006 Free Software Foundation, Inc. + This config.status script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it." +-srcdir=$srcdir +-INSTALL="$INSTALL" ++ ++ac_pwd='$ac_pwd' ++srcdir='$srcdir' ++INSTALL='$INSTALL' + _ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF +@@ -15003,39 +15315,24 @@ while test $# != 0 + do + case $1 in + --*=*) +- ac_option=`expr "x$1" : 'x\([^=]*\)='` +- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; +- -*) ++ *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; +- *) # This is not an option, so the user has probably given explicit +- # arguments. +- ac_option=$1 +- ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; +- --version | --vers* | -V ) +- echo "$ac_cs_version"; exit 0 ;; +- --he | --h) +- # Conflict between --help and --header +- { { echo "$as_me:$LINENO: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; };; +- --help | --hel | -h ) +- echo "$ac_cs_usage"; exit 0 ;; +- --debug | --d* | -d ) ++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) ++ echo "$ac_cs_version"; exit ;; ++ --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift +@@ -15045,18 +15342,24 @@ Try \`$0 --help' for more information." + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; ++ --he | --h) ++ # Conflict between --help and --header ++ { echo "$as_me: error: ambiguous option: $1 ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; };; ++ --help | --hel | -h ) ++ 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. +- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&2;} ++ -*) { 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_config_targets="$ac_config_targets $1" ++ ac_need_defaults=false ;; + + esac + shift +@@ -15072,42 +15375,54 @@ fi + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + if \$ac_cs_recheck; then +- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 +- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 ++ CONFIG_SHELL=$SHELL ++ export CONFIG_SHELL ++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + fi + + _ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF ++exec 5>>config.log ++{ ++ echo ++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ++## Running $as_me. ## ++_ASBOX ++ echo "$ac_log" ++} >&5 + ++_ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + # +-# INIT-COMMANDS section. ++# INIT-COMMANDS + # +- + AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + + _ACEOF + +- +- + cat >>$CONFIG_STATUS <<\_ACEOF ++ ++# Handling of arguments. + for ac_config_target in $ac_config_targets + do +- case "$ac_config_target" in +- # Handling of arguments. +- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; +- "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; +- "bfd-in3.h" ) CONFIG_FILES="$CONFIG_FILES bfd-in3.h:bfd-in2.h" ;; +- "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;; +- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; +- "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; +- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;; ++ case $ac_config_target in ++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; ++ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;; ++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; ++ "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; ++ "bfd-in3.h") CONFIG_FILES="$CONFIG_FILES bfd-in3.h:bfd-in2.h" ;; ++ "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;; ++ "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; ++ + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 + 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 +@@ -15119,401 +15434,504 @@ if $ac_need_defaults; then + fi + + # Have a temporary directory for convenience. Make it in the build tree +-# simply because there is no reason to put it here, and in addition, ++# simply because there is no reason against having it here, and in addition, + # creating and moving files from /tmp can sometimes cause problems. +-# Create a temporary directory, and hook for its removal unless debugging. ++# 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 || + { +- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 ++ 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 -q "./confstatXXXXXX") 2>/dev/null` && ++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" + } || + { +- tmp=./confstat$$-$RANDOM +- (umask 077 && mkdir $tmp) ++ tmp=./conf$$-$RANDOM ++ (umask 077 && mkdir "$tmp") + } || + { + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } + } + +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +- + # +-# CONFIG_FILES section. ++# Set up the sed scripts for CONFIG_FILES section. + # + + # No need to generate the scripts if there are no CONFIG_FILES. + # This happens for instance when ./config.status config.h +-if test -n "\$CONFIG_FILES"; then +- # Protect against being on the right side of a sed subst in config.status. +- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; +- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +-s,@SHELL@,$SHELL,;t t +-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +-s,@exec_prefix@,$exec_prefix,;t t +-s,@prefix@,$prefix,;t t +-s,@program_transform_name@,$program_transform_name,;t t +-s,@bindir@,$bindir,;t t +-s,@sbindir@,$sbindir,;t t +-s,@libexecdir@,$libexecdir,;t t +-s,@datadir@,$datadir,;t t +-s,@sysconfdir@,$sysconfdir,;t t +-s,@sharedstatedir@,$sharedstatedir,;t t +-s,@localstatedir@,$localstatedir,;t t +-s,@libdir@,$libdir,;t t +-s,@includedir@,$includedir,;t t +-s,@oldincludedir@,$oldincludedir,;t t +-s,@infodir@,$infodir,;t t +-s,@mandir@,$mandir,;t t +-s,@build_alias@,$build_alias,;t t +-s,@host_alias@,$host_alias,;t t +-s,@target_alias@,$target_alias,;t t +-s,@DEFS@,$DEFS,;t t +-s,@ECHO_C@,$ECHO_C,;t t +-s,@ECHO_N@,$ECHO_N,;t t +-s,@ECHO_T@,$ECHO_T,;t t +-s,@LIBS@,$LIBS,;t t +-s,@build@,$build,;t t +-s,@build_cpu@,$build_cpu,;t t +-s,@build_vendor@,$build_vendor,;t t +-s,@build_os@,$build_os,;t t +-s,@host@,$host,;t t +-s,@host_cpu@,$host_cpu,;t t +-s,@host_vendor@,$host_vendor,;t t +-s,@host_os@,$host_os,;t t +-s,@target@,$target,;t t +-s,@target_cpu@,$target_cpu,;t t +-s,@target_vendor@,$target_vendor,;t t +-s,@target_os@,$target_os,;t t +-s,@CC@,$CC,;t t +-s,@CFLAGS@,$CFLAGS,;t t +-s,@LDFLAGS@,$LDFLAGS,;t t +-s,@CPPFLAGS@,$CPPFLAGS,;t t +-s,@ac_ct_CC@,$ac_ct_CC,;t t +-s,@EXEEXT@,$EXEEXT,;t t +-s,@OBJEXT@,$OBJEXT,;t t +-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +-s,@INSTALL_DATA@,$INSTALL_DATA,;t t +-s,@CYGPATH_W@,$CYGPATH_W,;t t +-s,@PACKAGE@,$PACKAGE,;t t +-s,@VERSION@,$VERSION,;t t +-s,@ACLOCAL@,$ACLOCAL,;t t +-s,@AUTOCONF@,$AUTOCONF,;t t +-s,@AUTOMAKE@,$AUTOMAKE,;t t +-s,@AUTOHEADER@,$AUTOHEADER,;t t +-s,@MAKEINFO@,$MAKEINFO,;t t +-s,@install_sh@,$install_sh,;t t +-s,@STRIP@,$STRIP,;t t +-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +-s,@mkdir_p@,$mkdir_p,;t t +-s,@AWK@,$AWK,;t t +-s,@SET_MAKE@,$SET_MAKE,;t t +-s,@am__leading_dot@,$am__leading_dot,;t t +-s,@AMTAR@,$AMTAR,;t t +-s,@am__tar@,$am__tar,;t t +-s,@am__untar@,$am__untar,;t t +-s,@DEPDIR@,$DEPDIR,;t t +-s,@am__include@,$am__include,;t t +-s,@am__quote@,$am__quote,;t t +-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +-s,@CCDEPMODE@,$CCDEPMODE,;t t +-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +-s,@AR@,$AR,;t t +-s,@ac_ct_AR@,$ac_ct_AR,;t t +-s,@RANLIB@,$RANLIB,;t t +-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +-s,@LN_S@,$LN_S,;t t +-s,@LIBTOOL@,$LIBTOOL,;t t +-s,@WARN_CFLAGS@,$WARN_CFLAGS,;t t +-s,@NO_WERROR@,$NO_WERROR,;t t +-s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +-s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +-s,@MAINT@,$MAINT,;t t +-s,@INSTALL_LIBBFD_TRUE@,$INSTALL_LIBBFD_TRUE,;t t +-s,@INSTALL_LIBBFD_FALSE@,$INSTALL_LIBBFD_FALSE,;t t +-s,@host_noncanonical@,$host_noncanonical,;t t +-s,@target_noncanonical@,$target_noncanonical,;t t +-s,@bfdlibdir@,$bfdlibdir,;t t +-s,@bfdincludedir@,$bfdincludedir,;t t +-s,@CPP@,$CPP,;t t +-s,@EGREP@,$EGREP,;t t +-s,@ALLOCA@,$ALLOCA,;t t +-s,@USE_NLS@,$USE_NLS,;t t +-s,@MSGFMT@,$MSGFMT,;t t +-s,@GMSGFMT@,$GMSGFMT,;t t +-s,@XGETTEXT@,$XGETTEXT,;t t +-s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t +-s,@CATALOGS@,$CATALOGS,;t t +-s,@CATOBJEXT@,$CATOBJEXT,;t t +-s,@DATADIRNAME@,$DATADIRNAME,;t t +-s,@GMOFILES@,$GMOFILES,;t t +-s,@INSTOBJEXT@,$INSTOBJEXT,;t t +-s,@INTLDEPS@,$INTLDEPS,;t t +-s,@INTLLIBS@,$INTLLIBS,;t t +-s,@INTLOBJS@,$INTLOBJS,;t t +-s,@POFILES@,$POFILES,;t t +-s,@POSUB@,$POSUB,;t t +-s,@INCLUDE_LOCALE_H@,$INCLUDE_LOCALE_H,;t t +-s,@GT_NO@,$GT_NO,;t t +-s,@GT_YES@,$GT_YES,;t t +-s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +-s,@l@,$l,;t t +-s,@HDEFINES@,$HDEFINES,;t t +-s,@BFD_HOST_64BIT_LONG@,$BFD_HOST_64BIT_LONG,;t t +-s,@BFD_HOST_LONG_LONG@,$BFD_HOST_LONG_LONG,;t t +-s,@BFD_HOST_64_BIT_DEFINED@,$BFD_HOST_64_BIT_DEFINED,;t t +-s,@BFD_HOST_64_BIT@,$BFD_HOST_64_BIT,;t t +-s,@BFD_HOST_U_64_BIT@,$BFD_HOST_U_64_BIT,;t t +-s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t +-s,@EXEEXT_FOR_BUILD@,$EXEEXT_FOR_BUILD,;t t +-s,@COREFILE@,$COREFILE,;t t +-s,@COREFLAG@,$COREFLAG,;t t +-s,@WIN32LDFLAGS@,$WIN32LDFLAGS,;t t +-s,@WIN32LIBADD@,$WIN32LIBADD,;t t +-s,@TDEFINES@,$TDEFINES,;t t +-s,@wordsize@,$wordsize,;t t +-s,@bfd_libs@,$bfd_libs,;t t +-s,@all_backends@,$all_backends,;t t +-s,@bfd_backends@,$bfd_backends,;t t +-s,@bfd_machines@,$bfd_machines,;t t +-s,@bfd_default_target_size@,$bfd_default_target_size,;t t +-s,@bfd_file_ptr@,$bfd_file_ptr,;t t +-s,@bfd_ufile_ptr@,$bfd_ufile_ptr,;t t +-s,@tdefaults@,$tdefaults,;t t +-s,@datarootdir@,$datarootdir,;t t +-s,@docdir@,$docdir,;t t +-s,@htmldir@,$htmldir,;t t +-s,@LIBOBJS@,$LIBOBJS,;t t +-s,@LTLIBOBJS@,$LTLIBOBJS,;t t +-CEOF +- +-_ACEOF +- +- cat >>$CONFIG_STATUS <<\_ACEOF +- # Split the substitutions into bite-sized pieces for seds with +- # small command number limits, like on Digital OSF/1 and HP-UX. +- ac_max_sed_lines=48 +- ac_sed_frag=1 # Number of current file. +- ac_beg=1 # First line for current file. +- ac_end=$ac_max_sed_lines # Line after last line for current file. +- ac_more_lines=: +- ac_sed_cmds= +- while $ac_more_lines; do +- if test $ac_beg -gt 1; then +- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- else +- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- fi +- if test ! -s $tmp/subs.frag; then +- ac_more_lines=false +- else +- # The purpose of the label and of the branching condition is to +- # speed up the sed processing (if there are no `@' at all, there +- # is no need to browse any of the substitutions). +- # These are the two extra sed commands mentioned above. +- (echo ':t +- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" +- else +- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" +- fi +- ac_sed_frag=`expr $ac_sed_frag + 1` +- ac_beg=$ac_end +- ac_end=`expr $ac_end + $ac_max_sed_lines` +- fi +- done +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds=cat ++if test -n "$CONFIG_FILES"; then ++ ++_ACEOF ++ ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++SHELL!$SHELL$ac_delim ++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim ++PACKAGE_NAME!$PACKAGE_NAME$ac_delim ++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim ++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim ++PACKAGE_STRING!$PACKAGE_STRING$ac_delim ++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim ++exec_prefix!$exec_prefix$ac_delim ++prefix!$prefix$ac_delim ++program_transform_name!$program_transform_name$ac_delim ++bindir!$bindir$ac_delim ++sbindir!$sbindir$ac_delim ++libexecdir!$libexecdir$ac_delim ++datarootdir!$datarootdir$ac_delim ++datadir!$datadir$ac_delim ++sysconfdir!$sysconfdir$ac_delim ++sharedstatedir!$sharedstatedir$ac_delim ++localstatedir!$localstatedir$ac_delim ++includedir!$includedir$ac_delim ++oldincludedir!$oldincludedir$ac_delim ++docdir!$docdir$ac_delim ++infodir!$infodir$ac_delim ++htmldir!$htmldir$ac_delim ++dvidir!$dvidir$ac_delim ++pdfdir!$pdfdir$ac_delim ++psdir!$psdir$ac_delim ++libdir!$libdir$ac_delim ++localedir!$localedir$ac_delim ++mandir!$mandir$ac_delim ++DEFS!$DEFS$ac_delim ++ECHO_C!$ECHO_C$ac_delim ++ECHO_N!$ECHO_N$ac_delim ++ECHO_T!$ECHO_T$ac_delim ++LIBS!$LIBS$ac_delim ++build_alias!$build_alias$ac_delim ++host_alias!$host_alias$ac_delim ++target_alias!$target_alias$ac_delim ++build!$build$ac_delim ++build_cpu!$build_cpu$ac_delim ++build_vendor!$build_vendor$ac_delim ++build_os!$build_os$ac_delim ++host!$host$ac_delim ++host_cpu!$host_cpu$ac_delim ++host_vendor!$host_vendor$ac_delim ++host_os!$host_os$ac_delim ++target!$target$ac_delim ++target_cpu!$target_cpu$ac_delim ++target_vendor!$target_vendor$ac_delim ++target_os!$target_os$ac_delim ++CC!$CC$ac_delim ++CFLAGS!$CFLAGS$ac_delim ++LDFLAGS!$LDFLAGS$ac_delim ++CPPFLAGS!$CPPFLAGS$ac_delim ++ac_ct_CC!$ac_ct_CC$ac_delim ++EXEEXT!$EXEEXT$ac_delim ++OBJEXT!$OBJEXT$ac_delim ++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim ++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim ++INSTALL_DATA!$INSTALL_DATA$ac_delim ++CYGPATH_W!$CYGPATH_W$ac_delim ++PACKAGE!$PACKAGE$ac_delim ++VERSION!$VERSION$ac_delim ++ACLOCAL!$ACLOCAL$ac_delim ++AUTOCONF!$AUTOCONF$ac_delim ++AUTOMAKE!$AUTOMAKE$ac_delim ++AUTOHEADER!$AUTOHEADER$ac_delim ++MAKEINFO!$MAKEINFO$ac_delim ++install_sh!$install_sh$ac_delim ++STRIP!$STRIP$ac_delim ++INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim ++mkdir_p!$mkdir_p$ac_delim ++AWK!$AWK$ac_delim ++SET_MAKE!$SET_MAKE$ac_delim ++am__leading_dot!$am__leading_dot$ac_delim ++AMTAR!$AMTAR$ac_delim ++am__tar!$am__tar$ac_delim ++am__untar!$am__untar$ac_delim ++DEPDIR!$DEPDIR$ac_delim ++am__include!$am__include$ac_delim ++am__quote!$am__quote$ac_delim ++AMDEP_TRUE!$AMDEP_TRUE$ac_delim ++AMDEP_FALSE!$AMDEP_FALSE$ac_delim ++AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim ++CCDEPMODE!$CCDEPMODE$ac_delim ++am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim ++am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim ++AR!$AR$ac_delim ++RANLIB!$RANLIB$ac_delim ++LN_S!$LN_S$ac_delim ++LIBTOOL!$LIBTOOL$ac_delim ++WARN_CFLAGS!$WARN_CFLAGS$ac_delim ++NO_WERROR!$NO_WERROR$ac_delim ++MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim ++MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim ++MAINT!$MAINT$ac_delim ++INSTALL_LIBBFD_TRUE!$INSTALL_LIBBFD_TRUE$ac_delim ++INSTALL_LIBBFD_FALSE!$INSTALL_LIBBFD_FALSE$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +-fi # test -n "$CONFIG_FILES" ++done ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi + ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++CEOF$ac_eof ++_ACEOF ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++host_noncanonical!$host_noncanonical$ac_delim ++target_noncanonical!$target_noncanonical$ac_delim ++bfdlibdir!$bfdlibdir$ac_delim ++bfdincludedir!$bfdincludedir$ac_delim ++CPP!$CPP$ac_delim ++GREP!$GREP$ac_delim ++EGREP!$EGREP$ac_delim ++ALLOCA!$ALLOCA$ac_delim ++USE_NLS!$USE_NLS$ac_delim ++MSGFMT!$MSGFMT$ac_delim ++GMSGFMT!$GMSGFMT$ac_delim ++XGETTEXT!$XGETTEXT$ac_delim ++USE_INCLUDED_LIBINTL!$USE_INCLUDED_LIBINTL$ac_delim ++CATALOGS!$CATALOGS$ac_delim ++CATOBJEXT!$CATOBJEXT$ac_delim ++DATADIRNAME!$DATADIRNAME$ac_delim ++GMOFILES!$GMOFILES$ac_delim ++INSTOBJEXT!$INSTOBJEXT$ac_delim ++INTLDEPS!$INTLDEPS$ac_delim ++INTLLIBS!$INTLLIBS$ac_delim ++INTLOBJS!$INTLOBJS$ac_delim ++POFILES!$POFILES$ac_delim ++POSUB!$POSUB$ac_delim ++INCLUDE_LOCALE_H!$INCLUDE_LOCALE_H$ac_delim ++GT_NO!$GT_NO$ac_delim ++GT_YES!$GT_YES$ac_delim ++MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim ++l!$l$ac_delim ++HDEFINES!$HDEFINES$ac_delim ++BFD_HOST_64BIT_LONG!$BFD_HOST_64BIT_LONG$ac_delim ++BFD_HOST_LONG_LONG!$BFD_HOST_LONG_LONG$ac_delim ++BFD_HOST_64_BIT_DEFINED!$BFD_HOST_64_BIT_DEFINED$ac_delim ++BFD_HOST_64_BIT!$BFD_HOST_64_BIT$ac_delim ++BFD_HOST_U_64_BIT!$BFD_HOST_U_64_BIT$ac_delim ++CC_FOR_BUILD!$CC_FOR_BUILD$ac_delim ++EXEEXT_FOR_BUILD!$EXEEXT_FOR_BUILD$ac_delim ++COREFILE!$COREFILE$ac_delim ++COREFLAG!$COREFLAG$ac_delim ++WIN32LDFLAGS!$WIN32LDFLAGS$ac_delim ++WIN32LIBADD!$WIN32LIBADD$ac_delim ++TDEFINES!$TDEFINES$ac_delim ++wordsize!$wordsize$ac_delim ++bfd_libs!$bfd_libs$ac_delim ++all_backends!$all_backends$ac_delim ++bfd_backends!$bfd_backends$ac_delim ++bfd_machines!$bfd_machines$ac_delim ++bfd_default_target_size!$bfd_default_target_size$ac_delim ++bfd_file_ptr!$bfd_file_ptr$ac_delim ++bfd_ufile_ptr!$bfd_ufile_ptr$ac_delim ++tdefaults!$tdefaults$ac_delim ++LIBOBJS!$LIBOBJS$ac_delim ++LTLIBOBJS!$LTLIBOBJS$ac_delim + _ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 52; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++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 ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++:end ++s/|#_!!_#|//g ++CEOF$ac_eof ++_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 +-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". +- case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; ++fi # test -n "$CONFIG_FILES" ++ ++ ++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS ++do ++ case $ac_tag in ++ :[FHLC]) ac_mode=$ac_tag; continue;; ++ esac ++ case $ac_mode$ac_tag in ++ :[FHL]*:*);; ++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 ++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 || ++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 ++echo "$as_me: error: cannot find input file: $ac_f" >&2;} ++ { (exit 1); exit 1; }; };; ++ 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 "`IFS=: ++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." ++ if test x"$ac_file" != x-; then ++ configure_input="$ac_file. $configure_input" ++ { echo "$as_me:$LINENO: creating $ac_file" >&5 ++echo "$as_me: creating $ac_file" >&6;} ++ fi ++ ++ case $ac_tag in ++ *:-:* | *:-) cat >"$tmp/stdin";; ++ esac ++ ;; + esac + +- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. +- ac_dir=`(dirname "$ac_file") 2>/dev/null || ++ 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 || ++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || + echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" ++ 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 test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`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 || ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || + echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ 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 ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } +- + ac_builddir=. + +-if test "$ac_dir" != .; then ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`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 +- .) # No --srcdir option. We are building in place. ++ .) # We are building in place. + ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. ++ 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 ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac ++ 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 + +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac + ++ case $ac_mode in ++ :F) ++ # ++ # CONFIG_FILE ++ # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; +- *) ac_INSTALL=$ac_top_builddir$INSTALL ;; ++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac ++_ACEOF + +- if test x"$ac_file" != x-; then +- { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- rm -f "$ac_file" +- fi +- # 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. */ +- if test x"$ac_file" = x-; then +- configure_input= +- else +- configure_input="$ac_file. " +- fi +- configure_input=$configure_input"Generated from `echo $ac_file_in | +- sed 's,.*/,,'` by configure." +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- echo "$f";; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo "$f" +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo "$srcdir/$f" +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } ++cat >>$CONFIG_STATUS <<\_ACEOF ++# 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= ++ ++case `sed -n '/datarootdir/ { ++ p ++ q ++} ++/@datadir@/p ++/@docdir@/p ++/@infodir@/p ++/@localedir@/p ++/@mandir@/p ++' $ac_file_inputs` in ++*datarootdir*) ac_datarootdir_seen=yes;; ++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) ++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++ 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 + sed "$ac_vpsub + $extrasub +@@ -15521,248 +15939,130 @@ _ACEOF + cat >>$CONFIG_STATUS <<\_ACEOF + :t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b +-s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t +-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +-s,@INSTALL@,$ac_INSTALL,;t t +-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out +- rm -f $tmp/stdin +- if test x"$ac_file" != x-; then +- mv $tmp/out $ac_file +- else +- cat $tmp/out +- rm -f $tmp/out +- fi +- +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-# +-# CONFIG_HEADER section. +-# +- +-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +-# NAME is the cpp macro being defined and VALUE is the value it is being given. +-# +-# ac_d sets the value in "#define NAME VALUE" lines. +-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +-ac_dB='[ ].*$,\1#\2' +-ac_dC=' ' +-ac_dD=',;t' +-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +-ac_uB='$,\1#\2define\3' +-ac_uC=' ' +-ac_uD=',;t' ++s&@configure_input@&$configure_input&;t t ++s&@top_builddir@&$ac_top_builddir_sub&;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 ++$ac_datarootdir_hack ++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out ++ ++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"; } && ++ { 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 ++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;} + +-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". ++ rm -f "$tmp/stdin" + case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; ++ -) cat "$tmp/out"; rm -f "$tmp/out";; ++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac ++ ;; ++ :H) ++ # ++ # CONFIG_HEADER ++ # ++_ACEOF ++ ++# Transform confdefs.h into a sed script `conftest.defines', that ++# substitutes the proper values into config.h.in to produce config.h. ++rm -f conftest.defines conftest.tail ++# First, append a space to every undef/define line, to ease matching. ++echo 's/$/ /' >conftest.defines ++# Then, protect against being on the right side of a sed subst, or in ++# an unquoted here document, in config.status. If some macros were ++# called several times there might be several #defines for the same ++# symbol, which is useless. But do not sort them, since the last ++# AC_DEFINE must be honored. ++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* ++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where ++# NAME is the cpp macro being defined, VALUE is the value it is being given. ++# PARAMS is the parameter list in the macro definition--in most cases, it's ++# just an empty string. ++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' ++ac_dB='\\)[ (].*,\\1define\\2' ++ac_dC=' ' ++ac_dD=' ,' + +- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- # Do quote $f, to prevent DOS paths from being IFS'd. +- echo "$f";; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo "$f" +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo "$srcdir/$f" +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } +- # Remove the trailing spaces. +- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in +- +-_ACEOF +- +-# Transform confdefs.h into two sed scripts, `conftest.defines' and +-# `conftest.undefs', that substitutes the proper values into +-# config.h.in to produce config.h. The first handles `#define' +-# templates, and the second `#undef' templates. +-# And first: Protect against being on the right side of a sed subst in +-# config.status. Protect against being in an unquoted here document +-# in config.status. +-rm -f conftest.defines conftest.undefs +-# Using a here document instead of a string reduces the quoting nightmare. +-# Putting comments in sed scripts is not portable. +-# +-# `end' is used to avoid that the second main sed command (meant for +-# 0-ary CPP macros) applies to n-ary macro definitions. +-# See the Autoconf documentation for `clear'. +-cat >confdef2sed.sed <<\_ACEOF +-s/[\\&,]/\\&/g +-s,[\\$`],\\&,g +-t clear +-: clear +-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +-t end +-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +-: end +-_ACEOF +-# If some macros were called several times there might be several times +-# the same #defines, which is useless. Nevertheless, we may not want to +-# sort them, since we want the *last* AC-DEFINE to be honored. +-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +-rm -f confdef2sed.sed ++uniq confdefs.h | ++ sed -n ' ++ t rset ++ :rset ++ s/^[ ]*#[ ]*define[ ][ ]*// ++ t ok ++ d ++ :ok ++ s/[\\&,]/\\&/g ++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p ++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ++ ' >>conftest.defines + +-# This sed command replaces #undef with comments. This is necessary, for ++# Remove the space that was appended to ease matching. ++# Then replace #undef with comments. This is necessary, for + # example, in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. +-cat >>conftest.undefs <<\_ACEOF +-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, ++# (The regexp can be short, since the line contains either #define or #undef.) ++echo 's/ $// ++s,^[ #]*u.*,/* & */,' >>conftest.defines ++ ++# Break up conftest.defines: ++ac_max_sed_lines=50 ++ ++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" ++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" ++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" ++# et cetera. ++ac_in='$ac_file_inputs' ++ac_out='"$tmp/out1"' ++ac_nxt='"$tmp/out2"' ++ ++while : ++do ++ # Write a here document: ++ cat >>$CONFIG_STATUS <<_ACEOF ++ # First, check the format of the line: ++ cat >"\$tmp/defines.sed" <<\\CEOF ++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def ++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def ++b ++:def + _ACEOF +- +-# Break up conftest.defines because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +-echo ' :' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.defines >/dev/null +-do +- # Write a limited-size here document to $tmp/defines.sed. +- echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#define' lines. +- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS ++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF +- sed -f $tmp/defines.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail ++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS ++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in ++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail ++ grep . conftest.tail >/dev/null || break + rm -f conftest.defines + mv conftest.tail conftest.defines + done +-rm -f conftest.defines +-echo ' fi # grep' >>$CONFIG_STATUS +-echo >>$CONFIG_STATUS +- +-# Break up conftest.undefs because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.undefs >/dev/null +-do +- # Write a limited-size here document to $tmp/undefs.sed. +- echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#undef' +- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS +- echo 'CEOF +- sed -f $tmp/undefs.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail +- rm -f conftest.undefs +- mv conftest.tail conftest.undefs +-done +-rm -f conftest.undefs ++rm -f conftest.defines conftest.tail + ++echo "ac_result=$ac_in" >>$CONFIG_STATUS + cat >>$CONFIG_STATUS <<\_ACEOF +- # 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. */ +- if test x"$ac_file" = x-; then +- echo "/* Generated by configure. */" >$tmp/config.h +- else +- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h +- fi +- cat $tmp/in >>$tmp/config.h +- rm -f $tmp/in + if test x"$ac_file" != x-; then +- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then ++ echo "/* $configure_input */" >"$tmp/config.h" ++ cat "$ac_result" >>"$tmp/config.h" ++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 + echo "$as_me: $ac_file is unchanged" >&6;} + else +- ac_dir=`(dirname "$ac_file") 2>/dev/null || +-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_file" : 'X\(//\)[^/]' \| \ +- X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } +- + rm -f $ac_file +- mv $tmp/config.h $ac_file ++ mv "$tmp/config.h" $ac_file + fi + else +- cat $tmp/config.h +- rm -f $tmp/config.h ++ echo "/* $configure_input */" ++ cat "$ac_result" + fi ++ rm -f "$tmp/out12" + # Compute $ac_file's index in $config_headers. + _am_stamp_count=1 + for _am_header in $config_headers :; do +@@ -15773,135 +16073,39 @@ for _am_header in $config_headers :; do + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac + done +-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || ++echo "timestamp for $ac_file" >`$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 || ++ X$ac_file : 'X\(/\)' \| . 2>/dev/null || + echo X$ac_file | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'`/stamp-h$_am_stamp_count +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-# +-# CONFIG_COMMANDS section. +-# +-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue +- ac_dest=`echo "$ac_file" | sed 's,:.*,,'` +- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_dir=`(dirname "$ac_dest") 2>/dev/null || +-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_dest" : 'X\(//\)[^/]' \| \ +- X"$ac_dest" : 'X\(//\)$' \| \ +- X"$ac_dest" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_dest" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } +- +- ac_builddir=. +- +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi +- +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'`/stamp-h$_am_stamp_count ++ ;; + +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac ++ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 ++echo "$as_me: executing $ac_file commands" >&6;} ++ ;; ++ esac + + +- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +-echo "$as_me: executing $ac_dest commands" >&6;} +- case $ac_dest in +- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do ++ case $ac_file$ac_mode in ++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; 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. +@@ -15911,18 +16115,29 @@ echo "$as_me: executing $ac_dest command + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then +- dirpart=`(dirname "$mf") 2>/dev/null || ++ dirpart=`$as_dirname -- "$mf" || + $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ +- X"$mf" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$mf" : 'X\(/\)' \| . 2>/dev/null || + echo X"$mf" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + else + continue + fi +@@ -15944,54 +16159,80 @@ echo X"$mf" | + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue +- fdir=`(dirname "$file") 2>/dev/null || ++ fdir=`$as_dirname -- "$file" || + $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ +- X"$file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$file" : 'X\(/\)' \| . 2>/dev/null || + echo X"$file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p $dirpart/$fdir +- else +- as_dir=$dirpart/$fdir ++ 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 test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`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 || ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || + echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ 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 ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } +- + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done + ;; +- default ) sed -e '/SRC-POTFILES =/r po/SRC-POTFILES' -e '/BLD-POTFILES =/r po/BLD-POTFILES' po/Makefile.in > po/Makefile ;; ++ "default":C) sed -e '/SRC-POTFILES =/r po/SRC-POTFILES' -e '/BLD-POTFILES =/r po/BLD-POTFILES' po/Makefile.in > po/Makefile ;; ++ + esac +-done +-_ACEOF ++done # for ac_tag + +-cat >>$CONFIG_STATUS <<\_ACEOF + + { (exit 0); exit 0; } + _ACEOF +diff -Nrup binutils-2.17/bfd/configure.in binutils-2.17.atmel.1.3.0/bfd/configure.in +--- binutils-2.17/bfd/configure.in 2006-06-23 20:17:07.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/bfd/configure.in 2007-09-28 10:30:44.000000000 +0200 +@@ -8,7 +8,7 @@ AC_CONFIG_SRCDIR([libbfd.c]) + AC_CANONICAL_TARGET + AC_ISC_POSIX + +-AM_INIT_AUTOMAKE(bfd, 2.17) ++AM_INIT_AUTOMAKE(bfd, 2.17.atmel.1.2.0) + + dnl These must be called before AM_PROG_LIBTOOL, because it may want + dnl to call AC_CHECK_PROG. +@@ -583,6 +583,7 @@ do + bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;; + bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;; + bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;; ++ bfd_elf32_avr32_vec) tb="$tb elf32-avr32.lo elf32.lo $elf" ;; + bfd_elf32_bfin_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;; + bfd_elf32_bfinfdpic_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;; + bfd_elf32_big_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;; +diff -Nrup binutils-2.17/bfd/cpu-avr32.c binutils-2.17.atmel.1.3.0/bfd/cpu-avr32.c +--- binutils-2.17/bfd/cpu-avr32.c 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/bfd/cpu-avr32.c 2007-05-31 17:03:36.000000000 +0200 +@@ -0,0 +1,49 @@ ++/* BFD library support routines for AVR32. ++ Copyright 2003-2006 Atmel Corporation. ++ ++ Written by Haavard Skinnemoen, Atmel Norway, ++ ++ This is part of BFD, the Binary File Descriptor library. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ++ ++#include "bfd.h" ++#include "sysdep.h" ++#include "libbfd.h" ++ ++#define N(machine, print, default, next) \ ++ { \ ++ 32, /* 32 bits in a word */ \ ++ 32, /* 32 bits in an address */ \ ++ 8, /* 8 bits in a byte */ \ ++ bfd_arch_avr32, /* architecture */ \ ++ machine, /* machine */ \ ++ "avr32", /* arch name */ \ ++ print, /* printable name */ \ ++ 1, /* section align power */ \ ++ default, /* the default machine? */ \ ++ bfd_default_compatible, \ ++ bfd_default_scan, \ ++ next, \ ++ } ++ ++static const bfd_arch_info_type cpu_info[] = ++{ ++ N(bfd_mach_avr32_ap, "avr32:ap", FALSE, &cpu_info[1]), ++ N(bfd_mach_avr32_uc, "avr32:uc", FALSE, NULL), ++}; ++ ++const bfd_arch_info_type bfd_avr32_arch = ++ N(bfd_mach_avr32_ap, "avr32", TRUE, &cpu_info[0]); +diff -Nrup binutils-2.17/bfd/doc/bfd.info binutils-2.17.atmel.1.3.0/bfd/doc/bfd.info +--- binutils-2.17/bfd/doc/bfd.info 2006-06-12 15:37:32.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/bfd/doc/bfd.info 2007-03-26 10:34:02.000000000 +0200 +@@ -1,5 +1,7 @@ +-This is ../.././bfd/doc/bfd.info, produced by makeinfo version 4.8 from +-../.././bfd/doc/bfd.texinfo. ++This is ++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/bfd/doc/bfd.info, ++produced by makeinfo version 4.8 from ++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/bfd/doc/bfd.texinfo. + + START-INFO-DIR-ENTRY + * Bfd: (bfd). The Binary File Descriptor library. +@@ -10239,67 +10241,67 @@ Index + +  + Tag Table: +-Node: Top724 +-Node: Overview1056 +-Node: History2107 +-Node: How It Works3053 +-Node: What BFD Version 2 Can Do4595 +-Node: BFD information loss5910 +-Node: Canonical format8442 +-Node: BFD front end12814 +-Node: Memory Usage38428 +-Node: Initialization39656 +-Node: Sections40115 +-Node: Section Input40598 +-Node: Section Output41963 +-Node: typedef asection44449 +-Node: section prototypes69406 +-Node: Symbols79086 +-Node: Reading Symbols80681 +-Node: Writing Symbols81788 +-Node: Mini Symbols83497 +-Node: typedef asymbol84471 +-Node: symbol handling functions89389 +-Node: Archives94731 +-Node: Formats98457 +-Node: Relocations101405 +-Node: typedef arelent102132 +-Node: howto manager117943 +-Node: Core Files180223 +-Node: Targets182040 +-Node: bfd_target184010 +-Node: Architectures204090 +-Node: Opening and Closing225522 +-Node: Internal236524 +-Node: File Caching242857 +-Node: Linker Functions244771 +-Node: Creating a Linker Hash Table246444 +-Node: Adding Symbols to the Hash Table248182 +-Node: Differing file formats249082 +-Node: Adding symbols from an object file250830 +-Node: Adding symbols from an archive252981 +-Node: Performing the Final Link255395 +-Node: Information provided by the linker256637 +-Node: Relocating the section contents257791 +-Node: Writing the symbol table259542 +-Node: Hash Tables262535 +-Node: Creating and Freeing a Hash Table263733 +-Node: Looking Up or Entering a String264983 +-Node: Traversing a Hash Table266236 +-Node: Deriving a New Hash Table Type267025 +-Node: Define the Derived Structures268091 +-Node: Write the Derived Creation Routine269172 +-Node: Write Other Derived Routines271796 +-Node: BFD back ends273111 +-Node: What to Put Where273381 +-Node: aout273519 +-Node: coff279837 +-Node: elf304314 +-Node: mmo305177 +-Node: File layout306105 +-Node: Symbol-table311752 +-Node: mmo section mapping315521 +-Node: GNU Free Documentation License319173 +-Node: Index338898 ++Node: Top858 ++Node: Overview1190 ++Node: History2241 ++Node: How It Works3187 ++Node: What BFD Version 2 Can Do4729 ++Node: BFD information loss6044 ++Node: Canonical format8576 ++Node: BFD front end12948 ++Node: Memory Usage38562 ++Node: Initialization39790 ++Node: Sections40249 ++Node: Section Input40732 ++Node: Section Output42097 ++Node: typedef asection44583 ++Node: section prototypes69540 ++Node: Symbols79220 ++Node: Reading Symbols80815 ++Node: Writing Symbols81922 ++Node: Mini Symbols83631 ++Node: typedef asymbol84605 ++Node: symbol handling functions89523 ++Node: Archives94865 ++Node: Formats98591 ++Node: Relocations101539 ++Node: typedef arelent102266 ++Node: howto manager118077 ++Node: Core Files180357 ++Node: Targets182174 ++Node: bfd_target184144 ++Node: Architectures204224 ++Node: Opening and Closing225656 ++Node: Internal236658 ++Node: File Caching242991 ++Node: Linker Functions244905 ++Node: Creating a Linker Hash Table246578 ++Node: Adding Symbols to the Hash Table248316 ++Node: Differing file formats249216 ++Node: Adding symbols from an object file250964 ++Node: Adding symbols from an archive253115 ++Node: Performing the Final Link255529 ++Node: Information provided by the linker256771 ++Node: Relocating the section contents257925 ++Node: Writing the symbol table259676 ++Node: Hash Tables262669 ++Node: Creating and Freeing a Hash Table263867 ++Node: Looking Up or Entering a String265117 ++Node: Traversing a Hash Table266370 ++Node: Deriving a New Hash Table Type267159 ++Node: Define the Derived Structures268225 ++Node: Write the Derived Creation Routine269306 ++Node: Write Other Derived Routines271930 ++Node: BFD back ends273245 ++Node: What to Put Where273515 ++Node: aout273653 ++Node: coff279971 ++Node: elf304448 ++Node: mmo305311 ++Node: File layout306239 ++Node: Symbol-table311886 ++Node: mmo section mapping315655 ++Node: GNU Free Documentation License319307 ++Node: Index339032 +  + End Tag Table +diff -Nrup binutils-2.17/bfd/doc/Makefile.in binutils-2.17.atmel.1.3.0/bfd/doc/Makefile.in +--- binutils-2.17/bfd/doc/Makefile.in 2006-04-06 23:49:26.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/bfd/doc/Makefile.in 2007-03-26 10:30:55.000000000 +0200 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.9.5 from Makefile.am. ++# Makefile.in generated by automake 1.9.6 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -105,6 +105,7 @@ EXEEXT = @EXEEXT@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + GMOFILES = @GMOFILES@ + GMSGFMT = @GMSGFMT@ ++GREP = @GREP@ + GT_NO = @GT_NO@ + GT_YES = @GT_YES@ + HDEFINES = @HDEFINES@ +@@ -154,10 +155,7 @@ WARN_CFLAGS = @WARN_CFLAGS@ + WIN32LDFLAGS = @WIN32LDFLAGS@ + WIN32LIBADD = @WIN32LIBADD@ + XGETTEXT = @XGETTEXT@ +-ac_ct_AR = @ac_ct_AR@ + ac_ct_CC = @ac_ct_CC@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ + all_backends = @all_backends@ + am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ + am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +@@ -183,6 +181,7 @@ build_vendor = @build_vendor@ + datadir = @datadir@ + datarootdir = @datarootdir@ + docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ +@@ -197,12 +196,15 @@ install_sh = @install_sh@ + l = @l@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ +@@ -364,9 +366,11 @@ distclean-libtool: + restore=: && backupdir="$(am__leading_dot)am$$$$" && \ + am__cwd=`pwd` && cd $(srcdir) && \ + rm -rf $$backupdir && mkdir $$backupdir && \ +- for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ +- if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ +- done; \ ++ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ ++ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ ++ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ ++ done; \ ++ else :; fi && \ + cd "$$am__cwd"; \ + if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $@ $<; \ +@@ -408,6 +412,7 @@ bfd.dvi: bfd.texinfo + bfd.pdf: bfd.texinfo + bfd.html: bfd.texinfo + .dvi.ps: ++ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + $(DVIPS) -o $@ $< + + uninstall-info-am: +@@ -440,10 +445,13 @@ dist-info: $(INFO_DEPS) + $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$base; then d=.; else d=$(srcdir); fi; \ +- for file in $$d/$$base*; do \ +- relfile=`expr "$$file" : "$$d/\(.*\)"`; \ +- test -f $(distdir)/$$relfile || \ +- cp -p $$file $(distdir)/$$relfile; \ ++ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ ++ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ ++ if test -f $$file; then \ ++ relfile=`expr "$$file" : "$$d/\(.*\)"`; \ ++ test -f $(distdir)/$$relfile || \ ++ cp -p $$file $(distdir)/$$relfile; \ ++ else :; fi; \ + done; \ + done + +diff -Nrup binutils-2.17/bfd/elf32-avr32.c binutils-2.17.atmel.1.3.0/bfd/elf32-avr32.c +--- binutils-2.17/bfd/elf32-avr32.c 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/bfd/elf32-avr32.c 2007-09-28 10:30:44.000000000 +0200 +@@ -0,0 +1,3881 @@ ++/* AVR32-specific support for 32-bit ELF. ++ Copyright 2003-2006 Atmel Corporation. ++ ++ Written by Haavard Skinnemoen, Atmel Norway, ++ ++ This file is part of BFD, the Binary File Descriptor library. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ++ ++#include "bfd.h" ++#include "sysdep.h" ++#include "bfdlink.h" ++#include "libbfd.h" ++#include "elf-bfd.h" ++#include "elf/avr32.h" ++#include "elf32-avr32.h" ++ ++#define xDEBUG ++#define xRELAX_DEBUG ++ ++#ifdef DEBUG ++# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args) ++#else ++# define pr_debug(fmt, args...) do { } while (0) ++#endif ++ ++#ifdef RELAX_DEBUG ++# define RDBG(fmt, args...) fprintf(stderr, fmt, ##args) ++#else ++# define RDBG(fmt, args...) do { } while (0) ++#endif ++ ++/* When things go wrong, we want it to blow up, damnit! */ ++#undef BFD_ASSERT ++#undef abort ++#define BFD_ASSERT(expr) \ ++ do \ ++ { \ ++ if (!(expr)) \ ++ { \ ++ bfd_assert(__FILE__, __LINE__); \ ++ abort(); \ ++ } \ ++ } \ ++ while (0) ++ ++/* The name of the dynamic interpreter. This is put in the .interp section. */ ++#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1" ++ ++#define AVR32_GOT_HEADER_SIZE 8 ++#define AVR32_FUNCTION_STUB_SIZE 8 ++ ++#define ELF_R_INFO(x, y) ELF32_R_INFO(x, y) ++#define ELF_R_TYPE(x) ELF32_R_TYPE(x) ++#define ELF_R_SYM(x) ELF32_R_SYM(x) ++ ++#define NOP_OPCODE 0xd703 ++ ++ ++/* Mapping between BFD relocations and ELF relocations */ ++ ++static reloc_howto_type * ++bfd_elf32_bfd_reloc_type_lookup(bfd *abfd, bfd_reloc_code_real_type code); ++static void ++avr32_info_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst); ++ ++/* Generic HOWTO */ ++#define GENH(name, align, size, bitsize, pcrel, bitpos, complain, mask) \ ++ HOWTO(name, align, size, bitsize, pcrel, bitpos, \ ++ complain_overflow_##complain, bfd_elf_generic_reloc, #name, \ ++ FALSE, 0, mask, pcrel) ++ ++static reloc_howto_type elf_avr32_howto_table[] = { ++ /* NAME ALN SZ BSZ PCREL BP COMPLAIN MASK */ ++ GENH(R_AVR32_NONE, 0, 0, 0, FALSE, 0, dont, 0x00000000), ++ ++ GENH(R_AVR32_32, 0, 2, 32, FALSE, 0, dont, 0xffffffff), ++ GENH(R_AVR32_16, 0, 1, 16, FALSE, 0, bitfield, 0x0000ffff), ++ GENH(R_AVR32_8, 0, 0, 8, FALSE, 0, bitfield, 0x000000ff), ++ GENH(R_AVR32_32_PCREL, 0, 2, 32, TRUE, 0, signed, 0xffffffff), ++ GENH(R_AVR32_16_PCREL, 0, 1, 16, TRUE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_8_PCREL, 0, 0, 8, TRUE, 0, signed, 0x000000ff), ++ ++ /* Difference between two symbol (sym2 - sym1). The reloc encodes ++ the value of sym1. The field contains the difference before any ++ relaxing is done. */ ++ GENH(R_AVR32_DIFF32, 0, 2, 32, FALSE, 0, dont, 0xffffffff), ++ GENH(R_AVR32_DIFF16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_DIFF8, 0, 0, 8, FALSE, 0, signed, 0x000000ff), ++ ++ GENH(R_AVR32_GOT32, 0, 2, 32, FALSE, 0, signed, 0xffffffff), ++ GENH(R_AVR32_GOT16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_GOT8, 0, 0, 8, FALSE, 0, signed, 0x000000ff), ++ ++ GENH(R_AVR32_21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff), ++ GENH(R_AVR32_16U, 0, 2, 16, FALSE, 0, unsigned, 0x0000ffff), ++ GENH(R_AVR32_16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_8S, 0, 1, 8, FALSE, 4, signed, 0x00000ff0), ++ GENH(R_AVR32_8S_EXT, 0, 2, 8, FALSE, 0, signed, 0x000000ff), ++ ++ GENH(R_AVR32_22H_PCREL, 1, 2, 21, TRUE, 0, signed, 0x1e10ffff), ++ GENH(R_AVR32_18W_PCREL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_16B_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_16N_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_14UW_PCREL, 2, 2, 12, TRUE, 0, unsigned, 0x0000f0ff), ++ GENH(R_AVR32_11H_PCREL, 1, 1, 10, TRUE, 4, signed, 0x00000ff3), ++ GENH(R_AVR32_10UW_PCREL, 2, 2, 8, TRUE, 0, unsigned, 0x000000ff), ++ GENH(R_AVR32_9H_PCREL, 1, 1, 8, TRUE, 4, signed, 0x00000ff0), ++ GENH(R_AVR32_9UW_PCREL, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0), ++ ++ GENH(R_AVR32_HI16, 16, 2, 16, FALSE, 0, dont, 0x0000ffff), ++ GENH(R_AVR32_LO16, 0, 2, 16, FALSE, 0, dont, 0x0000ffff), ++ ++ GENH(R_AVR32_GOTPC, 0, 2, 32, FALSE, 0, dont, 0xffffffff), ++ GENH(R_AVR32_GOTCALL, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff), ++ GENH(R_AVR32_LDA_GOT, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff), ++ GENH(R_AVR32_GOT21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff), ++ GENH(R_AVR32_GOT18SW, 2, 2, 16, FALSE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_GOT16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_GOT7UW, 2, 1, 5, FALSE, 4, unsigned, 0x000001f0), ++ ++ GENH(R_AVR32_32_CPENT, 0, 2, 32, FALSE, 0, dont, 0xffffffff), ++ GENH(R_AVR32_CPCALL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_16_CP, 0, 2, 16, TRUE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_9W_CP, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0), ++ ++ GENH(R_AVR32_RELATIVE, 0, 2, 32, FALSE, 0, signed, 0xffffffff), ++ GENH(R_AVR32_GLOB_DAT, 0, 2, 32, FALSE, 0, dont, 0xffffffff), ++ GENH(R_AVR32_JMP_SLOT, 0, 2, 32, FALSE, 0, dont, 0xffffffff), ++ ++ GENH(R_AVR32_ALIGN, 0, 1, 0, FALSE, 0, unsigned, 0x00000000), ++}; ++ ++struct elf_reloc_map ++{ ++ bfd_reloc_code_real_type bfd_reloc_val; ++ unsigned char elf_reloc_val; ++}; ++ ++static const struct elf_reloc_map avr32_reloc_map[] = ++{ ++ { BFD_RELOC_NONE, R_AVR32_NONE }, ++ ++ { BFD_RELOC_32, R_AVR32_32 }, ++ { BFD_RELOC_16, R_AVR32_16 }, ++ { BFD_RELOC_8, R_AVR32_8 }, ++ { BFD_RELOC_32_PCREL, R_AVR32_32_PCREL }, ++ { BFD_RELOC_16_PCREL, R_AVR32_16_PCREL }, ++ { BFD_RELOC_8_PCREL, R_AVR32_8_PCREL }, ++ { BFD_RELOC_AVR32_DIFF32, R_AVR32_DIFF32 }, ++ { BFD_RELOC_AVR32_DIFF16, R_AVR32_DIFF16 }, ++ { BFD_RELOC_AVR32_DIFF8, R_AVR32_DIFF8 }, ++ { BFD_RELOC_AVR32_GOT32, R_AVR32_GOT32 }, ++ { BFD_RELOC_AVR32_GOT16, R_AVR32_GOT16 }, ++ { BFD_RELOC_AVR32_GOT8, R_AVR32_GOT8 }, ++ ++ { BFD_RELOC_AVR32_21S, R_AVR32_21S }, ++ { BFD_RELOC_AVR32_16U, R_AVR32_16U }, ++ { BFD_RELOC_AVR32_16S, R_AVR32_16S }, ++ { BFD_RELOC_AVR32_SUB5, R_AVR32_16S }, ++ { BFD_RELOC_AVR32_8S_EXT, R_AVR32_8S_EXT }, ++ { BFD_RELOC_AVR32_8S, R_AVR32_8S }, ++ ++ { BFD_RELOC_AVR32_22H_PCREL, R_AVR32_22H_PCREL }, ++ { BFD_RELOC_AVR32_18W_PCREL, R_AVR32_18W_PCREL }, ++ { BFD_RELOC_AVR32_16B_PCREL, R_AVR32_16B_PCREL }, ++ { BFD_RELOC_AVR32_16N_PCREL, R_AVR32_16N_PCREL }, ++ { BFD_RELOC_AVR32_11H_PCREL, R_AVR32_11H_PCREL }, ++ { BFD_RELOC_AVR32_10UW_PCREL, R_AVR32_10UW_PCREL }, ++ { BFD_RELOC_AVR32_9H_PCREL, R_AVR32_9H_PCREL }, ++ { BFD_RELOC_AVR32_9UW_PCREL, R_AVR32_9UW_PCREL }, ++ ++ { BFD_RELOC_HI16, R_AVR32_HI16 }, ++ { BFD_RELOC_LO16, R_AVR32_LO16 }, ++ ++ { BFD_RELOC_AVR32_GOTPC, R_AVR32_GOTPC }, ++ { BFD_RELOC_AVR32_GOTCALL, R_AVR32_GOTCALL }, ++ { BFD_RELOC_AVR32_LDA_GOT, R_AVR32_LDA_GOT }, ++ { BFD_RELOC_AVR32_GOT21S, R_AVR32_GOT21S }, ++ { BFD_RELOC_AVR32_GOT18SW, R_AVR32_GOT18SW }, ++ { BFD_RELOC_AVR32_GOT16S, R_AVR32_GOT16S }, ++ /* GOT7UW should never be generated by the assembler */ ++ ++ { BFD_RELOC_AVR32_32_CPENT, R_AVR32_32_CPENT }, ++ { BFD_RELOC_AVR32_CPCALL, R_AVR32_CPCALL }, ++ { BFD_RELOC_AVR32_16_CP, R_AVR32_16_CP }, ++ { BFD_RELOC_AVR32_9W_CP, R_AVR32_9W_CP }, ++ ++ { BFD_RELOC_AVR32_ALIGN, R_AVR32_ALIGN }, ++}; ++ ++static reloc_howto_type * ++bfd_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, ++ bfd_reloc_code_real_type code) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < sizeof(avr32_reloc_map) / sizeof(struct elf_reloc_map); i++) ++ { ++ if (avr32_reloc_map[i].bfd_reloc_val == code) ++ return &elf_avr32_howto_table[avr32_reloc_map[i].elf_reloc_val]; ++ } ++ ++ return NULL; ++} ++ ++static void ++avr32_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, ++ arelent *cache_ptr, ++ Elf_Internal_Rela *dst) ++{ ++ unsigned int r_type; ++ ++ r_type = ELF32_R_TYPE (dst->r_info); ++ BFD_ASSERT (r_type < (unsigned int) R_AVR32_max); ++ cache_ptr->howto = &elf_avr32_howto_table[r_type]; ++} ++ ++ ++/* AVR32 ELF linker hash table and associated hash entries. */ ++ ++static struct bfd_hash_entry * ++avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry, ++ struct bfd_hash_table *table, ++ const char *string); ++static void ++avr32_elf_copy_indirect_symbol(struct bfd_link_info *info, ++ struct elf_link_hash_entry *dir, ++ struct elf_link_hash_entry *ind); ++static struct bfd_link_hash_table * ++avr32_elf_link_hash_table_create(bfd *abfd); ++ ++/* ++ Try to limit memory usage to something reasonable when sorting the ++ GOT. If we ever get more than this many references to the same ++ symbol, we may need to do something special. ++*/ ++#define MAX_NR_GOT_HOLES 8192 ++ ++/* ++ AVR32 GOT entry. We need to keep track of refcounts and offsets ++ simultaneously, since we need the offsets during relaxation, and we ++ also want to be able to drop GOT entries during relaxation. In ++ addition to this, we want to keep the list of GOT entries sorted so ++ that we can keep the most-used entries at the lowest offsets. ++*/ ++struct got_entry ++{ ++ struct got_entry *next; ++ struct got_entry **pprev; ++ int refcount; ++ bfd_signed_vma offset; ++}; ++ ++struct elf_avr32_link_hash_entry ++{ ++ struct elf_link_hash_entry root; ++ ++ /* Number of runtime relocations against this symbol. */ ++ unsigned int possibly_dynamic_relocs; ++ ++ /* If there are anything but R_AVR32_GOT18 relocations against this ++ symbol, it means that someone may be taking the address of the ++ function, and we should therefore not create a stub. */ ++ bfd_boolean no_fn_stub; ++ ++ /* If there is a R_AVR32_32 relocation in a read-only section ++ against this symbol, we could be in trouble. If we're linking a ++ shared library or this symbol is defined in one, it means we must ++ emit a run-time reloc for it and that's not allowed in read-only ++ sections. */ ++ asection *readonly_reloc_sec; ++ bfd_vma readonly_reloc_offset; ++ ++ /* Record which frag (if any) contains the symbol. This is used ++ during relaxation in order to avoid having to update all symbols ++ whenever we move something. For local symbols, this information ++ is in the local_sym_frag member of struct elf_obj_tdata. */ ++ struct fragment *sym_frag; ++}; ++#define avr32_elf_hash_entry(ent) ((struct elf_avr32_link_hash_entry *)(ent)) ++ ++struct elf_avr32_link_hash_table ++{ ++ struct elf_link_hash_table root; ++ ++ /* Shortcuts to get to dynamic linker sections. */ ++ asection *sgot; ++ asection *srelgot; ++ asection *sstub; ++ ++ /* We use a variation of Pigeonhole Sort to sort the GOT. After the ++ initial refcounts have been determined, we initialize ++ nr_got_holes to the highest refcount ever seen and allocate an ++ array of nr_got_holes entries for got_hole. Each GOT entry is ++ then stored in this array at the index given by its refcount. ++ ++ When a GOT entry has its refcount decremented during relaxation, ++ it is moved to a lower index in the got_hole array. ++ */ ++ struct got_entry **got_hole; ++ int nr_got_holes; ++ ++ /* Dynamic relocations to local symbols. Only used when linking a ++ shared library and -Bsymbolic is not given. */ ++ unsigned int local_dynamic_relocs; ++ ++ bfd_boolean relocations_analyzed; ++ bfd_boolean symbols_adjusted; ++ bfd_boolean repeat_pass; ++ bfd_boolean direct_data_refs; ++ unsigned int relax_iteration; ++ unsigned int relax_pass; ++}; ++#define avr32_elf_hash_table(p) \ ++ ((struct elf_avr32_link_hash_table *)((p)->hash)) ++ ++static struct bfd_hash_entry * ++avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry, ++ struct bfd_hash_table *table, ++ const char *string) ++{ ++ struct elf_avr32_link_hash_entry *ret = avr32_elf_hash_entry(entry); ++ ++ /* Allocate the structure if it hasn't already been allocated by a ++ subclass */ ++ if (ret == NULL) ++ ret = (struct elf_avr32_link_hash_entry *) ++ bfd_hash_allocate(table, sizeof(struct elf_avr32_link_hash_entry)); ++ ++ if (ret == NULL) ++ return NULL; ++ ++ memset(ret, 0, sizeof(struct elf_avr32_link_hash_entry)); ++ ++ /* Give the superclass a chance */ ++ ret = (struct elf_avr32_link_hash_entry *) ++ _bfd_elf_link_hash_newfunc((struct bfd_hash_entry *)ret, table, string); ++ ++ return (struct bfd_hash_entry *)ret; ++} ++ ++/* Copy data from an indirect symbol to its direct symbol, hiding the ++ old indirect symbol. Process additional relocation information. ++ Also called for weakdefs, in which case we just let ++ _bfd_elf_link_hash_copy_indirect copy the flags for us. */ ++ ++static void ++avr32_elf_copy_indirect_symbol(struct bfd_link_info *info, ++ struct elf_link_hash_entry *dir, ++ struct elf_link_hash_entry *ind) ++{ ++ struct elf_avr32_link_hash_entry *edir, *eind; ++ ++ _bfd_elf_link_hash_copy_indirect (info, dir, ind); ++ ++ if (ind->root.type != bfd_link_hash_indirect) ++ return; ++ ++ edir = (struct elf_avr32_link_hash_entry *)dir; ++ eind = (struct elf_avr32_link_hash_entry *)ind; ++ ++ edir->possibly_dynamic_relocs += eind->possibly_dynamic_relocs; ++ edir->no_fn_stub = edir->no_fn_stub || eind->no_fn_stub; ++} ++ ++static struct bfd_link_hash_table * ++avr32_elf_link_hash_table_create(bfd *abfd) ++{ ++ struct elf_avr32_link_hash_table *ret; ++ ++ ret = bfd_zmalloc(sizeof(*ret)); ++ if (ret == NULL) ++ return NULL; ++ ++ if (! _bfd_elf_link_hash_table_init(&ret->root, abfd, ++ avr32_elf_link_hash_newfunc, ++ sizeof (struct elf_avr32_link_hash_entry))) ++ { ++ free(ret); ++ return NULL; ++ } ++ ++ /* Prevent the BFD core from creating bogus got_entry pointers */ ++ ret->root.init_got_refcount.glist = NULL; ++ ret->root.init_plt_refcount.glist = NULL; ++ ret->root.init_got_offset.glist = NULL; ++ ret->root.init_plt_offset.glist = NULL; ++ ++ return &ret->root.root; ++} ++ ++ ++/* Initial analysis and creation of dynamic sections and symbols */ ++ ++static asection * ++create_dynamic_section(bfd *dynobj, const char *name, flagword flags, ++ unsigned int align_power); ++static struct elf_link_hash_entry * ++create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info, ++ const char *name, asection *sec, ++ bfd_vma offset); ++static bfd_boolean ++avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info); ++static bfd_boolean ++avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info); ++static bfd_boolean ++avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec, ++ const Elf_Internal_Rela *relocs); ++static bfd_boolean ++avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info, ++ struct elf_link_hash_entry *h); ++ ++static asection * ++create_dynamic_section(bfd *dynobj, const char *name, flagword flags, ++ unsigned int align_power) ++{ ++ asection *sec; ++ ++ sec = bfd_make_section(dynobj, name); ++ if (!sec ++ || !bfd_set_section_flags(dynobj, sec, flags) ++ || !bfd_set_section_alignment(dynobj, sec, align_power)) ++ return NULL; ++ ++ return sec; ++} ++ ++static struct elf_link_hash_entry * ++create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info, ++ const char *name, asection *sec, ++ bfd_vma offset) ++{ ++ struct bfd_link_hash_entry *bh = NULL; ++ struct elf_link_hash_entry *h; ++ const struct elf_backend_data *bed = get_elf_backend_data (dynobj); ++ ++ if (!(_bfd_generic_link_add_one_symbol ++ (info, dynobj, name, BSF_GLOBAL, sec, offset, NULL, FALSE, ++ bed->collect, &bh))) ++ return NULL; ++ ++ h = (struct elf_link_hash_entry *)bh; ++ h->def_regular = 1; ++ h->type = STT_OBJECT; ++ h->other = STV_HIDDEN; ++ ++ return h; ++} ++ ++static bfd_boolean ++avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ flagword flags; ++ const struct elf_backend_data *bed = get_elf_backend_data (dynobj); ++ ++ htab = avr32_elf_hash_table(info); ++ flags = bed->dynamic_sec_flags; ++ ++ if (htab->sgot) ++ return TRUE; ++ ++ htab->sgot = create_dynamic_section(dynobj, ".got", flags, 2); ++ if (!htab->srelgot) ++ htab->srelgot = create_dynamic_section(dynobj, ".rela.got", ++ flags | SEC_READONLY, 2); ++ ++ if (!htab->sgot || !htab->srelgot) ++ return FALSE; ++ ++ htab->root.hgot = create_dynamic_symbol(dynobj, info, "_GLOBAL_OFFSET_TABLE_", ++ htab->sgot, 0); ++ if (!htab->root.hgot) ++ return FALSE; ++ ++ /* Make room for the GOT header */ ++ htab->sgot->size += bed->got_header_size; ++ ++ return TRUE; ++} ++ ++/* (1) Create all dynamic (i.e. linker generated) sections that we may ++ need during the link */ ++ ++static bfd_boolean ++avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ flagword flags; ++ const struct elf_backend_data *bed = get_elf_backend_data (dynobj); ++ ++ pr_debug("(1) create dynamic sections\n"); ++ ++ htab = avr32_elf_hash_table(info); ++ flags = bed->dynamic_sec_flags; ++ ++ if (!avr32_elf_create_got_section (dynobj, info)) ++ return FALSE; ++ ++ if (!htab->sstub) ++ htab->sstub = create_dynamic_section(dynobj, ".stub", ++ flags | SEC_READONLY | SEC_CODE, 2); ++ ++ if (!htab->sstub) ++ return FALSE; ++ ++ return TRUE; ++} ++ ++/* (2) Go through all the relocs and count any potential GOT- or ++ PLT-references to each symbol */ ++ ++static bfd_boolean ++avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec, ++ const Elf_Internal_Rela *relocs) ++{ ++ Elf_Internal_Shdr *symtab_hdr; ++ struct elf_avr32_link_hash_table *htab; ++ struct elf_link_hash_entry **sym_hashes; ++ const Elf_Internal_Rela *rel, *rel_end; ++ struct got_entry **local_got_ents; ++ struct got_entry *got; ++ const struct elf_backend_data *bed = get_elf_backend_data (abfd); ++ asection *sgot; ++ bfd *dynobj; ++ ++ pr_debug("(2) check relocs for %s:<%s> (size 0x%lx)\n", ++ abfd->filename, sec->name, sec->size); ++ ++ if (info->relocatable) ++ return TRUE; ++ ++ dynobj = elf_hash_table(info)->dynobj; ++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr; ++ sym_hashes = elf_sym_hashes(abfd); ++ htab = avr32_elf_hash_table(info); ++ local_got_ents = elf_local_got_ents(abfd); ++ sgot = htab->sgot; ++ ++ rel_end = relocs + sec->reloc_count; ++ for (rel = relocs; rel < rel_end; rel++) ++ { ++ unsigned long r_symndx, r_type; ++ struct elf_avr32_link_hash_entry *h; ++ ++ r_symndx = ELF32_R_SYM(rel->r_info); ++ r_type = ELF32_R_TYPE(rel->r_info); ++ ++ /* Local symbols use local_got_ents, while others store the same ++ information in the hash entry */ ++ if (r_symndx < symtab_hdr->sh_info) ++ { ++ pr_debug(" (2a) processing local symbol %lu\n", r_symndx); ++ h = NULL; ++ } ++ else ++ { ++ h = (struct elf_avr32_link_hash_entry *) ++ sym_hashes[r_symndx - symtab_hdr->sh_info]; ++ while (h->root.type == bfd_link_hash_indirect ++ || h->root.type == bfd_link_hash_warning) ++ h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link; ++ pr_debug(" (2a) processing symbol %s\n", h->root.root.root.string); ++ } ++ ++ /* Some relocs require special sections to be created. */ ++ switch (r_type) ++ { ++ case R_AVR32_GOT32: ++ case R_AVR32_GOT16: ++ case R_AVR32_GOT8: ++ case R_AVR32_GOT21S: ++ case R_AVR32_GOT18SW: ++ case R_AVR32_GOT16S: ++ case R_AVR32_GOT7UW: ++ case R_AVR32_LDA_GOT: ++ case R_AVR32_GOTCALL: ++ if (rel->r_addend) ++ { ++ if (info->callbacks->reloc_dangerous ++ (info, _("Non-zero addend on GOT-relative relocation"), ++ abfd, sec, rel->r_offset) == FALSE) ++ return FALSE; ++ } ++ /* fall through */ ++ case R_AVR32_GOTPC: ++ if (dynobj == NULL) ++ elf_hash_table(info)->dynobj = dynobj = abfd; ++ if (sgot == NULL && !avr32_elf_create_got_section(dynobj, info)) ++ return FALSE; ++ break; ++ case R_AVR32_32: ++ /* We may need to create .rela.dyn later on. */ ++ if (dynobj == NULL ++ && (info->shared || h != NULL) ++ && (sec->flags & SEC_ALLOC)) ++ elf_hash_table(info)->dynobj = dynobj = abfd; ++ break; ++ } ++ ++ if (h != NULL && r_type != R_AVR32_GOT18SW) ++ h->no_fn_stub = TRUE; ++ ++ switch (r_type) ++ { ++ case R_AVR32_GOT32: ++ case R_AVR32_GOT16: ++ case R_AVR32_GOT8: ++ case R_AVR32_GOT21S: ++ case R_AVR32_GOT18SW: ++ case R_AVR32_GOT16S: ++ case R_AVR32_GOT7UW: ++ case R_AVR32_LDA_GOT: ++ case R_AVR32_GOTCALL: ++ if (h != NULL) ++ { ++ got = h->root.got.glist; ++ if (!got) ++ { ++ got = bfd_zalloc(abfd, sizeof(struct got_entry)); ++ if (!got) ++ return FALSE; ++ h->root.got.glist = got; ++ } ++ } ++ else ++ { ++ if (!local_got_ents) ++ { ++ bfd_size_type size; ++ bfd_size_type i; ++ struct got_entry *tmp_entry; ++ ++ size = symtab_hdr->sh_info; ++ size *= sizeof(struct got_entry *) + sizeof(struct got_entry); ++ local_got_ents = bfd_zalloc(abfd, size); ++ if (!local_got_ents) ++ return FALSE; ++ ++ elf_local_got_ents(abfd) = local_got_ents; ++ ++ tmp_entry = (struct got_entry *)(local_got_ents ++ + symtab_hdr->sh_info); ++ for (i = 0; i < symtab_hdr->sh_info; i++) ++ local_got_ents[i] = &tmp_entry[i]; ++ } ++ ++ got = local_got_ents[r_symndx]; ++ } ++ ++ got->refcount++; ++ if (got->refcount > htab->nr_got_holes) ++ htab->nr_got_holes = got->refcount; ++ break; ++ ++ case R_AVR32_32: ++ if ((info->shared || h != NULL) ++ && (sec->flags & SEC_ALLOC)) ++ { ++ if (htab->srelgot == NULL) ++ { ++ htab->srelgot = create_dynamic_section(dynobj, ".rela.got", ++ bed->dynamic_sec_flags ++ | SEC_READONLY, 2); ++ if (htab->srelgot == NULL) ++ return FALSE; ++ } ++ ++ if (sec->flags & SEC_READONLY ++ && !h->readonly_reloc_sec) ++ { ++ h->readonly_reloc_sec = sec; ++ h->readonly_reloc_offset = rel->r_offset; ++ } ++ ++ if (h != NULL) ++ { ++ pr_debug("Non-GOT reference to symbol %s\n", ++ h->root.root.root.string); ++ h->possibly_dynamic_relocs++; ++ } ++ else ++ { ++ pr_debug("Non-GOT reference to local symbol %lu\n", ++ r_symndx); ++ htab->local_dynamic_relocs++; ++ } ++ } ++ ++ break; ++ ++ /* TODO: GNU_VTINHERIT and GNU_VTENTRY */ ++ } ++ } ++ ++ return TRUE; ++} ++ ++/* (3) Adjust a symbol defined by a dynamic object and referenced by a ++ regular object. The current definition is in some section of the ++ dynamic object, but we're not including those sections. We have to ++ change the definition to something the rest of the link can ++ understand. */ ++ ++static bfd_boolean ++avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info, ++ struct elf_link_hash_entry *h) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ struct elf_avr32_link_hash_entry *havr; ++ bfd *dynobj; ++ ++ pr_debug("(3) adjust dynamic symbol %s\n", h->root.root.string); ++ ++ htab = avr32_elf_hash_table(info); ++ havr = (struct elf_avr32_link_hash_entry *)h; ++ dynobj = elf_hash_table(info)->dynobj; ++ ++ /* Make sure we know what is going on here. */ ++ BFD_ASSERT (dynobj != NULL ++ && (h->u.weakdef != NULL ++ || (h->def_dynamic ++ && h->ref_regular ++ && !h->def_regular))); ++ ++ /* We don't want dynamic relocations in read-only sections. */ ++ if (havr->readonly_reloc_sec) ++ { ++ if (info->callbacks->reloc_dangerous ++ (info, _("dynamic relocation in read-only section"), ++ havr->readonly_reloc_sec->owner, havr->readonly_reloc_sec, ++ havr->readonly_reloc_offset) == FALSE) ++ return FALSE; ++ } ++ ++ /* If this is a function, create a stub if possible and set the ++ symbol to the stub location. */ ++ if (0 && !havr->no_fn_stub) ++ { ++ if (!h->def_regular) ++ { ++ asection *s = htab->sstub; ++ ++ BFD_ASSERT(s != NULL); ++ ++ h->root.u.def.section = s; ++ h->root.u.def.value = s->size; ++ h->plt.offset = s->size; ++ s->size += AVR32_FUNCTION_STUB_SIZE; ++ ++ return TRUE; ++ } ++ } ++ else if (h->type == STT_FUNC) ++ { ++ /* This will set the entry for this symbol in the GOT to 0, and ++ the dynamic linker will take care of this. */ ++ h->root.u.def.value = 0; ++ return TRUE; ++ } ++ ++ /* If this is a weak symbol, and there is a real definition, the ++ processor independent code will have arranged for us to see the ++ real definition first, and we can just use the same value. */ ++ if (h->u.weakdef != NULL) ++ { ++ BFD_ASSERT(h->u.weakdef->root.type == bfd_link_hash_defined ++ || h->u.weakdef->root.type == bfd_link_hash_defweak); ++ h->root.u.def.section = h->u.weakdef->root.u.def.section; ++ h->root.u.def.value = h->u.weakdef->root.u.def.value; ++ return TRUE; ++ } ++ ++ /* This is a reference to a symbol defined by a dynamic object which ++ is not a function. */ ++ ++ return TRUE; ++} ++ ++ ++/* Garbage-collection of unused sections */ ++ ++static asection * ++avr32_elf_gc_mark_hook(asection *sec, ++ struct bfd_link_info *info ATTRIBUTE_UNUSED, ++ Elf_Internal_Rela *rel, ++ struct elf_link_hash_entry *h, ++ Elf_Internal_Sym *sym) ++{ ++ if (h) ++ { ++ switch (ELF32_R_TYPE(rel->r_info)) ++ { ++ /* TODO: VTINHERIT/VTENTRY */ ++ default: ++ switch (h->root.type) ++ { ++ case bfd_link_hash_defined: ++ case bfd_link_hash_defweak: ++ return h->root.u.def.section; ++ ++ case bfd_link_hash_common: ++ return h->root.u.c.p->section; ++ ++ default: ++ break; ++ } ++ } ++ } ++ else ++ return bfd_section_from_elf_index(sec->owner, sym->st_shndx); ++ ++ return NULL; ++} ++ ++/* Update the GOT entry reference counts for the section being removed. */ ++static bfd_boolean ++avr32_elf_gc_sweep_hook(bfd *abfd, ++ struct bfd_link_info *info ATTRIBUTE_UNUSED, ++ asection *sec, ++ const Elf_Internal_Rela *relocs) ++{ ++ Elf_Internal_Shdr *symtab_hdr; ++ struct elf_avr32_link_hash_entry **sym_hashes; ++ struct got_entry **local_got_ents; ++ const Elf_Internal_Rela *rel, *relend; ++ ++ if (!(sec->flags & SEC_ALLOC)) ++ return TRUE; ++ ++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr; ++ sym_hashes = (struct elf_avr32_link_hash_entry **)elf_sym_hashes(abfd); ++ local_got_ents = elf_local_got_ents(abfd); ++ ++ relend = relocs + sec->reloc_count; ++ for (rel = relocs; rel < relend; rel++) ++ { ++ unsigned long r_symndx; ++ unsigned int r_type; ++ struct elf_avr32_link_hash_entry *h = NULL; ++ ++ r_symndx = ELF32_R_SYM(rel->r_info); ++ if (r_symndx >= symtab_hdr->sh_info) ++ { ++ h = sym_hashes[r_symndx - symtab_hdr->sh_info]; ++ while (h->root.root.type == bfd_link_hash_indirect ++ || h->root.root.type == bfd_link_hash_warning) ++ h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link; ++ } ++ ++ r_type = ELF32_R_TYPE(rel->r_info); ++ ++ switch (r_type) ++ { ++ case R_AVR32_GOT32: ++ case R_AVR32_GOT16: ++ case R_AVR32_GOT8: ++ case R_AVR32_GOT21S: ++ case R_AVR32_GOT18SW: ++ case R_AVR32_GOT16S: ++ case R_AVR32_GOT7UW: ++ case R_AVR32_LDA_GOT: ++ case R_AVR32_GOTCALL: ++ if (h) ++ h->root.got.glist->refcount--; ++ else ++ local_got_ents[r_symndx]->refcount--; ++ break; ++ ++ case R_AVR32_32: ++ if (info->shared || h) ++ { ++ if (h) ++ h->possibly_dynamic_relocs--; ++ else ++ avr32_elf_hash_table(info)->local_dynamic_relocs--; ++ } ++ ++ default: ++ break; ++ } ++ } ++ ++ return TRUE; ++} ++ ++/* Sizing and refcounting of dynamic sections */ ++ ++static void ++insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got); ++static void ++unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got); ++static void ++ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got); ++static bfd_boolean ++assign_got_offsets(struct elf_avr32_link_hash_table *htab); ++static bfd_boolean ++allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info); ++static bfd_boolean ++avr32_elf_size_dynamic_sections (bfd *output_bfd, ++ struct bfd_link_info *info); ++ ++static void ++insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got) ++{ ++ /* TODO: Support got_refcount > htab->nr_got_holes by using a ++ different sort algorithm for those. */ ++ BFD_ASSERT(got->refcount <= htab->nr_got_holes); ++ ++ got->pprev = &htab->got_hole[got->refcount]; ++ got->next = htab->got_hole[got->refcount]; ++ if (got->next) ++ got->next->pprev = &got->next; ++ ++ htab->got_hole[got->refcount] = got; ++} ++ ++/* Decrement the refcount of a GOT entry and update its position in ++ the pigeonhole array. */ ++static void ++unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got) ++{ ++ BFD_ASSERT(got->refcount <= htab->nr_got_holes); ++ BFD_ASSERT(got->refcount > 0); ++ ++ if (got->next) ++ got->next->pprev = got->pprev; ++ ++ *(got->pprev) = got->next; ++ got->refcount--; ++ insert_got_entry(htab, got); ++} ++ ++static void ++ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got) ++{ ++ if (got->next) ++ got->next->pprev = got->pprev; ++ ++ *(got->pprev) = got->next; ++ got->refcount++; ++ insert_got_entry(htab, got); ++ ++ BFD_ASSERT(got->refcount > 0); ++ BFD_ASSERT(got->refcount <= htab->nr_got_holes); ++} ++ ++/* Assign offsets to all GOT entries we intend to keep. The entries ++ that are referenced most often are placed at low offsets so that we ++ can use compact instructions as much as possible. ++ ++ Returns TRUE if any offsets or the total size of the GOT changed. */ ++ ++static bfd_boolean ++assign_got_offsets(struct elf_avr32_link_hash_table *htab) ++{ ++ struct got_entry *got; ++ bfd_size_type got_size = 0; ++ bfd_boolean changed = FALSE; ++ bfd_signed_vma offset; ++ int i; ++ ++ /* The GOT header provides the address of the DYNAMIC segment, so ++ we need that even if the GOT is otherwise empty. */ ++ if (htab->root.dynamic_sections_created) ++ got_size = AVR32_GOT_HEADER_SIZE; ++ ++ for (i = htab->nr_got_holes; i > 0; i--) ++ { ++ got = htab->got_hole[i]; ++ while (got) ++ { ++ if (got->refcount > 0) ++ { ++ offset = got_size; ++ if (got->offset != offset) ++ { ++ RDBG("GOT offset changed: %ld -> %ld\n", ++ got->offset, offset); ++ changed = TRUE; ++ } ++ got->offset = offset; ++ got_size += 4; ++ } ++ got = got->next; ++ } ++ } ++ ++ if (htab->sgot->size != got_size) ++ { ++ RDBG("GOT size changed: %lu -> %lu\n", htab->sgot->size, ++ got_size); ++ changed = TRUE; ++ } ++ htab->sgot->size = got_size; ++ ++ RDBG("assign_got_offsets: total size %lu (%s)\n", ++ got_size, changed ? "changed" : "no change"); ++ ++ return changed; ++} ++ ++static bfd_boolean ++allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info) ++{ ++ struct bfd_link_info *info = _info; ++ struct elf_avr32_link_hash_table *htab; ++ struct elf_avr32_link_hash_entry *havr; ++ struct got_entry *got; ++ ++ pr_debug(" (4b) allocate_dynrelocs: %s\n", h->root.root.string); ++ ++ if (h->root.type == bfd_link_hash_indirect) ++ return TRUE; ++ ++ if (h->root.type == bfd_link_hash_warning) ++ /* When warning symbols are created, they **replace** the "real" ++ entry in the hash table, thus we never get to see the real ++ symbol in a hash traversal. So look at it now. */ ++ h = (struct elf_link_hash_entry *) h->root.u.i.link; ++ ++ htab = avr32_elf_hash_table(info); ++ havr = (struct elf_avr32_link_hash_entry *)h; ++ ++ got = h->got.glist; ++ ++ /* If got is NULL, the symbol is never referenced through the GOT */ ++ if (got && got->refcount > 0) ++ { ++ insert_got_entry(htab, got); ++ ++ /* Shared libraries need relocs for all GOT entries unless the ++ symbol is forced local or -Bsymbolic is used. Others need ++ relocs for everything that is not guaranteed to be defined in ++ a regular object. */ ++ if ((info->shared ++ && !info->symbolic ++ && h->dynindx != -1) ++ || (htab->root.dynamic_sections_created ++ && h->def_dynamic ++ && !h->def_regular)) ++ htab->srelgot->size += sizeof(Elf32_External_Rela); ++ } ++ ++ if (havr->possibly_dynamic_relocs ++ && (info->shared ++ || (elf_hash_table(info)->dynamic_sections_created ++ && h->def_dynamic ++ && !h->def_regular))) ++ { ++ pr_debug("Allocating %d dynamic reloc against symbol %s...\n", ++ havr->possibly_dynamic_relocs, h->root.root.string); ++ htab->srelgot->size += (havr->possibly_dynamic_relocs ++ * sizeof(Elf32_External_Rela)); ++ } ++ ++ return TRUE; ++} ++ ++/* (4) Calculate the sizes of the linker-generated sections and ++ allocate memory for them. */ ++ ++static bfd_boolean ++avr32_elf_size_dynamic_sections (bfd *output_bfd, ++ struct bfd_link_info *info) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ bfd *dynobj; ++ asection *s; ++ bfd *ibfd; ++ bfd_boolean relocs; ++ ++ pr_debug("(4) size dynamic sections\n"); ++ ++ htab = avr32_elf_hash_table(info); ++ dynobj = htab->root.dynobj; ++ BFD_ASSERT(dynobj != NULL); ++ ++ if (htab->root.dynamic_sections_created) ++ { ++ /* Initialize the contents of the .interp section to the name of ++ the dynamic loader */ ++ if (info->executable) ++ { ++ s = bfd_get_section_by_name(dynobj, ".interp"); ++ BFD_ASSERT(s != NULL); ++ s->size = sizeof(ELF_DYNAMIC_INTERPRETER); ++ s->contents = (unsigned char *)ELF_DYNAMIC_INTERPRETER; ++ } ++ } ++ ++ if (htab->nr_got_holes > 0) ++ { ++ /* Allocate holes for the pigeonhole sort algorithm */ ++ pr_debug("Highest GOT refcount: %d\n", htab->nr_got_holes); ++ if (htab->nr_got_holes >= MAX_NR_GOT_HOLES) ++ { ++ /* TODO: Do something clever (different sorting algorithm) */ ++ _bfd_error_handler(_("Highest refcount %d too high (max %d)\n"), ++ htab->nr_got_holes, MAX_NR_GOT_HOLES); ++ bfd_set_error(bfd_error_no_memory); ++ return FALSE; ++ } ++ htab->got_hole = bfd_zalloc(output_bfd, ++ sizeof(struct got_entry *) ++ * (htab->nr_got_holes + 1)); ++ if (!htab->got_hole) ++ return FALSE; ++ ++ /* Set up .got offsets for local syms. */ ++ for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) ++ { ++ struct got_entry **local_got; ++ struct got_entry **end_local_got; ++ Elf_Internal_Shdr *symtab_hdr; ++ bfd_size_type locsymcount; ++ ++ pr_debug(" (4a) processing file %s...\n", ibfd->filename); ++ ++ BFD_ASSERT(bfd_get_flavour(ibfd) == bfd_target_elf_flavour); ++ ++ local_got = elf_local_got_ents(ibfd); ++ if (!local_got) ++ continue; ++ ++ symtab_hdr = &elf_tdata(ibfd)->symtab_hdr; ++ locsymcount = symtab_hdr->sh_info; ++ end_local_got = local_got + locsymcount; ++ ++ for (; local_got < end_local_got; ++local_got) ++ insert_got_entry(htab, *local_got); ++ } ++ } ++ ++ /* Allocate global sym .got entries and space for global sym ++ dynamic relocs */ ++ elf_link_hash_traverse(&htab->root, allocate_dynrelocs, info); ++ ++ /* Now that we have sorted the GOT entries, we are ready to ++ assign offsets and determine the initial size of the GOT. */ ++ if (htab->sgot) ++ assign_got_offsets(htab); ++ ++ /* Allocate space for local sym dynamic relocs */ ++ BFD_ASSERT(htab->local_dynamic_relocs == 0 || info->shared); ++ if (htab->local_dynamic_relocs) ++ htab->srelgot->size += (htab->local_dynamic_relocs ++ * sizeof(Elf32_External_Rela)); ++ ++ /* We now have determined the sizes of the various dynamic ++ sections. Allocate memory for them. */ ++ relocs = FALSE; ++ for (s = dynobj->sections; s; s = s->next) ++ { ++ if ((s->flags & SEC_LINKER_CREATED) == 0) ++ continue; ++ ++ if (s == htab->sgot ++ || s == htab->sstub) ++ { ++ /* Strip this section if we don't need it */ ++ } ++ else if (strncmp (bfd_get_section_name(dynobj, s), ".rela", 5) == 0) ++ { ++ if (s->size != 0) ++ relocs = TRUE; ++ ++ s->reloc_count = 0; ++ } ++ else ++ { ++ /* It's not one of our sections */ ++ continue; ++ } ++ ++ if (s->size == 0) ++ { ++ /* Strip unneeded sections */ ++ pr_debug("Stripping section %s from output...\n", s->name); ++ /* deleted function in 2.17 ++ _bfd_strip_section_from_output(info, s); ++ */ ++ continue; ++ } ++ ++ s->contents = bfd_zalloc(dynobj, s->size); ++ if (s->contents == NULL) ++ return FALSE; ++ } ++ ++ if (htab->root.dynamic_sections_created) ++ { ++ /* Add some entries to the .dynamic section. We fill in the ++ values later, in sh_elf_finish_dynamic_sections, but we ++ must add the entries now so that we get the correct size for ++ the .dynamic section. The DT_DEBUG entry is filled in by the ++ dynamic linker and used by the debugger. */ ++#define add_dynamic_entry(TAG, VAL) _bfd_elf_add_dynamic_entry(info, TAG, VAL) ++ ++ if (!add_dynamic_entry(DT_PLTGOT, 0)) ++ return FALSE; ++ if (!add_dynamic_entry(DT_AVR32_GOTSZ, 0)) ++ return FALSE; ++ ++ if (info->executable) ++ { ++ if (!add_dynamic_entry(DT_DEBUG, 0)) ++ return FALSE; ++ } ++ if (relocs) ++ { ++ if (!add_dynamic_entry(DT_RELA, 0) ++ || !add_dynamic_entry(DT_RELASZ, 0) ++ || !add_dynamic_entry(DT_RELAENT, ++ sizeof(Elf32_External_Rela))) ++ return FALSE; ++ } ++ } ++#undef add_dynamic_entry ++ ++ return TRUE; ++} ++ ++ ++/* Access to internal relocations, section contents and symbols. ++ (stolen from the xtensa port) */ ++ ++static Elf_Internal_Rela * ++retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory); ++static void ++pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs); ++static void ++release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs); ++static bfd_byte * ++retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory); ++/* ++static void ++pin_contents (asection *sec, bfd_byte *contents); ++*/ ++static void ++release_contents (asection *sec, bfd_byte *contents); ++static Elf_Internal_Sym * ++retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory); ++/* ++static void ++pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf); ++*/ ++static void ++release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf); ++ ++/* During relaxation, we need to modify relocations, section contents, ++ and symbol definitions, and we need to keep the original values from ++ being reloaded from the input files, i.e., we need to "pin" the ++ modified values in memory. We also want to continue to observe the ++ setting of the "keep-memory" flag. The following functions wrap the ++ standard BFD functions to take care of this for us. */ ++ ++static Elf_Internal_Rela * ++retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory) ++{ ++ /* _bfd_elf_link_read_relocs knows about caching, so no need for us ++ to be clever here. */ ++ return _bfd_elf_link_read_relocs(abfd, sec, NULL, NULL, keep_memory); ++} ++ ++static void ++pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs) ++{ ++ elf_section_data (sec)->relocs = internal_relocs; ++} ++ ++static void ++release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs) ++{ ++ if (internal_relocs ++ && elf_section_data (sec)->relocs != internal_relocs) ++ free (internal_relocs); ++} ++ ++static bfd_byte * ++retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory) ++{ ++ bfd_byte *contents; ++ bfd_size_type sec_size; ++ ++ sec_size = bfd_get_section_limit (abfd, sec); ++ contents = elf_section_data (sec)->this_hdr.contents; ++ ++ if (contents == NULL && sec_size != 0) ++ { ++ if (!bfd_malloc_and_get_section (abfd, sec, &contents)) ++ { ++ if (contents) ++ free (contents); ++ return NULL; ++ } ++ if (keep_memory) ++ elf_section_data (sec)->this_hdr.contents = contents; ++ } ++ return contents; ++} ++ ++/* ++static void ++pin_contents (asection *sec, bfd_byte *contents) ++{ ++ elf_section_data (sec)->this_hdr.contents = contents; ++} ++*/ ++static void ++release_contents (asection *sec, bfd_byte *contents) ++{ ++ if (contents && elf_section_data (sec)->this_hdr.contents != contents) ++ free (contents); ++} ++ ++static Elf_Internal_Sym * ++retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory) ++{ ++ Elf_Internal_Shdr *symtab_hdr; ++ Elf_Internal_Sym *isymbuf; ++ size_t locsymcount; ++ ++ symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; ++ locsymcount = symtab_hdr->sh_info; ++ ++ isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents; ++ if (isymbuf == NULL && locsymcount != 0) ++ { ++ isymbuf = bfd_elf_get_elf_syms (input_bfd, symtab_hdr, locsymcount, 0, ++ NULL, NULL, NULL); ++ if (isymbuf && keep_memory) ++ symtab_hdr->contents = (unsigned char *) isymbuf; ++ } ++ ++ return isymbuf; ++} ++ ++/* ++static void ++pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf) ++{ ++ elf_tdata (input_bfd)->symtab_hdr.contents = (unsigned char *)isymbuf; ++} ++ ++*/ ++static void ++release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf) ++{ ++ if (isymbuf && (elf_tdata (input_bfd)->symtab_hdr.contents ++ != (unsigned char *)isymbuf)) ++ free (isymbuf); ++} ++ ++ /* Data structures used during relaxation. */ ++ ++enum relax_state_id { ++ RS_ERROR = -1, ++ RS_NONE = 0, ++ RS_ALIGN, ++ RS_CPENT, ++ RS_PIC_CALL, ++ RS_PIC_MCALL, ++ RS_PIC_RCALL2, ++ RS_PIC_RCALL1, ++ RS_PIC_LDA, ++ RS_PIC_LDW4, ++ RS_PIC_LDW3, ++ RS_PIC_SUB5, ++ RS_NOPIC_MCALL, ++ RS_NOPIC_RCALL2, ++ RS_NOPIC_RCALL1, ++ RS_NOPIC_LDW4, ++ RS_NOPIC_LDDPC, ++ RS_NOPIC_SUB5, ++ RS_NOPIC_MOV2, ++ RS_NOPIC_MOV1, ++ RS_RCALL2, ++ RS_RCALL1, ++ RS_BRC2, ++ RS_BRC1, ++ RS_BRAL, ++ RS_RJMP, ++ RS_MAX, ++}; ++ ++enum reference_type { ++ REF_ABSOLUTE, ++ REF_PCREL, ++ REF_CPOOL, ++ REF_GOT, ++}; ++ ++struct relax_state ++{ ++ const char *name; ++ enum relax_state_id id; ++ enum relax_state_id direct; ++ enum relax_state_id next; ++ enum relax_state_id prev; ++ ++ enum reference_type reftype; ++ ++ unsigned int r_type; ++ ++ bfd_vma opcode; ++ bfd_vma opcode_mask; ++ ++ bfd_signed_vma range_min; ++ bfd_signed_vma range_max; ++ ++ bfd_size_type size; ++}; ++ ++/* ++ * This is for relocs that ++ * a) has an addend or is of type R_AVR32_DIFF32, and ++ * b) references a different section than it's in, and ++ * c) references a section that is relaxable ++ * ++ * as well as relocs that references the constant pool, in which case ++ * the add_frag member points to the frag containing the constant pool ++ * entry. ++ * ++ * Such relocs must be fixed up whenever we delete any code. Sections ++ * that don't have any relocs with all of the above properties don't ++ * have any additional reloc data, but sections that do will have ++ * additional data for all its relocs. ++ */ ++struct avr32_reloc_data ++{ ++ struct fragment *add_frag; ++ struct fragment *sub_frag; ++}; ++ ++/* ++ * A 'fragment' is a relaxable entity, that is, code may be added or ++ * deleted at the end of a fragment. When this happens, all subsequent ++ * fragments in the list will have their offsets updated. ++ */ ++struct fragment ++{ ++ enum relax_state_id state; ++ enum relax_state_id initial_state; ++ ++ Elf_Internal_Rela *rela; ++ bfd_size_type size; ++ bfd_vma offset; ++ int size_adjust; ++ int offset_adjust; ++ bfd_boolean has_grown; ++ ++ /* Only used by constant pool entries. When this drops to zero, the ++ frag is discarded (i.e. size_adjust is set to -4.) */ ++ int refcount; ++}; ++ ++struct avr32_relax_data ++{ ++ unsigned int frag_count; ++ struct fragment *frag; ++ struct avr32_reloc_data *reloc_data; ++ ++ /* TRUE if this section has one or more relaxable relocations */ ++ bfd_boolean is_relaxable; ++ unsigned int iteration; ++}; ++ ++struct avr32_section_data ++{ ++ struct bfd_elf_section_data elf; ++ struct avr32_relax_data relax_data; ++}; ++ ++ /* Relax state definitions */ ++ ++#define PIC_MOV2_OPCODE 0xe0600000 ++#define PIC_MOV2_MASK 0xe1e00000 ++#define PIC_MOV2_RANGE_MIN (-1048576 * 4) ++#define PIC_MOV2_RANGE_MAX (1048575 * 4) ++#define PIC_MCALL_OPCODE 0xf0160000 ++#define PIC_MCALL_MASK 0xffff0000 ++#define PIC_MCALL_RANGE_MIN (-131072) ++#define PIC_MCALL_RANGE_MAX (131068) ++#define RCALL2_OPCODE 0xe0a00000 ++#define RCALL2_MASK 0xe1ef0000 ++#define RCALL2_RANGE_MIN (-2097152) ++#define RCALL2_RANGE_MAX (2097150) ++#define RCALL1_OPCODE 0xc00c0000 ++#define RCALL1_MASK 0xf00c0000 ++#define RCALL1_RANGE_MIN (-1024) ++#define RCALL1_RANGE_MAX (1022) ++#define PIC_LDW4_OPCODE 0xecf00000 ++#define PIC_LDW4_MASK 0xfff00000 ++#define PIC_LDW4_RANGE_MIN (-32768) ++#define PIC_LDW4_RANGE_MAX (32767) ++#define PIC_LDW3_OPCODE 0x6c000000 ++#define PIC_LDW3_MASK 0xfe000000 ++#define PIC_LDW3_RANGE_MIN (0) ++#define PIC_LDW3_RANGE_MAX (124) ++#define SUB5_PC_OPCODE 0xfec00000 ++#define SUB5_PC_MASK 0xfff00000 ++#define SUB5_PC_RANGE_MIN (-32768) ++#define SUB5_PC_RANGE_MAX (32767) ++#define NOPIC_MCALL_OPCODE 0xf01f0000 ++#define NOPIC_MCALL_MASK 0xffff0000 ++#define NOPIC_MCALL_RANGE_MIN PIC_MCALL_RANGE_MIN ++#define NOPIC_MCALL_RANGE_MAX PIC_MCALL_RANGE_MAX ++#define NOPIC_LDW4_OPCODE 0xfef00000 ++#define NOPIC_LDW4_MASK 0xfff00000 ++#define NOPIC_LDW4_RANGE_MIN PIC_LDW4_RANGE_MIN ++#define NOPIC_LDW4_RANGE_MAX PIC_LDW4_RANGE_MAX ++#define LDDPC_OPCODE 0x48000000 ++#define LDDPC_MASK 0xf8000000 ++#define LDDPC_RANGE_MIN 0 ++#define LDDPC_RANGE_MAX 508 ++ ++#define NOPIC_MOV2_OPCODE 0xe0600000 ++#define NOPIC_MOV2_MASK 0xe1e00000 ++#define NOPIC_MOV2_RANGE_MIN (-1048576) ++#define NOPIC_MOV2_RANGE_MAX (1048575) ++#define NOPIC_MOV1_OPCODE 0x30000000 ++#define NOPIC_MOV1_MASK 0xf0000000 ++#define NOPIC_MOV1_RANGE_MIN (-128) ++#define NOPIC_MOV1_RANGE_MAX (127) ++ ++/* Only brc2 variants with cond[3] == 0 is considered, since the ++ others are not relaxable. bral is a special case and is handled ++ separately. */ ++#define BRC2_OPCODE 0xe0800000 ++#define BRC2_MASK 0xe1e80000 ++#define BRC2_RANGE_MIN (-2097152) ++#define BRC2_RANGE_MAX (2097150) ++#define BRC1_OPCODE 0xc0000000 ++#define BRC1_MASK 0xf0080000 ++#define BRC1_RANGE_MIN (-256) ++#define BRC1_RANGE_MAX (254) ++#define BRAL_OPCODE 0xe08f0000 ++#define BRAL_MASK 0xe1ef0000 ++#define BRAL_RANGE_MIN BRC2_RANGE_MIN ++#define BRAL_RANGE_MAX BRC2_RANGE_MAX ++#define RJMP_OPCODE 0xc0080000 ++#define RJMP_MASK 0xf00c0000 ++#define RJMP_RANGE_MIN (-1024) ++#define RJMP_RANGE_MAX (1022) ++ ++/* Define a relax state using the GOT */ ++#define RG(id, dir, next, prev, r_type, opc, size) \ ++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_GOT, \ ++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \ ++ opc##_RANGE_MIN, opc##_RANGE_MAX, size } ++/* Define a relax state using the Constant Pool */ ++#define RC(id, dir, next, prev, r_type, opc, size) \ ++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_CPOOL, \ ++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \ ++ opc##_RANGE_MIN, opc##_RANGE_MAX, size } ++ ++/* Define a relax state using pc-relative direct reference */ ++#define RP(id, dir, next, prev, r_type, opc, size) \ ++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_PCREL, \ ++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \ ++ opc##_RANGE_MIN, opc##_RANGE_MAX, size } ++ ++/* Define a relax state using non-pc-relative direct reference */ ++#define RD(id, dir, next, prev, r_type, opc, size) \ ++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_ABSOLUTE, \ ++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \ ++ opc##_RANGE_MIN, opc##_RANGE_MAX, size } ++ ++/* Define a relax state that will be handled specially */ ++#define RS(id, r_type, size) \ ++ { "RS_"#id, RS_##id, RS_NONE, RS_NONE, RS_NONE, REF_ABSOLUTE, \ ++ R_AVR32_##r_type, 0, 0, 0, 0, size } ++ ++const struct relax_state relax_state[RS_MAX] = { ++ RS(NONE, NONE, 0), ++ RS(ALIGN, ALIGN, 0), ++ RS(CPENT, 32_CPENT, 4), ++ ++ RG(PIC_CALL, PIC_RCALL1, PIC_MCALL, NONE, GOTCALL, PIC_MOV2, 10), ++ RG(PIC_MCALL, PIC_RCALL1, NONE, PIC_CALL, GOT18SW, PIC_MCALL, 4), ++ RP(PIC_RCALL2, NONE, PIC_RCALL1, PIC_MCALL, 22H_PCREL, RCALL2, 4), ++ RP(PIC_RCALL1, NONE, NONE, PIC_RCALL2, 11H_PCREL, RCALL1, 2), ++ ++ RG(PIC_LDA, PIC_SUB5, PIC_LDW4, NONE, LDA_GOT, PIC_MOV2, 8), ++ RG(PIC_LDW4, PIC_SUB5, PIC_LDW3, PIC_LDA, GOT16S, PIC_LDW4, 4), ++ RG(PIC_LDW3, PIC_SUB5, NONE, PIC_LDW4, GOT7UW, PIC_LDW3, 2), ++ RP(PIC_SUB5, NONE, NONE, PIC_LDW3, 16N_PCREL, SUB5_PC, 4), ++ ++ RC(NOPIC_MCALL, NOPIC_RCALL1, NONE, NONE, CPCALL, NOPIC_MCALL, 4), ++ RP(NOPIC_RCALL2, NONE, NOPIC_RCALL1, NOPIC_MCALL, 22H_PCREL, RCALL2, 4), ++ RP(NOPIC_RCALL1, NONE, NONE, NOPIC_RCALL2, 11H_PCREL, RCALL1, 2), ++ ++ RC(NOPIC_LDW4, NOPIC_MOV1, NOPIC_LDDPC, NONE, 16_CP, NOPIC_LDW4, 4), ++ RC(NOPIC_LDDPC, NOPIC_MOV1, NONE, NOPIC_LDW4, 9W_CP, LDDPC, 2), ++ RP(NOPIC_SUB5, NOPIC_MOV1, NONE, NOPIC_LDDPC, 16N_PCREL, SUB5_PC, 4), ++ RD(NOPIC_MOV2, NONE, NOPIC_MOV1, NOPIC_SUB5, 21S, NOPIC_MOV2, 4), ++ RD(NOPIC_MOV1, NONE, NONE, NOPIC_MOV2, 8S, NOPIC_MOV1, 2), ++ ++ RP(RCALL2, NONE, RCALL1, NONE, 22H_PCREL, RCALL2, 4), ++ RP(RCALL1, NONE, NONE, RCALL2, 11H_PCREL, RCALL1, 2), ++ RP(BRC2, NONE, BRC1, NONE, 22H_PCREL, BRC2, 4), ++ RP(BRC1, NONE, NONE, BRC2, 9H_PCREL, BRC1, 2), ++ RP(BRAL, NONE, RJMP, NONE, 22H_PCREL, BRAL, 4), ++ RP(RJMP, NONE, NONE, BRAL, 11H_PCREL, RJMP, 2), ++}; ++ ++static bfd_boolean ++avr32_elf_new_section_hook(bfd *abfd, asection *sec) ++{ ++ struct avr32_section_data *sdata; ++ ++ sdata = bfd_zalloc(abfd, sizeof(struct avr32_section_data)); ++ if (!sdata) ++ return FALSE; ++ ++ sec->used_by_bfd = sdata; ++ return _bfd_elf_new_section_hook(abfd, sec); ++} ++ ++static struct avr32_relax_data * ++avr32_relax_data(asection *sec) ++{ ++ struct avr32_section_data *sdata; ++ ++ BFD_ASSERT(sec->used_by_bfd); ++ ++ sdata = (struct avr32_section_data *)elf_section_data(sec); ++ return &sdata->relax_data; ++} ++ ++ /* Link-time relaxation */ ++ ++static bfd_boolean ++avr32_elf_relax_section(bfd *abfd, asection *sec, ++ struct bfd_link_info *info, bfd_boolean *again); ++ ++enum relax_pass_id { ++ RELAX_PASS_SIZE_FRAGS, ++ RELAX_PASS_MOVE_DATA, ++}; ++ ++/* Stolen from the xtensa port */ ++static int ++internal_reloc_compare (const void *ap, const void *bp) ++{ ++ const Elf_Internal_Rela *a = (const Elf_Internal_Rela *) ap; ++ const Elf_Internal_Rela *b = (const Elf_Internal_Rela *) bp; ++ ++ if (a->r_offset != b->r_offset) ++ return (a->r_offset - b->r_offset); ++ ++ /* We don't need to sort on these criteria for correctness, ++ but enforcing a more strict ordering prevents unstable qsort ++ from behaving differently with different implementations. ++ Without the code below we get correct but different results ++ on Solaris 2.7 and 2.8. We would like to always produce the ++ same results no matter the host. */ ++ ++ if (a->r_info != b->r_info) ++ return (a->r_info - b->r_info); ++ ++ return (a->r_addend - b->r_addend); ++} ++ ++static enum relax_state_id ++get_pcrel22_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info, ++ const Elf_Internal_Rela *rela) ++{ ++ bfd_byte *contents; ++ bfd_vma insn; ++ enum relax_state_id rs = RS_NONE; ++ ++ contents = retrieve_contents(abfd, sec, info->keep_memory); ++ if (!contents) ++ return RS_ERROR; ++ ++ insn = bfd_get_32(abfd, contents + rela->r_offset); ++ if ((insn & RCALL2_MASK) == RCALL2_OPCODE) ++ rs = RS_RCALL2; ++ else if ((insn & BRAL_MASK) == BRAL_OPCODE) ++ /* Optimizing bral -> rjmp gets us into all kinds of ++ trouble with jump tables. Better not do it. */ ++ rs = RS_NONE; ++ else if ((insn & BRC2_MASK) == BRC2_OPCODE) ++ rs = RS_BRC2; ++ ++ release_contents(sec, contents); ++ ++ return rs; ++} ++ ++static enum relax_state_id ++get_initial_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info, ++ const Elf_Internal_Rela *rela) ++{ ++ switch (ELF_R_TYPE(rela->r_info)) ++ { ++ case R_AVR32_GOTCALL: ++ return RS_PIC_CALL; ++ case R_AVR32_GOT18SW: ++ return RS_PIC_MCALL; ++ case R_AVR32_LDA_GOT: ++ return RS_PIC_LDA; ++ case R_AVR32_GOT16S: ++ return RS_PIC_LDW4; ++ case R_AVR32_CPCALL: ++ return RS_NOPIC_MCALL; ++ case R_AVR32_16_CP: ++ return RS_NOPIC_LDW4; ++ case R_AVR32_9W_CP: ++ return RS_NOPIC_LDDPC; ++ case R_AVR32_ALIGN: ++ return RS_ALIGN; ++ case R_AVR32_32_CPENT: ++ return RS_CPENT; ++ case R_AVR32_22H_PCREL: ++ return get_pcrel22_relax_state(abfd, sec, info, rela); ++ case R_AVR32_9H_PCREL: ++ return RS_BRC1; ++ default: ++ return RS_NONE; ++ } ++} ++ ++static bfd_boolean ++reloc_is_cpool_ref(const Elf_Internal_Rela *rela) ++{ ++ switch (ELF_R_TYPE(rela->r_info)) ++ { ++ case R_AVR32_CPCALL: ++ case R_AVR32_16_CP: ++ case R_AVR32_9W_CP: ++ return TRUE; ++ default: ++ return FALSE; ++ } ++} ++ ++static struct fragment * ++new_frag(bfd *abfd ATTRIBUTE_UNUSED, asection *sec, ++ struct avr32_relax_data *rd, enum relax_state_id state, ++ Elf_Internal_Rela *rela) ++{ ++ struct fragment *frag; ++ bfd_size_type r_size; ++ bfd_vma r_offset; ++ unsigned int i = rd->frag_count; ++ ++ BFD_ASSERT(state >= RS_NONE && state < RS_MAX); ++ ++ rd->frag_count++; ++ frag = bfd_realloc(rd->frag, sizeof(struct fragment) * rd->frag_count); ++ if (!frag) ++ return NULL; ++ rd->frag = frag; ++ ++ frag += i; ++ memset(frag, 0, sizeof(struct fragment)); ++ ++ if (state == RS_ALIGN) ++ r_size = (((rela->r_offset + (1 << rela->r_addend) - 1) ++ & ~((1 << rela->r_addend) - 1)) - rela->r_offset); ++ else ++ r_size = relax_state[state].size; ++ ++ if (rela) ++ r_offset = rela->r_offset; ++ else ++ r_offset = sec->size; ++ ++ if (i == 0) ++ { ++ frag->offset = 0; ++ frag->size = r_offset + r_size; ++ } ++ else ++ { ++ frag->offset = rd->frag[i - 1].offset + rd->frag[i - 1].size; ++ frag->size = r_offset + r_size - frag->offset; ++ } ++ ++ if (state != RS_CPENT) ++ /* Make sure we don't discard this frag */ ++ frag->refcount = 1; ++ ++ frag->initial_state = frag->state = state; ++ frag->rela = rela; ++ ++ return frag; ++} ++ ++static struct fragment * ++find_frag(asection *sec, bfd_vma offset) ++{ ++ struct fragment *first, *last; ++ struct avr32_relax_data *rd = avr32_relax_data(sec); ++ ++ if (rd->frag_count == 0) ++ return NULL; ++ ++ first = &rd->frag[0]; ++ last = &rd->frag[rd->frag_count - 1]; ++ ++ /* This may be a reloc referencing the end of a section. The last ++ frag will never have a reloc associated with it, so its size will ++ never change, thus the offset adjustment of the last frag will ++ always be the same as the offset adjustment of the end of the ++ section. */ ++ if (offset == sec->size) ++ { ++ BFD_ASSERT(last->offset + last->size == sec->size); ++ BFD_ASSERT(!last->rela); ++ return last; ++ } ++ ++ while (first <= last) ++ { ++ struct fragment *mid; ++ ++ mid = (last - first) / 2 + first; ++ if ((mid->offset + mid->size) <= offset) ++ first = mid + 1; ++ else if (mid->offset > offset) ++ last = mid - 1; ++ else ++ return mid; ++ } ++ ++ return NULL; ++} ++ ++/* Look through all relocs in a section and determine if any relocs ++ may be affected by relaxation in other sections. If so, allocate ++ an array of additional relocation data which links the affected ++ relocations to the frag(s) where the relaxation may occur. ++ ++ This function also links cpool references to cpool entries and ++ increments the refcount of the latter when this happens. */ ++ ++static bfd_boolean ++allocate_reloc_data(bfd *abfd, asection *sec, Elf_Internal_Rela *relocs, ++ struct bfd_link_info *info) ++{ ++ Elf_Internal_Shdr *symtab_hdr; ++ Elf_Internal_Sym *isymbuf = NULL; ++ struct avr32_relax_data *rd; ++ unsigned int i; ++ bfd_boolean ret = FALSE; ++ ++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr; ++ rd = avr32_relax_data(sec); ++ ++ RDBG("%s<%s>: allocate_reloc_data\n", abfd->filename, sec->name); ++ ++ for (i = 0; i < sec->reloc_count; i++) ++ { ++ Elf_Internal_Rela *rel = &relocs[i]; ++ asection *sym_sec; ++ unsigned long r_symndx; ++ bfd_vma sym_value; ++ ++ if (!rel->r_addend && ELF_R_TYPE(rel->r_info) != R_AVR32_DIFF32 ++ && !reloc_is_cpool_ref(rel)) ++ continue; ++ ++ r_symndx = ELF_R_SYM(rel->r_info); ++ ++ if (r_symndx < symtab_hdr->sh_info) ++ { ++ Elf_Internal_Sym *isym; ++ ++ if (!isymbuf) ++ isymbuf = retrieve_local_syms(abfd, info->keep_memory); ++ if (!isymbuf) ++ return FALSE; ++ ++ isym = &isymbuf[r_symndx]; ++ sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx); ++ sym_value = isym->st_value; ++ } ++ else ++ { ++ struct elf_link_hash_entry *h; ++ ++ h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info]; ++ ++ while (h->root.type == bfd_link_hash_indirect ++ || h->root.type == bfd_link_hash_warning) ++ h = (struct elf_link_hash_entry *)h->root.u.i.link; ++ ++ if (h->root.type != bfd_link_hash_defined ++ && h->root.type != bfd_link_hash_defweak) ++ continue; ++ ++ sym_sec = h->root.u.def.section; ++ sym_value = h->root.u.def.value; ++ } ++ ++ if (sym_sec && avr32_relax_data(sym_sec)->is_relaxable) ++ { ++ bfd_size_type size; ++ struct fragment *frag; ++ ++ if (!rd->reloc_data) ++ { ++ size = sizeof(struct avr32_reloc_data) * sec->reloc_count; ++ rd->reloc_data = bfd_zalloc(abfd, size); ++ if (!rd->reloc_data) ++ goto out; ++ } ++ ++ RDBG("[%3d] 0x%04lx: target: 0x%lx + 0x%lx", ++ i, rel->r_offset, sym_value, rel->r_addend); ++ ++ frag = find_frag(sym_sec, sym_value + rel->r_addend); ++ BFD_ASSERT(frag); ++ rd->reloc_data[i].add_frag = frag; ++ ++ RDBG(" -> %s<%s>:%04lx\n", sym_sec->owner->filename, sym_sec->name, ++ frag->rela ? frag->rela->r_offset : sym_sec->size); ++ ++ if (reloc_is_cpool_ref(rel)) ++ { ++ BFD_ASSERT(ELF_R_TYPE(frag->rela->r_info) == R_AVR32_32_CPENT); ++ frag->refcount++; ++ } ++ ++ if (ELF_R_TYPE(rel->r_info) == R_AVR32_DIFF32) ++ { ++ bfd_byte *contents; ++ bfd_signed_vma diff; ++ ++ contents = retrieve_contents(abfd, sec, info->keep_memory); ++ if (!contents) ++ goto out; ++ ++ diff = bfd_get_signed_32(abfd, contents + rel->r_offset); ++ frag = find_frag(sym_sec, sym_value + rel->r_addend + diff); ++ BFD_ASSERT(frag); ++ rd->reloc_data[i].sub_frag = frag; ++ ++ release_contents(sec, contents); ++ } ++ } ++ } ++ ++ ret = TRUE; ++ ++ out: ++ release_local_syms(abfd, isymbuf); ++ return ret; ++} ++ ++static bfd_boolean ++global_sym_set_frag(struct elf_avr32_link_hash_entry *havr, ++ struct bfd_link_info *info ATTRIBUTE_UNUSED) ++{ ++ struct fragment *frag; ++ asection *sec; ++ ++ if (havr->root.root.type != bfd_link_hash_defined ++ && havr->root.root.type != bfd_link_hash_defweak) ++ return TRUE; ++ ++ sec = havr->root.root.u.def.section; ++ if (bfd_is_const_section(sec) ++ || !avr32_relax_data(sec)->is_relaxable) ++ return TRUE; ++ ++ frag = find_frag(sec, havr->root.root.u.def.value); ++ if (!frag) ++ { ++ unsigned int i; ++ struct avr32_relax_data *rd = avr32_relax_data(sec); ++ ++ RDBG("In %s: No frag for %s <%s+%lu> (limit %lu)\n", ++ sec->owner->filename, havr->root.root.root.string, ++ sec->name, havr->root.root.u.def.value, sec->size); ++ for (i = 0; i < rd->frag_count; i++) ++ RDBG(" %8lu - %8lu\n", rd->frag[i].offset, ++ rd->frag[i].offset + rd->frag[i].size); ++ } ++ BFD_ASSERT(frag); ++ ++ havr->sym_frag = frag; ++ return TRUE; ++} ++ ++static bfd_boolean ++analyze_relocations(struct bfd_link_info *info) ++{ ++ bfd *abfd; ++ asection *sec; ++ ++ /* Divide all relaxable sections into fragments */ ++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next) ++ { ++ if (!(elf_elfheader(abfd)->e_flags & EF_AVR32_LINKRELAX)) ++ { ++ if (!(*info->callbacks->warning) ++ (info, _("input is not relaxable"), NULL, abfd, NULL, 0)) ++ return FALSE; ++ continue; ++ } ++ ++ for (sec = abfd->sections; sec; sec = sec->next) ++ { ++ struct avr32_relax_data *rd; ++ struct fragment *frag; ++ Elf_Internal_Rela *relocs; ++ unsigned int i; ++ bfd_boolean ret = TRUE; ++ ++ if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0) ++ continue; ++ ++ rd = avr32_relax_data(sec); ++ ++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory); ++ if (!relocs) ++ return FALSE; ++ ++ qsort(relocs, sec->reloc_count, sizeof(Elf_Internal_Rela), ++ internal_reloc_compare); ++ ++ for (i = 0; i < sec->reloc_count; i++) ++ { ++ enum relax_state_id state; ++ ++ ret = FALSE; ++ state = get_initial_relax_state(abfd, sec, info, &relocs[i]); ++ if (state == RS_ERROR) ++ break; ++ ++ if (state) ++ { ++ frag = new_frag(abfd, sec, rd, state, &relocs[i]); ++ if (!frag) ++ break; ++ ++ pin_internal_relocs(sec, relocs); ++ rd->is_relaxable = TRUE; ++ } ++ ++ ret = TRUE; ++ } ++ ++ release_internal_relocs(sec, relocs); ++ if (!ret) ++ return ret; ++ ++ if (rd->is_relaxable) ++ { ++ frag = new_frag(abfd, sec, rd, RS_NONE, NULL); ++ if (!frag) ++ return FALSE; ++ } ++ } ++ } ++ ++ /* Link each global symbol to the fragment where it's defined. */ ++ elf_link_hash_traverse(elf_hash_table(info), global_sym_set_frag, info); ++ ++ /* Do the same for local symbols. */ ++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next) ++ { ++ Elf_Internal_Sym *isymbuf, *isym; ++ struct fragment **local_sym_frag; ++ unsigned int i, sym_count; ++ ++ sym_count = elf_tdata(abfd)->symtab_hdr.sh_info; ++ if (sym_count == 0) ++ continue; ++ ++ local_sym_frag = bfd_zalloc(abfd, sym_count * sizeof(struct fragment *)); ++ if (!local_sym_frag) ++ return FALSE; ++ elf_tdata(abfd)->local_sym_frag = local_sym_frag; ++ ++ isymbuf = retrieve_local_syms(abfd, info->keep_memory); ++ if (!isymbuf) ++ return FALSE; ++ ++ for (i = 0; i < sym_count; i++) ++ { ++ struct avr32_relax_data *rd; ++ struct fragment *frag; ++ asection *sec; ++ ++ isym = &isymbuf[i]; ++ ++ sec = bfd_section_from_elf_index(abfd, isym->st_shndx); ++ if (!sec) ++ continue; ++ ++ rd = avr32_relax_data(sec); ++ if (!rd->is_relaxable) ++ continue; ++ ++ frag = find_frag(sec, isym->st_value); ++ BFD_ASSERT(frag); ++ ++ local_sym_frag[i] = frag; ++ } ++ ++ release_local_syms(abfd, isymbuf); ++ } ++ ++ /* And again for relocs with addends and constant pool references */ ++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next) ++ for (sec = abfd->sections; sec; sec = sec->next) ++ { ++ Elf_Internal_Rela *relocs; ++ bfd_boolean ret; ++ ++ if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0) ++ continue; ++ ++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory); ++ if (!relocs) ++ return FALSE; ++ ++ ret = allocate_reloc_data(abfd, sec, relocs, info); ++ ++ release_internal_relocs(sec, relocs); ++ if (ret == FALSE) ++ return ret; ++ } ++ ++ return TRUE; ++} ++ ++static bfd_boolean ++rs_is_good_enough(const struct relax_state *rs, struct fragment *frag, ++ bfd_vma symval, bfd_vma addr, struct got_entry *got, ++ struct avr32_reloc_data *ind_data, ++ bfd_signed_vma offset_adjust) ++{ ++ bfd_signed_vma target = 0; ++ ++ switch (rs->reftype) ++ { ++ case REF_ABSOLUTE: ++ target = symval; ++ break; ++ case REF_PCREL: ++ target = symval - addr; ++ break; ++ case REF_CPOOL: ++ /* cpool frags are always in the same section and always after ++ all frags referring to it. So it's always correct to add in ++ offset_adjust here. */ ++ target = (ind_data->add_frag->offset + ind_data->add_frag->offset_adjust ++ + offset_adjust - frag->offset - frag->offset_adjust); ++ break; ++ case REF_GOT: ++ target = got->offset; ++ break; ++ default: ++ abort(); ++ } ++ ++ if (target >= rs->range_min && target <= rs->range_max) ++ return TRUE; ++ else ++ return FALSE; ++} ++ ++static bfd_boolean ++avr32_size_frags(bfd *abfd, asection *sec, struct bfd_link_info *info) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ struct avr32_relax_data *rd; ++ Elf_Internal_Shdr *symtab_hdr; ++ Elf_Internal_Rela *relocs = NULL; ++ Elf_Internal_Sym *isymbuf = NULL; ++ struct got_entry **local_got_ents; ++ struct fragment **local_sym_frag; ++ bfd_boolean ret = FALSE; ++ bfd_signed_vma delta = 0; ++ unsigned int i; ++ ++ htab = avr32_elf_hash_table(info); ++ rd = avr32_relax_data(sec); ++ ++ if (sec == htab->sgot) ++ { ++ RDBG("Relaxing GOT section (vma: 0x%lx)\n", ++ sec->output_section->vma + sec->output_offset); ++ if (assign_got_offsets(htab)) ++ htab->repeat_pass = TRUE; ++ return TRUE; ++ } ++ ++ if (!rd->is_relaxable) ++ return TRUE; ++ ++ if (!sec->rawsize) ++ sec->rawsize = sec->size; ++ ++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr; ++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory); ++ if (!relocs) ++ goto out; ++ ++ isymbuf = retrieve_local_syms(abfd, info->keep_memory); ++ if (!isymbuf) ++ goto out; ++ ++ local_got_ents = elf_local_got_ents(abfd); ++ local_sym_frag = elf_tdata(abfd)->local_sym_frag; ++ ++ RDBG("size_frags: %s<%s>\n vma: 0x%08lx, size: 0x%08lx\n", ++ abfd->filename, sec->name, ++ sec->output_section->vma + sec->output_offset, sec->size); ++ ++ for (i = 0; i < rd->frag_count; i++) ++ { ++ struct fragment *frag = &rd->frag[i]; ++ struct avr32_reloc_data *r_data = NULL, *ind_data = NULL; ++ const struct relax_state *state, *next_state; ++ struct fragment *target_frag = NULL; ++ asection *sym_sec = NULL; ++ Elf_Internal_Rela *rela; ++ struct got_entry *got; ++ bfd_vma symval, r_offset, addend, addr; ++ bfd_signed_vma size_adjust = 0, distance; ++ unsigned long r_symndx; ++ bfd_boolean defined = TRUE, dynamic = FALSE; ++ unsigned char sym_type; ++ ++ frag->offset_adjust += delta; ++ state = next_state = &relax_state[frag->state]; ++ rela = frag->rela; ++ ++ BFD_ASSERT(state->id == frag->state); ++ ++ RDBG(" 0x%04lx%c%d: %s [size %ld]", rela ? rela->r_offset : sec->rawsize, ++ (frag->offset_adjust < 0)?'-':'+', ++ abs(frag->offset_adjust), state->name, state->size); ++ ++ if (!rela) ++ { ++ RDBG(": no reloc, ignoring\n"); ++ continue; ++ } ++ ++ BFD_ASSERT((unsigned int)(rela - relocs) < sec->reloc_count); ++ BFD_ASSERT(state != RS_NONE); ++ ++ r_offset = rela->r_offset + frag->offset_adjust; ++ addr = sec->output_section->vma + sec->output_offset + r_offset; ++ ++ switch (frag->state) ++ { ++ case RS_ALIGN: ++ size_adjust = ((addr + (1 << rela->r_addend) - 1) ++ & ~((1 << rela->r_addend) - 1)); ++ size_adjust -= (sec->output_section->vma + sec->output_offset ++ + frag->offset + frag->offset_adjust ++ + frag->size + frag->size_adjust); ++ ++ RDBG(": adjusting size %lu -> %lu\n", frag->size + frag->size_adjust, ++ frag->size + frag->size_adjust + size_adjust); ++ break; ++ ++ case RS_CPENT: ++ if (frag->refcount == 0 && frag->size_adjust == 0) ++ { ++ RDBG(": discarding frag\n"); ++ size_adjust = -4; ++ } ++ else if (frag->refcount > 0 && frag->size_adjust < 0) ++ { ++ RDBG(": un-discarding frag\n"); ++ size_adjust = 4; ++ } ++ break; ++ ++ default: ++ if (rd->reloc_data) ++ r_data = &rd->reloc_data[frag->rela - relocs]; ++ ++ /* If this is a cpool reference, we want the symbol that the ++ cpool entry refers to, not the symbol for the cpool entry ++ itself, as we already know what frag it's in. */ ++ if (relax_state[frag->initial_state].reftype == REF_CPOOL) ++ { ++ Elf_Internal_Rela *irela = r_data->add_frag->rela; ++ ++ r_symndx = ELF_R_SYM(irela->r_info); ++ addend = irela->r_addend; ++ ++ /* The constant pool must be in the same section as the ++ reloc referring to it. */ ++ BFD_ASSERT((unsigned long)(irela - relocs) < sec->reloc_count); ++ ++ ind_data = r_data; ++ r_data = &rd->reloc_data[irela - relocs]; ++ } ++ else ++ { ++ r_symndx = ELF_R_SYM(rela->r_info); ++ addend = rela->r_addend; ++ } ++ ++ /* Get the value of the symbol referred to by the reloc. */ ++ if (r_symndx < symtab_hdr->sh_info) ++ { ++ Elf_Internal_Sym *isym; ++ ++ isym = isymbuf + r_symndx; ++ symval = 0; ++ ++ RDBG(" local sym %lu: ", r_symndx); ++ ++ if (isym->st_shndx == SHN_UNDEF) ++ defined = FALSE; ++ else if (isym->st_shndx == SHN_ABS) ++ sym_sec = bfd_abs_section_ptr; ++ else if (isym->st_shndx == SHN_COMMON) ++ sym_sec = bfd_com_section_ptr; ++ else ++ sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx); ++ ++ symval = isym->st_value; ++ sym_type = ELF_ST_TYPE(isym->st_info); ++ target_frag = local_sym_frag[r_symndx]; ++ ++ if (local_got_ents) ++ got = local_got_ents[r_symndx]; ++ else ++ got = NULL; ++ } ++ else ++ { ++ /* Global symbol */ ++ unsigned long index; ++ struct elf_link_hash_entry *h; ++ struct elf_avr32_link_hash_entry *havr; ++ ++ index = r_symndx - symtab_hdr->sh_info; ++ h = elf_sym_hashes(abfd)[index]; ++ BFD_ASSERT(h != NULL); ++ ++ while (h->root.type == bfd_link_hash_indirect ++ || h->root.type == bfd_link_hash_warning) ++ h = (struct elf_link_hash_entry *)h->root.u.i.link; ++ ++ havr = (struct elf_avr32_link_hash_entry *)h; ++ got = h->got.glist; ++ ++ symval = 0; ++ ++ RDBG(" %s: ", h->root.root.string); ++ ++ if (h->root.type != bfd_link_hash_defined ++ && h->root.type != bfd_link_hash_defweak) ++ { ++ RDBG("(undef)"); ++ defined = FALSE; ++ } ++ else if ((info->shared && !info->symbolic && h->dynindx != -1) ++ || (htab->root.dynamic_sections_created ++ && h->def_dynamic && !h->def_regular)) ++ { ++ RDBG("(dynamic)"); ++ dynamic = TRUE; ++ sym_sec = h->root.u.def.section; ++ } ++ else ++ { ++ sym_sec = h->root.u.def.section; ++ symval = h->root.u.def.value; ++ target_frag = havr->sym_frag; ++ } ++ ++ sym_type = h->type; ++ } ++ ++ /* Thanks to elf32-ppc for this one. */ ++ if (sym_sec && sym_sec->sec_info_type == ELF_INFO_TYPE_MERGE) ++ { ++ /* At this stage in linking, no SEC_MERGE symbol has been ++ adjusted, so all references to such symbols need to be ++ passed through _bfd_merged_section_offset. (Later, in ++ relocate_section, all SEC_MERGE symbols *except* for ++ section symbols have been adjusted.) ++ ++ SEC_MERGE sections are not relaxed by us, as they ++ shouldn't contain any code. */ ++ ++ BFD_ASSERT(!target_frag && !(r_data && r_data->add_frag)); ++ ++ /* gas may reduce relocations against symbols in SEC_MERGE ++ sections to a relocation against the section symbol when ++ the original addend was zero. When the reloc is against ++ a section symbol we should include the addend in the ++ offset passed to _bfd_merged_section_offset, since the ++ location of interest is the original symbol. On the ++ other hand, an access to "sym+addend" where "sym" is not ++ a section symbol should not include the addend; Such an ++ access is presumed to be an offset from "sym"; The ++ location of interest is just "sym". */ ++ RDBG("\n MERGE: %s: 0x%lx+0x%lx+0x%lx -> ", ++ (sym_type == STT_SECTION)?"section":"not section", ++ sym_sec->output_section->vma + sym_sec->output_offset, ++ symval, addend); ++ ++ if (sym_type == STT_SECTION) ++ symval += addend; ++ ++ symval = (_bfd_merged_section_offset ++ (abfd, &sym_sec, ++ elf_section_data(sym_sec)->sec_info, symval)); ++ ++ if (sym_type != STT_SECTION) ++ symval += addend; ++ } ++ else ++ symval += addend; ++ ++ if (defined && !dynamic) ++ { ++ RDBG("0x%lx+0x%lx", ++ sym_sec->output_section->vma + sym_sec->output_offset, ++ symval); ++ symval += sym_sec->output_section->vma + sym_sec->output_offset; ++ } ++ ++ if (r_data && r_data->add_frag) ++ /* If the add_frag pointer is set, it means that this reloc ++ has an addend that may be affected by relaxation. */ ++ target_frag = r_data->add_frag; ++ ++ if (target_frag) ++ { ++ symval += target_frag->offset_adjust; ++ ++ /* If target_frag comes after this frag in the same ++ section, we should assume that it will be moved by ++ the same amount we are. */ ++ if ((target_frag - rd->frag) < (int)rd->frag_count ++ && target_frag > frag) ++ symval += delta; ++ } ++ ++ distance = symval - addr; ++ ++ /* First, try to make a direct reference. If the symbol is ++ dynamic or undefined, we must take care not to change its ++ reference type, that is, we can't make it direct. ++ ++ Also, it seems like some sections may actually be resized ++ after the relaxation code is done, so we can't really ++ trust that our "distance" is correct. There's really no ++ easy solution to this problem, so we'll just disallow ++ direct references to SEC_DATA sections. ++ ++ Oh, and .bss isn't actually SEC_DATA, so we disallow ++ !SEC_HAS_CONTENTS as well. */ ++ if (!dynamic && defined ++ && (htab->direct_data_refs ++ || (!(sym_sec->flags & SEC_DATA) ++ && (sym_sec->flags & SEC_HAS_CONTENTS))) ++ && next_state->direct) ++ { ++ next_state = &relax_state[next_state->direct]; ++ RDBG(" D-> %s", next_state->name); ++ } ++ ++ /* Iterate backwards until we find a state that fits. */ ++ while (next_state->prev ++ && !rs_is_good_enough(next_state, frag, symval, addr, ++ got, ind_data, delta)) ++ { ++ next_state = &relax_state[next_state->prev]; ++ RDBG(" P-> %s", next_state->name); ++ } ++ ++ /* Then try to find the best possible state. */ ++ while (next_state->next) ++ { ++ const struct relax_state *candidate; ++ ++ candidate = &relax_state[next_state->next]; ++ if (!rs_is_good_enough(candidate, frag, symval, addr, got, ++ ind_data, delta)) ++ break; ++ ++ next_state = candidate; ++ RDBG(" N-> %s", next_state->name); ++ } ++ ++ RDBG(" [size %ld]\n", next_state->size); ++ ++ BFD_ASSERT(next_state->id); ++ BFD_ASSERT(!dynamic || next_state->reftype == REF_GOT); ++ ++ size_adjust = next_state->size - state->size; ++ ++ /* There's a theoretical possibility that shrinking one frag ++ may cause another to grow, which may cause the first one to ++ grow as well, and we're back where we started. Avoid this ++ scenario by disallowing a frag that has grown to ever ++ shrink again. */ ++ if (state->reftype == REF_GOT && next_state->reftype != REF_GOT) ++ { ++ if (frag->has_grown) ++ next_state = state; ++ else ++ unref_got_entry(htab, got); ++ } ++ else if (state->reftype != REF_GOT && next_state->reftype == REF_GOT) ++ { ++ ref_got_entry(htab, got); ++ frag->has_grown = TRUE; ++ } ++ else if (state->reftype == REF_CPOOL ++ && next_state->reftype != REF_CPOOL) ++ { ++ if (frag->has_grown) ++ next_state = state; ++ else ++ ind_data->add_frag->refcount--; ++ } ++ else if (state->reftype != REF_CPOOL ++ && next_state->reftype == REF_CPOOL) ++ { ++ ind_data->add_frag->refcount++; ++ frag->has_grown = TRUE; ++ } ++ else ++ { ++ if (frag->has_grown && size_adjust < 0) ++ next_state = state; ++ else if (size_adjust > 0) ++ frag->has_grown = TRUE; ++ } ++ ++ size_adjust = next_state->size - state->size; ++ frag->state = next_state->id; ++ ++ break; ++ } ++ ++ if (size_adjust) ++ htab->repeat_pass = TRUE; ++ ++ frag->size_adjust += size_adjust; ++ sec->size += size_adjust; ++ delta += size_adjust; ++ ++ BFD_ASSERT((frag->offset + frag->offset_adjust ++ + frag->size + frag->size_adjust) ++ == (frag[1].offset + frag[1].offset_adjust + delta)); ++ } ++ ++ ret = TRUE; ++ ++ out: ++ release_local_syms(abfd, isymbuf); ++ release_internal_relocs(sec, relocs); ++ return ret; ++} ++ ++static bfd_boolean ++adjust_global_symbol(struct elf_avr32_link_hash_entry *havr, ++ struct bfd_link_info *info ATTRIBUTE_UNUSED) ++{ ++ struct elf_link_hash_entry *h = &havr->root; ++ ++ if (havr->sym_frag && (h->root.type == bfd_link_hash_defined ++ || h->root.type == bfd_link_hash_defweak)) ++ { ++ RDBG("adjust_global_symbol: %s 0x%08lx -> 0x%08lx\n", ++ h->root.root.string, h->root.u.def.value, ++ h->root.u.def.value + havr->sym_frag->offset_adjust); ++ h->root.u.def.value += havr->sym_frag->offset_adjust; ++ } ++ return TRUE; ++} ++ ++static bfd_boolean ++adjust_syms(struct bfd_link_info *info) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ bfd *abfd; ++ ++ htab = avr32_elf_hash_table(info); ++ elf_link_hash_traverse(&htab->root, adjust_global_symbol, info); ++ ++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next) ++ { ++ Elf_Internal_Sym *isymbuf; ++ struct fragment **local_sym_frag, *frag; ++ unsigned int i, sym_count; ++ ++ sym_count = elf_tdata(abfd)->symtab_hdr.sh_info; ++ if (sym_count == 0) ++ continue; ++ ++ isymbuf = retrieve_local_syms(abfd, info->keep_memory); ++ if (!isymbuf) ++ return FALSE; ++ ++ local_sym_frag = elf_tdata(abfd)->local_sym_frag; ++ ++ for (i = 0; i < sym_count; i++) ++ { ++ frag = local_sym_frag[i]; ++ if (frag) ++ { ++ RDBG("adjust_local_symbol: %s[%u] 0x%08lx -> 0x%08lx\n", ++ abfd->filename, i, isymbuf[i].st_value, ++ isymbuf[i].st_value + frag->offset_adjust); ++ isymbuf[i].st_value += frag->offset_adjust; ++ } ++ } ++ ++ release_local_syms(abfd, isymbuf); ++ } ++ ++ htab->symbols_adjusted = TRUE; ++ return TRUE; ++} ++ ++static bfd_boolean ++adjust_relocs(bfd *abfd, asection *sec, struct bfd_link_info *info) ++{ ++ struct avr32_relax_data *rd; ++ Elf_Internal_Rela *relocs; ++ Elf_Internal_Shdr *symtab_hdr; ++ unsigned int i; ++ bfd_boolean ret = FALSE; ++ ++ rd = avr32_relax_data(sec); ++ if (!rd->reloc_data) ++ return TRUE; ++ ++ RDBG("adjust_relocs: %s<%s> (count: %u)\n", abfd->filename, sec->name, ++ sec->reloc_count); ++ ++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory); ++ if (!relocs) ++ return FALSE; ++ ++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr; ++ ++ for (i = 0; i < sec->reloc_count; i++) ++ { ++ Elf_Internal_Rela *rela = &relocs[i]; ++ struct avr32_reloc_data *r_data = &rd->reloc_data[i]; ++ struct fragment *sym_frag; ++ unsigned long r_symndx; ++ ++ if (r_data->add_frag) ++ { ++ r_symndx = ELF_R_SYM(rela->r_info); ++ ++ if (r_symndx < symtab_hdr->sh_info) ++ sym_frag = elf_tdata(abfd)->local_sym_frag[r_symndx]; ++ else ++ { ++ struct elf_link_hash_entry *h; ++ ++ h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info]; ++ ++ while (h->root.type == bfd_link_hash_indirect ++ || h->root.type == bfd_link_hash_warning) ++ h = (struct elf_link_hash_entry *)h->root.u.i.link; ++ ++ BFD_ASSERT(h->root.type == bfd_link_hash_defined ++ || h->root.type == bfd_link_hash_defweak); ++ ++ sym_frag = ((struct elf_avr32_link_hash_entry *)h)->sym_frag; ++ } ++ ++ RDBG(" addend: 0x%08lx -> 0x%08lx\n", ++ rela->r_addend, ++ rela->r_addend + r_data->add_frag->offset_adjust ++ - (sym_frag ? sym_frag->offset_adjust : 0)); ++ ++ /* If this is against a section symbol, we won't find any ++ sym_frag, so we'll just adjust the addend. */ ++ rela->r_addend += r_data->add_frag->offset_adjust; ++ if (sym_frag) ++ rela->r_addend -= sym_frag->offset_adjust; ++ ++ if (r_data->sub_frag) ++ { ++ bfd_byte *contents; ++ bfd_signed_vma diff; ++ ++ contents = retrieve_contents(abfd, sec, info->keep_memory); ++ if (!contents) ++ goto out; ++ ++ /* I realize now that sub_frag is misnamed. It's ++ actually add_frag which is subtracted in this ++ case... */ ++ diff = bfd_get_signed_32(abfd, contents + rela->r_offset); ++ diff += (r_data->sub_frag->offset_adjust ++ - r_data->add_frag->offset_adjust); ++ bfd_put_32(abfd, diff, contents + rela->r_offset); ++ ++ RDBG(" 0x%lx: DIFF32 updated: 0x%lx\n", rela->r_offset, diff); ++ ++ release_contents(sec, contents); ++ } ++ } ++ else ++ BFD_ASSERT(!r_data->sub_frag); ++ } ++ ++ ret = TRUE; ++ ++ out: ++ release_internal_relocs(sec, relocs); ++ return ret; ++} ++ ++static bfd_boolean ++avr32_move_data(bfd *abfd, asection *sec, struct bfd_link_info *info) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ struct avr32_relax_data *rd; ++ struct fragment *frag, *fragend; ++ Elf_Internal_Rela *relocs = NULL; ++ bfd_byte *contents = NULL; ++ unsigned int i; ++ bfd_boolean ret = FALSE; ++ ++ htab = avr32_elf_hash_table(info); ++ rd = avr32_relax_data(sec); ++ ++ if (!htab->symbols_adjusted) ++ if (!adjust_syms(info)) ++ return FALSE; ++ ++ if (rd->is_relaxable) ++ { ++ /* Resize the section first, so that we can be sure that enough ++ memory is allocated in case the section has grown. */ ++ if (sec->size > sec->rawsize ++ && elf_section_data(sec)->this_hdr.contents) ++ { ++ /* We must not use cached data if the section has grown. */ ++ free(elf_section_data(sec)->this_hdr.contents); ++ elf_section_data(sec)->this_hdr.contents = NULL; ++ } ++ ++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory); ++ if (!relocs) ++ goto out; ++ contents = retrieve_contents(abfd, sec, info->keep_memory); ++ if (!contents) ++ goto out; ++ ++ fragend = rd->frag + rd->frag_count; ++ ++ RDBG("move_data: %s<%s>: relocs=%p, contents=%p\n", ++ abfd->filename, sec->name, relocs, contents); ++ ++ /* First, move the data into place. We must take care to move ++ frags in the right order so that we don't accidentally ++ overwrite parts of the next frag. */ ++ for (frag = rd->frag; frag < fragend; frag++) ++ { ++ RDBG(" 0x%08lx%c0x%x: size 0x%lx%c0x%x\n", ++ frag->offset, frag->offset_adjust >= 0 ? '+' : '-', ++ abs(frag->offset_adjust), ++ frag->size, frag->size_adjust >= 0 ? '+' : '-', ++ abs(frag->size_adjust)); ++ if (frag->offset_adjust > 0) ++ { ++ struct fragment *prev = frag - 1; ++ struct fragment *last; ++ ++ for (last = frag; last < fragend && last->offset_adjust > 0; ++ last++) ; ++ ++ if (last == fragend) ++ last--; ++ ++ for (frag = last; frag != prev; frag--) ++ { ++ if (frag->offset_adjust ++ && frag->size + frag->size_adjust > 0) ++ { ++ RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n", ++ frag->offset, frag->offset + frag->offset_adjust, ++ frag->size + frag->size_adjust); ++ memmove(contents + frag->offset + frag->offset_adjust, ++ contents + frag->offset, ++ frag->size + frag->size_adjust); ++ } ++ } ++ frag = last; ++ } ++ else if (frag->offset_adjust && frag->size + frag->size_adjust > 0) ++ { ++ RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n", ++ frag->offset, frag->offset + frag->offset_adjust, ++ frag->size + frag->size_adjust); ++ memmove(contents + frag->offset + frag->offset_adjust, ++ contents + frag->offset, ++ frag->size + frag->size_adjust); ++ } ++ } ++ ++ i = 0; ++ ++ for (frag = rd->frag; frag < fragend; frag++) ++ { ++ const struct relax_state *state, *istate; ++ struct avr32_reloc_data *r_data = NULL; ++ ++ istate = &relax_state[frag->initial_state]; ++ state = &relax_state[frag->state]; ++ ++ if (rd->reloc_data) ++ r_data = &rd->reloc_data[frag->rela - relocs]; ++ ++ BFD_ASSERT((long)(frag->size + frag->size_adjust) >= 0); ++ BFD_ASSERT(state->reftype != REF_CPOOL ++ || r_data->add_frag->refcount > 0); ++ ++ if (istate->reftype == REF_CPOOL && state->reftype != REF_CPOOL) ++ { ++ struct fragment *ifrag; ++ ++ /* An indirect reference through the cpool has been ++ converted to a direct reference. We must update the ++ reloc to point to the symbol itself instead of the ++ constant pool entry. The reloc type will be updated ++ later. */ ++ ifrag = r_data->add_frag; ++ frag->rela->r_info = ifrag->rela->r_info; ++ frag->rela->r_addend = ifrag->rela->r_addend; ++ ++ /* Copy the reloc data so the addend will be adjusted ++ correctly later. */ ++ *r_data = rd->reloc_data[ifrag->rela - relocs]; ++ } ++ ++ /* Move all relocs covered by this frag. */ ++ if (frag->rela) ++ BFD_ASSERT(&relocs[i] <= frag->rela); ++ else ++ BFD_ASSERT((frag + 1) == fragend && frag->state == RS_NONE); ++ ++ if (frag == rd->frag) ++ BFD_ASSERT(i == 0); ++ else ++ BFD_ASSERT(&relocs[i] > frag[-1].rela); ++ ++ /* If non-null, frag->rela is the last relocation in the ++ fragment. frag->rela can only be null in the last ++ fragment, so in that case, we'll just do the rest. */ ++ for (; (i < sec->reloc_count ++ && (!frag->rela || &relocs[i] <= frag->rela)); i++) ++ { ++ RDBG("[%4u] r_offset 0x%08lx -> 0x%08lx\n", i, relocs[i].r_offset, ++ relocs[i].r_offset + frag->offset_adjust); ++ relocs[i].r_offset += frag->offset_adjust; ++ } ++ ++ if (frag->refcount == 0) ++ { ++ /* If this frag is to be discarded, make sure we won't ++ relocate it later on. */ ++ BFD_ASSERT(frag->state == RS_CPENT); ++ frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info), ++ R_AVR32_NONE); ++ } ++ else if (frag->state == RS_ALIGN) ++ { ++ bfd_vma addr, addr_end; ++ ++ addr = frag->rela->r_offset; ++ addr_end = (frag->offset + frag->offset_adjust ++ + frag->size + frag->size_adjust); ++ ++ /* If the section is executable, insert NOPs. ++ Otherwise, insert zeroes. */ ++ if (sec->flags & SEC_CODE) ++ { ++ if (addr & 1) ++ { ++ bfd_put_8(abfd, 0, contents + addr); ++ addr++; ++ } ++ ++ BFD_ASSERT(!((addr_end - addr) & 1)); ++ ++ while (addr < addr_end) ++ { ++ bfd_put_16(abfd, NOP_OPCODE, contents + addr); ++ addr += 2; ++ } ++ } ++ else ++ memset(contents + addr, 0, addr_end - addr); ++ } ++ else if (state->opcode_mask) ++ { ++ bfd_vma insn; ++ ++ /* Update the opcode and the relocation type unless it's a ++ "special" relax state (i.e. RS_NONE, RS_ALIGN or ++ RS_CPENT.), in which case the opcode mask is zero. */ ++ insn = bfd_get_32(abfd, contents + frag->rela->r_offset); ++ insn &= ~state->opcode_mask; ++ insn |= state->opcode; ++ RDBG(" 0x%lx: inserting insn %08lx\n", ++ frag->rela->r_offset, insn); ++ bfd_put_32(abfd, insn, contents + frag->rela->r_offset); ++ ++ frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info), ++ state->r_type); ++ } ++ ++ if ((frag + 1) == fragend) ++ BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust ++ + frag->size_adjust) == sec->size); ++ else ++ BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust ++ + frag->size_adjust) ++ == (frag[1].offset + frag[1].offset_adjust)); ++ } ++ } ++ ++ /* Adjust reloc addends and DIFF32 differences */ ++ if (!adjust_relocs(abfd, sec, info)) ++ return FALSE; ++ ++ ret = TRUE; ++ ++ out: ++ release_contents(sec, contents); ++ release_internal_relocs(sec, relocs); ++ return ret; ++} ++ ++static bfd_boolean ++avr32_elf_relax_section(bfd *abfd, asection *sec, ++ struct bfd_link_info *info, bfd_boolean *again) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ struct avr32_relax_data *rd; ++ ++ *again = FALSE; ++ if (info->relocatable) ++ return TRUE; ++ ++ htab = avr32_elf_hash_table(info); ++ if ((!(sec->flags & SEC_RELOC) || sec->reloc_count == 0) ++ && sec != htab->sgot) ++ return TRUE; ++ ++ if (!htab->relocations_analyzed) ++ { ++ if (!analyze_relocations(info)) ++ return FALSE; ++ htab->relocations_analyzed = TRUE; ++ } ++ ++ rd = avr32_relax_data(sec); ++ ++ if (rd->iteration != htab->relax_iteration) ++ { ++ if (!htab->repeat_pass) ++ htab->relax_pass++; ++ htab->relax_iteration++; ++ htab->repeat_pass = FALSE; ++ } ++ ++ rd->iteration++; ++ ++ switch (htab->relax_pass) ++ { ++ case RELAX_PASS_SIZE_FRAGS: ++ if (!avr32_size_frags(abfd, sec, info)) ++ return FALSE; ++ *again = TRUE; ++ break; ++ case RELAX_PASS_MOVE_DATA: ++ if (!avr32_move_data(abfd, sec, info)) ++ return FALSE; ++ break; ++ } ++ ++ return TRUE; ++} ++ ++ ++/* Relocation */ ++ ++static bfd_reloc_status_type ++avr32_check_reloc_value(asection *sec, Elf_Internal_Rela *rela, ++ bfd_signed_vma relocation, reloc_howto_type *howto); ++static bfd_reloc_status_type ++avr32_final_link_relocate(reloc_howto_type *howto, bfd *input_bfd, ++ asection *input_section, bfd_byte *contents, ++ Elf_Internal_Rela *rel, bfd_vma value); ++static bfd_boolean ++avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info, ++ bfd *input_bfd, asection *input_section, ++ bfd_byte *contents, Elf_Internal_Rela *relocs, ++ Elf_Internal_Sym *local_syms, ++ asection **local_sections); ++ ++ ++#define symbol_address(symbol) \ ++ symbol->value + symbol->section->output_section->vma \ ++ + symbol->section->output_offset ++ ++#define avr32_elf_insert_field(size, field, abfd, reloc_entry, data) \ ++ do \ ++ { \ ++ unsigned long x; \ ++ x = bfd_get_##size (abfd, data + reloc_entry->address); \ ++ x &= ~reloc_entry->howto->dst_mask; \ ++ x |= field & reloc_entry->howto->dst_mask; \ ++ bfd_put_##size (abfd, (bfd_vma) x, data + reloc_entry->address); \ ++ } \ ++ while(0) ++ ++static bfd_reloc_status_type ++avr32_check_reloc_value(asection *sec ATTRIBUTE_UNUSED, ++ Elf_Internal_Rela *rela ATTRIBUTE_UNUSED, ++ bfd_signed_vma relocation, ++ reloc_howto_type *howto) ++{ ++ bfd_vma reloc_u; ++ ++ /* We take "complain_overflow_dont" to mean "don't complain on ++ alignment either". This way, we don't have to special-case ++ R_AVR32_HI16 */ ++ if (howto->complain_on_overflow == complain_overflow_dont) ++ return bfd_reloc_ok; ++ ++ /* Check if the value is correctly aligned */ ++ if (relocation & ((1 << howto->rightshift) - 1)) ++ { ++ RDBG("misaligned: %s<%s+%lx>: %s: 0x%lx (align %u)\n", ++ sec->owner->filename, sec->name, rela->r_offset, ++ howto->name, relocation, howto->rightshift); ++ return bfd_reloc_overflow; ++ } ++ ++ /* Now, get rid of the unnecessary bits */ ++ relocation >>= howto->rightshift; ++ reloc_u = (bfd_vma)relocation; ++ ++ switch (howto->complain_on_overflow) ++ { ++ case complain_overflow_unsigned: ++ case complain_overflow_bitfield: ++ if (reloc_u > (unsigned long)((1 << howto->bitsize) - 1)) ++ { ++ RDBG("unsigned overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n", ++ sec->owner->filename, sec->name, rela->r_offset, ++ howto->name, reloc_u, howto->bitsize); ++ RDBG("reloc vma: 0x%lx\n", ++ sec->output_section->vma + sec->output_offset + rela->r_offset); ++ ++ return bfd_reloc_overflow; ++ } ++ break; ++ case complain_overflow_signed: ++ if (relocation > (1 << (howto->bitsize - 1)) - 1) ++ { ++ RDBG("signed overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n", ++ sec->owner->filename, sec->name, rela->r_offset, ++ howto->name, reloc_u, howto->bitsize); ++ RDBG("reloc vma: 0x%lx\n", ++ sec->output_section->vma + sec->output_offset + rela->r_offset); ++ ++ return bfd_reloc_overflow; ++ } ++ if (relocation < -(1 << (howto->bitsize - 1))) ++ { ++ RDBG("signed overflow: %s<%s+%lx>: %s: -0x%lx (size %u)\n", ++ sec->owner->filename, sec->name, rela->r_offset, ++ howto->name, -relocation, howto->bitsize); ++ RDBG("reloc vma: 0x%lx\n", ++ sec->output_section->vma + sec->output_offset + rela->r_offset); ++ ++ return bfd_reloc_overflow; ++ } ++ break; ++ default: ++ abort(); ++ } ++ ++ return bfd_reloc_ok; ++} ++ ++ ++static bfd_reloc_status_type ++avr32_final_link_relocate(reloc_howto_type *howto, ++ bfd *input_bfd, ++ asection *input_section, ++ bfd_byte *contents, ++ Elf_Internal_Rela *rel, ++ bfd_vma value) ++{ ++ bfd_vma field; ++ bfd_vma relocation; ++ bfd_reloc_status_type status; ++ bfd_byte *p = contents + rel->r_offset; ++ unsigned long x; ++ ++ pr_debug(" (6b) final link relocate\n"); ++ ++ /* Sanity check the address */ ++ if (rel->r_offset > input_section->size) ++ { ++ (*_bfd_error_handler) ++ ("%B: %A+0x%lx: offset out of range (section size: 0x%lx)", ++ input_bfd, input_section, rel->r_offset, input_section->size); ++ return bfd_reloc_outofrange; ++ } ++ ++ relocation = value + rel->r_addend; ++ ++ if (howto->pc_relative) ++ { ++ bfd_vma addr; ++ ++ addr = input_section->output_section->vma ++ + input_section->output_offset + rel->r_offset; ++ addr &= ~0UL << howto->rightshift; ++ relocation -= addr; ++ } ++ ++ switch (ELF32_R_TYPE(rel->r_info)) ++ { ++ case R_AVR32_16N_PCREL: ++ /* sub reg, pc, . - (sym + addend) */ ++ relocation = -relocation; ++ break; ++ } ++ ++ status = avr32_check_reloc_value(input_section, rel, relocation, howto); ++ ++ relocation >>= howto->rightshift; ++ if (howto->bitsize == 21) ++ field = (relocation & 0xffff) ++ | ((relocation & 0x10000) << 4) ++ | ((relocation & 0x1e0000) << 8); ++ else if (howto->bitsize == 12) ++ field = (relocation & 0xff) | ((relocation & 0xf00) << 4); ++ else if (howto->bitsize == 10) ++ field = ((relocation & 0xff) << 4) ++ | ((relocation & 0x300) >> 8); ++ else ++ field = relocation << howto->bitpos; ++ ++ switch (howto->size) ++ { ++ case 0: ++ x = bfd_get_8 (input_bfd, p); ++ x &= ~howto->dst_mask; ++ x |= field & howto->dst_mask; ++ bfd_put_8 (input_bfd, (bfd_vma) x, p); ++ break; ++ case 1: ++ x = bfd_get_16 (input_bfd, p); ++ x &= ~howto->dst_mask; ++ x |= field & howto->dst_mask; ++ bfd_put_16 (input_bfd, (bfd_vma) x, p); ++ break; ++ case 2: ++ x = bfd_get_32 (input_bfd, p); ++ x &= ~howto->dst_mask; ++ x |= field & howto->dst_mask; ++ bfd_put_32 (input_bfd, (bfd_vma) x, p); ++ break; ++ default: ++ abort(); ++ } ++ ++ return status; ++} ++ ++/* (6) Apply relocations to the normal (non-dynamic) sections */ ++ ++static bfd_boolean ++avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info, ++ bfd *input_bfd, asection *input_section, ++ bfd_byte *contents, Elf_Internal_Rela *relocs, ++ Elf_Internal_Sym *local_syms, ++ asection **local_sections) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ Elf_Internal_Shdr *symtab_hdr; ++ Elf_Internal_Rela *rel, *relend; ++ struct elf_link_hash_entry **sym_hashes; ++ struct got_entry **local_got_ents; ++ asection *sgot; ++ asection *srelgot; ++ ++ pr_debug("(6) relocate section %s:<%s> (size 0x%lx)\n", ++ input_bfd->filename, input_section->name, input_section->size); ++ ++ /* If we're doing a partial link, we don't have to do anything since ++ we're using RELA relocations */ ++ if (info->relocatable) ++ return TRUE; ++ ++ htab = avr32_elf_hash_table(info); ++ symtab_hdr = &elf_tdata(input_bfd)->symtab_hdr; ++ sym_hashes = elf_sym_hashes(input_bfd); ++ local_got_ents = elf_local_got_ents(input_bfd); ++ sgot = htab->sgot; ++ srelgot = htab->srelgot; ++ ++ relend = relocs + input_section->reloc_count; ++ for (rel = relocs; rel < relend; rel++) ++ { ++ unsigned long r_type, r_symndx; ++ reloc_howto_type *howto; ++ Elf_Internal_Sym *sym = NULL; ++ struct elf_link_hash_entry *h = NULL; ++ asection *sec = NULL; ++ bfd_vma value; ++ bfd_vma offset; ++ bfd_reloc_status_type status; ++ ++ r_type = ELF32_R_TYPE(rel->r_info); ++ r_symndx = ELF32_R_SYM(rel->r_info); ++ ++ if (r_type == R_AVR32_NONE ++ || r_type == R_AVR32_ALIGN ++ || r_type == R_AVR32_DIFF32 ++ || r_type == R_AVR32_DIFF16 ++ || r_type == R_AVR32_DIFF8) ++ continue; ++ ++ /* Sanity check */ ++ if (r_type > R_AVR32_max) ++ { ++ bfd_set_error(bfd_error_bad_value); ++ return FALSE; ++ } ++ ++ howto = &elf_avr32_howto_table[r_type]; ++ ++ if (r_symndx < symtab_hdr->sh_info) ++ { ++ sym = local_syms + r_symndx; ++ sec = local_sections[r_symndx]; ++ ++ pr_debug(" (6a) processing %s against local symbol %lu\n", ++ howto->name, r_symndx); ++ ++ /* The following function changes rel->r_addend behind our back. */ ++ value = _bfd_elf_rela_local_sym(output_bfd, sym, &sec, rel); ++ pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend); ++ } ++ else ++ { ++ if (sym_hashes == NULL) ++ return FALSE; ++ ++ h = sym_hashes[r_symndx - symtab_hdr->sh_info]; ++ while (h->root.type == bfd_link_hash_indirect ++ || h->root.type == bfd_link_hash_warning) ++ h = (struct elf_link_hash_entry *)h->root.u.i.link; ++ ++ pr_debug(" (6a) processing %s against symbol %s\n", ++ howto->name, h->root.root.string); ++ ++ if (h->root.type == bfd_link_hash_defined ++ || h->root.type == bfd_link_hash_defweak) ++ { ++ bfd_boolean dyn; ++ ++ dyn = htab->root.dynamic_sections_created; ++ sec = h->root.u.def.section; ++ ++ if (sec->output_section) ++ value = (h->root.u.def.value ++ + sec->output_section->vma ++ + sec->output_offset); ++ else ++ value = h->root.u.def.value; ++ } ++ else if (h->root.type == bfd_link_hash_undefweak) ++ value = 0; ++ else if (info->unresolved_syms_in_objects == RM_IGNORE ++ && ELF_ST_VISIBILITY(h->other) == STV_DEFAULT) ++ value = 0; ++ else ++ { ++ bfd_boolean err; ++ err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR ++ || ELF_ST_VISIBILITY(h->other) != STV_DEFAULT); ++ if (!info->callbacks->undefined_symbol ++ (info, h->root.root.string, input_bfd, ++ input_section, rel->r_offset, err)) ++ return FALSE; ++ value = 0; ++ } ++ ++ pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend); ++ } ++ ++ switch (r_type) ++ { ++ case R_AVR32_GOT32: ++ case R_AVR32_GOT16: ++ case R_AVR32_GOT8: ++ case R_AVR32_GOT21S: ++ case R_AVR32_GOT18SW: ++ case R_AVR32_GOT16S: ++ case R_AVR32_GOT7UW: ++ case R_AVR32_LDA_GOT: ++ case R_AVR32_GOTCALL: ++ BFD_ASSERT(sgot != NULL); ++ ++ if (h != NULL) ++ { ++ BFD_ASSERT(h->got.glist->refcount > 0); ++ offset = h->got.glist->offset; ++ ++ BFD_ASSERT(offset < sgot->size); ++ if (!elf_hash_table(info)->dynamic_sections_created ++ || (h->def_regular ++ && (!info->shared ++ || info->symbolic ++ || h->dynindx == -1))) ++ { ++ /* This is actually a static link, or it is a ++ -Bsymbolic link and the symbol is defined ++ locally, or the symbol was forced to be local. */ ++ bfd_put_32(output_bfd, value, sgot->contents + offset); ++ } ++ } ++ else ++ { ++ BFD_ASSERT(local_got_ents && ++ local_got_ents[r_symndx]->refcount > 0); ++ offset = local_got_ents[r_symndx]->offset; ++ ++ /* Local GOT entries don't have relocs. If this is a ++ shared library, the dynamic linker will add the load ++ address to the initial value at startup. */ ++ BFD_ASSERT(offset < sgot->size); ++ pr_debug("Initializing GOT entry at offset %lu: 0x%lx\n", ++ offset, value); ++ bfd_put_32 (output_bfd, value, sgot->contents + offset); ++ } ++ ++ value = sgot->output_offset + offset; ++ pr_debug("GOT reference: New value %lx\n", value); ++ break; ++ ++ case R_AVR32_GOTPC: ++ /* This relocation type is for constant pool entries used in ++ the calculation "Rd = PC - (PC - GOT)", where the ++ constant pool supplies the constant (PC - GOT) ++ offset. The symbol value + addend indicates where the ++ value of PC is taken. */ ++ value -= sgot->output_section->vma; ++ break; ++ ++ case R_AVR32_32_PCREL: ++ /* We must adjust r_offset to account for discarded data in ++ the .eh_frame section. This is probably not the right ++ way to do this, since AFAICS all other architectures do ++ it some other way. I just can't figure out how... */ ++ { ++ bfd_vma r_offset; ++ ++ r_offset = _bfd_elf_section_offset(output_bfd, info, ++ input_section, ++ rel->r_offset); ++ if (r_offset == (bfd_vma)-1 ++ || r_offset == (bfd_vma)-2) ++ continue; ++ rel->r_offset = r_offset; ++ } ++ break; ++ ++ case R_AVR32_32: ++ /* We need to emit a run-time relocation in the following cases: ++ - we're creating a shared library ++ - the symbol is not defined in any regular objects ++ ++ Of course, sections that aren't going to be part of the ++ run-time image will not get any relocs, and undefined ++ symbols won't have any either (only weak undefined ++ symbols should get this far). */ ++ if ((info->shared ++ || (elf_hash_table(info)->dynamic_sections_created ++ && h != NULL ++ && h->def_dynamic ++ && !h->def_regular)) ++ && r_symndx != 0 ++ && (input_section->flags & SEC_ALLOC)) ++ { ++ Elf_Internal_Rela outrel; ++ bfd_byte *loc; ++ bfd_boolean skip, relocate; ++ struct elf_avr32_link_hash_entry *avrh; ++ ++ pr_debug("Going to generate dynamic reloc...\n"); ++ ++ skip = FALSE; ++ relocate = FALSE; ++ ++ outrel.r_offset = _bfd_elf_section_offset(output_bfd, info, ++ input_section, ++ rel->r_offset); ++ if (outrel.r_offset == (bfd_vma)-1) ++ skip = TRUE; ++ else if (outrel.r_offset == (bfd_vma)-2) ++ skip = TRUE, relocate = TRUE; ++ ++ outrel.r_offset += (input_section->output_section->vma ++ + input_section->output_offset); ++ ++ pr_debug(" ... offset %lx, dynindx %ld\n", ++ outrel.r_offset, h ? h->dynindx : -1); ++ ++ if (skip) ++ memset(&outrel, 0, sizeof(outrel)); ++ else ++ { ++ avrh = (struct elf_avr32_link_hash_entry *)h; ++ /* h->dynindx may be -1 if this symbol was marked to ++ become local. */ ++ if (h == NULL ++ || ((info->symbolic || h->dynindx == -1) ++ && h->def_regular)) ++ { ++ relocate = TRUE; ++ outrel.r_info = ELF32_R_INFO(0, R_AVR32_RELATIVE); ++ outrel.r_addend = value + rel->r_addend; ++ pr_debug(" ... R_AVR32_RELATIVE\n"); ++ } ++ else ++ { ++ BFD_ASSERT(h->dynindx != -1); ++ relocate = TRUE; ++ outrel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT); ++ outrel.r_addend = rel->r_addend; ++ pr_debug(" ... R_AVR32_GLOB_DAT\n"); ++ } ++ } ++ ++ pr_debug("srelgot reloc_count: %d, size %lu\n", ++ srelgot->reloc_count, srelgot->size); ++ ++ loc = srelgot->contents; ++ loc += srelgot->reloc_count++ * sizeof(Elf32_External_Rela); ++ bfd_elf32_swap_reloca_out(output_bfd, &outrel, loc); ++ ++ BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela) ++ <= srelgot->size); ++ ++ if (!relocate) ++ continue; ++ } ++ break; ++ } ++ ++ status = avr32_final_link_relocate(howto, input_bfd, input_section, ++ contents, rel, value); ++ ++ switch (status) ++ { ++ case bfd_reloc_ok: ++ break; ++ ++ case bfd_reloc_overflow: ++ { ++ const char *name; ++ ++ if (h != NULL) ++ name = h->root.root.string; ++ else ++ { ++ name = bfd_elf_string_from_elf_section(input_bfd, ++ symtab_hdr->sh_link, ++ sym->st_name); ++ if (name == NULL) ++ return FALSE; ++ if (*name == '\0') ++ name = bfd_section_name(input_bfd, sec); ++ } ++ if (!((*info->callbacks->reloc_overflow) ++ (info, (h ? &h->root : NULL), name, howto->name, ++ rel->r_addend, input_bfd, input_section, rel->r_offset))) ++ return FALSE; ++ } ++ break; ++ ++ case bfd_reloc_outofrange: ++ default: ++ abort(); ++ } ++ } ++ ++ return TRUE; ++} ++ ++ ++/* Additional processing of dynamic sections after relocation */ ++ ++static bfd_boolean ++avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info, ++ struct elf_link_hash_entry *h, ++ Elf_Internal_Sym *sym); ++static bfd_boolean ++avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info); ++ ++ ++/* (7) Initialize the contents of a dynamic symbol and/or emit ++ relocations for it */ ++ ++static bfd_boolean ++avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info, ++ struct elf_link_hash_entry *h, ++ Elf_Internal_Sym *sym) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ struct got_entry *got; ++ ++ pr_debug("(7) finish dynamic symbol: %s\n", h->root.root.string); ++ ++ htab = avr32_elf_hash_table(info); ++ got = h->got.glist; ++ ++ if (got && got->refcount > 0) ++ { ++ asection *sgot; ++ asection *srelgot; ++ Elf_Internal_Rela rel; ++ bfd_byte *loc; ++ ++ /* This symbol has an entry in the GOT. Set it up. */ ++ sgot = htab->sgot; ++ srelgot = htab->srelgot; ++ BFD_ASSERT(sgot && srelgot); ++ ++ rel.r_offset = (sgot->output_section->vma ++ + sgot->output_offset ++ + got->offset); ++ ++ /* If this is a static link, or it is a -Bsymbolic link and the ++ symbol is defined locally or was forced to be local because ++ of a version file, we just want to emit a RELATIVE reloc. The ++ entry in the global offset table will already have been ++ initialized in the relocate_section function. */ ++ if ((info->shared ++ && !info->symbolic ++ && h->dynindx != -1) ++ || (htab->root.dynamic_sections_created ++ && h->def_dynamic ++ && !h->def_regular)) ++ { ++ bfd_put_32(output_bfd, 0, sgot->contents + got->offset); ++ rel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT); ++ rel.r_addend = 0; ++ ++ pr_debug("GOT reloc R_AVR32_GLOB_DAT, dynindx: %ld\n", h->dynindx); ++ pr_debug(" srelgot reloc_count: %d, size: %lu\n", ++ srelgot->reloc_count, srelgot->size); ++ ++ loc = (srelgot->contents ++ + srelgot->reloc_count++ * sizeof(Elf32_External_Rela)); ++ bfd_elf32_swap_reloca_out(output_bfd, &rel, loc); ++ ++ BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela) ++ <= srelgot->size); ++ } ++ } ++ ++ /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute */ ++ if (strcmp(h->root.root.string, "_DYNAMIC") == 0 ++ || strcmp(h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0) ++ sym->st_shndx = SHN_ABS; ++ ++ return TRUE; ++} ++ ++/* (8) Do any remaining initialization of the dynamic sections */ ++ ++static bfd_boolean ++avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ asection *sgot, *sdyn; ++ ++ pr_debug("(8) finish dynamic sections\n"); ++ ++ htab = avr32_elf_hash_table(info); ++ sgot = htab->sgot; ++ sdyn = bfd_get_section_by_name(htab->root.dynobj, ".dynamic"); ++ ++ if (htab->root.dynamic_sections_created) ++ { ++ Elf32_External_Dyn *dyncon, *dynconend; ++ ++ BFD_ASSERT(sdyn && sgot && sgot->size >= AVR32_GOT_HEADER_SIZE); ++ ++ dyncon = (Elf32_External_Dyn *)sdyn->contents; ++ dynconend = (Elf32_External_Dyn *)(sdyn->contents + sdyn->size); ++ for (; dyncon < dynconend; dyncon++) ++ { ++ Elf_Internal_Dyn dyn; ++ asection *s; ++ ++ bfd_elf32_swap_dyn_in(htab->root.dynobj, dyncon, &dyn); ++ ++ switch (dyn.d_tag) ++ { ++ default: ++ break; ++ ++ case DT_PLTGOT: ++ s = sgot->output_section; ++ BFD_ASSERT(s != NULL); ++ dyn.d_un.d_ptr = s->vma; ++ bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon); ++ break; ++ ++ case DT_AVR32_GOTSZ: ++ s = sgot->output_section; ++ BFD_ASSERT(s != NULL); ++ dyn.d_un.d_val = s->size; ++ bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon); ++ break; ++ } ++ } ++ ++ /* Fill in the first two entries in the global offset table */ ++ bfd_put_32(output_bfd, ++ sdyn->output_section->vma + sdyn->output_offset, ++ sgot->contents); ++ ++ /* The runtime linker will fill this one in with the address of ++ the run-time link map */ ++ bfd_put_32(output_bfd, 0, sgot->contents + 4); ++ } ++ ++ if (sgot) ++ elf_section_data(sgot->output_section)->this_hdr.sh_entsize = 4; ++ ++ return TRUE; ++} ++ ++ ++/* AVR32-specific private ELF data */ ++ ++static bfd_boolean ++avr32_elf_set_private_flags(bfd *abfd, flagword flags); ++static bfd_boolean ++avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd); ++static bfd_boolean ++avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd); ++static bfd_boolean ++avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr); ++ ++static bfd_boolean ++avr32_elf_set_private_flags(bfd *abfd, flagword flags) ++{ ++ elf_elfheader(abfd)->e_flags = flags; ++ elf_flags_init(abfd) = TRUE; ++ ++ return TRUE; ++} ++ ++/* Copy backend specific data from one object module to another. */ ++ ++static bfd_boolean ++avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd) ++{ ++ elf_elfheader(obfd)->e_flags = elf_elfheader(ibfd)->e_flags; ++ return TRUE; ++} ++ ++/* Merge backend specific data from an object file to the output ++ object file when linking. */ ++ ++static bfd_boolean ++avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd) ++{ ++ flagword out_flags, in_flags; ++ ++ pr_debug("(0) merge_private_bfd_data: %s -> %s\n", ++ ibfd->filename, obfd->filename); ++ ++ in_flags = elf_elfheader(ibfd)->e_flags; ++ out_flags = elf_elfheader(obfd)->e_flags; ++ ++ if (elf_flags_init(obfd)) ++ { ++ /* If one of the inputs are non-PIC, the output must be ++ considered non-PIC. The same applies to linkrelax. */ ++ if (!(in_flags & EF_AVR32_PIC)) ++ out_flags &= ~EF_AVR32_PIC; ++ if (!(in_flags & EF_AVR32_LINKRELAX)) ++ out_flags &= ~EF_AVR32_LINKRELAX; ++ } ++ else ++ { ++ elf_flags_init(obfd) = TRUE; ++ out_flags = in_flags; ++ } ++ ++ elf_elfheader(obfd)->e_flags = out_flags; ++ ++ return TRUE; ++} ++ ++static bfd_boolean ++avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr) ++{ ++ FILE *file = (FILE *)ptr; ++ unsigned long flags; ++ ++ BFD_ASSERT(abfd != NULL && ptr != NULL); ++ ++ _bfd_elf_print_private_bfd_data(abfd, ptr); ++ ++ flags = elf_elfheader(abfd)->e_flags; ++ ++ fprintf(file, _("private flags = %lx:"), elf_elfheader(abfd)->e_flags); ++ ++ if (flags & EF_AVR32_PIC) ++ fprintf(file, " [PIC]"); ++ if (flags & EF_AVR32_LINKRELAX) ++ fprintf(file, " [linker relaxable]"); ++ ++ flags &= ~(EF_AVR32_PIC | EF_AVR32_LINKRELAX); ++ ++ if (flags) ++ fprintf(file, _("")); ++ ++ fputc('\n', file); ++ ++ return TRUE; ++} ++ ++/* Set avr32-specific linker options. */ ++void bfd_elf32_avr32_set_options(struct bfd_link_info *info, ++ int direct_data_refs) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ ++ htab = avr32_elf_hash_table (info); ++ htab->direct_data_refs = !!direct_data_refs; ++} ++ ++ ++ ++/* Understanding core dumps */ ++ ++static bfd_boolean ++avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note); ++static bfd_boolean ++avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note); ++ ++static bfd_boolean ++avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note) ++{ ++ /* Linux/AVR32B elf_prstatus */ ++ if (note->descsz != 148) ++ return FALSE; ++ ++ /* pr_cursig */ ++ elf_tdata(abfd)->core_signal = bfd_get_16(abfd, note->descdata + 12); ++ ++ /* pr_pid */ ++ elf_tdata(abfd)->core_pid = bfd_get_32(abfd, note->descdata + 24); ++ ++ /* Make a ".reg/999" section for pr_reg. The size is for 16 ++ general-purpose registers, SR and r12_orig (18 * 4 = 72). */ ++ return _bfd_elfcore_make_pseudosection(abfd, ".reg", 72, ++ note->descpos + 72); ++} ++ ++static bfd_boolean ++avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note) ++{ ++ /* Linux/AVR32B elf_prpsinfo */ ++ if (note->descsz != 128) ++ return FALSE; ++ ++ elf_tdata(abfd)->core_program ++ = _bfd_elfcore_strndup(abfd, note->descdata + 32, 16); ++ elf_tdata(abfd)->core_command ++ = _bfd_elfcore_strndup(abfd, note->descdata + 48, 80); ++ ++ /* Note that for some reason, a spurious space is tacked ++ onto the end of the args in some (at least one anyway) ++ implementations, so strip it off if it exists. */ ++ ++ { ++ char *command = elf_tdata (abfd)->core_command; ++ int n = strlen (command); ++ ++ if (0 < n && command[n - 1] == ' ') ++ command[n - 1] = '\0'; ++ } ++ ++ return TRUE; ++} ++ ++ ++#define ELF_ARCH bfd_arch_avr32 ++#define ELF_MACHINE_CODE EM_AVR32 ++#define ELF_MAXPAGESIZE 0x1000 ++ ++#define TARGET_BIG_SYM bfd_elf32_avr32_vec ++#define TARGET_BIG_NAME "elf32-avr32" ++ ++#define elf_backend_grok_prstatus avr32_elf_grok_prstatus ++#define elf_backend_grok_psinfo avr32_elf_grok_psinfo ++ ++/* Only RELA relocations are used */ ++#define elf_backend_may_use_rel_p 0 ++#define elf_backend_may_use_rela_p 1 ++#define elf_backend_default_use_rela_p 1 ++#define elf_backend_rela_normal 1 ++#define elf_info_to_howto_rel NULL ++#define elf_info_to_howto avr32_info_to_howto ++ ++#define bfd_elf32_bfd_copy_private_bfd_data avr32_elf_copy_private_bfd_data ++#define bfd_elf32_bfd_merge_private_bfd_data avr32_elf_merge_private_bfd_data ++#define bfd_elf32_bfd_set_private_flags avr32_elf_set_private_flags ++#define bfd_elf32_bfd_print_private_bfd_data avr32_elf_print_private_bfd_data ++#define bfd_elf32_new_section_hook avr32_elf_new_section_hook ++ ++#define elf_backend_gc_mark_hook avr32_elf_gc_mark_hook ++#define elf_backend_gc_sweep_hook avr32_elf_gc_sweep_hook ++#define elf_backend_relocate_section avr32_elf_relocate_section ++#define elf_backend_copy_indirect_symbol avr32_elf_copy_indirect_symbol ++#define elf_backend_create_dynamic_sections avr32_elf_create_dynamic_sections ++#define bfd_elf32_bfd_link_hash_table_create avr32_elf_link_hash_table_create ++#define elf_backend_adjust_dynamic_symbol avr32_elf_adjust_dynamic_symbol ++#define elf_backend_size_dynamic_sections avr32_elf_size_dynamic_sections ++#define elf_backend_finish_dynamic_symbol avr32_elf_finish_dynamic_symbol ++#define elf_backend_finish_dynamic_sections avr32_elf_finish_dynamic_sections ++ ++#define bfd_elf32_bfd_relax_section avr32_elf_relax_section ++ ++/* Find out which symbols need an entry in .got. */ ++#define elf_backend_check_relocs avr32_check_relocs ++#define elf_backend_can_refcount 1 ++#define elf_backend_can_gc_sections 1 ++#define elf_backend_plt_readonly 1 ++#define elf_backend_plt_not_loaded 1 ++#define elf_backend_want_plt_sym 0 ++#define elf_backend_plt_alignment 2 ++#define elf_backend_want_dynbss 0 ++#define elf_backend_want_got_plt 0 ++#define elf_backend_want_got_sym 1 ++#define elf_backend_got_header_size AVR32_GOT_HEADER_SIZE ++ ++#include "elf32-target.h" +diff -Nrup binutils-2.17/bfd/elf32-avr32.c.orig binutils-2.17.atmel.1.3.0/bfd/elf32-avr32.c.orig +--- binutils-2.17/bfd/elf32-avr32.c.orig 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/bfd/elf32-avr32.c.orig 2007-05-31 17:03:36.000000000 +0200 +@@ -0,0 +1,3880 @@ ++/* AVR32-specific support for 32-bit ELF. ++ Copyright 2003-2006 Atmel Corporation. ++ ++ Written by Haavard Skinnemoen, Atmel Norway, ++ ++ This file is part of BFD, the Binary File Descriptor library. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ++ ++#include "bfd.h" ++#include "sysdep.h" ++#include "bfdlink.h" ++#include "libbfd.h" ++#include "elf-bfd.h" ++#include "elf/avr32.h" ++ ++#define xDEBUG ++#define xRELAX_DEBUG ++ ++#ifdef DEBUG ++# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args) ++#else ++# define pr_debug(fmt, args...) do { } while (0) ++#endif ++ ++#ifdef RELAX_DEBUG ++# define RDBG(fmt, args...) fprintf(stderr, fmt, ##args) ++#else ++# define RDBG(fmt, args...) do { } while (0) ++#endif ++ ++/* When things go wrong, we want it to blow up, damnit! */ ++#undef BFD_ASSERT ++#undef abort ++#define BFD_ASSERT(expr) \ ++ do \ ++ { \ ++ if (!(expr)) \ ++ { \ ++ bfd_assert(__FILE__, __LINE__); \ ++ abort(); \ ++ } \ ++ } \ ++ while (0) ++ ++/* The name of the dynamic interpreter. This is put in the .interp section. */ ++#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1" ++ ++#define AVR32_GOT_HEADER_SIZE 8 ++#define AVR32_FUNCTION_STUB_SIZE 8 ++ ++#define ELF_R_INFO(x, y) ELF32_R_INFO(x, y) ++#define ELF_R_TYPE(x) ELF32_R_TYPE(x) ++#define ELF_R_SYM(x) ELF32_R_SYM(x) ++ ++#define NOP_OPCODE 0xd703 ++ ++ ++/* Mapping between BFD relocations and ELF relocations */ ++ ++static reloc_howto_type * ++bfd_elf32_bfd_reloc_type_lookup(bfd *abfd, bfd_reloc_code_real_type code); ++static void ++avr32_info_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst); ++ ++/* Generic HOWTO */ ++#define GENH(name, align, size, bitsize, pcrel, bitpos, complain, mask) \ ++ HOWTO(name, align, size, bitsize, pcrel, bitpos, \ ++ complain_overflow_##complain, bfd_elf_generic_reloc, #name, \ ++ FALSE, 0, mask, pcrel) ++ ++static reloc_howto_type elf_avr32_howto_table[] = { ++ /* NAME ALN SZ BSZ PCREL BP COMPLAIN MASK */ ++ GENH(R_AVR32_NONE, 0, 0, 0, FALSE, 0, dont, 0x00000000), ++ ++ GENH(R_AVR32_32, 0, 2, 32, FALSE, 0, dont, 0xffffffff), ++ GENH(R_AVR32_16, 0, 1, 16, FALSE, 0, bitfield, 0x0000ffff), ++ GENH(R_AVR32_8, 0, 0, 8, FALSE, 0, bitfield, 0x000000ff), ++ GENH(R_AVR32_32_PCREL, 0, 2, 32, TRUE, 0, signed, 0xffffffff), ++ GENH(R_AVR32_16_PCREL, 0, 1, 16, TRUE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_8_PCREL, 0, 0, 8, TRUE, 0, signed, 0x000000ff), ++ ++ /* Difference between two symbol (sym2 - sym1). The reloc encodes ++ the value of sym1. The field contains the difference before any ++ relaxing is done. */ ++ GENH(R_AVR32_DIFF32, 0, 2, 32, FALSE, 0, dont, 0xffffffff), ++ GENH(R_AVR32_DIFF16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_DIFF8, 0, 0, 8, FALSE, 0, signed, 0x000000ff), ++ ++ GENH(R_AVR32_GOT32, 0, 2, 32, FALSE, 0, signed, 0xffffffff), ++ GENH(R_AVR32_GOT16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_GOT8, 0, 0, 8, FALSE, 0, signed, 0x000000ff), ++ ++ GENH(R_AVR32_21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff), ++ GENH(R_AVR32_16U, 0, 2, 16, FALSE, 0, unsigned, 0x0000ffff), ++ GENH(R_AVR32_16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_8S, 0, 1, 8, FALSE, 4, signed, 0x00000ff0), ++ GENH(R_AVR32_8S_EXT, 0, 2, 8, FALSE, 0, signed, 0x000000ff), ++ ++ GENH(R_AVR32_22H_PCREL, 1, 2, 21, TRUE, 0, signed, 0x1e10ffff), ++ GENH(R_AVR32_18W_PCREL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_16B_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_16N_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_14UW_PCREL, 2, 2, 12, TRUE, 0, unsigned, 0x0000f0ff), ++ GENH(R_AVR32_11H_PCREL, 1, 1, 10, TRUE, 4, signed, 0x00000ff3), ++ GENH(R_AVR32_10UW_PCREL, 2, 2, 8, TRUE, 0, unsigned, 0x000000ff), ++ GENH(R_AVR32_9H_PCREL, 1, 1, 8, TRUE, 4, signed, 0x00000ff0), ++ GENH(R_AVR32_9UW_PCREL, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0), ++ ++ GENH(R_AVR32_HI16, 16, 2, 16, FALSE, 0, dont, 0x0000ffff), ++ GENH(R_AVR32_LO16, 0, 2, 16, FALSE, 0, dont, 0x0000ffff), ++ ++ GENH(R_AVR32_GOTPC, 0, 2, 32, FALSE, 0, dont, 0xffffffff), ++ GENH(R_AVR32_GOTCALL, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff), ++ GENH(R_AVR32_LDA_GOT, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff), ++ GENH(R_AVR32_GOT21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff), ++ GENH(R_AVR32_GOT18SW, 2, 2, 16, FALSE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_GOT16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_GOT7UW, 2, 1, 5, FALSE, 4, unsigned, 0x000001f0), ++ ++ GENH(R_AVR32_32_CPENT, 0, 2, 32, FALSE, 0, dont, 0xffffffff), ++ GENH(R_AVR32_CPCALL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_16_CP, 0, 2, 16, TRUE, 0, signed, 0x0000ffff), ++ GENH(R_AVR32_9W_CP, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0), ++ ++ GENH(R_AVR32_RELATIVE, 0, 2, 32, FALSE, 0, signed, 0xffffffff), ++ GENH(R_AVR32_GLOB_DAT, 0, 2, 32, FALSE, 0, dont, 0xffffffff), ++ GENH(R_AVR32_JMP_SLOT, 0, 2, 32, FALSE, 0, dont, 0xffffffff), ++ ++ GENH(R_AVR32_ALIGN, 0, 1, 0, FALSE, 0, unsigned, 0x00000000), ++}; ++ ++struct elf_reloc_map ++{ ++ bfd_reloc_code_real_type bfd_reloc_val; ++ unsigned char elf_reloc_val; ++}; ++ ++static const struct elf_reloc_map avr32_reloc_map[] = ++{ ++ { BFD_RELOC_NONE, R_AVR32_NONE }, ++ ++ { BFD_RELOC_32, R_AVR32_32 }, ++ { BFD_RELOC_16, R_AVR32_16 }, ++ { BFD_RELOC_8, R_AVR32_8 }, ++ { BFD_RELOC_32_PCREL, R_AVR32_32_PCREL }, ++ { BFD_RELOC_16_PCREL, R_AVR32_16_PCREL }, ++ { BFD_RELOC_8_PCREL, R_AVR32_8_PCREL }, ++ { BFD_RELOC_AVR32_DIFF32, R_AVR32_DIFF32 }, ++ { BFD_RELOC_AVR32_DIFF16, R_AVR32_DIFF16 }, ++ { BFD_RELOC_AVR32_DIFF8, R_AVR32_DIFF8 }, ++ { BFD_RELOC_AVR32_GOT32, R_AVR32_GOT32 }, ++ { BFD_RELOC_AVR32_GOT16, R_AVR32_GOT16 }, ++ { BFD_RELOC_AVR32_GOT8, R_AVR32_GOT8 }, ++ ++ { BFD_RELOC_AVR32_21S, R_AVR32_21S }, ++ { BFD_RELOC_AVR32_16U, R_AVR32_16U }, ++ { BFD_RELOC_AVR32_16S, R_AVR32_16S }, ++ { BFD_RELOC_AVR32_SUB5, R_AVR32_16S }, ++ { BFD_RELOC_AVR32_8S_EXT, R_AVR32_8S_EXT }, ++ { BFD_RELOC_AVR32_8S, R_AVR32_8S }, ++ ++ { BFD_RELOC_AVR32_22H_PCREL, R_AVR32_22H_PCREL }, ++ { BFD_RELOC_AVR32_18W_PCREL, R_AVR32_18W_PCREL }, ++ { BFD_RELOC_AVR32_16B_PCREL, R_AVR32_16B_PCREL }, ++ { BFD_RELOC_AVR32_16N_PCREL, R_AVR32_16N_PCREL }, ++ { BFD_RELOC_AVR32_11H_PCREL, R_AVR32_11H_PCREL }, ++ { BFD_RELOC_AVR32_10UW_PCREL, R_AVR32_10UW_PCREL }, ++ { BFD_RELOC_AVR32_9H_PCREL, R_AVR32_9H_PCREL }, ++ { BFD_RELOC_AVR32_9UW_PCREL, R_AVR32_9UW_PCREL }, ++ ++ { BFD_RELOC_HI16, R_AVR32_HI16 }, ++ { BFD_RELOC_LO16, R_AVR32_LO16 }, ++ ++ { BFD_RELOC_AVR32_GOTPC, R_AVR32_GOTPC }, ++ { BFD_RELOC_AVR32_GOTCALL, R_AVR32_GOTCALL }, ++ { BFD_RELOC_AVR32_LDA_GOT, R_AVR32_LDA_GOT }, ++ { BFD_RELOC_AVR32_GOT21S, R_AVR32_GOT21S }, ++ { BFD_RELOC_AVR32_GOT18SW, R_AVR32_GOT18SW }, ++ { BFD_RELOC_AVR32_GOT16S, R_AVR32_GOT16S }, ++ /* GOT7UW should never be generated by the assembler */ ++ ++ { BFD_RELOC_AVR32_32_CPENT, R_AVR32_32_CPENT }, ++ { BFD_RELOC_AVR32_CPCALL, R_AVR32_CPCALL }, ++ { BFD_RELOC_AVR32_16_CP, R_AVR32_16_CP }, ++ { BFD_RELOC_AVR32_9W_CP, R_AVR32_9W_CP }, ++ ++ { BFD_RELOC_AVR32_ALIGN, R_AVR32_ALIGN }, ++}; ++ ++static reloc_howto_type * ++bfd_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, ++ bfd_reloc_code_real_type code) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < sizeof(avr32_reloc_map) / sizeof(struct elf_reloc_map); i++) ++ { ++ if (avr32_reloc_map[i].bfd_reloc_val == code) ++ return &elf_avr32_howto_table[avr32_reloc_map[i].elf_reloc_val]; ++ } ++ ++ return NULL; ++} ++ ++static void ++avr32_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, ++ arelent *cache_ptr, ++ Elf_Internal_Rela *dst) ++{ ++ unsigned int r_type; ++ ++ r_type = ELF32_R_TYPE (dst->r_info); ++ BFD_ASSERT (r_type < (unsigned int) R_AVR32_max); ++ cache_ptr->howto = &elf_avr32_howto_table[r_type]; ++} ++ ++ ++/* AVR32 ELF linker hash table and associated hash entries. */ ++ ++static struct bfd_hash_entry * ++avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry, ++ struct bfd_hash_table *table, ++ const char *string); ++static void ++avr32_elf_copy_indirect_symbol(struct bfd_link_info *info, ++ struct elf_link_hash_entry *dir, ++ struct elf_link_hash_entry *ind); ++static struct bfd_link_hash_table * ++avr32_elf_link_hash_table_create(bfd *abfd); ++ ++/* ++ Try to limit memory usage to something reasonable when sorting the ++ GOT. If we ever get more than this many references to the same ++ symbol, we may need to do something special. ++*/ ++#define MAX_NR_GOT_HOLES 8192 ++ ++/* ++ AVR32 GOT entry. We need to keep track of refcounts and offsets ++ simultaneously, since we need the offsets during relaxation, and we ++ also want to be able to drop GOT entries during relaxation. In ++ addition to this, we want to keep the list of GOT entries sorted so ++ that we can keep the most-used entries at the lowest offsets. ++*/ ++struct got_entry ++{ ++ struct got_entry *next; ++ struct got_entry **pprev; ++ int refcount; ++ bfd_signed_vma offset; ++}; ++ ++struct elf_avr32_link_hash_entry ++{ ++ struct elf_link_hash_entry root; ++ ++ /* Number of runtime relocations against this symbol. */ ++ unsigned int possibly_dynamic_relocs; ++ ++ /* If there are anything but R_AVR32_GOT18 relocations against this ++ symbol, it means that someone may be taking the address of the ++ function, and we should therefore not create a stub. */ ++ bfd_boolean no_fn_stub; ++ ++ /* If there is a R_AVR32_32 relocation in a read-only section ++ against this symbol, we could be in trouble. If we're linking a ++ shared library or this symbol is defined in one, it means we must ++ emit a run-time reloc for it and that's not allowed in read-only ++ sections. */ ++ asection *readonly_reloc_sec; ++ bfd_vma readonly_reloc_offset; ++ ++ /* Record which frag (if any) contains the symbol. This is used ++ during relaxation in order to avoid having to update all symbols ++ whenever we move something. For local symbols, this information ++ is in the local_sym_frag member of struct elf_obj_tdata. */ ++ struct fragment *sym_frag; ++}; ++#define avr32_elf_hash_entry(ent) ((struct elf_avr32_link_hash_entry *)(ent)) ++ ++struct elf_avr32_link_hash_table ++{ ++ struct elf_link_hash_table root; ++ ++ /* Shortcuts to get to dynamic linker sections. */ ++ asection *sgot; ++ asection *srelgot; ++ asection *sstub; ++ ++ /* We use a variation of Pigeonhole Sort to sort the GOT. After the ++ initial refcounts have been determined, we initialize ++ nr_got_holes to the highest refcount ever seen and allocate an ++ array of nr_got_holes entries for got_hole. Each GOT entry is ++ then stored in this array at the index given by its refcount. ++ ++ When a GOT entry has its refcount decremented during relaxation, ++ it is moved to a lower index in the got_hole array. ++ */ ++ struct got_entry **got_hole; ++ int nr_got_holes; ++ ++ /* Dynamic relocations to local symbols. Only used when linking a ++ shared library and -Bsymbolic is not given. */ ++ unsigned int local_dynamic_relocs; ++ ++ bfd_boolean relocations_analyzed; ++ bfd_boolean symbols_adjusted; ++ bfd_boolean repeat_pass; ++ unsigned int relax_iteration; ++ unsigned int relax_pass; ++}; ++#define avr32_elf_hash_table(p) \ ++ ((struct elf_avr32_link_hash_table *)((p)->hash)) ++ ++static struct bfd_hash_entry * ++avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry, ++ struct bfd_hash_table *table, ++ const char *string) ++{ ++ struct elf_avr32_link_hash_entry *ret = avr32_elf_hash_entry(entry); ++ ++ /* Allocate the structure if it hasn't already been allocated by a ++ subclass */ ++ if (ret == NULL) ++ ret = (struct elf_avr32_link_hash_entry *) ++ bfd_hash_allocate(table, sizeof(struct elf_avr32_link_hash_entry)); ++ ++ if (ret == NULL) ++ return NULL; ++ ++ memset(ret, 0, sizeof(struct elf_avr32_link_hash_entry)); ++ ++ /* Give the superclass a chance */ ++ ret = (struct elf_avr32_link_hash_entry *) ++ _bfd_elf_link_hash_newfunc((struct bfd_hash_entry *)ret, table, string); ++ ++ return (struct bfd_hash_entry *)ret; ++} ++ ++/* Copy data from an indirect symbol to its direct symbol, hiding the ++ old indirect symbol. Process additional relocation information. ++ Also called for weakdefs, in which case we just let ++ _bfd_elf_link_hash_copy_indirect copy the flags for us. */ ++ ++static void ++avr32_elf_copy_indirect_symbol(struct bfd_link_info *info, ++ struct elf_link_hash_entry *dir, ++ struct elf_link_hash_entry *ind) ++{ ++ struct elf_avr32_link_hash_entry *edir, *eind; ++ ++ _bfd_elf_link_hash_copy_indirect (info, dir, ind); ++ ++ if (ind->root.type != bfd_link_hash_indirect) ++ return; ++ ++ edir = (struct elf_avr32_link_hash_entry *)dir; ++ eind = (struct elf_avr32_link_hash_entry *)ind; ++ ++ edir->possibly_dynamic_relocs += eind->possibly_dynamic_relocs; ++ edir->no_fn_stub = edir->no_fn_stub || eind->no_fn_stub; ++} ++ ++static struct bfd_link_hash_table * ++avr32_elf_link_hash_table_create(bfd *abfd) ++{ ++ struct elf_avr32_link_hash_table *ret; ++ ++ ret = bfd_zmalloc(sizeof(*ret)); ++ if (ret == NULL) ++ return NULL; ++ ++ if (! _bfd_elf_link_hash_table_init(&ret->root, abfd, ++ avr32_elf_link_hash_newfunc, ++ sizeof (struct elf_avr32_link_hash_entry))) ++ { ++ free(ret); ++ return NULL; ++ } ++ ++ /* Prevent the BFD core from creating bogus got_entry pointers */ ++ ret->root.init_got_refcount.glist = NULL; ++ ret->root.init_plt_refcount.glist = NULL; ++ ++ return &ret->root.root; ++} ++ ++ ++/* Initial analysis and creation of dynamic sections and symbols */ ++ ++static asection * ++create_dynamic_section(bfd *dynobj, const char *name, flagword flags, ++ unsigned int align_power); ++static struct elf_link_hash_entry * ++create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info, ++ const char *name, asection *sec, ++ bfd_vma offset); ++static bfd_boolean ++avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info); ++static bfd_boolean ++avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info); ++static bfd_boolean ++avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec, ++ const Elf_Internal_Rela *relocs); ++static bfd_boolean ++avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info, ++ struct elf_link_hash_entry *h); ++ ++static asection * ++create_dynamic_section(bfd *dynobj, const char *name, flagword flags, ++ unsigned int align_power) ++{ ++ asection *sec; ++ ++ sec = bfd_make_section(dynobj, name); ++ if (!sec ++ || !bfd_set_section_flags(dynobj, sec, flags) ++ || !bfd_set_section_alignment(dynobj, sec, align_power)) ++ return NULL; ++ ++ return sec; ++} ++ ++static struct elf_link_hash_entry * ++create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info, ++ const char *name, asection *sec, ++ bfd_vma offset) ++{ ++ struct bfd_link_hash_entry *bh = NULL; ++ struct elf_link_hash_entry *h; ++ const struct elf_backend_data *bed = get_elf_backend_data (dynobj); ++ ++ if (!(_bfd_generic_link_add_one_symbol ++ (info, dynobj, name, BSF_GLOBAL, sec, offset, NULL, FALSE, ++ bed->collect, &bh))) ++ return NULL; ++ ++ h = (struct elf_link_hash_entry *)bh; ++ h->def_regular = 1; ++ h->type = STT_OBJECT; ++ h->other = STV_HIDDEN; ++ ++ return h; ++} ++ ++static bfd_boolean ++avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ flagword flags; ++ const struct elf_backend_data *bed = get_elf_backend_data (dynobj); ++ ++ htab = avr32_elf_hash_table(info); ++ flags = bed->dynamic_sec_flags; ++ ++ if (htab->sgot) ++ return TRUE; ++ ++ htab->sgot = create_dynamic_section(dynobj, ".got", flags, 2); ++ if (!htab->srelgot) ++ htab->srelgot = create_dynamic_section(dynobj, ".rela.got", ++ flags | SEC_READONLY, 2); ++ ++ if (!htab->sgot || !htab->srelgot) ++ return FALSE; ++ ++ htab->root.hgot = create_dynamic_symbol(dynobj, info, "_GLOBAL_OFFSET_TABLE_", ++ htab->sgot, 0); ++ if (!htab->root.hgot) ++ return FALSE; ++ ++ /* Make room for the GOT header */ ++ htab->sgot->size += bed->got_header_size; ++ ++ return TRUE; ++} ++ ++/* (1) Create all dynamic (i.e. linker generated) sections that we may ++ need during the link */ ++ ++static bfd_boolean ++avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ flagword flags; ++ const struct elf_backend_data *bed = get_elf_backend_data (dynobj); ++ ++ pr_debug("(1) create dynamic sections\n"); ++ ++ htab = avr32_elf_hash_table(info); ++ flags = bed->dynamic_sec_flags; ++ ++ if (!avr32_elf_create_got_section (dynobj, info)) ++ return FALSE; ++ ++ if (!htab->sstub) ++ htab->sstub = create_dynamic_section(dynobj, ".stub", ++ flags | SEC_READONLY | SEC_CODE, 2); ++ ++ if (!htab->sstub) ++ return FALSE; ++ ++ return TRUE; ++} ++ ++/* (2) Go through all the relocs and count any potential GOT- or ++ PLT-references to each symbol */ ++ ++static bfd_boolean ++avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec, ++ const Elf_Internal_Rela *relocs) ++{ ++ Elf_Internal_Shdr *symtab_hdr; ++ struct elf_avr32_link_hash_table *htab; ++ struct elf_link_hash_entry **sym_hashes; ++ const Elf_Internal_Rela *rel, *rel_end; ++ struct got_entry **local_got_ents; ++ struct got_entry *got; ++ const struct elf_backend_data *bed = get_elf_backend_data (abfd); ++ asection *sgot; ++ bfd *dynobj; ++ ++ pr_debug("(2) check relocs for %s:<%s> (size 0x%lx)\n", ++ abfd->filename, sec->name, sec->size); ++ ++ if (info->relocatable) ++ return TRUE; ++ ++ dynobj = elf_hash_table(info)->dynobj; ++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr; ++ sym_hashes = elf_sym_hashes(abfd); ++ htab = avr32_elf_hash_table(info); ++ local_got_ents = elf_local_got_ents(abfd); ++ sgot = htab->sgot; ++ ++ rel_end = relocs + sec->reloc_count; ++ for (rel = relocs; rel < rel_end; rel++) ++ { ++ unsigned long r_symndx, r_type; ++ struct elf_avr32_link_hash_entry *h; ++ ++ r_symndx = ELF32_R_SYM(rel->r_info); ++ r_type = ELF32_R_TYPE(rel->r_info); ++ ++ /* Local symbols use local_got_ents, while others store the same ++ information in the hash entry */ ++ if (r_symndx < symtab_hdr->sh_info) ++ { ++ pr_debug(" (2a) processing local symbol %lu\n", r_symndx); ++ h = NULL; ++ } ++ else ++ { ++ h = (struct elf_avr32_link_hash_entry *) ++ sym_hashes[r_symndx - symtab_hdr->sh_info]; ++ while (h->root.type == bfd_link_hash_indirect ++ || h->root.type == bfd_link_hash_warning) ++ h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link; ++ pr_debug(" (2a) processing symbol %s\n", h->root.root.root.string); ++ } ++ ++ /* Some relocs require special sections to be created. */ ++ switch (r_type) ++ { ++ case R_AVR32_GOT32: ++ case R_AVR32_GOT16: ++ case R_AVR32_GOT8: ++ case R_AVR32_GOT21S: ++ case R_AVR32_GOT18SW: ++ case R_AVR32_GOT16S: ++ case R_AVR32_GOT7UW: ++ case R_AVR32_LDA_GOT: ++ case R_AVR32_GOTCALL: ++ if (rel->r_addend) ++ { ++ if (info->callbacks->reloc_dangerous ++ (info, _("Non-zero addend on GOT-relative relocation"), ++ abfd, sec, rel->r_offset) == FALSE) ++ return FALSE; ++ } ++ /* fall through */ ++ case R_AVR32_GOTPC: ++ if (dynobj == NULL) ++ elf_hash_table(info)->dynobj = dynobj = abfd; ++ if (sgot == NULL && !avr32_elf_create_got_section(dynobj, info)) ++ return FALSE; ++ break; ++ case R_AVR32_32: ++ /* We may need to create .rela.dyn later on. */ ++ if (dynobj == NULL ++ && (info->shared || h != NULL) ++ && (sec->flags & SEC_ALLOC)) ++ elf_hash_table(info)->dynobj = dynobj = abfd; ++ break; ++ } ++ ++ if (h != NULL && r_type != R_AVR32_GOT18SW) ++ h->no_fn_stub = TRUE; ++ ++ switch (r_type) ++ { ++ case R_AVR32_GOT32: ++ case R_AVR32_GOT16: ++ case R_AVR32_GOT8: ++ case R_AVR32_GOT21S: ++ case R_AVR32_GOT18SW: ++ case R_AVR32_GOT16S: ++ case R_AVR32_GOT7UW: ++ case R_AVR32_LDA_GOT: ++ case R_AVR32_GOTCALL: ++ if (h != NULL) ++ { ++ got = h->root.got.glist; ++ if (!got) ++ { ++ got = bfd_zalloc(abfd, sizeof(struct got_entry)); ++ if (!got) ++ return FALSE; ++ h->root.got.glist = got; ++ } ++ } ++ else ++ { ++ if (!local_got_ents) ++ { ++ bfd_size_type size; ++ bfd_size_type i; ++ struct got_entry *tmp_entry; ++ ++ size = symtab_hdr->sh_info; ++ size *= sizeof(struct got_entry *) + sizeof(struct got_entry); ++ local_got_ents = bfd_zalloc(abfd, size); ++ if (!local_got_ents) ++ return FALSE; ++ ++ elf_local_got_ents(abfd) = local_got_ents; ++ ++ tmp_entry = (struct got_entry *)(local_got_ents ++ + symtab_hdr->sh_info); ++ for (i = 0; i < symtab_hdr->sh_info; i++) ++ local_got_ents[i] = &tmp_entry[i]; ++ } ++ ++ got = local_got_ents[r_symndx]; ++ } ++ ++ got->refcount++; ++ if (got->refcount > htab->nr_got_holes) ++ htab->nr_got_holes = got->refcount; ++ break; ++ ++ case R_AVR32_32: ++ if ((info->shared || h != NULL) ++ && (sec->flags & SEC_ALLOC)) ++ { ++ if (htab->srelgot == NULL) ++ { ++ htab->srelgot = create_dynamic_section(dynobj, ".rela.got", ++ bed->dynamic_sec_flags ++ | SEC_READONLY, 2); ++ if (htab->srelgot == NULL) ++ return FALSE; ++ } ++ ++ if (sec->flags & SEC_READONLY ++ && !h->readonly_reloc_sec) ++ { ++ h->readonly_reloc_sec = sec; ++ h->readonly_reloc_offset = rel->r_offset; ++ } ++ ++ if (h != NULL) ++ { ++ pr_debug("Non-GOT reference to symbol %s\n", ++ h->root.root.root.string); ++ h->possibly_dynamic_relocs++; ++ } ++ else ++ { ++ pr_debug("Non-GOT reference to local symbol %lu\n", ++ r_symndx); ++ htab->local_dynamic_relocs++; ++ } ++ } ++ ++ break; ++ ++ /* TODO: GNU_VTINHERIT and GNU_VTENTRY */ ++ } ++ } ++ ++ return TRUE; ++} ++ ++/* (3) Adjust a symbol defined by a dynamic object and referenced by a ++ regular object. The current definition is in some section of the ++ dynamic object, but we're not including those sections. We have to ++ change the definition to something the rest of the link can ++ understand. */ ++ ++static bfd_boolean ++avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info, ++ struct elf_link_hash_entry *h) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ struct elf_avr32_link_hash_entry *havr; ++ bfd *dynobj; ++ ++ pr_debug("(3) adjust dynamic symbol %s\n", h->root.root.string); ++ ++ htab = avr32_elf_hash_table(info); ++ havr = (struct elf_avr32_link_hash_entry *)h; ++ dynobj = elf_hash_table(info)->dynobj; ++ ++ /* Make sure we know what is going on here. */ ++ BFD_ASSERT (dynobj != NULL ++ && (h->u.weakdef != NULL ++ || (h->def_dynamic ++ && h->ref_regular ++ && !h->def_regular))); ++ ++ /* We don't want dynamic relocations in read-only sections. */ ++ if (havr->readonly_reloc_sec) ++ { ++ if (info->callbacks->reloc_dangerous ++ (info, _("dynamic relocation in read-only section"), ++ havr->readonly_reloc_sec->owner, havr->readonly_reloc_sec, ++ havr->readonly_reloc_offset) == FALSE) ++ return FALSE; ++ } ++ ++ /* If this is a function, create a stub if possible and set the ++ symbol to the stub location. */ ++ if (0 && !havr->no_fn_stub) ++ { ++ if (!h->def_regular) ++ { ++ asection *s = htab->sstub; ++ ++ BFD_ASSERT(s != NULL); ++ ++ h->root.u.def.section = s; ++ h->root.u.def.value = s->size; ++ h->plt.offset = s->size; ++ s->size += AVR32_FUNCTION_STUB_SIZE; ++ ++ return TRUE; ++ } ++ } ++ else if (h->type == STT_FUNC) ++ { ++ /* This will set the entry for this symbol in the GOT to 0, and ++ the dynamic linker will take care of this. */ ++ h->root.u.def.value = 0; ++ return TRUE; ++ } ++ ++ /* If this is a weak symbol, and there is a real definition, the ++ processor independent code will have arranged for us to see the ++ real definition first, and we can just use the same value. */ ++ if (h->u.weakdef != NULL) ++ { ++ BFD_ASSERT(h->u.weakdef->root.type == bfd_link_hash_defined ++ || h->u.weakdef->root.type == bfd_link_hash_defweak); ++ h->root.u.def.section = h->u.weakdef->root.u.def.section; ++ h->root.u.def.value = h->u.weakdef->root.u.def.value; ++ return TRUE; ++ } ++ ++ /* This is a reference to a symbol defined by a dynamic object which ++ is not a function. */ ++ ++ return TRUE; ++} ++ ++ ++/* Garbage-collection of unused sections */ ++ ++static asection * ++avr32_elf_gc_mark_hook(asection *sec, ++ struct bfd_link_info *info ATTRIBUTE_UNUSED, ++ Elf_Internal_Rela *rel, ++ struct elf_link_hash_entry *h, ++ Elf_Internal_Sym *sym) ++{ ++ if (h) ++ { ++ switch (ELF32_R_TYPE(rel->r_info)) ++ { ++ /* TODO: VTINHERIT/VTENTRY */ ++ default: ++ switch (h->root.type) ++ { ++ case bfd_link_hash_defined: ++ case bfd_link_hash_defweak: ++ return h->root.u.def.section; ++ ++ case bfd_link_hash_common: ++ return h->root.u.c.p->section; ++ ++ default: ++ break; ++ } ++ } ++ } ++ else ++ return bfd_section_from_elf_index(sec->owner, sym->st_shndx); ++ ++ return NULL; ++} ++ ++/* Update the GOT entry reference counts for the section being removed. */ ++static bfd_boolean ++avr32_elf_gc_sweep_hook(bfd *abfd, ++ struct bfd_link_info *info ATTRIBUTE_UNUSED, ++ asection *sec, ++ const Elf_Internal_Rela *relocs) ++{ ++ Elf_Internal_Shdr *symtab_hdr; ++ struct elf_avr32_link_hash_entry **sym_hashes; ++ struct got_entry **local_got_ents; ++ const Elf_Internal_Rela *rel, *relend; ++ ++ if (!(sec->flags & SEC_ALLOC)) ++ return TRUE; ++ ++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr; ++ sym_hashes = (struct elf_avr32_link_hash_entry **)elf_sym_hashes(abfd); ++ local_got_ents = elf_local_got_ents(abfd); ++ ++ relend = relocs + sec->reloc_count; ++ for (rel = relocs; rel < relend; rel++) ++ { ++ unsigned long r_symndx; ++ unsigned int r_type; ++ struct elf_avr32_link_hash_entry *h = NULL; ++ ++ r_symndx = ELF32_R_SYM(rel->r_info); ++ if (r_symndx >= symtab_hdr->sh_info) ++ { ++ h = sym_hashes[r_symndx - symtab_hdr->sh_info]; ++ while (h->root.root.type == bfd_link_hash_indirect ++ || h->root.root.type == bfd_link_hash_warning) ++ h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link; ++ } ++ ++ r_type = ELF32_R_TYPE(rel->r_info); ++ ++ switch (r_type) ++ { ++ case R_AVR32_GOT32: ++ case R_AVR32_GOT16: ++ case R_AVR32_GOT8: ++ case R_AVR32_GOT21S: ++ case R_AVR32_GOT18SW: ++ case R_AVR32_GOT16S: ++ case R_AVR32_GOT7UW: ++ case R_AVR32_LDA_GOT: ++ case R_AVR32_GOTCALL: ++ if (h) ++ h->root.got.glist->refcount--; ++ else ++ local_got_ents[r_symndx]->refcount--; ++ break; ++ ++ case R_AVR32_32: ++ if (info->shared || h) ++ { ++ if (h) ++ h->possibly_dynamic_relocs--; ++ else ++ avr32_elf_hash_table(info)->local_dynamic_relocs--; ++ } ++ ++ default: ++ break; ++ } ++ } ++ ++ return TRUE; ++} ++ ++/* Sizing and refcounting of dynamic sections */ ++ ++static void ++insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got); ++static void ++unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got); ++static void ++ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got); ++static bfd_boolean ++assign_got_offsets(struct elf_avr32_link_hash_table *htab); ++static bfd_boolean ++allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info); ++static bfd_boolean ++avr32_elf_size_dynamic_sections (bfd *output_bfd, ++ struct bfd_link_info *info); ++ ++static void ++insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got) ++{ ++ /* TODO: Support got_refcount > htab->nr_got_holes by using a ++ different sort algorithm for those. */ ++ BFD_ASSERT(got->refcount <= htab->nr_got_holes); ++ ++ got->pprev = &htab->got_hole[got->refcount]; ++ got->next = htab->got_hole[got->refcount]; ++ if (got->next) ++ got->next->pprev = &got->next; ++ ++ htab->got_hole[got->refcount] = got; ++} ++ ++/* Decrement the refcount of a GOT entry and update its position in ++ the pigeonhole array. */ ++static void ++unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got) ++{ ++ BFD_ASSERT(got->refcount <= htab->nr_got_holes); ++ BFD_ASSERT(got->refcount > 0); ++ ++ if (got->next) ++ got->next->pprev = got->pprev; ++ ++ *(got->pprev) = got->next; ++ got->refcount--; ++ insert_got_entry(htab, got); ++} ++ ++static void ++ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got) ++{ ++ if (got->next) ++ got->next->pprev = got->pprev; ++ ++ *(got->pprev) = got->next; ++ got->refcount++; ++ insert_got_entry(htab, got); ++ ++ BFD_ASSERT(got->refcount > 0); ++ BFD_ASSERT(got->refcount <= htab->nr_got_holes); ++} ++ ++/* Assign offsets to all GOT entries we intend to keep. The entries ++ that are referenced most often are placed at low offsets so that we ++ can use compact instructions as much as possible. ++ ++ Returns TRUE if any offsets or the total size of the GOT changed. */ ++ ++static bfd_boolean ++assign_got_offsets(struct elf_avr32_link_hash_table *htab) ++{ ++ struct got_entry *got; ++ bfd_size_type got_size = 0; ++ bfd_boolean changed = FALSE; ++ bfd_signed_vma offset; ++ int i; ++ ++ /* The GOT header provides the address of the DYNAMIC segment, so ++ we need that even if the GOT is otherwise empty. */ ++ if (htab->root.dynamic_sections_created) ++ got_size = AVR32_GOT_HEADER_SIZE; ++ ++ for (i = htab->nr_got_holes; i > 0; i--) ++ { ++ got = htab->got_hole[i]; ++ while (got) ++ { ++ if (got->refcount > 0) ++ { ++ offset = got_size; ++ if (got->offset != offset) ++ { ++ RDBG("GOT offset changed: %ld -> %ld\n", ++ got->offset, offset); ++ changed = TRUE; ++ } ++ got->offset = offset; ++ got_size += 4; ++ } ++ got = got->next; ++ } ++ } ++ ++ if (htab->sgot->size != got_size) ++ { ++ RDBG("GOT size changed: %lu -> %lu\n", htab->sgot->size, ++ got_size); ++ changed = TRUE; ++ } ++ htab->sgot->size = got_size; ++ ++ RDBG("assign_got_offsets: total size %lu (%s)\n", ++ got_size, changed ? "changed" : "no change"); ++ ++ return changed; ++} ++ ++static bfd_boolean ++allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info) ++{ ++ struct bfd_link_info *info = _info; ++ struct elf_avr32_link_hash_table *htab; ++ struct elf_avr32_link_hash_entry *havr; ++ struct got_entry *got; ++ ++ pr_debug(" (4b) allocate_dynrelocs: %s\n", h->root.root.string); ++ ++ if (h->root.type == bfd_link_hash_indirect) ++ return TRUE; ++ ++ if (h->root.type == bfd_link_hash_warning) ++ /* When warning symbols are created, they **replace** the "real" ++ entry in the hash table, thus we never get to see the real ++ symbol in a hash traversal. So look at it now. */ ++ h = (struct elf_link_hash_entry *) h->root.u.i.link; ++ ++ htab = avr32_elf_hash_table(info); ++ havr = (struct elf_avr32_link_hash_entry *)h; ++ ++ got = h->got.glist; ++ ++ /* If got is NULL, the symbol is never referenced through the GOT */ ++ if (got && got->refcount > 0) ++ { ++ insert_got_entry(htab, got); ++ ++ /* Shared libraries need relocs for all GOT entries unless the ++ symbol is forced local or -Bsymbolic is used. Others need ++ relocs for everything that is not guaranteed to be defined in ++ a regular object. */ ++ if ((info->shared ++ && !info->symbolic ++ && h->dynindx != -1) ++ || (htab->root.dynamic_sections_created ++ && h->def_dynamic ++ && !h->def_regular)) ++ htab->srelgot->size += sizeof(Elf32_External_Rela); ++ } ++ ++ if (havr->possibly_dynamic_relocs ++ && (info->shared ++ || (elf_hash_table(info)->dynamic_sections_created ++ && h->def_dynamic ++ && !h->def_regular))) ++ { ++ pr_debug("Allocating %d dynamic reloc against symbol %s...\n", ++ havr->possibly_dynamic_relocs, h->root.root.string); ++ htab->srelgot->size += (havr->possibly_dynamic_relocs ++ * sizeof(Elf32_External_Rela)); ++ } ++ ++ return TRUE; ++} ++ ++/* (4) Calculate the sizes of the linker-generated sections and ++ allocate memory for them. */ ++ ++static bfd_boolean ++avr32_elf_size_dynamic_sections (bfd *output_bfd, ++ struct bfd_link_info *info) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ bfd *dynobj; ++ asection *s; ++ bfd *ibfd; ++ bfd_boolean relocs; ++ ++ pr_debug("(4) size dynamic sections\n"); ++ ++ htab = avr32_elf_hash_table(info); ++ dynobj = htab->root.dynobj; ++ BFD_ASSERT(dynobj != NULL); ++ ++ if (htab->root.dynamic_sections_created) ++ { ++ /* Initialize the contents of the .interp section to the name of ++ the dynamic loader */ ++ if (info->executable) ++ { ++ s = bfd_get_section_by_name(dynobj, ".interp"); ++ BFD_ASSERT(s != NULL); ++ s->size = sizeof(ELF_DYNAMIC_INTERPRETER); ++ s->contents = (unsigned char *)ELF_DYNAMIC_INTERPRETER; ++ } ++ } ++ ++ if (htab->nr_got_holes > 0) ++ { ++ /* Allocate holes for the pigeonhole sort algorithm */ ++ pr_debug("Highest GOT refcount: %d\n", htab->nr_got_holes); ++ if (htab->nr_got_holes >= MAX_NR_GOT_HOLES) ++ { ++ /* TODO: Do something clever (different sorting algorithm) */ ++ _bfd_error_handler(_("Highest refcount %d too high (max %d)\n"), ++ htab->nr_got_holes, MAX_NR_GOT_HOLES); ++ bfd_set_error(bfd_error_no_memory); ++ return FALSE; ++ } ++ htab->got_hole = bfd_zalloc(output_bfd, ++ sizeof(struct got_entry *) ++ * (htab->nr_got_holes + 1)); ++ if (!htab->got_hole) ++ return FALSE; ++ ++ /* Set up .got offsets for local syms. */ ++ for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) ++ { ++ struct got_entry **local_got; ++ struct got_entry **end_local_got; ++ Elf_Internal_Shdr *symtab_hdr; ++ bfd_size_type locsymcount; ++ ++ pr_debug(" (4a) processing file %s...\n", ibfd->filename); ++ ++ BFD_ASSERT(bfd_get_flavour(ibfd) == bfd_target_elf_flavour); ++ ++ local_got = elf_local_got_ents(ibfd); ++ if (!local_got) ++ continue; ++ ++ symtab_hdr = &elf_tdata(ibfd)->symtab_hdr; ++ locsymcount = symtab_hdr->sh_info; ++ end_local_got = local_got + locsymcount; ++ ++ for (; local_got < end_local_got; ++local_got) ++ insert_got_entry(htab, *local_got); ++ } ++ } ++ ++ /* Allocate global sym .got entries and space for global sym ++ dynamic relocs */ ++ elf_link_hash_traverse(&htab->root, allocate_dynrelocs, info); ++ ++ /* Now that we have sorted the GOT entries, we are ready to ++ assign offsets and determine the initial size of the GOT. */ ++ if (htab->sgot) ++ assign_got_offsets(htab); ++ ++ /* Allocate space for local sym dynamic relocs */ ++ BFD_ASSERT(htab->local_dynamic_relocs == 0 || info->shared); ++ if (htab->local_dynamic_relocs) ++ htab->srelgot->size += (htab->local_dynamic_relocs ++ * sizeof(Elf32_External_Rela)); ++ ++ /* We now have determined the sizes of the various dynamic ++ sections. Allocate memory for them. */ ++ relocs = FALSE; ++ for (s = dynobj->sections; s; s = s->next) ++ { ++ if ((s->flags & SEC_LINKER_CREATED) == 0) ++ continue; ++ ++ if (s == htab->sgot ++ || s == htab->sstub) ++ { ++ /* Strip this section if we don't need it */ ++ } ++ else if (strncmp (bfd_get_section_name(dynobj, s), ".rela", 5) == 0) ++ { ++ if (s->size != 0) ++ relocs = TRUE; ++ ++ s->reloc_count = 0; ++ } ++ else ++ { ++ /* It's not one of our sections */ ++ continue; ++ } ++ ++ if (s->size == 0) ++ { ++ /* Strip unneeded sections */ ++ pr_debug("Stripping section %s from output...\n", s->name); ++ /* deleted function in 2.17 ++ _bfd_strip_section_from_output(info, s); ++ */ ++ continue; ++ } ++ ++ s->contents = bfd_zalloc(dynobj, s->size); ++ if (s->contents == NULL) ++ return FALSE; ++ } ++ ++ if (htab->root.dynamic_sections_created) ++ { ++ /* Add some entries to the .dynamic section. We fill in the ++ values later, in sh_elf_finish_dynamic_sections, but we ++ must add the entries now so that we get the correct size for ++ the .dynamic section. The DT_DEBUG entry is filled in by the ++ dynamic linker and used by the debugger. */ ++#define add_dynamic_entry(TAG, VAL) _bfd_elf_add_dynamic_entry(info, TAG, VAL) ++ ++ if (!add_dynamic_entry(DT_PLTGOT, 0)) ++ return FALSE; ++ if (!add_dynamic_entry(DT_AVR32_GOTSZ, 0)) ++ return FALSE; ++ ++ if (info->executable) ++ { ++ if (!add_dynamic_entry(DT_DEBUG, 0)) ++ return FALSE; ++ } ++ if (relocs) ++ { ++ if (!add_dynamic_entry(DT_RELA, 0) ++ || !add_dynamic_entry(DT_RELASZ, 0) ++ || !add_dynamic_entry(DT_RELAENT, ++ sizeof(Elf32_External_Rela))) ++ return FALSE; ++ } ++ } ++#undef add_dynamic_entry ++ ++ return TRUE; ++} ++ ++ ++/* Access to internal relocations, section contents and symbols. ++ (stolen from the xtensa port) */ ++ ++static Elf_Internal_Rela * ++retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory); ++static void ++pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs); ++static void ++release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs); ++static bfd_byte * ++retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory); ++/* ++static void ++pin_contents (asection *sec, bfd_byte *contents); ++*/ ++static void ++release_contents (asection *sec, bfd_byte *contents); ++static Elf_Internal_Sym * ++retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory); ++/* ++static void ++pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf); ++*/ ++static void ++release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf); ++ ++/* During relaxation, we need to modify relocations, section contents, ++ and symbol definitions, and we need to keep the original values from ++ being reloaded from the input files, i.e., we need to "pin" the ++ modified values in memory. We also want to continue to observe the ++ setting of the "keep-memory" flag. The following functions wrap the ++ standard BFD functions to take care of this for us. */ ++ ++static Elf_Internal_Rela * ++retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory) ++{ ++ /* _bfd_elf_link_read_relocs knows about caching, so no need for us ++ to be clever here. */ ++ return _bfd_elf_link_read_relocs(abfd, sec, NULL, NULL, keep_memory); ++} ++ ++static void ++pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs) ++{ ++ elf_section_data (sec)->relocs = internal_relocs; ++} ++ ++static void ++release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs) ++{ ++ if (internal_relocs ++ && elf_section_data (sec)->relocs != internal_relocs) ++ free (internal_relocs); ++} ++ ++static bfd_byte * ++retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory) ++{ ++ bfd_byte *contents; ++ bfd_size_type sec_size; ++ ++ sec_size = bfd_get_section_limit (abfd, sec); ++ contents = elf_section_data (sec)->this_hdr.contents; ++ ++ if (contents == NULL && sec_size != 0) ++ { ++ if (!bfd_malloc_and_get_section (abfd, sec, &contents)) ++ { ++ if (contents) ++ free (contents); ++ return NULL; ++ } ++ if (keep_memory) ++ elf_section_data (sec)->this_hdr.contents = contents; ++ } ++ return contents; ++} ++ ++/* ++static void ++pin_contents (asection *sec, bfd_byte *contents) ++{ ++ elf_section_data (sec)->this_hdr.contents = contents; ++} ++*/ ++static void ++release_contents (asection *sec, bfd_byte *contents) ++{ ++ if (contents && elf_section_data (sec)->this_hdr.contents != contents) ++ free (contents); ++} ++ ++static Elf_Internal_Sym * ++retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory) ++{ ++ Elf_Internal_Shdr *symtab_hdr; ++ Elf_Internal_Sym *isymbuf; ++ size_t locsymcount; ++ ++ symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; ++ locsymcount = symtab_hdr->sh_info; ++ ++ isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents; ++ if (isymbuf == NULL && locsymcount != 0) ++ { ++ isymbuf = bfd_elf_get_elf_syms (input_bfd, symtab_hdr, locsymcount, 0, ++ NULL, NULL, NULL); ++ if (isymbuf && keep_memory) ++ symtab_hdr->contents = (unsigned char *) isymbuf; ++ } ++ ++ return isymbuf; ++} ++ ++/* ++static void ++pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf) ++{ ++ elf_tdata (input_bfd)->symtab_hdr.contents = (unsigned char *)isymbuf; ++} ++ ++*/ ++static void ++release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf) ++{ ++ if (isymbuf && (elf_tdata (input_bfd)->symtab_hdr.contents ++ != (unsigned char *)isymbuf)) ++ free (isymbuf); ++} ++ ++ /* Data structures used during relaxation. */ ++ ++enum relax_state_id { ++ RS_ERROR = -1, ++ RS_NONE = 0, ++ RS_ALIGN, ++ RS_CPENT, ++ RS_PIC_CALL, ++ RS_PIC_MCALL, ++ RS_PIC_RCALL2, ++ RS_PIC_RCALL1, ++ RS_PIC_LDA, ++ RS_PIC_LDW4, ++ RS_PIC_LDW3, ++ RS_PIC_SUB5, ++ RS_NOPIC_MCALL, ++ RS_NOPIC_RCALL2, ++ RS_NOPIC_RCALL1, ++ RS_NOPIC_LDW4, ++ RS_NOPIC_LDDPC, ++ RS_NOPIC_SUB5, ++#ifdef DHRYSTONE_FIX ++ RS_NOPIC_MOV2, ++ RS_NOPIC_MOV1, ++#endif ++ RS_RCALL2, ++ RS_RCALL1, ++ RS_BRC2, ++ RS_BRC1, ++ RS_BRAL, ++ RS_RJMP, ++ RS_MAX, ++}; ++ ++enum reference_type { ++ REF_ABSOLUTE, ++ REF_PCREL, ++ REF_CPOOL, ++ REF_GOT, ++}; ++ ++struct relax_state ++{ ++ const char *name; ++ enum relax_state_id id; ++ enum relax_state_id direct; ++ enum relax_state_id next; ++ enum relax_state_id prev; ++ ++ enum reference_type reftype; ++ ++ unsigned int r_type; ++ ++ bfd_vma opcode; ++ bfd_vma opcode_mask; ++ ++ bfd_signed_vma range_min; ++ bfd_signed_vma range_max; ++ ++ bfd_size_type size; ++}; ++ ++/* ++ * This is for relocs that ++ * a) has an addend or is of type R_AVR32_DIFF32, and ++ * b) references a different section than it's in, and ++ * c) references a section that is relaxable ++ * ++ * as well as relocs that references the constant pool, in which case ++ * the add_frag member points to the frag containing the constant pool ++ * entry. ++ * ++ * Such relocs must be fixed up whenever we delete any code. Sections ++ * that don't have any relocs with all of the above properties don't ++ * have any additional reloc data, but sections that do will have ++ * additional data for all its relocs. ++ */ ++struct avr32_reloc_data ++{ ++ struct fragment *add_frag; ++ struct fragment *sub_frag; ++}; ++ ++/* ++ * A 'fragment' is a relaxable entity, that is, code may be added or ++ * deleted at the end of a fragment. When this happens, all subsequent ++ * fragments in the list will have their offsets updated. ++ */ ++struct fragment ++{ ++ enum relax_state_id state; ++ enum relax_state_id initial_state; ++ ++ Elf_Internal_Rela *rela; ++ bfd_size_type size; ++ bfd_vma offset; ++ int size_adjust; ++ int offset_adjust; ++ bfd_boolean has_grown; ++ ++ /* Only used by constant pool entries. When this drops to zero, the ++ frag is discarded (i.e. size_adjust is set to -4.) */ ++ int refcount; ++}; ++ ++struct avr32_relax_data ++{ ++ unsigned int frag_count; ++ struct fragment *frag; ++ struct avr32_reloc_data *reloc_data; ++ ++ /* TRUE if this section has one or more relaxable relocations */ ++ bfd_boolean is_relaxable; ++ unsigned int iteration; ++}; ++ ++struct avr32_section_data ++{ ++ struct bfd_elf_section_data elf; ++ struct avr32_relax_data relax_data; ++}; ++ ++ /* Relax state definitions */ ++ ++#define PIC_MOV2_OPCODE 0xe0600000 ++#define PIC_MOV2_MASK 0xe1e00000 ++#define PIC_MOV2_RANGE_MIN (-1048576 * 4) ++#define PIC_MOV2_RANGE_MAX (1048575 * 4) ++#define PIC_MCALL_OPCODE 0xf0160000 ++#define PIC_MCALL_MASK 0xffff0000 ++#define PIC_MCALL_RANGE_MIN (-131072) ++#define PIC_MCALL_RANGE_MAX (131068) ++#define RCALL2_OPCODE 0xe0a00000 ++#define RCALL2_MASK 0xe1ef0000 ++#define RCALL2_RANGE_MIN (-2097152) ++#define RCALL2_RANGE_MAX (2097150) ++#define RCALL1_OPCODE 0xc00c0000 ++#define RCALL1_MASK 0xf00c0000 ++#define RCALL1_RANGE_MIN (-1024) ++#define RCALL1_RANGE_MAX (1022) ++#define PIC_LDW4_OPCODE 0xecf00000 ++#define PIC_LDW4_MASK 0xfff00000 ++#define PIC_LDW4_RANGE_MIN (-32768) ++#define PIC_LDW4_RANGE_MAX (32767) ++#define PIC_LDW3_OPCODE 0x6c000000 ++#define PIC_LDW3_MASK 0xfe000000 ++#define PIC_LDW3_RANGE_MIN (0) ++#define PIC_LDW3_RANGE_MAX (124) ++#define SUB5_PC_OPCODE 0xfec00000 ++#define SUB5_PC_MASK 0xfff00000 ++#define SUB5_PC_RANGE_MIN (-32768) ++#define SUB5_PC_RANGE_MAX (32767) ++#define NOPIC_MCALL_OPCODE 0xf01f0000 ++#define NOPIC_MCALL_MASK 0xffff0000 ++#define NOPIC_MCALL_RANGE_MIN PIC_MCALL_RANGE_MIN ++#define NOPIC_MCALL_RANGE_MAX PIC_MCALL_RANGE_MAX ++#define NOPIC_LDW4_OPCODE 0xfef00000 ++#define NOPIC_LDW4_MASK 0xfff00000 ++#define NOPIC_LDW4_RANGE_MIN PIC_LDW4_RANGE_MIN ++#define NOPIC_LDW4_RANGE_MAX PIC_LDW4_RANGE_MAX ++#define LDDPC_OPCODE 0x48000000 ++#define LDDPC_MASK 0xf8000000 ++#define LDDPC_RANGE_MIN 0 ++#define LDDPC_RANGE_MAX 508 ++ ++#ifdef DHRYSTONE_FIX ++#define NOPIC_MOV2_OPCODE 0xe0600000 ++#define NOPIC_MOV2_MASK 0xe1e00000 ++#define NOPIC_MOV2_RANGE_MIN (-1048576) ++#define NOPIC_MOV2_RANGE_MAX (1048575) ++#define NOPIC_MOV1_OPCODE 0x30000000 ++#define NOPIC_MOV1_MASK 0xf0000000 ++#define NOPIC_MOV1_RANGE_MIN (-128) ++#define NOPIC_MOV1_RANGE_MAX (127) ++#endif ++ ++/* Only brc2 variants with cond[3] == 0 is considered, since the ++ others are not relaxable. bral is a special case and is handled ++ separately. */ ++#define BRC2_OPCODE 0xe0800000 ++#define BRC2_MASK 0xe1e80000 ++#define BRC2_RANGE_MIN (-2097152) ++#define BRC2_RANGE_MAX (2097150) ++#define BRC1_OPCODE 0xc0000000 ++#define BRC1_MASK 0xf0080000 ++#define BRC1_RANGE_MIN (-256) ++#define BRC1_RANGE_MAX (254) ++#define BRAL_OPCODE 0xe08f0000 ++#define BRAL_MASK 0xe1ef0000 ++#define BRAL_RANGE_MIN BRC2_RANGE_MIN ++#define BRAL_RANGE_MAX BRC2_RANGE_MAX ++#define RJMP_OPCODE 0xc0080000 ++#define RJMP_MASK 0xf00c0000 ++#define RJMP_RANGE_MIN (-1024) ++#define RJMP_RANGE_MAX (1022) ++ ++/* Define a relax state using the GOT */ ++#define RG(id, dir, next, prev, r_type, opc, size) \ ++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_GOT, \ ++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \ ++ opc##_RANGE_MIN, opc##_RANGE_MAX, size } ++/* Define a relax state using the Constant Pool */ ++#define RC(id, dir, next, prev, r_type, opc, size) \ ++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_CPOOL, \ ++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \ ++ opc##_RANGE_MIN, opc##_RANGE_MAX, size } ++ ++/* Define a relax state using pc-relative direct reference */ ++#define RP(id, dir, next, prev, r_type, opc, size) \ ++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_PCREL, \ ++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \ ++ opc##_RANGE_MIN, opc##_RANGE_MAX, size } ++ ++#ifdef DHRYSTONE_FIX ++/* Define a relax state using non-pc-relative direct reference */ ++#define RD(id, dir, next, prev, r_type, opc, size) \ ++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_ABSOLUTE, \ ++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \ ++ opc##_RANGE_MIN, opc##_RANGE_MAX, size } ++ ++#endif ++ ++/* Define a relax state that will be handled specially */ ++#define RS(id, r_type, size) \ ++ { "RS_"#id, RS_##id, RS_NONE, RS_NONE, RS_NONE, REF_ABSOLUTE, \ ++ R_AVR32_##r_type, 0, 0, 0, 0, size } ++ ++const struct relax_state relax_state[RS_MAX] = { ++ RS(NONE, NONE, 0), ++ RS(ALIGN, ALIGN, 0), ++ RS(CPENT, 32_CPENT, 4), ++ ++ RG(PIC_CALL, PIC_RCALL1, PIC_MCALL, NONE, GOTCALL, PIC_MOV2, 10), ++ RG(PIC_MCALL, PIC_RCALL1, NONE, PIC_CALL, GOT18SW, PIC_MCALL, 4), ++ RP(PIC_RCALL2, NONE, PIC_RCALL1, PIC_MCALL, 22H_PCREL, RCALL2, 4), ++ RP(PIC_RCALL1, NONE, NONE, PIC_RCALL2, 11H_PCREL, RCALL1, 2), ++ ++ RG(PIC_LDA, PIC_SUB5, PIC_LDW4, NONE, LDA_GOT, PIC_MOV2, 8), ++ RG(PIC_LDW4, PIC_SUB5, PIC_LDW3, PIC_LDA, GOT16S, PIC_LDW4, 4), ++ RG(PIC_LDW3, PIC_SUB5, NONE, PIC_LDW4, GOT7UW, PIC_LDW3, 2), ++ RP(PIC_SUB5, NONE, NONE, PIC_LDW3, 16N_PCREL, SUB5_PC, 4), ++ ++ RC(NOPIC_MCALL, NOPIC_RCALL1, NONE, NONE, CPCALL, NOPIC_MCALL, 4), ++ RP(NOPIC_RCALL2, NONE, NOPIC_RCALL1, NOPIC_MCALL, 22H_PCREL, RCALL2, 4), ++ RP(NOPIC_RCALL1, NONE, NONE, NOPIC_RCALL2, 11H_PCREL, RCALL1, 2), ++ ++#ifdef DHRYSTONE_FIX ++ RC(NOPIC_LDW4, NOPIC_MOV1, NOPIC_LDDPC, NONE, 16_CP, NOPIC_LDW4, 4), ++ RC(NOPIC_LDDPC, NOPIC_MOV1, NONE, NOPIC_LDW4, 9W_CP, LDDPC, 2), ++ RP(NOPIC_SUB5, NOPIC_MOV1, NONE, NOPIC_LDDPC, 16N_PCREL, SUB5_PC, 4), ++ RD(NOPIC_MOV2, NONE, NOPIC_MOV1, NOPIC_SUB5, 21S, NOPIC_MOV2, 4), ++ RD(NOPIC_MOV1, NONE, NONE, NOPIC_MOV2, 8S, NOPIC_MOV1, 2), ++#else ++ RC(NOPIC_LDW4, NOPIC_SUB5, NOPIC_LDDPC, NONE, 16_CP, NOPIC_LDW4, 4), ++ RC(NOPIC_LDDPC, NOPIC_SUB5, NONE, NOPIC_LDW4, 9W_CP, LDDPC, 2), ++ RP(NOPIC_SUB5, NONE, NONE, NOPIC_LDDPC, 16N_PCREL, SUB5_PC, 4), ++#endif ++ ++ RP(RCALL2, NONE, RCALL1, NONE, 22H_PCREL, RCALL2, 4), ++ RP(RCALL1, NONE, NONE, RCALL2, 11H_PCREL, RCALL1, 2), ++ RP(BRC2, NONE, BRC1, NONE, 22H_PCREL, BRC2, 4), ++ RP(BRC1, NONE, NONE, BRC2, 9H_PCREL, BRC1, 2), ++ RP(BRAL, NONE, RJMP, NONE, 22H_PCREL, BRAL, 4), ++ RP(RJMP, NONE, NONE, BRAL, 11H_PCREL, RJMP, 2), ++}; ++ ++static bfd_boolean ++avr32_elf_new_section_hook(bfd *abfd, asection *sec) ++{ ++ struct avr32_section_data *sdata; ++ ++ sdata = bfd_zalloc(abfd, sizeof(struct avr32_section_data)); ++ if (!sdata) ++ return FALSE; ++ ++ sec->used_by_bfd = sdata; ++ return _bfd_elf_new_section_hook(abfd, sec); ++} ++ ++static struct avr32_relax_data * ++avr32_relax_data(asection *sec) ++{ ++ struct avr32_section_data *sdata; ++ ++ BFD_ASSERT(sec->used_by_bfd); ++ ++ sdata = (struct avr32_section_data *)elf_section_data(sec); ++ return &sdata->relax_data; ++} ++ ++ /* Link-time relaxation */ ++ ++static bfd_boolean ++avr32_elf_relax_section(bfd *abfd, asection *sec, ++ struct bfd_link_info *info, bfd_boolean *again); ++ ++enum relax_pass_id { ++ RELAX_PASS_SIZE_FRAGS, ++ RELAX_PASS_MOVE_DATA, ++}; ++ ++/* Stolen from the xtensa port */ ++static int ++internal_reloc_compare (const void *ap, const void *bp) ++{ ++ const Elf_Internal_Rela *a = (const Elf_Internal_Rela *) ap; ++ const Elf_Internal_Rela *b = (const Elf_Internal_Rela *) bp; ++ ++ if (a->r_offset != b->r_offset) ++ return (a->r_offset - b->r_offset); ++ ++ /* We don't need to sort on these criteria for correctness, ++ but enforcing a more strict ordering prevents unstable qsort ++ from behaving differently with different implementations. ++ Without the code below we get correct but different results ++ on Solaris 2.7 and 2.8. We would like to always produce the ++ same results no matter the host. */ ++ ++ if (a->r_info != b->r_info) ++ return (a->r_info - b->r_info); ++ ++ return (a->r_addend - b->r_addend); ++} ++ ++static enum relax_state_id ++get_pcrel22_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info, ++ const Elf_Internal_Rela *rela) ++{ ++ bfd_byte *contents; ++ bfd_vma insn; ++ enum relax_state_id rs = RS_NONE; ++ ++ contents = retrieve_contents(abfd, sec, info->keep_memory); ++ if (!contents) ++ return RS_ERROR; ++ ++ insn = bfd_get_32(abfd, contents + rela->r_offset); ++ if ((insn & RCALL2_MASK) == RCALL2_OPCODE) ++ rs = RS_RCALL2; ++ else if ((insn & BRAL_MASK) == BRAL_OPCODE) ++ /* Optimizing bral -> rjmp gets us into all kinds of ++ trouble with jump tables. Better not do it. */ ++ rs = RS_NONE; ++ else if ((insn & BRC2_MASK) == BRC2_OPCODE) ++ rs = RS_BRC2; ++ ++ release_contents(sec, contents); ++ ++ return rs; ++} ++ ++static enum relax_state_id ++get_initial_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info, ++ const Elf_Internal_Rela *rela) ++{ ++ switch (ELF_R_TYPE(rela->r_info)) ++ { ++ case R_AVR32_GOTCALL: ++ return RS_PIC_CALL; ++ case R_AVR32_GOT18SW: ++ return RS_PIC_MCALL; ++ case R_AVR32_LDA_GOT: ++ return RS_PIC_LDA; ++ case R_AVR32_GOT16S: ++ return RS_PIC_LDW4; ++ case R_AVR32_CPCALL: ++ return RS_NOPIC_MCALL; ++ case R_AVR32_16_CP: ++ return RS_NOPIC_LDW4; ++ case R_AVR32_9W_CP: ++ return RS_NOPIC_LDDPC; ++ case R_AVR32_ALIGN: ++ return RS_ALIGN; ++ case R_AVR32_32_CPENT: ++ return RS_CPENT; ++ case R_AVR32_22H_PCREL: ++ return get_pcrel22_relax_state(abfd, sec, info, rela); ++ case R_AVR32_9H_PCREL: ++ return RS_BRC1; ++ default: ++ return RS_NONE; ++ } ++} ++ ++static bfd_boolean ++reloc_is_cpool_ref(const Elf_Internal_Rela *rela) ++{ ++ switch (ELF_R_TYPE(rela->r_info)) ++ { ++ case R_AVR32_CPCALL: ++ case R_AVR32_16_CP: ++ case R_AVR32_9W_CP: ++ return TRUE; ++ default: ++ return FALSE; ++ } ++} ++ ++static struct fragment * ++new_frag(bfd *abfd ATTRIBUTE_UNUSED, asection *sec, ++ struct avr32_relax_data *rd, enum relax_state_id state, ++ Elf_Internal_Rela *rela) ++{ ++ struct fragment *frag; ++ bfd_size_type r_size; ++ bfd_vma r_offset; ++ unsigned int i = rd->frag_count; ++ ++ BFD_ASSERT(state >= RS_NONE && state < RS_MAX); ++ ++ rd->frag_count++; ++ frag = bfd_realloc(rd->frag, sizeof(struct fragment) * rd->frag_count); ++ if (!frag) ++ return NULL; ++ rd->frag = frag; ++ ++ frag += i; ++ memset(frag, 0, sizeof(struct fragment)); ++ ++ if (state == RS_ALIGN) ++ r_size = (((rela->r_offset + (1 << rela->r_addend) - 1) ++ & ~((1 << rela->r_addend) - 1)) - rela->r_offset); ++ else ++ r_size = relax_state[state].size; ++ ++ if (rela) ++ r_offset = rela->r_offset; ++ else ++ r_offset = sec->size; ++ ++ if (i == 0) ++ { ++ frag->offset = 0; ++ frag->size = r_offset + r_size; ++ } ++ else ++ { ++ frag->offset = rd->frag[i - 1].offset + rd->frag[i - 1].size; ++ frag->size = r_offset + r_size - frag->offset; ++ } ++ ++ if (state != RS_CPENT) ++ /* Make sure we don't discard this frag */ ++ frag->refcount = 1; ++ ++ frag->initial_state = frag->state = state; ++ frag->rela = rela; ++ ++ return frag; ++} ++ ++static struct fragment * ++find_frag(asection *sec, bfd_vma offset) ++{ ++ struct fragment *first, *last; ++ struct avr32_relax_data *rd = avr32_relax_data(sec); ++ ++ if (rd->frag_count == 0) ++ return NULL; ++ ++ first = &rd->frag[0]; ++ last = &rd->frag[rd->frag_count - 1]; ++ ++ /* This may be a reloc referencing the end of a section. The last ++ frag will never have a reloc associated with it, so its size will ++ never change, thus the offset adjustment of the last frag will ++ always be the same as the offset adjustment of the end of the ++ section. */ ++ if (offset == sec->size) ++ { ++ BFD_ASSERT(last->offset + last->size == sec->size); ++ BFD_ASSERT(!last->rela); ++ return last; ++ } ++ ++ while (first <= last) ++ { ++ struct fragment *mid; ++ ++ mid = (last - first) / 2 + first; ++ if ((mid->offset + mid->size) <= offset) ++ first = mid + 1; ++ else if (mid->offset > offset) ++ last = mid - 1; ++ else ++ return mid; ++ } ++ ++ return NULL; ++} ++ ++/* Look through all relocs in a section and determine if any relocs ++ may be affected by relaxation in other sections. If so, allocate ++ an array of additional relocation data which links the affected ++ relocations to the frag(s) where the relaxation may occur. ++ ++ This function also links cpool references to cpool entries and ++ increments the refcount of the latter when this happens. */ ++ ++static bfd_boolean ++allocate_reloc_data(bfd *abfd, asection *sec, Elf_Internal_Rela *relocs, ++ struct bfd_link_info *info) ++{ ++ Elf_Internal_Shdr *symtab_hdr; ++ Elf_Internal_Sym *isymbuf = NULL; ++ struct avr32_relax_data *rd; ++ unsigned int i; ++ bfd_boolean ret = FALSE; ++ ++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr; ++ rd = avr32_relax_data(sec); ++ ++ RDBG("%s<%s>: allocate_reloc_data\n", abfd->filename, sec->name); ++ ++ for (i = 0; i < sec->reloc_count; i++) ++ { ++ Elf_Internal_Rela *rel = &relocs[i]; ++ asection *sym_sec; ++ unsigned long r_symndx; ++ bfd_vma sym_value; ++ ++ if (!rel->r_addend && ELF_R_TYPE(rel->r_info) != R_AVR32_DIFF32 ++ && !reloc_is_cpool_ref(rel)) ++ continue; ++ ++ r_symndx = ELF_R_SYM(rel->r_info); ++ ++ if (r_symndx < symtab_hdr->sh_info) ++ { ++ Elf_Internal_Sym *isym; ++ ++ if (!isymbuf) ++ isymbuf = retrieve_local_syms(abfd, info->keep_memory); ++ if (!isymbuf) ++ return FALSE; ++ ++ isym = &isymbuf[r_symndx]; ++ sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx); ++ sym_value = isym->st_value; ++ } ++ else ++ { ++ struct elf_link_hash_entry *h; ++ ++ h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info]; ++ ++ while (h->root.type == bfd_link_hash_indirect ++ || h->root.type == bfd_link_hash_warning) ++ h = (struct elf_link_hash_entry *)h->root.u.i.link; ++ ++ if (h->root.type != bfd_link_hash_defined ++ && h->root.type != bfd_link_hash_defweak) ++ continue; ++ ++ sym_sec = h->root.u.def.section; ++ sym_value = h->root.u.def.value; ++ } ++ ++ if (sym_sec && avr32_relax_data(sym_sec)->is_relaxable) ++ { ++ bfd_size_type size; ++ struct fragment *frag; ++ ++ if (!rd->reloc_data) ++ { ++ size = sizeof(struct avr32_reloc_data) * sec->reloc_count; ++ rd->reloc_data = bfd_zalloc(abfd, size); ++ if (!rd->reloc_data) ++ goto out; ++ } ++ ++ RDBG("[%3d] 0x%04lx: target: 0x%lx + 0x%lx", ++ i, rel->r_offset, sym_value, rel->r_addend); ++ ++ frag = find_frag(sym_sec, sym_value + rel->r_addend); ++ BFD_ASSERT(frag); ++ rd->reloc_data[i].add_frag = frag; ++ ++ RDBG(" -> %s<%s>:%04lx\n", sym_sec->owner->filename, sym_sec->name, ++ frag->rela ? frag->rela->r_offset : sym_sec->size); ++ ++ if (reloc_is_cpool_ref(rel)) ++ { ++ BFD_ASSERT(ELF_R_TYPE(frag->rela->r_info) == R_AVR32_32_CPENT); ++ frag->refcount++; ++ } ++ ++ if (ELF_R_TYPE(rel->r_info) == R_AVR32_DIFF32) ++ { ++ bfd_byte *contents; ++ bfd_signed_vma diff; ++ ++ contents = retrieve_contents(abfd, sec, info->keep_memory); ++ if (!contents) ++ goto out; ++ ++ diff = bfd_get_signed_32(abfd, contents + rel->r_offset); ++ frag = find_frag(sym_sec, sym_value + rel->r_addend + diff); ++ BFD_ASSERT(frag); ++ rd->reloc_data[i].sub_frag = frag; ++ ++ release_contents(sec, contents); ++ } ++ } ++ } ++ ++ ret = TRUE; ++ ++ out: ++ release_local_syms(abfd, isymbuf); ++ return ret; ++} ++ ++static bfd_boolean ++global_sym_set_frag(struct elf_avr32_link_hash_entry *havr, ++ struct bfd_link_info *info ATTRIBUTE_UNUSED) ++{ ++ struct fragment *frag; ++ asection *sec; ++ ++ if (havr->root.root.type != bfd_link_hash_defined ++ && havr->root.root.type != bfd_link_hash_defweak) ++ return TRUE; ++ ++ sec = havr->root.root.u.def.section; ++ if (bfd_is_const_section(sec) ++ || !avr32_relax_data(sec)->is_relaxable) ++ return TRUE; ++ ++ frag = find_frag(sec, havr->root.root.u.def.value); ++ if (!frag) ++ { ++ unsigned int i; ++ struct avr32_relax_data *rd = avr32_relax_data(sec); ++ ++ RDBG("In %s: No frag for %s <%s+%lu> (limit %lu)\n", ++ sec->owner->filename, havr->root.root.root.string, ++ sec->name, havr->root.root.u.def.value, sec->size); ++ for (i = 0; i < rd->frag_count; i++) ++ RDBG(" %8lu - %8lu\n", rd->frag[i].offset, ++ rd->frag[i].offset + rd->frag[i].size); ++ } ++ BFD_ASSERT(frag); ++ ++ havr->sym_frag = frag; ++ return TRUE; ++} ++ ++static bfd_boolean ++analyze_relocations(struct bfd_link_info *info) ++{ ++ bfd *abfd; ++ asection *sec; ++ ++ /* Divide all relaxable sections into fragments */ ++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next) ++ { ++ if (!(elf_elfheader(abfd)->e_flags & EF_AVR32_LINKRELAX)) ++ { ++ if (!(*info->callbacks->warning) ++ (info, _("input is not relaxable"), NULL, abfd, NULL, 0)) ++ return FALSE; ++ continue; ++ } ++ ++ for (sec = abfd->sections; sec; sec = sec->next) ++ { ++ struct avr32_relax_data *rd; ++ struct fragment *frag; ++ Elf_Internal_Rela *relocs; ++ unsigned int i; ++ bfd_boolean ret = TRUE; ++ ++ if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0) ++ continue; ++ ++ rd = avr32_relax_data(sec); ++ ++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory); ++ if (!relocs) ++ return FALSE; ++ ++ qsort(relocs, sec->reloc_count, sizeof(Elf_Internal_Rela), ++ internal_reloc_compare); ++ ++ for (i = 0; i < sec->reloc_count; i++) ++ { ++ enum relax_state_id state; ++ ++ ret = FALSE; ++ state = get_initial_relax_state(abfd, sec, info, &relocs[i]); ++ if (state == RS_ERROR) ++ break; ++ ++ if (state) ++ { ++ frag = new_frag(abfd, sec, rd, state, &relocs[i]); ++ if (!frag) ++ break; ++ ++ pin_internal_relocs(sec, relocs); ++ rd->is_relaxable = TRUE; ++ } ++ ++ ret = TRUE; ++ } ++ ++ release_internal_relocs(sec, relocs); ++ if (!ret) ++ return ret; ++ ++ if (rd->is_relaxable) ++ { ++ frag = new_frag(abfd, sec, rd, RS_NONE, NULL); ++ if (!frag) ++ return FALSE; ++ } ++ } ++ } ++ ++ /* Link each global symbol to the fragment where it's defined. */ ++ elf_link_hash_traverse(elf_hash_table(info), global_sym_set_frag, info); ++ ++ /* Do the same for local symbols. */ ++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next) ++ { ++ Elf_Internal_Sym *isymbuf, *isym; ++ struct fragment **local_sym_frag; ++ unsigned int i, sym_count; ++ ++ sym_count = elf_tdata(abfd)->symtab_hdr.sh_info; ++ if (sym_count == 0) ++ continue; ++ ++ local_sym_frag = bfd_zalloc(abfd, sym_count * sizeof(struct fragment *)); ++ if (!local_sym_frag) ++ return FALSE; ++ elf_tdata(abfd)->local_sym_frag = local_sym_frag; ++ ++ isymbuf = retrieve_local_syms(abfd, info->keep_memory); ++ if (!isymbuf) ++ return FALSE; ++ ++ for (i = 0; i < sym_count; i++) ++ { ++ struct avr32_relax_data *rd; ++ struct fragment *frag; ++ asection *sec; ++ ++ isym = &isymbuf[i]; ++ ++ sec = bfd_section_from_elf_index(abfd, isym->st_shndx); ++ if (!sec) ++ continue; ++ ++ rd = avr32_relax_data(sec); ++ if (!rd->is_relaxable) ++ continue; ++ ++ frag = find_frag(sec, isym->st_value); ++ BFD_ASSERT(frag); ++ ++ local_sym_frag[i] = frag; ++ } ++ ++ release_local_syms(abfd, isymbuf); ++ } ++ ++ /* And again for relocs with addends and constant pool references */ ++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next) ++ for (sec = abfd->sections; sec; sec = sec->next) ++ { ++ Elf_Internal_Rela *relocs; ++ bfd_boolean ret; ++ ++ if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0) ++ continue; ++ ++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory); ++ if (!relocs) ++ return FALSE; ++ ++ ret = allocate_reloc_data(abfd, sec, relocs, info); ++ ++ release_internal_relocs(sec, relocs); ++ if (ret == FALSE) ++ return ret; ++ } ++ ++ return TRUE; ++} ++ ++static bfd_boolean ++rs_is_good_enough(const struct relax_state *rs, struct fragment *frag, ++ bfd_vma symval, bfd_vma addr, struct got_entry *got, ++ struct avr32_reloc_data *ind_data, ++ bfd_signed_vma offset_adjust) ++{ ++ bfd_signed_vma target = 0; ++ ++ switch (rs->reftype) ++ { ++ case REF_ABSOLUTE: ++ target = symval; ++ break; ++ case REF_PCREL: ++ target = symval - addr; ++ break; ++ case REF_CPOOL: ++ /* cpool frags are always in the same section and always after ++ all frags referring to it. So it's always correct to add in ++ offset_adjust here. */ ++ target = (ind_data->add_frag->offset + ind_data->add_frag->offset_adjust ++ + offset_adjust - frag->offset - frag->offset_adjust); ++ break; ++ case REF_GOT: ++ target = got->offset; ++ break; ++ default: ++ abort(); ++ } ++ ++ if (target >= rs->range_min && target <= rs->range_max) ++ return TRUE; ++ else ++ return FALSE; ++} ++ ++static bfd_boolean ++avr32_size_frags(bfd *abfd, asection *sec, struct bfd_link_info *info) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ struct avr32_relax_data *rd; ++ Elf_Internal_Shdr *symtab_hdr; ++ Elf_Internal_Rela *relocs = NULL; ++ Elf_Internal_Sym *isymbuf = NULL; ++ struct got_entry **local_got_ents; ++ struct fragment **local_sym_frag; ++ bfd_boolean ret = FALSE; ++ bfd_signed_vma delta = 0; ++ unsigned int i; ++ ++ htab = avr32_elf_hash_table(info); ++ rd = avr32_relax_data(sec); ++ ++ if (sec == htab->sgot) ++ { ++ RDBG("Relaxing GOT section (vma: 0x%lx)\n", ++ sec->output_section->vma + sec->output_offset); ++ if (assign_got_offsets(htab)) ++ htab->repeat_pass = TRUE; ++ return TRUE; ++ } ++ ++ if (!rd->is_relaxable) ++ return TRUE; ++ ++ if (!sec->rawsize) ++ sec->rawsize = sec->size; ++ ++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr; ++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory); ++ if (!relocs) ++ goto out; ++ ++ isymbuf = retrieve_local_syms(abfd, info->keep_memory); ++ if (!isymbuf) ++ goto out; ++ ++ local_got_ents = elf_local_got_ents(abfd); ++ local_sym_frag = elf_tdata(abfd)->local_sym_frag; ++ ++ RDBG("size_frags: %s<%s>\n vma: 0x%08lx, size: 0x%08lx\n", ++ abfd->filename, sec->name, ++ sec->output_section->vma + sec->output_offset, sec->size); ++ ++ for (i = 0; i < rd->frag_count; i++) ++ { ++ struct fragment *frag = &rd->frag[i]; ++ struct avr32_reloc_data *r_data = NULL, *ind_data = NULL; ++ const struct relax_state *state, *next_state; ++ struct fragment *target_frag = NULL; ++ asection *sym_sec = NULL; ++ Elf_Internal_Rela *rela; ++ struct got_entry *got; ++ bfd_vma symval, r_offset, addend, addr; ++ bfd_signed_vma size_adjust = 0, distance; ++ unsigned long r_symndx; ++ bfd_boolean defined = TRUE, dynamic = FALSE; ++ unsigned char sym_type; ++ ++ frag->offset_adjust += delta; ++ state = next_state = &relax_state[frag->state]; ++ rela = frag->rela; ++ ++ BFD_ASSERT(state->id == frag->state); ++ ++ RDBG(" 0x%04lx%c%d: %s [size %ld]", rela ? rela->r_offset : sec->rawsize, ++ (frag->offset_adjust < 0)?'-':'+', ++ abs(frag->offset_adjust), state->name, state->size); ++ ++ if (!rela) ++ { ++ RDBG(": no reloc, ignoring\n"); ++ continue; ++ } ++ ++ BFD_ASSERT((unsigned int)(rela - relocs) < sec->reloc_count); ++ BFD_ASSERT(state != RS_NONE); ++ ++ r_offset = rela->r_offset + frag->offset_adjust; ++ addr = sec->output_section->vma + sec->output_offset + r_offset; ++ ++ switch (frag->state) ++ { ++ case RS_ALIGN: ++ size_adjust = ((addr + (1 << rela->r_addend) - 1) ++ & ~((1 << rela->r_addend) - 1)); ++ size_adjust -= (sec->output_section->vma + sec->output_offset ++ + frag->offset + frag->offset_adjust ++ + frag->size + frag->size_adjust); ++ ++ RDBG(": adjusting size %lu -> %lu\n", frag->size + frag->size_adjust, ++ frag->size + frag->size_adjust + size_adjust); ++ break; ++ ++ case RS_CPENT: ++ if (frag->refcount == 0 && frag->size_adjust == 0) ++ { ++ RDBG(": discarding frag\n"); ++ size_adjust = -4; ++ } ++ else if (frag->refcount > 0 && frag->size_adjust < 0) ++ { ++ RDBG(": un-discarding frag\n"); ++ size_adjust = 4; ++ } ++ break; ++ ++ default: ++ if (rd->reloc_data) ++ r_data = &rd->reloc_data[frag->rela - relocs]; ++ ++ /* If this is a cpool reference, we want the symbol that the ++ cpool entry refers to, not the symbol for the cpool entry ++ itself, as we already know what frag it's in. */ ++ if (relax_state[frag->initial_state].reftype == REF_CPOOL) ++ { ++ Elf_Internal_Rela *irela = r_data->add_frag->rela; ++ ++ r_symndx = ELF_R_SYM(irela->r_info); ++ addend = irela->r_addend; ++ ++ /* The constant pool must be in the same section as the ++ reloc referring to it. */ ++ BFD_ASSERT((unsigned long)(irela - relocs) < sec->reloc_count); ++ ++ ind_data = r_data; ++ r_data = &rd->reloc_data[irela - relocs]; ++ } ++ else ++ { ++ r_symndx = ELF_R_SYM(rela->r_info); ++ addend = rela->r_addend; ++ } ++ ++ /* Get the value of the symbol referred to by the reloc. */ ++ if (r_symndx < symtab_hdr->sh_info) ++ { ++ Elf_Internal_Sym *isym; ++ ++ isym = isymbuf + r_symndx; ++ symval = 0; ++ ++ RDBG(" local sym %lu: ", r_symndx); ++ ++ if (isym->st_shndx == SHN_UNDEF) ++ defined = FALSE; ++ else if (isym->st_shndx == SHN_ABS) ++ sym_sec = bfd_abs_section_ptr; ++ else if (isym->st_shndx == SHN_COMMON) ++ sym_sec = bfd_com_section_ptr; ++ else ++ sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx); ++ ++ symval = isym->st_value; ++ sym_type = ELF_ST_TYPE(isym->st_info); ++ target_frag = local_sym_frag[r_symndx]; ++ ++ if (local_got_ents) ++ got = local_got_ents[r_symndx]; ++ else ++ got = NULL; ++ } ++ else ++ { ++ /* Global symbol */ ++ unsigned long index; ++ struct elf_link_hash_entry *h; ++ struct elf_avr32_link_hash_entry *havr; ++ ++ index = r_symndx - symtab_hdr->sh_info; ++ h = elf_sym_hashes(abfd)[index]; ++ BFD_ASSERT(h != NULL); ++ ++ while (h->root.type == bfd_link_hash_indirect ++ || h->root.type == bfd_link_hash_warning) ++ h = (struct elf_link_hash_entry *)h->root.u.i.link; ++ ++ havr = (struct elf_avr32_link_hash_entry *)h; ++ got = h->got.glist; ++ ++ symval = 0; ++ ++ RDBG(" %s: ", h->root.root.string); ++ ++ if (h->root.type != bfd_link_hash_defined ++ && h->root.type != bfd_link_hash_defweak) ++ { ++ RDBG("(undef)"); ++ defined = FALSE; ++ } ++ else if ((info->shared && !info->symbolic && h->dynindx != -1) ++ || (htab->root.dynamic_sections_created ++ && h->def_dynamic && !h->def_regular)) ++ { ++ RDBG("(dynamic)"); ++ dynamic = TRUE; ++ sym_sec = h->root.u.def.section; ++ } ++ else ++ { ++ sym_sec = h->root.u.def.section; ++ symval = h->root.u.def.value; ++ target_frag = havr->sym_frag; ++ } ++ ++ sym_type = h->type; ++ } ++ ++ /* Thanks to elf32-ppc for this one. */ ++ if (sym_sec && sym_sec->sec_info_type == ELF_INFO_TYPE_MERGE) ++ { ++ /* At this stage in linking, no SEC_MERGE symbol has been ++ adjusted, so all references to such symbols need to be ++ passed through _bfd_merged_section_offset. (Later, in ++ relocate_section, all SEC_MERGE symbols *except* for ++ section symbols have been adjusted.) ++ ++ SEC_MERGE sections are not relaxed by us, as they ++ shouldn't contain any code. */ ++ ++ BFD_ASSERT(!target_frag && !(r_data && r_data->add_frag)); ++ ++ /* gas may reduce relocations against symbols in SEC_MERGE ++ sections to a relocation against the section symbol when ++ the original addend was zero. When the reloc is against ++ a section symbol we should include the addend in the ++ offset passed to _bfd_merged_section_offset, since the ++ location of interest is the original symbol. On the ++ other hand, an access to "sym+addend" where "sym" is not ++ a section symbol should not include the addend; Such an ++ access is presumed to be an offset from "sym"; The ++ location of interest is just "sym". */ ++ RDBG("\n MERGE: %s: 0x%lx+0x%lx+0x%lx -> ", ++ (sym_type == STT_SECTION)?"section":"not section", ++ sym_sec->output_section->vma + sym_sec->output_offset, ++ symval, addend); ++ ++ if (sym_type == STT_SECTION) ++ symval += addend; ++ ++ symval = (_bfd_merged_section_offset ++ (abfd, &sym_sec, ++ elf_section_data(sym_sec)->sec_info, symval)); ++ ++ if (sym_type != STT_SECTION) ++ symval += addend; ++ } ++ else ++ symval += addend; ++ ++ if (defined && !dynamic) ++ { ++ RDBG("0x%lx+0x%lx", ++ sym_sec->output_section->vma + sym_sec->output_offset, ++ symval); ++ symval += sym_sec->output_section->vma + sym_sec->output_offset; ++ } ++ ++ if (r_data && r_data->add_frag) ++ /* If the add_frag pointer is set, it means that this reloc ++ has an addend that may be affected by relaxation. */ ++ target_frag = r_data->add_frag; ++ ++ if (target_frag) ++ { ++ symval += target_frag->offset_adjust; ++ ++ /* If target_frag comes after this frag in the same ++ section, we should assume that it will be moved by ++ the same amount we are. */ ++ if ((target_frag - rd->frag) < (int)rd->frag_count ++ && target_frag > frag) ++ symval += delta; ++ } ++ ++ distance = symval - addr; ++ ++ /* First, try to make a direct reference. If the symbol is ++ dynamic or undefined, we must take care not to change its ++ reference type, that is, we can't make it direct. ++ ++ Also, it seems like some sections may actually be resized ++ after the relaxation code is done, so we can't really ++ trust that our "distance" is correct. There's really no ++ easy solution to this problem, so we'll just disallow ++ direct references to SEC_DATA sections. ++ ++ Oh, and .bss isn't actually SEC_DATA, so we disallow ++ !SEC_HAS_CONTENTS as well. */ ++ if (!dynamic && defined ++#ifndef DHRYSTONE_FIX ++ && !(sym_sec->flags & SEC_DATA) ++#endif ++ && (sym_sec->flags & SEC_HAS_CONTENTS) ++ && next_state->direct) ++ { ++ next_state = &relax_state[next_state->direct]; ++ RDBG(" D-> %s", next_state->name); ++ } ++ ++ /* Iterate backwards until we find a state that fits. */ ++ while (next_state->prev ++ && !rs_is_good_enough(next_state, frag, symval, addr, ++ got, ind_data, delta)) ++ { ++ next_state = &relax_state[next_state->prev]; ++ RDBG(" P-> %s", next_state->name); ++ } ++ ++ /* Then try to find the best possible state. */ ++ while (next_state->next) ++ { ++ const struct relax_state *candidate; ++ ++ candidate = &relax_state[next_state->next]; ++ if (!rs_is_good_enough(candidate, frag, symval, addr, got, ++ ind_data, delta)) ++ break; ++ ++ next_state = candidate; ++ RDBG(" N-> %s", next_state->name); ++ } ++ ++ RDBG(" [size %ld]\n", next_state->size); ++ ++ BFD_ASSERT(next_state->id); ++ BFD_ASSERT(!dynamic || next_state->reftype == REF_GOT); ++ ++ size_adjust = next_state->size - state->size; ++ ++ /* There's a theoretical possibility that shrinking one frag ++ may cause another to grow, which may cause the first one to ++ grow as well, and we're back where we started. Avoid this ++ scenario by disallowing a frag that has grown to ever ++ shrink again. */ ++ if (state->reftype == REF_GOT && next_state->reftype != REF_GOT) ++ { ++ if (frag->has_grown) ++ next_state = state; ++ else ++ unref_got_entry(htab, got); ++ } ++ else if (state->reftype != REF_GOT && next_state->reftype == REF_GOT) ++ { ++ ref_got_entry(htab, got); ++ frag->has_grown = TRUE; ++ } ++ else if (state->reftype == REF_CPOOL ++ && next_state->reftype != REF_CPOOL) ++ { ++ if (frag->has_grown) ++ next_state = state; ++ else ++ ind_data->add_frag->refcount--; ++ } ++ else if (state->reftype != REF_CPOOL ++ && next_state->reftype == REF_CPOOL) ++ { ++ ind_data->add_frag->refcount++; ++ frag->has_grown = TRUE; ++ } ++ else ++ { ++ if (frag->has_grown && size_adjust < 0) ++ next_state = state; ++ else if (size_adjust > 0) ++ frag->has_grown = TRUE; ++ } ++ ++ size_adjust = next_state->size - state->size; ++ frag->state = next_state->id; ++ ++ break; ++ } ++ ++ if (size_adjust) ++ htab->repeat_pass = TRUE; ++ ++ frag->size_adjust += size_adjust; ++ sec->size += size_adjust; ++ delta += size_adjust; ++ ++ BFD_ASSERT((frag->offset + frag->offset_adjust ++ + frag->size + frag->size_adjust) ++ == (frag[1].offset + frag[1].offset_adjust + delta)); ++ } ++ ++ ret = TRUE; ++ ++ out: ++ release_local_syms(abfd, isymbuf); ++ release_internal_relocs(sec, relocs); ++ return ret; ++} ++ ++static bfd_boolean ++adjust_global_symbol(struct elf_avr32_link_hash_entry *havr, ++ struct bfd_link_info *info ATTRIBUTE_UNUSED) ++{ ++ struct elf_link_hash_entry *h = &havr->root; ++ ++ if (havr->sym_frag && (h->root.type == bfd_link_hash_defined ++ || h->root.type == bfd_link_hash_defweak)) ++ { ++ RDBG("adjust_global_symbol: %s 0x%08lx -> 0x%08lx\n", ++ h->root.root.string, h->root.u.def.value, ++ h->root.u.def.value + havr->sym_frag->offset_adjust); ++ h->root.u.def.value += havr->sym_frag->offset_adjust; ++ } ++ return TRUE; ++} ++ ++static bfd_boolean ++adjust_syms(struct bfd_link_info *info) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ bfd *abfd; ++ ++ htab = avr32_elf_hash_table(info); ++ elf_link_hash_traverse(&htab->root, adjust_global_symbol, info); ++ ++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next) ++ { ++ Elf_Internal_Sym *isymbuf; ++ struct fragment **local_sym_frag, *frag; ++ unsigned int i, sym_count; ++ ++ sym_count = elf_tdata(abfd)->symtab_hdr.sh_info; ++ if (sym_count == 0) ++ continue; ++ ++ isymbuf = retrieve_local_syms(abfd, info->keep_memory); ++ if (!isymbuf) ++ return FALSE; ++ ++ local_sym_frag = elf_tdata(abfd)->local_sym_frag; ++ ++ for (i = 0; i < sym_count; i++) ++ { ++ frag = local_sym_frag[i]; ++ if (frag) ++ { ++ RDBG("adjust_local_symbol: %s[%u] 0x%08lx -> 0x%08lx\n", ++ abfd->filename, i, isymbuf[i].st_value, ++ isymbuf[i].st_value + frag->offset_adjust); ++ isymbuf[i].st_value += frag->offset_adjust; ++ } ++ } ++ ++ release_local_syms(abfd, isymbuf); ++ } ++ ++ htab->symbols_adjusted = TRUE; ++ return TRUE; ++} ++ ++static bfd_boolean ++adjust_relocs(bfd *abfd, asection *sec, struct bfd_link_info *info) ++{ ++ struct avr32_relax_data *rd; ++ Elf_Internal_Rela *relocs; ++ Elf_Internal_Shdr *symtab_hdr; ++ unsigned int i; ++ bfd_boolean ret = FALSE; ++ ++ rd = avr32_relax_data(sec); ++ if (!rd->reloc_data) ++ return TRUE; ++ ++ RDBG("adjust_relocs: %s<%s> (count: %u)\n", abfd->filename, sec->name, ++ sec->reloc_count); ++ ++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory); ++ if (!relocs) ++ return FALSE; ++ ++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr; ++ ++ for (i = 0; i < sec->reloc_count; i++) ++ { ++ Elf_Internal_Rela *rela = &relocs[i]; ++ struct avr32_reloc_data *r_data = &rd->reloc_data[i]; ++ struct fragment *sym_frag; ++ unsigned long r_symndx; ++ ++ if (r_data->add_frag) ++ { ++ r_symndx = ELF_R_SYM(rela->r_info); ++ ++ if (r_symndx < symtab_hdr->sh_info) ++ sym_frag = elf_tdata(abfd)->local_sym_frag[r_symndx]; ++ else ++ { ++ struct elf_link_hash_entry *h; ++ ++ h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info]; ++ ++ while (h->root.type == bfd_link_hash_indirect ++ || h->root.type == bfd_link_hash_warning) ++ h = (struct elf_link_hash_entry *)h->root.u.i.link; ++ ++ BFD_ASSERT(h->root.type == bfd_link_hash_defined ++ || h->root.type == bfd_link_hash_defweak); ++ ++ sym_frag = ((struct elf_avr32_link_hash_entry *)h)->sym_frag; ++ } ++ ++ RDBG(" addend: 0x%08lx -> 0x%08lx\n", ++ rela->r_addend, ++ rela->r_addend + r_data->add_frag->offset_adjust ++ - (sym_frag ? sym_frag->offset_adjust : 0)); ++ ++ /* If this is against a section symbol, we won't find any ++ sym_frag, so we'll just adjust the addend. */ ++ rela->r_addend += r_data->add_frag->offset_adjust; ++ if (sym_frag) ++ rela->r_addend -= sym_frag->offset_adjust; ++ ++ if (r_data->sub_frag) ++ { ++ bfd_byte *contents; ++ bfd_signed_vma diff; ++ ++ contents = retrieve_contents(abfd, sec, info->keep_memory); ++ if (!contents) ++ goto out; ++ ++ /* I realize now that sub_frag is misnamed. It's ++ actually add_frag which is subtracted in this ++ case... */ ++ diff = bfd_get_signed_32(abfd, contents + rela->r_offset); ++ diff += (r_data->sub_frag->offset_adjust ++ - r_data->add_frag->offset_adjust); ++ bfd_put_32(abfd, diff, contents + rela->r_offset); ++ ++ RDBG(" 0x%lx: DIFF32 updated: 0x%lx\n", rela->r_offset, diff); ++ ++ release_contents(sec, contents); ++ } ++ } ++ else ++ BFD_ASSERT(!r_data->sub_frag); ++ } ++ ++ ret = TRUE; ++ ++ out: ++ release_internal_relocs(sec, relocs); ++ return ret; ++} ++ ++static bfd_boolean ++avr32_move_data(bfd *abfd, asection *sec, struct bfd_link_info *info) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ struct avr32_relax_data *rd; ++ struct fragment *frag, *fragend; ++ Elf_Internal_Rela *relocs = NULL; ++ bfd_byte *contents = NULL; ++ unsigned int i; ++ bfd_boolean ret = FALSE; ++ ++ htab = avr32_elf_hash_table(info); ++ rd = avr32_relax_data(sec); ++ ++ if (!htab->symbols_adjusted) ++ if (!adjust_syms(info)) ++ return FALSE; ++ ++ if (rd->is_relaxable) ++ { ++ /* Resize the section first, so that we can be sure that enough ++ memory is allocated in case the section has grown. */ ++ if (sec->size > sec->rawsize ++ && elf_section_data(sec)->this_hdr.contents) ++ { ++ /* We must not use cached data if the section has grown. */ ++ free(elf_section_data(sec)->this_hdr.contents); ++ elf_section_data(sec)->this_hdr.contents = NULL; ++ } ++ ++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory); ++ if (!relocs) ++ goto out; ++ contents = retrieve_contents(abfd, sec, info->keep_memory); ++ if (!contents) ++ goto out; ++ ++ fragend = rd->frag + rd->frag_count; ++ ++ RDBG("move_data: %s<%s>: relocs=%p, contents=%p\n", ++ abfd->filename, sec->name, relocs, contents); ++ ++ /* First, move the data into place. We must take care to move ++ frags in the right order so that we don't accidentally ++ overwrite parts of the next frag. */ ++ for (frag = rd->frag; frag < fragend; frag++) ++ { ++ RDBG(" 0x%08lx%c0x%x: size 0x%lx%c0x%x\n", ++ frag->offset, frag->offset_adjust >= 0 ? '+' : '-', ++ abs(frag->offset_adjust), ++ frag->size, frag->size_adjust >= 0 ? '+' : '-', ++ abs(frag->size_adjust)); ++ if (frag->offset_adjust > 0) ++ { ++ struct fragment *prev = frag - 1; ++ struct fragment *last; ++ ++ for (last = frag; last < fragend && last->offset_adjust > 0; ++ last++) ; ++ ++ if (last == fragend) ++ last--; ++ ++ for (frag = last; frag != prev; frag--) ++ { ++ if (frag->offset_adjust ++ && frag->size + frag->size_adjust > 0) ++ { ++ RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n", ++ frag->offset, frag->offset + frag->offset_adjust, ++ frag->size + frag->size_adjust); ++ memmove(contents + frag->offset + frag->offset_adjust, ++ contents + frag->offset, ++ frag->size + frag->size_adjust); ++ } ++ } ++ frag = last; ++ } ++ else if (frag->offset_adjust && frag->size + frag->size_adjust > 0) ++ { ++ RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n", ++ frag->offset, frag->offset + frag->offset_adjust, ++ frag->size + frag->size_adjust); ++ memmove(contents + frag->offset + frag->offset_adjust, ++ contents + frag->offset, ++ frag->size + frag->size_adjust); ++ } ++ } ++ ++ i = 0; ++ ++ for (frag = rd->frag; frag < fragend; frag++) ++ { ++ const struct relax_state *state, *istate; ++ struct avr32_reloc_data *r_data = NULL; ++ ++ istate = &relax_state[frag->initial_state]; ++ state = &relax_state[frag->state]; ++ ++ if (rd->reloc_data) ++ r_data = &rd->reloc_data[frag->rela - relocs]; ++ ++ BFD_ASSERT((long)(frag->size + frag->size_adjust) >= 0); ++ BFD_ASSERT(state->reftype != REF_CPOOL ++ || r_data->add_frag->refcount > 0); ++ ++ if (istate->reftype == REF_CPOOL && state->reftype != REF_CPOOL) ++ { ++ struct fragment *ifrag; ++ ++ /* An indirect reference through the cpool has been ++ converted to a direct reference. We must update the ++ reloc to point to the symbol itself instead of the ++ constant pool entry. The reloc type will be updated ++ later. */ ++ ifrag = r_data->add_frag; ++ frag->rela->r_info = ifrag->rela->r_info; ++ frag->rela->r_addend = ifrag->rela->r_addend; ++ ++ /* Copy the reloc data so the addend will be adjusted ++ correctly later. */ ++ *r_data = rd->reloc_data[ifrag->rela - relocs]; ++ } ++ ++ /* Move all relocs covered by this frag. */ ++ if (frag->rela) ++ BFD_ASSERT(&relocs[i] <= frag->rela); ++ else ++ BFD_ASSERT((frag + 1) == fragend && frag->state == RS_NONE); ++ ++ if (frag == rd->frag) ++ BFD_ASSERT(i == 0); ++ else ++ BFD_ASSERT(&relocs[i] > frag[-1].rela); ++ ++ /* If non-null, frag->rela is the last relocation in the ++ fragment. frag->rela can only be null in the last ++ fragment, so in that case, we'll just do the rest. */ ++ for (; (i < sec->reloc_count ++ && (!frag->rela || &relocs[i] <= frag->rela)); i++) ++ { ++ RDBG("[%4u] r_offset 0x%08lx -> 0x%08lx\n", i, relocs[i].r_offset, ++ relocs[i].r_offset + frag->offset_adjust); ++ relocs[i].r_offset += frag->offset_adjust; ++ } ++ ++ if (frag->refcount == 0) ++ { ++ /* If this frag is to be discarded, make sure we won't ++ relocate it later on. */ ++ BFD_ASSERT(frag->state == RS_CPENT); ++ frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info), ++ R_AVR32_NONE); ++ } ++ else if (frag->state == RS_ALIGN) ++ { ++ bfd_vma addr, addr_end; ++ ++ addr = frag->rela->r_offset; ++ addr_end = (frag->offset + frag->offset_adjust ++ + frag->size + frag->size_adjust); ++ ++ /* If the section is executable, insert NOPs. ++ Otherwise, insert zeroes. */ ++ if (sec->flags & SEC_CODE) ++ { ++ if (addr & 1) ++ { ++ bfd_put_8(abfd, 0, contents + addr); ++ addr++; ++ } ++ ++ BFD_ASSERT(!((addr_end - addr) & 1)); ++ ++ while (addr < addr_end) ++ { ++ bfd_put_16(abfd, NOP_OPCODE, contents + addr); ++ addr += 2; ++ } ++ } ++ else ++ memset(contents + addr, 0, addr_end - addr); ++ } ++ else if (state->opcode_mask) ++ { ++ bfd_vma insn; ++ ++ /* Update the opcode and the relocation type unless it's a ++ "special" relax state (i.e. RS_NONE, RS_ALIGN or ++ RS_CPENT.), in which case the opcode mask is zero. */ ++ insn = bfd_get_32(abfd, contents + frag->rela->r_offset); ++ insn &= ~state->opcode_mask; ++ insn |= state->opcode; ++ RDBG(" 0x%lx: inserting insn %08lx\n", ++ frag->rela->r_offset, insn); ++ bfd_put_32(abfd, insn, contents + frag->rela->r_offset); ++ ++ frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info), ++ state->r_type); ++ } ++ ++ if ((frag + 1) == fragend) ++ BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust ++ + frag->size_adjust) == sec->size); ++ else ++ BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust ++ + frag->size_adjust) ++ == (frag[1].offset + frag[1].offset_adjust)); ++ } ++ } ++ ++ /* Adjust reloc addends and DIFF32 differences */ ++ if (!adjust_relocs(abfd, sec, info)) ++ return FALSE; ++ ++ ret = TRUE; ++ ++ out: ++ release_contents(sec, contents); ++ release_internal_relocs(sec, relocs); ++ return ret; ++} ++ ++static bfd_boolean ++avr32_elf_relax_section(bfd *abfd, asection *sec, ++ struct bfd_link_info *info, bfd_boolean *again) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ struct avr32_relax_data *rd; ++ ++ *again = FALSE; ++ if (info->relocatable) ++ return TRUE; ++ ++ htab = avr32_elf_hash_table(info); ++ if ((!(sec->flags & SEC_RELOC) || sec->reloc_count == 0) ++ && sec != htab->sgot) ++ return TRUE; ++ ++ if (!htab->relocations_analyzed) ++ { ++ if (!analyze_relocations(info)) ++ return FALSE; ++ htab->relocations_analyzed = TRUE; ++ } ++ ++ rd = avr32_relax_data(sec); ++ ++ if (rd->iteration != htab->relax_iteration) ++ { ++ if (!htab->repeat_pass) ++ htab->relax_pass++; ++ htab->relax_iteration++; ++ htab->repeat_pass = FALSE; ++ } ++ ++ rd->iteration++; ++ ++ switch (htab->relax_pass) ++ { ++ case RELAX_PASS_SIZE_FRAGS: ++ if (!avr32_size_frags(abfd, sec, info)) ++ return FALSE; ++ *again = TRUE; ++ break; ++ case RELAX_PASS_MOVE_DATA: ++ if (!avr32_move_data(abfd, sec, info)) ++ return FALSE; ++ break; ++ } ++ ++ return TRUE; ++} ++ ++ ++/* Relocation */ ++ ++static bfd_reloc_status_type ++avr32_check_reloc_value(asection *sec, Elf_Internal_Rela *rela, ++ bfd_signed_vma relocation, reloc_howto_type *howto); ++static bfd_reloc_status_type ++avr32_final_link_relocate(reloc_howto_type *howto, bfd *input_bfd, ++ asection *input_section, bfd_byte *contents, ++ Elf_Internal_Rela *rel, bfd_vma value); ++static bfd_boolean ++avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info, ++ bfd *input_bfd, asection *input_section, ++ bfd_byte *contents, Elf_Internal_Rela *relocs, ++ Elf_Internal_Sym *local_syms, ++ asection **local_sections); ++ ++ ++#define symbol_address(symbol) \ ++ symbol->value + symbol->section->output_section->vma \ ++ + symbol->section->output_offset ++ ++#define avr32_elf_insert_field(size, field, abfd, reloc_entry, data) \ ++ do \ ++ { \ ++ unsigned long x; \ ++ x = bfd_get_##size (abfd, data + reloc_entry->address); \ ++ x &= ~reloc_entry->howto->dst_mask; \ ++ x |= field & reloc_entry->howto->dst_mask; \ ++ bfd_put_##size (abfd, (bfd_vma) x, data + reloc_entry->address); \ ++ } \ ++ while(0) ++ ++static bfd_reloc_status_type ++avr32_check_reloc_value(asection *sec ATTRIBUTE_UNUSED, ++ Elf_Internal_Rela *rela ATTRIBUTE_UNUSED, ++ bfd_signed_vma relocation, ++ reloc_howto_type *howto) ++{ ++ bfd_vma reloc_u; ++ ++ /* We take "complain_overflow_dont" to mean "don't complain on ++ alignment either". This way, we don't have to special-case ++ R_AVR32_HI16 */ ++ if (howto->complain_on_overflow == complain_overflow_dont) ++ return bfd_reloc_ok; ++ ++ /* Check if the value is correctly aligned */ ++ if (relocation & ((1 << howto->rightshift) - 1)) ++ { ++ RDBG("misaligned: %s<%s+%lx>: %s: 0x%lx (align %u)\n", ++ sec->owner->filename, sec->name, rela->r_offset, ++ howto->name, relocation, howto->rightshift); ++ return bfd_reloc_overflow; ++ } ++ ++ /* Now, get rid of the unnecessary bits */ ++ relocation >>= howto->rightshift; ++ reloc_u = (bfd_vma)relocation; ++ ++ switch (howto->complain_on_overflow) ++ { ++ case complain_overflow_unsigned: ++ case complain_overflow_bitfield: ++ if (reloc_u > (unsigned long)((1 << howto->bitsize) - 1)) ++ { ++ RDBG("unsigned overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n", ++ sec->owner->filename, sec->name, rela->r_offset, ++ howto->name, reloc_u, howto->bitsize); ++ RDBG("reloc vma: 0x%lx\n", ++ sec->output_section->vma + sec->output_offset + rela->r_offset); ++ ++ return bfd_reloc_overflow; ++ } ++ break; ++ case complain_overflow_signed: ++ if (relocation > (1 << (howto->bitsize - 1)) - 1) ++ { ++ RDBG("signed overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n", ++ sec->owner->filename, sec->name, rela->r_offset, ++ howto->name, reloc_u, howto->bitsize); ++ RDBG("reloc vma: 0x%lx\n", ++ sec->output_section->vma + sec->output_offset + rela->r_offset); ++ ++ return bfd_reloc_overflow; ++ } ++ if (relocation < -(1 << (howto->bitsize - 1))) ++ { ++ RDBG("signed overflow: %s<%s+%lx>: %s: -0x%lx (size %u)\n", ++ sec->owner->filename, sec->name, rela->r_offset, ++ howto->name, -relocation, howto->bitsize); ++ RDBG("reloc vma: 0x%lx\n", ++ sec->output_section->vma + sec->output_offset + rela->r_offset); ++ ++ return bfd_reloc_overflow; ++ } ++ break; ++ default: ++ abort(); ++ } ++ ++ return bfd_reloc_ok; ++} ++ ++ ++static bfd_reloc_status_type ++avr32_final_link_relocate(reloc_howto_type *howto, ++ bfd *input_bfd, ++ asection *input_section, ++ bfd_byte *contents, ++ Elf_Internal_Rela *rel, ++ bfd_vma value) ++{ ++ bfd_vma field; ++ bfd_vma relocation; ++ bfd_reloc_status_type status; ++ bfd_byte *p = contents + rel->r_offset; ++ unsigned long x; ++ ++ pr_debug(" (6b) final link relocate\n"); ++ ++ /* Sanity check the address */ ++ if (rel->r_offset > input_section->size) ++ { ++ (*_bfd_error_handler) ++ ("%B: %A+0x%lx: offset out of range (section size: 0x%lx)", ++ input_bfd, input_section, rel->r_offset, input_section->size); ++ return bfd_reloc_outofrange; ++ } ++ ++ relocation = value + rel->r_addend; ++ ++ if (howto->pc_relative) ++ { ++ bfd_vma addr; ++ ++ addr = input_section->output_section->vma ++ + input_section->output_offset + rel->r_offset; ++ addr &= ~0UL << howto->rightshift; ++ relocation -= addr; ++ } ++ ++ switch (ELF32_R_TYPE(rel->r_info)) ++ { ++ case R_AVR32_16N_PCREL: ++ /* sub reg, pc, . - (sym + addend) */ ++ relocation = -relocation; ++ break; ++ } ++ ++ status = avr32_check_reloc_value(input_section, rel, relocation, howto); ++ ++ relocation >>= howto->rightshift; ++ if (howto->bitsize == 21) ++ field = (relocation & 0xffff) ++ | ((relocation & 0x10000) << 4) ++ | ((relocation & 0x1e0000) << 8); ++ else if (howto->bitsize == 12) ++ field = (relocation & 0xff) | ((relocation & 0xf00) << 4); ++ else if (howto->bitsize == 10) ++ field = ((relocation & 0xff) << 4) ++ | ((relocation & 0x300) >> 8); ++ else ++ field = relocation << howto->bitpos; ++ ++ switch (howto->size) ++ { ++ case 0: ++ x = bfd_get_8 (input_bfd, p); ++ x &= ~howto->dst_mask; ++ x |= field & howto->dst_mask; ++ bfd_put_8 (input_bfd, (bfd_vma) x, p); ++ break; ++ case 1: ++ x = bfd_get_16 (input_bfd, p); ++ x &= ~howto->dst_mask; ++ x |= field & howto->dst_mask; ++ bfd_put_16 (input_bfd, (bfd_vma) x, p); ++ break; ++ case 2: ++ x = bfd_get_32 (input_bfd, p); ++ x &= ~howto->dst_mask; ++ x |= field & howto->dst_mask; ++ bfd_put_32 (input_bfd, (bfd_vma) x, p); ++ break; ++ default: ++ abort(); ++ } ++ ++ return status; ++} ++ ++/* (6) Apply relocations to the normal (non-dynamic) sections */ ++ ++static bfd_boolean ++avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info, ++ bfd *input_bfd, asection *input_section, ++ bfd_byte *contents, Elf_Internal_Rela *relocs, ++ Elf_Internal_Sym *local_syms, ++ asection **local_sections) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ Elf_Internal_Shdr *symtab_hdr; ++ Elf_Internal_Rela *rel, *relend; ++ struct elf_link_hash_entry **sym_hashes; ++ struct got_entry **local_got_ents; ++ asection *sgot; ++ asection *srelgot; ++ ++ pr_debug("(6) relocate section %s:<%s> (size 0x%lx)\n", ++ input_bfd->filename, input_section->name, input_section->size); ++ ++ /* If we're doing a partial link, we don't have to do anything since ++ we're using RELA relocations */ ++ if (info->relocatable) ++ return TRUE; ++ ++ htab = avr32_elf_hash_table(info); ++ symtab_hdr = &elf_tdata(input_bfd)->symtab_hdr; ++ sym_hashes = elf_sym_hashes(input_bfd); ++ local_got_ents = elf_local_got_ents(input_bfd); ++ sgot = htab->sgot; ++ srelgot = htab->srelgot; ++ ++ relend = relocs + input_section->reloc_count; ++ for (rel = relocs; rel < relend; rel++) ++ { ++ unsigned long r_type, r_symndx; ++ reloc_howto_type *howto; ++ Elf_Internal_Sym *sym = NULL; ++ struct elf_link_hash_entry *h = NULL; ++ asection *sec = NULL; ++ bfd_vma value; ++ bfd_vma offset; ++ bfd_reloc_status_type status; ++ ++ r_type = ELF32_R_TYPE(rel->r_info); ++ r_symndx = ELF32_R_SYM(rel->r_info); ++ ++ if (r_type == R_AVR32_NONE ++ || r_type == R_AVR32_ALIGN ++ || r_type == R_AVR32_DIFF32 ++ || r_type == R_AVR32_DIFF16 ++ || r_type == R_AVR32_DIFF8) ++ continue; ++ ++ /* Sanity check */ ++ if (r_type > R_AVR32_max) ++ { ++ bfd_set_error(bfd_error_bad_value); ++ return FALSE; ++ } ++ ++ howto = &elf_avr32_howto_table[r_type]; ++ ++ if (r_symndx < symtab_hdr->sh_info) ++ { ++ sym = local_syms + r_symndx; ++ sec = local_sections[r_symndx]; ++ ++ pr_debug(" (6a) processing %s against local symbol %lu\n", ++ howto->name, r_symndx); ++ ++ /* The following function changes rel->r_addend behind our back. */ ++ value = _bfd_elf_rela_local_sym(output_bfd, sym, &sec, rel); ++ pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend); ++ } ++ else ++ { ++ if (sym_hashes == NULL) ++ return FALSE; ++ ++ h = sym_hashes[r_symndx - symtab_hdr->sh_info]; ++ while (h->root.type == bfd_link_hash_indirect ++ || h->root.type == bfd_link_hash_warning) ++ h = (struct elf_link_hash_entry *)h->root.u.i.link; ++ ++ pr_debug(" (6a) processing %s against symbol %s\n", ++ howto->name, h->root.root.string); ++ ++ if (h->root.type == bfd_link_hash_defined ++ || h->root.type == bfd_link_hash_defweak) ++ { ++ bfd_boolean dyn; ++ ++ dyn = htab->root.dynamic_sections_created; ++ sec = h->root.u.def.section; ++ ++ if (sec->output_section) ++ value = (h->root.u.def.value ++ + sec->output_section->vma ++ + sec->output_offset); ++ else ++ value = h->root.u.def.value; ++ } ++ else if (h->root.type == bfd_link_hash_undefweak) ++ value = 0; ++ else if (info->unresolved_syms_in_objects == RM_IGNORE ++ && ELF_ST_VISIBILITY(h->other) == STV_DEFAULT) ++ value = 0; ++ else ++ { ++ bfd_boolean err; ++ err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR ++ || ELF_ST_VISIBILITY(h->other) != STV_DEFAULT); ++ if (!info->callbacks->undefined_symbol ++ (info, h->root.root.string, input_bfd, ++ input_section, rel->r_offset, err)) ++ return FALSE; ++ value = 0; ++ } ++ ++ pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend); ++ } ++ ++ switch (r_type) ++ { ++ case R_AVR32_GOT32: ++ case R_AVR32_GOT16: ++ case R_AVR32_GOT8: ++ case R_AVR32_GOT21S: ++ case R_AVR32_GOT18SW: ++ case R_AVR32_GOT16S: ++ case R_AVR32_GOT7UW: ++ case R_AVR32_LDA_GOT: ++ case R_AVR32_GOTCALL: ++ BFD_ASSERT(sgot != NULL); ++ ++ if (h != NULL) ++ { ++ BFD_ASSERT(h->got.glist->refcount > 0); ++ offset = h->got.glist->offset; ++ ++ BFD_ASSERT(offset < sgot->size); ++ if (!elf_hash_table(info)->dynamic_sections_created ++ || (h->def_regular ++ && (!info->shared ++ || info->symbolic ++ || h->dynindx == -1))) ++ { ++ /* This is actually a static link, or it is a ++ -Bsymbolic link and the symbol is defined ++ locally, or the symbol was forced to be local. */ ++ bfd_put_32(output_bfd, value, sgot->contents + offset); ++ } ++ } ++ else ++ { ++ BFD_ASSERT(local_got_ents && ++ local_got_ents[r_symndx]->refcount > 0); ++ offset = local_got_ents[r_symndx]->offset; ++ ++ /* Local GOT entries don't have relocs. If this is a ++ shared library, the dynamic linker will add the load ++ address to the initial value at startup. */ ++ BFD_ASSERT(offset < sgot->size); ++ pr_debug("Initializing GOT entry at offset %lu: 0x%lx\n", ++ offset, value); ++ bfd_put_32 (output_bfd, value, sgot->contents + offset); ++ } ++ ++ value = sgot->output_offset + offset; ++ pr_debug("GOT reference: New value %lx\n", value); ++ break; ++ ++ case R_AVR32_GOTPC: ++ /* This relocation type is for constant pool entries used in ++ the calculation "Rd = PC - (PC - GOT)", where the ++ constant pool supplies the constant (PC - GOT) ++ offset. The symbol value + addend indicates where the ++ value of PC is taken. */ ++ value -= sgot->output_section->vma; ++ break; ++ ++ case R_AVR32_32_PCREL: ++ /* We must adjust r_offset to account for discarded data in ++ the .eh_frame section. This is probably not the right ++ way to do this, since AFAICS all other architectures do ++ it some other way. I just can't figure out how... */ ++ { ++ bfd_vma r_offset; ++ ++ r_offset = _bfd_elf_section_offset(output_bfd, info, ++ input_section, ++ rel->r_offset); ++ if (r_offset == (bfd_vma)-1 ++ || r_offset == (bfd_vma)-2) ++ continue; ++ rel->r_offset = r_offset; ++ } ++ break; ++ ++ case R_AVR32_32: ++ /* We need to emit a run-time relocation in the following cases: ++ - we're creating a shared library ++ - the symbol is not defined in any regular objects ++ ++ Of course, sections that aren't going to be part of the ++ run-time image will not get any relocs, and undefined ++ symbols won't have any either (only weak undefined ++ symbols should get this far). */ ++ if ((info->shared ++ || (elf_hash_table(info)->dynamic_sections_created ++ && h != NULL ++ && h->def_dynamic ++ && !h->def_regular)) ++ && r_symndx != 0 ++ && (input_section->flags & SEC_ALLOC)) ++ { ++ Elf_Internal_Rela outrel; ++ bfd_byte *loc; ++ bfd_boolean skip, relocate; ++ struct elf_avr32_link_hash_entry *avrh; ++ ++ pr_debug("Going to generate dynamic reloc...\n"); ++ ++ skip = FALSE; ++ relocate = FALSE; ++ ++ outrel.r_offset = _bfd_elf_section_offset(output_bfd, info, ++ input_section, ++ rel->r_offset); ++ if (outrel.r_offset == (bfd_vma)-1) ++ skip = TRUE; ++ else if (outrel.r_offset == (bfd_vma)-2) ++ skip = TRUE, relocate = TRUE; ++ ++ outrel.r_offset += (input_section->output_section->vma ++ + input_section->output_offset); ++ ++ pr_debug(" ... offset %lx, dynindx %ld\n", ++ outrel.r_offset, h ? h->dynindx : -1); ++ ++ if (skip) ++ memset(&outrel, 0, sizeof(outrel)); ++ else ++ { ++ avrh = (struct elf_avr32_link_hash_entry *)h; ++ /* h->dynindx may be -1 if this symbol was marked to ++ become local. */ ++ if (h == NULL ++ || ((info->symbolic || h->dynindx == -1) ++ && h->def_regular)) ++ { ++ relocate = TRUE; ++ outrel.r_info = ELF32_R_INFO(0, R_AVR32_RELATIVE); ++ outrel.r_addend = value + rel->r_addend; ++ pr_debug(" ... R_AVR32_RELATIVE\n"); ++ } ++ else ++ { ++ BFD_ASSERT(h->dynindx != -1); ++ relocate = TRUE; ++ outrel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT); ++ outrel.r_addend = rel->r_addend; ++ pr_debug(" ... R_AVR32_GLOB_DAT\n"); ++ } ++ } ++ ++ pr_debug("srelgot reloc_count: %d, size %lu\n", ++ srelgot->reloc_count, srelgot->size); ++ ++ loc = srelgot->contents; ++ loc += srelgot->reloc_count++ * sizeof(Elf32_External_Rela); ++ bfd_elf32_swap_reloca_out(output_bfd, &outrel, loc); ++ ++ BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela) ++ <= srelgot->size); ++ ++ if (!relocate) ++ continue; ++ } ++ break; ++ } ++ ++ status = avr32_final_link_relocate(howto, input_bfd, input_section, ++ contents, rel, value); ++ ++ switch (status) ++ { ++ case bfd_reloc_ok: ++ break; ++ ++ case bfd_reloc_overflow: ++ { ++ const char *name; ++ ++ if (h != NULL) ++ name = h->root.root.string; ++ else ++ { ++ name = bfd_elf_string_from_elf_section(input_bfd, ++ symtab_hdr->sh_link, ++ sym->st_name); ++ if (name == NULL) ++ return FALSE; ++ if (*name == '\0') ++ name = bfd_section_name(input_bfd, sec); ++ } ++ if (!((*info->callbacks->reloc_overflow) ++ (info, (h ? &h->root : NULL), name, howto->name, ++ rel->r_addend, input_bfd, input_section, rel->r_offset))) ++ return FALSE; ++ } ++ break; ++ ++ case bfd_reloc_outofrange: ++ default: ++ abort(); ++ } ++ } ++ ++ return TRUE; ++} ++ ++ ++/* Additional processing of dynamic sections after relocation */ ++ ++static bfd_boolean ++avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info, ++ struct elf_link_hash_entry *h, ++ Elf_Internal_Sym *sym); ++static bfd_boolean ++avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info); ++ ++ ++/* (7) Initialize the contents of a dynamic symbol and/or emit ++ relocations for it */ ++ ++static bfd_boolean ++avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info, ++ struct elf_link_hash_entry *h, ++ Elf_Internal_Sym *sym) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ struct got_entry *got; ++ ++ pr_debug("(7) finish dynamic symbol: %s\n", h->root.root.string); ++ ++ htab = avr32_elf_hash_table(info); ++ got = h->got.glist; ++ ++ if (got && got->refcount > 0) ++ { ++ asection *sgot; ++ asection *srelgot; ++ Elf_Internal_Rela rel; ++ bfd_byte *loc; ++ ++ /* This symbol has an entry in the GOT. Set it up. */ ++ sgot = htab->sgot; ++ srelgot = htab->srelgot; ++ BFD_ASSERT(sgot && srelgot); ++ ++ rel.r_offset = (sgot->output_section->vma ++ + sgot->output_offset ++ + got->offset); ++ ++ /* If this is a static link, or it is a -Bsymbolic link and the ++ symbol is defined locally or was forced to be local because ++ of a version file, we just want to emit a RELATIVE reloc. The ++ entry in the global offset table will already have been ++ initialized in the relocate_section function. */ ++ if ((info->shared ++ && !info->symbolic ++ && h->dynindx != -1) ++ || (htab->root.dynamic_sections_created ++ && h->def_dynamic ++ && !h->def_regular)) ++ { ++ bfd_put_32(output_bfd, 0, sgot->contents + got->offset); ++ rel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT); ++ rel.r_addend = 0; ++ ++ pr_debug("GOT reloc R_AVR32_GLOB_DAT, dynindx: %ld\n", h->dynindx); ++ pr_debug(" srelgot reloc_count: %d, size: %lu\n", ++ srelgot->reloc_count, srelgot->size); ++ ++ loc = (srelgot->contents ++ + srelgot->reloc_count++ * sizeof(Elf32_External_Rela)); ++ bfd_elf32_swap_reloca_out(output_bfd, &rel, loc); ++ ++ BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela) ++ <= srelgot->size); ++ } ++ } ++ ++ /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute */ ++ if (strcmp(h->root.root.string, "_DYNAMIC") == 0 ++ || strcmp(h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0) ++ sym->st_shndx = SHN_ABS; ++ ++ return TRUE; ++} ++ ++/* (8) Do any remaining initialization of the dynamic sections */ ++ ++static bfd_boolean ++avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info) ++{ ++ struct elf_avr32_link_hash_table *htab; ++ asection *sgot, *sdyn; ++ ++ pr_debug("(8) finish dynamic sections\n"); ++ ++ htab = avr32_elf_hash_table(info); ++ sgot = htab->sgot; ++ sdyn = bfd_get_section_by_name(htab->root.dynobj, ".dynamic"); ++ ++ if (htab->root.dynamic_sections_created) ++ { ++ Elf32_External_Dyn *dyncon, *dynconend; ++ ++ BFD_ASSERT(sdyn && sgot && sgot->size >= AVR32_GOT_HEADER_SIZE); ++ ++ dyncon = (Elf32_External_Dyn *)sdyn->contents; ++ dynconend = (Elf32_External_Dyn *)(sdyn->contents + sdyn->size); ++ for (; dyncon < dynconend; dyncon++) ++ { ++ Elf_Internal_Dyn dyn; ++ asection *s; ++ ++ bfd_elf32_swap_dyn_in(htab->root.dynobj, dyncon, &dyn); ++ ++ switch (dyn.d_tag) ++ { ++ default: ++ break; ++ ++ case DT_PLTGOT: ++ s = sgot->output_section; ++ BFD_ASSERT(s != NULL); ++ dyn.d_un.d_ptr = s->vma; ++ bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon); ++ break; ++ ++ case DT_AVR32_GOTSZ: ++ s = sgot->output_section; ++ BFD_ASSERT(s != NULL); ++ dyn.d_un.d_val = s->size; ++ bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon); ++ break; ++ } ++ } ++ ++ /* Fill in the first two entries in the global offset table */ ++ bfd_put_32(output_bfd, ++ sdyn->output_section->vma + sdyn->output_offset, ++ sgot->contents); ++ ++ /* The runtime linker will fill this one in with the address of ++ the run-time link map */ ++ bfd_put_32(output_bfd, 0, sgot->contents + 4); ++ } ++ ++ if (sgot) ++ elf_section_data(sgot->output_section)->this_hdr.sh_entsize = 4; ++ ++ return TRUE; ++} ++ ++ ++/* AVR32-specific private ELF data */ ++ ++static bfd_boolean ++avr32_elf_set_private_flags(bfd *abfd, flagword flags); ++static bfd_boolean ++avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd); ++static bfd_boolean ++avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd); ++static bfd_boolean ++avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr); ++ ++static bfd_boolean ++avr32_elf_set_private_flags(bfd *abfd, flagword flags) ++{ ++ elf_elfheader(abfd)->e_flags = flags; ++ elf_flags_init(abfd) = TRUE; ++ ++ return TRUE; ++} ++ ++/* Copy backend specific data from one object module to another. */ ++ ++static bfd_boolean ++avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd) ++{ ++ elf_elfheader(obfd)->e_flags = elf_elfheader(ibfd)->e_flags; ++ return TRUE; ++} ++ ++/* Merge backend specific data from an object file to the output ++ object file when linking. */ ++ ++static bfd_boolean ++avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd) ++{ ++ flagword out_flags, in_flags; ++ ++ pr_debug("(0) merge_private_bfd_data: %s -> %s\n", ++ ibfd->filename, obfd->filename); ++ ++ in_flags = elf_elfheader(ibfd)->e_flags; ++ out_flags = elf_elfheader(obfd)->e_flags; ++ ++ if (elf_flags_init(obfd)) ++ { ++ /* If one of the inputs are non-PIC, the output must be ++ considered non-PIC. The same applies to linkrelax. */ ++ if (!(in_flags & EF_AVR32_PIC)) ++ out_flags &= ~EF_AVR32_PIC; ++ if (!(in_flags & EF_AVR32_LINKRELAX)) ++ out_flags &= ~EF_AVR32_LINKRELAX; ++ } ++ else ++ { ++ elf_flags_init(obfd) = TRUE; ++ out_flags = in_flags; ++ } ++ ++ elf_elfheader(obfd)->e_flags = out_flags; ++ ++ return TRUE; ++} ++ ++static bfd_boolean ++avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr) ++{ ++ FILE *file = (FILE *)ptr; ++ unsigned long flags; ++ ++ BFD_ASSERT(abfd != NULL && ptr != NULL); ++ ++ _bfd_elf_print_private_bfd_data(abfd, ptr); ++ ++ flags = elf_elfheader(abfd)->e_flags; ++ ++ fprintf(file, _("private flags = %lx:"), elf_elfheader(abfd)->e_flags); ++ ++ if (flags & EF_AVR32_PIC) ++ fprintf(file, " [PIC]"); ++ if (flags & EF_AVR32_LINKRELAX) ++ fprintf(file, " [linker relaxable]"); ++ ++ flags &= ~(EF_AVR32_PIC | EF_AVR32_LINKRELAX); ++ ++ if (flags) ++ fprintf(file, _("")); ++ ++ fputc('\n', file); ++ ++ return TRUE; ++} ++ ++ ++/* Understanding core dumps */ ++ ++static bfd_boolean ++avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note); ++static bfd_boolean ++avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note); ++ ++static bfd_boolean ++avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note) ++{ ++ /* Linux/AVR32B elf_prstatus */ ++ if (note->descsz != 148) ++ return FALSE; ++ ++ /* pr_cursig */ ++ elf_tdata(abfd)->core_signal = bfd_get_16(abfd, note->descdata + 12); ++ ++ /* pr_pid */ ++ elf_tdata(abfd)->core_pid = bfd_get_32(abfd, note->descdata + 24); ++ ++ /* Make a ".reg/999" section for pr_reg. The size is for 16 ++ general-purpose registers, SR and r12_orig (18 * 4 = 72). */ ++ return _bfd_elfcore_make_pseudosection(abfd, ".reg", 72, ++ note->descpos + 72); ++} ++ ++static bfd_boolean ++avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note) ++{ ++ /* Linux/AVR32B elf_prpsinfo */ ++ if (note->descsz != 128) ++ return FALSE; ++ ++ elf_tdata(abfd)->core_program ++ = _bfd_elfcore_strndup(abfd, note->descdata + 32, 16); ++ elf_tdata(abfd)->core_command ++ = _bfd_elfcore_strndup(abfd, note->descdata + 48, 80); ++ ++ /* Note that for some reason, a spurious space is tacked ++ onto the end of the args in some (at least one anyway) ++ implementations, so strip it off if it exists. */ ++ ++ { ++ char *command = elf_tdata (abfd)->core_command; ++ int n = strlen (command); ++ ++ if (0 < n && command[n - 1] == ' ') ++ command[n - 1] = '\0'; ++ } ++ ++ return TRUE; ++} ++ ++ ++#define ELF_ARCH bfd_arch_avr32 ++#define ELF_MACHINE_CODE EM_AVR32 ++#define ELF_MAXPAGESIZE 0x1000 ++ ++#define TARGET_BIG_SYM bfd_elf32_avr32_vec ++#define TARGET_BIG_NAME "elf32-avr32" ++ ++#define elf_backend_grok_prstatus avr32_elf_grok_prstatus ++#define elf_backend_grok_psinfo avr32_elf_grok_psinfo ++ ++/* Only RELA relocations are used */ ++#define elf_backend_may_use_rel_p 0 ++#define elf_backend_may_use_rela_p 1 ++#define elf_backend_default_use_rela_p 1 ++#define elf_backend_rela_normal 1 ++#define elf_info_to_howto_rel NULL ++#define elf_info_to_howto avr32_info_to_howto ++ ++#define bfd_elf32_bfd_copy_private_bfd_data avr32_elf_copy_private_bfd_data ++#define bfd_elf32_bfd_merge_private_bfd_data avr32_elf_merge_private_bfd_data ++#define bfd_elf32_bfd_set_private_flags avr32_elf_set_private_flags ++#define bfd_elf32_bfd_print_private_bfd_data avr32_elf_print_private_bfd_data ++#define bfd_elf32_new_section_hook avr32_elf_new_section_hook ++ ++#define elf_backend_gc_mark_hook avr32_elf_gc_mark_hook ++#define elf_backend_gc_sweep_hook avr32_elf_gc_sweep_hook ++#define elf_backend_relocate_section avr32_elf_relocate_section ++#define elf_backend_copy_indirect_symbol avr32_elf_copy_indirect_symbol ++#define elf_backend_create_dynamic_sections avr32_elf_create_dynamic_sections ++#define bfd_elf32_bfd_link_hash_table_create avr32_elf_link_hash_table_create ++#define elf_backend_adjust_dynamic_symbol avr32_elf_adjust_dynamic_symbol ++#define elf_backend_size_dynamic_sections avr32_elf_size_dynamic_sections ++#define elf_backend_finish_dynamic_symbol avr32_elf_finish_dynamic_symbol ++#define elf_backend_finish_dynamic_sections avr32_elf_finish_dynamic_sections ++ ++#define bfd_elf32_bfd_relax_section avr32_elf_relax_section ++ ++/* Find out which symbols need an entry in .got. */ ++#define elf_backend_check_relocs avr32_check_relocs ++#define elf_backend_can_refcount 1 ++#define elf_backend_can_gc_sections 1 ++#define elf_backend_plt_readonly 1 ++#define elf_backend_plt_not_loaded 1 ++#define elf_backend_want_plt_sym 0 ++#define elf_backend_plt_alignment 2 ++#define elf_backend_want_dynbss 0 ++#define elf_backend_want_got_plt 0 ++#define elf_backend_want_got_sym 1 ++#define elf_backend_got_header_size AVR32_GOT_HEADER_SIZE ++ ++#include "elf32-target.h" +diff -Nrup binutils-2.17/bfd/elf32-avr32.h binutils-2.17.atmel.1.3.0/bfd/elf32-avr32.h +--- binutils-2.17/bfd/elf32-avr32.h 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/bfd/elf32-avr32.h 2007-09-28 10:30:44.000000000 +0200 +@@ -0,0 +1,23 @@ ++/* AVR32-specific support for 32-bit ELF. ++ Copyright 2007 Atmel Corporation. ++ ++ Written by Haavard Skinnemoen, Atmel Norway, ++ ++ This file is part of BFD, the Binary File Descriptor library. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ++ ++void bfd_elf32_avr32_set_options(struct bfd_link_info *info, ++ int direct_data_refs); +diff -Nrup binutils-2.17/bfd/elf-bfd.h binutils-2.17.atmel.1.3.0/bfd/elf-bfd.h +--- binutils-2.17/bfd/elf-bfd.h 2006-03-16 13:20:15.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/bfd/elf-bfd.h 2007-03-26 10:20:30.000000000 +0200 +@@ -1307,6 +1307,10 @@ struct elf_obj_tdata + find_nearest_line. */ + struct mips_elf_find_line *find_line_info; + ++ /* Used by AVR32 ELF relaxation code. Contains an array of pointers ++ for each local symbol to the fragment where it is defined. */ ++ struct fragment **local_sym_frag; ++ + /* A place to stash dwarf1 info for this bfd. */ + struct dwarf1_debug *dwarf1_find_line_info; + +diff -Nrup binutils-2.17/bfd/libbfd.h binutils-2.17.atmel.1.3.0/bfd/libbfd.h +--- binutils-2.17/bfd/libbfd.h 2006-03-26 01:38:42.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/bfd/libbfd.h 2007-03-26 10:33:41.000000000 +0200 +@@ -1518,6 +1518,47 @@ static const char *const bfd_reloc_code_ + "BFD_RELOC_AVR_LDI", + "BFD_RELOC_AVR_6", + "BFD_RELOC_AVR_6_ADIW", ++ "BFD_RELOC_AVR32_DIFF32", ++ "BFD_RELOC_AVR32_DIFF16", ++ "BFD_RELOC_AVR32_DIFF8", ++ "BFD_RELOC_AVR32_GOT32", ++ "BFD_RELOC_AVR32_GOT16", ++ "BFD_RELOC_AVR32_GOT8", ++ "BFD_RELOC_AVR32_21S", ++ "BFD_RELOC_AVR32_16U", ++ "BFD_RELOC_AVR32_16S", ++ "BFD_RELOC_AVR32_SUB5", ++ "BFD_RELOC_AVR32_8S_EXT", ++ "BFD_RELOC_AVR32_8S", ++ "BFD_RELOC_AVR32_22H_PCREL", ++ "BFD_RELOC_AVR32_18W_PCREL", ++ "BFD_RELOC_AVR32_16B_PCREL", ++ "BFD_RELOC_AVR32_16N_PCREL", ++ "BFD_RELOC_AVR32_14UW_PCREL", ++ "BFD_RELOC_AVR32_11H_PCREL", ++ "BFD_RELOC_AVR32_10UW_PCREL", ++ "BFD_RELOC_AVR32_9H_PCREL", ++ "BFD_RELOC_AVR32_9UW_PCREL", ++ "BFD_RELOC_AVR32_GOTPC", ++ "BFD_RELOC_AVR32_GOTCALL", ++ "BFD_RELOC_AVR32_LDA_GOT", ++ "BFD_RELOC_AVR32_GOT21S", ++ "BFD_RELOC_AVR32_GOT18SW", ++ "BFD_RELOC_AVR32_GOT16S", ++ "BFD_RELOC_AVR32_32_CPENT", ++ "BFD_RELOC_AVR32_CPCALL", ++ "BFD_RELOC_AVR32_16_CP", ++ "BFD_RELOC_AVR32_9W_CP", ++ "BFD_RELOC_AVR32_ALIGN", ++ "BFD_RELOC_AVR32_14UW", ++ "BFD_RELOC_AVR32_10UW", ++ "BFD_RELOC_AVR32_10SW", ++ "BFD_RELOC_AVR32_STHH_W", ++ "BFD_RELOC_AVR32_7UW", ++ "BFD_RELOC_AVR32_6S", ++ "BFD_RELOC_AVR32_6UW", ++ "BFD_RELOC_AVR32_4UH", ++ "BFD_RELOC_AVR32_3U", + "BFD_RELOC_390_12", + "BFD_RELOC_390_GOT12", + "BFD_RELOC_390_PLT32", +diff -Nrup binutils-2.17/bfd/Makefile.am binutils-2.17.atmel.1.3.0/bfd/Makefile.am +--- binutils-2.17/bfd/Makefile.am 2006-06-23 20:17:17.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/bfd/Makefile.am 2007-03-26 10:20:30.000000000 +0200 +@@ -3,7 +3,7 @@ + AUTOMAKE_OPTIONS = 1.9 cygnus + + # Uncomment the following line when doing a release. +-RELEASE=y ++# RELEASE=y + + INCDIR = $(srcdir)/../include + CSEARCH = -I. -I$(srcdir) -I$(INCDIR) +@@ -62,6 +62,7 @@ ALL_MACHINES = \ + cpu-arc.lo \ + cpu-arm.lo \ + cpu-avr.lo \ ++ cpu-avr32.lo \ + cpu-bfin.lo \ + cpu-cr16c.lo \ + cpu-cris.lo \ +@@ -234,6 +235,7 @@ BFD32_BACKENDS = \ + elf32-arc.lo \ + elf32-arm.lo \ + elf32-avr.lo \ ++ elf32-avr32.lo \ + elf32-bfin.lo \ + elf32-cr16c.lo \ + elf32-cris.lo \ +@@ -1265,6 +1267,10 @@ elf32-bfin.lo: elf32-bfin.c $(INCDIR)/fi + elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/bfin.h \ + $(INCDIR)/elf/reloc-macros.h elf32-target.h ++elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \ ++ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ ++ $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \ ++ elf32-target.h + elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \ + $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \ + $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \ +diff -Nrup binutils-2.17/bfd/Makefile.in binutils-2.17.atmel.1.3.0/bfd/Makefile.in +--- binutils-2.17/bfd/Makefile.in 2006-06-23 20:17:19.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/bfd/Makefile.in 2007-03-26 10:30:55.000000000 +0200 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.9.5 from Makefile.am. ++# Makefile.in generated by automake 1.9.6 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -15,8 +15,6 @@ + @SET_MAKE@ + + +-SOURCES = $(libbfd_a_SOURCES) $(libbfd_la_SOURCES) +- + srcdir = @srcdir@ + top_srcdir = @top_srcdir@ + VPATH = @srcdir@ +@@ -141,6 +139,7 @@ EXEEXT = @EXEEXT@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + GMOFILES = @GMOFILES@ + GMSGFMT = @GMSGFMT@ ++GREP = @GREP@ + GT_NO = @GT_NO@ + GT_YES = @GT_YES@ + HDEFINES = @HDEFINES@ +@@ -190,10 +189,7 @@ WARN_CFLAGS = @WARN_CFLAGS@ + WIN32LDFLAGS = @WIN32LDFLAGS@ + WIN32LIBADD = @WIN32LIBADD@ + XGETTEXT = @XGETTEXT@ +-ac_ct_AR = @ac_ct_AR@ + ac_ct_CC = @ac_ct_CC@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ + all_backends = @all_backends@ + am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ + am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +@@ -219,6 +215,7 @@ build_vendor = @build_vendor@ + datadir = @datadir@ + datarootdir = @datarootdir@ + docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ +@@ -233,12 +230,15 @@ install_sh = @install_sh@ + l = @l@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ +@@ -253,7 +253,7 @@ wordsize = @wordsize@ + AUTOMAKE_OPTIONS = 1.9 cygnus + + # Uncomment the following line when doing a release. +-RELEASE=y ++# RELEASE=y + INCDIR = $(srcdir)/../include + CSEARCH = -I. -I$(srcdir) -I$(INCDIR) + MKDEP = gcc -MM +@@ -298,6 +298,7 @@ ALL_MACHINES = \ + cpu-arc.lo \ + cpu-arm.lo \ + cpu-avr.lo \ ++ cpu-avr32.lo \ + cpu-bfin.lo \ + cpu-cr16c.lo \ + cpu-cris.lo \ +@@ -471,6 +472,7 @@ BFD32_BACKENDS = \ + elf32-arc.lo \ + elf32-arm.lo \ + elf32-avr.lo \ ++ elf32-avr32.lo \ + elf32-bfin.lo \ + elf32-cr16c.lo \ + elf32-cris.lo \ +@@ -1831,6 +1833,10 @@ elf32-bfin.lo: elf32-bfin.c $(INCDIR)/fi + elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/bfin.h \ + $(INCDIR)/elf/reloc-macros.h elf32-target.h ++elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \ ++ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ ++ $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \ ++ elf32-target.h + elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \ + $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \ + $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \ +diff -Nrup binutils-2.17/bfd/reloc.c binutils-2.17.atmel.1.3.0/bfd/reloc.c +--- binutils-2.17/bfd/reloc.c 2006-03-26 01:38:42.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/bfd/reloc.c 2007-03-26 10:20:30.000000000 +0200 +@@ -3714,6 +3714,129 @@ ENUMDOC + instructions + + ENUM ++ BFD_RELOC_AVR32_DIFF32 ++ENUMX ++ BFD_RELOC_AVR32_DIFF16 ++ENUMX ++ BFD_RELOC_AVR32_DIFF8 ++ENUMDOC ++ Difference between two labels: L2 - L1. The value of L1 is encoded ++ as sym + addend, while the initial difference after assembly is ++ inserted into the object file by the assembler. ++ENUM ++ BFD_RELOC_AVR32_GOT32 ++ENUMX ++ BFD_RELOC_AVR32_GOT16 ++ENUMX ++ BFD_RELOC_AVR32_GOT8 ++ENUMDOC ++ Reference to a symbol through the Global Offset Table. The linker ++ will allocate an entry for symbol in the GOT and insert the offset ++ of this entry as the relocation value. ++ENUM ++ BFD_RELOC_AVR32_21S ++ENUMX ++ BFD_RELOC_AVR32_16U ++ENUMX ++ BFD_RELOC_AVR32_16S ++ENUMX ++ BFD_RELOC_AVR32_SUB5 ++ENUMX ++ BFD_RELOC_AVR32_8S_EXT ++ENUMX ++ BFD_RELOC_AVR32_8S ++ENUMDOC ++ Normal (non-pc-relative) code relocations. Alignment and signedness ++ is indicated by the suffixes. S means signed, U means unsigned. W ++ means word-aligned, H means halfword-aligned, neither means ++ byte-aligned (no alignment.) SUB5 is the same relocation as 16S. ++ENUM ++ BFD_RELOC_AVR32_22H_PCREL ++ENUMX ++ BFD_RELOC_AVR32_18W_PCREL ++ENUMX ++ BFD_RELOC_AVR32_16B_PCREL ++ENUMX ++ BFD_RELOC_AVR32_16N_PCREL ++ENUMX ++ BFD_RELOC_AVR32_14UW_PCREL ++ENUMX ++ BFD_RELOC_AVR32_11H_PCREL ++ENUMX ++ BFD_RELOC_AVR32_10UW_PCREL ++ENUMX ++ BFD_RELOC_AVR32_9H_PCREL ++ENUMX ++ BFD_RELOC_AVR32_9UW_PCREL ++ENUMDOC ++ PC-relative relocations are signed if neither 'U' nor 'S' is ++ specified. However, we explicitly tack on a 'B' to indicate no ++ alignment, to avoid confusion with data relocs. All of these resolve ++ to sym + addend - offset, except the one with 'N' (negated) suffix. ++ This particular one resolves to offset - sym - addend. ++ENUM ++ BFD_RELOC_AVR32_GOTPC ++ENUMDOC ++ Subtract the link-time address of the GOT from (symbol + addend) ++ and insert the result. ++ENUM ++ BFD_RELOC_AVR32_GOTCALL ++ENUMX ++ BFD_RELOC_AVR32_LDA_GOT ++ENUMX ++ BFD_RELOC_AVR32_GOT21S ++ENUMX ++ BFD_RELOC_AVR32_GOT18SW ++ENUMX ++ BFD_RELOC_AVR32_GOT16S ++ENUMDOC ++ Reference to a symbol through the GOT. The linker will allocate an ++ entry for symbol in the GOT and insert the offset of this entry as ++ the relocation value. addend must be zero. As usual, 'S' means ++ signed, 'W' means word-aligned, etc. ++ENUM ++ BFD_RELOC_AVR32_32_CPENT ++ENUMDOC ++ 32-bit constant pool entry. I don't think 8- and 16-bit entries make ++ a whole lot of sense. ++ENUM ++ BFD_RELOC_AVR32_CPCALL ++ENUMX ++ BFD_RELOC_AVR32_16_CP ++ENUMX ++ BFD_RELOC_AVR32_9W_CP ++ENUMDOC ++ Constant pool references. Some of these relocations are signed, ++ others are unsigned. It doesn't really matter, since the constant ++ pool always comes after the code that references it. ++ENUM ++ BFD_RELOC_AVR32_ALIGN ++ENUMDOC ++ sym must be the absolute symbol. The addend specifies the alignment ++ order, e.g. if addend is 2, the linker must add padding so that the ++ next address is aligned to a 4-byte boundary. ++ENUM ++ BFD_RELOC_AVR32_14UW ++ENUMX ++ BFD_RELOC_AVR32_10UW ++ENUMX ++ BFD_RELOC_AVR32_10SW ++ENUMX ++ BFD_RELOC_AVR32_STHH_W ++ENUMX ++ BFD_RELOC_AVR32_7UW ++ENUMX ++ BFD_RELOC_AVR32_6S ++ENUMX ++ BFD_RELOC_AVR32_6UW ++ENUMX ++ BFD_RELOC_AVR32_4UH ++ENUMX ++ BFD_RELOC_AVR32_3U ++ENUMDOC ++ Code relocations that will never make it to the output file. ++ ++ENUM + BFD_RELOC_390_12 + ENUMDOC + Direct 12 bit. +diff -Nrup binutils-2.17/bfd/targets.c binutils-2.17.atmel.1.3.0/bfd/targets.c +--- binutils-2.17/bfd/targets.c 2006-04-05 14:41:57.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/bfd/targets.c 2007-03-26 10:20:30.000000000 +0200 +@@ -553,6 +553,7 @@ extern const bfd_target b_out_vec_little + extern const bfd_target bfd_efi_app_ia32_vec; + extern const bfd_target bfd_efi_app_ia64_vec; + extern const bfd_target bfd_elf32_avr_vec; ++extern const bfd_target bfd_elf32_avr32_vec; + extern const bfd_target bfd_elf32_bfin_vec; + extern const bfd_target bfd_elf32_bfinfdpic_vec; + extern const bfd_target bfd_elf32_big_generic_vec; +@@ -855,6 +856,7 @@ static const bfd_target * const _bfd_tar + &bfd_efi_app_ia64_vec, + #endif + &bfd_elf32_avr_vec, ++ &bfd_elf32_avr32_vec, + &bfd_elf32_bfin_vec, + &bfd_elf32_bfinfdpic_vec, + +diff -Nrup binutils-2.17/binutils/config.in binutils-2.17.atmel.1.3.0/binutils/config.in +--- binutils-2.17/binutils/config.in 2006-02-14 09:59:10.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/binutils/config.in 2007-03-26 10:32:11.000000000 +0200 +@@ -218,7 +218,7 @@ + + /* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be +- automatically deduced at run-time. ++ automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +@@ -260,8 +260,8 @@ + #undef inline + #endif + +-/* Define to `long' if does not define. */ ++/* Define to `long int' if does not define. */ + #undef off_t + +-/* Define to `unsigned' if does not define. */ ++/* Define to `unsigned int' if does not define. */ + #undef size_t +diff -Nrup binutils-2.17/binutils/configure binutils-2.17.atmel.1.3.0/binutils/configure +--- binutils-2.17/binutils/configure 2006-04-06 23:49:29.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/binutils/configure 2007-03-26 10:32:09.000000000 +0200 +@@ -1,25 +1,54 @@ + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +-# Generated by GNU Autoconf 2.59. ++# Generated by GNU Autoconf 2.61. + # +-# Copyright (C) 2003 Free Software Foundation, Inc. ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++# 2002, 2003, 2004, 2005, 2006 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 Bourne compatible ++# 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=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix ++ 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 ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh + fi +-DUALCASE=1; export DUALCASE # for MKS sh + + # Support unset when possible. + if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +@@ -29,8 +58,43 @@ else + 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.) ++as_nl=' ++' ++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 ++ 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. +-$as_unset ENV MAIL MAILPATH ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done + PS1='$ ' + PS2='> ' + PS4='+ ' +@@ -44,18 +108,19 @@ do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else +- $as_unset $as_var ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi + done + + # Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then ++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 ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename + else + as_basename=false +@@ -63,157 +128,388 @@ fi + + + # Name of the executable. +-as_me=`$as_basename "$0" || ++as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + ++# CDPATH. ++$as_unset CDPATH + +-# PATH needs CR, and LINENO needs CR and PATH. +-# 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 + +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh ++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 + +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- 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 ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi + +- ;; +- 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 +- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') ++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=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in ++ case $as_dir in + /*) +- if ("$as_dir/$as_base" -c ' ++ 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=: ++ # Zsh 3.x and 4.x performs 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=: ++ # Zsh 3.x and 4.x performs 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 +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac ++ 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 autoconf@gnu.org about your system, ++ echo including any error possibly output before this ++ echo message ++} ++ ++ ++ ++ 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 before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. ++ # 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 +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | ++ # 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 +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, ++ s/-\n.*// + ' >$as_me.lineno && +- chmod +x $as_me.lineno || ++ chmod +x "$as_me.lineno" || + { 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 sensible to this). +- . ./$as_me.lineno ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" + # Exit status is that of the last command. + exit + } + + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; ++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; then ++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 ++fi + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links ++ 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' +- else +- as_ln_s='ln -s' +- fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +-rm -f conf$$ conf$$.exe conf$$.file ++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=: +@@ -222,7 +518,28 @@ else + as_mkdir_p=false + fi + +-as_executable_p="test -f" ++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'" +@@ -231,39 +548,27 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P + as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH + ++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` + +-exec 6>&1 +- + # + # 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} + +-# Maximum number of lines to put in a shell here document. +-# This variable seems obsolete. It should probably be removed, and +-# only ac_max_sed_lines should be used. +-: ${ac_max_here_lines=38} +- + # Identity of this package. + PACKAGE_NAME= + PACKAGE_TARNAME= +@@ -275,42 +580,193 @@ ac_unique_file="ar.c" + # Factoring default headers for most tests. + ac_includes_default="\ + #include +-#if HAVE_SYS_TYPES_H ++#ifdef HAVE_SYS_TYPES_H + # include + #endif +-#if HAVE_SYS_STAT_H ++#ifdef HAVE_SYS_STAT_H + # include + #endif +-#if STDC_HEADERS ++#ifdef STDC_HEADERS + # include + # include + #else +-# if HAVE_STDLIB_H ++# ifdef HAVE_STDLIB_H + # include + # endif + #endif +-#if HAVE_STRING_H +-# if !STDC_HEADERS && HAVE_MEMORY_H ++#ifdef HAVE_STRING_H ++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H + # include + # endif + # include + #endif +-#if HAVE_STRINGS_H ++#ifdef HAVE_STRINGS_H + # include + #endif +-#if HAVE_INTTYPES_H ++#ifdef HAVE_INTTYPES_H + # include +-#else +-# if HAVE_STDINT_H +-# include +-# endif + #endif +-#if HAVE_UNISTD_H ++#ifdef HAVE_STDINT_H ++# include ++#endif ++#ifdef HAVE_UNISTD_H + # include + #endif" + +-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE LN_S RANLIB ac_ct_RANLIB LIBTOOL WARN_CFLAGS NO_WERROR YACC LEX LEXLIB LEX_OUTPUT_ROOT CPP EGREP ALLOCA USE_NLS MSGFMT GMSGFMT XGETTEXT USE_INCLUDED_LIBINTL CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLDEPS INTLLIBS INTLOBJS POFILES POSUB INCLUDE_LOCALE_H GT_NO GT_YES MKINSTALLDIRS l MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT HDEFINES AR CC_FOR_BUILD EXEEXT_FOR_BUILD DEMANGLER_NAME NLMCONV_DEFS BUILD_NLMCONV BUILD_SRCONV BUILD_DLLTOOL DLLTOOL_DEFS BUILD_WINDRES BUILD_DLLWRAP BUILD_MISC OBJDUMP_DEFS EMULATION EMULATION_VECTOR datarootdir docdir htmldir LIBOBJS LTLIBOBJS' ++ac_subst_vars='SHELL ++PATH_SEPARATOR ++PACKAGE_NAME ++PACKAGE_TARNAME ++PACKAGE_VERSION ++PACKAGE_STRING ++PACKAGE_BUGREPORT ++exec_prefix ++prefix ++program_transform_name ++bindir ++sbindir ++libexecdir ++datarootdir ++datadir ++sysconfdir ++sharedstatedir ++localstatedir ++includedir ++oldincludedir ++docdir ++infodir ++htmldir ++dvidir ++pdfdir ++psdir ++libdir ++localedir ++mandir ++DEFS ++ECHO_C ++ECHO_N ++ECHO_T ++LIBS ++build_alias ++host_alias ++target_alias ++build ++build_cpu ++build_vendor ++build_os ++host ++host_cpu ++host_vendor ++host_os ++target ++target_cpu ++target_vendor ++target_os ++CC ++CFLAGS ++LDFLAGS ++CPPFLAGS ++ac_ct_CC ++EXEEXT ++OBJEXT ++INSTALL_PROGRAM ++INSTALL_SCRIPT ++INSTALL_DATA ++CYGPATH_W ++PACKAGE ++VERSION ++ACLOCAL ++AUTOCONF ++AUTOMAKE ++AUTOHEADER ++MAKEINFO ++install_sh ++STRIP ++INSTALL_STRIP_PROGRAM ++mkdir_p ++AWK ++SET_MAKE ++am__leading_dot ++AMTAR ++am__tar ++am__untar ++DEPDIR ++am__include ++am__quote ++AMDEP_TRUE ++AMDEP_FALSE ++AMDEPBACKSLASH ++CCDEPMODE ++am__fastdepCC_TRUE ++am__fastdepCC_FALSE ++LN_S ++RANLIB ++LIBTOOL ++WARN_CFLAGS ++NO_WERROR ++YACC ++YFLAGS ++LEX ++LEX_OUTPUT_ROOT ++LEXLIB ++CPP ++GREP ++EGREP ++ALLOCA ++USE_NLS ++MSGFMT ++GMSGFMT ++XGETTEXT ++USE_INCLUDED_LIBINTL ++CATALOGS ++CATOBJEXT ++DATADIRNAME ++GMOFILES ++INSTOBJEXT ++INTLDEPS ++INTLLIBS ++INTLOBJS ++POFILES ++POSUB ++INCLUDE_LOCALE_H ++GT_NO ++GT_YES ++MKINSTALLDIRS ++l ++MAINTAINER_MODE_TRUE ++MAINTAINER_MODE_FALSE ++MAINT ++HDEFINES ++AR ++CC_FOR_BUILD ++EXEEXT_FOR_BUILD ++DEMANGLER_NAME ++NLMCONV_DEFS ++BUILD_NLMCONV ++BUILD_SRCONV ++BUILD_DLLTOOL ++DLLTOOL_DEFS ++BUILD_WINDRES ++BUILD_DLLWRAP ++BUILD_MISC ++OBJDUMP_DEFS ++EMULATION ++EMULATION_VECTOR ++LIBOBJS ++LTLIBOBJS' + ac_subst_files='' ++ ac_precious_vars='build_alias ++host_alias ++target_alias ++CC ++CFLAGS ++LDFLAGS ++LIBS ++CPPFLAGS ++YACC ++YFLAGS ++CPP' ++ + + # Initialize some variables set by options. + ac_init_help= +@@ -337,34 +793,48 @@ x_libraries=NONE + # 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' +-datadir='${prefix}/share' ++datarootdir='${prefix}/share' ++datadir='${datarootdir}' + sysconfdir='${prefix}/etc' + sharedstatedir='${prefix}/com' + localstatedir='${prefix}/var' +-libdir='${exec_prefix}/lib' + includedir='${prefix}/include' + oldincludedir='/usr/include' +-infodir='${prefix}/info' +-mandir='${prefix}/man' ++docdir='${datarootdir}/doc/${PACKAGE}' ++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" ++ eval $ac_prev=\$ac_option + ac_prev= + continue + fi + +- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` ++ 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_option in ++ case $ac_dashdash$ac_option in ++ --) ++ ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; +@@ -386,33 +856,45 @@ do + --config-cache | -C) + cache_file=config.cache ;; + +- -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ++ -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; +- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ +- | --da=*) ++ -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_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- eval "enable_$ac_feature=no" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=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_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "enable_$ac_feature='$ac_optarg'" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ +@@ -439,6 +921,12 @@ do + -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 ;; +@@ -463,13 +951,16 @@ do + | --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 | --local | --loca | --loc | --lo) ++ | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ +- | --localstate=* | --localstat=* | --localsta=* | --localst=* \ +- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) ++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) +@@ -534,6 +1025,16 @@ do + | --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 ;; +@@ -586,24 +1087,20 @@ do + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package| sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "with_$ac_package='$ac_optarg'" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package | sed 's/-/_/g'` +- eval "with_$ac_package=no" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. +@@ -634,8 +1131,7 @@ Try \`$0 --help' for more information." + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } +- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` +- eval "$ac_envvar='$ac_optarg'" ++ eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) +@@ -655,27 +1151,19 @@ if test -n "$ac_prev"; then + { (exit 1); exit 1; }; } + fi + +-# Be sure to have absolute paths. +-for ac_var in exec_prefix prefix +-do +- eval ac_val=$`echo $ac_var` +- case $ac_val in +- [\\/$]* | ?:[\\/]* | NONE | '' ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# Be sure to have absolute paths. +-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ +- localstatedir libdir includedir oldincludedir infodir mandir ++# Be sure to have absolute directory names. ++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=$`echo $ac_var` ++ eval ac_val=\$$ac_var + case $ac_val in +- [\\/$]* | ?:[\\/]* ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; ++ [\\/$]* | ?:[\\/]* ) continue;; ++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac ++ { 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' +@@ -702,74 +1190,76 @@ test -n "$host_alias" && ac_tool_prefix= + 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 .` || ++ { echo "$as_me: error: Working directory cannot be determined" >&2 ++ { (exit 1); exit 1; }; } ++test "X$ac_ls_di" = "X$ac_pwd_ls_di" || ++ { 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 its parent. +- ac_confdir=`(dirname "$0") 2>/dev/null || ++ # Try the directory containing this script, then the parent directory. ++ ac_confdir=`$as_dirname -- "$0" || + $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X"$0" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ 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 ++ if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi + else + ac_srcdir_defaulted=no + fi +-if test ! -r $srcdir/$ac_unique_file; then +- if test "$ac_srcdir_defaulted" = yes; then +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 +- { (exit 1); exit 1; }; } +- else +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +- { (exit 1); exit 1; }; } +- fi +-fi +-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || +- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +- { (exit 1); exit 1; }; } +-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +-ac_env_build_alias_set=${build_alias+set} +-ac_env_build_alias_value=$build_alias +-ac_cv_env_build_alias_set=${build_alias+set} +-ac_cv_env_build_alias_value=$build_alias +-ac_env_host_alias_set=${host_alias+set} +-ac_env_host_alias_value=$host_alias +-ac_cv_env_host_alias_set=${host_alias+set} +-ac_cv_env_host_alias_value=$host_alias +-ac_env_target_alias_set=${target_alias+set} +-ac_env_target_alias_value=$target_alias +-ac_cv_env_target_alias_set=${target_alias+set} +-ac_cv_env_target_alias_value=$target_alias +-ac_env_CC_set=${CC+set} +-ac_env_CC_value=$CC +-ac_cv_env_CC_set=${CC+set} +-ac_cv_env_CC_value=$CC +-ac_env_CFLAGS_set=${CFLAGS+set} +-ac_env_CFLAGS_value=$CFLAGS +-ac_cv_env_CFLAGS_set=${CFLAGS+set} +-ac_cv_env_CFLAGS_value=$CFLAGS +-ac_env_LDFLAGS_set=${LDFLAGS+set} +-ac_env_LDFLAGS_value=$LDFLAGS +-ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +-ac_cv_env_LDFLAGS_value=$LDFLAGS +-ac_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_env_CPPFLAGS_value=$CPPFLAGS +-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_cv_env_CPPFLAGS_value=$CPPFLAGS +-ac_env_CPP_set=${CPP+set} +-ac_env_CPP_value=$CPP +-ac_cv_env_CPP_set=${CPP+set} +-ac_cv_env_CPP_value=$CPP ++if test ! -r "$srcdir/$ac_unique_file"; then ++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." ++ { 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" || { 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. +@@ -798,9 +1288,6 @@ Configuration: + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +-_ACEOF +- +- cat <<_ACEOF + Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] +@@ -818,15 +1305,22 @@ Fine tuning of the installation director + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] +- --datadir=DIR read-only architecture-independent data [PREFIX/share] + --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] +- --infodir=DIR info documentation [PREFIX/info] +- --mandir=DIR man documentation [PREFIX/man] ++ --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/PACKAGE] ++ --htmldir=DIR html documentation [DOCDIR] ++ --dvidir=DIR dvi documentation [DOCDIR] ++ --pdfdir=DIR pdf documentation [DOCDIR] ++ --psdir=DIR ps documentation [DOCDIR] + _ACEOF + + cat <<\_ACEOF +@@ -876,126 +1370,100 @@ Some influential environment variables: + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory +- CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have +- headers in a nonstandard directory ++ LIBS libraries to pass to the linker, e.g. -l ++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if ++ you have headers in a nonstandard directory ++ YACC The `Yet Another C Compiler' implementation to use. Defaults to ++ the first program found out of: `bison -y', `byacc', `yacc'. ++ YFLAGS The list of arguments that will be passed by default to $YACC. ++ This script will default YFLAGS to the empty string to avoid a ++ default value of `-d' given by some make applications. + CPP C preprocessor + + 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. +- ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue +- test -d $ac_dir || continue ++ test -d "$ac_dir" || continue + ac_builddir=. + +-if test "$ac_dir" != .; then ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`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 +- .) # No --srcdir option. We are building in place. ++ .) # We are building in place. + ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. ++ 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 ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +- +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac +- +- cd $ac_dir +- # Check for guested configure; otherwise get Cygnus style 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 +- elif test -f $ac_srcdir/configure.ac || +- test -f $ac_srcdir/configure.in; then +- echo +- $ac_configure --help ++ 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 + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 +- fi +- cd $ac_popdir ++ fi || ac_status=$? ++ cd "$ac_pwd" || { ac_status=$?; break; } + done + fi + +-test -n "$ac_init_help" && exit 0 ++test -n "$ac_init_help" && exit $ac_status + if $ac_init_version; then + cat <<\_ACEOF ++configure ++generated by GNU Autoconf 2.61 + +-Copyright (C) 2003 Free Software Foundation, Inc. ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++2002, 2003, 2004, 2005, 2006 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 0 ++ exit + fi +-exec 5>config.log +-cat >&5 <<_ACEOF ++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 $as_me, which was +-generated by GNU Autoconf 2.59. Invocation command line was ++generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + + _ACEOF ++exec 5>>config.log + { + cat <<_ASUNAME + ## --------- ## +@@ -1014,7 +1482,7 @@ uname -v = `(uname -v) 2>/dev/null || ec + /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` +-hostinfo = `(hostinfo) 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` +@@ -1028,6 +1496,7 @@ do + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" + done ++IFS=$as_save_IFS + + } >&5 + +@@ -1049,7 +1518,6 @@ _ACEOF + ac_configure_args= + ac_configure_args0= + ac_configure_args1= +-ac_sep= + ac_must_keep_next=false + for ac_pass in 1 2 + do +@@ -1060,7 +1528,7 @@ do + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ++ *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in +@@ -1082,9 +1550,7 @@ do + -* ) ac_must_keep_next=true ;; + esac + fi +- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" +- # Get rid of the leading space. +- ac_sep=" " ++ ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +@@ -1095,8 +1561,8 @@ $as_unset ac_configure_args1 || test "${ + # 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: Be sure not to use single quotes in there, as some shells, +-# such as our DU 5.0 friend, will then `close' the trap. ++# 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. + { +@@ -1109,20 +1575,34 @@ trap 'exit_status=$? + _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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done + (set) 2>&1 | +- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ 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" +- ;; ++ "s/'\''/'\''\\\\'\'''\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ++ ;; #( + *) +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} ++ esac | ++ sort ++) + echo + + cat <<\_ASBOX +@@ -1133,22 +1613,28 @@ _ASBOX + echo + for ac_var in $ac_subst_vars + do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +-## ------------- ## +-## Output files. ## +-## ------------- ## ++## ------------------- ## ++## File substitutions. ## ++## ------------------- ## + _ASBOX + echo + for ac_var in $ac_subst_files + do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi +@@ -1160,26 +1646,24 @@ _ASBOX + ## ----------- ## + _ASBOX + echo +- sed "/^$/d" confdefs.h | sort ++ cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 +- rm -f core *.core && +- rm -rf conftest* confdefs* conf$$* $ac_clean_files && ++ rm -f core *.core core.conftest.* && ++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +- ' 0 ++' 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 -rf conftest* confdefs.h +-# AIX cpp loses on an empty file, so make sure it contains at least a newline. +-echo >confdefs.h ++rm -f -r conftest* confdefs.h + + # Predefined preprocessor variables. + +@@ -1210,14 +1694,17 @@ _ACEOF + + # Let the site file select an alternate cache file if it wants to. + # Prefer explicitly selected file to automatically selected ones. +-if test -z "$CONFIG_SITE"; then +- if test "x$prefix" != xNONE; then +- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" +- else +- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +- fi ++if test -n "$CONFIG_SITE"; then ++ set x "$CONFIG_SITE" ++elif test "x$prefix" != xNONE; then ++ set x "$prefix/share/config.site" "$prefix/etc/config.site" ++else ++ set x "$ac_default_prefix/share/config.site" \ ++ "$ac_default_prefix/etc/config.site" + fi +-for ac_site_file in $CONFIG_SITE; do ++shift ++for ac_site_file ++do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 + echo "$as_me: loading site script $ac_site_file" >&6;} +@@ -1233,8 +1720,8 @@ if test -r "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 + echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; + esac + fi + else +@@ -1246,12 +1733,11 @@ fi + # Check that the precious variables saved in the cache have kept the same + # value. + ac_cache_corrupted=false +-for ac_var in `(set) 2>&1 | +- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do ++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" ++ 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,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +@@ -1276,8 +1762,7 @@ echo "$as_me: current value: $ac_new_v + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in +@@ -1294,12 +1779,6 @@ echo "$as_me: error: run \`make distclea + { (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 +- + + + +@@ -1316,108 +1795,163 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ++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 $srcdir/.. $srcdir/../..; do +- if test -f $ac_dir/install-sh; then ++for ac_dir in "$srcdir" "$srcdir/.." "$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 ++ 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 ++ 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 +- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} ++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 ++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } + fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. ++ ++# 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. +-$ac_config_sub sun4 >/dev/null 2>&1 || +- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +-echo "$as_me: error: cannot run $ac_config_sub" >&2;} ++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || ++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 ++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +-echo "$as_me:$LINENO: checking build system type" >&5 +-echo $ECHO_N "checking build system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking build system type" >&5 ++echo $ECHO_N "checking build system type... $ECHO_C" >&6; } + if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_build_alias=$build_alias +-test -z "$ac_cv_build_alias" && +- ac_cv_build_alias=`$ac_config_guess` +-test -z "$ac_cv_build_alias" && ++ 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 && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 + echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} ++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + + fi +-echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +-echo "${ECHO_T}$ac_cv_build" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 ++echo "${ECHO_T}$ac_cv_build" >&6; } ++case $ac_cv_build in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 ++echo "$as_me: error: invalid value of canonical build" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + build=$ac_cv_build +-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++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 + + +-echo "$as_me:$LINENO: checking host system type" >&5 +-echo $ECHO_N "checking host system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking host system type" >&5 ++echo $ECHO_N "checking host system type... $ECHO_C" >&6; } + if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_host_alias=$host_alias +-test -z "$ac_cv_host_alias" && +- ac_cv_host_alias=$ac_cv_build_alias +-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} ++ 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` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } ++fi + + fi +-echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +-echo "${ECHO_T}$ac_cv_host" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 ++echo "${ECHO_T}$ac_cv_host" >&6; } ++case $ac_cv_host in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 ++echo "$as_me: error: invalid value of canonical host" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + host=$ac_cv_host +-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++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 + + +-echo "$as_me:$LINENO: checking target system type" >&5 +-echo $ECHO_N "checking target system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking target system type" >&5 ++echo $ECHO_N "checking target system type... $ECHO_C" >&6; } + if test "${ac_cv_target+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_target_alias=$target_alias +-test "x$ac_cv_target_alias" = "x" && +- ac_cv_target_alias=$ac_cv_host_alias +-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} ++ if test "x$target_alias" = x; then ++ ac_cv_target=$ac_cv_host ++else ++ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} + { (exit 1); exit 1; }; } ++fi + + fi +-echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +-echo "${ECHO_T}$ac_cv_target" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5 ++echo "${ECHO_T}$ac_cv_target" >&6; } ++case $ac_cv_target in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 ++echo "$as_me: error: invalid value of canonical target" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + target=$ac_cv_target +-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_target ++shift ++target_cpu=$1 ++target_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++target_os=$* ++IFS=$ac_save_IFS ++case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + + # The aliases save the names the user supplied, while $host etc. +@@ -1434,8 +1968,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1448,32 +1982,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}gcc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1486,36 +2022,51 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="gcc" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + else + CC="$ac_cv_prog_CC" + fi + + if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1528,74 +2079,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}cc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi + ++ fi + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1609,7 +2120,7 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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 +@@ -1620,6 +2131,7 @@ do + 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. +@@ -1637,22 +2149,23 @@ fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1665,36 +2178,38 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="$ac_tool_prefix$ac_prog" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CC" && break + done + fi + if test -z "$CC"; then + ac_ct_CC=$CC +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1707,29 +2222,45 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="$ac_prog" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CC" && break + done + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + fi + + fi +@@ -1742,21 +2273,35 @@ See \`config.log' for more details." >&2 + { (exit 1); exit 1; }; } + + # Provide some information about the compiler. +-echo "$as_me:$LINENO:" \ +- "checking for C compiler version" >&5 ++echo "$as_me:$LINENO: checking for C compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +@@ -1781,47 +2326,77 @@ ac_clean_files="$ac_clean_files a.out a. + # Try to create an executable without -o first, disregard a.out. + # It will help us diagnose broken compilers, and finding out an intuition + # of exeext. +-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 ++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } + ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 +- (eval $ac_link_default) 2>&5 ++# ++# List of possible output files, starting from the most likely. ++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) ++# only as a last resort. b.out is created by i960 compilers. ++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' ++# ++# The IRIX 6 linker writes into existing files which may not be ++# executable, retaining their permissions. Remove them first so a ++# subsequent execution test works. ++ac_rmfiles= ++for ac_file in $ac_files ++do ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; ++ * ) ac_rmfiles="$ac_rmfiles $ac_file";; ++ esac ++done ++rm -f $ac_rmfiles ++ ++if { (ac_try="$ac_link_default" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- # Find the output, starting from the most likely. This scheme is +-# not robust to junk in `.', hence go to wildcards (a.*) only as a last +-# resort. +- +-# Be careful to initialize this variable, since it used to be cached. +-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +-ac_cv_exeext= +-# b.out is created by i960 compilers. +-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out ++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. ++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' ++# in a Makefile. We should not override ac_cv_exeext if it was cached, ++# so that the user can short-circuit this test for compilers unknown to ++# Autoconf. ++for ac_file in $ac_files '' + do + test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) +- ;; +- conftest.$ac_ext ) +- # This is the source file. ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) +- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- # FIXME: I believe we export ac_cv_exeext for Libtool, +- # but it would be cool to find out if it's true. Does anybody +- # maintain Libtool? --akim. +- export ac_cv_exeext ++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ then :; else ++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ fi ++ # We set ac_cv_exeext here because the later test for it is not ++ # safe: cross compilers may not add the suffix if given an `-o' ++ # argument, so we may need to know it at that point already. ++ # Even if this section looks crufty: it has the advantage of ++ # actually working. + break;; + * ) + break;; + esac + done ++test "$ac_cv_exeext" = no && ac_cv_exeext= ++ + else ++ ac_file='' ++fi ++ ++{ echo "$as_me:$LINENO: result: $ac_file" >&5 ++echo "${ECHO_T}$ac_file" >&6; } ++if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +@@ -1833,19 +2408,21 @@ See \`config.log' for more details." >&2 + fi + + ac_exeext=$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_file" >&5 +-echo "${ECHO_T}$ac_file" >&6 + +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 ++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. + if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -1864,22 +2441,27 @@ See \`config.log' for more details." >&2 + fi + fi + fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + + rm -f a.out a.exe conftest$ac_cv_exeext b.out + ac_clean_files=$ac_clean_files_save +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +-echo "$as_me:$LINENO: result: $cross_compiling" >&5 +-echo "${ECHO_T}$cross_compiling" >&6 +- +-echo "$as_me:$LINENO: checking for suffix of executables" >&5 +-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 ++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 ++echo "${ECHO_T}$cross_compiling" >&6; } ++ ++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 ++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +@@ -1890,9 +2472,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l + for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- export ac_cv_exeext + break;; + * ) break;; + esac +@@ -1906,14 +2487,14 @@ See \`config.log' for more details." >&2 + fi + + rm -f conftest$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +-echo "${ECHO_T}$ac_cv_exeext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 ++echo "${ECHO_T}$ac_cv_exeext" >&6; } + + rm -f conftest.$ac_ext + EXEEXT=$ac_cv_exeext + ac_exeext=$EXEEXT +-echo "$as_me:$LINENO: checking for suffix of object files" >&5 +-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 ++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } + if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1933,14 +2514,20 @@ main () + } + _ACEOF + rm -f conftest.o conftest.obj +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do ++ for ac_file in conftest.o conftest.obj conftest.*; do ++ test -f "$ac_file" || continue; + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +@@ -1958,12 +2545,12 @@ fi + + rm -f conftest.$ac_cv_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +-echo "${ECHO_T}$ac_cv_objext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 ++echo "${ECHO_T}$ac_cv_objext" >&6; } + OBJEXT=$ac_cv_objext + ac_objext=$OBJEXT +-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } + if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1986,50 +2573,49 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_compiler_gnu=no ++ ac_compiler_gnu=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } + GCC=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CFLAGS=${CFLAGS+set} + ac_save_CFLAGS=$CFLAGS +-CFLAGS="-g" +-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ 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 +@@ -2045,38 +2631,118 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&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 ++ 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 "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ : ++else ++ 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 "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (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 + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_prog_cc_g=no ++ ++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 conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_c_werror_flag=$ac_save_c_werror_flag + fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++echo "${ECHO_T}$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 +@@ -2092,12 +2758,12 @@ else + CFLAGS= + fi + fi +-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_stdc+set}" = set; then ++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_prog_cc_stdc=no ++ ac_cv_prog_cc_c89=no + ac_save_CC=$CC + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -2131,12 +2797,17 @@ static char *f (char * (*g) (char **, in + /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated +- as 'x'. The following induces an error, until -std1 is added to get ++ as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something +- that's true only with -std1. */ ++ that's true only with -std. */ + int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ + int test (int i, double x); + struct s1 {int (*f) (int a);}; + struct s2 {int (*f) (double a);}; +@@ -2151,335 +2822,144 @@ return f (e, argv, 0) != argv[0] || f + return 0; + } + _ACEOF +-# Don't try gcc -ansi; that turns off useful extensions and +-# breaks some systems' header files. +-# AIX -qlanglvl=ansi +-# Ultrix and OSF/1 -std1 +-# HP-UX 10.20 and later -Ae +-# HP-UX older versions -Aa -D_HPUX_SOURCE +-# SVR4 -Xc -D__EXTENSIONS__ +-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" + do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_stdc=$ac_arg +-break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_c89=$ac_arg + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext ++ ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break + done +-rm -f conftest.$ac_ext conftest.$ac_objext ++rm -f conftest.$ac_ext + CC=$ac_save_CC + + fi +- +-case "x$ac_cv_prog_cc_stdc" in +- x|xno) +- echo "$as_me:$LINENO: result: none needed" >&5 +-echo "${ECHO_T}none needed" >&6 ;; ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { echo "$as_me:$LINENO: result: none needed" >&5 ++echo "${ECHO_T}none needed" >&6; } ;; ++ xno) ++ { echo "$as_me:$LINENO: result: unsupported" >&5 ++echo "${ECHO_T}unsupported" >&6; } ;; + *) +- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 +- CC="$CC $ac_cv_prog_cc_stdc" ;; ++ CC="$CC $ac_cv_prog_cc_c89" ++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + esac + +-# Some people use a C++ compiler to compile C. Since we use `exit', +-# in C++ we need to declare it. In case someone uses the same compiler +-# for both compiling C and C++ we need to have the C++ compiler decide +-# the declaration of exit, since it's the most demanding environment. ++ ++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 ++ ++ ++{ echo "$as_me:$LINENO: checking for library containing strerror" >&5 ++echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; } ++if test "${ac_cv_search_strerror+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_func_search_save_LIBS=$LIBS + cat >conftest.$ac_ext <<_ACEOF +-#ifndef __cplusplus +- choke me +-#endif +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- for ac_declaration in \ +- '' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_declaration +-#include ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char strerror (); + int + main () + { +-exit (42); ++return strerror (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++for ac_lib in '' cposix; do ++ if test -z "$ac_lib"; then ++ ac_res="none required" ++ else ++ ac_res=-l$ac_lib ++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" ++ fi ++ rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_search_strerror=$ac_res + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-continue +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h +-fi +- +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext ++ if test "${ac_cv_search_strerror+set}" = set; then ++ break + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-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 +- +- +-echo "$as_me:$LINENO: checking for library containing strerror" >&5 +-echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6 ++done + if test "${ac_cv_search_strerror+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_func_search_save_LIBS=$LIBS +-ac_cv_search_strerror=no +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char strerror (); +-int +-main () +-{ +-strerror (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_strerror="none required" +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-if test "$ac_cv_search_strerror" = no; then +- for ac_lib in cposix; do +- LIBS="-l$ac_lib $ac_func_search_save_LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char strerror (); +-int +-main () +-{ +-strerror (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_strerror="-l$ac_lib" +-break ++ : + else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- done ++ ac_cv_search_strerror=no + fi ++rm conftest.$ac_ext + LIBS=$ac_func_search_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 +-echo "${ECHO_T}$ac_cv_search_strerror" >&6 +-if test "$ac_cv_search_strerror" != no; then +- test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS" ++{ echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 ++echo "${ECHO_T}$ac_cv_search_strerror" >&6; } ++ac_res=$ac_cv_search_strerror ++if test "$ac_res" != no; then ++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + fi + +@@ -2499,8 +2979,8 @@ am__api_version="1.9" + # 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. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } + if test -z "$INSTALL"; then + if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -2522,7 +3002,7 @@ case $as_dir/ in + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ++ 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. +@@ -2541,21 +3021,22 @@ case $as_dir/ in + ;; + esac + done ++IFS=$as_save_IFS + + + 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. We don't cache a +- # path for INSTALL within a source directory, because that will ++ # 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 path is relative. ++ # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi + fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -2565,8 +3046,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR + + test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +-echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 ++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } + # Just in case + sleep 1 + echo timestamp > conftest.file +@@ -2608,20 +3089,20 @@ echo "$as_me: error: newly created file + Check your system clock" >&2;} + { (exit 1); exit 1; }; } + fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + test "$program_prefix" != NONE && +- program_transform_name="s,^,$program_prefix,;$program_transform_name" ++ 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" ++ program_transform_name="s&\$&$program_suffix&;$program_transform_name" + # Double any \ or $. echo might interpret backslashes. + # By default was `s,x,x', remove it if useless. + cat <<\_ACEOF >conftest.sed + s/[\\$]/&&/g;s/;s,x,x,$// + _ACEOF + program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +-rm conftest.sed ++rm -f conftest.sed + + # expand $ac_aux_dir to an absolute path + am_aux_dir=`cd $ac_aux_dir && pwd` +@@ -2673,8 +3154,8 @@ 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2687,54 +3168,57 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $AWK" >&5 +-echo "${ECHO_T}$AWK" >&6 ++ { echo "$as_me:$LINENO: result: $AWK" >&5 ++echo "${ECHO_T}$AWK" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$AWK" && break + done + +-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } ++set x ${MAKE-make}; ac_make=`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 + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh + all: +- @echo 'ac_maketemp="$(MAKE)"' ++ @echo '@@@%%%=$(MAKE)=@@@%%%' + _ACEOF + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. +-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +-if test -n "$ac_maketemp"; then +- eval ac_cv_prog_make_${ac_make}_set=yes +-else +- eval ac_cv_prog_make_${ac_make}_set=no +-fi ++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 \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + SET_MAKE= + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" + fi + +@@ -2749,7 +3233,7 @@ rmdir .tst 2>/dev/null + + DEPDIR="${am__leading_dot}deps" + +- ac_config_commands="$ac_config_commands depfiles" ++ac_config_commands="$ac_config_commands depfiles" + + + am_make=${MAKE-make} +@@ -2759,8 +3243,8 @@ am__doit: + .PHONY: am__doit + END + # If we don't find an include directive, just comment out the code. +-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 ++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } + am__include="#" + am__quote= + _am_result=none +@@ -2787,15 +3271,15 @@ if test "$am__include" = "#"; then + fi + + +-echo "$as_me:$LINENO: result: $_am_result" >&5 +-echo "${ECHO_T}$_am_result" >&6 ++{ echo "$as_me:$LINENO: result: $_am_result" >&5 ++echo "${ECHO_T}$_am_result" >&6; } + rm -f confinc confmf + +-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. ++# Check whether --enable-dependency-tracking was given. + if test "${enable_dependency_tracking+set}" = set; then +- enableval="$enable_dependency_tracking" ++ enableval=$enable_dependency_tracking; ++fi + +-fi; + if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +@@ -2870,8 +3354,8 @@ 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2884,32 +3368,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2922,27 +3408,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" + fi + fi + ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP + if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- STRIP=$ac_ct_STRIP ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi + else + STRIP="$ac_cv_prog_STRIP" + fi +@@ -2963,8 +3463,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am + + depcc="$CC" am_compiler_list= + +-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } + if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3053,8 +3553,8 @@ else + fi + + fi +-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 ++{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 ++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } + CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + +@@ -3072,10 +3572,9 @@ fi + + + +-# Check whether --enable-shared or --disable-shared was given. ++# Check whether --enable-shared was given. + if test "${enable_shared+set}" = set; then +- enableval="$enable_shared" +- p=${PACKAGE-default} ++ enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; +@@ -3093,11 +3592,11 @@ no) enable_shared=no ;; + esac + else + enable_shared=yes +-fi; +-# Check whether --enable-static or --disable-static was given. ++fi ++ ++# Check whether --enable-static was given. + if test "${enable_static+set}" = set; then +- enableval="$enable_static" +- p=${PACKAGE-default} ++ enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; +@@ -3115,11 +3614,11 @@ no) enable_static=no ;; + esac + else + enable_static=yes +-fi; +-# Check whether --enable-fast-install or --disable-fast-install was given. ++fi ++ ++# Check whether --enable-fast-install was given. + if test "${enable_fast_install+set}" = set; then +- enableval="$enable_fast_install" +- p=${PACKAGE-default} ++ enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; +@@ -3137,20 +3636,21 @@ no) enable_fast_install=no ;; + esac + else + enable_fast_install=yes +-fi; ++fi ++ + +-# Check whether --with-gnu-ld or --without-gnu-ld was given. ++# Check whether --with-gnu-ld was given. + if test "${with_gnu_ld+set}" = set; then +- withval="$with_gnu_ld" +- test "$withval" = no || with_gnu_ld=yes ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes + else + with_gnu_ld=no +-fi; ++fi ++ + ac_prog=ld + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. +- echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for ld used by GCC" >&5 ++echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw +@@ -3179,11 +3679,11 @@ echo $ECHO_N "checking for ld used by GC + ;; + esac + elif test "$with_gnu_ld" = yes; then +- echo "$as_me:$LINENO: checking for GNU ld" >&5 +-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for GNU ld" >&5 ++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + else +- echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + fi + if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -3212,17 +3712,17 @@ fi + + LD="$lt_cv_path_LD" + if test -n "$LD"; then +- echo "$as_me:$LINENO: result: $LD" >&5 +-echo "${ECHO_T}$LD" >&6 ++ { echo "$as_me:$LINENO: result: $LD" >&5 ++echo "${ECHO_T}$LD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 + echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } + if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3233,25 +3733,25 @@ else + lt_cv_prog_gnu_ld=no + fi + fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 ++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } + with_gnu_ld=$lt_cv_prog_gnu_ld + + +-echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 ++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } + if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + lt_cv_ld_reload_flag='-r' + fi +-echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 ++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } + reload_flag=$lt_cv_ld_reload_flag + test -n "$reload_flag" && reload_flag=" $reload_flag" + +-echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 ++echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } + if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3286,22 +3786,22 @@ fi + fi + + NM="$lt_cv_path_NM" +-echo "$as_me:$LINENO: result: $NM" >&5 +-echo "${ECHO_T}$NM" >&6 ++{ echo "$as_me:$LINENO: result: $NM" >&5 ++echo "${ECHO_T}$NM" >&6; } + +-echo "$as_me:$LINENO: checking whether ln -s works" >&5 +-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 ++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } + LN_S=$as_ln_s + if test "$LN_S" = "ln -s"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + else +- echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +-echo "${ECHO_T}no, using $LN_S" >&6 ++ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 ++echo "${ECHO_T}no, using $LN_S" >&6; } + fi + +-echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 +-echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 ++echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6; } + if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3463,8 +3963,8 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + esac + + fi +-echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 ++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } + file_magic_cmd=$lt_cv_file_magic_cmd + deplibs_check_method=$lt_cv_deplibs_check_method + +@@ -3474,8 +3974,8 @@ deplibs_check_method=$lt_cv_deplibs_chec + # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + + # find the maximum length of command line arguments +-echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 ++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } + if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3526,11 +4026,11 @@ else + fi + + if test -n "$lt_cv_sys_max_cmd_len" ; then +- echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 ++ { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 ++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } + else +- echo "$as_me:$LINENO: result: none" >&5 +-echo "${ECHO_T}none" >&6 ++ { echo "$as_me:$LINENO: result: none" >&5 ++echo "${ECHO_T}none" >&6; } + fi + + +@@ -3538,8 +4038,8 @@ fi + case $deplibs_check_method in + file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 ++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } + if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3593,17 +4093,17 @@ fi + + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then +- echo "$as_me:$LINENO: checking for file" >&5 +-echo $ECHO_N "checking for file... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for file" >&5 ++echo $ECHO_N "checking for file... $ECHO_C" >&6; } + if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3657,11 +4157,11 @@ fi + + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + else +@@ -3676,8 +4176,8 @@ esac + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3690,32 +4190,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3728,27 +4230,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" + fi + fi + ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB + if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- RANLIB=$ac_ct_RANLIB ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi + else + RANLIB="$ac_cv_prog_RANLIB" + fi +@@ -3756,8 +4272,8 @@ fi + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3770,32 +4286,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3808,27 +4326,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" + fi + fi + ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP + if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- STRIP=$ac_ct_STRIP ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi + else + STRIP="$ac_cv_prog_STRIP" + fi +@@ -3843,22 +4375,22 @@ test "$GCC" = yes && libtool_flags="$lib + test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" + + +-# Check whether --enable-libtool-lock or --disable-libtool-lock was given. ++# Check whether --enable-libtool-lock was given. + if test "${enable_libtool_lock+set}" = set; then +- enableval="$enable_libtool_lock" ++ enableval=$enable_libtool_lock; ++fi + +-fi; + test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" + test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" + + +-# Check whether --with-pic or --without-pic was given. ++# Check whether --with-pic was given. + if test "${with_pic+set}" = set; then +- withval="$with_pic" +- pic_mode="$withval" ++ withval=$with_pic; pic_mode="$withval" + else + pic_mode=default +-fi; ++fi ++ + test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic" + test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic" + +@@ -3867,7 +4399,7 @@ test x"$pic_mode" = xno && libtool_flags + case $host in + *-*-irix6*) + # Find out which ABI we are using. +- echo '#line 3870 "configure"' > conftest.$ac_ext ++ echo '#line 4402 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +@@ -3972,13 +4504,12 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*li + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" +- echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 ++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } + if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + +- + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -4001,35 +4532,32 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + lt_cv_cc_needs_belf=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-lt_cv_cc_needs_belf=no ++ lt_cv_cc_needs_belf=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' +@@ -4038,8 +4566,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLA + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 ++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" +@@ -4069,39 +4597,58 @@ _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, don't put newlines in cache variables' values. ++# 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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ + (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ 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 \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} | ++ esac | ++ sort ++) | + sed ' ++ /^ac_cv_env_/b end + t clear +- : clear ++ :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end +- /^ac_cv_env/!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" && echo "updating cache $cache_file" ++ 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" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else +- echo "not updating unwritable cache $cache_file" ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi + fi + rm -f confcache +@@ -4127,8 +4674,8 @@ if test -r "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 + echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; + esac + fi + else +@@ -4154,10 +4701,9 @@ exec 5>>./config.log + + + +-# Check whether --enable-targets or --disable-targets was given. ++# Check whether --enable-targets was given. + if test "${enable_targets+set}" = set; then +- enableval="$enable_targets" +- case "${enableval}" in ++ enableval=$enable_targets; case "${enableval}" in + yes | "") { { echo "$as_me:$LINENO: error: enable-targets option must specify target names or 'all'" >&5 + echo "$as_me: error: enable-targets option must specify target names or 'all'" >&2;} + { (exit 1); exit 1; }; } +@@ -4165,31 +4711,32 @@ echo "$as_me: error: enable-targets opti + no) enable_targets= ;; + *) enable_targets=$enableval ;; + esac +-fi; # Check whether --enable-commonbfdlib or --disable-commonbfdlib was given. ++fi ++# Check whether --enable-commonbfdlib was given. + if test "${enable_commonbfdlib+set}" = set; then +- enableval="$enable_commonbfdlib" +- case "${enableval}" in ++ enableval=$enable_commonbfdlib; case "${enableval}" in + yes) commonbfdlib=true ;; + no) commonbfdlib=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for BFD commonbfdlib option" >&5 + echo "$as_me: error: bad value ${enableval} for BFD commonbfdlib option" >&2;} + { (exit 1); exit 1; }; } ;; + esac +-fi; ++fi ++ + + GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" + +-# Check whether --enable-werror or --disable-werror was given. ++# Check whether --enable-werror was given. + if test "${enable_werror+set}" = set; then +- enableval="$enable_werror" +- case "${enableval}" in ++ enableval=$enable_werror; case "${enableval}" in + yes | y) ERROR_ON_WARNING="yes" ;; + no | n) ERROR_ON_WARNING="no" ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-werror" >&5 + echo "$as_me: error: bad value ${enableval} for --enable-werror" >&2;} + { (exit 1); exit 1; }; } ;; + esac +-fi; ++fi ++ + + # Enable -Werror by default when using gcc + if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then +@@ -4206,10 +4753,9 @@ if test "${GCC}" = yes ; then + WARN_CFLAGS="${GCC_WARN_CFLAGS}" + fi + +-# Check whether --enable-build-warnings or --disable-build-warnings was given. ++# Check whether --enable-build-warnings was given. + if test "${enable_build_warnings+set}" = set; then +- enableval="$enable_build_warnings" +- case "${enableval}" in ++ enableval=$enable_build_warnings; case "${enableval}" in + yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; + no) if test "${GCC}" = yes ; then + WARN_CFLAGS="-w" +@@ -4220,7 +4766,8 @@ if test "${enable_build_warnings+set}" = + WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";; + *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;; + esac +-fi; ++fi ++ + + if test x"$silent" != x"yes" && test x"$WARN_CFLAGS" != x""; then + echo "Setting warning flags = $WARN_CFLAGS" 6>&1 +@@ -4230,7 +4777,7 @@ fi + + + +- ac_config_headers="$ac_config_headers config.h:config.in" ++ac_config_headers="$ac_config_headers config.h:config.in" + + + if test -z "$target" ; then +@@ -4252,8 +4799,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4266,32 +4813,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}gcc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4304,36 +4853,51 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="gcc" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + else + CC="$ac_cv_prog_CC" + fi + + if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4346,74 +4910,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}cc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi + ++ fi + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4427,7 +4951,7 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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 +@@ -4438,6 +4962,7 @@ do + 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. +@@ -4455,22 +4980,23 @@ fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4483,36 +5009,38 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="$ac_tool_prefix$ac_prog" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CC" && break + done + fi + if test -z "$CC"; then + ac_ct_CC=$CC +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4525,29 +5053,45 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="$ac_prog" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CC" && break + done + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + fi + + fi +@@ -4560,27 +5104,41 @@ See \`config.log' for more details." >&2 + { (exit 1); exit 1; }; } + + # Provide some information about the compiler. +-echo "$as_me:$LINENO:" \ +- "checking for C compiler version" >&5 ++echo "$as_me:$LINENO: checking for C compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } + if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4603,50 +5161,49 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_compiler_gnu=no ++ ac_compiler_gnu=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } + GCC=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CFLAGS=${CFLAGS+set} + ac_save_CFLAGS=$CFLAGS +-CFLAGS="-g" +-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ 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 +@@ -4662,311 +5219,248 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (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 + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_prog_cc_g=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +-echo "${ECHO_T}$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 +-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_stdc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_prog_cc_stdc=no +-ac_save_CC=$CC +-cat >conftest.$ac_ext <<_ACEOF ++ CFLAGS="" ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include +-#include +-#include +-#include +-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +-struct buf { int x; }; +-FILE * (*rcsopen) (struct buf *, struct stat *, int); +-static char *e (p, i) +- char **p; +- int i; +-{ +- return p[i]; +-} +-static char *f (char * (*g) (char **, int), char **p, ...) +-{ +- char *s; +- va_list v; +- va_start (v,p); +- s = g (p, va_arg (v,int)); +- va_end (v); +- return s; +-} + +-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has +- function prototypes and stuff, but not '\xHH' hex character constants. +- These don't provoke an error unfortunately, instead are silently treated +- as 'x'. The following induces an error, until -std1 is added to get +- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an +- array size at least. It's necessary to write '\x00'==0 to get something +- that's true only with -std1. */ +-int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +- +-int test (int i, double x); +-struct s1 {int (*f) (int a);}; +-struct s2 {int (*f) (double a);}; +-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +-int argc; +-char **argv; + int + main () + { +-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ++ + ; + return 0; + } + _ACEOF +-# Don't try gcc -ansi; that turns off useful extensions and +-# breaks some systems' header files. +-# AIX -qlanglvl=ansi +-# Ultrix and OSF/1 -std1 +-# HP-UX 10.20 and later -Ae +-# HP-UX older versions -Aa -D_HPUX_SOURCE +-# SVR4 -Xc -D__EXTENSIONS__ +-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +-do +- CC="$ac_save_CC $ac_arg" +- rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++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 "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_stdc=$ac_arg +-break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ : + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext +-done +-rm -f conftest.$ac_ext conftest.$ac_objext +-CC=$ac_save_CC +- +-fi +- +-case "x$ac_cv_prog_cc_stdc" in +- x|xno) +- echo "$as_me:$LINENO: result: none needed" >&5 +-echo "${ECHO_T}none needed" >&6 ;; +- *) +- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 +- CC="$CC $ac_cv_prog_cc_stdc" ;; +-esac +- +-# Some people use a C++ compiler to compile C. Since we use `exit', +-# in C++ we need to declare it. In case someone uses the same compiler +-# for both compiling C and C++ we need to have the C++ compiler decide +-# the declaration of exit, since it's the most demanding environment. +-cat >conftest.$ac_ext <<_ACEOF +-#ifndef __cplusplus +- choke me +-#endif +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- for ac_declaration in \ +- '' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF ++ 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. */ +-$ac_declaration +-#include ++ + int + main () + { +-exit (42); ++ + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : ++ (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 + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-continue ++ + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF ++ ++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 ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++echo "${ECHO_T}$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 ++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_c89+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_prog_cc_c89=no ++ac_save_CC=$CC ++cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_declaration ++#include ++#include ++#include ++#include ++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ ++struct buf { int x; }; ++FILE * (*rcsopen) (struct buf *, struct stat *, int); ++static char *e (p, i) ++ char **p; ++ int i; ++{ ++ return p[i]; ++} ++static char *f (char * (*g) (char **, int), char **p, ...) ++{ ++ char *s; ++ va_list v; ++ va_start (v,p); ++ s = g (p, va_arg (v,int)); ++ va_end (v); ++ return s; ++} ++ ++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has ++ function prototypes and stuff, but not '\xHH' hex character constants. ++ These don't provoke an error unfortunately, instead are silently treated ++ as 'x'. The following induces an error, until -std is added to get ++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an ++ array size at least. It's necessary to write '\x00'==0 to get something ++ that's true only with -std. */ ++int osf4_cc_array ['\x00' == 0 ? 1 : -1]; ++ ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ ++int test (int i, double x); ++struct s1 {int (*f) (int a);}; ++struct s2 {int (*f) (double a);}; ++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); ++int argc; ++char **argv; + int + main () + { +-exit (42); ++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++do ++ CC="$ac_save_CC $ac_arg" ++ 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 "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_c89=$ac_arg + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break + done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h ++rm -f conftest.$ac_ext ++CC=$ac_save_CC ++ + fi ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { echo "$as_me:$LINENO: result: none needed" >&5 ++echo "${ECHO_T}none needed" >&6; } ;; ++ xno) ++ { echo "$as_me:$LINENO: result: unsupported" >&5 ++echo "${ECHO_T}unsupported" >&6; } ;; ++ *) ++ CC="$CC $ac_cv_prog_cc_c89" ++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; ++esac + +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -4984,8 +5478,8 @@ for ac_prog in 'bison -y' byacc + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_YACC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4998,25 +5492,27 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_YACC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + YACC=$ac_cv_prog_YACC + if test -n "$YACC"; then +- echo "$as_me:$LINENO: result: $YACC" >&5 +-echo "${ECHO_T}$YACC" >&6 ++ { echo "$as_me:$LINENO: result: $YACC" >&5 ++echo "${ECHO_T}$YACC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$YACC" && break + done + test -n "$YACC" || YACC="yacc" +@@ -5025,8 +5521,8 @@ for ac_prog in flex lex + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_LEX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5039,253 +5535,182 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LEX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + LEX=$ac_cv_prog_LEX + if test -n "$LEX"; then +- echo "$as_me:$LINENO: result: $LEX" >&5 +-echo "${ECHO_T}$LEX" >&6 ++ { echo "$as_me:$LINENO: result: $LEX" >&5 ++echo "${ECHO_T}$LEX" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$LEX" && break + done + test -n "$LEX" || LEX=":" + +-if test -z "$LEXLIB" +-then +- echo "$as_me:$LINENO: checking for yywrap in -lfl" >&5 +-echo $ECHO_N "checking for yywrap in -lfl... $ECHO_C" >&6 +-if test "${ac_cv_lib_fl_yywrap+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lfl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" ++if test "x$LEX" != "x:"; then ++ cat >conftest.l <<_ACEOF ++%% ++a { ECHO; } ++b { REJECT; } ++c { yymore (); } ++d { yyless (1); } ++e { yyless (input () != 0); } ++f { unput (yytext[0]); } ++. { BEGIN INITIAL; } ++%% ++#ifdef YYTEXT_POINTER ++extern char *yytext; + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char yywrap (); + int +-main () ++main (void) + { +-yywrap (); +- ; +- return 0; ++ return ! yylex () + ! yywrap (); + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++{ (ac_try="$LEX conftest.l" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$LEX conftest.l") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_fl_yywrap=yes ++ (exit $ac_status); } ++{ echo "$as_me:$LINENO: checking lex output file root" >&5 ++echo $ECHO_N "checking lex output file root... $ECHO_C" >&6; } ++if test "${ac_cv_prog_lex_root+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_fl_yywrap=no ++if test -f lex.yy.c; then ++ ac_cv_prog_lex_root=lex.yy ++elif test -f lexyy.c; then ++ ac_cv_prog_lex_root=lexyy ++else ++ { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 ++echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} ++ { (exit 1); exit 1; }; } + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_fl_yywrap" >&5 +-echo "${ECHO_T}$ac_cv_lib_fl_yywrap" >&6 +-if test $ac_cv_lib_fl_yywrap = yes; then +- LEXLIB="-lfl" +-else +- echo "$as_me:$LINENO: checking for yywrap in -ll" >&5 +-echo $ECHO_N "checking for yywrap in -ll... $ECHO_C" >&6 +-if test "${ac_cv_lib_l_yywrap+set}" = set; then ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 ++echo "${ECHO_T}$ac_cv_prog_lex_root" >&6; } ++LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root ++ ++if test -z "${LEXLIB+set}"; then ++ { echo "$as_me:$LINENO: checking lex library" >&5 ++echo $ECHO_N "checking lex library... $ECHO_C" >&6; } ++if test "${ac_cv_lib_lex+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ll $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char yywrap (); +-int +-main () +-{ +-yywrap (); +- ; +- return 0; +-} ++ ac_save_LIBS=$LIBS ++ ac_cv_lib_lex='none needed' ++ for ac_lib in '' -lfl -ll; do ++ LIBS="$ac_lib $ac_save_LIBS" ++ cat >conftest.$ac_ext <<_ACEOF ++`cat $LEX_OUTPUT_ROOT.c` + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_l_yywrap=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_lex=$ac_lib + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_l_yywrap=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_l_yywrap" >&5 +-echo "${ECHO_T}$ac_cv_lib_l_yywrap" >&6 +-if test $ac_cv_lib_l_yywrap = yes; then +- LEXLIB="-ll" +-fi +- +-fi +- +-fi + +-if test "x$LEX" != "x:"; then +- echo "$as_me:$LINENO: checking lex output file root" >&5 +-echo $ECHO_N "checking lex output file root... $ECHO_C" >&6 +-if test "${ac_cv_prog_lex_root+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- # The minimal lex program is just a single line: %%. But some broken lexes +-# (Solaris, I think it was) want two %% lines, so accommodate them. +-cat >conftest.l <<_ACEOF +-%% +-%% +-_ACEOF +-{ (eval echo "$as_me:$LINENO: \"$LEX conftest.l\"") >&5 +- (eval $LEX conftest.l) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +-if test -f lex.yy.c; then +- ac_cv_prog_lex_root=lex.yy +-elif test -f lexyy.c; then +- ac_cv_prog_lex_root=lexyy +-else +- { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 +-echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} +- { (exit 1); exit 1; }; } + fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ test "$ac_cv_lib_lex" != 'none needed' && break ++ done ++ LIBS=$ac_save_LIBS ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5 ++echo "${ECHO_T}$ac_cv_lib_lex" >&6; } ++ test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex + fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 +-echo "${ECHO_T}$ac_cv_prog_lex_root" >&6 +-rm -f conftest.l +-LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root + +-echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 +-echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6 ++ ++{ echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 ++echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6; } + if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + # POSIX says lex can declare yytext either as a pointer or an array; the +-# default is implementation-dependent. Figure out which it is, since ++# default is implementation-dependent. Figure out which it is, since + # not all implementations provide the %pointer and %array declarations. + ac_cv_prog_lex_yytext_pointer=no +-echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c + ac_save_LIBS=$LIBS +-LIBS="$LIBS $LEXLIB" ++LIBS="$LEXLIB $ac_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF ++#define YYTEXT_POINTER 1 + `cat $LEX_OUTPUT_ROOT.c` + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_prog_lex_yytext_pointer=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_save_LIBS +-rm -f "${LEX_OUTPUT_ROOT}.c" + + fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 +-echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 ++echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6; } + if test $ac_cv_prog_lex_yytext_pointer = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -5293,6 +5718,7 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi ++rm -f conftest.l $LEX_OUTPUT_ROOT.c + + fi + if test "$LEX" = :; then +@@ -5303,8 +5729,8 @@ ALL_LINGUAS="fr tr ja es sv da zh_CN ru + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5317,32 +5743,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5355,27 +5783,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" + fi + fi + ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB + if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- RANLIB=$ac_ct_RANLIB ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi + else + RANLIB="$ac_cv_prog_RANLIB" + fi +@@ -5385,8 +5827,8 @@ 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 +-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 ++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= +@@ -5420,24 +5862,22 @@ cat >>conftest.$ac_ext <<_ACEOF + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -5446,9 +5886,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -5458,24 +5899,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -5486,6 +5925,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -5503,8 +5943,8 @@ fi + else + ac_cv_prog_CPP=$CPP + fi +-echo "$as_me:$LINENO: result: $CPP" >&5 +-echo "${ECHO_T}$CPP" >&6 ++{ echo "$as_me:$LINENO: result: $CPP" >&5 ++echo "${ECHO_T}$CPP" >&6; } + ac_preproc_ok=false + for ac_c_preproc_warn_flag in '' yes + do +@@ -5527,24 +5967,22 @@ cat >>conftest.$ac_ext <<_ACEOF + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -5553,9 +5991,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -5565,24 +6004,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -5593,6 +6030,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -5615,23 +6053,170 @@ ac_link='$CC -o conftest$ac_exeext $CFLA + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +-echo "$as_me:$LINENO: checking for egrep" >&5 +-echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +-if test "${ac_cv_prog_egrep+set}" = set; then ++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 ++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # Extract the first word of "grep ggrep" to use in msg output ++if test -z "$GREP"; then ++set dummy grep ggrep; ac_prog_name=$2 ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_GREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in grep ggrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue ++ # Check for GNU ac_path_GREP and select it if it is found. ++ # Check for GNU $ac_path_GREP ++case `"$ac_path_GREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'GREP' >> "conftest.nl" ++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_GREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_GREP="$ac_path_GREP" ++ ac_path_GREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_GREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++GREP="$ac_cv_path_GREP" ++if test -z "$GREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_GREP=$GREP ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 ++echo "${ECHO_T}$ac_cv_path_GREP" >&6; } ++ GREP="$ac_cv_path_GREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for egrep" >&5 ++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 ++ then ac_cv_path_EGREP="$GREP -E" ++ else ++ # Extract the first word of "egrep" to use in msg output ++if test -z "$EGREP"; then ++set dummy egrep; ac_prog_name=$2 ++if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if echo a | (grep -E '(a|b)') >/dev/null 2>&1 +- then ac_cv_prog_egrep='grep -E' +- else ac_cv_prog_egrep='egrep' ++ ac_path_EGREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in egrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue ++ # Check for GNU ac_path_EGREP and select it if it is found. ++ # Check for GNU $ac_path_EGREP ++case `"$ac_path_EGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'EGREP' >> "conftest.nl" ++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_EGREP="$ac_path_EGREP" ++ ac_path_EGREP_max=$ac_count + fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_EGREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++EGREP="$ac_cv_path_EGREP" ++if test -z "$EGREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_EGREP=$EGREP ++fi ++ ++ ++ fi + fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +-echo "${ECHO_T}$ac_cv_prog_egrep" >&6 +- EGREP=$ac_cv_prog_egrep ++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 ++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } ++ EGREP="$ac_cv_path_EGREP" + + +-echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } + if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5655,35 +6240,31 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_header_stdc=no ++ ac_cv_header_stdc=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +@@ -5739,6 +6320,7 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include ++#include + #if ((' ' & 0x0FF) == 0x020) + # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') + # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +@@ -5758,18 +6340,27 @@ main () + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) +- exit(2); +- exit (0); ++ return 2; ++ return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -5782,12 +6373,14 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) + ac_cv_header_stdc=no + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +-echo "${ECHO_T}$ac_cv_header_stdc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++echo "${ECHO_T}$ac_cv_header_stdc" >&6; } + if test $ac_cv_header_stdc = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -5796,8 +6389,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 ++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } + if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5815,10 +6408,10 @@ main () + #ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; +- const charset x; ++ const charset cs; + /* SunOS 4.1.1 cc rejects this. */ +- char const *const *ccp; +- char **p; ++ char const *const *pcpcc; ++ char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; +@@ -5827,16 +6420,17 @@ main () + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; +- ccp = &g + (g ? g-g : 0); ++ pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ +- ++ccp; +- p = (char**) ccp; +- ccp = (char const *const *) p; ++ ++pcpcc; ++ ppc = (char**) pcpcc; ++ pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; ++ if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; +@@ -5855,7 +6449,9 @@ main () + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; ++ if (!foo) return 0; + } ++ return !cs[0] && !zero.x; + #endif + + ; +@@ -5863,38 +6459,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_c_const=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_c_const=no ++ ac_cv_c_const=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +-echo "${ECHO_T}$ac_cv_c_const" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 ++echo "${ECHO_T}$ac_cv_c_const" >&6; } + if test $ac_cv_c_const = no; then + + cat >>confdefs.h <<\_ACEOF +@@ -5903,8 +6495,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for inline" >&5 +-echo $ECHO_N "checking for inline... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for inline" >&5 ++echo $ECHO_N "checking for inline... $ECHO_C" >&6; } + if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5924,39 +6516,37 @@ $ac_kw foo_t foo () {return 0; } + + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_c_inline=$ac_kw; break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_inline=$ac_kw + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ test "$ac_cv_c_inline" != no && break + done + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +-echo "${ECHO_T}$ac_cv_c_inline" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 ++echo "${ECHO_T}$ac_cv_c_inline" >&6; } + + + case $ac_cv_c_inline in +@@ -5988,9 +6578,9 @@ for ac_header in sys/types.h sys/stat.h + inttypes.h stdint.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -6004,38 +6594,35 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_Header=no" ++ eval "$as_ac_Header=no" + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +@@ -6046,8 +6633,8 @@ fi + done + + +-echo "$as_me:$LINENO: checking for off_t" >&5 +-echo $ECHO_N "checking for off_t... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for off_t" >&5 ++echo $ECHO_N "checking for off_t... $ECHO_C" >&6; } + if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6058,62 +6645,59 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++typedef off_t ac__type_new_; + int + main () + { +-if ((off_t *) 0) ++if ((ac__type_new_ *) 0) + return 0; +-if (sizeof (off_t)) ++if (sizeof (ac__type_new_)) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_type_off_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_off_t=no ++ ac_cv_type_off_t=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +-echo "${ECHO_T}$ac_cv_type_off_t" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 ++echo "${ECHO_T}$ac_cv_type_off_t" >&6; } + if test $ac_cv_type_off_t = yes; then + : + else + + cat >>confdefs.h <<_ACEOF +-#define off_t long ++#define off_t long int + _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for size_t" >&5 +-echo $ECHO_N "checking for size_t... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for size_t" >&5 ++echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } + if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6124,64 +6708,61 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++typedef size_t ac__type_new_; + int + main () + { +-if ((size_t *) 0) ++if ((ac__type_new_ *) 0) + return 0; +-if (sizeof (size_t)) ++if (sizeof (ac__type_new_)) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_type_size_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_size_t=no ++ ac_cv_type_size_t=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +-echo "${ECHO_T}$ac_cv_type_size_t" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 ++echo "${ECHO_T}$ac_cv_type_size_t" >&6; } + if test $ac_cv_type_size_t = yes; then + : + else + + cat >>confdefs.h <<_ACEOF +-#define size_t unsigned ++#define size_t unsigned int + _ACEOF + + fi + + # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works + # for constant arguments. Useless! +-echo "$as_me:$LINENO: checking for working alloca.h" >&5 +-echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for working alloca.h" >&5 ++echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; } + if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6196,44 +6777,42 @@ int + main () + { + char *p = (char *) alloca (2 * sizeof (int)); ++ if (p) return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_working_alloca_h=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_working_alloca_h=no ++ ac_cv_working_alloca_h=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +-echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 ++echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; } + if test $ac_cv_working_alloca_h = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -6242,8 +6821,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for alloca" >&5 +-echo $ECHO_N "checking for alloca... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for alloca" >&5 ++echo $ECHO_N "checking for alloca... $ECHO_C" >&6; } + if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6260,7 +6839,7 @@ cat >>conftest.$ac_ext <<_ACEOF + # include + # define alloca _alloca + # else +-# if HAVE_ALLOCA_H ++# ifdef HAVE_ALLOCA_H + # include + # else + # ifdef _AIX +@@ -6278,44 +6857,42 @@ int + main () + { + char *p = (char *) alloca (1); ++ if (p) return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_func_alloca_works=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_alloca_works=no ++ ac_cv_func_alloca_works=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +-echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 ++echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; } + + if test $ac_cv_func_alloca_works = yes; then + +@@ -6329,15 +6906,15 @@ else + # contain a buggy version. If you still want to use their alloca, + # use ar to extract alloca.o from them instead of compiling alloca.c. + +-ALLOCA=alloca.$ac_objext ++ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + + cat >>confdefs.h <<\_ACEOF + #define C_ALLOCA 1 + _ACEOF + + +-echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +-echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 ++echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; } + if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6347,7 +6924,7 @@ _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#if defined(CRAY) && ! defined(CRAY2) ++#if defined CRAY && ! defined CRAY2 + webecray + #else + wenotbecray +@@ -6363,14 +6940,14 @@ fi + rm -f conftest* + + fi +-echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +-echo "${ECHO_T}$ac_cv_os_cray" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 ++echo "${ECHO_T}$ac_cv_os_cray" >&6; } + if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -6396,68 +6973,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -6470,8 +7039,8 @@ fi + done + fi + +-echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +-echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 ++echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; } + if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6484,6 +7053,7 @@ _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ ++$ac_includes_default + int + find_stack_direction () + { +@@ -6501,17 +7071,26 @@ find_stack_direction () + int + main () + { +- exit (find_stack_direction () < 0); ++ return find_stack_direction () < 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -6524,11 +7103,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) + ac_cv_c_stack_direction=-1 + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +-echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 ++echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; } + + cat >>confdefs.h <<_ACEOF + #define STACK_DIRECTION $ac_cv_c_stack_direction +@@ -6542,18 +7123,19 @@ fi + for ac_header in stdlib.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -6564,41 +7146,37 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -6607,24 +7185,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -6632,9 +7208,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -6658,25 +7235,19 @@ echo "$as_me: WARNING: $ac_header: s + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -6692,9 +7263,9 @@ done + for ac_func in getpagesize + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -6720,68 +7291,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -6790,8 +7353,8 @@ _ACEOF + fi + done + +-echo "$as_me:$LINENO: checking for working mmap" >&5 +-echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for working mmap" >&5 ++echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; } + if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6833,21 +7396,21 @@ $ac_includes_default + #include + #include + +-#if !STDC_HEADERS && !HAVE_STDLIB_H ++#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H + char *malloc (); + #endif + + /* This mess was copied from the GNU getpagesize.h. */ +-#if !HAVE_GETPAGESIZE ++#ifndef HAVE_GETPAGESIZE + /* Assume that all systems that can run configure have sys/param.h. */ +-# if !HAVE_SYS_PARAM_H ++# ifndef HAVE_SYS_PARAM_H + # define HAVE_SYS_PARAM_H 1 + # endif + + # ifdef _SC_PAGESIZE + # define getpagesize() sysconf(_SC_PAGESIZE) + # else /* no _SC_PAGESIZE */ +-# if HAVE_SYS_PARAM_H ++# ifdef HAVE_SYS_PARAM_H + # include + # ifdef EXEC_PAGESIZE + # define getpagesize() EXEC_PAGESIZE +@@ -6886,15 +7449,15 @@ main () + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) +- exit (1); ++ return 1; + if (write (fd, data, pagesize) != pagesize) +- exit (1); ++ return 1; + close (fd); + + /* Next, try to mmap the file at a fixed address which already has +@@ -6902,17 +7465,17 @@ main () + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) +- exit (1); ++ return 1; + data2 = (char *) malloc (2 * pagesize); + if (!data2) +- exit (1); +- data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); ++ return 1; ++ data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) +- exit (1); ++ return 1; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on +@@ -6921,24 +7484,33 @@ main () + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) +- exit (1); ++ return 1; + if (read (fd, data3, pagesize) != pagesize) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) +- exit (1); ++ return 1; + close (fd); +- exit (0); ++ return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -6951,11 +7523,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) + ac_cv_func_mmap_fixed_mapped=no + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +-echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 ++echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; } + if test $ac_cv_func_mmap_fixed_mapped = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -6979,18 +7553,19 @@ for ac_header in argz.h limits.h locale. + unistd.h values.h sys/param.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -7001,41 +7576,37 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -7044,24 +7615,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -7069,9 +7638,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -7095,25 +7665,19 @@ echo "$as_me: WARNING: $ac_header: s + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -7139,9 +7703,9 @@ for ac_func in getcwd munmap putenv sete + __argz_count __argz_stringify __argz_next + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -7167,68 +7731,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -7243,9 +7799,9 @@ done + for ac_func in stpcpy + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -7271,68 +7827,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -7351,8 +7899,8 @@ _ACEOF + fi + + if test $ac_cv_header_locale_h = yes; then +- echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +-echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 ++echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6; } + if test "${am_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7372,39 +7920,36 @@ return LC_MESSAGES + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + am_cv_val_LC_MESSAGES=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-am_cv_val_LC_MESSAGES=no ++ am_cv_val_LC_MESSAGES=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +-echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 ++{ echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 ++echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6; } + if test $am_cv_val_LC_MESSAGES = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -7413,34 +7958,34 @@ _ACEOF + + fi + fi +- echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 +- # Check whether --enable-nls or --disable-nls was given. ++ { echo "$as_me:$LINENO: checking whether NLS is requested" >&5 ++echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; } ++ # Check whether --enable-nls was given. + if test "${enable_nls+set}" = set; then +- enableval="$enable_nls" +- USE_NLS=$enableval ++ enableval=$enable_nls; USE_NLS=$enableval + else + USE_NLS=yes +-fi; +- echo "$as_me:$LINENO: result: $USE_NLS" >&5 +-echo "${ECHO_T}$USE_NLS" >&6 ++fi ++ ++ { echo "$as_me:$LINENO: result: $USE_NLS" >&5 ++echo "${ECHO_T}$USE_NLS" >&6; } + + + USE_INCLUDED_LIBINTL=no + + if test "$USE_NLS" = "yes"; then +- echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 +-echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 ++echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6; } + +-# Check whether --with-included-gettext or --without-included-gettext was given. ++# Check whether --with-included-gettext was given. + if test "${with_included_gettext+set}" = set; then +- withval="$with_included_gettext" +- nls_cv_force_use_gnu_gettext=$withval ++ withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval + else + nls_cv_force_use_gnu_gettext=no +-fi; +- echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 +-echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 ++fi ++ ++ { echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 ++echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6; } + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then +@@ -7449,17 +7994,17 @@ echo "${ECHO_T}$nls_cv_force_use_gnu_get + CATOBJEXT= + + if test "${ac_cv_header_libintl_h+set}" = set; then +- echo "$as_me:$LINENO: checking for libintl.h" >&5 +-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for libintl.h" >&5 ++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; } + if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 ++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking libintl.h usability" >&5 +-echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking libintl.h usability" >&5 ++echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -7470,41 +8015,37 @@ $ac_includes_default + #include + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking libintl.h presence" >&5 +-echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking libintl.h presence" >&5 ++echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -7513,24 +8054,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -7538,9 +8077,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -7564,30 +8104,23 @@ echo "$as_me: WARNING: libintl.h: se + echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for libintl.h" >&5 +-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for libintl.h" >&5 ++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; } + if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_cv_header_libintl_h=$ac_header_preproc + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 ++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; } + + fi + if test $ac_cv_header_libintl_h = yes; then +- echo "$as_me:$LINENO: checking for gettext in libc" >&5 +-echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for gettext in libc" >&5 ++echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6; } + if test "${gt_cv_func_gettext_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7607,43 +8140,40 @@ return (int) gettext ("") + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + gt_cv_func_gettext_libc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-gt_cv_func_gettext_libc=no ++ gt_cv_func_gettext_libc=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5 +-echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6 ++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5 ++echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6; } + + if test "$gt_cv_func_gettext_libc" != "yes"; then +- echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5 +-echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5 ++echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6; } + if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7656,59 +8186,56 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char bindtextdomain (); + int + main () + { +-bindtextdomain (); ++return bindtextdomain (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_intl_bindtextdomain=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_intl_bindtextdomain=no ++ ac_cv_lib_intl_bindtextdomain=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5 +-echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5 ++echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6; } + if test $ac_cv_lib_intl_bindtextdomain = yes; then +- echo "$as_me:$LINENO: checking for gettext in libintl" >&5 +-echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for gettext in libintl" >&5 ++echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6; } + if test "${gt_cv_func_gettext_libintl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7728,39 +8255,36 @@ return (int) gettext ("") + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + gt_cv_func_gettext_libintl=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-gt_cv_func_gettext_libintl=no ++ gt_cv_func_gettext_libintl=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5 +-echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6 ++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5 ++echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6; } + fi + + fi +@@ -7774,8 +8298,8 @@ _ACEOF + + # Extract the first word of "msgfmt", so it can be a program name with args. + set dummy msgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7801,20 +8325,20 @@ esac + fi + MSGFMT="$ac_cv_path_MSGFMT" + if test -n "$MSGFMT"; then +- echo "$as_me:$LINENO: result: $MSGFMT" >&5 +-echo "${ECHO_T}$MSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5 ++echo "${ECHO_T}$MSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + if test "$MSGFMT" != "no"; then + + for ac_func in dcgettext + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -7840,68 +8364,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -7912,8 +8428,8 @@ done + + # Extract the first word of "gmsgfmt", so it can be a program name with args. + set dummy gmsgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7928,32 +8444,33 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; + esac + fi + GMSGFMT=$ac_cv_path_GMSGFMT +- + if test -n "$GMSGFMT"; then +- echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +-echo "${ECHO_T}$GMSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5 ++echo "${ECHO_T}$GMSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + # Extract the first word of "xgettext", so it can be a program name with args. + set dummy xgettext; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7979,11 +8496,11 @@ esac + fi + XGETTEXT="$ac_cv_path_XGETTEXT" + if test -n "$XGETTEXT"; then +- echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +-echo "${ECHO_T}$XGETTEXT" >&6 ++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5 ++echo "${ECHO_T}$XGETTEXT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + cat >conftest.$ac_ext <<_ACEOF +@@ -8003,37 +8520,34 @@ extern int _nl_msg_cat_cntr; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + CATOBJEXT=.gmo + DATADIRNAME=share + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-CATOBJEXT=.mo ++ CATOBJEXT=.mo + DATADIRNAME=lib + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + INSTOBJEXT=.mo + fi +@@ -8055,8 +8569,8 @@ fi + INTLOBJS="\$(GETTOBJS)" + # Extract the first word of "msgfmt", so it can be a program name with args. + set dummy msgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8082,17 +8596,17 @@ esac + fi + MSGFMT="$ac_cv_path_MSGFMT" + if test -n "$MSGFMT"; then +- echo "$as_me:$LINENO: result: $MSGFMT" >&5 +-echo "${ECHO_T}$MSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5 ++echo "${ECHO_T}$MSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. + set dummy gmsgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8107,32 +8621,33 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; + esac + fi + GMSGFMT=$ac_cv_path_GMSGFMT +- + if test -n "$GMSGFMT"; then +- echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +-echo "${ECHO_T}$GMSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5 ++echo "${ECHO_T}$GMSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + # Extract the first word of "xgettext", so it can be a program name with args. + set dummy xgettext; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8158,11 +8673,11 @@ esac + fi + XGETTEXT="$ac_cv_path_XGETTEXT" + if test -n "$XGETTEXT"; then +- echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +-echo "${ECHO_T}$XGETTEXT" >&6 ++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5 ++echo "${ECHO_T}$XGETTEXT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + +@@ -8181,8 +8696,8 @@ fi + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else +- echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5 +-echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6 ++ { echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5 ++echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6; } + XGETTEXT=":" + fi + fi +@@ -8231,8 +8746,8 @@ _ACEOF + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else +- echo "$as_me:$LINENO: checking for catalogs to be installed" >&5 +-echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for catalogs to be installed" >&5 ++echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6; } + NEW_LINGUAS= + for lang in ${LINGUAS=$ALL_LINGUAS}; do + case "$ALL_LINGUAS" in +@@ -8240,8 +8755,8 @@ echo $ECHO_N "checking for catalogs to b + esac + done + LINGUAS=$NEW_LINGUAS +- echo "$as_me:$LINENO: result: $LINGUAS" >&5 +-echo "${ECHO_T}$LINGUAS" >&6 ++ { echo "$as_me:$LINENO: result: $LINGUAS" >&5 ++echo "${ECHO_T}$LINGUAS" >&6; } + fi + + if test -n "$LINGUAS"; then +@@ -8260,17 +8775,17 @@ echo "${ECHO_T}$LINGUAS" >&6 + if test -f $srcdir/po2tbl.sed.in; then + if test "$CATOBJEXT" = ".cat"; then + if test "${ac_cv_header_linux_version_h+set}" = set; then +- echo "$as_me:$LINENO: checking for linux/version.h" >&5 +-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for linux/version.h" >&5 ++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; } + if test "${ac_cv_header_linux_version_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 +-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking linux/version.h usability" >&5 +-echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking linux/version.h usability" >&5 ++echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8281,41 +8796,37 @@ $ac_includes_default + #include + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking linux/version.h presence" >&5 +-echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking linux/version.h presence" >&5 ++echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8324,24 +8835,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -8349,9 +8858,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -8375,25 +8885,18 @@ echo "$as_me: WARNING: linux/version.h: + echo "$as_me: WARNING: linux/version.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: linux/version.h: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: linux/version.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for linux/version.h" >&5 +-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for linux/version.h" >&5 ++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; } + if test "${ac_cv_header_linux_version_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_cv_header_linux_version_h=$ac_header_preproc + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 +-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; } + + fi + if test $ac_cv_header_linux_version_h = yes; then +@@ -8443,17 +8946,17 @@ fi + fi + + +-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 +- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. ++{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 ++echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; } ++ # Check whether --enable-maintainer-mode was given. + if test "${enable_maintainer_mode+set}" = set; then +- enableval="$enable_maintainer_mode" +- USE_MAINTAINER_MODE=$enableval ++ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval + else + USE_MAINTAINER_MODE=no +-fi; +- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 ++fi ++ ++ { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 ++echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; } + + + if test $USE_MAINTAINER_MODE = yes; then +@@ -8493,8 +8996,8 @@ AR=${AR-ar} + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8507,32 +9010,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8545,27 +9050,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" + fi + fi + ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB + if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- RANLIB=$ac_ct_RANLIB ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi + else + RANLIB="$ac_cv_prog_RANLIB" + fi +@@ -8583,8 +9102,8 @@ fi + # 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. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } + if test -z "$INSTALL"; then + if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -8606,7 +9125,7 @@ case $as_dir/ in + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ++ 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. +@@ -8625,21 +9144,22 @@ case $as_dir/ in + ;; + esac + done ++IFS=$as_save_IFS + + + 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. We don't cache a +- # path for INSTALL within a source directory, because that will ++ # 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 path is relative. ++ # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi + fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -8663,8 +9183,8 @@ fi + if test "x$cross_compiling" = "xno"; then + EXEEXT_FOR_BUILD='$(EXEEXT)' + else +- echo "$as_me:$LINENO: checking for build system executable suffix" >&5 +-echo $ECHO_N "checking for build system executable suffix... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for build system executable suffix" >&5 ++echo $ECHO_N "checking for build system executable suffix... $ECHO_C" >&6; } + if test "${bfd_cv_build_exeext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8681,8 +9201,8 @@ else + rm -f conftest* + test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no + fi +-echo "$as_me:$LINENO: result: $bfd_cv_build_exeext" >&5 +-echo "${ECHO_T}$bfd_cv_build_exeext" >&6 ++{ echo "$as_me:$LINENO: result: $bfd_cv_build_exeext" >&5 ++echo "${ECHO_T}$bfd_cv_build_exeext" >&6; } + EXEEXT_FOR_BUILD="" + test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext} + fi +@@ -8704,18 +9224,19 @@ esac + for ac_header in string.h strings.h stdlib.h unistd.h fcntl.h sys/file.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8726,41 +9247,37 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8769,24 +9286,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -8794,9 +9309,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -8820,25 +9336,19 @@ echo "$as_me: WARNING: $ac_header: s + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -8850,8 +9360,8 @@ fi + + done + +-echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5 +-echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5 ++echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6; } + if test "${ac_cv_header_sys_wait_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8864,7 +9374,7 @@ cat >>conftest.$ac_ext <<_ACEOF + #include + #include + #ifndef WEXITSTATUS +-# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) ++# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) + #endif + #ifndef WIFEXITED + # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) +@@ -8881,38 +9391,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_header_sys_wait_h=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_header_sys_wait_h=no ++ ac_cv_header_sys_wait_h=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 +-echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 ++echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6; } + if test $ac_cv_header_sys_wait_h = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -8923,8 +9429,8 @@ fi + + # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works + # for constant arguments. Useless! +-echo "$as_me:$LINENO: checking for working alloca.h" >&5 +-echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for working alloca.h" >&5 ++echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; } + if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8939,44 +9445,42 @@ int + main () + { + char *p = (char *) alloca (2 * sizeof (int)); ++ if (p) return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_working_alloca_h=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_working_alloca_h=no ++ ac_cv_working_alloca_h=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +-echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 ++echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; } + if test $ac_cv_working_alloca_h = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -8985,8 +9489,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for alloca" >&5 +-echo $ECHO_N "checking for alloca... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for alloca" >&5 ++echo $ECHO_N "checking for alloca... $ECHO_C" >&6; } + if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9003,7 +9507,7 @@ cat >>conftest.$ac_ext <<_ACEOF + # include + # define alloca _alloca + # else +-# if HAVE_ALLOCA_H ++# ifdef HAVE_ALLOCA_H + # include + # else + # ifdef _AIX +@@ -9021,44 +9525,42 @@ int + main () + { + char *p = (char *) alloca (1); ++ if (p) return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_func_alloca_works=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_alloca_works=no ++ ac_cv_func_alloca_works=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +-echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 ++echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; } + + if test $ac_cv_func_alloca_works = yes; then + +@@ -9072,15 +9574,15 @@ else + # contain a buggy version. If you still want to use their alloca, + # use ar to extract alloca.o from them instead of compiling alloca.c. + +-ALLOCA=alloca.$ac_objext ++ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + + cat >>confdefs.h <<\_ACEOF + #define C_ALLOCA 1 + _ACEOF + + +-echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +-echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 ++echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; } + if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9090,7 +9592,7 @@ _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#if defined(CRAY) && ! defined(CRAY2) ++#if defined CRAY && ! defined CRAY2 + webecray + #else + wenotbecray +@@ -9106,14 +9608,14 @@ fi + rm -f conftest* + + fi +-echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +-echo "${ECHO_T}$ac_cv_os_cray" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 ++echo "${ECHO_T}$ac_cv_os_cray" >&6; } + if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -9139,68 +9641,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -9213,8 +9707,8 @@ fi + done + fi + +-echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +-echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 ++echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; } + if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9227,6 +9721,7 @@ _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ ++$ac_includes_default + int + find_stack_direction () + { +@@ -9244,17 +9739,26 @@ find_stack_direction () + int + main () + { +- exit (find_stack_direction () < 0); ++ return find_stack_direction () < 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -9267,11 +9771,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) + ac_cv_c_stack_direction=-1 + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +-echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 ++echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; } + + cat >>confdefs.h <<_ACEOF + #define STACK_DIRECTION $ac_cv_c_stack_direction +@@ -9288,9 +9794,9 @@ fi + for ac_func in sbrk utimes setmode getc_unlocked strcoll + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -9316,68 +9822,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -9389,8 +9887,8 @@ done + + # Check whether fopen64 is available and whether _LARGEFILE64_SOURCE + # needs to be defined for it +-echo "$as_me:$LINENO: checking for fopen64" >&5 +-echo $ECHO_N "checking for fopen64... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for fopen64" >&5 ++echo $ECHO_N "checking for fopen64... $ECHO_C" >&6; } + if test "${bu_cv_have_fopen64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9410,33 +9908,29 @@ FILE *f = fopen64 ("/tmp/foo","r"); + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + bu_cv_have_fopen64=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-saved_CPPFLAGS=$CPPFLAGS ++ saved_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -9454,44 +9948,42 @@ FILE *f = fopen64 ("/tmp/foo","r"); + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + bu_cv_have_fopen64="need -D_LARGEFILE64_SOURCE" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bu_cv_have_fopen64=no ++ bu_cv_have_fopen64=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS=$saved_CPPFLAGS + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi + +-echo "$as_me:$LINENO: result: $bu_cv_have_fopen64" >&5 +-echo "${ECHO_T}$bu_cv_have_fopen64" >&6 ++{ echo "$as_me:$LINENO: result: $bu_cv_have_fopen64" >&5 ++echo "${ECHO_T}$bu_cv_have_fopen64" >&6; } + if test "$bu_cv_have_fopen64" != no; then + + cat >>confdefs.h <<\_ACEOF +@@ -9499,8 +9991,8 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi +-echo "$as_me:$LINENO: checking for stat64" >&5 +-echo $ECHO_N "checking for stat64... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for stat64" >&5 ++echo $ECHO_N "checking for stat64... $ECHO_C" >&6; } + if test "${bu_cv_have_stat64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9520,33 +10012,29 @@ struct stat64 st; stat64 ("/tmp/foo", &s + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + bu_cv_have_stat64=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-saved_CPPFLAGS=$CPPFLAGS ++ saved_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -9564,191 +10052,146 @@ struct stat64 st; stat64 ("/tmp/foo", &s + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + bu_cv_have_stat64="need -D_LARGEFILE64_SOURCE" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bu_cv_have_stat64=no ++ bu_cv_have_stat64=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS=$saved_CPPFLAGS + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi + +-echo "$as_me:$LINENO: result: $bu_cv_have_stat64" >&5 +-echo "${ECHO_T}$bu_cv_have_stat64" >&6 ++{ echo "$as_me:$LINENO: result: $bu_cv_have_stat64" >&5 ++echo "${ECHO_T}$bu_cv_have_stat64" >&6; } + if test "$bu_cv_have_stat64" != no; then + + cat >>confdefs.h <<\_ACEOF + #define HAVE_STAT64 1 + _ACEOF + +-fi +-if test "$bu_cv_have_fopen64" = "need -D_LARGEFILE64_SOURCE" \ +- || test "$bu_cv_have_stat64" = "need -D_LARGEFILE64_SOURCE"; then +- +-cat >>confdefs.h <<\_ACEOF +-#define _LARGEFILE64_SOURCE 1 +-_ACEOF +- +- CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE" +-fi +- +-# Some systems have frexp only in -lm, not in -lc. +-echo "$as_me:$LINENO: checking for library containing frexp" >&5 +-echo $ECHO_N "checking for library containing frexp... $ECHO_C" >&6 +-if test "${ac_cv_search_frexp+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_func_search_save_LIBS=$LIBS +-ac_cv_search_frexp=no +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char frexp (); +-int +-main () +-{ +-frexp (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_frexp="none required" +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++fi ++if test "$bu_cv_have_fopen64" = "need -D_LARGEFILE64_SOURCE" \ ++ || test "$bu_cv_have_stat64" = "need -D_LARGEFILE64_SOURCE"; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define _LARGEFILE64_SOURCE 1 ++_ACEOF + ++ CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE" + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-if test "$ac_cv_search_frexp" = no; then +- for ac_lib in m; do +- LIBS="-l$ac_lib $ac_func_search_save_LIBS" +- cat >conftest.$ac_ext <<_ACEOF ++ ++# Some systems have frexp only in -lm, not in -lc. ++{ echo "$as_me:$LINENO: checking for library containing frexp" >&5 ++echo $ECHO_N "checking for library containing frexp... $ECHO_C" >&6; } ++if test "${ac_cv_search_frexp+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_func_search_save_LIBS=$LIBS ++cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char frexp (); + int + main () + { +-frexp (); ++return frexp (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++for ac_lib in '' m; do ++ if test -z "$ac_lib"; then ++ ac_res="none required" ++ else ++ ac_res=-l$ac_lib ++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" ++ fi ++ rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_frexp="-l$ac_lib" +-break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_search_frexp=$ac_res + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- done ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext ++ if test "${ac_cv_search_frexp+set}" = set; then ++ break ++fi ++done ++if test "${ac_cv_search_frexp+set}" = set; then ++ : ++else ++ ac_cv_search_frexp=no + fi ++rm conftest.$ac_ext + LIBS=$ac_func_search_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_search_frexp" >&5 +-echo "${ECHO_T}$ac_cv_search_frexp" >&6 +-if test "$ac_cv_search_frexp" != no; then +- test "$ac_cv_search_frexp" = "none required" || LIBS="$ac_cv_search_frexp $LIBS" ++{ echo "$as_me:$LINENO: result: $ac_cv_search_frexp" >&5 ++echo "${ECHO_T}$ac_cv_search_frexp" >&6; } ++ac_res=$ac_cv_search_frexp ++if test "$ac_res" != no; then ++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + fi + + +-echo "$as_me:$LINENO: checking for time_t in time.h" >&5 +-echo $ECHO_N "checking for time_t in time.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for time_t in time.h" >&5 ++echo $ECHO_N "checking for time_t in time.h... $ECHO_C" >&6; } + if test "${bu_cv_decl_time_t_time_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9768,39 +10211,35 @@ time_t i; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bu_cv_decl_time_t_time_h=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bu_cv_decl_time_t_time_h=no ++ bu_cv_decl_time_t_time_h=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + +-echo "$as_me:$LINENO: result: $bu_cv_decl_time_t_time_h" >&5 +-echo "${ECHO_T}$bu_cv_decl_time_t_time_h" >&6 ++{ echo "$as_me:$LINENO: result: $bu_cv_decl_time_t_time_h" >&5 ++echo "${ECHO_T}$bu_cv_decl_time_t_time_h" >&6; } + if test $bu_cv_decl_time_t_time_h = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -9809,8 +10248,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for time_t in sys/types.h" >&5 +-echo $ECHO_N "checking for time_t in sys/types.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for time_t in sys/types.h" >&5 ++echo $ECHO_N "checking for time_t in sys/types.h... $ECHO_C" >&6; } + if test "${bu_cv_decl_time_t_types_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9830,39 +10269,35 @@ time_t i; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bu_cv_decl_time_t_types_h=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bu_cv_decl_time_t_types_h=no ++ bu_cv_decl_time_t_types_h=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + +-echo "$as_me:$LINENO: result: $bu_cv_decl_time_t_types_h" >&5 +-echo "${ECHO_T}$bu_cv_decl_time_t_types_h" >&6 ++{ echo "$as_me:$LINENO: result: $bu_cv_decl_time_t_types_h" >&5 ++echo "${ECHO_T}$bu_cv_decl_time_t_types_h" >&6; } + if test $bu_cv_decl_time_t_types_h = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -9871,8 +10306,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for a known getopt prototype in unistd.h" >&5 +-echo $ECHO_N "checking for a known getopt prototype in unistd.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a known getopt prototype in unistd.h" >&5 ++echo $ECHO_N "checking for a known getopt prototype in unistd.h... $ECHO_C" >&6; } + if test "${bu_cv_decl_getopt_unistd_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9892,39 +10327,35 @@ extern int getopt (int, char *const*, co + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bu_cv_decl_getopt_unistd_h=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bu_cv_decl_getopt_unistd_h=no ++ bu_cv_decl_getopt_unistd_h=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + +-echo "$as_me:$LINENO: result: $bu_cv_decl_getopt_unistd_h" >&5 +-echo "${ECHO_T}$bu_cv_decl_getopt_unistd_h" >&6 ++{ echo "$as_me:$LINENO: result: $bu_cv_decl_getopt_unistd_h" >&5 ++echo "${ECHO_T}$bu_cv_decl_getopt_unistd_h" >&6; } + if test $bu_cv_decl_getopt_unistd_h = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -9935,8 +10366,8 @@ fi + + # Under Next 3.2 apparently does not define struct utimbuf + # by default. +-echo "$as_me:$LINENO: checking for utime.h" >&5 +-echo $ECHO_N "checking for utime.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for utime.h" >&5 ++echo $ECHO_N "checking for utime.h... $ECHO_C" >&6; } + if test "${bu_cv_header_utime_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9960,39 +10391,35 @@ struct utimbuf s; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + bu_cv_header_utime_h=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-bu_cv_header_utime_h=no ++ bu_cv_header_utime_h=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + +-echo "$as_me:$LINENO: result: $bu_cv_header_utime_h" >&5 +-echo "${ECHO_T}$bu_cv_header_utime_h" >&6 ++{ echo "$as_me:$LINENO: result: $bu_cv_header_utime_h" >&5 ++echo "${ECHO_T}$bu_cv_header_utime_h" >&6; } + if test $bu_cv_header_utime_h = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -10001,8 +10428,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking whether fprintf is declared" >&5 +-echo $ECHO_N "checking whether fprintf is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether fprintf is declared" >&5 ++echo $ECHO_N "checking whether fprintf is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_fprintf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10017,7 +10444,7 @@ int + main () + { + #ifndef fprintf +- char *p = (char *) fprintf; ++ (void) fprintf; + #endif + + ; +@@ -10025,38 +10452,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_fprintf=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_fprintf=no ++ ac_cv_have_decl_fprintf=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_fprintf" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_fprintf" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_fprintf" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_fprintf" >&6; } + if test $ac_cv_have_decl_fprintf = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10071,8 +10494,8 @@ _ACEOF + + + fi +-echo "$as_me:$LINENO: checking whether stpcpy is declared" >&5 +-echo $ECHO_N "checking whether stpcpy is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether stpcpy is declared" >&5 ++echo $ECHO_N "checking whether stpcpy is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_stpcpy+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10087,7 +10510,7 @@ int + main () + { + #ifndef stpcpy +- char *p = (char *) stpcpy; ++ (void) stpcpy; + #endif + + ; +@@ -10095,38 +10518,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_stpcpy=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_stpcpy=no ++ ac_cv_have_decl_stpcpy=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_stpcpy" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_stpcpy" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_stpcpy" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_stpcpy" >&6; } + if test $ac_cv_have_decl_stpcpy = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10141,8 +10560,8 @@ _ACEOF + + + fi +-echo "$as_me:$LINENO: checking whether strstr is declared" >&5 +-echo $ECHO_N "checking whether strstr is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether strstr is declared" >&5 ++echo $ECHO_N "checking whether strstr is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_strstr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10157,7 +10576,7 @@ int + main () + { + #ifndef strstr +- char *p = (char *) strstr; ++ (void) strstr; + #endif + + ; +@@ -10165,38 +10584,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_strstr=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_strstr=no ++ ac_cv_have_decl_strstr=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_strstr" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_strstr" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strstr" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_strstr" >&6; } + if test $ac_cv_have_decl_strstr = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10211,8 +10626,8 @@ _ACEOF + + + fi +-echo "$as_me:$LINENO: checking whether sbrk is declared" >&5 +-echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether sbrk is declared" >&5 ++echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_sbrk+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10227,7 +10642,7 @@ int + main () + { + #ifndef sbrk +- char *p = (char *) sbrk; ++ (void) sbrk; + #endif + + ; +@@ -10235,38 +10650,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_sbrk=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_sbrk=no ++ ac_cv_have_decl_sbrk=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6; } + if test $ac_cv_have_decl_sbrk = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10281,8 +10692,8 @@ _ACEOF + + + fi +-echo "$as_me:$LINENO: checking whether getenv is declared" >&5 +-echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether getenv is declared" >&5 ++echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_getenv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10297,7 +10708,7 @@ int + main () + { + #ifndef getenv +- char *p = (char *) getenv; ++ (void) getenv; + #endif + + ; +@@ -10305,38 +10716,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_getenv=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_getenv=no ++ ac_cv_have_decl_getenv=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6; } + if test $ac_cv_have_decl_getenv = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10351,8 +10758,8 @@ _ACEOF + + + fi +-echo "$as_me:$LINENO: checking whether environ is declared" >&5 +-echo $ECHO_N "checking whether environ is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether environ is declared" >&5 ++echo $ECHO_N "checking whether environ is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_environ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10367,7 +10774,7 @@ int + main () + { + #ifndef environ +- char *p = (char *) environ; ++ (void) environ; + #endif + + ; +@@ -10375,38 +10782,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_environ=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_environ=no ++ ac_cv_have_decl_environ=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_environ" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_environ" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_environ" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_environ" >&6; } + if test $ac_cv_have_decl_environ = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10421,8 +10824,8 @@ _ACEOF + + + fi +-echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5 +-echo $ECHO_N "checking whether getc_unlocked is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5 ++echo $ECHO_N "checking whether getc_unlocked is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10437,7 +10840,7 @@ int + main () + { + #ifndef getc_unlocked +- char *p = (char *) getc_unlocked; ++ (void) getc_unlocked; + #endif + + ; +@@ -10445,38 +10848,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_getc_unlocked=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_getc_unlocked=no ++ ac_cv_have_decl_getc_unlocked=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_getc_unlocked" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_getc_unlocked" >&6; } + if test $ac_cv_have_decl_getc_unlocked = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10491,8 +10890,8 @@ _ACEOF + + + fi +-echo "$as_me:$LINENO: checking whether snprintf is declared" >&5 +-echo $ECHO_N "checking whether snprintf is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether snprintf is declared" >&5 ++echo $ECHO_N "checking whether snprintf is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_snprintf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10507,7 +10906,7 @@ int + main () + { + #ifndef snprintf +- char *p = (char *) snprintf; ++ (void) snprintf; + #endif + + ; +@@ -10515,38 +10914,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_snprintf=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_snprintf=no ++ ac_cv_have_decl_snprintf=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_snprintf" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_snprintf" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_snprintf" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_snprintf" >&6; } + if test $ac_cv_have_decl_snprintf = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10561,8 +10956,8 @@ _ACEOF + + + fi +-echo "$as_me:$LINENO: checking whether vsnprintf is declared" >&5 +-echo $ECHO_N "checking whether vsnprintf is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether vsnprintf is declared" >&5 ++echo $ECHO_N "checking whether vsnprintf is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_vsnprintf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10577,7 +10972,7 @@ int + main () + { + #ifndef vsnprintf +- char *p = (char *) vsnprintf; ++ (void) vsnprintf; + #endif + + ; +@@ -10585,38 +10980,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_vsnprintf=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_vsnprintf=no ++ ac_cv_have_decl_vsnprintf=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_vsnprintf" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_vsnprintf" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_vsnprintf" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_vsnprintf" >&6; } + if test $ac_cv_have_decl_vsnprintf = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -10817,8 +11208,10 @@ done + + + +- ac_config_files="$ac_config_files Makefile doc/Makefile po/Makefile.in:po/Make-in" +- ac_config_commands="$ac_config_commands default" ++ac_config_files="$ac_config_files Makefile doc/Makefile po/Makefile.in:po/Make-in" ++ ++ac_config_commands="$ac_config_commands default" ++ + 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 +@@ -10837,39 +11230,58 @@ _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, don't put newlines in cache variables' values. ++# 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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ + (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ 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 \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} | ++ esac | ++ sort ++) | + sed ' ++ /^ac_cv_env_/b end + t clear +- : clear ++ :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end +- /^ac_cv_env/!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" && echo "updating cache $cache_file" ++ 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" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else +- echo "not updating unwritable cache $cache_file" ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi + fi + rm -f confcache +@@ -10878,32 +11290,18 @@ test "x$prefix" = xNONE && prefix=$ac_de + # Let make expand exec_prefix. + test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +-# 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 +- + DEFS=-DHAVE_CONFIG_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_i=`echo "$ac_i" | +- sed 's/\$U\././;s/\.o$//;s/\.obj$//'` +- # 2. Add them. +- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" +- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' ++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ++ ac_i=`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 + +@@ -10955,17 +11353,45 @@ cat >>$CONFIG_STATUS <<\_ACEOF + ## M4sh Initialization. ## + ## --------------------- ## + +-# Be Bourne compatible ++# 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=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix ++ 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 ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh + fi +-DUALCASE=1; export DUALCASE # for MKS sh + + # Support unset when possible. + if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +@@ -10975,8 +11401,43 @@ else + 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.) ++as_nl=' ++' ++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 ++ 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. +-$as_unset ENV MAIL MAILPATH ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done + PS1='$ ' + PS2='> ' + PS4='+ ' +@@ -10990,18 +11451,19 @@ do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else +- $as_unset $as_var ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi + done + + # Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then ++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 ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename + else + as_basename=false +@@ -11009,159 +11471,120 @@ fi + + + # Name of the executable. +-as_me=`$as_basename "$0" || ++as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + +- +-# PATH needs CR, and LINENO needs CR and PATH. +-# 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 +- +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh +-fi ++# CDPATH. ++$as_unset CDPATH + + +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- 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 + +- ;; +- 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 +- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') +- 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=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in +- /*) +- if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac ++ 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 before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. ++ # 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 +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | ++ # 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 +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, ++ s/-\n.*// + ' >$as_me.lineno && +- chmod +x $as_me.lineno || +- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} ++ chmod +x "$as_me.lineno" || ++ { 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 sensible to this). +- . ./$as_me.lineno ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" + # Exit status is that of the last command. + exit + } + + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; ++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; then ++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 ++fi + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links ++ 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' +- else +- as_ln_s='ln -s' +- fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +-rm -f conf$$ conf$$.exe conf$$.file ++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=: +@@ -11170,7 +11593,28 @@ else + as_mkdir_p=false + fi + +-as_executable_p="test -f" ++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'" +@@ -11179,31 +11623,14 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P + as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH +- + exec 6>&1 + +-# Open the log real soon, to keep \$[0] and so on meaningful, and to ++# 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. Logging --version etc. is OK. +-exec 5>>config.log +-{ +- echo +- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +-## Running $as_me. ## +-_ASBOX +-} >&5 +-cat >&5 <<_CSEOF +- ++# values after options handling. ++ac_log=" + This file was extended by $as_me, which was +-generated by GNU Autoconf 2.59. Invocation command line was ++generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS +@@ -11211,30 +11638,20 @@ generated by GNU Autoconf 2.59. Invocat + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +-_CSEOF +-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +-echo >&5 ++on `(hostname || uname -n) 2>/dev/null | sed 1q` ++" ++ + _ACEOF + ++cat >>$CONFIG_STATUS <<_ACEOF + # Files that config.status was made for. +-if test -n "$ac_config_files"; then +- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_headers"; then +- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_links"; then +- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +-fi ++config_files="$ac_config_files" ++config_headers="$ac_config_headers" ++config_commands="$ac_config_commands" + +-if test -n "$ac_config_commands"; then +- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +-fi ++_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF +- + ac_cs_usage="\ + \`$as_me' instantiates files from templates according to the + current configuration. +@@ -11242,7 +11659,7 @@ current configuration. + Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit +- -V, --version print version number, then exit ++ -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions +@@ -11261,19 +11678,21 @@ Configuration commands: + $config_commands + + Report bugs to ." +-_ACEOF + ++_ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + ac_cs_version="\\ + config.status +-configured by $0, generated by GNU Autoconf 2.59, +- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ++configured by $0, generated by GNU Autoconf 2.61, ++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +-Copyright (C) 2003 Free Software Foundation, Inc. ++Copyright (C) 2006 Free Software Foundation, Inc. + This config.status script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it." +-srcdir=$srcdir +-INSTALL="$INSTALL" ++ ++ac_pwd='$ac_pwd' ++srcdir='$srcdir' ++INSTALL='$INSTALL' + _ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF +@@ -11284,39 +11703,24 @@ while test $# != 0 + do + case $1 in + --*=*) +- ac_option=`expr "x$1" : 'x\([^=]*\)='` +- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; +- -*) ++ *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; +- *) # This is not an option, so the user has probably given explicit +- # arguments. +- ac_option=$1 +- ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; +- --version | --vers* | -V ) +- echo "$ac_cs_version"; exit 0 ;; +- --he | --h) +- # Conflict between --help and --header +- { { echo "$as_me:$LINENO: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; };; +- --help | --hel | -h ) +- echo "$ac_cs_usage"; exit 0 ;; +- --debug | --d* | -d ) ++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) ++ echo "$ac_cs_version"; exit ;; ++ --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift +@@ -11326,18 +11730,24 @@ Try \`$0 --help' for more information." + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; ++ --he | --h) ++ # Conflict between --help and --header ++ { echo "$as_me: error: ambiguous option: $1 ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; };; ++ --help | --hel | -h ) ++ 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. +- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&2;} ++ -*) { 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_config_targets="$ac_config_targets $1" ++ ac_need_defaults=false ;; + + esac + shift +@@ -11353,40 +11763,52 @@ fi + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + if \$ac_cs_recheck; then +- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 +- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 ++ CONFIG_SHELL=$SHELL ++ export CONFIG_SHELL ++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + fi + + _ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF ++exec 5>>config.log ++{ ++ echo ++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ++## Running $as_me. ## ++_ASBOX ++ echo "$ac_log" ++} >&5 + ++_ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + # +-# INIT-COMMANDS section. ++# INIT-COMMANDS + # +- + AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + _ACEOF + +- +- + cat >>$CONFIG_STATUS <<\_ACEOF ++ ++# Handling of arguments. + for ac_config_target in $ac_config_targets + do +- case "$ac_config_target" in +- # Handling of arguments. +- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; +- "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; +- "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;; +- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; +- "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; +- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;; ++ case $ac_config_target in ++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; ++ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;; ++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; ++ "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; ++ "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;; ++ "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; ++ + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 + 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 +@@ -11398,391 +11820,496 @@ if $ac_need_defaults; then + fi + + # Have a temporary directory for convenience. Make it in the build tree +-# simply because there is no reason to put it here, and in addition, ++# simply because there is no reason against having it here, and in addition, + # creating and moving files from /tmp can sometimes cause problems. +-# Create a temporary directory, and hook for its removal unless debugging. ++# 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 || + { +- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 ++ 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 -q "./confstatXXXXXX") 2>/dev/null` && ++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" + } || + { +- tmp=./confstat$$-$RANDOM +- (umask 077 && mkdir $tmp) ++ tmp=./conf$$-$RANDOM ++ (umask 077 && mkdir "$tmp") + } || + { + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } + } + +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +- + # +-# CONFIG_FILES section. ++# Set up the sed scripts for CONFIG_FILES section. + # + + # No need to generate the scripts if there are no CONFIG_FILES. + # This happens for instance when ./config.status config.h +-if test -n "\$CONFIG_FILES"; then +- # Protect against being on the right side of a sed subst in config.status. +- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; +- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +-s,@SHELL@,$SHELL,;t t +-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +-s,@exec_prefix@,$exec_prefix,;t t +-s,@prefix@,$prefix,;t t +-s,@program_transform_name@,$program_transform_name,;t t +-s,@bindir@,$bindir,;t t +-s,@sbindir@,$sbindir,;t t +-s,@libexecdir@,$libexecdir,;t t +-s,@datadir@,$datadir,;t t +-s,@sysconfdir@,$sysconfdir,;t t +-s,@sharedstatedir@,$sharedstatedir,;t t +-s,@localstatedir@,$localstatedir,;t t +-s,@libdir@,$libdir,;t t +-s,@includedir@,$includedir,;t t +-s,@oldincludedir@,$oldincludedir,;t t +-s,@infodir@,$infodir,;t t +-s,@mandir@,$mandir,;t t +-s,@build_alias@,$build_alias,;t t +-s,@host_alias@,$host_alias,;t t +-s,@target_alias@,$target_alias,;t t +-s,@DEFS@,$DEFS,;t t +-s,@ECHO_C@,$ECHO_C,;t t +-s,@ECHO_N@,$ECHO_N,;t t +-s,@ECHO_T@,$ECHO_T,;t t +-s,@LIBS@,$LIBS,;t t +-s,@build@,$build,;t t +-s,@build_cpu@,$build_cpu,;t t +-s,@build_vendor@,$build_vendor,;t t +-s,@build_os@,$build_os,;t t +-s,@host@,$host,;t t +-s,@host_cpu@,$host_cpu,;t t +-s,@host_vendor@,$host_vendor,;t t +-s,@host_os@,$host_os,;t t +-s,@target@,$target,;t t +-s,@target_cpu@,$target_cpu,;t t +-s,@target_vendor@,$target_vendor,;t t +-s,@target_os@,$target_os,;t t +-s,@CC@,$CC,;t t +-s,@CFLAGS@,$CFLAGS,;t t +-s,@LDFLAGS@,$LDFLAGS,;t t +-s,@CPPFLAGS@,$CPPFLAGS,;t t +-s,@ac_ct_CC@,$ac_ct_CC,;t t +-s,@EXEEXT@,$EXEEXT,;t t +-s,@OBJEXT@,$OBJEXT,;t t +-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +-s,@INSTALL_DATA@,$INSTALL_DATA,;t t +-s,@CYGPATH_W@,$CYGPATH_W,;t t +-s,@PACKAGE@,$PACKAGE,;t t +-s,@VERSION@,$VERSION,;t t +-s,@ACLOCAL@,$ACLOCAL,;t t +-s,@AUTOCONF@,$AUTOCONF,;t t +-s,@AUTOMAKE@,$AUTOMAKE,;t t +-s,@AUTOHEADER@,$AUTOHEADER,;t t +-s,@MAKEINFO@,$MAKEINFO,;t t +-s,@install_sh@,$install_sh,;t t +-s,@STRIP@,$STRIP,;t t +-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +-s,@mkdir_p@,$mkdir_p,;t t +-s,@AWK@,$AWK,;t t +-s,@SET_MAKE@,$SET_MAKE,;t t +-s,@am__leading_dot@,$am__leading_dot,;t t +-s,@AMTAR@,$AMTAR,;t t +-s,@am__tar@,$am__tar,;t t +-s,@am__untar@,$am__untar,;t t +-s,@DEPDIR@,$DEPDIR,;t t +-s,@am__include@,$am__include,;t t +-s,@am__quote@,$am__quote,;t t +-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +-s,@CCDEPMODE@,$CCDEPMODE,;t t +-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +-s,@LN_S@,$LN_S,;t t +-s,@RANLIB@,$RANLIB,;t t +-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +-s,@LIBTOOL@,$LIBTOOL,;t t +-s,@WARN_CFLAGS@,$WARN_CFLAGS,;t t +-s,@NO_WERROR@,$NO_WERROR,;t t +-s,@YACC@,$YACC,;t t +-s,@LEX@,$LEX,;t t +-s,@LEXLIB@,$LEXLIB,;t t +-s,@LEX_OUTPUT_ROOT@,$LEX_OUTPUT_ROOT,;t t +-s,@CPP@,$CPP,;t t +-s,@EGREP@,$EGREP,;t t +-s,@ALLOCA@,$ALLOCA,;t t +-s,@USE_NLS@,$USE_NLS,;t t +-s,@MSGFMT@,$MSGFMT,;t t +-s,@GMSGFMT@,$GMSGFMT,;t t +-s,@XGETTEXT@,$XGETTEXT,;t t +-s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t +-s,@CATALOGS@,$CATALOGS,;t t +-s,@CATOBJEXT@,$CATOBJEXT,;t t +-s,@DATADIRNAME@,$DATADIRNAME,;t t +-s,@GMOFILES@,$GMOFILES,;t t +-s,@INSTOBJEXT@,$INSTOBJEXT,;t t +-s,@INTLDEPS@,$INTLDEPS,;t t +-s,@INTLLIBS@,$INTLLIBS,;t t +-s,@INTLOBJS@,$INTLOBJS,;t t +-s,@POFILES@,$POFILES,;t t +-s,@POSUB@,$POSUB,;t t +-s,@INCLUDE_LOCALE_H@,$INCLUDE_LOCALE_H,;t t +-s,@GT_NO@,$GT_NO,;t t +-s,@GT_YES@,$GT_YES,;t t +-s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +-s,@l@,$l,;t t +-s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +-s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +-s,@MAINT@,$MAINT,;t t +-s,@HDEFINES@,$HDEFINES,;t t +-s,@AR@,$AR,;t t +-s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t +-s,@EXEEXT_FOR_BUILD@,$EXEEXT_FOR_BUILD,;t t +-s,@DEMANGLER_NAME@,$DEMANGLER_NAME,;t t +-s,@NLMCONV_DEFS@,$NLMCONV_DEFS,;t t +-s,@BUILD_NLMCONV@,$BUILD_NLMCONV,;t t +-s,@BUILD_SRCONV@,$BUILD_SRCONV,;t t +-s,@BUILD_DLLTOOL@,$BUILD_DLLTOOL,;t t +-s,@DLLTOOL_DEFS@,$DLLTOOL_DEFS,;t t +-s,@BUILD_WINDRES@,$BUILD_WINDRES,;t t +-s,@BUILD_DLLWRAP@,$BUILD_DLLWRAP,;t t +-s,@BUILD_MISC@,$BUILD_MISC,;t t +-s,@OBJDUMP_DEFS@,$OBJDUMP_DEFS,;t t +-s,@EMULATION@,$EMULATION,;t t +-s,@EMULATION_VECTOR@,$EMULATION_VECTOR,;t t +-s,@datarootdir@,$datarootdir,;t t +-s,@docdir@,$docdir,;t t +-s,@htmldir@,$htmldir,;t t +-s,@LIBOBJS@,$LIBOBJS,;t t +-s,@LTLIBOBJS@,$LTLIBOBJS,;t t +-CEOF +- +-_ACEOF +- +- cat >>$CONFIG_STATUS <<\_ACEOF +- # Split the substitutions into bite-sized pieces for seds with +- # small command number limits, like on Digital OSF/1 and HP-UX. +- ac_max_sed_lines=48 +- ac_sed_frag=1 # Number of current file. +- ac_beg=1 # First line for current file. +- ac_end=$ac_max_sed_lines # Line after last line for current file. +- ac_more_lines=: +- ac_sed_cmds= +- while $ac_more_lines; do +- if test $ac_beg -gt 1; then +- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- else +- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- fi +- if test ! -s $tmp/subs.frag; then +- ac_more_lines=false +- else +- # The purpose of the label and of the branching condition is to +- # speed up the sed processing (if there are no `@' at all, there +- # is no need to browse any of the substitutions). +- # These are the two extra sed commands mentioned above. +- (echo ':t +- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" +- else +- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" +- fi +- ac_sed_frag=`expr $ac_sed_frag + 1` +- ac_beg=$ac_end +- ac_end=`expr $ac_end + $ac_max_sed_lines` +- fi +- done +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds=cat ++if test -n "$CONFIG_FILES"; then ++ ++_ACEOF ++ ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++SHELL!$SHELL$ac_delim ++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim ++PACKAGE_NAME!$PACKAGE_NAME$ac_delim ++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim ++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim ++PACKAGE_STRING!$PACKAGE_STRING$ac_delim ++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim ++exec_prefix!$exec_prefix$ac_delim ++prefix!$prefix$ac_delim ++program_transform_name!$program_transform_name$ac_delim ++bindir!$bindir$ac_delim ++sbindir!$sbindir$ac_delim ++libexecdir!$libexecdir$ac_delim ++datarootdir!$datarootdir$ac_delim ++datadir!$datadir$ac_delim ++sysconfdir!$sysconfdir$ac_delim ++sharedstatedir!$sharedstatedir$ac_delim ++localstatedir!$localstatedir$ac_delim ++includedir!$includedir$ac_delim ++oldincludedir!$oldincludedir$ac_delim ++docdir!$docdir$ac_delim ++infodir!$infodir$ac_delim ++htmldir!$htmldir$ac_delim ++dvidir!$dvidir$ac_delim ++pdfdir!$pdfdir$ac_delim ++psdir!$psdir$ac_delim ++libdir!$libdir$ac_delim ++localedir!$localedir$ac_delim ++mandir!$mandir$ac_delim ++DEFS!$DEFS$ac_delim ++ECHO_C!$ECHO_C$ac_delim ++ECHO_N!$ECHO_N$ac_delim ++ECHO_T!$ECHO_T$ac_delim ++LIBS!$LIBS$ac_delim ++build_alias!$build_alias$ac_delim ++host_alias!$host_alias$ac_delim ++target_alias!$target_alias$ac_delim ++build!$build$ac_delim ++build_cpu!$build_cpu$ac_delim ++build_vendor!$build_vendor$ac_delim ++build_os!$build_os$ac_delim ++host!$host$ac_delim ++host_cpu!$host_cpu$ac_delim ++host_vendor!$host_vendor$ac_delim ++host_os!$host_os$ac_delim ++target!$target$ac_delim ++target_cpu!$target_cpu$ac_delim ++target_vendor!$target_vendor$ac_delim ++target_os!$target_os$ac_delim ++CC!$CC$ac_delim ++CFLAGS!$CFLAGS$ac_delim ++LDFLAGS!$LDFLAGS$ac_delim ++CPPFLAGS!$CPPFLAGS$ac_delim ++ac_ct_CC!$ac_ct_CC$ac_delim ++EXEEXT!$EXEEXT$ac_delim ++OBJEXT!$OBJEXT$ac_delim ++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim ++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim ++INSTALL_DATA!$INSTALL_DATA$ac_delim ++CYGPATH_W!$CYGPATH_W$ac_delim ++PACKAGE!$PACKAGE$ac_delim ++VERSION!$VERSION$ac_delim ++ACLOCAL!$ACLOCAL$ac_delim ++AUTOCONF!$AUTOCONF$ac_delim ++AUTOMAKE!$AUTOMAKE$ac_delim ++AUTOHEADER!$AUTOHEADER$ac_delim ++MAKEINFO!$MAKEINFO$ac_delim ++install_sh!$install_sh$ac_delim ++STRIP!$STRIP$ac_delim ++INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim ++mkdir_p!$mkdir_p$ac_delim ++AWK!$AWK$ac_delim ++SET_MAKE!$SET_MAKE$ac_delim ++am__leading_dot!$am__leading_dot$ac_delim ++AMTAR!$AMTAR$ac_delim ++am__tar!$am__tar$ac_delim ++am__untar!$am__untar$ac_delim ++DEPDIR!$DEPDIR$ac_delim ++am__include!$am__include$ac_delim ++am__quote!$am__quote$ac_delim ++AMDEP_TRUE!$AMDEP_TRUE$ac_delim ++AMDEP_FALSE!$AMDEP_FALSE$ac_delim ++AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim ++CCDEPMODE!$CCDEPMODE$ac_delim ++am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim ++am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim ++LN_S!$LN_S$ac_delim ++RANLIB!$RANLIB$ac_delim ++LIBTOOL!$LIBTOOL$ac_delim ++WARN_CFLAGS!$WARN_CFLAGS$ac_delim ++NO_WERROR!$NO_WERROR$ac_delim ++YACC!$YACC$ac_delim ++YFLAGS!$YFLAGS$ac_delim ++LEX!$LEX$ac_delim ++LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim ++LEXLIB!$LEXLIB$ac_delim ++CPP!$CPP$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +-fi # test -n "$CONFIG_FILES" ++done ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++CEOF$ac_eof ++_ACEOF ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++GREP!$GREP$ac_delim ++EGREP!$EGREP$ac_delim ++ALLOCA!$ALLOCA$ac_delim ++USE_NLS!$USE_NLS$ac_delim ++MSGFMT!$MSGFMT$ac_delim ++GMSGFMT!$GMSGFMT$ac_delim ++XGETTEXT!$XGETTEXT$ac_delim ++USE_INCLUDED_LIBINTL!$USE_INCLUDED_LIBINTL$ac_delim ++CATALOGS!$CATALOGS$ac_delim ++CATOBJEXT!$CATOBJEXT$ac_delim ++DATADIRNAME!$DATADIRNAME$ac_delim ++GMOFILES!$GMOFILES$ac_delim ++INSTOBJEXT!$INSTOBJEXT$ac_delim ++INTLDEPS!$INTLDEPS$ac_delim ++INTLLIBS!$INTLLIBS$ac_delim ++INTLOBJS!$INTLOBJS$ac_delim ++POFILES!$POFILES$ac_delim ++POSUB!$POSUB$ac_delim ++INCLUDE_LOCALE_H!$INCLUDE_LOCALE_H$ac_delim ++GT_NO!$GT_NO$ac_delim ++GT_YES!$GT_YES$ac_delim ++MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim ++l!$l$ac_delim ++MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim ++MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim ++MAINT!$MAINT$ac_delim ++HDEFINES!$HDEFINES$ac_delim ++AR!$AR$ac_delim ++CC_FOR_BUILD!$CC_FOR_BUILD$ac_delim ++EXEEXT_FOR_BUILD!$EXEEXT_FOR_BUILD$ac_delim ++DEMANGLER_NAME!$DEMANGLER_NAME$ac_delim ++NLMCONV_DEFS!$NLMCONV_DEFS$ac_delim ++BUILD_NLMCONV!$BUILD_NLMCONV$ac_delim ++BUILD_SRCONV!$BUILD_SRCONV$ac_delim ++BUILD_DLLTOOL!$BUILD_DLLTOOL$ac_delim ++DLLTOOL_DEFS!$DLLTOOL_DEFS$ac_delim ++BUILD_WINDRES!$BUILD_WINDRES$ac_delim ++BUILD_DLLWRAP!$BUILD_DLLWRAP$ac_delim ++BUILD_MISC!$BUILD_MISC$ac_delim ++OBJDUMP_DEFS!$OBJDUMP_DEFS$ac_delim ++EMULATION!$EMULATION$ac_delim ++EMULATION_VECTOR!$EMULATION_VECTOR$ac_delim ++LIBOBJS!$LIBOBJS$ac_delim ++LTLIBOBJS!$LTLIBOBJS$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 44; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++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 + ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++:end ++s/|#_!!_#|//g ++CEOF$ac_eof + _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 +-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". +- case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; ++fi # test -n "$CONFIG_FILES" ++ ++ ++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS ++do ++ case $ac_tag in ++ :[FHLC]) ac_mode=$ac_tag; continue;; ++ esac ++ case $ac_mode$ac_tag in ++ :[FHL]*:*);; ++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 ++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 || ++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 ++echo "$as_me: error: cannot find input file: $ac_f" >&2;} ++ { (exit 1); exit 1; }; };; ++ 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 "`IFS=: ++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." ++ if test x"$ac_file" != x-; then ++ configure_input="$ac_file. $configure_input" ++ { echo "$as_me:$LINENO: creating $ac_file" >&5 ++echo "$as_me: creating $ac_file" >&6;} ++ fi ++ ++ case $ac_tag in ++ *:-:* | *:-) cat >"$tmp/stdin";; ++ esac ++ ;; + esac + +- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. +- ac_dir=`(dirname "$ac_file") 2>/dev/null || ++ 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 || ++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || + echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" ++ 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 test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`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 || ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || + echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ 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 ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } +- + ac_builddir=. + +-if test "$ac_dir" != .; then ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`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 +- .) # No --srcdir option. We are building in place. ++ .) # We are building in place. + ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. ++ 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 ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac ++ 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 + +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac + ++ case $ac_mode in ++ :F) ++ # ++ # CONFIG_FILE ++ # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; +- *) ac_INSTALL=$ac_top_builddir$INSTALL ;; ++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac ++_ACEOF + +- if test x"$ac_file" != x-; then +- { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- rm -f "$ac_file" +- fi +- # 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. */ +- if test x"$ac_file" = x-; then +- configure_input= +- else +- configure_input="$ac_file. " +- fi +- configure_input=$configure_input"Generated from `echo $ac_file_in | +- sed 's,.*/,,'` by configure." +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- echo "$f";; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo "$f" +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo "$srcdir/$f" +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } ++cat >>$CONFIG_STATUS <<\_ACEOF ++# 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= ++ ++case `sed -n '/datarootdir/ { ++ p ++ q ++} ++/@datadir@/p ++/@docdir@/p ++/@infodir@/p ++/@localedir@/p ++/@mandir@/p ++' $ac_file_inputs` in ++*datarootdir*) ac_datarootdir_seen=yes;; ++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) ++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++ 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 + sed "$ac_vpsub + $extrasub +@@ -11790,248 +12317,130 @@ _ACEOF + cat >>$CONFIG_STATUS <<\_ACEOF + :t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b +-s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t +-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +-s,@INSTALL@,$ac_INSTALL,;t t +-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out +- rm -f $tmp/stdin +- if test x"$ac_file" != x-; then +- mv $tmp/out $ac_file +- else +- cat $tmp/out +- rm -f $tmp/out +- fi +- +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-# +-# CONFIG_HEADER section. +-# +- +-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +-# NAME is the cpp macro being defined and VALUE is the value it is being given. +-# +-# ac_d sets the value in "#define NAME VALUE" lines. +-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +-ac_dB='[ ].*$,\1#\2' +-ac_dC=' ' +-ac_dD=',;t' +-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +-ac_uB='$,\1#\2define\3' +-ac_uC=' ' +-ac_uD=',;t' ++s&@configure_input@&$configure_input&;t t ++s&@top_builddir@&$ac_top_builddir_sub&;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 ++$ac_datarootdir_hack ++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out ++ ++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"; } && ++ { 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 ++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;} + +-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". ++ rm -f "$tmp/stdin" + case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; ++ -) cat "$tmp/out"; rm -f "$tmp/out";; ++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac ++ ;; ++ :H) ++ # ++ # CONFIG_HEADER ++ # ++_ACEOF ++ ++# Transform confdefs.h into a sed script `conftest.defines', that ++# substitutes the proper values into config.h.in to produce config.h. ++rm -f conftest.defines conftest.tail ++# First, append a space to every undef/define line, to ease matching. ++echo 's/$/ /' >conftest.defines ++# Then, protect against being on the right side of a sed subst, or in ++# an unquoted here document, in config.status. If some macros were ++# called several times there might be several #defines for the same ++# symbol, which is useless. But do not sort them, since the last ++# AC_DEFINE must be honored. ++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* ++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where ++# NAME is the cpp macro being defined, VALUE is the value it is being given. ++# PARAMS is the parameter list in the macro definition--in most cases, it's ++# just an empty string. ++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' ++ac_dB='\\)[ (].*,\\1define\\2' ++ac_dC=' ' ++ac_dD=' ,' + +- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- # Do quote $f, to prevent DOS paths from being IFS'd. +- echo "$f";; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo "$f" +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo "$srcdir/$f" +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } +- # Remove the trailing spaces. +- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in +- +-_ACEOF +- +-# Transform confdefs.h into two sed scripts, `conftest.defines' and +-# `conftest.undefs', that substitutes the proper values into +-# config.h.in to produce config.h. The first handles `#define' +-# templates, and the second `#undef' templates. +-# And first: Protect against being on the right side of a sed subst in +-# config.status. Protect against being in an unquoted here document +-# in config.status. +-rm -f conftest.defines conftest.undefs +-# Using a here document instead of a string reduces the quoting nightmare. +-# Putting comments in sed scripts is not portable. +-# +-# `end' is used to avoid that the second main sed command (meant for +-# 0-ary CPP macros) applies to n-ary macro definitions. +-# See the Autoconf documentation for `clear'. +-cat >confdef2sed.sed <<\_ACEOF +-s/[\\&,]/\\&/g +-s,[\\$`],\\&,g +-t clear +-: clear +-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +-t end +-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +-: end +-_ACEOF +-# If some macros were called several times there might be several times +-# the same #defines, which is useless. Nevertheless, we may not want to +-# sort them, since we want the *last* AC-DEFINE to be honored. +-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +-rm -f confdef2sed.sed ++uniq confdefs.h | ++ sed -n ' ++ t rset ++ :rset ++ s/^[ ]*#[ ]*define[ ][ ]*// ++ t ok ++ d ++ :ok ++ s/[\\&,]/\\&/g ++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p ++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ++ ' >>conftest.defines + +-# This sed command replaces #undef with comments. This is necessary, for ++# Remove the space that was appended to ease matching. ++# Then replace #undef with comments. This is necessary, for + # example, in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. +-cat >>conftest.undefs <<\_ACEOF +-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, ++# (The regexp can be short, since the line contains either #define or #undef.) ++echo 's/ $// ++s,^[ #]*u.*,/* & */,' >>conftest.defines ++ ++# Break up conftest.defines: ++ac_max_sed_lines=50 ++ ++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" ++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" ++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" ++# et cetera. ++ac_in='$ac_file_inputs' ++ac_out='"$tmp/out1"' ++ac_nxt='"$tmp/out2"' ++ ++while : ++do ++ # Write a here document: ++ cat >>$CONFIG_STATUS <<_ACEOF ++ # First, check the format of the line: ++ cat >"\$tmp/defines.sed" <<\\CEOF ++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def ++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def ++b ++:def + _ACEOF +- +-# Break up conftest.defines because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +-echo ' :' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.defines >/dev/null +-do +- # Write a limited-size here document to $tmp/defines.sed. +- echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#define' lines. +- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS ++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF +- sed -f $tmp/defines.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail ++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS ++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in ++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail ++ grep . conftest.tail >/dev/null || break + rm -f conftest.defines + mv conftest.tail conftest.defines + done +-rm -f conftest.defines +-echo ' fi # grep' >>$CONFIG_STATUS +-echo >>$CONFIG_STATUS +- +-# Break up conftest.undefs because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.undefs >/dev/null +-do +- # Write a limited-size here document to $tmp/undefs.sed. +- echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#undef' +- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS +- echo 'CEOF +- sed -f $tmp/undefs.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail +- rm -f conftest.undefs +- mv conftest.tail conftest.undefs +-done +-rm -f conftest.undefs ++rm -f conftest.defines conftest.tail + ++echo "ac_result=$ac_in" >>$CONFIG_STATUS + cat >>$CONFIG_STATUS <<\_ACEOF +- # 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. */ +- if test x"$ac_file" = x-; then +- echo "/* Generated by configure. */" >$tmp/config.h +- else +- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h +- fi +- cat $tmp/in >>$tmp/config.h +- rm -f $tmp/in + if test x"$ac_file" != x-; then +- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then ++ echo "/* $configure_input */" >"$tmp/config.h" ++ cat "$ac_result" >>"$tmp/config.h" ++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 + echo "$as_me: $ac_file is unchanged" >&6;} + else +- ac_dir=`(dirname "$ac_file") 2>/dev/null || +-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_file" : 'X\(//\)[^/]' \| \ +- X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } +- + rm -f $ac_file +- mv $tmp/config.h $ac_file ++ mv "$tmp/config.h" $ac_file + fi + else +- cat $tmp/config.h +- rm -f $tmp/config.h ++ echo "/* $configure_input */" ++ cat "$ac_result" + fi ++ rm -f "$tmp/out12" + # Compute $ac_file's index in $config_headers. + _am_stamp_count=1 + for _am_header in $config_headers :; do +@@ -12042,135 +12451,39 @@ for _am_header in $config_headers :; do + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac + done +-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || ++echo "timestamp for $ac_file" >`$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 || ++ X$ac_file : 'X\(/\)' \| . 2>/dev/null || + echo X$ac_file | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'`/stamp-h$_am_stamp_count +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-# +-# CONFIG_COMMANDS section. +-# +-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue +- ac_dest=`echo "$ac_file" | sed 's,:.*,,'` +- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_dir=`(dirname "$ac_dest") 2>/dev/null || +-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_dest" : 'X\(//\)[^/]' \| \ +- X"$ac_dest" : 'X\(//\)$' \| \ +- X"$ac_dest" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_dest" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } +- +- ac_builddir=. +- +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi +- +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'`/stamp-h$_am_stamp_count ++ ;; + +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac ++ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 ++echo "$as_me: executing $ac_file commands" >&6;} ++ ;; ++ esac + + +- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +-echo "$as_me: executing $ac_dest commands" >&6;} +- case $ac_dest in +- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do ++ case $ac_file$ac_mode in ++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; 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. +@@ -12180,18 +12493,29 @@ echo "$as_me: executing $ac_dest command + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then +- dirpart=`(dirname "$mf") 2>/dev/null || ++ dirpart=`$as_dirname -- "$mf" || + $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ +- X"$mf" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$mf" : 'X\(/\)' \| . 2>/dev/null || + echo X"$mf" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + else + continue + fi +@@ -12213,58 +12537,84 @@ echo X"$mf" | + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue +- fdir=`(dirname "$file") 2>/dev/null || ++ fdir=`$as_dirname -- "$file" || + $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ +- X"$file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$file" : 'X\(/\)' \| . 2>/dev/null || + echo X"$file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p $dirpart/$fdir +- else +- as_dir=$dirpart/$fdir ++ 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 test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`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 || ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || + echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ 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 ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } +- + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done + ;; +- default ) ++ "default":C) + case "x$CONFIG_FILES" in + *) sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile ;; + esac + ;; ++ + esac +-done +-_ACEOF ++done # for ac_tag + +-cat >>$CONFIG_STATUS <<\_ACEOF + + { (exit 0); exit 0; } + _ACEOF +diff -Nrup binutils-2.17/binutils/doc/binutils.info binutils-2.17.atmel.1.3.0/binutils/doc/binutils.info +--- binutils-2.17/binutils/doc/binutils.info 2006-06-23 20:19:48.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/binutils/doc/binutils.info 2007-03-26 10:34:44.000000000 +0200 +@@ -1,5 +1,7 @@ +-This is ../.././binutils/doc/binutils.info, produced by makeinfo +-version 4.8 from ../.././binutils/doc/binutils.texi. ++This is ++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/binutils/doc/binutils.info, ++produced by makeinfo version 4.8 from ++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/binutils/doc/binutils.texi. + + START-INFO-DIR-ENTRY + * Binutils: (binutils). The GNU binary utilities. +@@ -3803,33 +3805,33 @@ Index + +  + Tag Table: +-Node: Top1751 +-Node: ar3304 +-Node: ar cmdline5482 +-Node: ar scripts13625 +-Node: nm19313 +-Node: objcopy27509 +-Node: objdump50561 +-Node: ranlib65474 +-Node: size66229 +-Node: strings69076 +-Node: strip71426 +-Node: c++filt76905 +-Ref: c++filt-Footnote-181833 +-Node: addr2line81939 +-Node: nlmconv85210 +-Node: windres87816 +-Node: dlltool93549 +-Node: def file format104387 +-Node: readelf106125 +-Node: Common Options110833 +-Node: Selecting The Target System111873 +-Node: Target Selection112805 +-Node: Architecture Selection114787 +-Node: Reporting Bugs115615 +-Node: Bug Criteria116394 +-Node: Bug Reporting116947 +-Node: GNU Free Documentation License124041 +-Node: Index143773 ++Node: Top1885 ++Node: ar3438 ++Node: ar cmdline5616 ++Node: ar scripts13759 ++Node: nm19447 ++Node: objcopy27643 ++Node: objdump50695 ++Node: ranlib65608 ++Node: size66363 ++Node: strings69210 ++Node: strip71560 ++Node: c++filt77039 ++Ref: c++filt-Footnote-181967 ++Node: addr2line82073 ++Node: nlmconv85344 ++Node: windres87950 ++Node: dlltool93683 ++Node: def file format104521 ++Node: readelf106259 ++Node: Common Options110967 ++Node: Selecting The Target System112007 ++Node: Target Selection112939 ++Node: Architecture Selection114921 ++Node: Reporting Bugs115749 ++Node: Bug Criteria116528 ++Node: Bug Reporting117081 ++Node: GNU Free Documentation License124175 ++Node: Index143907 +  + End Tag Table +diff -Nrup binutils-2.17/binutils/doc/Makefile.in binutils-2.17.atmel.1.3.0/binutils/doc/Makefile.in +--- binutils-2.17/binutils/doc/Makefile.in 2006-06-03 06:45:50.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/binutils/doc/Makefile.in 2007-03-26 10:32:10.000000000 +0200 +@@ -109,6 +109,7 @@ EXEEXT = @EXEEXT@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + GMOFILES = @GMOFILES@ + GMSGFMT = @GMSGFMT@ ++GREP = @GREP@ + GT_NO = @GT_NO@ + GT_YES = @GT_YES@ + HDEFINES = @HDEFINES@ +@@ -159,9 +160,8 @@ VERSION = @VERSION@ + WARN_CFLAGS = @WARN_CFLAGS@ + XGETTEXT = @XGETTEXT@ + YACC = @YACC@ ++YFLAGS = @YFLAGS@ + ac_ct_CC = @ac_ct_CC@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ + am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ + am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ + am__include = @am__include@ +@@ -178,6 +178,7 @@ build_vendor = @build_vendor@ + datadir = @datadir@ + datarootdir = @datarootdir@ + docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ +@@ -191,12 +192,15 @@ install_sh = @install_sh@ + l = @l@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ +@@ -368,10 +372,13 @@ dist-info: $(INFO_DEPS) + $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$base; then d=.; else d=$(srcdir); fi; \ +- for file in $$d/$$base*; do \ +- relfile=`expr "$$file" : "$$d/\(.*\)"`; \ +- test -f $(distdir)/$$relfile || \ +- cp -p $$file $(distdir)/$$relfile; \ ++ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ ++ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ ++ if test -f $$file; then \ ++ relfile=`expr "$$file" : "$$d/\(.*\)"`; \ ++ test -f $(distdir)/$$relfile || \ ++ cp -p $$file $(distdir)/$$relfile; \ ++ else :; fi; \ + done; \ + done + +diff -Nrup binutils-2.17/binutils/Makefile.am binutils-2.17.atmel.1.3.0/binutils/Makefile.am +--- binutils-2.17/binutils/Makefile.am 2006-04-06 23:49:26.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/binutils/Makefile.am 2007-03-26 10:20:22.000000000 +0200 +@@ -511,7 +511,7 @@ readelf.o: readelf.c dwarf.h ../bfd/bfd. + $(INCDIR)/symcat.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/elf/common.h \ + $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/alpha.h \ + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h \ +- $(INCDIR)/elf/avr.h $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h \ ++ $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h \ + $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \ + $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/h8.h \ + $(INCDIR)/elf/hppa.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/i370.h \ +diff -Nrup binutils-2.17/binutils/Makefile.in binutils-2.17.atmel.1.3.0/binutils/Makefile.in +--- binutils-2.17/binutils/Makefile.in 2006-06-02 04:21:08.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/binutils/Makefile.in 2007-03-26 10:32:10.000000000 +0200 +@@ -266,6 +266,7 @@ EXEEXT = @EXEEXT@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + GMOFILES = @GMOFILES@ + GMSGFMT = @GMSGFMT@ ++GREP = @GREP@ + GT_NO = @GT_NO@ + GT_YES = @GT_YES@ + HDEFINES = @HDEFINES@ +@@ -316,9 +317,8 @@ VERSION = @VERSION@ + WARN_CFLAGS = @WARN_CFLAGS@ + XGETTEXT = @XGETTEXT@ + YACC = `if [ -f ../bison/bison ]; then echo ../bison/bison -y -L$(srcdir)/../bison/; else echo @YACC@; fi` ++YFLAGS = -d + ac_ct_CC = @ac_ct_CC@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ + am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ + am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ + am__include = @am__include@ +@@ -335,6 +335,7 @@ build_vendor = @build_vendor@ + datadir = @datadir@ + datarootdir = @datarootdir@ + docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ +@@ -348,12 +349,15 @@ install_sh = @install_sh@ + l = @l@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ +@@ -365,7 +369,6 @@ target_vendor = @target_vendor@ + AUTOMAKE_OPTIONS = cygnus dejagnu + SUBDIRS = doc po + tooldir = $(exec_prefix)/$(target_alias) +-YFLAGS = -d + AM_CFLAGS = $(WARN_CFLAGS) + + # these two are almost the same program +@@ -1264,7 +1267,7 @@ readelf.o: readelf.c dwarf.h ../bfd/bfd. + $(INCDIR)/symcat.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/elf/common.h \ + $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/alpha.h \ + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h \ +- $(INCDIR)/elf/avr.h $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h \ ++ $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h \ + $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \ + $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/h8.h \ + $(INCDIR)/elf/hppa.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/i370.h \ +diff -Nrup binutils-2.17/binutils/readelf.c binutils-2.17.atmel.1.3.0/binutils/readelf.c +--- binutils-2.17/binutils/readelf.c 2006-03-10 18:20:28.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/binutils/readelf.c 2007-03-26 10:20:22.000000000 +0200 +@@ -71,6 +71,7 @@ + #include "elf/arc.h" + #include "elf/arm.h" + #include "elf/avr.h" ++#include "elf/avr32.h" + #include "elf/bfin.h" + #include "elf/cris.h" + #include "elf/d10v.h" +@@ -590,6 +591,7 @@ guess_is_rela (unsigned long e_machine) + case EM_MCORE: + case EM_IA_64: + case EM_AVR: ++ case EM_AVR32: + case EM_AVR_OLD: + case EM_CRIS: + case EM_860: +@@ -959,6 +961,10 @@ dump_relocations (FILE *file, + rtype = elf_avr_reloc_type (type); + break; + ++ case EM_AVR32: ++ rtype = elf_avr32_reloc_type (type); ++ break; ++ + case EM_OLD_SPARCV9: + case EM_SPARC32PLUS: + case EM_SPARCV9: +@@ -1670,6 +1676,7 @@ get_machine_name (unsigned e_machine) + case EM_VAX: return "Digital VAX"; + case EM_AVR_OLD: + case EM_AVR: return "Atmel AVR 8-bit microcontroller"; ++ case EM_AVR32: return "Atmel AVR32"; + case EM_CRIS: return "Axis Communications 32-bit embedded processor"; + case EM_JAVELIN: return "Infineon Technologies 32-bit embedded cpu"; + case EM_FIREPATH: return "Element 14 64-bit DSP processor"; +diff -Nrup binutils-2.17/configure binutils-2.17.atmel.1.3.0/configure +--- binutils-2.17/configure 2006-04-06 23:49:25.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/configure 2007-03-26 10:30:30.000000000 +0200 +@@ -899,7 +899,7 @@ host_libs="intl mmalloc libiberty opcode + # know that we are building the simulator. + # binutils, gas and ld appear in that order because it makes sense to run + # "make check" in that particular order. +-host_tools="texinfo byacc flex bison binutils gas ld fixincludes gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools" ++host_tools="byacc flex bison binutils gas ld fixincludes gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools" + + # libgcj represents the runtime libraries only used by gcj. + libgcj="target-libffi \ +@@ -1064,6 +1064,9 @@ unsupported_languages= + # exist yet. + + case "${host}" in ++ avr32*-*-*) ++ noconfigdirs="$noconfigdirs readline gdb" ++ ;; + hppa*64*-*-*) + noconfigdirs="$noconfigdirs byacc" + ;; +@@ -1863,7 +1866,7 @@ else + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:1867: checking for $ac_word" >&5 ++echo "configure:1870: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1893,7 +1896,7 @@ 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 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:1897: checking for $ac_word" >&5 ++echo "configure:1900: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1944,7 +1947,7 @@ fi + # Extract the first word of "cl", so it can be a program name with args. + set dummy cl; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:1948: checking for $ac_word" >&5 ++echo "configure:1951: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1976,7 +1979,7 @@ fi + fi + + echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +-echo "configure:1980: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ++echo "configure:1983: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + + ac_ext=c + # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +@@ -1987,12 +1990,12 @@ cross_compiling=$ac_cv_prog_cc_cross + + cat > conftest.$ac_ext << EOF + +-#line 1991 "configure" ++#line 1994 "configure" + #include "confdefs.h" + + main(){return(0);} + EOF +-if { (eval echo configure:1996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++if { (eval echo configure:1999: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then +@@ -2018,12 +2021,12 @@ if test $ac_cv_prog_cc_works = no; then + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } + fi + echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +-echo "configure:2022: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 ++echo "configure:2025: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 + echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 + cross_compiling=$ac_cv_prog_cc_cross + + echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +-echo "configure:2027: checking whether we are using GNU C" >&5 ++echo "configure:2030: checking whether we are using GNU C" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -2032,7 +2035,7 @@ else + yes; + #endif + EOF +-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2036: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ++if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2039: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes + else + ac_cv_prog_gcc=no +@@ -2051,7 +2054,7 @@ ac_test_CFLAGS="${CFLAGS+set}" + ac_save_CFLAGS="$CFLAGS" + CFLAGS= + echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +-echo "configure:2055: checking whether ${CC-cc} accepts -g" >&5 ++echo "configure:2058: checking whether ${CC-cc} accepts -g" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -2118,7 +2121,7 @@ fi + # Extract the first word of "${ac_tool_prefix}gnatbind", so it can be a program name with args. + set dummy ${ac_tool_prefix}gnatbind; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:2122: checking for $ac_word" >&5 ++echo "configure:2125: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -2150,7 +2153,7 @@ if test -n "$ac_tool_prefix"; then + # Extract the first word of "gnatbind", so it can be a program name with args. + set dummy gnatbind; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:2154: checking for $ac_word" >&5 ++echo "configure:2157: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -2183,7 +2186,7 @@ fi + fi + + echo $ac_n "checking whether compiler driver understands Ada""... $ac_c" 1>&6 +-echo "configure:2187: checking whether compiler driver understands Ada" >&5 ++echo "configure:2190: checking whether compiler driver understands Ada" >&5 + if eval "test \"`echo '$''{'acx_cv_cc_gcc_supports_ada'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -2215,7 +2218,7 @@ else + fi + + echo $ac_n "checking how to compare bootstrapped objects""... $ac_c" 1>&6 +-echo "configure:2219: checking how to compare bootstrapped objects" >&5 ++echo "configure:2222: checking how to compare bootstrapped objects" >&5 + if eval "test \"`echo '$''{'gcc_cv_prog_cmp_skip'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -2313,9 +2316,9 @@ saved_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $gmpinc" + # Check GMP actually works + echo $ac_n "checking for correct version of gmp.h""... $ac_c" 1>&6 +-echo "configure:2317: checking for correct version of gmp.h" >&5 ++echo "configure:2320: checking for correct version of gmp.h" >&5 + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:2333: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + else +@@ -2339,12 +2342,12 @@ rm -f conftest* + + if test x"$have_gmp" = xyes; then + echo $ac_n "checking for MPFR""... $ac_c" 1>&6 +-echo "configure:2343: checking for MPFR" >&5 ++echo "configure:2346: checking for MPFR" >&5 + + saved_LIBS="$LIBS" + LIBS="$LIBS $gmplibs" + cat > conftest.$ac_ext < + #include +@@ -2352,7 +2355,7 @@ int main() { + mpfr_t n; mpfr_init(n); + ; return 0; } + EOF +-if { (eval echo configure:2356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++if { (eval echo configure:2359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + else +@@ -3403,7 +3406,7 @@ do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:3407: checking for $ac_word" >&5 ++echo "configure:3410: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -3443,7 +3446,7 @@ do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:3447: checking for $ac_word" >&5 ++echo "configure:3450: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -3482,7 +3485,7 @@ do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:3486: checking for $ac_word" >&5 ++echo "configure:3489: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_M4'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -3521,7 +3524,7 @@ do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:3525: checking for $ac_word" >&5 ++echo "configure:3528: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -3561,7 +3564,7 @@ do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:3565: checking for $ac_word" >&5 ++echo "configure:3568: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -3600,7 +3603,7 @@ do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:3604: checking for $ac_word" >&5 ++echo "configure:3607: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -3653,7 +3656,7 @@ do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:3657: checking for $ac_word" >&5 ++echo "configure:3660: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_EXPECT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -3694,7 +3697,7 @@ do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:3698: checking for $ac_word" >&5 ++echo "configure:3701: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RUNTEST'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -3742,7 +3745,7 @@ test -n "$target_alias" && ncn_target_to + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:3746: checking for $ac_word" >&5 ++echo "configure:3749: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -3773,7 +3776,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:3777: checking for $ac_word" >&5 ++echo "configure:3780: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -3817,7 +3820,7 @@ fi + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:3821: checking for $ac_word" >&5 ++echo "configure:3824: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -3848,7 +3851,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:3852: checking for $ac_word" >&5 ++echo "configure:3855: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -3892,7 +3895,7 @@ fi + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:3896: checking for $ac_word" >&5 ++echo "configure:3899: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -3923,7 +3926,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:3927: checking for $ac_word" >&5 ++echo "configure:3930: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -3967,7 +3970,7 @@ fi + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:3971: checking for $ac_word" >&5 ++echo "configure:3974: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -3998,7 +4001,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4002: checking for $ac_word" >&5 ++echo "configure:4005: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4042,7 +4045,7 @@ fi + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4046: checking for $ac_word" >&5 ++echo "configure:4049: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_LIPO'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4073,7 +4076,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4077: checking for $ac_word" >&5 ++echo "configure:4080: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_LIPO'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4117,7 +4120,7 @@ fi + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4121: checking for $ac_word" >&5 ++echo "configure:4124: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_NM'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4148,7 +4151,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4152: checking for $ac_word" >&5 ++echo "configure:4155: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_NM'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4192,7 +4195,7 @@ fi + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4196: checking for $ac_word" >&5 ++echo "configure:4199: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4223,7 +4226,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4227: checking for $ac_word" >&5 ++echo "configure:4230: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4262,7 +4265,7 @@ fi + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4266: checking for $ac_word" >&5 ++echo "configure:4269: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4293,7 +4296,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4297: checking for $ac_word" >&5 ++echo "configure:4300: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4332,7 +4335,7 @@ fi + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4336: checking for $ac_word" >&5 ++echo "configure:4339: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4363,7 +4366,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4367: checking for $ac_word" >&5 ++echo "configure:4370: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4407,7 +4410,7 @@ fi + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4411: checking for $ac_word" >&5 ++echo "configure:4414: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4438,7 +4441,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4442: checking for $ac_word" >&5 ++echo "configure:4445: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4482,7 +4485,7 @@ fi + # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4486: checking for $ac_word" >&5 ++echo "configure:4489: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4513,7 +4516,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4517: checking for $ac_word" >&5 ++echo "configure:4520: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4577,7 +4580,7 @@ fi + if test -n "$with_build_time_tools"; then + for ncn_progname in cc gcc; do + echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:4581: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++echo "configure:4584: checking for ${ncn_progname} in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/${ncn_progname}; then + ac_cv_prog_CC_FOR_TARGET=$with_build_time_tools/${ncn_progname} + echo "$ac_t""yes" 1>&6 +@@ -4594,7 +4597,7 @@ if test -z "$ac_cv_prog_CC_FOR_TARGET"; + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4598: checking for $ac_word" >&5 ++echo "configure:4601: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4625,7 +4628,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4629: checking for $ac_word" >&5 ++echo "configure:4632: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4668,7 +4671,7 @@ fi + if test -n "$with_build_time_tools"; then + for ncn_progname in c++ g++ cxx gxx; do + echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:4672: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++echo "configure:4675: checking for ${ncn_progname} in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/${ncn_progname}; then + ac_cv_prog_CXX_FOR_TARGET=$with_build_time_tools/${ncn_progname} + echo "$ac_t""yes" 1>&6 +@@ -4685,7 +4688,7 @@ if test -z "$ac_cv_prog_CXX_FOR_TARGET"; + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4689: checking for $ac_word" >&5 ++echo "configure:4692: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CXX_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4716,7 +4719,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4720: checking for $ac_word" >&5 ++echo "configure:4723: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CXX_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4759,7 +4762,7 @@ fi + if test -n "$with_build_time_tools"; then + for ncn_progname in gcc; do + echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:4763: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++echo "configure:4766: checking for ${ncn_progname} in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/${ncn_progname}; then + ac_cv_prog_GCC_FOR_TARGET=$with_build_time_tools/${ncn_progname} + echo "$ac_t""yes" 1>&6 +@@ -4776,7 +4779,7 @@ if test -z "$ac_cv_prog_GCC_FOR_TARGET"; + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4780: checking for $ac_word" >&5 ++echo "configure:4783: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_GCC_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4807,7 +4810,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4811: checking for $ac_word" >&5 ++echo "configure:4814: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_GCC_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4845,7 +4848,7 @@ fi + if test -n "$with_build_time_tools"; then + for ncn_progname in gcj; do + echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:4849: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++echo "configure:4852: checking for ${ncn_progname} in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/${ncn_progname}; then + ac_cv_prog_GCJ_FOR_TARGET=$with_build_time_tools/${ncn_progname} + echo "$ac_t""yes" 1>&6 +@@ -4862,7 +4865,7 @@ if test -z "$ac_cv_prog_GCJ_FOR_TARGET"; + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4866: checking for $ac_word" >&5 ++echo "configure:4869: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_GCJ_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4893,7 +4896,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4897: checking for $ac_word" >&5 ++echo "configure:4900: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_GCJ_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4936,7 +4939,7 @@ fi + if test -n "$with_build_time_tools"; then + for ncn_progname in gfortran; do + echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:4940: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++echo "configure:4943: checking for ${ncn_progname} in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/${ncn_progname}; then + ac_cv_prog_GFORTRAN_FOR_TARGET=$with_build_time_tools/${ncn_progname} + echo "$ac_t""yes" 1>&6 +@@ -4953,7 +4956,7 @@ if test -z "$ac_cv_prog_GFORTRAN_FOR_TAR + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4957: checking for $ac_word" >&5 ++echo "configure:4960: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_GFORTRAN_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -4984,7 +4987,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:4988: checking for $ac_word" >&5 ++echo "configure:4991: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_GFORTRAN_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5091,7 +5094,7 @@ rm conftest.c + if test -z "$ac_cv_path_AR_FOR_TARGET" ; then + if test -n "$with_build_time_tools"; then + echo $ac_n "checking for ar in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:5095: checking for ar in $with_build_time_tools" >&5 ++echo "configure:5098: checking for ar in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/ar; then + AR_FOR_TARGET=`cd $with_build_time_tools && pwd`/ar + ac_cv_path_AR_FOR_TARGET=$AR_FOR_TARGET +@@ -5109,7 +5112,7 @@ if test -z "$ac_cv_path_AR_FOR_TARGET" ; + # Extract the first word of "ar", so it can be a program name with args. + set dummy ar; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5113: checking for $ac_word" >&5 ++echo "configure:5116: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_AR_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5146,7 +5149,7 @@ if test -z "$ac_cv_path_AR_FOR_TARGET" ; + if test -n "$with_build_time_tools"; then + for ncn_progname in ar; do + echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:5150: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++echo "configure:5153: checking for ${ncn_progname} in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/${ncn_progname}; then + ac_cv_prog_AR_FOR_TARGET=$with_build_time_tools/${ncn_progname} + echo "$ac_t""yes" 1>&6 +@@ -5163,7 +5166,7 @@ if test -z "$ac_cv_prog_AR_FOR_TARGET"; + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5167: checking for $ac_word" >&5 ++echo "configure:5170: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_AR_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5194,7 +5197,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5198: checking for $ac_word" >&5 ++echo "configure:5201: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_AR_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5244,7 +5247,7 @@ fi + if test -z "$ac_cv_path_AS_FOR_TARGET" ; then + if test -n "$with_build_time_tools"; then + echo $ac_n "checking for as in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:5248: checking for as in $with_build_time_tools" >&5 ++echo "configure:5251: checking for as in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/as; then + AS_FOR_TARGET=`cd $with_build_time_tools && pwd`/as + ac_cv_path_AS_FOR_TARGET=$AS_FOR_TARGET +@@ -5262,7 +5265,7 @@ if test -z "$ac_cv_path_AS_FOR_TARGET" ; + # Extract the first word of "as", so it can be a program name with args. + set dummy as; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5266: checking for $ac_word" >&5 ++echo "configure:5269: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_AS_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5299,7 +5302,7 @@ if test -z "$ac_cv_path_AS_FOR_TARGET" ; + if test -n "$with_build_time_tools"; then + for ncn_progname in as; do + echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:5303: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++echo "configure:5306: checking for ${ncn_progname} in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/${ncn_progname}; then + ac_cv_prog_AS_FOR_TARGET=$with_build_time_tools/${ncn_progname} + echo "$ac_t""yes" 1>&6 +@@ -5316,7 +5319,7 @@ if test -z "$ac_cv_prog_AS_FOR_TARGET"; + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5320: checking for $ac_word" >&5 ++echo "configure:5323: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_AS_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5347,7 +5350,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5351: checking for $ac_word" >&5 ++echo "configure:5354: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_AS_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5397,7 +5400,7 @@ fi + if test -z "$ac_cv_path_DLLTOOL_FOR_TARGET" ; then + if test -n "$with_build_time_tools"; then + echo $ac_n "checking for dlltool in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:5401: checking for dlltool in $with_build_time_tools" >&5 ++echo "configure:5404: checking for dlltool in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/dlltool; then + DLLTOOL_FOR_TARGET=`cd $with_build_time_tools && pwd`/dlltool + ac_cv_path_DLLTOOL_FOR_TARGET=$DLLTOOL_FOR_TARGET +@@ -5415,7 +5418,7 @@ if test -z "$ac_cv_path_DLLTOOL_FOR_TARG + # Extract the first word of "dlltool", so it can be a program name with args. + set dummy dlltool; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5419: checking for $ac_word" >&5 ++echo "configure:5422: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5452,7 +5455,7 @@ if test -z "$ac_cv_path_DLLTOOL_FOR_TARG + if test -n "$with_build_time_tools"; then + for ncn_progname in dlltool; do + echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:5456: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++echo "configure:5459: checking for ${ncn_progname} in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/${ncn_progname}; then + ac_cv_prog_DLLTOOL_FOR_TARGET=$with_build_time_tools/${ncn_progname} + echo "$ac_t""yes" 1>&6 +@@ -5469,7 +5472,7 @@ if test -z "$ac_cv_prog_DLLTOOL_FOR_TARG + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5473: checking for $ac_word" >&5 ++echo "configure:5476: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5500,7 +5503,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5504: checking for $ac_word" >&5 ++echo "configure:5507: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5550,7 +5553,7 @@ fi + if test -z "$ac_cv_path_LD_FOR_TARGET" ; then + if test -n "$with_build_time_tools"; then + echo $ac_n "checking for ld in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:5554: checking for ld in $with_build_time_tools" >&5 ++echo "configure:5557: checking for ld in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/ld; then + LD_FOR_TARGET=`cd $with_build_time_tools && pwd`/ld + ac_cv_path_LD_FOR_TARGET=$LD_FOR_TARGET +@@ -5568,7 +5571,7 @@ if test -z "$ac_cv_path_LD_FOR_TARGET" ; + # Extract the first word of "ld", so it can be a program name with args. + set dummy ld; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5572: checking for $ac_word" >&5 ++echo "configure:5575: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_LD_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5605,7 +5608,7 @@ if test -z "$ac_cv_path_LD_FOR_TARGET" ; + if test -n "$with_build_time_tools"; then + for ncn_progname in ld; do + echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:5609: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++echo "configure:5612: checking for ${ncn_progname} in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/${ncn_progname}; then + ac_cv_prog_LD_FOR_TARGET=$with_build_time_tools/${ncn_progname} + echo "$ac_t""yes" 1>&6 +@@ -5622,7 +5625,7 @@ if test -z "$ac_cv_prog_LD_FOR_TARGET"; + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5626: checking for $ac_word" >&5 ++echo "configure:5629: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_LD_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5653,7 +5656,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5657: checking for $ac_word" >&5 ++echo "configure:5660: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_LD_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5703,7 +5706,7 @@ fi + if test -z "$ac_cv_path_LIPO_FOR_TARGET" ; then + if test -n "$with_build_time_tools"; then + echo $ac_n "checking for lipo in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:5707: checking for lipo in $with_build_time_tools" >&5 ++echo "configure:5710: checking for lipo in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/lipo; then + LIPO_FOR_TARGET=`cd $with_build_time_tools && pwd`/lipo + ac_cv_path_LIPO_FOR_TARGET=$LIPO_FOR_TARGET +@@ -5721,7 +5724,7 @@ if test -z "$ac_cv_path_LIPO_FOR_TARGET" + # Extract the first word of "lipo", so it can be a program name with args. + set dummy lipo; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5725: checking for $ac_word" >&5 ++echo "configure:5728: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_LIPO_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5758,7 +5761,7 @@ if test -z "$ac_cv_path_LIPO_FOR_TARGET" + if test -n "$with_build_time_tools"; then + for ncn_progname in lipo; do + echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:5762: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++echo "configure:5765: checking for ${ncn_progname} in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/${ncn_progname}; then + ac_cv_prog_LIPO_FOR_TARGET=$with_build_time_tools/${ncn_progname} + echo "$ac_t""yes" 1>&6 +@@ -5775,7 +5778,7 @@ if test -z "$ac_cv_prog_LIPO_FOR_TARGET" + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5779: checking for $ac_word" >&5 ++echo "configure:5782: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_LIPO_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5806,7 +5809,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5810: checking for $ac_word" >&5 ++echo "configure:5813: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_LIPO_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5856,7 +5859,7 @@ fi + if test -z "$ac_cv_path_NM_FOR_TARGET" ; then + if test -n "$with_build_time_tools"; then + echo $ac_n "checking for nm in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:5860: checking for nm in $with_build_time_tools" >&5 ++echo "configure:5863: checking for nm in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/nm; then + NM_FOR_TARGET=`cd $with_build_time_tools && pwd`/nm + ac_cv_path_NM_FOR_TARGET=$NM_FOR_TARGET +@@ -5874,7 +5877,7 @@ if test -z "$ac_cv_path_NM_FOR_TARGET" ; + # Extract the first word of "nm", so it can be a program name with args. + set dummy nm; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5878: checking for $ac_word" >&5 ++echo "configure:5881: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_NM_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5911,7 +5914,7 @@ if test -z "$ac_cv_path_NM_FOR_TARGET" ; + if test -n "$with_build_time_tools"; then + for ncn_progname in nm; do + echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:5915: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++echo "configure:5918: checking for ${ncn_progname} in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/${ncn_progname}; then + ac_cv_prog_NM_FOR_TARGET=$with_build_time_tools/${ncn_progname} + echo "$ac_t""yes" 1>&6 +@@ -5928,7 +5931,7 @@ if test -z "$ac_cv_prog_NM_FOR_TARGET"; + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5932: checking for $ac_word" >&5 ++echo "configure:5935: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_NM_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -5959,7 +5962,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:5963: checking for $ac_word" >&5 ++echo "configure:5966: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_NM_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -6009,7 +6012,7 @@ fi + if test -z "$ac_cv_path_OBJDUMP_FOR_TARGET" ; then + if test -n "$with_build_time_tools"; then + echo $ac_n "checking for objdump in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:6013: checking for objdump in $with_build_time_tools" >&5 ++echo "configure:6016: checking for objdump in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/objdump; then + OBJDUMP_FOR_TARGET=`cd $with_build_time_tools && pwd`/objdump + ac_cv_path_OBJDUMP_FOR_TARGET=$OBJDUMP_FOR_TARGET +@@ -6027,7 +6030,7 @@ if test -z "$ac_cv_path_OBJDUMP_FOR_TARG + # Extract the first word of "objdump", so it can be a program name with args. + set dummy objdump; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:6031: checking for $ac_word" >&5 ++echo "configure:6034: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_OBJDUMP_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -6064,7 +6067,7 @@ if test -z "$ac_cv_path_OBJDUMP_FOR_TARG + if test -n "$with_build_time_tools"; then + for ncn_progname in objdump; do + echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:6068: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++echo "configure:6071: checking for ${ncn_progname} in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/${ncn_progname}; then + ac_cv_prog_OBJDUMP_FOR_TARGET=$with_build_time_tools/${ncn_progname} + echo "$ac_t""yes" 1>&6 +@@ -6081,7 +6084,7 @@ if test -z "$ac_cv_prog_OBJDUMP_FOR_TARG + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:6085: checking for $ac_word" >&5 ++echo "configure:6088: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -6112,7 +6115,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:6116: checking for $ac_word" >&5 ++echo "configure:6119: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -6162,7 +6165,7 @@ fi + if test -z "$ac_cv_path_RANLIB_FOR_TARGET" ; then + if test -n "$with_build_time_tools"; then + echo $ac_n "checking for ranlib in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:6166: checking for ranlib in $with_build_time_tools" >&5 ++echo "configure:6169: checking for ranlib in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/ranlib; then + RANLIB_FOR_TARGET=`cd $with_build_time_tools && pwd`/ranlib + ac_cv_path_RANLIB_FOR_TARGET=$RANLIB_FOR_TARGET +@@ -6180,7 +6183,7 @@ if test -z "$ac_cv_path_RANLIB_FOR_TARGE + # Extract the first word of "ranlib", so it can be a program name with args. + set dummy ranlib; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:6184: checking for $ac_word" >&5 ++echo "configure:6187: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_RANLIB_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -6217,7 +6220,7 @@ if test -z "$ac_cv_path_RANLIB_FOR_TARGE + if test -n "$with_build_time_tools"; then + for ncn_progname in ranlib; do + echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:6221: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++echo "configure:6224: checking for ${ncn_progname} in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/${ncn_progname}; then + ac_cv_prog_RANLIB_FOR_TARGET=$with_build_time_tools/${ncn_progname} + echo "$ac_t""yes" 1>&6 +@@ -6234,7 +6237,7 @@ if test -z "$ac_cv_prog_RANLIB_FOR_TARGE + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:6238: checking for $ac_word" >&5 ++echo "configure:6241: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -6265,7 +6268,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:6269: checking for $ac_word" >&5 ++echo "configure:6272: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -6315,7 +6318,7 @@ fi + if test -z "$ac_cv_path_STRIP_FOR_TARGET" ; then + if test -n "$with_build_time_tools"; then + echo $ac_n "checking for strip in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:6319: checking for strip in $with_build_time_tools" >&5 ++echo "configure:6322: checking for strip in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/strip; then + STRIP_FOR_TARGET=`cd $with_build_time_tools && pwd`/strip + ac_cv_path_STRIP_FOR_TARGET=$STRIP_FOR_TARGET +@@ -6333,7 +6336,7 @@ if test -z "$ac_cv_path_STRIP_FOR_TARGET + # Extract the first word of "strip", so it can be a program name with args. + set dummy strip; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:6337: checking for $ac_word" >&5 ++echo "configure:6340: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_STRIP_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -6370,7 +6373,7 @@ if test -z "$ac_cv_path_STRIP_FOR_TARGET + if test -n "$with_build_time_tools"; then + for ncn_progname in strip; do + echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:6374: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++echo "configure:6377: checking for ${ncn_progname} in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/${ncn_progname}; then + ac_cv_prog_STRIP_FOR_TARGET=$with_build_time_tools/${ncn_progname} + echo "$ac_t""yes" 1>&6 +@@ -6387,7 +6390,7 @@ if test -z "$ac_cv_prog_STRIP_FOR_TARGET + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:6391: checking for $ac_word" >&5 ++echo "configure:6394: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_STRIP_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -6418,7 +6421,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:6422: checking for $ac_word" >&5 ++echo "configure:6425: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_STRIP_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -6468,7 +6471,7 @@ fi + if test -z "$ac_cv_path_WINDRES_FOR_TARGET" ; then + if test -n "$with_build_time_tools"; then + echo $ac_n "checking for windres in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:6472: checking for windres in $with_build_time_tools" >&5 ++echo "configure:6475: checking for windres in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/windres; then + WINDRES_FOR_TARGET=`cd $with_build_time_tools && pwd`/windres + ac_cv_path_WINDRES_FOR_TARGET=$WINDRES_FOR_TARGET +@@ -6486,7 +6489,7 @@ if test -z "$ac_cv_path_WINDRES_FOR_TARG + # Extract the first word of "windres", so it can be a program name with args. + set dummy windres; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:6490: checking for $ac_word" >&5 ++echo "configure:6493: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_WINDRES_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -6523,7 +6526,7 @@ if test -z "$ac_cv_path_WINDRES_FOR_TARG + if test -n "$with_build_time_tools"; then + for ncn_progname in windres; do + echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6 +-echo "configure:6527: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++echo "configure:6530: checking for ${ncn_progname} in $with_build_time_tools" >&5 + if test -x $with_build_time_tools/${ncn_progname}; then + ac_cv_prog_WINDRES_FOR_TARGET=$with_build_time_tools/${ncn_progname} + echo "$ac_t""yes" 1>&6 +@@ -6540,7 +6543,7 @@ if test -z "$ac_cv_prog_WINDRES_FOR_TARG + # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:6544: checking for $ac_word" >&5 ++echo "configure:6547: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_WINDRES_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -6571,7 +6574,7 @@ fi + # Extract the first word of "${ncn_progname}", so it can be a program name with args. + set dummy ${ncn_progname}; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:6575: checking for $ac_word" >&5 ++echo "configure:6578: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_WINDRES_FOR_TARGET'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -6619,7 +6622,7 @@ fi + RAW_CXX_FOR_TARGET="$CXX_FOR_TARGET" + + echo $ac_n "checking where to find the target ar""... $ac_c" 1>&6 +-echo "configure:6623: checking where to find the target ar" >&5 ++echo "configure:6626: checking where to find the target ar" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$AR_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -6652,7 +6655,7 @@ else + fi + fi + echo $ac_n "checking where to find the target as""... $ac_c" 1>&6 +-echo "configure:6656: checking where to find the target as" >&5 ++echo "configure:6659: checking where to find the target as" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$AS_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -6685,7 +6688,7 @@ else + fi + fi + echo $ac_n "checking where to find the target cc""... $ac_c" 1>&6 +-echo "configure:6689: checking where to find the target cc" >&5 ++echo "configure:6692: checking where to find the target cc" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$CC_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -6718,7 +6721,7 @@ else + fi + fi + echo $ac_n "checking where to find the target c++""... $ac_c" 1>&6 +-echo "configure:6722: checking where to find the target c++" >&5 ++echo "configure:6725: checking where to find the target c++" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$CXX_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -6754,7 +6757,7 @@ else + fi + fi + echo $ac_n "checking where to find the target c++ for libstdc++""... $ac_c" 1>&6 +-echo "configure:6758: checking where to find the target c++ for libstdc++" >&5 ++echo "configure:6761: checking where to find the target c++ for libstdc++" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$RAW_CXX_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -6790,7 +6793,7 @@ else + fi + fi + echo $ac_n "checking where to find the target dlltool""... $ac_c" 1>&6 +-echo "configure:6794: checking where to find the target dlltool" >&5 ++echo "configure:6797: checking where to find the target dlltool" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$DLLTOOL_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -6823,7 +6826,7 @@ else + fi + fi + echo $ac_n "checking where to find the target gcc""... $ac_c" 1>&6 +-echo "configure:6827: checking where to find the target gcc" >&5 ++echo "configure:6830: checking where to find the target gcc" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$GCC_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -6856,7 +6859,7 @@ else + fi + fi + echo $ac_n "checking where to find the target gcj""... $ac_c" 1>&6 +-echo "configure:6860: checking where to find the target gcj" >&5 ++echo "configure:6863: checking where to find the target gcj" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$GCJ_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -6892,7 +6895,7 @@ else + fi + fi + echo $ac_n "checking where to find the target gfortran""... $ac_c" 1>&6 +-echo "configure:6896: checking where to find the target gfortran" >&5 ++echo "configure:6899: checking where to find the target gfortran" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$GFORTRAN_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -6928,7 +6931,7 @@ else + fi + fi + echo $ac_n "checking where to find the target ld""... $ac_c" 1>&6 +-echo "configure:6932: checking where to find the target ld" >&5 ++echo "configure:6935: checking where to find the target ld" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$LD_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -6961,7 +6964,7 @@ else + fi + fi + echo $ac_n "checking where to find the target lipo""... $ac_c" 1>&6 +-echo "configure:6965: checking where to find the target lipo" >&5 ++echo "configure:6968: checking where to find the target lipo" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$LIPO_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -6984,7 +6987,7 @@ else + fi + fi + echo $ac_n "checking where to find the target nm""... $ac_c" 1>&6 +-echo "configure:6988: checking where to find the target nm" >&5 ++echo "configure:6991: checking where to find the target nm" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$NM_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -7017,7 +7020,7 @@ else + fi + fi + echo $ac_n "checking where to find the target objdump""... $ac_c" 1>&6 +-echo "configure:7021: checking where to find the target objdump" >&5 ++echo "configure:7024: checking where to find the target objdump" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$OBJDUMP_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -7050,7 +7053,7 @@ else + fi + fi + echo $ac_n "checking where to find the target ranlib""... $ac_c" 1>&6 +-echo "configure:7054: checking where to find the target ranlib" >&5 ++echo "configure:7057: checking where to find the target ranlib" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$RANLIB_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -7083,7 +7086,7 @@ else + fi + fi + echo $ac_n "checking where to find the target strip""... $ac_c" 1>&6 +-echo "configure:7087: checking where to find the target strip" >&5 ++echo "configure:7090: checking where to find the target strip" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$STRIP_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -7116,7 +7119,7 @@ else + fi + fi + echo $ac_n "checking where to find the target windres""... $ac_c" 1>&6 +-echo "configure:7120: checking where to find the target windres" >&5 ++echo "configure:7123: checking where to find the target windres" >&5 + if test "x${build}" != "x${host}" ; then + if expr "x$WINDRES_FOR_TARGET" : "x/" > /dev/null; then + # We already found the complete path +@@ -7177,7 +7180,7 @@ fi + + + echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 +-echo "configure:7181: checking whether to enable maintainer-specific portions of Makefiles" >&5 ++echo "configure:7184: checking whether to enable maintainer-specific portions of Makefiles" >&5 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. + if test "${enable_maintainer_mode+set}" = set; then + enableval="$enable_maintainer_mode" +@@ -7334,34 +7337,15 @@ trap 'rm -f $CONFIG_STATUS conftest*; ex + # 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 we branch to the quote section. Otherwise, +-# look for a macro that doesn't take arguments. +-cat >confdef2opt.sed <<\_ACEOF +-t clear +-: clear +-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +-t quote +-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +-t quote +-d +-: quote +-s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +-s,\[,\\&,g +-s,\],\\&,g +-s,\$,$$,g +-p +-_ACEOF +-# We use echo to avoid assuming a particular line-breaking character. +-# The extra dot is to prevent the shell from consuming trailing +-# line-breaks from the sub-command output. A line-break within +-# single-quotes doesn't work because, if this script is created in a +-# platform that uses two characters for line-breaks (e.g., DOS), tr +-# would break. +-ac_LF_and_DOT=`echo; echo .` +-DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +-rm -f confdef2opt.sed ++cat > conftest.defs <<\EOF ++s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g ++s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g ++s%\[%\\&%g ++s%\]%\\&%g ++s%\$%$$%g ++EOF ++DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` ++rm -f conftest.defs + + + # Without the "./", some shells look in PATH for config.status. +diff -Nrup binutils-2.17/configure.in binutils-2.17.atmel.1.3.0/configure.in +--- binutils-2.17/configure.in 2006-06-23 20:19:53.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/configure.in 2007-03-26 10:20:35.000000000 +0200 +@@ -269,6 +269,9 @@ unsupported_languages= + # exist yet. + + case "${host}" in ++ avr32*-*-*) ++ noconfigdirs="$noconfigdirs readline gdb" ++ ;; + hppa*64*-*-*) + noconfigdirs="$noconfigdirs byacc" + ;; +diff -Nrup binutils-2.17/gas/as.c binutils-2.17.atmel.1.3.0/gas/as.c +--- binutils-2.17/gas/as.c 2006-02-09 01:07:41.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/as.c 2007-03-26 10:20:16.000000000 +0200 +@@ -439,10 +439,10 @@ parse_args (int * pargc, char *** pargv) + the end of the preceeding line so that it is simpler to + selectively add and remove lines from this list. */ + {"alternate", no_argument, NULL, OPTION_ALTERNATE} +- /* The entry for "a" is here to prevent getopt_long_only() from +- considering that -a is an abbreviation for --alternate. This is +- necessary because -a= is a valid switch but getopt would +- normally reject it since --alternate does not take an argument. */ ++ /* The next two entries are here to prevent getopt_long_only() from ++ considering that -a or -al is an abbreviation for --alternate. ++ This is necessary because -a= is a valid switch but getopt ++ would normally reject it since --alternate does not take an argument. */ + ,{"a", optional_argument, NULL, 'a'} + /* Handle -al=. */ + ,{"al", optional_argument, NULL, OPTION_AL} +@@ -795,8 +795,15 @@ the GNU General Public License. This pr + case 'a': + if (optarg) + { +- if (optarg != old_argv[optind] && optarg[-1] == '=') +- --optarg; ++ /* If optarg is part of the -a switch and not a separate argument ++ in its own right, then scan backwards to the just after the -a. ++ This means skipping over both '=' and 'l' which might have been ++ taken to be part of the -a switch itself. */ ++ if (optarg != old_argv[optind]) ++ { ++ while (optarg[-1] == '=' || optarg[-1] == 'l') ++ --optarg; ++ } + + if (md_parse_option (optc, optarg) != 0) + break; +@@ -1189,7 +1196,7 @@ main (int argc, char ** argv) + keep_it = 0; + + if (!keep_it) +- unlink_if_ordinary (out_file_name); ++ unlink (out_file_name); + + input_scrub_end (); + +diff -Nrup binutils-2.17/gas/config/bfin-aux.h binutils-2.17.atmel.1.3.0/gas/config/bfin-aux.h +--- binutils-2.17/gas/config/bfin-aux.h 2005-09-30 17:05:06.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/gas/config/bfin-aux.h 2007-03-26 10:20:14.000000000 +0200 +@@ -1,151 +1,151 @@ +-/* bfin-aux.h ADI Blackfin Header file for gas +- Copyright 2005 +- Free Software Foundation, Inc. +- +- This file is part of GAS, the GNU Assembler. +- +- GAS is free software; you can redistribute it and/or modify +- it under the terms of the GNU General Public License as published by +- the Free Software Foundation; either version 2, or (at your option) +- any later version. +- +- GAS is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- GNU General Public License for more details. +- +- You should have received a copy of the GNU General Public License +- along with GAS; see the file COPYING. If not, write to the Free +- Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA +- 02110-1301, USA. */ +- +-#include "bfin-defs.h" +- +-#define REG_T Register * +- +-INSTR_T +-bfin_gen_dsp32mac (int op1, int mm, int mmod, int w1, int p, +- int h01, int h11, int h00, int h10, +- int op0, REG_T dst, REG_T src0, REG_T src1, int w0); +- +-INSTR_T +-bfin_gen_dsp32mult (int op1, int mm, int mmod, int w1, int p, +- int h01, int h11, int h00, int h10, +- int op0, REG_T dst, REG_T src0, REG_T src1, int w0); +- +-INSTR_T +-bfin_gen_dsp32alu (int HL, int aopcde, int aop, int s, int x, +- REG_T dst0, REG_T dst1, REG_T src0, REG_T src1); +- +-INSTR_T +-bfin_gen_dsp32shift (int sopcde, REG_T dst0, REG_T src0, REG_T src1, +- int sop, int hls); +- +-INSTR_T +-bfin_gen_dsp32shiftimm (int sopcde, REG_T dst0, int immag, REG_T src1, +- int sop, int hls); +- +-INSTR_T +-bfin_gen_ldimmhalf (REG_T reg, int h, int s, int z, Expr_Node *hword, +- int reloc); +- +-INSTR_T +-bfin_gen_ldstidxi (REG_T ptr, REG_T reg, int w, int sz, int z, +- Expr_Node *offset); +- +-INSTR_T +-bfin_gen_ldst (REG_T ptr, REG_T reg, int aop, int sz, int z, int w); +- +-INSTR_T +-bfin_gen_ldstii (REG_T ptr, REG_T reg, Expr_Node *offset, int w, int op); +- +-INSTR_T +-bfin_gen_ldstiifp (REG_T reg, Expr_Node *offset, int w); +- +-INSTR_T +-bfin_gen_ldstpmod (REG_T ptr, REG_T reg, int aop, int w, REG_T idx); +- +-INSTR_T +-bfin_gen_dspldst (REG_T i, REG_T reg, int aop, int w, int m); +- +-INSTR_T +-bfin_gen_alu2op (REG_T dst, REG_T src, int opc); +- +-INSTR_T +-bfin_gen_compi2opd (REG_T dst, int src, int op); +- +-INSTR_T +-bfin_gen_compi2opp (REG_T dst, int src, int op); +- +-INSTR_T +-bfin_gen_dagmodik (REG_T i, int op); +- +-INSTR_T +-bfin_gen_dagmodim (REG_T i, REG_T m, int op, int br); +- +-INSTR_T +-bfin_gen_ptr2op (REG_T dst, REG_T src, int opc); +- +-INSTR_T +-bfin_gen_logi2op (int dst, int src, int opc); +- +-INSTR_T +-bfin_gen_comp3op (REG_T src0, REG_T src1, REG_T dst, int opc); +- +-INSTR_T +-bfin_gen_ccmv (REG_T src, REG_T dst, int t); +- +-INSTR_T +-bfin_gen_ccflag (REG_T x, int y, int opc, int i, int g); +- +-INSTR_T +-bfin_gen_cc2stat (int cbit, int op, int d); +- +-INSTR_T +-bfin_gen_regmv (REG_T src, REG_T dst); +- +-INSTR_T +-bfin_gen_cc2dreg (int op, REG_T reg); +- +-INSTR_T +-bfin_gen_brcc (int t, int b, Expr_Node *offset); +- +-INSTR_T +-bfin_gen_ujump (Expr_Node *offset); +- +-INSTR_T +-bfin_gen_cactrl (REG_T reg, int a, int op); +- +-INSTR_T +-bfin_gen_progctrl (int prgfunc, int poprnd); +- +-INSTR_T +-bfin_gen_loopsetup (Expr_Node *soffset, REG_T c, int rop, +- Expr_Node *eoffset, REG_T reg); +- +-INSTR_T +-bfin_gen_loop (Expr_Node *expr, REG_T reg, int rop, REG_T preg); +- +-INSTR_T +-bfin_gen_pushpopmultiple (int dr, int pr, int d, int p, int w); +- +-INSTR_T +-bfin_gen_pushpopreg (REG_T reg, int w); +- +-INSTR_T +-bfin_gen_calla (Expr_Node *addr, int s); +- +-INSTR_T +-bfin_gen_linkage (int r, int framesize); +- +-INSTR_T +-bfin_gen_pseudodbg (int fn, int reg, int grp); +- +-INSTR_T +-bfin_gen_pseudodbg_assert (int dbgop, REG_T regtest, int expected); +- +-bfd_boolean +-bfin_resource_conflict (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2); +- +-INSTR_T +-bfin_gen_multi_instr (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2); ++/* bfin-aux.h ADI Blackfin Header file for gas ++ Copyright 2005 ++ Free Software Foundation, Inc. ++ ++ This file is part of GAS, the GNU Assembler. ++ ++ GAS is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2, or (at your option) ++ any later version. ++ ++ GAS is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GAS; see the file COPYING. If not, write to the Free ++ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA ++ 02110-1301, USA. */ ++ ++#include "bfin-defs.h" ++ ++#define REG_T Register * ++ ++INSTR_T ++bfin_gen_dsp32mac (int op1, int mm, int mmod, int w1, int p, ++ int h01, int h11, int h00, int h10, ++ int op0, REG_T dst, REG_T src0, REG_T src1, int w0); ++ ++INSTR_T ++bfin_gen_dsp32mult (int op1, int mm, int mmod, int w1, int p, ++ int h01, int h11, int h00, int h10, ++ int op0, REG_T dst, REG_T src0, REG_T src1, int w0); ++ ++INSTR_T ++bfin_gen_dsp32alu (int HL, int aopcde, int aop, int s, int x, ++ REG_T dst0, REG_T dst1, REG_T src0, REG_T src1); ++ ++INSTR_T ++bfin_gen_dsp32shift (int sopcde, REG_T dst0, REG_T src0, REG_T src1, ++ int sop, int hls); ++ ++INSTR_T ++bfin_gen_dsp32shiftimm (int sopcde, REG_T dst0, int immag, REG_T src1, ++ int sop, int hls); ++ ++INSTR_T ++bfin_gen_ldimmhalf (REG_T reg, int h, int s, int z, Expr_Node *hword, ++ int reloc); ++ ++INSTR_T ++bfin_gen_ldstidxi (REG_T ptr, REG_T reg, int w, int sz, int z, ++ Expr_Node *offset); ++ ++INSTR_T ++bfin_gen_ldst (REG_T ptr, REG_T reg, int aop, int sz, int z, int w); ++ ++INSTR_T ++bfin_gen_ldstii (REG_T ptr, REG_T reg, Expr_Node *offset, int w, int op); ++ ++INSTR_T ++bfin_gen_ldstiifp (REG_T reg, Expr_Node *offset, int w); ++ ++INSTR_T ++bfin_gen_ldstpmod (REG_T ptr, REG_T reg, int aop, int w, REG_T idx); ++ ++INSTR_T ++bfin_gen_dspldst (REG_T i, REG_T reg, int aop, int w, int m); ++ ++INSTR_T ++bfin_gen_alu2op (REG_T dst, REG_T src, int opc); ++ ++INSTR_T ++bfin_gen_compi2opd (REG_T dst, int src, int op); ++ ++INSTR_T ++bfin_gen_compi2opp (REG_T dst, int src, int op); ++ ++INSTR_T ++bfin_gen_dagmodik (REG_T i, int op); ++ ++INSTR_T ++bfin_gen_dagmodim (REG_T i, REG_T m, int op, int br); ++ ++INSTR_T ++bfin_gen_ptr2op (REG_T dst, REG_T src, int opc); ++ ++INSTR_T ++bfin_gen_logi2op (int dst, int src, int opc); ++ ++INSTR_T ++bfin_gen_comp3op (REG_T src0, REG_T src1, REG_T dst, int opc); ++ ++INSTR_T ++bfin_gen_ccmv (REG_T src, REG_T dst, int t); ++ ++INSTR_T ++bfin_gen_ccflag (REG_T x, int y, int opc, int i, int g); ++ ++INSTR_T ++bfin_gen_cc2stat (int cbit, int op, int d); ++ ++INSTR_T ++bfin_gen_regmv (REG_T src, REG_T dst); ++ ++INSTR_T ++bfin_gen_cc2dreg (int op, REG_T reg); ++ ++INSTR_T ++bfin_gen_brcc (int t, int b, Expr_Node *offset); ++ ++INSTR_T ++bfin_gen_ujump (Expr_Node *offset); ++ ++INSTR_T ++bfin_gen_cactrl (REG_T reg, int a, int op); ++ ++INSTR_T ++bfin_gen_progctrl (int prgfunc, int poprnd); ++ ++INSTR_T ++bfin_gen_loopsetup (Expr_Node *soffset, REG_T c, int rop, ++ Expr_Node *eoffset, REG_T reg); ++ ++INSTR_T ++bfin_gen_loop (Expr_Node *expr, REG_T reg, int rop, REG_T preg); ++ ++INSTR_T ++bfin_gen_pushpopmultiple (int dr, int pr, int d, int p, int w); ++ ++INSTR_T ++bfin_gen_pushpopreg (REG_T reg, int w); ++ ++INSTR_T ++bfin_gen_calla (Expr_Node *addr, int s); ++ ++INSTR_T ++bfin_gen_linkage (int r, int framesize); ++ ++INSTR_T ++bfin_gen_pseudodbg (int fn, int reg, int grp); ++ ++INSTR_T ++bfin_gen_pseudodbg_assert (int dbgop, REG_T regtest, int expected); ++ ++bfd_boolean ++bfin_resource_conflict (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2); ++ ++INSTR_T ++bfin_gen_multi_instr (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2); +diff -Nrup binutils-2.17/gas/config/tc-avr32.c binutils-2.17.atmel.1.3.0/gas/config/tc-avr32.c +--- binutils-2.17/gas/config/tc-avr32.c 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/config/tc-avr32.c 2007-09-28 10:30:46.000000000 +0200 +@@ -0,0 +1,4726 @@ ++/* Assembler implementation for AVR32. ++ Copyright 2003-2006 Atmel Corporation. ++ ++ Written by Haavard Skinnemoen, Atmel Norway, ++ ++ This file is part of GAS, the GNU Assembler. ++ ++ GAS is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2, or (at your option) ++ any later version. ++ ++ GAS is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GAS; see the file COPYING. If not, write to the Free ++ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#include ++#include "as.h" ++#include "safe-ctype.h" ++#include "subsegs.h" ++#include "symcat.h" ++#include "opcodes/avr32-opc.h" ++#include "opcodes/avr32-asm.h" ++#include "elf/avr32.h" ++#include "dwarf2dbg.h" ++ ++#define xDEBUG ++#define xOPC_CONSISTENCY_CHECK ++ ++#ifdef DEBUG ++# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args) ++#else ++# define pr_debug(fmt, args...) ++#endif ++ ++/* 3 MSB of instruction word indicate group. Group 7 -> extended */ ++#define AVR32_COMPACT_P(opcode) ((opcode[0] & 0xe0) != 0xe0) ++ ++#define streq(a, b) (strcmp(a, b) == 0) ++#define skip_whitespace(str) do { while(*(str) == ' ') ++(str); } while(0) ++ ++/* Flags given on the command line */ ++static int avr32_pic = FALSE; ++int linkrelax = FALSE; ++int avr32_iarcompat = FALSE; ++int allow_direct_data_refs = FALSE; ++ ++/* This array holds the chars that always start a comment. */ ++const char comment_chars[] = "#"; ++ ++/* This array holds the chars that only start a comment at the ++ beginning of a line. We must include '#' here because the compiler ++ may produce #APP and #NO_APP in its output. */ ++const char line_comment_chars[] = "#"; ++ ++/* These may be used instead of newline (same as ';' in C). */ ++const char line_separator_chars[] = ";"; ++ ++/* Chars that can be used to separate mantissa from exponent in ++ floating point numbers. */ ++const char EXP_CHARS[] = "eE"; ++ ++/* Chars that mean this number is a floating point constant. */ ++const char FLT_CHARS[] = "dD"; ++ ++/* Pre-defined "_GLOBAL_OFFSET_TABLE_" */ ++symbolS *GOT_symbol; ++ ++static struct hash_control *avr32_mnemonic_htab; ++ ++struct avr32_ifield_data ++{ ++ bfd_vma value; ++ /* FIXME: Get rid of align_order and complain. complain is never ++ used, align_order is used in one place. Try to use the relax ++ table instead. */ ++ unsigned int align_order; ++}; ++ ++struct avr32_insn ++{ ++ const struct avr32_syntax *syntax; ++ expressionS immediate; ++ int pcrel; ++ int force_extended; ++ unsigned int next_slot; ++ bfd_reloc_code_real_type r_type; ++ struct avr32_ifield_data field_value[AVR32_MAX_FIELDS]; ++}; ++ ++static struct avr32_insn current_insn; ++ ++/* The target specific pseudo-ops we support. */ ++static void s_rseg (int); ++static void s_cpool(int); ++ ++const pseudo_typeS md_pseudo_table[] = ++{ ++ /* Make sure that .word is 32 bits */ ++ { "word", cons, 4 }, ++ { "file", (void (*) PARAMS ((int))) dwarf2_directive_file, 0 }, ++ { "loc", dwarf2_directive_loc, 0 }, ++ ++ /* .lcomm requires an explicit alignment parameter */ ++ { "lcomm", s_lcomm, 1 }, ++ ++ /* AVR32-specific pseudo-ops */ ++ { "cpool", s_cpool, 0}, ++ ++ /* IAR compatible pseudo-ops */ ++ { "program", s_ignore, 0 }, ++ { "public", s_globl, 0 }, ++ { "extern", s_ignore, 0 }, ++ { "module", s_ignore, 0 }, ++ { "rseg", s_rseg, 0 }, ++ { "dc8", cons, 1 }, ++ { "dc16", cons, 2 }, ++ { "dc32", cons, 4 }, ++ ++ { NULL, NULL, 0 } ++}; ++ ++/* Questionable stuff starts here */ ++ ++enum avr32_opinfo { ++ AVR32_OPINFO_NONE = BFD_RELOC_NONE, ++ AVR32_OPINFO_GOT, ++ AVR32_OPINFO_TLSGD, ++ AVR32_OPINFO_HI, ++ AVR32_OPINFO_LO, ++}; ++ ++enum avr32_arch { ++ ARCH_TYPE_AP, ++ ARCH_TYPE_UC ++}; ++ ++struct arch_type_s ++{ ++ /* Architecture name */ ++ char *name; ++ /* Instruction Set Architecture Flags */ ++ unsigned long isa_flags; ++}; ++ ++struct part_type_s ++{ ++ /* Part name */ ++ char *name; ++ /* Architecture type */ ++ unsigned int arch; ++}; ++ ++static struct arch_type_s arch_types[] = ++{ ++ {"ap", AVR32_V1 | AVR32_SIMD | AVR32_DSP | AVR32_PICO}, ++ {"uc", AVR32_V1 | AVR32_DSP | AVR32_RMW}, ++ {"all-insn", AVR32_V1 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO}, ++ {NULL, 0} ++}; ++ ++static struct part_type_s part_types[] = { ++ {"ap7000", ARCH_TYPE_AP}, ++ {"ap7010", ARCH_TYPE_AP}, ++ {"ap7020", ARCH_TYPE_AP}, ++ {"uc3a0256", ARCH_TYPE_UC}, ++ {"uc3a0512", ARCH_TYPE_UC}, ++ {"uc3a1128", ARCH_TYPE_UC}, ++ {"uc3a1256", ARCH_TYPE_UC}, ++ {"uc3a1512", ARCH_TYPE_UC}, ++ {"uc3b064", ARCH_TYPE_UC}, ++ {"uc3b0128", ARCH_TYPE_UC}, ++ {"uc3b0256", ARCH_TYPE_UC}, ++ {"uc3b164", ARCH_TYPE_UC}, ++ {"uc3b1128", ARCH_TYPE_UC}, ++ {"uc3b1256", ARCH_TYPE_UC}, ++ {NULL, 0} ++}; ++ ++/* Current architecture type. */ ++static struct arch_type_s default_arch = {"all-insn", AVR32_V1 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO }; ++static struct arch_type_s *avr32_arch = &default_arch; ++ ++/* Display nicely formatted list of known part- and architecture names. */ ++ ++static void ++show_arch_list (FILE *stream) ++{ ++ int i, x; ++ ++ fprintf (stream, _("Known architecture names:")); ++ x = 1000; ++ ++ for (i = 0; arch_types[i].name; i++) ++ { ++ int len = strlen (arch_types[i].name); ++ ++ x += len + 1; ++ ++ if (x < 75) ++ fprintf (stream, " %s", arch_types[i].name); ++ else ++ { ++ fprintf (stream, "\n %s", arch_types[i].name); ++ x = len + 2; ++ } ++ } ++ ++ fprintf (stream, "\n"); ++} ++ ++static void ++show_part_list (FILE *stream) ++{ ++ int i, x; ++ ++ fprintf (stream, _("Known part names:")); ++ x = 1000; ++ ++ for (i = 0; part_types[i].name; i++) ++ { ++ int len = strlen(part_types[i].name); ++ ++ x += len + 1; ++ ++ if (x < 75) ++ fprintf (stream, " %s", part_types[i].name); ++ else ++ { ++ fprintf(stream, "\n %s", part_types[i].name); ++ x = len + 2; ++ } ++ } ++ ++ fprintf (stream, "\n"); ++} ++ ++const char *md_shortopts = ""; ++struct option md_longopts[] = ++{ ++#define OPTION_ARCH (OPTION_MD_BASE) ++#define OPTION_PART (OPTION_ARCH + 1) ++#define OPTION_IAR (OPTION_PART + 1) ++#define OPTION_PIC (OPTION_IAR + 1) ++#define OPTION_NOPIC (OPTION_PIC + 1) ++#define OPTION_LINKRELAX (OPTION_NOPIC + 1) ++#define OPTION_NOLINKRELAX (OPTION_LINKRELAX + 1) ++#define OPTION_DIRECT_DATA_REFS (OPTION_NOLINKRELAX + 1) ++ {"march", required_argument, NULL, OPTION_ARCH}, ++ {"mpart", required_argument, NULL, OPTION_PART}, ++ {"iar", no_argument, NULL, OPTION_IAR}, ++ {"pic", no_argument, NULL, OPTION_PIC}, ++ {"no-pic", no_argument, NULL, OPTION_NOPIC}, ++ {"linkrelax", no_argument, NULL, OPTION_LINKRELAX}, ++ {"no-linkrelax", no_argument, NULL, OPTION_NOLINKRELAX}, ++ {"direct-data-refs", no_argument, NULL, OPTION_DIRECT_DATA_REFS}, ++ /* deprecated alias for -mpart=xxx */ ++ {"mcpu", required_argument, NULL, OPTION_PART}, ++ {NULL, no_argument, NULL, 0} ++}; ++ ++size_t md_longopts_size = sizeof (md_longopts); ++ ++void ++md_show_usage (FILE *stream) ++{ ++ fprintf (stream, _("\ ++AVR32 options:\n\ ++ -march=[arch-name] Select cpu architecture. [Default `all-insn']\n\ ++ -mpart=[part-name] Select specific part. [Default `none']\n\ ++ --pic Produce Position-Independent Code\n\ ++ --no-pic Don't produce Position-Independent Code\n\ ++ --linkrelax Produce output suitable for linker relaxing\n\ ++ --no-linkrelax Don't produce output suitable for linker relaxing\n\ ++ --direct-data-refs Allows direct references (i.e. mov or sub) to the data section\n")); ++ show_arch_list(stream); ++} ++ ++int ++md_parse_option (int c, char *arg ATTRIBUTE_UNUSED) ++{ ++ switch (c) ++ { ++ case OPTION_ARCH: ++ { ++ int i; ++ char *s = alloca (strlen (arg) + 1); ++ ++ { ++ char *t = s; ++ char *arg1 = arg; ++ ++ do ++ *t = TOLOWER (*arg1++); ++ while (*t++); ++ } ++ ++ for (i = 0; arch_types[i].name; ++i) ++ if (strcmp (arch_types[i].name, s) == 0) ++ break; ++ ++ if (!arch_types[i].name) ++ { ++ show_arch_list (stderr); ++ as_fatal (_("unknown architecture: %s\n"), arg); ++ } ++ ++ avr32_arch = &arch_types[i]; ++ break; ++ } ++ case OPTION_PART: ++ { ++ int i; ++ char *s = alloca (strlen (arg) + 1); ++ char *t = s; ++ char *p = arg; ++ ++ /* If arch type has already been set, don't bother. ++ -march= always overrides -mpart= */ ++ if (avr32_arch != &default_arch) ++ break; ++ ++ do ++ *t = TOLOWER (*p++); ++ while (*t++); ++ ++ for (i = 0; part_types[i].name; ++i) ++ if (strcmp (part_types[i].name, s) == 0) ++ break; ++ ++ if (!part_types[i].name) ++ { ++ show_part_list (stderr); ++ as_fatal (_("unknown part: %s\n"), arg); ++ } ++ ++ avr32_arch = &arch_types[part_types[i].arch]; ++ break; ++ } ++ case OPTION_IAR: ++ avr32_iarcompat = 1; ++ break; ++ case OPTION_PIC: ++ avr32_pic = 1; ++ break; ++ case OPTION_NOPIC: ++ avr32_pic = 0; ++ break; ++ case OPTION_LINKRELAX: ++ linkrelax = 1; ++ break; ++ case OPTION_NOLINKRELAX: ++ linkrelax = 0; ++ break; ++ case OPTION_DIRECT_DATA_REFS: ++ allow_direct_data_refs = 1; ++ break; ++ default: ++ return 0; ++ } ++ return 1; ++} ++ ++/* Can't use symbol_new here, so have to create a symbol and then at ++ a later date assign it a value. Thats what these functions do. ++ ++ Shamelessly stolen from ARM. */ ++ ++static void ++symbol_locate (symbolS * symbolP, ++ const char * name, /* It is copied, the caller can modify. */ ++ segT segment, /* Segment identifier (SEG_). */ ++ valueT valu, /* Symbol value. */ ++ fragS * frag) /* Associated fragment. */ ++{ ++ unsigned int name_length; ++ char * preserved_copy_of_name; ++ ++ name_length = strlen (name) + 1; /* +1 for \0. */ ++ obstack_grow (¬es, name, name_length); ++ preserved_copy_of_name = obstack_finish (¬es); ++#ifdef STRIP_UNDERSCORE ++ if (preserved_copy_of_name[0] == '_') ++ preserved_copy_of_name++; ++#endif ++ ++#ifdef tc_canonicalize_symbol_name ++ preserved_copy_of_name = ++ tc_canonicalize_symbol_name (preserved_copy_of_name); ++#endif ++ ++ S_SET_NAME (symbolP, preserved_copy_of_name); ++ ++ S_SET_SEGMENT (symbolP, segment); ++ S_SET_VALUE (symbolP, valu); ++ symbol_clear_list_pointers (symbolP); ++ ++ symbol_set_frag (symbolP, frag); ++ ++ /* Link to end of symbol chain. */ ++ { ++ extern int symbol_table_frozen; ++ ++ if (symbol_table_frozen) ++ abort (); ++ } ++ ++ symbol_append (symbolP, symbol_lastP, & symbol_rootP, & symbol_lastP); ++ ++ obj_symbol_new_hook (symbolP); ++ ++#ifdef tc_symbol_new_hook ++ tc_symbol_new_hook (symbolP); ++#endif ++ ++#ifdef DEBUG_SYMS ++ verify_symbol_chain (symbol_rootP, symbol_lastP); ++#endif /* DEBUG_SYMS */ ++} ++ ++struct cpool_entry ++{ ++ int refcount; ++ offsetT offset; ++ expressionS exp; ++}; ++ ++struct cpool ++{ ++ struct cpool *next; ++ int used; ++ struct cpool_entry *literals; ++ unsigned int padding; ++ unsigned int next_free_entry; ++ unsigned int id; ++ symbolS *symbol; ++ segT section; ++ subsegT sub_section; ++}; ++ ++struct cpool *cpool_list = NULL; ++ ++static struct cpool * ++find_cpool(segT section, subsegT sub_section) ++{ ++ struct cpool *pool; ++ ++ for (pool = cpool_list; pool != NULL; pool = pool->next) ++ { ++ if (!pool->used ++ && pool->section == section ++ && pool->sub_section == sub_section) ++ break; ++ } ++ ++ return pool; ++} ++ ++static struct cpool * ++find_or_make_cpool(segT section, subsegT sub_section) ++{ ++ static unsigned int next_cpool_id = 0; ++ struct cpool *pool; ++ ++ pool = find_cpool(section, sub_section); ++ ++ if (!pool) ++ { ++ pool = xmalloc(sizeof(*pool)); ++ if (!pool) ++ return NULL; ++ ++ pool->used = 0; ++ pool->literals = NULL; ++ pool->padding = 0; ++ pool->next_free_entry = 0; ++ pool->section = section; ++ pool->sub_section = sub_section; ++ pool->next = cpool_list; ++ pool->symbol = NULL; ++ ++ cpool_list = pool; ++ } ++ ++ /* NULL symbol means that the pool is new or has just been emptied. */ ++ if (!pool->symbol) ++ { ++ pool->symbol = symbol_create(FAKE_LABEL_NAME, undefined_section, ++ 0, &zero_address_frag); ++ pool->id = next_cpool_id++; ++ } ++ ++ return pool; ++} ++ ++static struct cpool * ++add_to_cpool(expressionS *exp, unsigned int *index, int ref) ++{ ++ struct cpool *pool; ++ unsigned int entry; ++ ++ pool = find_or_make_cpool(now_seg, now_subseg); ++ ++ /* Check if this constant is already in the pool. */ ++ for (entry = 0; entry < pool->next_free_entry; entry++) ++ { ++ if ((pool->literals[entry].exp.X_op == exp->X_op) ++ && (exp->X_op == O_constant) ++ && (pool->literals[entry].exp.X_add_number ++ == exp->X_add_number) ++ && (pool->literals[entry].exp.X_unsigned ++ == exp->X_unsigned)) ++ break; ++ ++ if ((pool->literals[entry].exp.X_op == exp->X_op) ++ && (exp->X_op == O_symbol) ++ && (pool->literals[entry].exp.X_add_number ++ == exp->X_add_number) ++ && (pool->literals[entry].exp.X_add_symbol ++ == exp->X_add_symbol) ++ && (pool->literals[entry].exp.X_op_symbol ++ == exp->X_op_symbol)) ++ break; ++ } ++ ++ /* Create an entry if we didn't find a match */ ++ if (entry == pool->next_free_entry) ++ { ++ pool->literals = xrealloc(pool->literals, ++ sizeof(struct cpool_entry) * (entry + 1)); ++ pool->literals[entry].exp = *exp; ++ pool->literals[entry].refcount = 0; ++ pool->next_free_entry++; ++ } ++ ++ if (index) ++ *index = entry; ++ if (ref) ++ pool->literals[entry].refcount++; ++ ++ return pool; ++} ++ ++struct avr32_operand ++{ ++ int id; ++ int is_signed; ++ int is_pcrel; ++ int align_order; ++ int (*match)(char *str); ++ void (*parse)(const struct avr32_operand *op, char *str, int opindex); ++}; ++ ++static int ++match_anything(char *str ATTRIBUTE_UNUSED) ++{ ++ return 1; ++} ++ ++static int ++match_intreg(char *str) ++{ ++ int regid, ret = 1; ++ ++ regid = avr32_parse_intreg(str); ++ if (regid < 0) ++ ret = 0; ++ ++ pr_debug("match_intreg: `%s': %d\n", str, ret); ++ ++ return ret; ++} ++ ++static int ++match_intreg_predec(char *str) ++{ ++ int regid; ++ ++ if (str[0] != '-' || str[1] != '-') ++ return 0; ++ ++ regid = avr32_parse_intreg(str + 2); ++ if (regid < 0) ++ return 0; ++ ++ return 1; ++} ++ ++static int ++match_intreg_postinc(char *str) ++{ ++ int regid, ret = 1; ++ char *p, c; ++ ++ for (p = str; *p; p++) ++ if (*p == '+') ++ break; ++ ++ if (p[0] != '+' || p[1] != '+') ++ return 0; ++ ++ c = *p, *p = 0; ++ regid = avr32_parse_intreg(str); ++ if (regid < 0) ++ ret = 0; ++ ++ *p = c; ++ return ret; ++} ++ ++static int ++match_intreg_lsl(char *str) ++{ ++ int regid, ret = 1; ++ char *p, c; ++ ++ for (p = str; *p; p++) ++ if (*p == '<') ++ break; ++ ++ if (p[0] && p[1] != '<') ++ return 0; ++ ++ c = *p, *p = 0; ++ regid = avr32_parse_intreg(str); ++ if (regid < 0) ++ ret = 0; ++ ++ *p = c; ++ return ret; ++} ++ ++static int ++match_intreg_lsr(char *str) ++{ ++ int regid, ret = 1; ++ char *p, c; ++ ++ for (p = str; *p; p++) ++ if (*p == '>') ++ break; ++ ++ if (p[0] && p[1] != '>') ++ return 0; ++ ++ c = *p, *p = 0; ++ ++ regid = avr32_parse_intreg(str); ++ if (regid < 0) ++ ret = 0; ++ ++ *p = c; ++ return ret; ++} ++ ++static int ++match_intreg_part(char *str) ++{ ++ int regid, ret = 1; ++ char *p, c; ++ ++ for (p = str; *p; p++) ++ if (*p == ':') ++ break; ++ ++ if (p[0] != ':' || !ISPRINT(p[1]) || p[2] != '\0') ++ return 0; ++ ++ c = *p, *p = 0; ++ regid = avr32_parse_intreg(str); ++ if (regid < 0) ++ ret = 0; ++ ++ *p = c; ++ ++ return ret; ++} ++ ++#define match_intreg_disp match_anything ++ ++static int ++match_intreg_index(char *str) ++{ ++ int regid, ret = 1; ++ char *p, *end, c; ++ ++ for (p = str; *p; p++) ++ if (*p == '[') ++ break; ++ ++ /* don't allow empty displacement here (it makes no sense) */ ++ if (p[0] != '[') ++ return 0; ++ ++ for (end = p + 1; *end; end++) ; ++ if (*(--end) != ']') ++ return 0; ++ ++ c = *end, *end = 0; ++ if (!match_intreg_lsl(p + 1)) ++ ret = 0; ++ *end = c; ++ ++ if (ret) ++ { ++ c = *p, *p = 0; ++ regid = avr32_parse_intreg(str); ++ if (regid < 0) ++ ret = 0; ++ *p = c; ++ } ++ ++ return ret; ++} ++ ++static int ++match_intreg_xindex(char *str) ++{ ++ int regid, ret = 1; ++ char *p, *end, c; ++ ++ for (p = str; *p; p++) ++ if (*p == '[') ++ break; ++ ++ /* empty displacement makes no sense here either */ ++ if (p[0] != '[') ++ return 0; ++ ++ for (end = p + 1; *end; end++) ++ if (*end == '<') ++ break; ++ ++ if (!streq(end, "<<2]")) ++ return 0; ++ ++ c = *end, *end = 0; ++ if (!match_intreg_part(p + 1)) ++ ret = 0; ++ *end = c; ++ ++ if (ret) ++ { ++ c = *p, *p = 0; ++ regid = avr32_parse_intreg(str); ++ if (regid < 0) ++ ret = 0; ++ *p = c; ++ } ++ ++ return ret; ++} ++ ++/* The PC_UDISP_W operator may show up as a label or as a pc[disp] ++ expression. So there's no point in attempting to match this... */ ++#define match_pc_disp match_anything ++ ++static int ++match_sp(char *str) ++{ ++ /* SP in any form will do */ ++ return avr32_parse_intreg(str) == AVR32_REG_SP; ++} ++ ++static int ++match_sp_disp(char *str) ++{ ++ int regid, ret = 1; ++ char *p, c; ++ ++ for (p = str; *p; p++) ++ if (*p == '[') ++ break; ++ ++ /* allow empty displacement, meaning zero */ ++ if (p[0] == '[') ++ { ++ char *end; ++ for (end = p + 1; *end; end++) ; ++ if (end[-1] != ']') ++ return 0; ++ } ++ ++ c = *p, *p = 0; ++ regid = avr32_parse_intreg(str); ++ if (regid != AVR32_REG_SP) ++ ret = 0; ++ ++ *p = c; ++ return ret; ++} ++ ++static int ++match_cpno(char *str) ++{ ++ if (strncasecmp(str, "cp", 2) != 0) ++ return 0; ++ return 1; ++} ++ ++static int ++match_cpreg(char *str) ++{ ++ if (strncasecmp(str, "cr", 2) != 0) ++ return 0; ++ return 1; ++} ++ ++/* We allow complex expressions, and register names may show up as ++ symbols. Just make sure immediate expressions are always matched ++ last. */ ++#define match_const match_anything ++#define match_jmplabel match_anything ++#define match_number match_anything ++ ++/* Mnemonics that take reglists never accept anything else */ ++#define match_reglist8 match_anything ++#define match_reglist9 match_anything ++#define match_reglist16 match_anything ++#define match_reglist_ldm match_anything ++#define match_reglist_cp8 match_anything ++#define match_reglist_cpd8 match_anything ++ ++/* Ditto for retval, jospinc and mcall */ ++#define match_retval match_anything ++#define match_jospinc match_anything ++#define match_mcall match_anything ++ ++/* COH is used to select between two different syntaxes */ ++static int ++match_coh(char *str) ++{ ++ return strcasecmp(str, "coh") == 0; ++} ++ ++static int ++match_fpreg(char *str) ++{ ++ unsigned long regid; ++ char *endptr; ++ ++ if ((str[0] != 'f' && str[0] != 'F') ++ || (str[1] != 'r' && str[1] != 'R')) ++ return 0; ++ ++ str += 2; ++ regid = strtoul(str, &endptr, 10); ++ if (!*str || *endptr) ++ return 0; ++ ++ return 1; ++} ++ ++static int ++match_picoreg(char *str) ++{ ++ int regid; ++ ++ regid = avr32_parse_picoreg(str); ++ if (regid < 0) ++ return 0; ++ return 1; ++} ++ ++#define match_pico_reglist_w match_anything ++#define match_pico_reglist_d match_anything ++ ++static int ++match_pico_in(char *str) ++{ ++ unsigned long regid; ++ char *end; ++ ++ if (strncasecmp(str, "in", 2) != 0) ++ return 0; ++ ++ str += 2; ++ regid = strtoul(str, &end, 10); ++ if (!*str || *end) ++ return 0; ++ ++ return 1; ++} ++ ++static int ++match_pico_out0(char *str) ++{ ++ if (strcasecmp(str, "out0") != 0) ++ return 0; ++ return 1; ++} ++ ++static int ++match_pico_out1(char *str) ++{ ++ if (strcasecmp(str, "out1") != 0) ++ return 0; ++ return 1; ++} ++ ++static int ++match_pico_out2(char *str) ++{ ++ if (strcasecmp(str, "out2") != 0) ++ return 0; ++ return 1; ++} ++ ++static int ++match_pico_out3(char *str) ++{ ++ if (strcasecmp(str, "out3") != 0) ++ return 0; ++ return 1; ++} ++ ++static void parse_nothing(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str ATTRIBUTE_UNUSED, ++ int opindex ATTRIBUTE_UNUSED) ++{ ++ /* Do nothing (this is used for "match-only" operands like COH) */ ++} ++ ++static void ++parse_const(const struct avr32_operand *op, char *str, ++ int opindex ATTRIBUTE_UNUSED) ++{ ++ expressionS *exp = ¤t_insn.immediate; ++ expressionS *sym_exp; ++ int slot; ++ char *save; ++ ++ pr_debug("parse_const: `%s' (signed: %d, pcrel: %d, align: %d)\n", ++ str, op->is_signed, op->is_pcrel, op->align_order); ++ ++ save = input_line_pointer; ++ input_line_pointer = str; ++ ++ expression(exp); ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].align_order = op->align_order; ++ current_insn.pcrel = op->is_pcrel; ++ ++ switch (exp->X_op) ++ { ++ case O_illegal: ++ as_bad(_("illegal operand")); ++ break; ++ case O_absent: ++ as_bad(_("missing operand")); ++ break; ++ case O_constant: ++ pr_debug(" -> constant: %ld\n", (long)exp->X_add_number); ++ current_insn.field_value[slot].value = exp->X_add_number; ++ break; ++ case O_uminus: ++ pr_debug(" -> uminus\n"); ++ sym_exp = symbol_get_value_expression(exp->X_add_symbol); ++ switch (sym_exp->X_op) { ++ case O_subtract: ++ pr_debug(" -> subtract: switching operands\n"); ++ exp->X_op_symbol = sym_exp->X_add_symbol; ++ exp->X_add_symbol = sym_exp->X_op_symbol; ++ exp->X_op = O_subtract; ++ /* TODO: Remove the old X_add_symbol */ ++ break; ++ default: ++ as_bad(_("Expression too complex\n")); ++ break; ++ } ++ break; ++#if 0 ++ case O_subtract: ++ /* Any expression subtracting a symbol from the current section ++ can be made PC-relative by adding the right offset. */ ++ if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg) ++ current_insn.pcrel = TRUE; ++ pr_debug(" -> subtract: pcrel? %s\n", ++ current_insn.pcrel ? "yes" : "no"); ++ /* fall through */ ++#endif ++ default: ++ pr_debug(" -> (%p <%d> %p + %d)\n", ++ exp->X_add_symbol, exp->X_op, exp->X_op_symbol, ++ exp->X_add_number); ++ current_insn.field_value[slot].value = 0; ++ break; ++ } ++ ++ input_line_pointer = save; ++} ++ ++static void ++parse_jmplabel(const struct avr32_operand *op, char *str, ++ int opindex ATTRIBUTE_UNUSED) ++{ ++ expressionS *exp = ¤t_insn.immediate; ++ int slot; ++ char *save; ++ ++ pr_debug("parse_jmplabel: `%s' (signed: %d, pcrel: %d, align: %d)\n", ++ str, op->is_signed, op->is_pcrel, op->align_order); ++ ++ save = input_line_pointer; ++ input_line_pointer = str; ++ ++ expression(exp); ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].align_order = op->align_order; ++ current_insn.pcrel = TRUE; ++ ++ switch (exp->X_op) ++ { ++ case O_illegal: ++ as_bad(_("illegal operand")); ++ break; ++ case O_absent: ++ as_bad(_("missing operand")); ++ break; ++ case O_constant: ++ pr_debug(" -> constant: %ld\n", (long)exp->X_add_number); ++ current_insn.field_value[slot].value = exp->X_add_number; ++ current_insn.pcrel = 0; ++ break; ++ default: ++ pr_debug(" -> (%p <%d> %p + %d)\n", ++ exp->X_add_symbol, exp->X_op, exp->X_op_symbol, ++ exp->X_add_number); ++ current_insn.field_value[slot].value = 0; ++ break; ++ } ++ ++ input_line_pointer = save; ++} ++ ++static void ++parse_intreg(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ int regid, slot; ++ ++ pr_debug("parse_intreg: `%s'\n", str); ++ ++ regid = avr32_parse_intreg(str); ++ assert(regid >= 0); ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regid; ++ current_insn.field_value[slot].align_order = op->align_order; ++} ++ ++static void ++parse_intreg_predec(const struct avr32_operand *op, char *str, int opindex) ++{ ++ parse_intreg(op, str + 2, opindex); ++} ++ ++static void ++parse_intreg_postinc(const struct avr32_operand *op, char *str, int opindex) ++{ ++ char *p, c; ++ ++ pr_debug("parse_intreg_postinc: `%s'\n", str); ++ ++ for (p = str; *p != '+'; p++) ; ++ ++ c = *p, *p = 0; ++ parse_intreg(op, str, opindex); ++ *p = c; ++} ++ ++static void ++parse_intreg_shift(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ int regid, slot, shift = 0; ++ char *p, c; ++ char shiftop; ++ ++ pr_debug("parse Ry<') ++ break; ++ ++ shiftop = *p; ++ ++ c = *p, *p = 0; ++ regid = avr32_parse_intreg(str); ++ assert(regid >= 0); ++ *p = c; ++ ++ if (c) ++ { ++ if (p[0] != shiftop || p[1] != shiftop) ++ as_bad(_("expected shift operator in `%s'"), p); ++ else ++ { ++ expressionS exp; ++ char *saved; ++ ++ saved = input_line_pointer; ++ input_line_pointer = p + 2; ++ expression(&exp); ++ input_line_pointer = saved; ++ ++ if (exp.X_op != O_constant) ++ as_bad(_("shift amount must be a numeric constant")); ++ else ++ shift = exp.X_add_number; ++ } ++ } ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regid; ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = shift; ++} ++ ++/* The match() function selected the right opcode, so it doesn't ++ matter which way we shift any more. */ ++#define parse_intreg_lsl parse_intreg_shift ++#define parse_intreg_lsr parse_intreg_shift ++ ++static void ++parse_intreg_part(const struct avr32_operand *op, char *str, ++ int opindex ATTRIBUTE_UNUSED) ++{ ++ static const char bparts[] = { 'b', 'l', 'u', 't' }; ++ static const char hparts[] = { 'b', 't' }; ++ unsigned int slot, sel; ++ int regid; ++ char *p, c; ++ ++ pr_debug("parse reg:part `%s'\n", str); ++ ++ for (p = str; *p; p++) ++ if (*p == ':') ++ break; ++ ++ c = *p, *p = 0; ++ regid = avr32_parse_intreg(str); ++ assert(regid >= 0); ++ *p = c; ++ ++ assert(c == ':'); ++ ++ if (op->align_order) ++ { ++ for (sel = 0; sel < sizeof(hparts); sel++) ++ if (TOLOWER(p[1]) == hparts[sel]) ++ break; ++ ++ if (sel >= sizeof(hparts)) ++ { ++ as_bad(_("invalid halfword selector `%c' (must be either b or t)"), ++ p[1]); ++ sel = 0; ++ } ++ } ++ else ++ { ++ for (sel = 0; sel < sizeof(bparts); sel++) ++ if (TOLOWER(p[1]) == bparts[sel]) ++ break; ++ ++ if (sel >= sizeof(bparts)) ++ { ++ as_bad(_("invalid byte selector `%c' (must be one of b,l,u,t)"), ++ p[1]); ++ sel = 0; ++ } ++ } ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regid; ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = sel; ++} ++ ++/* This is the parser for "Rp[displacement]" expressions. In addition ++ to the "official" syntax, we accept a label as a replacement for ++ the register expression. This syntax implies Rp=PC and the ++ displacement is the pc-relative distance to the label. */ ++static void ++parse_intreg_disp(const struct avr32_operand *op, char *str, int opindex) ++{ ++ expressionS *exp = ¤t_insn.immediate; ++ int slot, regid; ++ char *save, *p, c; ++ ++ pr_debug("parse_intreg_disp: `%s' (signed: %d, pcrel: %d, align: %d)\n", ++ str, op->is_signed, op->is_pcrel, op->align_order); ++ ++ for (p = str; *p; p++) ++ if (*p == '[') ++ break; ++ ++ slot = current_insn.next_slot++; ++ ++ /* First, check if we have a valid register either before '[' or as ++ the sole expression. If so, we use the Rp[disp] syntax. */ ++ c = *p, *p = 0; ++ regid = avr32_parse_intreg(str); ++ *p = c; ++ ++ if (regid >= 0) ++ { ++ current_insn.field_value[slot].value = regid; ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].align_order = op->align_order; ++ ++ if (c == '[') ++ { ++ save = input_line_pointer; ++ input_line_pointer = p + 1; ++ ++ expression(exp); ++ ++ if (*input_line_pointer != ']') ++ as_bad(_("junk after displacement expression")); ++ ++ input_line_pointer = save; ++ ++ switch (exp->X_op) ++ { ++ case O_illegal: ++ as_bad(_("illegal displacement expression")); ++ break; ++ case O_absent: ++ as_bad(_("missing displacement expression")); ++ break; ++ case O_constant: ++ pr_debug(" -> constant: %ld\n", exp->X_add_number); ++ current_insn.field_value[slot].value = exp->X_add_number; ++ break; ++#if 0 ++ case O_subtract: ++ if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg) ++ current_insn.pcrel = TRUE; ++ pr_debug(" -> subtract: pcrel? %s\n", ++ current_insn.pcrel ? "yes" : "no"); ++ /* fall through */ ++#endif ++ default: ++ pr_debug(" -> (%p <%d> %p + %d)\n", ++ exp->X_add_symbol, exp->X_op, exp->X_op_symbol, ++ exp->X_add_number); ++ current_insn.field_value[slot].value = 0; ++ } ++ } ++ else ++ { ++ exp->X_op = O_constant; ++ exp->X_add_number = 0; ++ current_insn.field_value[slot].value = 0; ++ } ++ } ++ else ++ { ++ /* Didn't find a valid register. Try parsing it as a label. */ ++ current_insn.field_value[slot].value = AVR32_REG_PC; ++ parse_jmplabel(op, str, opindex); ++ } ++} ++ ++static void ++parse_intreg_index(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ int slot, regid; ++ char *p, *end, c; ++ ++ for (p = str; *p; p++) ++ if (*p == '[') ++ break; ++ ++ assert(*p); ++ ++ c = *p, *p = 0; ++ regid = avr32_parse_intreg(str); ++ assert(regid >= 0); ++ *p = c; ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regid; ++ ++ p++; ++ for (end = p; *end; end++) ++ if (*end == ']' || *end == '<') ++ break; ++ ++ assert(*end); ++ ++ c = *end, *end = 0; ++ regid = avr32_parse_intreg(p); ++ assert(regid >= 0); ++ *end = c; ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regid; ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = 0; ++ ++ if (*end == '<') ++ { ++ expressionS exp; ++ char *save; ++ ++ p = end + 2; ++ for (end = p; *end; end++) ++ if (*end == ']') ++ break; ++ ++ assert(*end == ']'); ++ ++ c = *end, *end = 0; ++ save = input_line_pointer; ++ input_line_pointer = p; ++ expression(&exp); ++ ++ if (*input_line_pointer) ++ as_bad(_("junk after shift expression")); ++ ++ *end = c; ++ input_line_pointer = save; ++ ++ if (exp.X_op == O_constant) ++ current_insn.field_value[slot].value = exp.X_add_number; ++ else ++ as_bad(_("shift expression too complex")); ++ } ++} ++ ++static void ++parse_intreg_xindex(const struct avr32_operand *op, char *str, int opindex) ++{ ++ int slot, regid; ++ char *p, *end, c; ++ ++ for (p = str; *p; p++) ++ if (*p == '[') ++ break; ++ ++ assert(*p); ++ ++ c = *p, *p = 0; ++ regid = avr32_parse_intreg(str); ++ assert(regid >= 0); ++ *p = c; ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regid; ++ ++ p++; ++ for (end = p; *end; end++) ++ if (*end == '<') ++ break; ++ ++ assert(*end); ++ ++ c = *end, *end = 0; ++ parse_intreg_part(op, p, opindex); ++ *end = c; ++} ++ ++static void ++parse_pc_disp(const struct avr32_operand *op, char *str, int opindex) ++{ ++ char *p, c; ++ ++ for (p = str; *p; p++) ++ if (*p == '[') ++ break; ++ ++ /* The lddpc instruction comes in two different syntax variants: ++ lddpc reg, expression ++ lddpc reg, pc[disp] ++ If the operand contains a '[', we use the second form. */ ++ if (*p) ++ { ++ int regid; ++ ++ c = *p, *p = 0; ++ regid = avr32_parse_intreg(str); ++ *p = c; ++ if (regid == AVR32_REG_PC) ++ { ++ char *end; ++ ++ for (end = ++p; *end; end++) ; ++ if (*(--end) != ']') ++ as_bad(_("unrecognized form of instruction: `%s'"), str); ++ else ++ { ++ c = *end, *end = 0; ++ parse_const(op, p, opindex); ++ *end = c; ++ current_insn.pcrel = 0; ++ } ++ } ++ else ++ as_bad(_("unrecognized form of instruction: `%s'"), str); ++ } ++ else ++ { ++ parse_jmplabel(op, str, opindex); ++ } ++} ++ ++static void parse_sp(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str ATTRIBUTE_UNUSED, ++ int opindex ATTRIBUTE_UNUSED) ++{ ++ int slot; ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = AVR32_REG_SP; ++} ++ ++static void ++parse_sp_disp(const struct avr32_operand *op, char *str, int opindex) ++{ ++ char *p, c; ++ ++ for (; *str; str++) ++ if (*str == '[') ++ break; ++ ++ assert(*str); ++ ++ for (p = ++str; *p; p++) ++ if (*p == ']') ++ break; ++ ++ c = *p, *p = 0; ++ parse_const(op, str, opindex); ++ *p = c; ++} ++ ++static void ++parse_cpno(const struct avr32_operand *op ATTRIBUTE_UNUSED, char *str, ++ int opindex ATTRIBUTE_UNUSED) ++{ ++ int slot; ++ ++ str += 2; ++ if (*str == '#') ++ str++; ++ if (*str < '0' || *str > '7' || str[1]) ++ as_bad(_("invalid coprocessor `%s'"), str); ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = *str - '0'; ++} ++ ++static void ++parse_cpreg(const struct avr32_operand *op, char *str, ++ int opindex ATTRIBUTE_UNUSED) ++{ ++ unsigned int crid; ++ int slot; ++ char *endptr; ++ ++ str += 2; ++ crid = strtoul(str, &endptr, 10); ++ if (*endptr || crid > 15 || crid & ((1 << op->align_order) - 1)) ++ as_bad(_("invalid coprocessor register `%s'"), str); ++ ++ crid >>= op->align_order; ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = crid; ++} ++ ++static void ++parse_number(const struct avr32_operand *op, char *str, ++ int opindex ATTRIBUTE_UNUSED) ++{ ++ expressionS exp; ++ int slot; ++ char *save; ++ ++ save = input_line_pointer; ++ input_line_pointer = str; ++ expression(&exp); ++ input_line_pointer = save; ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].align_order = op->align_order; ++ ++ if (exp.X_op == O_constant) ++ current_insn.field_value[slot].value = exp.X_add_number; ++ else ++ as_bad(_("invalid numeric expression `%s'"), str); ++} ++ ++static void ++parse_reglist8(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ unsigned long regmask; ++ unsigned long value = 0; ++ int slot; ++ char *tail; ++ ++ regmask = avr32_parse_reglist(str, &tail); ++ if (*tail) ++ as_bad(_("invalid register list `%s'"), str); ++ else ++ { ++ if (avr32_make_regmask8(regmask, &value)) ++ as_bad(_("register list `%s' doesn't fit"), str); ++ } ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = value; ++} ++ ++static int ++parse_reglist_tail(char *str, unsigned long regmask) ++{ ++ expressionS exp; ++ char *save, *p, c; ++ int regid; ++ ++ for (p = str + 1; *p; p++) ++ if (*p == '=') ++ break; ++ ++ if (!*p) ++ { ++ as_bad(_("invalid register list `%s'"), str); ++ return -2; ++ } ++ ++ c = *p, *p = 0; ++ regid = avr32_parse_intreg(str); ++ *p = c; ++ ++ if (regid != 12) ++ { ++ as_bad(_("invalid register list `%s'"), str); ++ return -2; ++ } ++ ++ /* If we have an assignment, we must pop PC and we must _not_ ++ pop LR or R12 */ ++ if (!(regmask & (1 << AVR32_REG_PC))) ++ { ++ as_bad(_("return value specified for non-return instruction")); ++ return -2; ++ } ++ else if (regmask & ((1 << AVR32_REG_R12) | (1 << AVR32_REG_LR))) ++ { ++ as_bad(_("can't pop LR or R12 when specifying return value")); ++ return -2; ++ } ++ ++ save = input_line_pointer; ++ input_line_pointer = p + 1; ++ expression(&exp); ++ input_line_pointer = save; ++ ++ if (exp.X_op != O_constant ++ || exp.X_add_number < -1 ++ || exp.X_add_number > 1) ++ { ++ as_bad(_("invalid return value `%s'"), str); ++ return -2; ++ } ++ ++ return exp.X_add_number; ++} ++ ++static void ++parse_reglist9(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ unsigned long regmask; ++ unsigned long value = 0, kbit = 0; ++ int slot; ++ char *tail; ++ ++ regmask = avr32_parse_reglist(str, &tail); ++ /* printf("parsed reglist16: %04lx, tail: `%s'\n", regmask, tail); */ ++ if (*tail) ++ { ++ int retval; ++ ++ retval = parse_reglist_tail(tail, regmask); ++ ++ switch (retval) ++ { ++ case -1: ++ regmask |= 1 << AVR32_REG_LR; ++ break; ++ case 0: ++ break; ++ case 1: ++ regmask |= 1 << AVR32_REG_R12; ++ break; ++ default: ++ break; ++ } ++ ++ kbit = 1; ++ } ++ ++ if (avr32_make_regmask8(regmask, &value)) ++ as_bad(_("register list `%s' doesn't fit"), str); ++ ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = (value << 1) | kbit; ++} ++ ++static void ++parse_reglist16(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ unsigned long regmask; ++ int slot; ++ char *tail; ++ ++ regmask = avr32_parse_reglist(str, &tail); ++ if (*tail) ++ as_bad(_("invalid register list `%s'"), str); ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regmask; ++} ++ ++static void ++parse_reglist_ldm(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ unsigned long regmask; ++ int slot, rp, w_bit = 0; ++ char *tail, *p, c; ++ ++ for (p = str; *p && *p != ','; p++) ++ if (*p == '+') ++ break; ++ ++ c = *p, *p = 0; ++ rp = avr32_parse_intreg(str); ++ *p = c; ++ if (rp < 0) ++ { ++ as_bad(_("invalid destination register in `%s'"), str); ++ return; ++ } ++ ++ if (p[0] == '+' && p[1] == '+') ++ { ++ w_bit = 1; ++ p += 2; ++ } ++ ++ if (*p != ',') ++ { ++ as_bad(_("expected `,' after destination register in `%s'"), str); ++ return; ++ } ++ ++ str = p + 1; ++ regmask = avr32_parse_reglist(str, &tail); ++ if (*tail) ++ { ++ int retval; ++ ++ if (rp != AVR32_REG_SP) ++ { ++ as_bad(_("junk at end of line: `%s'"), tail); ++ return; ++ } ++ ++ rp = AVR32_REG_PC; ++ ++ retval = parse_reglist_tail(tail, regmask); ++ ++ switch (retval) ++ { ++ case -1: ++ regmask |= 1 << AVR32_REG_LR; ++ break; ++ case 0: ++ break; ++ case 1: ++ regmask |= 1 << AVR32_REG_R12; ++ break; ++ default: ++ return; ++ } ++ } ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = rp; ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = w_bit; ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regmask; ++} ++ ++static void ++parse_reglist_cp8(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ unsigned long regmask; ++ int slot, h_bit = 0; ++ char *tail; ++ ++ regmask = avr32_parse_cpreglist(str, &tail); ++ if (*tail) ++ as_bad(_("junk at end of line: `%s'"), tail); ++ else if (regmask & 0xffUL) ++ { ++ if (regmask & 0xff00UL) ++ as_bad(_("register list `%s' doesn't fit"), str); ++ regmask &= 0xff; ++ } ++ else if (regmask & 0xff00UL) ++ { ++ regmask >>= 8; ++ h_bit = 1; ++ } ++ else ++ as_warn(_("register list is empty")); ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regmask; ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = h_bit; ++} ++ ++static void ++parse_reglist_cpd8(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ unsigned long regmask, regmask_d = 0; ++ int slot, i; ++ char *tail; ++ ++ regmask = avr32_parse_cpreglist(str, &tail); ++ if (*tail) ++ as_bad(_("junk at end of line: `%s'"), tail); ++ ++ for (i = 0; i < 8; i++) ++ { ++ if (regmask & 1) ++ { ++ if (!(regmask & 2)) ++ { ++ as_bad(_("register list `%s' doesn't fit"), str); ++ break; ++ } ++ regmask_d |= 1 << i; ++ } ++ else if (regmask & 2) ++ { ++ as_bad(_("register list `%s' doesn't fit"), str); ++ break; ++ } ++ ++ regmask >>= 2; ++ } ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regmask_d; ++} ++ ++static void ++parse_retval(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ int regid, slot; ++ ++ regid = avr32_parse_intreg(str); ++ if (regid < 0) ++ { ++ expressionS exp; ++ char *save; ++ ++ regid = 0; ++ ++ save = input_line_pointer; ++ input_line_pointer = str; ++ expression(&exp); ++ input_line_pointer = save; ++ ++ if (exp.X_op != O_constant) ++ as_bad(_("invalid return value `%s'"), str); ++ else ++ switch (exp.X_add_number) ++ { ++ case -1: ++ regid = AVR32_REG_LR; ++ break; ++ case 0: ++ regid = AVR32_REG_SP; ++ break; ++ case 1: ++ regid = AVR32_REG_PC; ++ break; ++ default: ++ as_bad(_("invalid return value `%s'"), str); ++ break; ++ } ++ } ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regid; ++} ++ ++#define parse_mcall parse_intreg_disp ++ ++static void ++parse_jospinc(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ expressionS exp; ++ int slot; ++ char *save; ++ ++ save = input_line_pointer; ++ input_line_pointer = str; ++ expression(&exp); ++ input_line_pointer = save; ++ ++ slot = current_insn.next_slot++; ++ ++ if (exp.X_op == O_constant) ++ { ++ if (exp.X_add_number > 0) ++ exp.X_add_number--; ++ current_insn.field_value[slot].value = exp.X_add_number; ++ } ++ else ++ as_bad(_("invalid numeric expression `%s'"), str); ++} ++ ++#define parse_coh parse_nothing ++ ++static void ++parse_fpreg(const struct avr32_operand *op, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ unsigned long regid; ++ int slot; ++ ++ regid = strtoul(str + 2, NULL, 10); ++ ++ if ((regid >= 16) || (regid & ((1 << op->align_order) - 1))) ++ as_bad(_("invalid floating-point register `%s'"), str); ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regid; ++ current_insn.field_value[slot].align_order = op->align_order; ++} ++ ++static void ++parse_picoreg(const struct avr32_operand *op, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ unsigned long regid; ++ int slot; ++ ++ regid = avr32_parse_picoreg(str); ++ if (regid & ((1 << op->align_order) - 1)) ++ as_bad(_("invalid double-word PiCo register `%s'"), str); ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regid; ++ current_insn.field_value[slot].align_order = op->align_order; ++} ++ ++static void ++parse_pico_reglist_w(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ unsigned long regmask; ++ int slot, h_bit = 0; ++ char *tail; ++ ++ regmask = avr32_parse_pico_reglist(str, &tail); ++ if (*tail) ++ as_bad(_("junk at end of line: `%s'"), tail); ++ ++ if (regmask & 0x00ffUL) ++ { ++ if (regmask & 0xff00UL) ++ as_bad(_("register list `%s' doesn't fit"), str); ++ regmask &= 0x00ffUL; ++ } ++ else if (regmask & 0xff00UL) ++ { ++ regmask >>= 8; ++ h_bit = 1; ++ } ++ else ++ as_warn(_("register list is empty")); ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regmask; ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = h_bit; ++} ++ ++static void ++parse_pico_reglist_d(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ unsigned long regmask, regmask_d = 0; ++ int slot, i; ++ char *tail; ++ ++ regmask = avr32_parse_pico_reglist(str, &tail); ++ if (*tail) ++ as_bad(_("junk at end of line: `%s'"), tail); ++ ++ for (i = 0; i < 8; i++) ++ { ++ if (regmask & 1) ++ { ++ if (!(regmask & 2)) ++ { ++ as_bad(_("register list `%s' doesn't fit"), str); ++ break; ++ } ++ regmask_d |= 1 << i; ++ } ++ else if (regmask & 2) ++ { ++ as_bad(_("register list `%s' doesn't fit"), str); ++ break; ++ } ++ ++ regmask >>= 2; ++ } ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regmask_d; ++} ++ ++static void ++parse_pico_in(const struct avr32_operand *op ATTRIBUTE_UNUSED, ++ char *str, int opindex ATTRIBUTE_UNUSED) ++{ ++ unsigned long regid; ++ int slot; ++ ++ regid = strtoul(str + 2, NULL, 10); ++ ++ if (regid >= 12) ++ as_bad(_("invalid PiCo IN register `%s'"), str); ++ ++ slot = current_insn.next_slot++; ++ current_insn.field_value[slot].value = regid; ++ current_insn.field_value[slot].align_order = 0; ++} ++ ++#define parse_pico_out0 parse_nothing ++#define parse_pico_out1 parse_nothing ++#define parse_pico_out2 parse_nothing ++#define parse_pico_out3 parse_nothing ++ ++#define OP(name, sgn, pcrel, align, func) \ ++ { AVR32_OPERAND_##name, sgn, pcrel, align, match_##func, parse_##func } ++ ++struct avr32_operand avr32_operand_table[] = { ++ OP(INTREG, 0, 0, 0, intreg), ++ OP(INTREG_PREDEC, 0, 0, 0, intreg_predec), ++ OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc), ++ OP(INTREG_LSL, 0, 0, 0, intreg_lsl), ++ OP(INTREG_LSR, 0, 0, 0, intreg_lsr), ++ OP(INTREG_BSEL, 0, 0, 0, intreg_part), ++ OP(INTREG_HSEL, 0, 0, 1, intreg_part), ++ OP(INTREG_SDISP, 1, 0, 0, intreg_disp), ++ OP(INTREG_SDISP_H, 1, 0, 1, intreg_disp), ++ OP(INTREG_SDISP_W, 1, 0, 2, intreg_disp), ++ OP(INTREG_UDISP, 0, 0, 0, intreg_disp), ++ OP(INTREG_UDISP_H, 0, 0, 1, intreg_disp), ++ OP(INTREG_UDISP_W, 0, 0, 2, intreg_disp), ++ OP(INTREG_INDEX, 0, 0, 0, intreg_index), ++ OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex), ++ OP(DWREG, 0, 0, 1, intreg), ++ OP(PC_UDISP_W, 0, 1, 2, pc_disp), ++ OP(SP, 0, 0, 0, sp), ++ OP(SP_UDISP_W, 0, 0, 2, sp_disp), ++ OP(CPNO, 0, 0, 0, cpno), ++ OP(CPREG, 0, 0, 0, cpreg), ++ OP(CPREG_D, 0, 0, 1, cpreg), ++ OP(UNSIGNED_CONST, 0, 0, 0, const), ++ OP(UNSIGNED_CONST_W, 0, 0, 2, const), ++ OP(SIGNED_CONST, 1, 0, 0, const), ++ OP(SIGNED_CONST_W, 1, 0, 2, const), ++ OP(JMPLABEL, 1, 1, 1, jmplabel), ++ OP(UNSIGNED_NUMBER, 0, 0, 0, number), ++ OP(UNSIGNED_NUMBER_W, 0, 0, 2, number), ++ OP(REGLIST8, 0, 0, 0, reglist8), ++ OP(REGLIST9, 0, 0, 0, reglist9), ++ OP(REGLIST16, 0, 0, 0, reglist16), ++ OP(REGLIST_LDM, 0, 0, 0, reglist_ldm), ++ OP(REGLIST_CP8, 0, 0, 0, reglist_cp8), ++ OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8), ++ OP(RETVAL, 0, 0, 0, retval), ++ OP(MCALL, 1, 0, 2, mcall), ++ OP(JOSPINC, 0, 0, 0, jospinc), ++ OP(COH, 0, 0, 0, coh), ++ OP(FPREG_S, 0, 0, 0, fpreg), ++ OP(FPREG_D, 0, 0, 1, fpreg), ++ OP(PICO_REG_W, 0, 0, 0, picoreg), ++ OP(PICO_REG_D, 0, 0, 1, picoreg), ++ OP(PICO_REGLIST_W, 0, 0, 0, pico_reglist_w), ++ OP(PICO_REGLIST_D, 0, 0, 0, pico_reglist_d), ++ OP(PICO_IN, 0, 0, 0, pico_in), ++ OP(PICO_OUT0, 0, 0, 0, pico_out0), ++ OP(PICO_OUT1, 0, 0, 0, pico_out1), ++ OP(PICO_OUT2, 0, 0, 0, pico_out2), ++ OP(PICO_OUT3, 0, 0, 0, pico_out3), ++}; ++ ++symbolS * ++md_undefined_symbol (char *name ATTRIBUTE_UNUSED) ++{ ++ pr_debug("md_undefined_symbol: %s\n", name); ++ return 0; ++} ++ ++struct avr32_relax_type ++{ ++ long lower_bound; ++ long upper_bound; ++ unsigned char align; ++ unsigned char length; ++ signed short next; ++}; ++ ++#define EMPTY { 0, 0, 0, 0, -1 } ++#define C(lower, upper, align, next) \ ++ { (lower), (upper), (align), 2, AVR32_OPC_##next } ++#define E(lower, upper, align) \ ++ { (lower), (upper), (align), 4, -1 } ++ ++static const struct avr32_relax_type avr32_relax_table[] = ++ { ++ /* 0 */ ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, ++ E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0), ++ EMPTY, ++ /* 16 */ ++ EMPTY, EMPTY, EMPTY, EMPTY, ++ ++ C(-256, 254, 1, BREQ2), C(-256, 254, 1, BRNE2), ++ C(-256, 254, 1, BRCC2), C(-256, 254, 1, BRCS2), ++ C(-256, 254, 1, BRGE2), C(-256, 254, 1, BRLT2), ++ C(-256, 254, 1, BRMI2), C(-256, 254, 1, BRPL2), ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1), ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1), ++ /* 32 */ ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1), ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1), ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1), ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1), ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1), ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1), ++ ++ EMPTY, EMPTY, EMPTY, EMPTY, ++ /* 48 */ ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, ++ ++ C(-32, 31, 0, CP_W3), E(-1048576, 1048575, 0), ++ ++ EMPTY, EMPTY, EMPTY, ++ /* 64: csrfcz */ ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ E(0, 65535, 0), E(0, 65535, 0), ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ E(-32768, 32767, 0), ++ /* 80: LD_SB2 */ ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ ++ C(0, 7, 0, LD_UB4), E(-32768, 32767, 0), ++ ++ EMPTY, ++ EMPTY, EMPTY, ++ ++ C(0, 14, 1, LD_SH4), E(-32768, 32767, 0), ++ ++ EMPTY, EMPTY, EMPTY, ++ ++ C(0, 14, 1, LD_UH4), E(-32768, 32767, 0), ++ ++ EMPTY, EMPTY, EMPTY, EMPTY, ++ ++ C(0, 124, 2, LD_W4), E(-32768, 32767, 0), ++ ++ E(0, 1020, 2), /* LDC_D1 */ ++ EMPTY, EMPTY, ++ E(0, 1020, 2), /* LDC_W1 */ ++ EMPTY, EMPTY, ++ E(0, 16380, 2), /* LDC0_D */ ++ E(0, 16380, 2), /* LDC0_W */ ++ EMPTY, EMPTY, EMPTY, EMPTY, ++ ++ C(0, 508, 2, LDDPC_EXT), E(-32768, 32767, 0), ++ ++ EMPTY, ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ /* 128: MACHH_W */ ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ E(-131072, 131068, 2), /* MCALL */ ++ E(0, 1020, 2), /* MFDR */ ++ E(0, 1020, 2), /* MFSR */ ++ EMPTY, EMPTY, ++ ++ C(-128, 127, 0, MOV2), E(-1048576, 1048575, 0), ++ ++ EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ ++ E(-128, 127, 0), /* MOVEQ2 */ ++ E(-128, 127, 0), /* MOVNE2 */ ++ E(-128, 127, 0), /* MOVCC2 */ ++ E(-128, 127, 0), /* 160: MOVCS2 */ ++ E(-128, 127, 0), /* MOVGE2 */ ++ E(-128, 127, 0), /* MOVLT2 */ ++ E(-128, 127, 0), /* MOVMI2 */ ++ E(-128, 127, 0), /* MOVPL2 */ ++ E(-128, 127, 0), /* MOVLS2 */ ++ E(-128, 127, 0), /* MOVGT2 */ ++ E(-128, 127, 0), /* MOVLE2 */ ++ E(-128, 127, 0), /* MOVHI2 */ ++ E(-128, 127, 0), /* MOVVS2 */ ++ E(-128, 127, 0), /* MOVVC2 */ ++ E(-128, 127, 0), /* MOVQS2 */ ++ E(-128, 127, 0), /* MOVAL2 */ ++ ++ E(0, 1020, 2), /* MTDR */ ++ E(0, 1020, 2), /* MTSR */ ++ EMPTY, ++ EMPTY, ++ E(-128, 127, 0), /* MUL3 */ ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ /* 192: MVCR_W */ ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ E(0, 65535, 0), E(0, 65535, 0), ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ /* 224: PASR_H */ ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ /* 256: PUNPCKSB_H */ ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ ++ C(-1024, 1022, 1, RCALL2), E(-2097152, 2097150, 1), ++ ++ EMPTY, ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, ++ ++ C(-1024, 1022, 1, BRAL), ++ ++ EMPTY, EMPTY, EMPTY, ++ E(-128, 127, 0), /* RSUB2 */ ++ /* 288: SATADD_H */ ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ E(0, 255, 0), /* SLEEP */ ++ EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ /* 320: ST_B2 */ ++ EMPTY, EMPTY, ++ C(0, 7, 0, ST_B4), E(-32768, 32767, 0), ++ EMPTY, EMPTY, EMPTY, EMPTY, ++ E(-32768, 32767, 0), ++ EMPTY, EMPTY, EMPTY, ++ C(0, 14, 1, ST_H4), E(-32768, 32767, 0), ++ EMPTY, EMPTY, ++ EMPTY, ++ C(0, 60, 2, ST_W4), E(-32768, 32767, 0), ++ E(0, 1020, 2), /* STC_D1 */ ++ EMPTY, EMPTY, ++ E(0, 1020, 2), /* STC_W1 */ ++ EMPTY, EMPTY, ++ E(0, 16380, 2), /* STC0_D */ ++ E(0, 16380, 2), /* STC0_W */ ++ ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ /* 352: STDSP */ ++ EMPTY, EMPTY, ++ E(0, 1020, 2), /* STHH_W1 */ ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ EMPTY, EMPTY, EMPTY, ++ E(-32768, 32767, 0), ++ C(-512, 508, 2, SUB4), ++ C(-128, 127, 0, SUB4), E(-1048576, 1048576, 0), ++ /* SUB{cond} */ ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), ++ /* SUBF{cond} */ ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), ++ EMPTY, ++ ++ /* 400: SWAP_B */ ++ EMPTY, EMPTY, EMPTY, ++ E(0, 255, 0), /* SYNC */ ++ EMPTY, EMPTY, EMPTY, EMPTY, ++ /* 408: TST */ ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, ++ /* 416: EXTRACT_B */ ++ EMPTY, EMPTY, EMPTY, EMPTY, ++ }; ++ ++#undef E ++#undef C ++#undef EMPTY ++ ++#define AVR32_RS_NONE (-1) ++ ++#define avr32_rs_size(state) (avr32_relax_table[(state)].length) ++#define avr32_rs_align(state) (avr32_relax_table[(state)].align) ++#define relax_more(state) (avr32_relax_table[(state)].next) ++ ++#define opc_initial_substate(opc) ((opc)->id) ++ ++static int need_relax(int subtype, offsetT distance) ++{ ++ offsetT upper_bound, lower_bound; ++ ++ upper_bound = avr32_relax_table[subtype].upper_bound; ++ lower_bound = avr32_relax_table[subtype].lower_bound; ++ ++ if (distance & ((1 << avr32_rs_align(subtype)) - 1)) ++ return 1; ++ if ((distance > upper_bound) || (distance < lower_bound)) ++ return 1; ++ ++ return 0; ++} ++ ++enum { ++ LDA_SUBTYPE_MOV1, ++ LDA_SUBTYPE_MOV2, ++ LDA_SUBTYPE_SUB, ++ LDA_SUBTYPE_LDDPC, ++ LDA_SUBTYPE_LDW, ++ LDA_SUBTYPE_GOTLOAD, ++ LDA_SUBTYPE_GOTLOAD_LARGE, ++}; ++ ++enum { ++ CALL_SUBTYPE_RCALL1, ++ CALL_SUBTYPE_RCALL2, ++ CALL_SUBTYPE_MCALL_CP, ++ CALL_SUBTYPE_MCALL_GOT, ++ CALL_SUBTYPE_MCALL_LARGE, ++}; ++ ++#define LDA_INITIAL_SIZE (avr32_pic ? 4 : 2) ++#define CALL_INITIAL_SIZE 2 ++ ++#define need_reloc(sym, seg, pcrel) \ ++ (!(S_IS_DEFINED(sym) \ ++ && ((pcrel && S_GET_SEGMENT(sym) == seg) \ ++ || (!pcrel && S_GET_SEGMENT(sym) == absolute_section))) \ ++ || S_FORCE_RELOC(sym, 1)) ++ ++/* Return an initial guess of the length by which a fragment must grow to ++ hold a branch to reach its destination. ++ Also updates fr_type/fr_subtype as necessary. ++ ++ Called just before doing relaxation. ++ Any symbol that is now undefined will not become defined. ++ The guess for fr_var is ACTUALLY the growth beyond fr_fix. ++ Whatever we do to grow fr_fix or fr_var contributes to our returned value. ++ Although it may not be explicit in the frag, pretend fr_var starts with a ++ 0 value. */ ++ ++static int ++avr32_default_estimate_size_before_relax (fragS *fragP, segT segment) ++{ ++ int growth = 0; ++ ++ assert(fragP); ++ assert(fragP->fr_symbol); ++ ++ if (fragP->tc_frag_data.force_extended ++ || need_reloc(fragP->fr_symbol, segment, fragP->tc_frag_data.pcrel)) ++ { ++ int largest_state = fragP->fr_subtype; ++ while (relax_more(largest_state) != AVR32_RS_NONE) ++ largest_state = relax_more(largest_state); ++ growth = avr32_rs_size(largest_state) - fragP->fr_var; ++ } ++ else ++ { ++ growth = avr32_rs_size(fragP->fr_subtype) - fragP->fr_var; ++ } ++ ++ pr_debug("%s:%d: md_estimate_size_before_relax: %d\n", ++ fragP->fr_file, fragP->fr_line, growth); ++ ++ return growth; ++} ++ ++static int ++avr32_lda_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED) ++{ ++ return fragP->fr_var - LDA_INITIAL_SIZE; ++} ++ ++static int ++avr32_call_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED) ++{ ++ return fragP->fr_var - CALL_INITIAL_SIZE; ++} ++ ++static int ++avr32_cpool_estimate_size_before_relax(fragS *fragP, ++ segT segment ATTRIBUTE_UNUSED) ++{ ++ return fragP->fr_var; ++} ++ ++/* This macro may be defined to relax a frag. GAS will call this with the ++ * segment, the frag, and the change in size of all previous frags; ++ * md_relax_frag should return the change in size of the frag. */ ++static long ++avr32_default_relax_frag (segT segment, fragS *fragP, long stretch) ++{ ++ int state, next_state; ++ symbolS *symbolP; /* The target symbol */ ++ long growth = 0; ++ ++ state = next_state = fragP->fr_subtype; ++ ++ symbolP = fragP->fr_symbol; ++ ++ if (fragP->tc_frag_data.force_extended ++ || need_reloc(symbolP, segment, fragP->tc_frag_data.pcrel)) ++ { ++ /* Symbol must be resolved by the linker. Emit the largest ++ possible opcode. */ ++ while (relax_more(next_state) != AVR32_RS_NONE) ++ next_state = relax_more(next_state); ++ } ++ else ++ { ++ addressT address; /* The address of fragP */ ++ addressT target; /* The address of the target symbol */ ++ offsetT distance; /* The distance between the insn and the symbol */ ++ fragS *sym_frag; ++ ++ address = fragP->fr_address; ++ target = fragP->fr_offset; ++ symbolP = fragP->fr_symbol; ++ sym_frag = symbol_get_frag(symbolP); ++ ++ address += fragP->fr_fix - fragP->fr_var; ++ target += S_GET_VALUE(symbolP); ++ ++ if (stretch != 0 ++ && sym_frag->relax_marker != fragP->relax_marker ++ && S_GET_SEGMENT(symbolP) == segment) ++ /* if it was correctly aligned before, make sure it stays aligned */ ++ target += stretch & (~0UL << avr32_rs_align(state)); ++ ++ if (fragP->tc_frag_data.pcrel) ++ distance = target - (address & (~0UL << avr32_rs_align(state))); ++ else ++ distance = target; ++ ++ pr_debug("%s:%d: relax more? 0x%x - 0x%x = 0x%x (%d), align %d\n", ++ fragP->fr_file, fragP->fr_line, target, address, ++ distance, distance, avr32_rs_align(state)); ++ ++ if (need_relax(state, distance)) ++ { ++ if (relax_more(state) != AVR32_RS_NONE) ++ next_state = relax_more(state); ++ pr_debug("%s:%d: relax more %d -> %d (%d - %d, align %d)\n", ++ fragP->fr_file, fragP->fr_line, state, next_state, ++ target, address, avr32_rs_align(state)); ++ } ++ } ++ ++ growth = avr32_rs_size(next_state) - avr32_rs_size(state); ++ fragP->fr_subtype = next_state; ++ ++ pr_debug("%s:%d: md_relax_frag: growth=%d, subtype=%d, opc=0x%08lx\n", ++ fragP->fr_file, fragP->fr_line, growth, fragP->fr_subtype, ++ avr32_opc_table[next_state].value); ++ ++ return growth; ++} ++ ++static long ++avr32_lda_relax_frag(segT segment, fragS *fragP, long stretch) ++{ ++ struct cpool *pool= NULL; ++ unsigned int entry = 0; ++ addressT address, target; ++ offsetT distance; ++ symbolS *symbolP; ++ fragS *sym_frag; ++ long old_size, new_size; ++ ++ symbolP = fragP->fr_symbol; ++ old_size = fragP->fr_var; ++ if (!avr32_pic) ++ { ++ pool = fragP->tc_frag_data.pool; ++ entry = fragP->tc_frag_data.pool_entry; ++ } ++ ++ address = fragP->fr_address; ++ address += fragP->fr_fix - LDA_INITIAL_SIZE; ++ ++ if (!S_IS_DEFINED(symbolP) || S_FORCE_RELOC(symbolP, 1)) ++ goto relax_max; ++ ++ target = fragP->fr_offset; ++ sym_frag = symbol_get_frag(symbolP); ++ target += S_GET_VALUE(symbolP); ++ ++ if (sym_frag->relax_marker != fragP->relax_marker ++ && S_GET_SEGMENT(symbolP) == segment) ++ target += stretch; ++ ++ distance = target - address; ++ ++ pr_debug("lda_relax_frag: target: %d, address: %d, var: %d\n", ++ target, address, fragP->fr_var); ++ ++ if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section ++ && target <= 127 && (offsetT)target >= -128) ++ { ++ if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC ++ || fragP->fr_subtype == LDA_SUBTYPE_LDW) ++ pool->literals[entry].refcount--; ++ new_size = 2; ++ fragP->fr_subtype = LDA_SUBTYPE_MOV1; ++ } ++ else if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section ++ && target <= 1048575 && (offsetT)target >= -1048576) ++ { ++ if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC ++ || fragP->fr_subtype == LDA_SUBTYPE_LDW) ++ pool->literals[entry].refcount--; ++ new_size = 4; ++ fragP->fr_subtype = LDA_SUBTYPE_MOV2; ++ } ++ else if (!linkrelax && S_GET_SEGMENT(symbolP) == segment ++ /* the field will be negated, so this is really -(-32768) ++ and -(32767) */ ++ && distance <= 32768 && distance >= -32767) ++ { ++ if (!avr32_pic ++ && (fragP->fr_subtype == LDA_SUBTYPE_LDDPC ++ || fragP->fr_subtype == LDA_SUBTYPE_LDW)) ++ pool->literals[entry].refcount--; ++ new_size = 4; ++ fragP->fr_subtype = LDA_SUBTYPE_SUB; ++ } ++ else ++ { ++ relax_max: ++ if (avr32_pic) ++ { ++ if (linkrelax) ++ { ++ new_size = 8; ++ fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD_LARGE; ++ } ++ else ++ { ++ new_size = 4; ++ fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD; ++ } ++ } ++ else ++ { ++ if (fragP->fr_subtype != LDA_SUBTYPE_LDDPC ++ && fragP->fr_subtype != LDA_SUBTYPE_LDW) ++ pool->literals[entry].refcount++; ++ ++ sym_frag = symbol_get_frag(pool->symbol); ++ target = (sym_frag->fr_address + sym_frag->fr_fix ++ + pool->padding + pool->literals[entry].offset); ++ ++ pr_debug("cpool sym address: 0x%lx\n", ++ sym_frag->fr_address + sym_frag->fr_fix); ++ ++ know(pool->section == segment); ++ ++ if (sym_frag->relax_marker != fragP->relax_marker) ++ target += stretch; ++ ++ distance = target - address; ++ if (distance <= 508 && distance >= 0) ++ { ++ new_size = 2; ++ fragP->fr_subtype = LDA_SUBTYPE_LDDPC; ++ } ++ else ++ { ++ new_size = 4; ++ fragP->fr_subtype = LDA_SUBTYPE_LDW; ++ } ++ ++ pr_debug("lda_relax_frag (cpool): target=0x%lx, address=0x%lx, refcount=%d\n", ++ target, address, pool->literals[entry].refcount); ++ } ++ } ++ ++ fragP->fr_var = new_size; ++ ++ pr_debug("%s:%d: lda: relax pass done. subtype: %d, growth: %ld\n", ++ fragP->fr_file, fragP->fr_line, ++ fragP->fr_subtype, new_size - old_size); ++ ++ return new_size - old_size; ++} ++ ++static long ++avr32_call_relax_frag(segT segment, fragS *fragP, long stretch) ++{ ++ struct cpool *pool = NULL; ++ unsigned int entry = 0; ++ addressT address, target; ++ offsetT distance; ++ symbolS *symbolP; ++ fragS *sym_frag; ++ long old_size, new_size; ++ ++ symbolP = fragP->fr_symbol; ++ old_size = fragP->fr_var; ++ if (!avr32_pic) ++ { ++ pool = fragP->tc_frag_data.pool; ++ entry = fragP->tc_frag_data.pool_entry; ++ } ++ ++ address = fragP->fr_address; ++ address += fragP->fr_fix - CALL_INITIAL_SIZE; ++ ++ if (need_reloc(symbolP, segment, 1)) ++ { ++ pr_debug("call: must emit reloc\n"); ++ goto relax_max; ++ } ++ ++ target = fragP->fr_offset; ++ sym_frag = symbol_get_frag(symbolP); ++ target += S_GET_VALUE(symbolP); ++ ++ if (sym_frag->relax_marker != fragP->relax_marker ++ && S_GET_SEGMENT(symbolP) == segment) ++ target += stretch; ++ ++ distance = target - address; ++ ++ if (distance <= 1022 && distance >= -1024) ++ { ++ pr_debug("call: distance is %d, emitting short rcall\n", distance); ++ if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP) ++ pool->literals[entry].refcount--; ++ new_size = 2; ++ fragP->fr_subtype = CALL_SUBTYPE_RCALL1; ++ } ++ else if (distance <= 2097150 && distance >= -2097152) ++ { ++ pr_debug("call: distance is %d, emitting long rcall\n", distance); ++ if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP) ++ pool->literals[entry].refcount--; ++ new_size = 4; ++ fragP->fr_subtype = CALL_SUBTYPE_RCALL2; ++ } ++ else ++ { ++ pr_debug("call: distance %d too far, emitting something big\n", distance); ++ ++ relax_max: ++ if (avr32_pic) ++ { ++ if (linkrelax) ++ { ++ new_size = 10; ++ fragP->fr_subtype = CALL_SUBTYPE_MCALL_LARGE; ++ } ++ else ++ { ++ new_size = 4; ++ fragP->fr_subtype = CALL_SUBTYPE_MCALL_GOT; ++ } ++ } ++ else ++ { ++ if (fragP->fr_subtype != CALL_SUBTYPE_MCALL_CP) ++ pool->literals[entry].refcount++; ++ ++ new_size = 4; ++ fragP->fr_subtype = CALL_SUBTYPE_MCALL_CP; ++ } ++ } ++ ++ fragP->fr_var = new_size; ++ ++ pr_debug("%s:%d: call: relax pass done, growth: %d, fr_var: %d\n", ++ fragP->fr_file, fragP->fr_line, ++ new_size - old_size, fragP->fr_var); ++ ++ return new_size - old_size; ++} ++ ++static long ++avr32_cpool_relax_frag(segT segment ATTRIBUTE_UNUSED, ++ fragS *fragP, ++ long stretch ATTRIBUTE_UNUSED) ++{ ++ struct cpool *pool; ++ addressT address; ++ long old_size, new_size; ++ unsigned int entry; ++ ++ pool = fragP->tc_frag_data.pool; ++ address = fragP->fr_address + fragP->fr_fix; ++ old_size = fragP->fr_var; ++ new_size = 0; ++ ++ for (entry = 0; entry < pool->next_free_entry; entry++) ++ { ++ if (pool->literals[entry].refcount > 0) ++ { ++ pool->literals[entry].offset = new_size; ++ new_size += 4; ++ } ++ } ++ ++ fragP->fr_var = new_size; ++ ++ return new_size - old_size; ++} ++ ++/* *fragP has been relaxed to its final size, and now needs to have ++ the bytes inside it modified to conform to the new size. ++ ++ Called after relaxation is finished. ++ fragP->fr_type == rs_machine_dependent. ++ fragP->fr_subtype is the subtype of what the address relaxed to. */ ++ ++static void ++avr32_default_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, ++ segT segment ATTRIBUTE_UNUSED, ++ fragS *fragP) ++{ ++ const struct avr32_opcode *opc; ++ const struct avr32_ifield *ifield; ++ bfd_reloc_code_real_type r_type; ++ symbolS *symbolP; ++ fixS *fixP; ++ bfd_vma value; ++ int subtype; ++ ++ opc = &avr32_opc_table[fragP->fr_subtype]; ++ ifield = opc->fields[opc->var_field]; ++ symbolP = fragP->fr_symbol; ++ subtype = fragP->fr_subtype; ++ r_type = opc->reloc_type; ++ ++ /* Clear the opcode bits and the bits belonging to the relaxed ++ field. We assume all other fields stay the same. */ ++ value = bfd_getb32(fragP->fr_opcode); ++ value &= ~(opc->mask | ifield->mask); ++ ++ /* Insert the new opcode */ ++ value |= opc->value; ++ bfd_putb32(value, fragP->fr_opcode); ++ ++ fragP->fr_fix += opc->size - fragP->fr_var; ++ ++ if (fragP->tc_frag_data.reloc_info != AVR32_OPINFO_NONE) ++ { ++ switch (fragP->tc_frag_data.reloc_info) ++ { ++ case AVR32_OPINFO_HI: ++ r_type = BFD_RELOC_HI16; ++ break; ++ case AVR32_OPINFO_LO: ++ r_type = BFD_RELOC_LO16; ++ break; ++ case AVR32_OPINFO_GOT: ++ switch (r_type) ++ { ++ case BFD_RELOC_AVR32_18W_PCREL: ++ r_type = BFD_RELOC_AVR32_GOT18SW; ++ break; ++ case BFD_RELOC_AVR32_16S: ++ r_type = BFD_RELOC_AVR32_GOT16S; ++ break; ++ default: ++ BAD_CASE(r_type); ++ break; ++ } ++ break; ++ default: ++ BAD_CASE(fragP->tc_frag_data.reloc_info); ++ break; ++ } ++ } ++ ++ pr_debug("%s:%d: convert_frag: new %s fixup\n", ++ fragP->fr_file, fragP->fr_line, ++ bfd_get_reloc_code_name(r_type)); ++ ++#if 1 ++ fixP = fix_new_exp(fragP, fragP->fr_fix - opc->size, opc->size, ++ &fragP->tc_frag_data.exp, ++ fragP->tc_frag_data.pcrel, r_type); ++#else ++ fixP = fix_new(fragP, fragP->fr_fix - opc->size, opc->size, symbolP, ++ fragP->fr_offset, fragP->tc_frag_data.pcrel, r_type); ++#endif ++ ++ /* Revert fix_new brain damage. "dot_value" is the value of PC at ++ the point of the fixup, relative to the frag address. fix_new() ++ and friends think they are only being called during the assembly ++ pass, not during relaxation or similar, so fx_dot_value, fx_file ++ and fx_line are all initialized to the wrong value. But we don't ++ know the size of the fixup until now, so we really can't live up ++ to the assumptions these functions make about the target. What ++ do these functions think the "where" and "frag" argument mean ++ anyway? */ ++ fixP->fx_dot_value = fragP->fr_fix - opc->size; ++ fixP->fx_file = fragP->fr_file; ++ fixP->fx_line = fragP->fr_line; ++ ++ fixP->tc_fix_data.ifield = ifield; ++ fixP->tc_fix_data.align = avr32_rs_align(subtype); ++ fixP->tc_fix_data.min = avr32_relax_table[subtype].lower_bound; ++ fixP->tc_fix_data.max = avr32_relax_table[subtype].upper_bound; ++} ++ ++static void ++avr32_lda_convert_frag(bfd *abfd ATTRIBUTE_UNUSED, ++ segT segment ATTRIBUTE_UNUSED, ++ fragS *fragP) ++{ ++ const struct avr32_opcode *opc; ++ const struct avr32_ifield *ifield; ++ bfd_reloc_code_real_type r_type; ++ expressionS exp; ++ struct cpool *pool; ++ fixS *fixP; ++ bfd_vma value; ++ int regid, pcrel = 0, align = 0; ++ char *p; ++ ++ r_type = BFD_RELOC_NONE; ++ regid = fragP->tc_frag_data.reloc_info; ++ p = fragP->fr_opcode; ++ exp.X_add_symbol = fragP->fr_symbol; ++ exp.X_add_number = fragP->fr_offset; ++ exp.X_op = O_symbol; ++ ++ pr_debug("%s:%d: lda_convert_frag, subtype: %d, fix: %d, var: %d, regid: %d\n", ++ fragP->fr_file, fragP->fr_line, ++ fragP->fr_subtype, fragP->fr_fix, fragP->fr_var, regid); ++ ++ switch (fragP->fr_subtype) ++ { ++ case LDA_SUBTYPE_MOV1: ++ opc = &avr32_opc_table[AVR32_OPC_MOV1]; ++ opc->fields[0]->insert(opc->fields[0], p, regid); ++ ifield = opc->fields[1]; ++ r_type = opc->reloc_type; ++ break; ++ case LDA_SUBTYPE_MOV2: ++ opc = &avr32_opc_table[AVR32_OPC_MOV2]; ++ opc->fields[0]->insert(opc->fields[0], p, regid); ++ ifield = opc->fields[1]; ++ r_type = opc->reloc_type; ++ break; ++ case LDA_SUBTYPE_SUB: ++ opc = &avr32_opc_table[AVR32_OPC_SUB5]; ++ opc->fields[0]->insert(opc->fields[0], p, regid); ++ opc->fields[1]->insert(opc->fields[1], p, AVR32_REG_PC); ++ ifield = opc->fields[2]; ++ r_type = BFD_RELOC_AVR32_16N_PCREL; ++ ++ /* Pretend that SUB5 isn't a "negated" pcrel expression for now. ++ We'll have to fix it up later when we know whether to ++ generate a reloc for it (in which case the linker will negate ++ it, so we shouldn't). */ ++ pcrel = 1; ++ break; ++ case LDA_SUBTYPE_LDDPC: ++ opc = &avr32_opc_table[AVR32_OPC_LDDPC]; ++ align = 2; ++ r_type = BFD_RELOC_AVR32_9W_CP; ++ goto cpool_common; ++ case LDA_SUBTYPE_LDW: ++ opc = &avr32_opc_table[AVR32_OPC_LDDPC_EXT]; ++ r_type = BFD_RELOC_AVR32_16_CP; ++ cpool_common: ++ opc->fields[0]->insert(opc->fields[0], p, regid); ++ ifield = opc->fields[1]; ++ pool = fragP->tc_frag_data.pool; ++ exp.X_add_symbol = pool->symbol; ++ exp.X_add_number = pool->literals[fragP->tc_frag_data.pool_entry].offset; ++ pcrel = 1; ++ break; ++ case LDA_SUBTYPE_GOTLOAD_LARGE: ++ /* ld.w Rd, r6[Rd << 2] (last) */ ++ opc = &avr32_opc_table[AVR32_OPC_LD_W5]; ++ bfd_putb32(opc->value, p + 4); ++ opc->fields[0]->insert(opc->fields[0], p + 4, regid); ++ opc->fields[1]->insert(opc->fields[1], p + 4, 6); ++ opc->fields[2]->insert(opc->fields[2], p + 4, regid); ++ opc->fields[3]->insert(opc->fields[3], p + 4, 2); ++ ++ /* mov Rd, (got_offset / 4) */ ++ opc = &avr32_opc_table[AVR32_OPC_MOV2]; ++ opc->fields[0]->insert(opc->fields[0], p, regid); ++ ifield = opc->fields[1]; ++ r_type = BFD_RELOC_AVR32_LDA_GOT; ++ break; ++ case LDA_SUBTYPE_GOTLOAD: ++ opc = &avr32_opc_table[AVR32_OPC_LD_W4]; ++ opc->fields[0]->insert(opc->fields[0], p, regid); ++ opc->fields[1]->insert(opc->fields[1], p, 6); ++ ifield = opc->fields[2]; ++ if (r_type == BFD_RELOC_NONE) ++ r_type = BFD_RELOC_AVR32_GOT16S; ++ break; ++ default: ++ BAD_CASE(fragP->fr_subtype); ++ } ++ ++ value = bfd_getb32(p); ++ value &= ~(opc->mask | ifield->mask); ++ value |= opc->value; ++ bfd_putb32(value, p); ++ ++ fragP->fr_fix += fragP->fr_var - LDA_INITIAL_SIZE; ++ ++ if (fragP->fr_next ++ && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address) ++ != fragP->fr_fix)) ++ { ++ fprintf(stderr, "LDA frag: fr_fix is wrong! fragP->fr_var = %ld, r_type = %s\n", ++ fragP->fr_var, bfd_get_reloc_code_name(r_type)); ++ abort(); ++ } ++ ++ fixP = fix_new_exp(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var, ++ &exp, pcrel, r_type); ++ ++ /* Revert fix_new brain damage. "dot_value" is the value of PC at ++ the point of the fixup, relative to the frag address. fix_new() ++ and friends think they are only being called during the assembly ++ pass, not during relaxation or similar, so fx_dot_value, fx_file ++ and fx_line are all initialized to the wrong value. But we don't ++ know the size of the fixup until now, so we really can't live up ++ to the assumptions these functions make about the target. What ++ do these functions think the "where" and "frag" argument mean ++ anyway? */ ++ fixP->fx_dot_value = fragP->fr_fix - opc->size; ++ fixP->fx_file = fragP->fr_file; ++ fixP->fx_line = fragP->fr_line; ++ ++ fixP->tc_fix_data.ifield = ifield; ++ fixP->tc_fix_data.align = align; ++ /* these are only used if the fixup can actually be resolved */ ++ fixP->tc_fix_data.min = -32768; ++ fixP->tc_fix_data.max = 32767; ++} ++ ++static void ++avr32_call_convert_frag(bfd *abfd ATTRIBUTE_UNUSED, ++ segT segment ATTRIBUTE_UNUSED, ++ fragS *fragP) ++{ ++ const struct avr32_opcode *opc = NULL; ++ const struct avr32_ifield *ifield; ++ bfd_reloc_code_real_type r_type; ++ symbolS *symbol; ++ offsetT offset; ++ fixS *fixP; ++ bfd_vma value; ++ int pcrel = 0, align = 0; ++ char *p; ++ ++ symbol = fragP->fr_symbol; ++ offset = fragP->fr_offset; ++ r_type = BFD_RELOC_NONE; ++ p = fragP->fr_opcode; ++ ++ pr_debug("%s:%d: call_convert_frag, subtype: %d, fix: %d, var: %d\n", ++ fragP->fr_file, fragP->fr_line, ++ fragP->fr_subtype, fragP->fr_fix, fragP->fr_var); ++ ++ switch (fragP->fr_subtype) ++ { ++ case CALL_SUBTYPE_RCALL1: ++ opc = &avr32_opc_table[AVR32_OPC_RCALL1]; ++ /* fall through */ ++ case CALL_SUBTYPE_RCALL2: ++ if (!opc) ++ opc = &avr32_opc_table[AVR32_OPC_RCALL2]; ++ ifield = opc->fields[0]; ++ r_type = opc->reloc_type; ++ pcrel = 1; ++ align = 1; ++ break; ++ case CALL_SUBTYPE_MCALL_CP: ++ opc = &avr32_opc_table[AVR32_OPC_MCALL]; ++ opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_PC); ++ ifield = opc->fields[1]; ++ r_type = BFD_RELOC_AVR32_CPCALL; ++ symbol = fragP->tc_frag_data.pool->symbol; ++ offset = fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].offset; ++ assert(fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].refcount > 0); ++ pcrel = 1; ++ align = 2; ++ break; ++ case CALL_SUBTYPE_MCALL_GOT: ++ opc = &avr32_opc_table[AVR32_OPC_MCALL]; ++ opc->fields[0]->insert(opc->fields[0], p, 6); ++ ifield = opc->fields[1]; ++ r_type = BFD_RELOC_AVR32_GOT18SW; ++ break; ++ case CALL_SUBTYPE_MCALL_LARGE: ++ assert(fragP->fr_var == 10); ++ /* ld.w lr, r6[lr << 2] */ ++ opc = &avr32_opc_table[AVR32_OPC_LD_W5]; ++ bfd_putb32(opc->value, p + 4); ++ opc->fields[0]->insert(opc->fields[0], p + 4, AVR32_REG_LR); ++ opc->fields[1]->insert(opc->fields[1], p + 4, 6); ++ opc->fields[2]->insert(opc->fields[2], p + 4, AVR32_REG_LR); ++ opc->fields[3]->insert(opc->fields[3], p + 4, 2); ++ ++ /* icall lr */ ++ opc = &avr32_opc_table[AVR32_OPC_ICALL]; ++ bfd_putb16(opc->value >> 16, p + 8); ++ opc->fields[0]->insert(opc->fields[0], p + 8, AVR32_REG_LR); ++ ++ /* mov lr, (got_offset / 4) */ ++ opc = &avr32_opc_table[AVR32_OPC_MOV2]; ++ opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_LR); ++ ifield = opc->fields[1]; ++ r_type = BFD_RELOC_AVR32_GOTCALL; ++ break; ++ default: ++ BAD_CASE(fragP->fr_subtype); ++ } ++ ++ /* Insert the opcode and clear the variable ifield */ ++ value = bfd_getb32(p); ++ value &= ~(opc->mask | ifield->mask); ++ value |= opc->value; ++ bfd_putb32(value, p); ++ ++ fragP->fr_fix += fragP->fr_var - CALL_INITIAL_SIZE; ++ ++ if (fragP->fr_next ++ && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address) ++ != fragP->fr_fix)) ++ { ++ fprintf(stderr, "%s:%d: fr_fix %lu is wrong! fr_var=%lu, r_type=%s\n", ++ fragP->fr_file, fragP->fr_line, ++ fragP->fr_fix, fragP->fr_var, bfd_get_reloc_code_name(r_type)); ++ fprintf(stderr, "fr_fix should be %ld. next frag is %s:%d\n", ++ (offsetT)(fragP->fr_next->fr_address - fragP->fr_address), ++ fragP->fr_next->fr_file, fragP->fr_next->fr_line); ++ } ++ ++ fixP = fix_new(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var, ++ symbol, offset, pcrel, r_type); ++ ++ /* Revert fix_new brain damage. "dot_value" is the value of PC at ++ the point of the fixup, relative to the frag address. fix_new() ++ and friends think they are only being called during the assembly ++ pass, not during relaxation or similar, so fx_dot_value, fx_file ++ and fx_line are all initialized to the wrong value. But we don't ++ know the size of the fixup until now, so we really can't live up ++ to the assumptions these functions make about the target. What ++ do these functions think the "where" and "frag" argument mean ++ anyway? */ ++ fixP->fx_dot_value = fragP->fr_fix - opc->size; ++ fixP->fx_file = fragP->fr_file; ++ fixP->fx_line = fragP->fr_line; ++ ++ fixP->tc_fix_data.ifield = ifield; ++ fixP->tc_fix_data.align = align; ++ /* these are only used if the fixup can actually be resolved */ ++ fixP->tc_fix_data.min = -2097152; ++ fixP->tc_fix_data.max = 2097150; ++} ++ ++static void ++avr32_cpool_convert_frag(bfd *abfd ATTRIBUTE_UNUSED, ++ segT segment ATTRIBUTE_UNUSED, ++ fragS *fragP) ++{ ++ struct cpool *pool; ++ addressT address; ++ unsigned int entry; ++ char *p; ++ char sym_name[20]; ++ ++ /* Did we get rid of the frag altogether? */ ++ if (!fragP->fr_var) ++ return; ++ ++ pool = fragP->tc_frag_data.pool; ++ address = fragP->fr_address + fragP->fr_fix; ++ p = fragP->fr_literal + fragP->fr_fix; ++ ++ sprintf(sym_name, "$$cp_\002%x", pool->id); ++ symbol_locate(pool->symbol, sym_name, pool->section, fragP->fr_fix, fragP); ++ symbol_table_insert(pool->symbol); ++ ++ for (entry = 0; entry < pool->next_free_entry; entry++) ++ { ++ if (pool->literals[entry].refcount > 0) ++ { ++ fix_new_exp(fragP, fragP->fr_fix, 4, &pool->literals[entry].exp, ++ FALSE, BFD_RELOC_AVR32_32_CPENT); ++ fragP->fr_fix += 4; ++ } ++ } ++} ++ ++static struct avr32_relaxer avr32_default_relaxer = { ++ .estimate_size = avr32_default_estimate_size_before_relax, ++ .relax_frag = avr32_default_relax_frag, ++ .convert_frag = avr32_default_convert_frag, ++}; ++static struct avr32_relaxer avr32_lda_relaxer = { ++ .estimate_size = avr32_lda_estimate_size_before_relax, ++ .relax_frag = avr32_lda_relax_frag, ++ .convert_frag = avr32_lda_convert_frag, ++}; ++static struct avr32_relaxer avr32_call_relaxer = { ++ .estimate_size = avr32_call_estimate_size_before_relax, ++ .relax_frag = avr32_call_relax_frag, ++ .convert_frag = avr32_call_convert_frag, ++}; ++static struct avr32_relaxer avr32_cpool_relaxer = { ++ .estimate_size = avr32_cpool_estimate_size_before_relax, ++ .relax_frag = avr32_cpool_relax_frag, ++ .convert_frag = avr32_cpool_convert_frag, ++}; ++ ++static void s_cpool(int arg ATTRIBUTE_UNUSED) ++{ ++ struct cpool *pool; ++ unsigned int max_size; ++ char *buf; ++ ++ pool = find_cpool(now_seg, now_subseg); ++ if (!pool || !pool->symbol || pool->next_free_entry == 0) ++ return; ++ ++ /* Make sure the constant pool is properly aligned */ ++ frag_align_code(2, 0); ++ ++ /* Assume none of the entries are discarded, and that we need the ++ maximum amount of alignment. But we're not going to allocate ++ anything up front. */ ++ max_size = pool->next_free_entry * 4 + 2; ++ frag_grow(max_size); ++ buf = frag_more(0); ++ ++ frag_now->tc_frag_data.relaxer = &avr32_cpool_relaxer; ++ frag_now->tc_frag_data.pool = pool; ++ ++ symbol_set_frag(pool->symbol, frag_now); ++ ++ /* Assume zero initial size, allowing other relaxers to be ++ optimistic about things. */ ++ frag_var(rs_machine_dependent, max_size, 0, ++ 0, pool->symbol, 0, NULL); ++ ++ /* Mark the pool as empty. */ ++ pool->used = 1; ++} ++ ++/* The location from which a PC relative jump should be calculated, ++ given a PC relative reloc. */ ++ ++long ++md_pcrel_from_section (fixS *fixP, segT sec) ++{ ++ pr_debug("pcrel_from_section, fx_offset = %d\n", fixP->fx_offset); ++ ++ if (fixP->fx_addsy != NULL ++ && (! S_IS_DEFINED (fixP->fx_addsy) ++ || S_GET_SEGMENT (fixP->fx_addsy) != sec ++ || S_FORCE_RELOC(fixP->fx_addsy, 1))) ++ { ++ pr_debug("Unknown pcrel symbol: %s\n", S_GET_NAME(fixP->fx_addsy)); ++ ++ /* The symbol is undefined (or is defined but not in this section). ++ Let the linker figure it out. */ ++ return 0; ++ } ++ ++ pr_debug("pcrel from %x + %x, symbol: %s (%x)\n", ++ fixP->fx_frag->fr_address, fixP->fx_where, ++ fixP->fx_addsy?S_GET_NAME(fixP->fx_addsy):"(null)", ++ fixP->fx_addsy?S_GET_VALUE(fixP->fx_addsy):0); ++ ++ return ((fixP->fx_frag->fr_address + fixP->fx_where) ++ & (~0UL << fixP->tc_fix_data.align)); ++} ++ ++valueT ++md_section_align (segT segment, valueT size) ++{ ++ int align = bfd_get_section_alignment (stdoutput, segment); ++ return ((size + (1 << align) - 1) & (-1 << align)); ++} ++ ++static int syntax_matches(const struct avr32_syntax *syntax, ++ char *str) ++{ ++ int i; ++ ++ pr_debug("syntax %d matches `%s'?\n", syntax->id, str); ++ ++ if (syntax->nr_operands < 0) ++ { ++ struct avr32_operand *op; ++ int optype; ++ ++ for (i = 0; i < (-syntax->nr_operands - 1); i++) ++ { ++ char *p; ++ char c; ++ ++ optype = syntax->operand[i]; ++ assert(optype < AVR32_NR_OPERANDS); ++ op = &avr32_operand_table[optype]; ++ ++ for (p = str; *p; p++) ++ if (*p == ',') ++ break; ++ ++ if (p == str) ++ return 0; ++ ++ c = *p; ++ *p = 0; ++ ++ if (!op->match(str)) ++ { ++ *p = c; ++ return 0; ++ } ++ ++ str = p; ++ *p = c; ++ if (c) ++ str++; ++ } ++ ++ optype = syntax->operand[i]; ++ assert(optype < AVR32_NR_OPERANDS); ++ op = &avr32_operand_table[optype]; ++ ++ if (!op->match(str)) ++ return 0; ++ return 1; ++ } ++ ++ for (i = 0; i < syntax->nr_operands; i++) ++ { ++ struct avr32_operand *op; ++ int optype = syntax->operand[i]; ++ char *p; ++ char c; ++ ++ assert(optype < AVR32_NR_OPERANDS); ++ op = &avr32_operand_table[optype]; ++ ++ for (p = str; *p; p++) ++ if (*p == ',') ++ break; ++ ++ if (p == str) ++ return 0; ++ ++ c = *p; ++ *p = 0; ++ ++ if (!op->match(str)) ++ { ++ *p = c; ++ return 0; ++ } ++ ++ str = p; ++ *p = c; ++ if (c) ++ str++; ++ } ++ ++ if (*str == '\0') ++ return 1; ++ ++ if ((*str == 'e' || *str == 'E') && !str[1]) ++ return 1; ++ ++ return 0; ++} ++ ++static int parse_operands(char *str) ++{ ++ int i; ++ ++ if (current_insn.syntax->nr_operands < 0) ++ { ++ int optype; ++ struct avr32_operand *op; ++ ++ for (i = 0; i < (-current_insn.syntax->nr_operands - 1); i++) ++ { ++ char *p; ++ char c; ++ ++ optype = current_insn.syntax->operand[i]; ++ op = &avr32_operand_table[optype]; ++ ++ for (p = str; *p; p++) ++ if (*p == ',') ++ break; ++ ++ assert(p != str); ++ ++ c = *p, *p = 0; ++ op->parse(op, str, i); ++ *p = c; ++ ++ str = p; ++ if (c) str++; ++ } ++ ++ /* give the rest of the line to the last operand */ ++ optype = current_insn.syntax->operand[i]; ++ op = &avr32_operand_table[optype]; ++ op->parse(op, str, i); ++ } ++ else ++ { ++ for (i = 0; i < current_insn.syntax->nr_operands; i++) ++ { ++ int optype = current_insn.syntax->operand[i]; ++ struct avr32_operand *op = &avr32_operand_table[optype]; ++ char *p; ++ char c; ++ ++ skip_whitespace(str); ++ ++ for (p = str; *p; p++) ++ if (*p == ',') ++ break; ++ ++ assert(p != str); ++ ++ c = *p, *p = 0; ++ op->parse(op, str, i); ++ *p = c; ++ ++ str = p; ++ if (c) str++; ++ } ++ ++ if (*str == 'E' || *str == 'e') ++ current_insn.force_extended = 1; ++ } ++ ++ return 0; ++} ++ ++static const char * ++finish_insn(const struct avr32_opcode *opc) ++{ ++ expressionS *exp = ¤t_insn.immediate; ++ unsigned int i; ++ int will_relax = 0; ++ char *buf; ++ ++ assert(current_insn.next_slot == opc->nr_fields); ++ ++ pr_debug("%s:%d: finish_insn: trying opcode %d\n", ++ frag_now->fr_file, frag_now->fr_line, opc->id); ++ ++ /* Go through the relaxation stage for all instructions that can ++ possibly take a symbolic immediate. The relax code will take ++ care of range checking and alignment. */ ++ if (opc->var_field != -1) ++ { ++ int substate, largest_substate; ++ symbolS *sym; ++ offsetT off; ++ ++ will_relax = 1; ++ substate = largest_substate = opc_initial_substate(opc); ++ ++ while (relax_more(largest_substate) != AVR32_RS_NONE) ++ largest_substate = relax_more(largest_substate); ++ ++ pr_debug("will relax. initial substate: %d (size %d), largest substate: %d (size %d)\n", ++ substate, avr32_rs_size(substate), ++ largest_substate, avr32_rs_size(largest_substate)); ++ ++ /* make sure we have enough room for the largest possible opcode */ ++ frag_grow(avr32_rs_size(largest_substate)); ++ buf = frag_more(opc->size); ++ ++ dwarf2_emit_insn(opc->size); ++ ++ frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_NONE; ++ frag_now->tc_frag_data.pcrel = current_insn.pcrel; ++ frag_now->tc_frag_data.force_extended = current_insn.force_extended; ++ frag_now->tc_frag_data.relaxer = &avr32_default_relaxer; ++ ++ if (exp->X_op == O_hi) ++ { ++ frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_HI; ++ exp->X_op = exp->X_md; ++ } ++ else if (exp->X_op == O_lo) ++ { ++ frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_LO; ++ exp->X_op = exp->X_md; ++ } ++ else if (exp->X_op == O_got) ++ { ++ frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_GOT; ++ exp->X_op = O_symbol; ++ } ++ ++#if 0 ++ if ((opc->reloc_type == BFD_RELOC_AVR32_SUB5) ++ && exp->X_op == O_subtract) ++ { ++ symbolS *tmp; ++ tmp = exp->X_add_symbol; ++ exp->X_add_symbol = exp->X_op_symbol; ++ exp->X_op_symbol = tmp; ++ } ++#endif ++ ++ frag_now->tc_frag_data.exp = current_insn.immediate; ++ ++ sym = exp->X_add_symbol; ++ off = exp->X_add_number; ++ if (exp->X_op != O_symbol) ++ { ++ sym = make_expr_symbol(exp); ++ off = 0; ++ } ++ ++ frag_var(rs_machine_dependent, ++ avr32_rs_size(largest_substate) - opc->size, ++ opc->size, ++ substate, sym, off, buf); ++ } ++ else ++ { ++ assert(avr32_rs_size(opc_initial_substate(opc)) == 0); ++ ++ /* Make sure we always have room for another whole word, as the ifield ++ inserters can only write words. */ ++ frag_grow(4); ++ buf = frag_more(opc->size); ++ dwarf2_emit_insn(opc->size); ++ } ++ ++ assert(!(opc->value & ~opc->mask)); ++ ++ pr_debug("inserting opcode: 0x%lx\n", opc->value); ++ bfd_putb32(opc->value, buf); ++ ++ for (i = 0; i < opc->nr_fields; i++) ++ { ++ const struct avr32_ifield *f = opc->fields[i]; ++ const struct avr32_ifield_data *fd = ¤t_insn.field_value[i]; ++ ++ pr_debug("inserting field: 0x%lx & 0x%lx\n", ++ fd->value >> fd->align_order, f->mask); ++ ++ f->insert(f, buf, fd->value >> fd->align_order); ++ } ++ ++ assert(will_relax || !current_insn.immediate.X_add_symbol); ++ return NULL; ++} ++ ++static const char * ++finish_alias(const struct avr32_alias *alias) ++{ ++ const struct avr32_opcode *opc; ++ struct { ++ unsigned long value; ++ unsigned long align; ++ } mapped_operand[AVR32_MAX_OPERANDS]; ++ unsigned int i; ++ ++ opc = alias->opc; ++ ++ /* Remap the operands from the alias to the real opcode */ ++ for (i = 0; i < opc->nr_fields; i++) ++ { ++ if (alias->operand_map[i].is_opindex) ++ { ++ struct avr32_ifield_data *fd; ++ fd = ¤t_insn.field_value[alias->operand_map[i].value]; ++ mapped_operand[i].value = fd->value; ++ mapped_operand[i].align = fd->align_order; ++ } ++ else ++ { ++ mapped_operand[i].value = alias->operand_map[i].value; ++ mapped_operand[i].align = 0; ++ } ++ } ++ ++ for (i = 0; i < opc->nr_fields; i++) ++ { ++ current_insn.field_value[i].value = mapped_operand[i].value; ++ if (opc->id == AVR32_OPC_COP) ++ current_insn.field_value[i].align_order = 0; ++ else ++ current_insn.field_value[i].align_order ++ = mapped_operand[i].align; ++ } ++ ++ current_insn.next_slot = opc->nr_fields; ++ ++ return finish_insn(opc); ++} ++ ++static const char * ++finish_lda(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED) ++{ ++ expressionS *exp = ¤t_insn.immediate; ++ relax_substateT initial_subtype; ++ symbolS *sym; ++ offsetT off; ++ int initial_size, max_size; ++ char *buf; ++ ++ initial_size = LDA_INITIAL_SIZE; ++ ++ if (avr32_pic) ++ { ++ initial_subtype = LDA_SUBTYPE_SUB; ++ if (linkrelax) ++ max_size = 8; ++ else ++ max_size = 4; ++ } ++ else ++ { ++ initial_subtype = LDA_SUBTYPE_MOV1; ++ max_size = 4; ++ } ++ ++ frag_grow(max_size); ++ buf = frag_more(initial_size); ++ dwarf2_emit_insn(initial_size); ++ ++ if (exp->X_op == O_symbol) ++ { ++ sym = exp->X_add_symbol; ++ off = exp->X_add_number; ++ } ++ else ++ { ++ sym = make_expr_symbol(exp); ++ off = 0; ++ } ++ ++ frag_now->tc_frag_data.reloc_info = current_insn.field_value[0].value; ++ frag_now->tc_frag_data.relaxer = &avr32_lda_relaxer; ++ ++ if (!avr32_pic) ++ { ++ /* The relaxer will bump the refcount if necessary */ ++ frag_now->tc_frag_data.pool ++ = add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0); ++ } ++ ++ frag_var(rs_machine_dependent, max_size - initial_size, ++ initial_size, initial_subtype, sym, off, buf); ++ ++ return NULL; ++} ++ ++static const char * ++finish_call(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED) ++{ ++ expressionS *exp = ¤t_insn.immediate; ++ symbolS *sym; ++ offsetT off; ++ int initial_size, max_size; ++ char *buf; ++ ++ initial_size = CALL_INITIAL_SIZE; ++ ++ if (avr32_pic) ++ { ++ if (linkrelax) ++ max_size = 10; ++ else ++ max_size = 4; ++ } ++ else ++ max_size = 4; ++ ++ frag_grow(max_size); ++ buf = frag_more(initial_size); ++ dwarf2_emit_insn(initial_size); ++ ++ frag_now->tc_frag_data.relaxer = &avr32_call_relaxer; ++ ++ if (exp->X_op == O_symbol) ++ { ++ sym = exp->X_add_symbol; ++ off = exp->X_add_number; ++ } ++ else ++ { ++ sym = make_expr_symbol(exp); ++ off = 0; ++ } ++ ++ if (!avr32_pic) ++ { ++ /* The relaxer will bump the refcount if necessary */ ++ frag_now->tc_frag_data.pool ++ = add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0); ++ } ++ ++ frag_var(rs_machine_dependent, max_size - initial_size, ++ initial_size, CALL_SUBTYPE_RCALL1, sym, off, buf); ++ ++ return NULL; ++} ++ ++void ++md_begin (void) ++{ ++ unsigned long flags = 0; ++ int i; ++ ++ avr32_mnemonic_htab = hash_new(); ++ ++ if (!avr32_mnemonic_htab) ++ as_fatal(_("virtual memory exhausted")); ++ ++ for (i = 0; i < AVR32_NR_MNEMONICS; i++) ++ { ++ hash_insert(avr32_mnemonic_htab, avr32_mnemonic_table[i].name, ++ (void *)&avr32_mnemonic_table[i]); ++ } ++ ++ if (linkrelax) ++ flags |= EF_AVR32_LINKRELAX; ++ if (avr32_pic) ++ flags |= EF_AVR32_PIC; ++ ++ bfd_set_private_flags(stdoutput, flags); ++ ++#ifdef OPC_CONSISTENCY_CHECK ++ if (sizeof(avr32_operand_table)/sizeof(avr32_operand_table[0]) ++ < AVR32_NR_OPERANDS) ++ as_fatal(_("operand table is incomplete")); ++ ++ for (i = 0; i < AVR32_NR_OPERANDS; i++) ++ if (avr32_operand_table[i].id != i) ++ as_fatal(_("operand table inconsistency found at index %d\n"), i); ++ pr_debug("%d operands verified\n", AVR32_NR_OPERANDS); ++ ++ for (i = 0; i < AVR32_NR_IFIELDS; i++) ++ if (avr32_ifield_table[i].id != i) ++ as_fatal(_("ifield table inconsistency found at index %d\n"), i); ++ pr_debug("%d instruction fields verified\n", AVR32_NR_IFIELDS); ++ ++ for (i = 0; i < AVR32_NR_OPCODES; i++) ++ { ++ if (avr32_opc_table[i].id != i) ++ as_fatal(_("opcode table inconsistency found at index %d\n"), i); ++ if ((avr32_opc_table[i].var_field == -1 ++ && avr32_relax_table[i].length != 0) ++ || (avr32_opc_table[i].var_field != -1 ++ && avr32_relax_table[i].length == 0)) ++ as_fatal(_("relax table inconsistency found at index %d\n"), i); ++ } ++ pr_debug("%d opcodes verified\n", AVR32_NR_OPCODES); ++ ++ for (i = 0; i < AVR32_NR_SYNTAX; i++) ++ if (avr32_syntax_table[i].id != i) ++ as_fatal(_("syntax table inconsistency found at index %d\n"), i); ++ pr_debug("%d syntax variants verified\n", AVR32_NR_SYNTAX); ++ ++ for (i = 0; i < AVR32_NR_ALIAS; i++) ++ if (avr32_alias_table[i].id != i) ++ as_fatal(_("alias table inconsistency found at index %d\n"), i); ++ pr_debug("%d aliases verified\n", AVR32_NR_ALIAS); ++ ++ for (i = 0; i < AVR32_NR_MNEMONICS; i++) ++ if (avr32_mnemonic_table[i].id != i) ++ as_fatal(_("mnemonic table inconsistency found at index %d\n"), i); ++ pr_debug("%d mnemonics verified\n", AVR32_NR_MNEMONICS); ++#endif ++} ++ ++void ++md_assemble (char *str) ++{ ++ struct avr32_mnemonic *mnemonic; ++ char *p, c; ++ ++ memset(¤t_insn, 0, sizeof(current_insn)); ++ current_insn.immediate.X_op = O_constant; ++ ++ skip_whitespace(str); ++ for (p = str; *p; p++) ++ if (*p == ' ') ++ break; ++ c = *p; ++ *p = 0; ++ ++ mnemonic = hash_find(avr32_mnemonic_htab, str); ++ *p = c; ++ if (c) p++; ++ ++ if (mnemonic) ++ { ++ const struct avr32_syntax *syntax; ++ ++ for (syntax = mnemonic->syntax; syntax; syntax = syntax->next) ++ { ++ const char *errmsg = NULL; ++ ++ if (syntax_matches(syntax, p)) ++ { ++ if (!(syntax->isa_flags & avr32_arch->isa_flags)) ++ { ++ as_bad(_("Selected architecture `%s' does not support `%s'"), ++ avr32_arch->name, str); ++ return; ++ } ++ ++ current_insn.syntax = syntax; ++ parse_operands(p); ++ ++ switch (syntax->type) ++ { ++ case AVR32_PARSER_NORMAL: ++ errmsg = finish_insn(syntax->u.opc); ++ break; ++ case AVR32_PARSER_ALIAS: ++ errmsg = finish_alias(syntax->u.alias); ++ break; ++ case AVR32_PARSER_LDA: ++ errmsg = finish_lda(syntax); ++ break; ++ case AVR32_PARSER_CALL: ++ errmsg = finish_call(syntax); ++ break; ++ default: ++ BAD_CASE(syntax->type); ++ break; ++ } ++ ++ if (errmsg) ++ as_bad("%s in `%s'", errmsg, str); ++ ++ return; ++ } ++ } ++ ++ as_bad(_("unrecognized form of instruction: `%s'"), str); ++ } ++ else ++ as_bad(_("unrecognized instruction `%s'"), str); ++} ++ ++void avr32_cleanup(void) ++{ ++ struct cpool *pool; ++ ++ /* Emit any constant pools that haven't been explicitly flushed with ++ a .cpool directive. */ ++ for (pool = cpool_list; pool; pool = pool->next) ++ { ++ subseg_set(pool->section, pool->sub_section); ++ s_cpool(0); ++ } ++} ++ ++/* Handle any PIC-related operands in data allocation pseudo-ops */ ++void ++avr32_cons_fix_new (fragS *frag, int off, int size, expressionS *exp) ++{ ++ bfd_reloc_code_real_type r_type = BFD_RELOC_UNUSED; ++ int pcrel = 0; ++ ++ pr_debug("%s:%u: cons_fix_new, add_sym: %s, op_sym: %s, op: %d, add_num: %d\n", ++ frag->fr_file, frag->fr_line, ++ exp->X_add_symbol?S_GET_NAME(exp->X_add_symbol):"(none)", ++ exp->X_op_symbol?S_GET_NAME(exp->X_op_symbol):"(none)", ++ exp->X_op, exp->X_add_number); ++ ++ if (exp->X_op == O_subtract && exp->X_op_symbol) ++ { ++ if (exp->X_op_symbol == GOT_symbol) ++ { ++ if (size != 4) ++ goto bad_size; ++ r_type = BFD_RELOC_AVR32_GOTPC; ++ exp->X_op = O_symbol; ++ exp->X_op_symbol = NULL; ++ } ++ } ++ else if (exp->X_op == O_got) ++ { ++ switch (size) ++ { ++ case 1: ++ r_type = BFD_RELOC_AVR32_GOT8; ++ break; ++ case 2: ++ r_type = BFD_RELOC_AVR32_GOT16; ++ break; ++ case 4: ++ r_type = BFD_RELOC_AVR32_GOT32; ++ break; ++ default: ++ goto bad_size; ++ } ++ ++ exp->X_op = O_symbol; ++ } ++ ++ if (r_type == BFD_RELOC_UNUSED) ++ switch (size) ++ { ++ case 1: ++ r_type = BFD_RELOC_8; ++ break; ++ case 2: ++ r_type = BFD_RELOC_16; ++ break; ++ case 4: ++ r_type = BFD_RELOC_32; ++ break; ++ default: ++ goto bad_size; ++ } ++ else if (size != 4) ++ { ++ bad_size: ++ as_bad(_("unsupported BFD relocation size %u"), size); ++ r_type = BFD_RELOC_UNUSED; ++ } ++ ++ fix_new_exp (frag, off, size, exp, pcrel, r_type); ++} ++ ++static void ++avr32_frob_section(bfd *abfd ATTRIBUTE_UNUSED, segT sec, ++ void *ignore ATTRIBUTE_UNUSED) ++{ ++ segment_info_type *seginfo; ++ fixS *fix; ++ ++ seginfo = seg_info(sec); ++ if (!seginfo) ++ return; ++ ++ for (fix = seginfo->fix_root; fix; fix = fix->fx_next) ++ { ++ if (fix->fx_done) ++ continue; ++ ++ if (fix->fx_r_type == BFD_RELOC_AVR32_SUB5 ++ && fix->fx_addsy && fix->fx_subsy) ++ { ++ if (S_GET_SEGMENT(fix->fx_addsy) != S_GET_SEGMENT(fix->fx_subsy) ++ || linkrelax) ++ { ++ symbolS *tmp; ++#ifdef DEBUG ++ fprintf(stderr, "Swapping symbols in fixup:\n"); ++ print_fixup(fix); ++#endif ++ tmp = fix->fx_addsy; ++ fix->fx_addsy = fix->fx_subsy; ++ fix->fx_subsy = tmp; ++ fix->fx_offset = -fix->fx_offset; ++ } ++ } ++ } ++} ++ ++/* We need to look for SUB5 instructions with expressions that will be ++ made PC-relative and switch fx_addsy with fx_subsy. This has to be ++ done before adjustment or the wrong symbol might be adjusted. ++ ++ This applies to fixups that are a result of expressions like -(sym ++ - .) and that will make it all the way to md_apply_fix3(). LDA ++ does the right thing in convert_frag, so we must not convert ++ those. */ ++void ++avr32_frob_file(void) ++{ ++ /* if (1 || !linkrelax) ++ return; */ ++ ++ bfd_map_over_sections(stdoutput, avr32_frob_section, NULL); ++} ++ ++static bfd_boolean ++convert_to_diff_reloc(fixS *fixP) ++{ ++ switch (fixP->fx_r_type) ++ { ++ case BFD_RELOC_32: ++ fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32; ++ break; ++ case BFD_RELOC_16: ++ fixP->fx_r_type = BFD_RELOC_AVR32_DIFF16; ++ break; ++ case BFD_RELOC_8: ++ fixP->fx_r_type = BFD_RELOC_AVR32_DIFF8; ++ break; ++ default: ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ ++/* Simplify a fixup. If possible, the fixup is reduced to a single ++ constant which is written to the output file. Otherwise, a ++ relocation is generated so that the linker can take care of the ++ rest. ++ ++ ELF relocations have certain constraints: They can only take a ++ single symbol and a single addend. This means that for difference ++ expressions, we _must_ get rid of the fx_subsy symbol somehow. ++ ++ The difference between two labels in the same section can be ++ calculated directly unless 'linkrelax' is set, or a relocation is ++ forced. If so, we must emit a R_AVR32_DIFFxx relocation. If there ++ are addends involved at this point, we must be especially careful ++ as the relocation must point exactly to the symbol being ++ subtracted. ++ ++ When subtracting a symbol defined in the same section as the fixup, ++ we might be able to convert it to a PC-relative expression, unless ++ linkrelax is set. If this is the case, there's no way we can make ++ sure that the difference between the fixup and fx_subsy stays ++ constant. So for now, we're just going to disallow that. ++ */ ++void ++avr32_process_fixup(fixS *fixP, segT this_segment) ++{ ++ segT add_symbol_segment = absolute_section; ++ segT sub_symbol_segment = absolute_section; ++ symbolS *fx_addsy, *fx_subsy; ++ offsetT value = 0, fx_offset; ++ bfd_boolean apply = FALSE; ++ ++ assert(this_segment != absolute_section); ++ ++ if (fixP->fx_r_type >= BFD_RELOC_UNUSED) ++ { ++ as_bad_where(fixP->fx_file, fixP->fx_line, ++ _("Bad relocation type %d\n"), fixP->fx_r_type); ++ return; ++ } ++ ++ /* BFD_RELOC_AVR32_SUB5 fixups have been swapped by avr32_frob_section() */ ++ fx_addsy = fixP->fx_addsy; ++ fx_subsy = fixP->fx_subsy; ++ fx_offset = fixP->fx_offset; ++ ++ if (fx_addsy) ++ add_symbol_segment = S_GET_SEGMENT(fx_addsy); ++ ++ if (fx_subsy) ++ { ++ resolve_symbol_value(fx_subsy); ++ sub_symbol_segment = S_GET_SEGMENT(fx_subsy); ++ ++ if (sub_symbol_segment == this_segment ++ && (!linkrelax ++ || S_GET_VALUE(fx_subsy) == (fixP->fx_frag->fr_address ++ + fixP->fx_where))) ++ { ++ fixP->fx_pcrel = TRUE; ++ fx_offset += (fixP->fx_frag->fr_address + fixP->fx_where ++ - S_GET_VALUE(fx_subsy)); ++ fx_subsy = NULL; ++ } ++ else if (sub_symbol_segment == absolute_section) ++ { ++ /* The symbol is really a constant. */ ++ fx_offset -= S_GET_VALUE(fx_subsy); ++ fx_subsy = NULL; ++ } ++ else if (SEG_NORMAL(add_symbol_segment) ++ && sub_symbol_segment == add_symbol_segment ++ && (!linkrelax || convert_to_diff_reloc(fixP))) ++ { ++ /* Difference between two labels in the same section. */ ++ if (linkrelax) ++ { ++ /* convert_to_diff() has ensured that the reloc type is ++ either DIFF32, DIFF16 or DIFF8. */ ++ value = (S_GET_VALUE(fx_addsy) + fixP->fx_offset ++ - S_GET_VALUE(fx_subsy)); ++ ++ /* Try to convert it to a section symbol if possible */ ++ if (!S_FORCE_RELOC(fx_addsy, 1) ++ && !(sub_symbol_segment->flags & SEC_THREAD_LOCAL)) ++ { ++ fx_offset = S_GET_VALUE(fx_subsy); ++ fx_addsy = section_symbol(sub_symbol_segment); ++ } ++ else ++ { ++ fx_addsy = fx_subsy; ++ fx_offset = 0; ++ } ++ ++ fx_subsy = NULL; ++ apply = TRUE; ++ } ++ else ++ { ++ fx_offset += S_GET_VALUE(fx_addsy); ++ fx_offset -= S_GET_VALUE(fx_subsy); ++ fx_addsy = NULL; ++ fx_subsy = NULL; ++ } ++ } ++ else ++ { ++ as_bad_where(fixP->fx_file, fixP->fx_line, ++ _("can't resolve `%s' {%s section} - `%s' {%s section}"), ++ fx_addsy ? S_GET_NAME (fx_addsy) : "0", ++ segment_name (add_symbol_segment), ++ S_GET_NAME (fx_subsy), ++ segment_name (sub_symbol_segment)); ++ return; ++ } ++ } ++ ++ if (fx_addsy && !TC_FORCE_RELOCATION(fixP)) ++ { ++ if (add_symbol_segment == this_segment ++ && fixP->fx_pcrel) ++ { ++ value += S_GET_VALUE(fx_addsy); ++ value -= md_pcrel_from_section(fixP, this_segment); ++ fx_addsy = NULL; ++ fixP->fx_pcrel = FALSE; ++ } ++ else if (add_symbol_segment == absolute_section) ++ { ++ fx_offset += S_GET_VALUE(fixP->fx_addsy); ++ fx_addsy = NULL; ++ } ++ } ++ ++ if (!fx_addsy) ++ fixP->fx_done = TRUE; ++ ++ if (fixP->fx_pcrel) ++ { ++ if (fx_addsy != NULL ++ && S_IS_DEFINED(fx_addsy) ++ && S_GET_SEGMENT(fx_addsy) != this_segment) ++ value += md_pcrel_from_section(fixP, this_segment); ++ ++ switch (fixP->fx_r_type) ++ { ++ case BFD_RELOC_32: ++ fixP->fx_r_type = BFD_RELOC_32_PCREL; ++ break; ++ case BFD_RELOC_16: ++ fixP->fx_r_type = BFD_RELOC_16_PCREL; ++ break; ++ case BFD_RELOC_8: ++ fixP->fx_r_type = BFD_RELOC_8_PCREL; ++ break; ++ case BFD_RELOC_AVR32_SUB5: ++ fixP->fx_r_type = BFD_RELOC_AVR32_16N_PCREL; ++ break; ++ case BFD_RELOC_AVR32_16S: ++ fixP->fx_r_type = BFD_RELOC_AVR32_16B_PCREL; ++ break; ++ case BFD_RELOC_AVR32_14UW: ++ fixP->fx_r_type = BFD_RELOC_AVR32_14UW_PCREL; ++ break; ++ case BFD_RELOC_AVR32_10UW: ++ fixP->fx_r_type = BFD_RELOC_AVR32_10UW_PCREL; ++ break; ++ default: ++ /* Should have been taken care of already */ ++ break; ++ } ++ } ++ ++ if (fixP->fx_done || apply) ++ { ++ const struct avr32_ifield *ifield; ++ char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; ++ ++ if (fixP->fx_done) ++ value += fx_offset; ++ ++ switch (fixP->fx_r_type) ++ { ++ case BFD_RELOC_32: ++ case BFD_RELOC_16: ++ case BFD_RELOC_8: ++ case BFD_RELOC_AVR32_DIFF32: ++ case BFD_RELOC_AVR32_DIFF16: ++ case BFD_RELOC_AVR32_DIFF8: ++ md_number_to_chars(buf, value, fixP->fx_size); ++ break; ++ case BFD_RELOC_HI16: ++ value >>= 16; ++ case BFD_RELOC_LO16: ++ value &= 0xffff; ++ md_number_to_chars(buf + 2, value, 2); ++ break; ++ case BFD_RELOC_AVR32_16N_PCREL: ++ value = -value; ++ /* fall through */ ++ case BFD_RELOC_AVR32_22H_PCREL: ++ case BFD_RELOC_AVR32_18W_PCREL: ++ case BFD_RELOC_AVR32_16B_PCREL: ++ case BFD_RELOC_AVR32_11H_PCREL: ++ case BFD_RELOC_AVR32_9H_PCREL: ++ case BFD_RELOC_AVR32_9UW_PCREL: ++ case BFD_RELOC_AVR32_3U: ++ case BFD_RELOC_AVR32_4UH: ++ case BFD_RELOC_AVR32_6UW: ++ case BFD_RELOC_AVR32_6S: ++ case BFD_RELOC_AVR32_7UW: ++ case BFD_RELOC_AVR32_8S_EXT: ++ case BFD_RELOC_AVR32_8S: ++ case BFD_RELOC_AVR32_10UW: ++ case BFD_RELOC_AVR32_10SW: ++ case BFD_RELOC_AVR32_STHH_W: ++ case BFD_RELOC_AVR32_14UW: ++ case BFD_RELOC_AVR32_16S: ++ case BFD_RELOC_AVR32_16U: ++ case BFD_RELOC_AVR32_21S: ++ case BFD_RELOC_AVR32_SUB5: ++ case BFD_RELOC_AVR32_CPCALL: ++ case BFD_RELOC_AVR32_16_CP: ++ case BFD_RELOC_AVR32_9W_CP: ++ ifield = fixP->tc_fix_data.ifield; ++ pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n", ++ fixP->tc_fix_data.min, value, fixP->tc_fix_data.max, ++ fixP->tc_fix_data.align); ++ if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max) ++ as_bad_where(fixP->fx_file, fixP->fx_line, ++ _("operand out of range (%ld not between %ld and %ld)"), ++ value, fixP->tc_fix_data.min, fixP->tc_fix_data.max); ++ if (value & ((1 << fixP->tc_fix_data.align) - 1)) ++ as_bad_where(fixP->fx_file, fixP->fx_line, ++ _("misaligned operand (required alignment: %d)"), ++ 1 << fixP->tc_fix_data.align); ++ ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align); ++ break; ++ case BFD_RELOC_AVR32_ALIGN: ++ /* Nothing to do */ ++ fixP->fx_done = FALSE; ++ break; ++ default: ++ as_fatal("reloc type %s not handled\n", ++ bfd_get_reloc_code_name(fixP->fx_r_type)); ++ } ++ } ++ ++ fixP->fx_addsy = fx_addsy; ++ fixP->fx_subsy = fx_subsy; ++ fixP->fx_offset = fx_offset; ++ ++ if (!fixP->fx_done) ++ { ++ if (!fixP->fx_addsy) ++ fixP->fx_addsy = abs_section_sym; ++ ++ symbol_mark_used_in_reloc(fixP->fx_addsy); ++ if (fixP->fx_subsy) ++ abort(); ++ } ++} ++ ++#if 0 ++void ++md_apply_fix3 (fixS *fixP, valueT *valP, segT seg) ++{ ++ const struct avr32_ifield *ifield; ++ offsetT value = *valP; ++ char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; ++ bfd_boolean apply; ++ ++ pr_debug("%s:%u: apply_fix3: r_type=%d value=%lx offset=%lx\n", ++ fixP->fx_file, fixP->fx_line, fixP->fx_r_type, *valP, ++ fixP->fx_offset); ++ ++ if (fixP->fx_r_type >= BFD_RELOC_UNUSED) ++ { ++ as_bad_where(fixP->fx_file, fixP->fx_line, ++ _("Bad relocation type %d\n"), fixP->fx_r_type); ++ return; ++ } ++ ++ if (!fixP->fx_addsy && !fixP->fx_subsy) ++ fixP->fx_done = 1; ++ ++ if (fixP->fx_pcrel) ++ { ++ if (fixP->fx_addsy != NULL ++ && S_IS_DEFINED(fixP->fx_addsy) ++ && S_GET_SEGMENT(fixP->fx_addsy) != seg) ++ value += md_pcrel_from_section(fixP, seg); ++ ++ switch (fixP->fx_r_type) ++ { ++ case BFD_RELOC_32: ++ fixP->fx_r_type = BFD_RELOC_32_PCREL; ++ break; ++ case BFD_RELOC_16: ++ case BFD_RELOC_8: ++ as_bad_where (fixP->fx_file, fixP->fx_line, ++ _("8- and 16-bit PC-relative relocations not supported")); ++ break; ++ case BFD_RELOC_AVR32_SUB5: ++ fixP->fx_r_type = BFD_RELOC_AVR32_PCREL_SUB5; ++ break; ++ case BFD_RELOC_AVR32_16S: ++ fixP->fx_r_type = BFD_RELOC_AVR32_16_PCREL; ++ break; ++ default: ++ /* Should have been taken care of already */ ++ break; ++ } ++ } ++ ++ if (fixP->fx_r_type == BFD_RELOC_32 ++ && fixP->fx_subsy) ++ { ++ fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32; ++ ++ /* Offsets are only allowed if it's a result of adjusting a ++ local symbol into a section-relative offset. ++ tc_fix_adjustable() should prevent any adjustment if there ++ was an offset involved before. */ ++ if (fixP->fx_offset && !symbol_section_p(fixP->fx_addsy)) ++ as_bad_where(fixP->fx_file, fixP->fx_line, ++ _("cannot represent symbol difference with an offset")); ++ ++ value = (S_GET_VALUE(fixP->fx_addsy) + fixP->fx_offset ++ - S_GET_VALUE(fixP->fx_subsy)); ++ ++ /* The difference before any relaxing takes place is written ++ out, and the DIFF32 reloc identifies the address of the first ++ symbol (i.e. the on that's subtracted.) */ ++ *valP = value; ++ fixP->fx_offset -= value; ++ fixP->fx_subsy = NULL; ++ ++ md_number_to_chars(buf, value, fixP->fx_size); ++ } ++ ++ if (fixP->fx_done) ++ { ++ switch (fixP->fx_r_type) ++ { ++ case BFD_RELOC_8: ++ case BFD_RELOC_16: ++ case BFD_RELOC_32: ++ md_number_to_chars(buf, value, fixP->fx_size); ++ break; ++ case BFD_RELOC_HI16: ++ value >>= 16; ++ case BFD_RELOC_LO16: ++ value &= 0xffff; ++ *valP = value; ++ md_number_to_chars(buf + 2, value, 2); ++ break; ++ case BFD_RELOC_AVR32_PCREL_SUB5: ++ value = -value; ++ /* fall through */ ++ case BFD_RELOC_AVR32_9_PCREL: ++ case BFD_RELOC_AVR32_11_PCREL: ++ case BFD_RELOC_AVR32_16_PCREL: ++ case BFD_RELOC_AVR32_18_PCREL: ++ case BFD_RELOC_AVR32_22_PCREL: ++ case BFD_RELOC_AVR32_3U: ++ case BFD_RELOC_AVR32_4UH: ++ case BFD_RELOC_AVR32_6UW: ++ case BFD_RELOC_AVR32_6S: ++ case BFD_RELOC_AVR32_7UW: ++ case BFD_RELOC_AVR32_8S: ++ case BFD_RELOC_AVR32_10UW: ++ case BFD_RELOC_AVR32_10SW: ++ case BFD_RELOC_AVR32_14UW: ++ case BFD_RELOC_AVR32_16S: ++ case BFD_RELOC_AVR32_16U: ++ case BFD_RELOC_AVR32_21S: ++ case BFD_RELOC_AVR32_BRC1: ++ case BFD_RELOC_AVR32_SUB5: ++ case BFD_RELOC_AVR32_CPCALL: ++ case BFD_RELOC_AVR32_16_CP: ++ case BFD_RELOC_AVR32_9_CP: ++ ifield = fixP->tc_fix_data.ifield; ++ pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n", ++ fixP->tc_fix_data.min, value, fixP->tc_fix_data.max, ++ fixP->tc_fix_data.align); ++ if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max) ++ as_bad_where(fixP->fx_file, fixP->fx_line, ++ _("operand out of range (%ld not between %ld and %ld)"), ++ value, fixP->tc_fix_data.min, fixP->tc_fix_data.max); ++ if (value & ((1 << fixP->tc_fix_data.align) - 1)) ++ as_bad_where(fixP->fx_file, fixP->fx_line, ++ _("misaligned operand (required alignment: %d)"), ++ 1 << fixP->tc_fix_data.align); ++ ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align); ++ break; ++ case BFD_RELOC_AVR32_ALIGN: ++ /* Nothing to do */ ++ fixP->fx_done = FALSE; ++ break; ++ default: ++ as_fatal("reloc type %s not handled\n", ++ bfd_get_reloc_code_name(fixP->fx_r_type)); ++ } ++ } ++} ++#endif ++ ++arelent * ++tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, ++ fixS *fixp) ++{ ++ arelent *reloc; ++ bfd_reloc_code_real_type code; ++ ++ reloc = xmalloc (sizeof (arelent)); ++ ++ reloc->sym_ptr_ptr = xmalloc (sizeof (asymbol *)); ++ *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); ++ reloc->address = fixp->fx_frag->fr_address + fixp->fx_where; ++ reloc->addend = fixp->fx_offset; ++ code = fixp->fx_r_type; ++ ++ reloc->howto = bfd_reloc_type_lookup (stdoutput, code); ++ ++ if (reloc->howto == NULL) ++ { ++ as_bad_where (fixp->fx_file, fixp->fx_line, ++ _("cannot represent relocation %s in this object file format"), ++ bfd_get_reloc_code_name (code)); ++ return NULL; ++ } ++ ++ return reloc; ++} ++ ++bfd_boolean ++avr32_force_reloc(fixS *fixP) ++{ ++ if (linkrelax && fixP->fx_addsy ++ && !(S_GET_SEGMENT(fixP->fx_addsy)->flags & SEC_DEBUGGING) ++ && S_GET_SEGMENT(fixP->fx_addsy) != absolute_section) ++ { ++ pr_debug(stderr, "force reloc: addsy=%p, r_type=%d, sec=%s\n", ++ fixP->fx_addsy, fixP->fx_r_type, S_GET_SEGMENT(fixP->fx_addsy)->name); ++ return 1; ++ } ++ ++ return generic_force_reloc(fixP); ++} ++ ++bfd_boolean ++avr32_fix_adjustable(fixS *fixP) ++{ ++ switch (fixP->fx_r_type) ++ { ++ /* GOT relocations can't have addends since BFD treats all ++ references to a given symbol the same. This means that we ++ must avoid section-relative references to local symbols when ++ dealing with these kinds of relocs */ ++ case BFD_RELOC_AVR32_GOT32: ++ case BFD_RELOC_AVR32_GOT16: ++ case BFD_RELOC_AVR32_GOT8: ++ case BFD_RELOC_AVR32_GOT21S: ++ case BFD_RELOC_AVR32_GOT18SW: ++ case BFD_RELOC_AVR32_GOT16S: ++ case BFD_RELOC_AVR32_LDA_GOT: ++ case BFD_RELOC_AVR32_GOTCALL: ++ pr_debug("fix not adjustable\n"); ++ return 0; ++ ++ default: ++ break; ++ } ++ ++ return 1; ++} ++ ++/* When we want the linker to be able to relax the code, we need to ++ output a reloc for every .align directive requesting an alignment ++ to a four byte boundary or larger. If we don't do this, the linker ++ can't guarantee that the alignment is actually maintained in the ++ linker output. ++ ++ TODO: Might as well insert proper NOPs while we're at it... */ ++void ++avr32_handle_align(fragS *frag) ++{ ++ if (linkrelax ++ && frag->fr_type == rs_align_code ++ && frag->fr_address + frag->fr_fix > 0 ++ && frag->fr_offset > 0) ++ { ++ /* The alignment order (fr_offset) is stored in the addend. */ ++ fix_new(frag, frag->fr_fix, 2, &abs_symbol, frag->fr_offset, ++ FALSE, BFD_RELOC_AVR32_ALIGN); ++ } ++} ++ ++/* Relax_align. Advance location counter to next address that has 'alignment' ++ lowest order bits all 0s, return size of adjustment made. */ ++relax_addressT ++avr32_relax_align(segT segment ATTRIBUTE_UNUSED, ++ fragS *fragP, ++ relax_addressT address) ++{ ++ relax_addressT mask; ++ relax_addressT new_address; ++ int alignment; ++ ++ alignment = fragP->fr_offset; ++ mask = ~((~0) << alignment); ++ new_address = (address + mask) & (~mask); ++ ++ return new_address - address; ++} ++ ++/* Turn a string in input_line_pointer into a floating point constant ++ of type type, and store the appropriate bytes in *litP. The number ++ of LITTLENUMS emitted is stored in *sizeP . An error message is ++ returned, or NULL on OK. */ ++ ++/* Equal to MAX_PRECISION in atof-ieee.c */ ++#define MAX_LITTLENUMS 6 ++ ++char * ++md_atof (type, litP, sizeP) ++char type; ++char * litP; ++int * sizeP; ++{ ++ int i; ++ int prec; ++ LITTLENUM_TYPE words [MAX_LITTLENUMS]; ++ char * t; ++ ++ switch (type) ++ { ++ case 'f': ++ case 'F': ++ case 's': ++ case 'S': ++ prec = 2; ++ break; ++ ++ case 'd': ++ case 'D': ++ case 'r': ++ case 'R': ++ prec = 4; ++ break; ++ ++ /* FIXME: Some targets allow other format chars for bigger sizes here. */ ++ ++ default: ++ * sizeP = 0; ++ return _("Bad call to md_atof()"); ++ } ++ ++ t = atof_ieee (input_line_pointer, type, words); ++ if (t) ++ input_line_pointer = t; ++ * sizeP = prec * sizeof (LITTLENUM_TYPE); ++ ++ for (i = 0; i < prec; i++) ++ { ++ md_number_to_chars (litP, (valueT) words[i], ++ sizeof (LITTLENUM_TYPE)); ++ litP += sizeof (LITTLENUM_TYPE); ++ } ++ ++ return 0; ++} ++ ++static char *avr32_end_of_match(char *cont, char *what) ++{ ++ int len = strlen (what); ++ ++ if (! is_part_of_name (cont[len]) ++ && strncasecmp (cont, what, len) == 0) ++ return cont + len; ++ ++ return NULL; ++} ++ ++int ++avr32_parse_name (char const *name, expressionS *exp, char *nextchar) ++{ ++ char *next = input_line_pointer; ++ char *next_end; ++ ++ pr_debug("parse_name: %s, nextchar=%c (%02x)\n", name, *nextchar, *nextchar); ++ ++ if (*nextchar == '(') ++ { ++ if (strcasecmp(name, "hi") == 0) ++ { ++ *next = *nextchar; ++ ++ expression(exp); ++ ++ if (exp->X_op == O_constant) ++ { ++ pr_debug(" -> constant hi(0x%08lx) -> 0x%04lx\n", ++ exp->X_add_number, exp->X_add_number >> 16); ++ exp->X_add_number = (exp->X_add_number >> 16) & 0xffff; ++ } ++ else ++ { ++ exp->X_md = exp->X_op; ++ exp->X_op = O_hi; ++ } ++ ++ return 1; ++ } ++ else if (strcasecmp(name, "lo") == 0) ++ { ++ *next = *nextchar; ++ ++ expression(exp); ++ ++ if (exp->X_op == O_constant) ++ exp->X_add_number &= 0xffff; ++ else ++ { ++ exp->X_md = exp->X_op; ++ exp->X_op = O_lo; ++ } ++ ++ return 1; ++ } ++ } ++ else if (*nextchar == '@') ++ { ++ exp->X_md = exp->X_op; ++ ++ if ((next_end = avr32_end_of_match (next + 1, "got"))) ++ exp->X_op = O_got; ++ else if ((next_end = avr32_end_of_match (next + 1, "tlsgd"))) ++ exp->X_op = O_tlsgd; ++ /* Add more as needed */ ++ else ++ { ++ char c; ++ input_line_pointer++; ++ c = get_symbol_end(); ++ as_bad (_("unknown relocation override `%s'"), next + 1); ++ *input_line_pointer = c; ++ input_line_pointer = next; ++ return 0; ++ } ++ ++ exp->X_op_symbol = NULL; ++ exp->X_add_symbol = symbol_find_or_make (name); ++ exp->X_add_number = 0; ++ ++ *input_line_pointer = *nextchar; ++ input_line_pointer = next_end; ++ *nextchar = *input_line_pointer; ++ *input_line_pointer = '\0'; ++ return 1; ++ } ++ else if (strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0) ++ { ++ if (!GOT_symbol) ++ GOT_symbol = symbol_find_or_make(name); ++ ++ exp->X_add_symbol = GOT_symbol; ++ exp->X_op = O_symbol; ++ exp->X_add_number = 0; ++ return 1; ++ } ++ ++ return 0; ++} ++ ++static void ++s_rseg (int value ATTRIBUTE_UNUSED) ++{ ++ /* Syntax: RSEG segment_name [:type] [NOROOT|ROOT] [(align)] ++ * Defaults: ++ * - type: undocumented ("typically CODE or DATA") ++ * - ROOT ++ * - align: 1 for code, 0 for others ++ * ++ * TODO: NOROOT is ignored. If gas supports discardable segments, it should ++ * be implemented. ++ */ ++ char *name, *end; ++ int length, type, attr; ++ int align = 0; ++ ++ SKIP_WHITESPACE(); ++ ++ end = input_line_pointer; ++ while (0 == strchr ("\n\t;:( ", *end)) ++ end++; ++ if (end == input_line_pointer) ++ { ++ as_warn (_("missing name")); ++ ignore_rest_of_line(); ++ return; ++ } ++ ++ name = xmalloc (end - input_line_pointer + 1); ++ memcpy (name, input_line_pointer, end - input_line_pointer); ++ name[end - input_line_pointer] = '\0'; ++ input_line_pointer = end; ++ ++ SKIP_WHITESPACE(); ++ ++ type = SHT_NULL; ++ attr = 0; ++ ++ if (*input_line_pointer == ':') ++ { ++ /* Skip the colon */ ++ ++input_line_pointer; ++ SKIP_WHITESPACE(); ++ ++ /* Possible options at this point: ++ * - flag (ROOT or NOROOT) ++ * - a segment type ++ */ ++ end = input_line_pointer; ++ while (0 == strchr ("\n\t;:( ", *end)) ++ end++; ++ length = end - input_line_pointer; ++ if (((length == 4) && (0 == strncasecmp( input_line_pointer, "ROOT", 4))) || ++ ((length == 6) && (0 == strncasecmp( input_line_pointer, "NOROOT", 6)))) ++ { ++ /* Ignore ROOT/NOROOT */ ++ input_line_pointer = end; ++ } ++ else ++ { ++ /* Must be a segment type */ ++ switch (*input_line_pointer) ++ { ++ case 'C': ++ case 'c': ++ if ((length == 4) && ++ (0 == strncasecmp (input_line_pointer, "CODE", 4))) ++ { ++ attr |= SHF_ALLOC | SHF_EXECINSTR; ++ type = SHT_PROGBITS; ++ align = 1; ++ break; ++ } ++ if ((length == 5) && ++ (0 == strncasecmp (input_line_pointer, "CONST", 5))) ++ { ++ attr |= SHF_ALLOC; ++ type = SHT_PROGBITS; ++ break; ++ } ++ goto de_fault; ++ ++ case 'D': ++ case 'd': ++ if ((length == 4) && ++ (0 == strncasecmp (input_line_pointer, "DATA", 4))) ++ { ++ attr |= SHF_ALLOC | SHF_WRITE; ++ type = SHT_PROGBITS; ++ break; ++ } ++ goto de_fault; ++ ++ /* TODO: Add FAR*, HUGE*, IDATA and NEAR* if necessary */ ++ ++ case 'U': ++ case 'u': ++ if ((length == 7) && ++ (0 == strncasecmp (input_line_pointer, "UNTYPED", 7))) ++ break; ++ goto de_fault; ++ ++ /* TODO: Add XDATA and ZPAGE if necessary */ ++ ++ de_fault: ++ default: ++ as_warn (_("unrecognized segment type")); ++ } ++ ++ input_line_pointer = end; ++ SKIP_WHITESPACE(); ++ ++ if (*input_line_pointer == ':') ++ { ++ /* ROOT/NOROOT */ ++ ++input_line_pointer; ++ SKIP_WHITESPACE(); ++ ++ end = input_line_pointer; ++ while (0 == strchr ("\n\t;:( ", *end)) ++ end++; ++ length = end - input_line_pointer; ++ if (! ((length == 4) && ++ (0 == strncasecmp( input_line_pointer, "ROOT", 4))) && ++ ! ((length == 6) && ++ (0 == strncasecmp( input_line_pointer, "NOROOT", 6)))) ++ { ++ as_warn (_("unrecognized segment flag")); ++ } ++ ++ input_line_pointer = end; ++ SKIP_WHITESPACE(); ++ } ++ } ++ } ++ ++ if (*input_line_pointer == '(') ++ { ++ align = get_absolute_expression (); ++ } ++ ++ demand_empty_rest_of_line(); ++ ++ obj_elf_change_section (name, type, attr, 0, NULL, 0, 0); ++#ifdef AVR32_DEBUG ++ fprintf( stderr, "RSEG: Changed section to %s, type: 0x%x, attr: 0x%x\n", ++ name, type, attr ); ++ fprintf( stderr, "RSEG: Aligning to 2**%d\n", align ); ++#endif ++ ++ if (align > 15) ++ { ++ align = 15; ++ as_warn (_("alignment too large: %u assumed"), align); ++ } ++ ++ /* Hope not, that is */ ++ assert (now_seg != absolute_section); ++ ++ /* Only make a frag if we HAVE to... */ ++ if (align != 0 && !need_pass_2) ++ { ++ if (subseg_text_p (now_seg)) ++ frag_align_code (align, 0); ++ else ++ frag_align (align, 0, 0); ++ } ++ ++ record_alignment (now_seg, align - OCTETS_PER_BYTE_POWER); ++} ++ ++/* vim: syntax=c sw=2 ++ */ +diff -Nrup binutils-2.17/gas/config/tc-avr32.h binutils-2.17.atmel.1.3.0/gas/config/tc-avr32.h +--- binutils-2.17/gas/config/tc-avr32.h 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/config/tc-avr32.h 2007-03-26 10:20:14.000000000 +0200 +@@ -0,0 +1,313 @@ ++/* Assembler definitions for AVR32. ++ Copyright 2003-2006 Atmel Corporation. ++ ++ Written by Haavard Skinnemoen, Atmel Norway, ++ ++ This file is part of GAS, the GNU Assembler. ++ ++ GAS is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2, or (at your option) ++ any later version. ++ ++ GAS is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GAS; see the file COPYING. If not, write to the Free ++ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#if 0 ++#define DEBUG ++#define DEBUG1 ++#define DEBUG2 ++#define DEBUG3 ++#define DEBUG4 ++#define DEBUG5 ++#endif ++ ++/* Are we trying to be compatible with the IAR assembler? (--iar) */ ++extern int avr32_iarcompat; ++ ++/* By convention, you should define this macro in the `.h' file. For ++ example, `tc-m68k.h' defines `TC_M68K'. You might have to use this ++ if it is necessary to add CPU specific code to the object format ++ file. */ ++#define TC_AVR32 ++ ++/* This macro is the BFD target name to use when creating the output ++ file. This will normally depend upon the `OBJ_FMT' macro. */ ++#define TARGET_FORMAT "elf32-avr32" ++ ++/* This macro is the BFD architecture to pass to `bfd_set_arch_mach'. */ ++#define TARGET_ARCH bfd_arch_avr32 ++ ++/* This macro is the BFD machine number to pass to ++ `bfd_set_arch_mach'. If it is not defined, GAS will use 0. */ ++#define TARGET_MACH 0 ++ ++/* UNDOCUMENTED: Allow //-style comments */ ++#define DOUBLESLASH_LINE_COMMENTS ++ ++/* You should define this macro to be non-zero if the target is big ++ endian, and zero if the target is little endian. */ ++#define TARGET_BYTES_BIG_ENDIAN 1 ++ ++/* FIXME: It seems that GAS only expects a one-byte opcode... ++ #define NOP_OPCODE 0xd703 */ ++ ++/* If you define this macro, GAS will warn about the use of ++ nonstandard escape sequences in a string. */ ++#undef ONLY_STANDARD_ESCAPES ++ ++#define DWARF2_FORMAT() dwarf2_format_32bit ++ ++/* Instructions are either 2 or 4 bytes long */ ++/* #define DWARF2_LINE_MIN_INSN_LENGTH 2 */ ++ ++/* GAS will call this function for any expression that can not be ++ recognized. When the function is called, `input_line_pointer' ++ will point to the start of the expression. */ ++#define md_operand(x) ++ ++#define md_parse_name(name, expr, mode, c) avr32_parse_name(name, expr, c) ++extern int avr32_parse_name(const char *, struct expressionS *, char *); ++ ++/* You may define this macro to generate a fixup for a data ++ allocation pseudo-op. */ ++#define TC_CONS_FIX_NEW(FRAG, OFF, LEN, EXP) \ ++ avr32_cons_fix_new(FRAG, OFF, LEN, EXP) ++void avr32_cons_fix_new (fragS *, int, int, expressionS *); ++ ++/* `extsym - .' expressions can be emitted using PC-relative relocs */ ++#define DIFF_EXPR_OK ++ ++/* This is used to construct expressions out of @gotoff, etc. The ++ relocation type is stored in X_md */ ++#define O_got O_md1 ++#define O_hi O_md2 ++#define O_lo O_md3 ++#define O_tlsgd O_md4 ++ ++/* You may define this macro to parse an expression used in a data ++ allocation pseudo-op such as `.word'. You can use this to ++ recognize relocation directives that may appear in such directives. */ ++/* #define TC_PARSE_CONS_EXPRESSION(EXPR,N) avr_parse_cons_expression (EXPR,N) ++ void avr_parse_cons_expression (expressionS *exp, int nbytes); */ ++ ++/* This should just call either `number_to_chars_bigendian' or ++ `number_to_chars_littleendian', whichever is appropriate. On ++ targets like the MIPS which support options to change the ++ endianness, which function to call is a runtime decision. On ++ other targets, `md_number_to_chars' can be a simple macro. */ ++#define md_number_to_chars number_to_chars_bigendian ++ ++/* `md_short_jump_size' ++ `md_long_jump_size' ++ `md_create_short_jump' ++ `md_create_long_jump' ++ If `WORKING_DOT_WORD' is defined, GAS will not do broken word ++ processing (*note Broken words::.). Otherwise, you should set ++ `md_short_jump_size' to the size of a short jump (a jump that is ++ just long enough to jump around a long jmp) and ++ `md_long_jump_size' to the size of a long jump (a jump that can go ++ anywhere in the function), You should define ++ `md_create_short_jump' to create a short jump around a long jump, ++ and define `md_create_long_jump' to create a long jump. */ ++#define WORKING_DOT_WORD ++ ++/* If you define this macro, it means that `tc_gen_reloc' may return ++ multiple relocation entries for a single fixup. In this case, the ++ return value of `tc_gen_reloc' is a pointer to a null terminated ++ array. */ ++#undef RELOC_EXPANSION_POSSIBLE ++ ++/* If you define this macro, GAS will not require pseudo-ops to start with a . ++ character. */ ++#define NO_PSEUDO_DOT (avr32_iarcompat) ++ ++/* The IAR assembler uses $ as the location counter. Unfortunately, we ++ can't make this dependent on avr32_iarcompat... */ ++#define DOLLAR_DOT ++ ++/* Values passed to md_apply_fix3 don't include the symbol value. */ ++#define MD_APPLY_SYM_VALUE(FIX) 0 ++ ++/* The number of bytes to put into a word in a listing. This affects ++ the way the bytes are clumped together in the listing. For ++ example, a value of 2 might print `1234 5678' where a value of 1 ++ would print `12 34 56 78'. The default value is 4. */ ++#define LISTING_WORD_SIZE 4 ++ ++/* extern const struct relax_type md_relax_table[]; ++#define TC_GENERIC_RELAX_TABLE md_relax_table */ ++ ++/* ++ An `.lcomm' directive with no explicit alignment parameter will use ++ this macro to set P2VAR to the alignment that a request for SIZE ++ bytes will have. The alignment is expressed as a power of two. If ++ no alignment should take place, the macro definition should do ++ nothing. Some targets define a `.bss' directive that is also ++ affected by this macro. The default definition will set P2VAR to ++ the truncated power of two of sizes up to eight bytes. ++ ++ We want doublewords to be word-aligned, so we're going to modify the ++ default definition a tiny bit. ++*/ ++#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) \ ++ do \ ++ { \ ++ if ((SIZE) >= 4) \ ++ (P2VAR) = 2; \ ++ else if ((SIZE) >= 2) \ ++ (P2VAR) = 1; \ ++ else \ ++ (P2VAR) = 0; \ ++ } \ ++ while (0) ++ ++/* When relaxing, we need to generate relocations for alignment ++ directives. */ ++#define HANDLE_ALIGN(frag) avr32_handle_align(frag) ++extern void avr32_handle_align(fragS *); ++ ++/* See internals doc for explanation. Oh wait... ++ Now, can you guess where "alignment" comes from? ;-) */ ++#define MAX_MEM_FOR_RS_ALIGN_CODE ((1 << alignment) - 1) ++ ++/* We need to stop gas from reducing certain expressions (e.g. GOT ++ references) */ ++#define tc_fix_adjustable(fix) avr32_fix_adjustable(fix) ++extern bfd_boolean avr32_fix_adjustable(struct fix *); ++ ++/* The linker needs to be passed a little more information when relaxing. */ ++#define TC_FORCE_RELOCATION(fix) avr32_force_reloc(fix) ++extern bfd_boolean avr32_force_reloc(struct fix *); ++ ++/* I'm tired of working around all the madness in fixup_segment(). ++ This hook will do basically the same things as the generic code, ++ and then it will "goto" right past it. */ ++#define TC_VALIDATE_FIX(FIX, SEG, SKIP) \ ++ do \ ++ { \ ++ avr32_process_fixup(FIX, SEG); \ ++ if (!(FIX)->fx_done) \ ++ ++seg_reloc_count; \ ++ goto SKIP; \ ++ } \ ++ while (0) ++extern void avr32_process_fixup(struct fix *fixP, segT this_segment); ++ ++/* We don't want the gas core to make any assumptions about our way of ++ doing linkrelaxing. */ ++#define TC_LINKRELAX_FIXUP(SEG) 0 ++ ++/* ... but we do want it to insert lots of padding. */ ++#define LINKER_RELAXING_SHRINKS_ONLY ++ ++/* Better do it ourselves, really... */ ++#define TC_RELAX_ALIGN(SEG, FRAG, ADDR) avr32_relax_align(SEG, FRAG, ADDR) ++extern relax_addressT ++avr32_relax_align(segT segment, fragS *fragP, relax_addressT address); ++ ++/* This is called by write_object_file() just before symbols are ++ attempted converted into section symbols. */ ++#define tc_frob_file_before_adjust() avr32_frob_file() ++extern void avr32_frob_file(void); ++ ++/* If you define this macro, GAS will call it at the end of each input ++ file. */ ++#define md_cleanup() avr32_cleanup() ++extern void avr32_cleanup(void); ++ ++/* There's an AVR32-specific hack in operand() which creates O_md ++ expressions when encountering HWRD or LWRD. We need to generate ++ proper relocs for them */ ++/* #define md_cgen_record_fixup_exp avr32_cgen_record_fixup_exp */ ++ ++/* I needed to add an extra hook in gas_cgen_finish_insn() for ++ conversion of O_md* operands because md_cgen_record_fixup_exp() ++ isn't called for relaxable insns */ ++/* #define md_cgen_convert_expr(exp, opinfo) avr32_cgen_convert_expr(exp, opinfo) ++ int avr32_cgen_convert_expr(expressionS *, int); */ ++ ++/* #define tc_gen_reloc gas_cgen_tc_gen_reloc */ ++ ++/* If you define this macro, it should return the position from which ++ the PC relative adjustment for a PC relative fixup should be ++ made. On many processors, the base of a PC relative instruction is ++ the next instruction, so this macro would return the length of an ++ instruction, plus the address of the PC relative fixup. The latter ++ can be calculated as fixp->fx_where + fixp->fx_frag->fr_address. */ ++extern long md_pcrel_from_section (struct fix *, segT); ++#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC) ++ ++#define LOCAL_LABEL(name) (name[0] == '.' && (name[1] == 'L')) ++#define LOCAL_LABELS_FB 1 ++ ++struct avr32_relaxer ++{ ++ int (*estimate_size)(fragS *, segT); ++ long (*relax_frag)(segT, fragS *, long); ++ void (*convert_frag)(bfd *, segT, fragS *); ++}; ++ ++/* AVR32 has quite complex instruction coding, which means we need ++ * lots of information in order to do the right thing during relaxing ++ * (basically, we need to be able to reconstruct a whole new opcode if ++ * necessary) */ ++#define TC_FRAG_TYPE struct avr32_frag_data ++ ++struct cpool; ++ ++struct avr32_frag_data ++{ ++ /* TODO: Maybe add an expression object here so that we can use ++ fix_new_exp() in md_convert_frag? We may have to decide ++ pcrel-ness in md_estimate_size_before_relax() as well...or we ++ might do it when parsing. Doing it while parsing may fail ++ because the sub_symbol is undefined then... */ ++ int pcrel; ++ int force_extended; ++ int reloc_info; ++ struct avr32_relaxer *relaxer; ++ expressionS exp; ++ ++ /* Points to associated constant pool, for use by LDA and CALL in ++ non-pic mode, and when relaxing the .cpool directive */ ++ struct cpool *pool; ++ unsigned int pool_entry; ++}; ++ ++/* We will have to initialize the fields explicitly when needed */ ++#define TC_FRAG_INIT(fragP) ++ ++#define md_estimate_size_before_relax(fragP, segT) \ ++ ((fragP)->tc_frag_data.relaxer->estimate_size(fragP, segT)) ++#define md_relax_frag(segment, fragP, stretch) \ ++ ((fragP)->tc_frag_data.relaxer->relax_frag(segment, fragP, stretch)) ++#define md_convert_frag(abfd, segment, fragP) \ ++ ((fragP)->tc_frag_data.relaxer->convert_frag(abfd, segment, fragP)) ++ ++#define TC_FIX_TYPE struct avr32_fix_data ++ ++struct avr32_fix_data ++{ ++ const struct avr32_ifield *ifield; ++ unsigned int align; ++ long min; ++ long max; ++}; ++ ++#define TC_INIT_FIX_DATA(fixP) \ ++ do \ ++ { \ ++ (fixP)->tc_fix_data.ifield = NULL; \ ++ (fixP)->tc_fix_data.align = 0; \ ++ (fixP)->tc_fix_data.min = 0; \ ++ (fixP)->tc_fix_data.max = 0; \ ++ } \ ++ while (0) +diff -Nrup binutils-2.17/gas/configure.tgt binutils-2.17.atmel.1.3.0/gas/configure.tgt +--- binutils-2.17/gas/configure.tgt 2006-04-05 14:41:57.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/gas/configure.tgt 2007-03-26 10:20:16.000000000 +0200 +@@ -33,6 +33,7 @@ case ${cpu} in + am33_2.0) cpu_type=mn10300 endian=little ;; + arm*be|arm*b) cpu_type=arm endian=big ;; + arm*) cpu_type=arm endian=little ;; ++ avr32*) cpu_type=avr32 endian=big ;; + bfin*) cpu_type=bfin endian=little ;; + c4x*) cpu_type=tic4x ;; + crisv32) cpu_type=cris arch=crisv32 ;; +@@ -122,6 +123,9 @@ case ${generic_target} in + bfin-*-*) fmt=elf bfd_gas=yes ;; + bfin-*elf) fmt=elf ;; + ++ avr32-*-linux*) fmt=elf em=linux bfd_gas=yes ;; ++ avr32*) fmt=elf bfd_gas=yes ;; ++ + cris-*-linux-* | crisv32-*-linux-*) + fmt=multi em=linux ;; + cris-*-* | crisv32-*-*) fmt=multi ;; +diff -Nrup binutils-2.17/gas/doc/all.texi binutils-2.17.atmel.1.3.0/gas/doc/all.texi +--- binutils-2.17/gas/doc/all.texi 2006-02-17 15:36:25.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/doc/all.texi 2007-03-26 10:19:41.000000000 +0200 +@@ -29,6 +29,7 @@ + @set ALPHA + @set ARC + @set ARM ++@set AVR32 + @set BFIN + @set CRIS + @set D10V +diff -Nrup binutils-2.17/gas/doc/as.info binutils-2.17.atmel.1.3.0/gas/doc/as.info +--- binutils-2.17/gas/doc/as.info 2006-06-23 20:19:50.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/gas/doc/as.info 2007-03-26 10:35:18.000000000 +0200 +@@ -1,5 +1,7 @@ +-This is ../.././gas/doc/as.info, produced by makeinfo version 4.8 from +-../.././gas/doc/as.texinfo. ++This is ++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/gas/doc/as.info, ++produced by makeinfo version 4.8 from ++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/gas/doc/as.texinfo. + + START-INFO-DIR-ENTRY + * As: (as). The GNU assembler. +@@ -17890,463 +17892,463 @@ Index + +  + Tag Table: +-Node: Top778 +-Node: Overview1695 +-Node: Manual28187 +-Node: GNU Assembler29131 +-Node: Object Formats30302 +-Node: Command Line30754 +-Node: Input Files31841 +-Node: Object33822 +-Node: Errors34718 +-Node: Invoking35913 +-Node: a37862 +-Node: alternate39634 +-Node: D39806 +-Node: f40039 +-Node: I40547 +-Node: K41091 +-Node: L41394 +-Node: listing42231 +-Node: M43823 +-Node: MD48224 +-Node: o48650 +-Node: R49105 +-Node: statistics50135 +-Node: traditional-format50542 +-Node: v51015 +-Node: W51290 +-Node: Z52197 +-Node: Syntax52719 +-Node: Preprocessing53310 +-Node: Whitespace54873 +-Node: Comments55269 +-Node: Symbol Intro57422 +-Node: Statements58112 +-Node: Constants60028 +-Node: Characters60659 +-Node: Strings61161 +-Node: Chars63327 +-Node: Numbers64081 +-Node: Integers64621 +-Node: Bignums65277 +-Node: Flonums65633 +-Node: Sections67380 +-Node: Secs Background67758 +-Node: Ld Sections72797 +-Node: As Sections75181 +-Node: Sub-Sections76091 +-Node: bss79238 +-Node: Symbols80188 +-Node: Labels80836 +-Node: Setting Symbols81567 +-Node: Symbol Names82063 +-Node: Dot86428 +-Node: Symbol Attributes86875 +-Node: Symbol Value87612 +-Node: Symbol Type88657 +-Node: a.out Symbols89045 +-Node: Symbol Desc89307 +-Node: Symbol Other89602 +-Node: COFF Symbols89771 +-Node: SOM Symbols90444 +-Node: Expressions90886 +-Node: Empty Exprs91635 +-Node: Integer Exprs91982 +-Node: Arguments92377 +-Node: Operators93483 +-Node: Prefix Ops93818 +-Node: Infix Ops94146 +-Node: Pseudo Ops96536 +-Node: Abort101731 +-Node: ABORT102136 +-Node: Align102323 +-Node: Ascii104605 +-Node: Asciz104914 +-Node: Balign105159 +-Node: Byte107022 +-Node: Comm107260 +-Node: CFI directives108634 +-Node: LNS directives110986 +-Node: Data113063 +-Node: Def113390 +-Node: Desc113622 +-Node: Dim114122 +-Node: Double114379 +-Node: Eject114717 +-Node: Else114892 +-Node: Elseif115188 +-Node: End115478 +-Node: Endef115693 +-Node: Endfunc115870 +-Node: Endif116045 +-Node: Equ116306 +-Node: Equiv116815 +-Node: Eqv117371 +-Node: Err117735 +-Node: Error118046 +-Node: Exitm118491 +-Node: Extern118660 +-Node: Fail118921 +-Node: File119366 +-Node: Fill119843 +-Node: Float120807 +-Node: Func121149 +-Node: Global121739 +-Node: Hidden122489 +-Node: hword123068 +-Node: Ident123396 +-Node: If123970 +-Node: Incbin127029 +-Node: Include127724 +-Node: Int128275 +-Node: Internal128656 +-Node: Irp129304 +-Node: Irpc130201 +-Node: Lcomm131118 +-Node: Lflags131866 +-Node: Line132060 +-Node: Linkonce132979 +-Node: Ln134208 +-Node: MRI134369 +-Node: List134707 +-Node: Long135315 +-Node: Macro135501 +-Node: Altmacro140064 +-Node: Noaltmacro141394 +-Node: Nolist141562 +-Node: Octa141992 +-Node: Org142326 +-Node: P2align143609 +-Node: Previous145537 +-Node: PopSection146231 +-Node: Print146739 +-Node: Protected146968 +-Node: Psize147615 +-Node: Purgem148299 +-Node: PushSection148520 +-Node: Quad149077 +-Node: Rept149532 +-Node: Sbttl149945 +-Node: Scl150310 +-Node: Section150651 +-Node: Set155791 +-Node: Short156428 +-Node: Single156748 +-Node: Size157093 +-Node: Sleb128157765 +-Node: Skip158087 +-Node: Space158409 +-Node: Stab159048 +-Node: String161050 +-Node: Struct161476 +-Node: SubSection162199 +-Node: Symver162760 +-Node: Tag165151 +-Node: Text165531 +-Node: Title165850 +-Node: Type166229 +-Node: Uleb128167306 +-Node: Val167630 +-Node: Version167880 +-Node: VTableEntry168155 +-Node: VTableInherit168445 +-Node: Warning168891 +-Node: Weak169125 +-Node: Weakref169794 +-Node: Word170759 +-Node: Deprecated172605 +-Node: Machine Dependencies172840 +-Node: Alpha-Dependent175604 +-Node: Alpha Notes176018 +-Node: Alpha Options176299 +-Node: Alpha Syntax178497 +-Node: Alpha-Chars178966 +-Node: Alpha-Regs179197 +-Node: Alpha-Relocs179584 +-Node: Alpha Floating Point185842 +-Node: Alpha Directives186064 +-Node: Alpha Opcodes191587 +-Node: ARC-Dependent191882 +-Node: ARC Options192265 +-Node: ARC Syntax193334 +-Node: ARC-Chars193566 +-Node: ARC-Regs193698 +-Node: ARC Floating Point193822 +-Node: ARC Directives194133 +-Node: ARC Opcodes200104 +-Node: ARM-Dependent200330 +-Node: ARM Options200757 +-Node: ARM Syntax206551 +-Node: ARM-Chars206783 +-Node: ARM-Regs207307 +-Node: ARM Floating Point207492 +-Node: ARM Directives207691 +-Node: ARM Opcodes214055 +-Node: ARM Mapping Symbols216143 +-Node: BFIN-Dependent216922 +-Node: BFIN Syntax217176 +-Node: BFIN Directives222873 +-Node: CRIS-Dependent223280 +-Node: CRIS-Opts223626 +-Ref: march-option225244 +-Node: CRIS-Expand227061 +-Node: CRIS-Symbols228244 +-Node: CRIS-Syntax229413 +-Node: CRIS-Chars229749 +-Node: CRIS-Pic230300 +-Ref: crispic230496 +-Node: CRIS-Regs234036 +-Node: CRIS-Pseudos234453 +-Ref: crisnous235229 +-Node: D10V-Dependent236511 +-Node: D10V-Opts236862 +-Node: D10V-Syntax237825 +-Node: D10V-Size238354 +-Node: D10V-Subs239327 +-Node: D10V-Chars240362 +-Node: D10V-Regs241966 +-Node: D10V-Addressing243011 +-Node: D10V-Word243697 +-Node: D10V-Float244212 +-Node: D10V-Opcodes244523 +-Node: D30V-Dependent244916 +-Node: D30V-Opts245269 +-Node: D30V-Syntax245944 +-Node: D30V-Size246476 +-Node: D30V-Subs247447 +-Node: D30V-Chars248482 +-Node: D30V-Guarded250780 +-Node: D30V-Regs251460 +-Node: D30V-Addressing252599 +-Node: D30V-Float253267 +-Node: D30V-Opcodes253578 +-Node: H8/300-Dependent253971 +-Node: H8/300 Options254381 +-Node: H8/300 Syntax254590 +-Node: H8/300-Chars254889 +-Node: H8/300-Regs255186 +-Node: H8/300-Addressing256103 +-Node: H8/300 Floating Point257142 +-Node: H8/300 Directives257467 +-Node: H8/300 Opcodes258593 +-Node: HPPA-Dependent266913 +-Node: HPPA Notes267346 +-Node: HPPA Options268102 +-Node: HPPA Syntax268295 +-Node: HPPA Floating Point269563 +-Node: HPPA Directives269767 +-Node: HPPA Opcodes278451 +-Node: ESA/390-Dependent278708 +-Node: ESA/390 Notes279168 +-Node: ESA/390 Options279959 +-Node: ESA/390 Syntax280169 +-Node: ESA/390 Floating Point282342 +-Node: ESA/390 Directives282621 +-Node: ESA/390 Opcodes285910 +-Node: i386-Dependent286172 +-Node: i386-Options287240 +-Node: i386-Syntax288430 +-Node: i386-Mnemonics290844 +-Node: i386-Regs293309 +-Node: i386-Prefixes295354 +-Node: i386-Memory298114 +-Node: i386-Jumps301051 +-Node: i386-Float302172 +-Node: i386-SIMD304001 +-Node: i386-16bit305110 +-Node: i386-Bugs307148 +-Node: i386-Arch307902 +-Node: i386-Notes310083 +-Node: i860-Dependent310941 +-Node: Notes-i860311337 +-Node: Options-i860312242 +-Node: Directives-i860313605 +-Node: Opcodes for i860314674 +-Node: i960-Dependent316841 +-Node: Options-i960317244 +-Node: Floating Point-i960321128 +-Node: Directives-i960321396 +-Node: Opcodes for i960323430 +-Node: callj-i960324047 +-Node: Compare-and-branch-i960324536 +-Node: IA-64-Dependent326440 +-Node: IA-64 Options326741 +-Node: IA-64 Syntax329901 +-Node: IA-64-Chars330264 +-Node: IA-64-Regs330494 +-Node: IA-64-Bits331420 +-Node: IA-64 Opcodes331929 +-Node: IP2K-Dependent332201 +-Node: IP2K-Opts332429 +-Node: M32C-Dependent332909 +-Node: M32C-Opts333433 +-Node: M32C-Modifiers333717 +-Node: M32R-Dependent335504 +-Node: M32R-Opts335825 +-Node: M32R-Directives339991 +-Node: M32R-Warnings343966 +-Node: M68K-Dependent346972 +-Node: M68K-Opts347439 +-Node: M68K-Syntax354818 +-Node: M68K-Moto-Syntax356657 +-Node: M68K-Float359246 +-Node: M68K-Directives359766 +-Node: M68K-opcodes361092 +-Node: M68K-Branch361318 +-Node: M68K-Chars365516 +-Node: M68HC11-Dependent365929 +-Node: M68HC11-Opts366460 +-Node: M68HC11-Syntax370276 +-Node: M68HC11-Modifiers372490 +-Node: M68HC11-Directives374318 +-Node: M68HC11-Float375694 +-Node: M68HC11-opcodes376222 +-Node: M68HC11-Branch376404 +-Node: MIPS-Dependent378851 +-Node: MIPS Opts379941 +-Node: MIPS Object387268 +-Node: MIPS Stabs388834 +-Node: MIPS symbol sizes389556 +-Node: MIPS ISA391225 +-Node: MIPS autoextend392374 +-Node: MIPS insn393104 +-Node: MIPS option stack393601 +-Node: MIPS ASE instruction generation overrides394375 +-Node: MMIX-Dependent395592 +-Node: MMIX-Opts395972 +-Node: MMIX-Expand399576 +-Node: MMIX-Syntax400891 +-Ref: mmixsite401248 +-Node: MMIX-Chars402089 +-Node: MMIX-Symbols402743 +-Node: MMIX-Regs404811 +-Node: MMIX-Pseudos405836 +-Ref: MMIX-loc405977 +-Ref: MMIX-local407057 +-Ref: MMIX-is407589 +-Ref: MMIX-greg407860 +-Ref: GREG-base408779 +-Ref: MMIX-byte410096 +-Ref: MMIX-constants410567 +-Ref: MMIX-prefix411213 +-Ref: MMIX-spec411587 +-Node: MMIX-mmixal411921 +-Node: MSP430-Dependent415418 +-Node: MSP430 Options415884 +-Node: MSP430 Syntax416170 +-Node: MSP430-Macros416486 +-Node: MSP430-Chars417217 +-Node: MSP430-Regs417530 +-Node: MSP430-Ext418090 +-Node: MSP430 Floating Point419911 +-Node: MSP430 Directives420135 +-Node: MSP430 Opcodes420926 +-Node: MSP430 Profiling Capability421321 +-Node: PDP-11-Dependent423650 +-Node: PDP-11-Options424039 +-Node: PDP-11-Pseudos429110 +-Node: PDP-11-Syntax429455 +-Node: PDP-11-Mnemonics430206 +-Node: PDP-11-Synthetic430508 +-Node: PJ-Dependent430726 +-Node: PJ Options430951 +-Node: PPC-Dependent431228 +-Node: PowerPC-Opts431515 +-Node: PowerPC-Pseudo433590 +-Node: SH-Dependent434189 +-Node: SH Options434601 +-Node: SH Syntax435529 +-Node: SH-Chars435802 +-Node: SH-Regs436096 +-Node: SH-Addressing436710 +-Node: SH Floating Point437619 +-Node: SH Directives438713 +-Node: SH Opcodes439083 +-Node: SH64-Dependent443405 +-Node: SH64 Options443768 +-Node: SH64 Syntax445485 +-Node: SH64-Chars445768 +-Node: SH64-Regs446068 +-Node: SH64-Addressing447164 +-Node: SH64 Directives448347 +-Node: SH64 Opcodes449457 +-Node: Sparc-Dependent450173 +-Node: Sparc-Opts450558 +-Node: Sparc-Aligned-Data452815 +-Node: Sparc-Float453670 +-Node: Sparc-Directives453871 +-Node: TIC54X-Dependent455831 +-Node: TIC54X-Opts456557 +-Node: TIC54X-Block457600 +-Node: TIC54X-Env457960 +-Node: TIC54X-Constants458308 +-Node: TIC54X-Subsyms458710 +-Node: TIC54X-Locals460619 +-Node: TIC54X-Builtins461363 +-Node: TIC54X-Ext463834 +-Node: TIC54X-Directives464405 +-Node: TIC54X-Macros475307 +-Node: TIC54X-MMRegs477417 +-Node: Z80-Dependent477633 +-Node: Z80 Options478021 +-Node: Z80 Syntax479444 +-Node: Z80-Chars480116 +-Node: Z80-Regs480649 +-Node: Z80-Case481001 +-Node: Z80 Floating Point481446 +-Node: Z80 Directives481640 +-Node: Z80 Opcodes483265 +-Node: Z8000-Dependent484607 +-Node: Z8000 Options485568 +-Node: Z8000 Syntax485785 +-Node: Z8000-Chars486075 +-Node: Z8000-Regs486308 +-Node: Z8000-Addressing487098 +-Node: Z8000 Directives488215 +-Node: Z8000 Opcodes489824 +-Node: Vax-Dependent499766 +-Node: VAX-Opts500283 +-Node: VAX-float504018 +-Node: VAX-directives504650 +-Node: VAX-opcodes505511 +-Node: VAX-branch505900 +-Node: VAX-operands508407 +-Node: VAX-no509170 +-Node: V850-Dependent509407 +-Node: V850 Options509805 +-Node: V850 Syntax512194 +-Node: V850-Chars512434 +-Node: V850-Regs512599 +-Node: V850 Floating Point514167 +-Node: V850 Directives514373 +-Node: V850 Opcodes515516 +-Node: Xtensa-Dependent521408 +-Node: Xtensa Options522137 +-Node: Xtensa Syntax524908 +-Node: Xtensa Opcodes526797 +-Node: Xtensa Registers528591 +-Node: Xtensa Optimizations529224 +-Node: Density Instructions529676 +-Node: Xtensa Automatic Alignment530778 +-Node: Xtensa Relaxation533524 +-Node: Xtensa Branch Relaxation534432 +-Node: Xtensa Call Relaxation535804 +-Node: Xtensa Immediate Relaxation537590 +-Node: Xtensa Directives540164 +-Node: Schedule Directive541872 +-Node: Longcalls Directive542212 +-Node: Transform Directive542756 +-Node: Literal Directive543498 +-Node: Literal Position Directive545283 +-Node: Literal Prefix Directive546982 +-Node: Absolute Literals Directive549145 +-Node: Reporting Bugs550452 +-Node: Bug Criteria551176 +-Node: Bug Reporting551941 +-Node: Acknowledgements558574 +-Ref: Acknowledgements-Footnote-1563472 +-Node: GNU Free Documentation License563498 +-Node: Index583225 ++Node: Top912 ++Node: Overview1829 ++Node: Manual28321 ++Node: GNU Assembler29265 ++Node: Object Formats30436 ++Node: Command Line30888 ++Node: Input Files31975 ++Node: Object33956 ++Node: Errors34852 ++Node: Invoking36047 ++Node: a37996 ++Node: alternate39768 ++Node: D39940 ++Node: f40173 ++Node: I40681 ++Node: K41225 ++Node: L41528 ++Node: listing42365 ++Node: M43957 ++Node: MD48358 ++Node: o48784 ++Node: R49239 ++Node: statistics50269 ++Node: traditional-format50676 ++Node: v51149 ++Node: W51424 ++Node: Z52331 ++Node: Syntax52853 ++Node: Preprocessing53444 ++Node: Whitespace55007 ++Node: Comments55403 ++Node: Symbol Intro57556 ++Node: Statements58246 ++Node: Constants60162 ++Node: Characters60793 ++Node: Strings61295 ++Node: Chars63461 ++Node: Numbers64215 ++Node: Integers64755 ++Node: Bignums65411 ++Node: Flonums65767 ++Node: Sections67514 ++Node: Secs Background67892 ++Node: Ld Sections72931 ++Node: As Sections75315 ++Node: Sub-Sections76225 ++Node: bss79372 ++Node: Symbols80322 ++Node: Labels80970 ++Node: Setting Symbols81701 ++Node: Symbol Names82197 ++Node: Dot86562 ++Node: Symbol Attributes87009 ++Node: Symbol Value87746 ++Node: Symbol Type88791 ++Node: a.out Symbols89179 ++Node: Symbol Desc89441 ++Node: Symbol Other89736 ++Node: COFF Symbols89905 ++Node: SOM Symbols90578 ++Node: Expressions91020 ++Node: Empty Exprs91769 ++Node: Integer Exprs92116 ++Node: Arguments92511 ++Node: Operators93617 ++Node: Prefix Ops93952 ++Node: Infix Ops94280 ++Node: Pseudo Ops96670 ++Node: Abort101865 ++Node: ABORT102270 ++Node: Align102457 ++Node: Ascii104739 ++Node: Asciz105048 ++Node: Balign105293 ++Node: Byte107156 ++Node: Comm107394 ++Node: CFI directives108768 ++Node: LNS directives111120 ++Node: Data113197 ++Node: Def113524 ++Node: Desc113756 ++Node: Dim114256 ++Node: Double114513 ++Node: Eject114851 ++Node: Else115026 ++Node: Elseif115322 ++Node: End115612 ++Node: Endef115827 ++Node: Endfunc116004 ++Node: Endif116179 ++Node: Equ116440 ++Node: Equiv116949 ++Node: Eqv117505 ++Node: Err117869 ++Node: Error118180 ++Node: Exitm118625 ++Node: Extern118794 ++Node: Fail119055 ++Node: File119500 ++Node: Fill119977 ++Node: Float120941 ++Node: Func121283 ++Node: Global121873 ++Node: Hidden122623 ++Node: hword123202 ++Node: Ident123530 ++Node: If124104 ++Node: Incbin127163 ++Node: Include127858 ++Node: Int128409 ++Node: Internal128790 ++Node: Irp129438 ++Node: Irpc130335 ++Node: Lcomm131252 ++Node: Lflags132000 ++Node: Line132194 ++Node: Linkonce133113 ++Node: Ln134342 ++Node: MRI134503 ++Node: List134841 ++Node: Long135449 ++Node: Macro135635 ++Node: Altmacro140198 ++Node: Noaltmacro141528 ++Node: Nolist141696 ++Node: Octa142126 ++Node: Org142460 ++Node: P2align143743 ++Node: Previous145671 ++Node: PopSection146365 ++Node: Print146873 ++Node: Protected147102 ++Node: Psize147749 ++Node: Purgem148433 ++Node: PushSection148654 ++Node: Quad149211 ++Node: Rept149666 ++Node: Sbttl150079 ++Node: Scl150444 ++Node: Section150785 ++Node: Set155925 ++Node: Short156562 ++Node: Single156882 ++Node: Size157227 ++Node: Sleb128157899 ++Node: Skip158221 ++Node: Space158543 ++Node: Stab159182 ++Node: String161184 ++Node: Struct161610 ++Node: SubSection162333 ++Node: Symver162894 ++Node: Tag165285 ++Node: Text165665 ++Node: Title165984 ++Node: Type166363 ++Node: Uleb128167440 ++Node: Val167764 ++Node: Version168014 ++Node: VTableEntry168289 ++Node: VTableInherit168579 ++Node: Warning169025 ++Node: Weak169259 ++Node: Weakref169928 ++Node: Word170893 ++Node: Deprecated172739 ++Node: Machine Dependencies172974 ++Node: Alpha-Dependent175738 ++Node: Alpha Notes176152 ++Node: Alpha Options176433 ++Node: Alpha Syntax178631 ++Node: Alpha-Chars179100 ++Node: Alpha-Regs179331 ++Node: Alpha-Relocs179718 ++Node: Alpha Floating Point185976 ++Node: Alpha Directives186198 ++Node: Alpha Opcodes191721 ++Node: ARC-Dependent192016 ++Node: ARC Options192399 ++Node: ARC Syntax193468 ++Node: ARC-Chars193700 ++Node: ARC-Regs193832 ++Node: ARC Floating Point193956 ++Node: ARC Directives194267 ++Node: ARC Opcodes200238 ++Node: ARM-Dependent200464 ++Node: ARM Options200891 ++Node: ARM Syntax206685 ++Node: ARM-Chars206917 ++Node: ARM-Regs207441 ++Node: ARM Floating Point207626 ++Node: ARM Directives207825 ++Node: ARM Opcodes214189 ++Node: ARM Mapping Symbols216277 ++Node: BFIN-Dependent217056 ++Node: BFIN Syntax217310 ++Node: BFIN Directives223007 ++Node: CRIS-Dependent223414 ++Node: CRIS-Opts223760 ++Ref: march-option225378 ++Node: CRIS-Expand227195 ++Node: CRIS-Symbols228378 ++Node: CRIS-Syntax229547 ++Node: CRIS-Chars229883 ++Node: CRIS-Pic230434 ++Ref: crispic230630 ++Node: CRIS-Regs234170 ++Node: CRIS-Pseudos234587 ++Ref: crisnous235363 ++Node: D10V-Dependent236645 ++Node: D10V-Opts236996 ++Node: D10V-Syntax237959 ++Node: D10V-Size238488 ++Node: D10V-Subs239461 ++Node: D10V-Chars240496 ++Node: D10V-Regs242100 ++Node: D10V-Addressing243145 ++Node: D10V-Word243831 ++Node: D10V-Float244346 ++Node: D10V-Opcodes244657 ++Node: D30V-Dependent245050 ++Node: D30V-Opts245403 ++Node: D30V-Syntax246078 ++Node: D30V-Size246610 ++Node: D30V-Subs247581 ++Node: D30V-Chars248616 ++Node: D30V-Guarded250914 ++Node: D30V-Regs251594 ++Node: D30V-Addressing252733 ++Node: D30V-Float253401 ++Node: D30V-Opcodes253712 ++Node: H8/300-Dependent254105 ++Node: H8/300 Options254515 ++Node: H8/300 Syntax254724 ++Node: H8/300-Chars255023 ++Node: H8/300-Regs255320 ++Node: H8/300-Addressing256237 ++Node: H8/300 Floating Point257276 ++Node: H8/300 Directives257601 ++Node: H8/300 Opcodes258727 ++Node: HPPA-Dependent267047 ++Node: HPPA Notes267480 ++Node: HPPA Options268236 ++Node: HPPA Syntax268429 ++Node: HPPA Floating Point269697 ++Node: HPPA Directives269901 ++Node: HPPA Opcodes278585 ++Node: ESA/390-Dependent278842 ++Node: ESA/390 Notes279302 ++Node: ESA/390 Options280093 ++Node: ESA/390 Syntax280303 ++Node: ESA/390 Floating Point282476 ++Node: ESA/390 Directives282755 ++Node: ESA/390 Opcodes286044 ++Node: i386-Dependent286306 ++Node: i386-Options287374 ++Node: i386-Syntax288564 ++Node: i386-Mnemonics290978 ++Node: i386-Regs293443 ++Node: i386-Prefixes295488 ++Node: i386-Memory298248 ++Node: i386-Jumps301185 ++Node: i386-Float302306 ++Node: i386-SIMD304135 ++Node: i386-16bit305244 ++Node: i386-Bugs307282 ++Node: i386-Arch308036 ++Node: i386-Notes310217 ++Node: i860-Dependent311075 ++Node: Notes-i860311471 ++Node: Options-i860312376 ++Node: Directives-i860313739 ++Node: Opcodes for i860314808 ++Node: i960-Dependent316975 ++Node: Options-i960317378 ++Node: Floating Point-i960321262 ++Node: Directives-i960321530 ++Node: Opcodes for i960323564 ++Node: callj-i960324181 ++Node: Compare-and-branch-i960324670 ++Node: IA-64-Dependent326574 ++Node: IA-64 Options326875 ++Node: IA-64 Syntax330035 ++Node: IA-64-Chars330398 ++Node: IA-64-Regs330628 ++Node: IA-64-Bits331554 ++Node: IA-64 Opcodes332063 ++Node: IP2K-Dependent332335 ++Node: IP2K-Opts332563 ++Node: M32C-Dependent333043 ++Node: M32C-Opts333567 ++Node: M32C-Modifiers333851 ++Node: M32R-Dependent335638 ++Node: M32R-Opts335959 ++Node: M32R-Directives340125 ++Node: M32R-Warnings344100 ++Node: M68K-Dependent347106 ++Node: M68K-Opts347573 ++Node: M68K-Syntax354952 ++Node: M68K-Moto-Syntax356791 ++Node: M68K-Float359380 ++Node: M68K-Directives359900 ++Node: M68K-opcodes361226 ++Node: M68K-Branch361452 ++Node: M68K-Chars365650 ++Node: M68HC11-Dependent366063 ++Node: M68HC11-Opts366594 ++Node: M68HC11-Syntax370410 ++Node: M68HC11-Modifiers372624 ++Node: M68HC11-Directives374452 ++Node: M68HC11-Float375828 ++Node: M68HC11-opcodes376356 ++Node: M68HC11-Branch376538 ++Node: MIPS-Dependent378985 ++Node: MIPS Opts380075 ++Node: MIPS Object387402 ++Node: MIPS Stabs388968 ++Node: MIPS symbol sizes389690 ++Node: MIPS ISA391359 ++Node: MIPS autoextend392508 ++Node: MIPS insn393238 ++Node: MIPS option stack393735 ++Node: MIPS ASE instruction generation overrides394509 ++Node: MMIX-Dependent395726 ++Node: MMIX-Opts396106 ++Node: MMIX-Expand399710 ++Node: MMIX-Syntax401025 ++Ref: mmixsite401382 ++Node: MMIX-Chars402223 ++Node: MMIX-Symbols402877 ++Node: MMIX-Regs404945 ++Node: MMIX-Pseudos405970 ++Ref: MMIX-loc406111 ++Ref: MMIX-local407191 ++Ref: MMIX-is407723 ++Ref: MMIX-greg407994 ++Ref: GREG-base408913 ++Ref: MMIX-byte410230 ++Ref: MMIX-constants410701 ++Ref: MMIX-prefix411347 ++Ref: MMIX-spec411721 ++Node: MMIX-mmixal412055 ++Node: MSP430-Dependent415552 ++Node: MSP430 Options416018 ++Node: MSP430 Syntax416304 ++Node: MSP430-Macros416620 ++Node: MSP430-Chars417351 ++Node: MSP430-Regs417664 ++Node: MSP430-Ext418224 ++Node: MSP430 Floating Point420045 ++Node: MSP430 Directives420269 ++Node: MSP430 Opcodes421060 ++Node: MSP430 Profiling Capability421455 ++Node: PDP-11-Dependent423784 ++Node: PDP-11-Options424173 ++Node: PDP-11-Pseudos429244 ++Node: PDP-11-Syntax429589 ++Node: PDP-11-Mnemonics430340 ++Node: PDP-11-Synthetic430642 ++Node: PJ-Dependent430860 ++Node: PJ Options431085 ++Node: PPC-Dependent431362 ++Node: PowerPC-Opts431649 ++Node: PowerPC-Pseudo433724 ++Node: SH-Dependent434323 ++Node: SH Options434735 ++Node: SH Syntax435663 ++Node: SH-Chars435936 ++Node: SH-Regs436230 ++Node: SH-Addressing436844 ++Node: SH Floating Point437753 ++Node: SH Directives438847 ++Node: SH Opcodes439217 ++Node: SH64-Dependent443539 ++Node: SH64 Options443902 ++Node: SH64 Syntax445619 ++Node: SH64-Chars445902 ++Node: SH64-Regs446202 ++Node: SH64-Addressing447298 ++Node: SH64 Directives448481 ++Node: SH64 Opcodes449591 ++Node: Sparc-Dependent450307 ++Node: Sparc-Opts450692 ++Node: Sparc-Aligned-Data452949 ++Node: Sparc-Float453804 ++Node: Sparc-Directives454005 ++Node: TIC54X-Dependent455965 ++Node: TIC54X-Opts456691 ++Node: TIC54X-Block457734 ++Node: TIC54X-Env458094 ++Node: TIC54X-Constants458442 ++Node: TIC54X-Subsyms458844 ++Node: TIC54X-Locals460753 ++Node: TIC54X-Builtins461497 ++Node: TIC54X-Ext463968 ++Node: TIC54X-Directives464539 ++Node: TIC54X-Macros475441 ++Node: TIC54X-MMRegs477551 ++Node: Z80-Dependent477767 ++Node: Z80 Options478155 ++Node: Z80 Syntax479578 ++Node: Z80-Chars480250 ++Node: Z80-Regs480783 ++Node: Z80-Case481135 ++Node: Z80 Floating Point481580 ++Node: Z80 Directives481774 ++Node: Z80 Opcodes483399 ++Node: Z8000-Dependent484741 ++Node: Z8000 Options485702 ++Node: Z8000 Syntax485919 ++Node: Z8000-Chars486209 ++Node: Z8000-Regs486442 ++Node: Z8000-Addressing487232 ++Node: Z8000 Directives488349 ++Node: Z8000 Opcodes489958 ++Node: Vax-Dependent499900 ++Node: VAX-Opts500417 ++Node: VAX-float504152 ++Node: VAX-directives504784 ++Node: VAX-opcodes505645 ++Node: VAX-branch506034 ++Node: VAX-operands508541 ++Node: VAX-no509304 ++Node: V850-Dependent509541 ++Node: V850 Options509939 ++Node: V850 Syntax512328 ++Node: V850-Chars512568 ++Node: V850-Regs512733 ++Node: V850 Floating Point514301 ++Node: V850 Directives514507 ++Node: V850 Opcodes515650 ++Node: Xtensa-Dependent521542 ++Node: Xtensa Options522271 ++Node: Xtensa Syntax525042 ++Node: Xtensa Opcodes526931 ++Node: Xtensa Registers528725 ++Node: Xtensa Optimizations529358 ++Node: Density Instructions529810 ++Node: Xtensa Automatic Alignment530912 ++Node: Xtensa Relaxation533658 ++Node: Xtensa Branch Relaxation534566 ++Node: Xtensa Call Relaxation535938 ++Node: Xtensa Immediate Relaxation537724 ++Node: Xtensa Directives540298 ++Node: Schedule Directive542006 ++Node: Longcalls Directive542346 ++Node: Transform Directive542890 ++Node: Literal Directive543632 ++Node: Literal Position Directive545417 ++Node: Literal Prefix Directive547116 ++Node: Absolute Literals Directive549279 ++Node: Reporting Bugs550586 ++Node: Bug Criteria551310 ++Node: Bug Reporting552075 ++Node: Acknowledgements558708 ++Ref: Acknowledgements-Footnote-1563606 ++Node: GNU Free Documentation License563632 ++Node: Index583359 +  + End Tag Table +diff -Nrup binutils-2.17/gas/doc/as.texinfo binutils-2.17.atmel.1.3.0/gas/doc/as.texinfo +--- binutils-2.17/gas/doc/as.texinfo 2006-04-17 17:16:27.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/gas/doc/as.texinfo 2007-03-26 10:19:41.000000000 +0200 +@@ -6182,6 +6182,9 @@ subject, see the hardware manufacturer's + @ifset ARM + * ARM-Dependent:: ARM Dependent Features + @end ifset ++@ifset AVR32 ++* AVR32-Dependent:: AVR32 Dependent Features ++@end ifset + @ifset BFIN + * BFIN-Dependent:: BFIN Dependent Features + @end ifset +@@ -6298,6 +6301,10 @@ subject, see the hardware manufacturer's + @include c-arm.texi + @end ifset + ++@ifset AVR32 ++@include c-avr32.texi ++@end ifset ++ + @ifset BFIN + @include c-bfin.texi + @end ifset +diff -Nrup binutils-2.17/gas/doc/c-avr32.texi binutils-2.17.atmel.1.3.0/gas/doc/c-avr32.texi +--- binutils-2.17/gas/doc/c-avr32.texi 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/doc/c-avr32.texi 2007-09-28 10:30:46.000000000 +0200 +@@ -0,0 +1,254 @@ ++@c Copyright 2005, 2006 ++@c Atmel Corporation ++@c This is part of the GAS manual. ++@c For copying conditions, see the file as.texinfo. ++ ++@ifset GENERIC ++@page ++@node AVR32-Dependent ++@chapter AVR32 Dependent Features ++@end ifset ++ ++@ifclear GENERIC ++@node Machine Dependencies ++@chapter AVR32 Dependent Features ++@end ifclear ++ ++@cindex AVR32 support ++@menu ++* AVR32 Options:: Options ++* AVR32 Syntax:: Syntax ++* AVR32 Directives:: Directives ++* AVR32 Opcodes:: Opcodes ++@end menu ++ ++@node AVR32 Options ++@section Options ++@cindex AVR32 options ++@cindex options for AVR32 ++ ++There are currently no AVR32-specific options. However, the following ++options are planned: ++ ++@table @code ++ ++@cindex @code{--pic} command line option, AVR32 ++@cindex PIC code generation for AVR32 ++@item --pic ++This option specifies that the output of the assembler should be marked ++as position-independent code (PIC). It will also ensure that ++pseudo-instructions that deal with address calculation are output as ++PIC, and that all absolute address references in the code are marked as ++such. ++ ++@cindex @code{--linkrelax} command line option, AVR32 ++@item --linkrelax ++This option specifies that the output of the assembler should be marked ++as linker-relaxable. It will also ensure that all PC-relative operands ++that may change during linker relaxation get appropriate relocations. ++ ++@cindex @code{--direct-data-refs} command line option, AVR32 ++@item --direct-data-refs ++This option allows direct references (i.e. mov or sub) to the ++data section. This is default not allowed because the actual distance may ++change after the optimization passes are complete and the address and ++size of all sections are considered known. ++ ++@end table ++ ++ ++@node AVR32 Syntax ++@section Syntax ++@menu ++* AVR32-Chars:: Special Characters ++* AVR32-Symrefs:: Symbol references ++@end menu ++ ++@node AVR32-Chars ++@subsection Special Characters ++ ++@cindex line comment character, AVR32 ++@cindex AVR32 line comment character ++The presence of a @samp{//} on a line indicates the start of a comment ++that extends to the end of the current line. If a @samp{#} appears as ++the first character of a line, the whole line is treated as a comment. ++ ++@cindex line separator, AVR32 ++@cindex statement separator, AVR32 ++@cindex AVR32 line separator ++The @samp{;} character can be used instead of a newline to separate ++statements. ++ ++@node AVR32-Symrefs ++@subsection Symbol references ++ ++The absolute value of a symbol can be obtained by simply naming the ++symbol. However, as AVR32 symbols have 32-bit values, most symbols have ++values that are outside the range of any instructions. ++ ++Instructions that take a PC-relative offset, e.g. @code{lddpc} or ++@code{rcall}, can also reference a symbol by simply naming the symbol ++(no explicit calculations necessary). In this case, the assembler or ++linker subtracts the address of the instruction from the symbol's value ++and inserts the result into the instruction. Note that even though an ++overflow is less likely to happen for a relative reference than for an ++absolute reference, the assembler or linker will generate an error if ++the referenced symbol is too far away from the current location. ++ ++Relative references can be used for data as well. For example: ++ ++@smallexample ++ lddpc r0, 2f ++1: add r0, pc ++ ... ++ .align 2 ++2: .int @var{some_symbol} - 1b ++@end smallexample ++ ++Here, r0 will end up with the run-time address of @var{some_symbol} even ++if the program was loaded at a different address than it was linked ++(position-independent code). ++ ++@subsubsection Symbol modifiers ++ ++@table @code ++ ++@item @code{hi(@var{symbol})} ++Evaluates to the value of the symbol shifted right 16 bits. This will ++work even if @var{symbol} is defined in a different module. ++ ++@item @code{lo(@var{symbol})} ++Evaluates to the low 16 bits of the symbol's value. This will work even ++if @var{symbol} is defined in a different module. ++ ++@item @code{@var{symbol}@@got} ++Create a GOT entry for @var{symbol} and return the offset of that entry ++relative to the GOT base. ++ ++@end table ++ ++ ++@node AVR32 Directives ++@section Directives ++@cindex machine directives, AVR32 ++@cindex AVR32 directives ++ ++@table @code ++ ++@cindex @code{.cpool} directive, AVR32 ++@item .cpool ++This directive causes the current contents of the constant pool to be ++dumped into the current section at the current location (aligned to a ++word boundary). @code{GAS} maintains a separate constant pool for each ++section and each sub-section. The @code{.cpool} directive will only ++affect the constant pool of the current section and sub-section. At the ++end of assembly, all remaining, non-empty constant pools will ++automatically be dumped. ++ ++@end table ++ ++ ++@node AVR32 Opcodes ++@section Opcodes ++@cindex AVR32 opcodes ++@cindex opcodes for AVR32 ++ ++@code{@value{AS}} implements all the standard AVR32 opcodes. It also ++implements several pseudo-opcodes, which are recommended to use wherever ++possible because they give the tool chain better freedom to generate ++optimal code. ++ ++@table @code ++ ++@cindex @code{LDA.W reg, symbol} pseudo op, AVR32 ++@item LDA.W ++@smallexample ++ lda.w @var{reg}, @var{symbol} ++@end smallexample ++ ++This instruction will load the address of @var{symbol} into ++@var{reg}. The instruction will evaluate to one of the following, ++depending on the relative distance to the symbol, the relative distance ++to the constant pool and whether the @code{--pic} option has been ++specified. If the @code{--pic} option has not been specified, the ++alternatives are as follows: ++@smallexample ++ /* @var{symbol} evaluates to a small enough value */ ++ mov @var{reg}, @var{symbol} ++ ++ /* (. - @var{symbol}) evaluates to a small enough value */ ++ sub @var{reg}, pc, . - @var{symbol} ++ ++ /* Constant pool is close enough */ ++ lddpc @var{reg}, @var{cpent} ++ ... ++@var{cpent}: ++ .long @var{symbol} ++ ++ /* Otherwise (not implemented yet, probably not necessary) */ ++ mov @var{reg}, lo(@var{symbol}) ++ orh @var{reg}, hi(@var{symbol}) ++@end smallexample ++ ++If the @code{--pic} option has been specified, the alternatives are as ++follows: ++@smallexample ++ /* (. - @var{symbol}) evaluates to a small enough value */ ++ sub @var{reg}, pc, . - @var{symbol} ++ ++ /* If @code{--linkrelax} not specified */ ++ ld.w @var{reg}, r6[@var{symbol}@@got] ++ ++ /* Otherwise */ ++ mov @var{reg}, @var{symbol}@@got / 4 ++ ld.w @var{reg}, r6[@var{reg} << 2] ++@end smallexample ++ ++If @var{symbol} is not defined in the same file and section as the ++@code{LDA.W} instruction, the most pessimistic alternative of the ++above is selected. The linker may convert it back into the most ++optimal alternative when the final value of all symbols is known. ++ ++@cindex @code{CALL symbol} pseudo op, AVR32 ++@item CALL ++@smallexample ++ call @var{symbol} ++@end smallexample ++ ++This instruction will insert code to call the subroutine identified by ++@var{symbol}. It will evaluate to one of the following, depending on ++the relative distance to the symbol as well as the @code{--linkrelax} ++and @code{--pic} command-line options. ++ ++If @var{symbol} is defined in the same section and input file, and the ++distance is small enough, an @code{rcall} instruction is inserted: ++@smallexample ++ rcall @var{symbol} ++@end smallexample ++ ++Otherwise, if the @code{--pic} option has not been specified: ++@smallexample ++ mcall @var{cpent} ++ ... ++@var{cpent}: ++ .long @var{symbol} ++@end smallexample ++ ++Finally, if nothing else fits and the @code{--pic} option has been ++specified, the assembler will indirect the call through the Global ++Offset Table: ++@smallexample ++ /* If @code{--linkrelax} not specified */ ++ mcall r6[@var{symbol}@@got] ++ ++ /* If @code{--linkrelax} specified */ ++ mov lr, @var{symbol}@@got / 4 ++ ld.w lr, r6[lr << 2] ++ icall lr ++@end smallexample ++ ++The linker, after determining the final value of @var{symbol}, may ++convert any of these into more optimal alternatives. This includes ++deleting any superfluous constant pool- and GOT-entries. ++ ++@end table +diff -Nrup binutils-2.17/gas/doc/Makefile.am binutils-2.17.atmel.1.3.0/gas/doc/Makefile.am +--- binutils-2.17/gas/doc/Makefile.am 2006-06-03 06:45:50.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/gas/doc/Makefile.am 2007-03-26 10:19:41.000000000 +0200 +@@ -29,6 +29,7 @@ CPU_DOCS = \ + c-alpha.texi \ + c-arc.texi \ + c-arm.texi \ ++ c-avr32.texi \ + c-bfin.texi \ + c-d10v.texi \ + c-cris.texi \ +diff -Nrup binutils-2.17/gas/Makefile.am binutils-2.17.atmel.1.3.0/gas/Makefile.am +--- binutils-2.17/gas/Makefile.am 2006-04-06 23:49:30.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/gas/Makefile.am 2007-03-26 10:20:16.000000000 +0200 +@@ -45,6 +45,7 @@ CPU_TYPES = \ + arc \ + arm \ + avr \ ++ avr32 \ + bfin \ + cris \ + crx \ +@@ -229,6 +230,7 @@ TARGET_CPU_CFILES = \ + config/tc-arc.c \ + config/tc-arm.c \ + config/tc-avr.c \ ++ config/tc-avr32.c \ + config/tc-bfin.c \ + config/tc-cris.c \ + config/tc-crx.c \ +@@ -280,6 +282,7 @@ TARGET_CPU_HFILES = \ + config/tc-arc.h \ + config/tc-arm.h \ + config/tc-avr.h \ ++ config/tc-avr32.h \ + config/tc-bfin.h \ + config/tc-cris.h \ + config/tc-crx.h \ +@@ -1046,6 +1049,11 @@ DEPTC_avr_elf = $(INCDIR)/symcat.h $(src + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h \ + dwarf2dbg.h $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/opcode/avr.h ++DEPTC_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ ++ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ ++ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \ ++ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ ++ $(srcdir)/../opcodes/avr32-opc.h $(srcdir)/../opcodes/avr32-asm.h + DEPTC_bfin_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-bfin.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h struc-symbol.h \ +@@ -1628,6 +1636,11 @@ DEPOBJ_bfin_elf = $(INCDIR)/symcat.h $(s + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h \ + dwarf2dbg.h $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + struc-symbol.h $(INCDIR)/aout/aout64.h ++DEPOBJ_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ ++ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ ++ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \ ++ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ ++ struc-symbol.h dwarf2dbg.h + DEPOBJ_cris_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ + $(srcdir)/config/tc-cris.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h +@@ -2095,6 +2108,9 @@ DEP_bfin_elf = $(srcdir)/config/obj-elf. + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h \ + dwarf2dbg.h ++DEP_avr32_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ ++ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ ++ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h + DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \ + $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h + DEP_cris_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/aliases.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/aliases.d +--- binutils-2.17/gas/testsuite/gas/avr32/aliases.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/aliases.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,19 @@ ++#as: ++#objdump: -dr ++#name: aliases ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: 19 80 [ \t]+ld\.ub r0,r12\[0x0\] ++ 2: f9 20 00 00[ \t]+ld\.sb r0,r12\[0\] ++ 6: 98 80 [ \t]+ld\.uh r0,r12\[0x0\] ++ 8: 98 00 [ \t]+ld\.sh r0,r12\[0x0\] ++ a: 78 00 [ \t]+ld\.w r0,r12\[0x0\] ++ ++0000000c : ++ c: b8 80 [ \t]+st\.b r12\[0x0\],r0 ++ e: b8 00 [ \t]+st\.h r12\[0x0\],r0 ++ 10: 99 00 [ \t]+st\.w r12\[0x0\],r0 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/aliases.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/aliases.s +--- binutils-2.17/gas/testsuite/gas/avr32/aliases.s 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/aliases.s 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,14 @@ ++ .text ++ .global ld_nodisp ++ld_nodisp: ++ ld.ub r0, r12 ++ ld.sb r0, r12 ++ ld.uh r0, r12 ++ ld.sh r0, r12 ++ ld.w r0, r12 ++ ++ .global st_nodisp ++st_nodisp: ++ st.b r12, r0 ++ st.h r12, r0 ++ st.w r12, r0 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/allinsn.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/allinsn.d +--- binutils-2.17/gas/testsuite/gas/avr32/allinsn.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/allinsn.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,2900 @@ ++#as: ++#objdump: -dr ++#name: allinsn ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 02 3e ld\.d lr,pc\[pc<<0x3\] ++ *[0-9a-f]*: e0 00 02 00 ld\.d r0,r0\[r0\] ++ *[0-9a-f]*: ea 05 02 26 ld\.d r6,r5\[r5<<0x2\] ++ *[0-9a-f]*: e8 04 02 14 ld\.d r4,r4\[r4<<0x1\] ++ *[0-9a-f]*: fc 0e 02 1e ld\.d lr,lr\[lr<<0x1\] ++ *[0-9a-f]*: e6 0d 02 2a ld\.d r10,r3\[sp<<0x2\] ++ *[0-9a-f]*: f4 06 02 28 ld\.d r8,r10\[r6<<0x2\] ++ *[0-9a-f]*: ee 09 02 02 ld\.d r2,r7\[r9\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 03 0f ld\.w pc,pc\[pc\] ++ *[0-9a-f]*: f8 0c 03 3c ld\.w r12,r12\[r12<<0x3\] ++ *[0-9a-f]*: ea 05 03 25 ld\.w r5,r5\[r5<<0x2\] ++ *[0-9a-f]*: e8 04 03 14 ld\.w r4,r4\[r4<<0x1\] ++ *[0-9a-f]*: fc 0e 03 1e ld\.w lr,lr\[lr<<0x1\] ++ *[0-9a-f]*: f2 09 03 02 ld\.w r2,r9\[r9\] ++ *[0-9a-f]*: e4 06 03 0b ld\.w r11,r2\[r6\] ++ *[0-9a-f]*: e4 0d 03 30 ld\.w r0,r2\[sp<<0x3\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 04 0f ld\.sh pc,pc\[pc\] ++ *[0-9a-f]*: f8 0c 04 3c ld\.sh r12,r12\[r12<<0x3\] ++ *[0-9a-f]*: ea 05 04 25 ld\.sh r5,r5\[r5<<0x2\] ++ *[0-9a-f]*: e8 04 04 14 ld\.sh r4,r4\[r4<<0x1\] ++ *[0-9a-f]*: fc 0e 04 1e ld\.sh lr,lr\[lr<<0x1\] ++ *[0-9a-f]*: e0 0f 04 2b ld\.sh r11,r0\[pc<<0x2\] ++ *[0-9a-f]*: fa 06 04 2a ld\.sh r10,sp\[r6<<0x2\] ++ *[0-9a-f]*: e4 02 04 0c ld\.sh r12,r2\[r2\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 05 0f ld\.uh pc,pc\[pc\] ++ *[0-9a-f]*: f8 0c 05 3c ld\.uh r12,r12\[r12<<0x3\] ++ *[0-9a-f]*: ea 05 05 25 ld\.uh r5,r5\[r5<<0x2\] ++ *[0-9a-f]*: e8 04 05 14 ld\.uh r4,r4\[r4<<0x1\] ++ *[0-9a-f]*: fc 0e 05 1e ld\.uh lr,lr\[lr<<0x1\] ++ *[0-9a-f]*: fe 0e 05 38 ld\.uh r8,pc\[lr<<0x3\] ++ *[0-9a-f]*: e2 0f 05 16 ld\.uh r6,r1\[pc<<0x1\] ++ *[0-9a-f]*: fc 0d 05 16 ld\.uh r6,lr\[sp<<0x1\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 06 0f ld\.sb pc,pc\[pc\] ++ *[0-9a-f]*: f8 0c 06 3c ld\.sb r12,r12\[r12<<0x3\] ++ *[0-9a-f]*: ea 05 06 25 ld\.sb r5,r5\[r5<<0x2\] ++ *[0-9a-f]*: e8 04 06 14 ld\.sb r4,r4\[r4<<0x1\] ++ *[0-9a-f]*: fc 0e 06 1e ld\.sb lr,lr\[lr<<0x1\] ++ *[0-9a-f]*: e2 0f 06 39 ld\.sb r9,r1\[pc<<0x3\] ++ *[0-9a-f]*: e6 0b 06 10 ld\.sb r0,r3\[r11<<0x1\] ++ *[0-9a-f]*: ea 05 06 1a ld\.sb r10,r5\[r5<<0x1\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 07 0f ld\.ub pc,pc\[pc\] ++ *[0-9a-f]*: f8 0c 07 3c ld\.ub r12,r12\[r12<<0x3\] ++ *[0-9a-f]*: ea 05 07 25 ld\.ub r5,r5\[r5<<0x2\] ++ *[0-9a-f]*: e8 04 07 14 ld\.ub r4,r4\[r4<<0x1\] ++ *[0-9a-f]*: fc 0e 07 1e ld\.ub lr,lr\[lr<<0x1\] ++ *[0-9a-f]*: f8 07 07 36 ld\.ub r6,r12\[r7<<0x3\] ++ *[0-9a-f]*: ec 0c 07 02 ld\.ub r2,r6\[r12\] ++ *[0-9a-f]*: ee 0b 07 10 ld\.ub r0,r7\[r11<<0x1\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 08 0e st\.d pc\[pc\],lr ++ *[0-9a-f]*: f8 0c 08 3c st\.d r12\[r12<<0x3\],r12 ++ *[0-9a-f]*: ea 05 08 26 st\.d r5\[r5<<0x2\],r6 ++ *[0-9a-f]*: e8 04 08 14 st\.d r4\[r4<<0x1\],r4 ++ *[0-9a-f]*: fc 0e 08 1e st\.d lr\[lr<<0x1\],lr ++ *[0-9a-f]*: e2 09 08 14 st\.d r1\[r9<<0x1\],r4 ++ *[0-9a-f]*: f4 02 08 14 st\.d r10\[r2<<0x1\],r4 ++ *[0-9a-f]*: f8 06 08 0e st\.d r12\[r6\],lr ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 09 0f st\.w pc\[pc\],pc ++ *[0-9a-f]*: f8 0c 09 3c st\.w r12\[r12<<0x3\],r12 ++ *[0-9a-f]*: ea 05 09 25 st\.w r5\[r5<<0x2\],r5 ++ *[0-9a-f]*: e8 04 09 14 st\.w r4\[r4<<0x1\],r4 ++ *[0-9a-f]*: fc 0e 09 1e st\.w lr\[lr<<0x1\],lr ++ *[0-9a-f]*: e2 0a 09 03 st\.w r1\[r10\],r3 ++ *[0-9a-f]*: e0 0a 09 19 st\.w r0\[r10<<0x1\],r9 ++ *[0-9a-f]*: e8 05 09 3f st\.w r4\[r5<<0x3\],pc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0a 0f st\.h pc\[pc\],pc ++ *[0-9a-f]*: f8 0c 0a 3c st\.h r12\[r12<<0x3\],r12 ++ *[0-9a-f]*: ea 05 0a 25 st\.h r5\[r5<<0x2\],r5 ++ *[0-9a-f]*: e8 04 0a 14 st\.h r4\[r4<<0x1\],r4 ++ *[0-9a-f]*: fc 0e 0a 1e st\.h lr\[lr<<0x1\],lr ++ *[0-9a-f]*: e4 09 0a 0b st\.h r2\[r9\],r11 ++ *[0-9a-f]*: ea 01 0a 2c st\.h r5\[r1<<0x2\],r12 ++ *[0-9a-f]*: fe 08 0a 23 st\.h pc\[r8<<0x2\],r3 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0b 0f st\.b pc\[pc\],pc ++ *[0-9a-f]*: f8 0c 0b 3c st\.b r12\[r12<<0x3\],r12 ++ *[0-9a-f]*: ea 05 0b 25 st\.b r5\[r5<<0x2\],r5 ++ *[0-9a-f]*: e8 04 0b 14 st\.b r4\[r4<<0x1\],r4 ++ *[0-9a-f]*: fc 0e 0b 1e st\.b lr\[lr<<0x1\],lr ++ *[0-9a-f]*: e2 08 0b 16 st\.b r1\[r8<<0x1\],r6 ++ *[0-9a-f]*: fc 0e 0b 31 st\.b lr\[lr<<0x3\],r1 ++ *[0-9a-f]*: ea 00 0b 2f st\.b r5\[r0<<0x2\],pc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0c 0f divs pc,pc,pc ++ *[0-9a-f]*: f8 0c 0c 0c divs r12,r12,r12 ++ *[0-9a-f]*: ea 05 0c 05 divs r5,r5,r5 ++ *[0-9a-f]*: e8 04 0c 04 divs r4,r4,r4 ++ *[0-9a-f]*: fc 0e 0c 0e divs lr,lr,lr ++ *[0-9a-f]*: fe 0f 0c 03 divs r3,pc,pc ++ *[0-9a-f]*: f8 02 0c 09 divs r9,r12,r2 ++ *[0-9a-f]*: e8 01 0c 07 divs r7,r4,r1 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e 0f add pc,pc ++ *[0-9a-f]*: 18 0c add r12,r12 ++ *[0-9a-f]*: 0a 05 add r5,r5 ++ *[0-9a-f]*: 08 04 add r4,r4 ++ *[0-9a-f]*: 1c 0e add lr,lr ++ *[0-9a-f]*: 12 0c add r12,r9 ++ *[0-9a-f]*: 06 06 add r6,r3 ++ *[0-9a-f]*: 18 0a add r10,r12 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e 1f sub pc,pc ++ *[0-9a-f]*: 18 1c sub r12,r12 ++ *[0-9a-f]*: 0a 15 sub r5,r5 ++ *[0-9a-f]*: 08 14 sub r4,r4 ++ *[0-9a-f]*: 1c 1e sub lr,lr ++ *[0-9a-f]*: 0c 1e sub lr,r6 ++ *[0-9a-f]*: 1a 10 sub r0,sp ++ *[0-9a-f]*: 18 16 sub r6,r12 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e 2f rsub pc,pc ++ *[0-9a-f]*: 18 2c rsub r12,r12 ++ *[0-9a-f]*: 0a 25 rsub r5,r5 ++ *[0-9a-f]*: 08 24 rsub r4,r4 ++ *[0-9a-f]*: 1c 2e rsub lr,lr ++ *[0-9a-f]*: 1a 2b rsub r11,sp ++ *[0-9a-f]*: 08 27 rsub r7,r4 ++ *[0-9a-f]*: 02 29 rsub r9,r1 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e 3f cp\.w pc,pc ++ *[0-9a-f]*: 18 3c cp\.w r12,r12 ++ *[0-9a-f]*: 0a 35 cp\.w r5,r5 ++ *[0-9a-f]*: 08 34 cp\.w r4,r4 ++ *[0-9a-f]*: 1c 3e cp\.w lr,lr ++ *[0-9a-f]*: 04 36 cp\.w r6,r2 ++ *[0-9a-f]*: 12 30 cp\.w r0,r9 ++ *[0-9a-f]*: 1a 33 cp\.w r3,sp ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e 4f or pc,pc ++ *[0-9a-f]*: 18 4c or r12,r12 ++ *[0-9a-f]*: 0a 45 or r5,r5 ++ *[0-9a-f]*: 08 44 or r4,r4 ++ *[0-9a-f]*: 1c 4e or lr,lr ++ *[0-9a-f]*: 12 44 or r4,r9 ++ *[0-9a-f]*: 08 4b or r11,r4 ++ *[0-9a-f]*: 00 44 or r4,r0 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e 5f eor pc,pc ++ *[0-9a-f]*: 18 5c eor r12,r12 ++ *[0-9a-f]*: 0a 55 eor r5,r5 ++ *[0-9a-f]*: 08 54 eor r4,r4 ++ *[0-9a-f]*: 1c 5e eor lr,lr ++ *[0-9a-f]*: 16 5c eor r12,r11 ++ *[0-9a-f]*: 02 50 eor r0,r1 ++ *[0-9a-f]*: 1e 55 eor r5,pc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e 6f and pc,pc ++ *[0-9a-f]*: 18 6c and r12,r12 ++ *[0-9a-f]*: 0a 65 and r5,r5 ++ *[0-9a-f]*: 08 64 and r4,r4 ++ *[0-9a-f]*: 1c 6e and lr,lr ++ *[0-9a-f]*: 02 68 and r8,r1 ++ *[0-9a-f]*: 1a 60 and r0,sp ++ *[0-9a-f]*: 0a 6a and r10,r5 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e 7f tst pc,pc ++ *[0-9a-f]*: 18 7c tst r12,r12 ++ *[0-9a-f]*: 0a 75 tst r5,r5 ++ *[0-9a-f]*: 08 74 tst r4,r4 ++ *[0-9a-f]*: 1c 7e tst lr,lr ++ *[0-9a-f]*: 18 70 tst r0,r12 ++ *[0-9a-f]*: 0c 7a tst r10,r6 ++ *[0-9a-f]*: 08 7d tst sp,r4 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e 8f andn pc,pc ++ *[0-9a-f]*: 18 8c andn r12,r12 ++ *[0-9a-f]*: 0a 85 andn r5,r5 ++ *[0-9a-f]*: 08 84 andn r4,r4 ++ *[0-9a-f]*: 1c 8e andn lr,lr ++ *[0-9a-f]*: 18 89 andn r9,r12 ++ *[0-9a-f]*: 1a 8b andn r11,sp ++ *[0-9a-f]*: 0a 8c andn r12,r5 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e 9f mov pc,pc ++ *[0-9a-f]*: 18 9c mov r12,r12 ++ *[0-9a-f]*: 0a 95 mov r5,r5 ++ *[0-9a-f]*: 08 94 mov r4,r4 ++ *[0-9a-f]*: 1c 9e mov lr,lr ++ *[0-9a-f]*: 12 95 mov r5,r9 ++ *[0-9a-f]*: 16 9b mov r11,r11 ++ *[0-9a-f]*: 1c 92 mov r2,lr ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e af st\.w pc\+\+,pc ++ *[0-9a-f]*: 18 ac st\.w r12\+\+,r12 ++ *[0-9a-f]*: 0a a5 st\.w r5\+\+,r5 ++ *[0-9a-f]*: 08 a4 st\.w r4\+\+,r4 ++ *[0-9a-f]*: 1c ae st\.w lr\+\+,lr ++ *[0-9a-f]*: 02 ab st\.w r1\+\+,r11 ++ *[0-9a-f]*: 1a a0 st\.w sp\+\+,r0 ++ *[0-9a-f]*: 1a a1 st\.w sp\+\+,r1 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e bf st\.h pc\+\+,pc ++ *[0-9a-f]*: 18 bc st\.h r12\+\+,r12 ++ *[0-9a-f]*: 0a b5 st\.h r5\+\+,r5 ++ *[0-9a-f]*: 08 b4 st\.h r4\+\+,r4 ++ *[0-9a-f]*: 1c be st\.h lr\+\+,lr ++ *[0-9a-f]*: 18 bd st\.h r12\+\+,sp ++ *[0-9a-f]*: 0e be st\.h r7\+\+,lr ++ *[0-9a-f]*: 0e b4 st\.h r7\+\+,r4 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e cf st\.b pc\+\+,pc ++ *[0-9a-f]*: 18 cc st\.b r12\+\+,r12 ++ *[0-9a-f]*: 0a c5 st\.b r5\+\+,r5 ++ *[0-9a-f]*: 08 c4 st\.b r4\+\+,r4 ++ *[0-9a-f]*: 1c ce st\.b lr\+\+,lr ++ *[0-9a-f]*: 12 cd st\.b r9\+\+,sp ++ *[0-9a-f]*: 02 cd st\.b r1\+\+,sp ++ *[0-9a-f]*: 00 c4 st\.b r0\+\+,r4 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e df st\.w --pc,pc ++ *[0-9a-f]*: 18 dc st\.w --r12,r12 ++ *[0-9a-f]*: 0a d5 st\.w --r5,r5 ++ *[0-9a-f]*: 08 d4 st\.w --r4,r4 ++ *[0-9a-f]*: 1c de st\.w --lr,lr ++ *[0-9a-f]*: 02 d7 st\.w --r1,r7 ++ *[0-9a-f]*: 06 d9 st\.w --r3,r9 ++ *[0-9a-f]*: 0a d5 st\.w --r5,r5 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e ef st\.h --pc,pc ++ *[0-9a-f]*: 18 ec st\.h --r12,r12 ++ *[0-9a-f]*: 0a e5 st\.h --r5,r5 ++ *[0-9a-f]*: 08 e4 st\.h --r4,r4 ++ *[0-9a-f]*: 1c ee st\.h --lr,lr ++ *[0-9a-f]*: 0a e7 st\.h --r5,r7 ++ *[0-9a-f]*: 10 e8 st\.h --r8,r8 ++ *[0-9a-f]*: 0e e2 st\.h --r7,r2 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1e ff st\.b --pc,pc ++ *[0-9a-f]*: 18 fc st\.b --r12,r12 ++ *[0-9a-f]*: 0a f5 st\.b --r5,r5 ++ *[0-9a-f]*: 08 f4 st\.b --r4,r4 ++ *[0-9a-f]*: 1c fe st\.b --lr,lr ++ *[0-9a-f]*: 1a fd st\.b --sp,sp ++ *[0-9a-f]*: 1a fb st\.b --sp,r11 ++ *[0-9a-f]*: 08 f5 st\.b --r4,r5 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1f 0f ld\.w pc,pc\+\+ ++ *[0-9a-f]*: 19 0c ld\.w r12,r12\+\+ ++ *[0-9a-f]*: 0b 05 ld\.w r5,r5\+\+ ++ *[0-9a-f]*: 09 04 ld\.w r4,r4\+\+ ++ *[0-9a-f]*: 1d 0e ld\.w lr,lr\+\+ ++ *[0-9a-f]*: 0f 03 ld\.w r3,r7\+\+ ++ *[0-9a-f]*: 1d 03 ld\.w r3,lr\+\+ ++ *[0-9a-f]*: 0b 0c ld\.w r12,r5\+\+ ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1f 1f ld\.sh pc,pc\+\+ ++ *[0-9a-f]*: 19 1c ld\.sh r12,r12\+\+ ++ *[0-9a-f]*: 0b 15 ld\.sh r5,r5\+\+ ++ *[0-9a-f]*: 09 14 ld\.sh r4,r4\+\+ ++ *[0-9a-f]*: 1d 1e ld\.sh lr,lr\+\+ ++ *[0-9a-f]*: 05 1b ld\.sh r11,r2\+\+ ++ *[0-9a-f]*: 11 12 ld\.sh r2,r8\+\+ ++ *[0-9a-f]*: 0d 17 ld\.sh r7,r6\+\+ ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1f 2f ld\.uh pc,pc\+\+ ++ *[0-9a-f]*: 19 2c ld\.uh r12,r12\+\+ ++ *[0-9a-f]*: 0b 25 ld\.uh r5,r5\+\+ ++ *[0-9a-f]*: 09 24 ld\.uh r4,r4\+\+ ++ *[0-9a-f]*: 1d 2e ld\.uh lr,lr\+\+ ++ *[0-9a-f]*: 0f 26 ld\.uh r6,r7\+\+ ++ *[0-9a-f]*: 17 2a ld\.uh r10,r11\+\+ ++ *[0-9a-f]*: 09 2e ld\.uh lr,r4\+\+ ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1f 3f ld\.ub pc,pc\+\+ ++ *[0-9a-f]*: 19 3c ld\.ub r12,r12\+\+ ++ *[0-9a-f]*: 0b 35 ld\.ub r5,r5\+\+ ++ *[0-9a-f]*: 09 34 ld\.ub r4,r4\+\+ ++ *[0-9a-f]*: 1d 3e ld\.ub lr,lr\+\+ ++ *[0-9a-f]*: 1d 38 ld\.ub r8,lr\+\+ ++ *[0-9a-f]*: 19 3c ld\.ub r12,r12\+\+ ++ *[0-9a-f]*: 15 3b ld\.ub r11,r10\+\+ ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1f 4f ld\.w pc,--pc ++ *[0-9a-f]*: 19 4c ld\.w r12,--r12 ++ *[0-9a-f]*: 0b 45 ld\.w r5,--r5 ++ *[0-9a-f]*: 09 44 ld\.w r4,--r4 ++ *[0-9a-f]*: 1d 4e ld\.w lr,--lr ++ *[0-9a-f]*: 1d 4a ld\.w r10,--lr ++ *[0-9a-f]*: 13 4c ld\.w r12,--r9 ++ *[0-9a-f]*: 0b 46 ld\.w r6,--r5 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1f 5f ld\.sh pc,--pc ++ *[0-9a-f]*: 19 5c ld\.sh r12,--r12 ++ *[0-9a-f]*: 0b 55 ld\.sh r5,--r5 ++ *[0-9a-f]*: 09 54 ld\.sh r4,--r4 ++ *[0-9a-f]*: 1d 5e ld\.sh lr,--lr ++ *[0-9a-f]*: 15 5f ld\.sh pc,--r10 ++ *[0-9a-f]*: 07 56 ld\.sh r6,--r3 ++ *[0-9a-f]*: 0d 54 ld\.sh r4,--r6 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1f 6f ld\.uh pc,--pc ++ *[0-9a-f]*: 19 6c ld\.uh r12,--r12 ++ *[0-9a-f]*: 0b 65 ld\.uh r5,--r5 ++ *[0-9a-f]*: 09 64 ld\.uh r4,--r4 ++ *[0-9a-f]*: 1d 6e ld\.uh lr,--lr ++ *[0-9a-f]*: 05 63 ld\.uh r3,--r2 ++ *[0-9a-f]*: 01 61 ld\.uh r1,--r0 ++ *[0-9a-f]*: 13 62 ld\.uh r2,--r9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1f 7f ld\.ub pc,--pc ++ *[0-9a-f]*: 19 7c ld\.ub r12,--r12 ++ *[0-9a-f]*: 0b 75 ld\.ub r5,--r5 ++ *[0-9a-f]*: 09 74 ld\.ub r4,--r4 ++ *[0-9a-f]*: 1d 7e ld\.ub lr,--lr ++ *[0-9a-f]*: 03 71 ld\.ub r1,--r1 ++ *[0-9a-f]*: 0d 70 ld\.ub r0,--r6 ++ *[0-9a-f]*: 0f 72 ld\.ub r2,--r7 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1f 8f ld\.ub pc,pc\[0x0\] ++ *[0-9a-f]*: 19 fc ld\.ub r12,r12\[0x7\] ++ *[0-9a-f]*: 0b c5 ld\.ub r5,r5\[0x4\] ++ *[0-9a-f]*: 09 b4 ld\.ub r4,r4\[0x3\] ++ *[0-9a-f]*: 1d 9e ld\.ub lr,lr\[0x1\] ++ *[0-9a-f]*: 13 e6 ld\.ub r6,r9\[0x6\] ++ *[0-9a-f]*: 1d c2 ld\.ub r2,lr\[0x4\] ++ *[0-9a-f]*: 11 81 ld\.ub r1,r8\[0x0\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 20 0d sub sp,0 ++ *[0-9a-f]*: 2f fd sub sp,-4 ++ *[0-9a-f]*: 28 0d sub sp,-512 ++ *[0-9a-f]*: 27 fd sub sp,508 ++ *[0-9a-f]*: 20 1d sub sp,4 ++ *[0-9a-f]*: 20 bd sub sp,44 ++ *[0-9a-f]*: 20 2d sub sp,8 ++ *[0-9a-f]*: 25 7d sub sp,348 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 20 0f sub pc,0 ++ *[0-9a-f]*: 2f fc sub r12,-1 ++ *[0-9a-f]*: 28 05 sub r5,-128 ++ *[0-9a-f]*: 27 f4 sub r4,127 ++ *[0-9a-f]*: 20 1e sub lr,1 ++ *[0-9a-f]*: 2d 76 sub r6,-41 ++ *[0-9a-f]*: 22 54 sub r4,37 ++ *[0-9a-f]*: 23 8c sub r12,56 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 30 0f mov pc,0 ++ *[0-9a-f]*: 3f fc mov r12,-1 ++ *[0-9a-f]*: 38 05 mov r5,-128 ++ *[0-9a-f]*: 37 f4 mov r4,127 ++ *[0-9a-f]*: 30 1e mov lr,1 ++ *[0-9a-f]*: 30 ef mov pc,14 ++ *[0-9a-f]*: 39 c6 mov r6,-100 ++ *[0-9a-f]*: 38 6e mov lr,-122 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 40 0f lddsp pc,sp\[0x0\] ++ *[0-9a-f]*: 47 fc lddsp r12,sp\[0x1fc\] ++ *[0-9a-f]*: 44 05 lddsp r5,sp\[0x100\] ++ *[0-9a-f]*: 43 f4 lddsp r4,sp\[0xfc\] ++ *[0-9a-f]*: 40 1e lddsp lr,sp\[0x4\] ++ *[0-9a-f]*: 44 0e lddsp lr,sp\[0x100\] ++ *[0-9a-f]*: 40 5c lddsp r12,sp\[0x14\] ++ *[0-9a-f]*: 47 69 lddsp r9,sp\[0x1d8\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 48 0f lddpc pc,[0-9a-f]* <.*> ++ *[0-9a-f]*: 4f f0 lddpc r0,[0-9a-f]* <.*> ++ *[0-9a-f]*: 4c 08 lddpc r8,[0-9a-f]* <.*> ++ *[0-9a-f]*: 4b f7 lddpc r7,[0-9a-f]* <.*> ++ *[0-9a-f]*: 48 1e lddpc lr,[0-9a-f]* <.*> ++ *[0-9a-f]*: 4f 6d lddpc sp,[0-9a-f]* <.*> ++ *[0-9a-f]*: 49 e6 lddpc r6,[0-9a-f]* <.*> ++ *[0-9a-f]*: 48 7b lddpc r11,[0-9a-f]* <.*> ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 50 0f stdsp sp\[0x0\],pc ++ *[0-9a-f]*: 57 fc stdsp sp\[0x1fc\],r12 ++ *[0-9a-f]*: 54 05 stdsp sp\[0x100\],r5 ++ *[0-9a-f]*: 53 f4 stdsp sp\[0xfc\],r4 ++ *[0-9a-f]*: 50 1e stdsp sp\[0x4\],lr ++ *[0-9a-f]*: 54 cf stdsp sp\[0x130\],pc ++ *[0-9a-f]*: 54 00 stdsp sp\[0x100\],r0 ++ *[0-9a-f]*: 55 45 stdsp sp\[0x150\],r5 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 58 0f cp.w pc,0 ++ *[0-9a-f]*: 5b fc cp.w r12,-1 ++ *[0-9a-f]*: 5a 05 cp.w r5,-32 ++ *[0-9a-f]*: 59 f4 cp.w r4,31 ++ *[0-9a-f]*: 58 1e cp.w lr,1 ++ *[0-9a-f]*: 58 38 cp.w r8,3 ++ *[0-9a-f]*: 59 0e cp.w lr,16 ++ *[0-9a-f]*: 5a 67 cp.w r7,-26 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c 0f acr pc ++ *[0-9a-f]*: 5c 0c acr r12 ++ *[0-9a-f]*: 5c 05 acr r5 ++ *[0-9a-f]*: 5c 04 acr r4 ++ *[0-9a-f]*: 5c 0e acr lr ++ *[0-9a-f]*: 5c 02 acr r2 ++ *[0-9a-f]*: 5c 0c acr r12 ++ *[0-9a-f]*: 5c 0f acr pc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c 1f scr pc ++ *[0-9a-f]*: 5c 1c scr r12 ++ *[0-9a-f]*: 5c 15 scr r5 ++ *[0-9a-f]*: 5c 14 scr r4 ++ *[0-9a-f]*: 5c 1e scr lr ++ *[0-9a-f]*: 5c 1f scr pc ++ *[0-9a-f]*: 5c 16 scr r6 ++ *[0-9a-f]*: 5c 11 scr r1 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c 2f cpc pc ++ *[0-9a-f]*: 5c 2c cpc r12 ++ *[0-9a-f]*: 5c 25 cpc r5 ++ *[0-9a-f]*: 5c 24 cpc r4 ++ *[0-9a-f]*: 5c 2e cpc lr ++ *[0-9a-f]*: 5c 2f cpc pc ++ *[0-9a-f]*: 5c 24 cpc r4 ++ *[0-9a-f]*: 5c 29 cpc r9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c 3f neg pc ++ *[0-9a-f]*: 5c 3c neg r12 ++ *[0-9a-f]*: 5c 35 neg r5 ++ *[0-9a-f]*: 5c 34 neg r4 ++ *[0-9a-f]*: 5c 3e neg lr ++ *[0-9a-f]*: 5c 37 neg r7 ++ *[0-9a-f]*: 5c 31 neg r1 ++ *[0-9a-f]*: 5c 39 neg r9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c 4f abs pc ++ *[0-9a-f]*: 5c 4c abs r12 ++ *[0-9a-f]*: 5c 45 abs r5 ++ *[0-9a-f]*: 5c 44 abs r4 ++ *[0-9a-f]*: 5c 4e abs lr ++ *[0-9a-f]*: 5c 46 abs r6 ++ *[0-9a-f]*: 5c 46 abs r6 ++ *[0-9a-f]*: 5c 44 abs r4 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c 5f castu\.b pc ++ *[0-9a-f]*: 5c 5c castu\.b r12 ++ *[0-9a-f]*: 5c 55 castu\.b r5 ++ *[0-9a-f]*: 5c 54 castu\.b r4 ++ *[0-9a-f]*: 5c 5e castu\.b lr ++ *[0-9a-f]*: 5c 57 castu\.b r7 ++ *[0-9a-f]*: 5c 5d castu\.b sp ++ *[0-9a-f]*: 5c 59 castu\.b r9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c 6f casts\.b pc ++ *[0-9a-f]*: 5c 6c casts\.b r12 ++ *[0-9a-f]*: 5c 65 casts\.b r5 ++ *[0-9a-f]*: 5c 64 casts\.b r4 ++ *[0-9a-f]*: 5c 6e casts\.b lr ++ *[0-9a-f]*: 5c 6b casts\.b r11 ++ *[0-9a-f]*: 5c 61 casts\.b r1 ++ *[0-9a-f]*: 5c 6a casts\.b r10 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c 7f castu\.h pc ++ *[0-9a-f]*: 5c 7c castu\.h r12 ++ *[0-9a-f]*: 5c 75 castu\.h r5 ++ *[0-9a-f]*: 5c 74 castu\.h r4 ++ *[0-9a-f]*: 5c 7e castu\.h lr ++ *[0-9a-f]*: 5c 7a castu\.h r10 ++ *[0-9a-f]*: 5c 7b castu\.h r11 ++ *[0-9a-f]*: 5c 71 castu\.h r1 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c 8f casts\.h pc ++ *[0-9a-f]*: 5c 8c casts\.h r12 ++ *[0-9a-f]*: 5c 85 casts\.h r5 ++ *[0-9a-f]*: 5c 84 casts\.h r4 ++ *[0-9a-f]*: 5c 8e casts\.h lr ++ *[0-9a-f]*: 5c 80 casts\.h r0 ++ *[0-9a-f]*: 5c 85 casts\.h r5 ++ *[0-9a-f]*: 5c 89 casts\.h r9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c 9f brev pc ++ *[0-9a-f]*: 5c 9c brev r12 ++ *[0-9a-f]*: 5c 95 brev r5 ++ *[0-9a-f]*: 5c 94 brev r4 ++ *[0-9a-f]*: 5c 9e brev lr ++ *[0-9a-f]*: 5c 95 brev r5 ++ *[0-9a-f]*: 5c 9a brev r10 ++ *[0-9a-f]*: 5c 98 brev r8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c af swap\.h pc ++ *[0-9a-f]*: 5c ac swap\.h r12 ++ *[0-9a-f]*: 5c a5 swap\.h r5 ++ *[0-9a-f]*: 5c a4 swap\.h r4 ++ *[0-9a-f]*: 5c ae swap\.h lr ++ *[0-9a-f]*: 5c a7 swap\.h r7 ++ *[0-9a-f]*: 5c a0 swap\.h r0 ++ *[0-9a-f]*: 5c a8 swap\.h r8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c bf swap\.b pc ++ *[0-9a-f]*: 5c bc swap\.b r12 ++ *[0-9a-f]*: 5c b5 swap\.b r5 ++ *[0-9a-f]*: 5c b4 swap\.b r4 ++ *[0-9a-f]*: 5c be swap\.b lr ++ *[0-9a-f]*: 5c ba swap\.b r10 ++ *[0-9a-f]*: 5c bc swap\.b r12 ++ *[0-9a-f]*: 5c b1 swap\.b r1 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c cf swap\.bh pc ++ *[0-9a-f]*: 5c cc swap\.bh r12 ++ *[0-9a-f]*: 5c c5 swap\.bh r5 ++ *[0-9a-f]*: 5c c4 swap\.bh r4 ++ *[0-9a-f]*: 5c ce swap\.bh lr ++ *[0-9a-f]*: 5c c9 swap\.bh r9 ++ *[0-9a-f]*: 5c c4 swap\.bh r4 ++ *[0-9a-f]*: 5c c1 swap\.bh r1 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c df com pc ++ *[0-9a-f]*: 5c dc com r12 ++ *[0-9a-f]*: 5c d5 com r5 ++ *[0-9a-f]*: 5c d4 com r4 ++ *[0-9a-f]*: 5c de com lr ++ *[0-9a-f]*: 5c d2 com r2 ++ *[0-9a-f]*: 5c d2 com r2 ++ *[0-9a-f]*: 5c d7 com r7 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c ef tnbz pc ++ *[0-9a-f]*: 5c ec tnbz r12 ++ *[0-9a-f]*: 5c e5 tnbz r5 ++ *[0-9a-f]*: 5c e4 tnbz r4 ++ *[0-9a-f]*: 5c ee tnbz lr ++ *[0-9a-f]*: 5c e8 tnbz r8 ++ *[0-9a-f]*: 5c ec tnbz r12 ++ *[0-9a-f]*: 5c ef tnbz pc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5c ff rol pc ++ *[0-9a-f]*: 5c fc rol r12 ++ *[0-9a-f]*: 5c f5 rol r5 ++ *[0-9a-f]*: 5c f4 rol r4 ++ *[0-9a-f]*: 5c fe rol lr ++ *[0-9a-f]*: 5c fa rol r10 ++ *[0-9a-f]*: 5c f9 rol r9 ++ *[0-9a-f]*: 5c f5 rol r5 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5d 0f ror pc ++ *[0-9a-f]*: 5d 0c ror r12 ++ *[0-9a-f]*: 5d 05 ror r5 ++ *[0-9a-f]*: 5d 04 ror r4 ++ *[0-9a-f]*: 5d 0e ror lr ++ *[0-9a-f]*: 5d 08 ror r8 ++ *[0-9a-f]*: 5d 04 ror r4 ++ *[0-9a-f]*: 5d 07 ror r7 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5d 1f icall pc ++ *[0-9a-f]*: 5d 1c icall r12 ++ *[0-9a-f]*: 5d 15 icall r5 ++ *[0-9a-f]*: 5d 14 icall r4 ++ *[0-9a-f]*: 5d 1e icall lr ++ *[0-9a-f]*: 5d 13 icall r3 ++ *[0-9a-f]*: 5d 11 icall r1 ++ *[0-9a-f]*: 5d 13 icall r3 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5d 2f mustr pc ++ *[0-9a-f]*: 5d 2c mustr r12 ++ *[0-9a-f]*: 5d 25 mustr r5 ++ *[0-9a-f]*: 5d 24 mustr r4 ++ *[0-9a-f]*: 5d 2e mustr lr ++ *[0-9a-f]*: 5d 21 mustr r1 ++ *[0-9a-f]*: 5d 24 mustr r4 ++ *[0-9a-f]*: 5d 2c mustr r12 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5d 3f musfr pc ++ *[0-9a-f]*: 5d 3c musfr r12 ++ *[0-9a-f]*: 5d 35 musfr r5 ++ *[0-9a-f]*: 5d 34 musfr r4 ++ *[0-9a-f]*: 5d 3e musfr lr ++ *[0-9a-f]*: 5d 3b musfr r11 ++ *[0-9a-f]*: 5d 3c musfr r12 ++ *[0-9a-f]*: 5d 32 musfr r2 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5e 0f reteq 1 ++ *[0-9a-f]*: 5e fc retal r12 ++ *[0-9a-f]*: 5e 85 retls r5 ++ *[0-9a-f]*: 5e 74 retpl r4 ++ *[0-9a-f]*: 5e 1e retne -1 ++ *[0-9a-f]*: 5e 90 retgt r0 ++ *[0-9a-f]*: 5e 9c retgt r12 ++ *[0-9a-f]*: 5e 4a retge r10 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 5f 0f sreq pc ++ *[0-9a-f]*: 5f fc sral r12 ++ *[0-9a-f]*: 5f 85 srls r5 ++ *[0-9a-f]*: 5f 74 srpl r4 ++ *[0-9a-f]*: 5f 1e srne lr ++ *[0-9a-f]*: 5f 50 srlt r0 ++ *[0-9a-f]*: 5f fd sral sp ++ *[0-9a-f]*: 5f 49 srge r9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 7e 0f ld\.w pc,pc\[0x0\] ++ *[0-9a-f]*: 79 fc ld\.w r12,r12\[0x7c\] ++ *[0-9a-f]*: 6b 05 ld\.w r5,r5\[0x40\] ++ *[0-9a-f]*: 68 f4 ld\.w r4,r4\[0x3c\] ++ *[0-9a-f]*: 7c 1e ld\.w lr,lr\[0x4\] ++ *[0-9a-f]*: 64 dd ld\.w sp,r2\[0x34\] ++ *[0-9a-f]*: 62 29 ld\.w r9,r1\[0x8\] ++ *[0-9a-f]*: 7a f5 ld\.w r5,sp\[0x3c\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 9e 0f ld\.sh pc,pc\[0x0\] ++ *[0-9a-f]*: 98 7c ld\.sh r12,r12\[0xe\] ++ *[0-9a-f]*: 8a 45 ld\.sh r5,r5\[0x8\] ++ *[0-9a-f]*: 88 34 ld\.sh r4,r4\[0x6\] ++ *[0-9a-f]*: 9c 1e ld\.sh lr,lr\[0x2\] ++ *[0-9a-f]*: 84 44 ld\.sh r4,r2\[0x8\] ++ *[0-9a-f]*: 9c 5d ld\.sh sp,lr\[0xa\] ++ *[0-9a-f]*: 96 12 ld\.sh r2,r11\[0x2\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 9e 8f ld\.uh pc,pc\[0x0\] ++ *[0-9a-f]*: 98 fc ld\.uh r12,r12\[0xe\] ++ *[0-9a-f]*: 8a c5 ld\.uh r5,r5\[0x8\] ++ *[0-9a-f]*: 88 b4 ld\.uh r4,r4\[0x6\] ++ *[0-9a-f]*: 9c 9e ld\.uh lr,lr\[0x2\] ++ *[0-9a-f]*: 80 da ld\.uh r10,r0\[0xa\] ++ *[0-9a-f]*: 96 c8 ld\.uh r8,r11\[0x8\] ++ *[0-9a-f]*: 84 ea ld\.uh r10,r2\[0xc\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 9f 0f st\.w pc\[0x0\],pc ++ *[0-9a-f]*: 99 fc st\.w r12\[0x3c\],r12 ++ *[0-9a-f]*: 8b 85 st\.w r5\[0x20\],r5 ++ *[0-9a-f]*: 89 74 st\.w r4\[0x1c\],r4 ++ *[0-9a-f]*: 9d 1e st\.w lr\[0x4\],lr ++ *[0-9a-f]*: 8f bb st\.w r7\[0x2c\],r11 ++ *[0-9a-f]*: 85 66 st\.w r2\[0x18\],r6 ++ *[0-9a-f]*: 89 39 st\.w r4\[0xc\],r9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: be 0f st\.h pc\[0x0\],pc ++ *[0-9a-f]*: b8 7c st\.h r12\[0xe\],r12 ++ *[0-9a-f]*: aa 45 st\.h r5\[0x8\],r5 ++ *[0-9a-f]*: a8 34 st\.h r4\[0x6\],r4 ++ *[0-9a-f]*: bc 1e st\.h lr\[0x2\],lr ++ *[0-9a-f]*: bc 5c st\.h lr\[0xa\],r12 ++ *[0-9a-f]*: ac 20 st\.h r6\[0x4\],r0 ++ *[0-9a-f]*: aa 6d st\.h r5\[0xc\],sp ++ ++[0-9a-f]* : ++ *[0-9a-f]*: be 8f st\.b pc\[0x0\],pc ++ *[0-9a-f]*: b8 fc st\.b r12\[0x7\],r12 ++ *[0-9a-f]*: aa c5 st\.b r5\[0x4\],r5 ++ *[0-9a-f]*: a8 b4 st\.b r4\[0x3\],r4 ++ *[0-9a-f]*: bc 9e st\.b lr\[0x1\],lr ++ *[0-9a-f]*: b8 e9 st\.b r12\[0x6\],r9 ++ *[0-9a-f]*: a4 be st\.b r2\[0x3\],lr ++ *[0-9a-f]*: a2 bb st\.b r1\[0x3\],r11 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: bf 00 ld\.d r0,pc ++ *[0-9a-f]*: b9 0e ld\.d lr,r12 ++ *[0-9a-f]*: ab 08 ld\.d r8,r5 ++ *[0-9a-f]*: a9 06 ld\.d r6,r4 ++ *[0-9a-f]*: bd 02 ld\.d r2,lr ++ *[0-9a-f]*: af 0e ld\.d lr,r7 ++ *[0-9a-f]*: a9 04 ld\.d r4,r4 ++ *[0-9a-f]*: bf 0e ld\.d lr,pc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: bf 01 ld\.d r0,pc\+\+ ++ *[0-9a-f]*: b9 0f ld\.d lr,r12\+\+ ++ *[0-9a-f]*: ab 09 ld\.d r8,r5\+\+ ++ *[0-9a-f]*: a9 07 ld\.d r6,r4\+\+ ++ *[0-9a-f]*: bd 03 ld\.d r2,lr\+\+ ++ *[0-9a-f]*: ab 0f ld\.d lr,r5\+\+ ++ *[0-9a-f]*: b7 0d ld\.d r12,r11\+\+ ++ *[0-9a-f]*: b9 03 ld\.d r2,r12\+\+ ++ ++[0-9a-f]* : ++ *[0-9a-f]*: bf 10 ld\.d r0,--pc ++ *[0-9a-f]*: b9 1e ld\.d lr,--r12 ++ *[0-9a-f]*: ab 18 ld\.d r8,--r5 ++ *[0-9a-f]*: a9 16 ld\.d r6,--r4 ++ *[0-9a-f]*: bd 12 ld\.d r2,--lr ++ *[0-9a-f]*: a1 18 ld\.d r8,--r0 ++ *[0-9a-f]*: bf 1a ld\.d r10,--pc ++ *[0-9a-f]*: a9 12 ld\.d r2,--r4 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: bf 11 st\.d pc,r0 ++ *[0-9a-f]*: b9 1f st\.d r12,lr ++ *[0-9a-f]*: ab 19 st\.d r5,r8 ++ *[0-9a-f]*: a9 17 st\.d r4,r6 ++ *[0-9a-f]*: bd 13 st\.d lr,r2 ++ *[0-9a-f]*: a1 1d st\.d r0,r12 ++ *[0-9a-f]*: bb 15 st\.d sp,r4 ++ *[0-9a-f]*: b9 1d st\.d r12,r12 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: bf 20 st\.d pc\+\+,r0 ++ *[0-9a-f]*: b9 2e st\.d r12\+\+,lr ++ *[0-9a-f]*: ab 28 st\.d r5\+\+,r8 ++ *[0-9a-f]*: a9 26 st\.d r4\+\+,r6 ++ *[0-9a-f]*: bd 22 st\.d lr\+\+,r2 ++ *[0-9a-f]*: bb 26 st\.d sp\+\+,r6 ++ *[0-9a-f]*: b5 26 st\.d r10\+\+,r6 ++ *[0-9a-f]*: af 22 st\.d r7\+\+,r2 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: bf 21 st\.d --pc,r0 ++ *[0-9a-f]*: b9 2f st\.d --r12,lr ++ *[0-9a-f]*: ab 29 st\.d --r5,r8 ++ *[0-9a-f]*: a9 27 st\.d --r4,r6 ++ *[0-9a-f]*: bd 23 st\.d --lr,r2 ++ *[0-9a-f]*: a7 27 st\.d --r3,r6 ++ *[0-9a-f]*: bd 23 st\.d --lr,r2 ++ *[0-9a-f]*: a1 25 st\.d --r0,r4 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: bf 3f mul pc,pc ++ *[0-9a-f]*: b9 3c mul r12,r12 ++ *[0-9a-f]*: ab 35 mul r5,r5 ++ *[0-9a-f]*: a9 34 mul r4,r4 ++ *[0-9a-f]*: bd 3e mul lr,lr ++ *[0-9a-f]*: bd 3a mul r10,lr ++ *[0-9a-f]*: b1 30 mul r0,r8 ++ *[0-9a-f]*: ab 38 mul r8,r5 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: a1 4f asr pc,0x0 ++ *[0-9a-f]*: bf 5c asr r12,0x1f ++ *[0-9a-f]*: b1 45 asr r5,0x10 ++ *[0-9a-f]*: af 54 asr r4,0xf ++ *[0-9a-f]*: a1 5e asr lr,0x1 ++ *[0-9a-f]*: b7 56 asr r6,0x17 ++ *[0-9a-f]*: b3 46 asr r6,0x12 ++ *[0-9a-f]*: a9 45 asr r5,0x8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: a1 6f lsl pc,0x0 ++ *[0-9a-f]*: bf 7c lsl r12,0x1f ++ *[0-9a-f]*: b1 65 lsl r5,0x10 ++ *[0-9a-f]*: af 74 lsl r4,0xf ++ *[0-9a-f]*: a1 7e lsl lr,0x1 ++ *[0-9a-f]*: ad 7c lsl r12,0xd ++ *[0-9a-f]*: b1 66 lsl r6,0x10 ++ *[0-9a-f]*: b9 71 lsl r1,0x19 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: a1 8f lsr pc,0x0 ++ *[0-9a-f]*: bf 9c lsr r12,0x1f ++ *[0-9a-f]*: b1 85 lsr r5,0x10 ++ *[0-9a-f]*: af 94 lsr r4,0xf ++ *[0-9a-f]*: a1 9e lsr lr,0x1 ++ *[0-9a-f]*: a1 90 lsr r0,0x1 ++ *[0-9a-f]*: ab 88 lsr r8,0xa ++ *[0-9a-f]*: bb 87 lsr r7,0x1a ++ ++[0-9a-f]* : ++ *[0-9a-f]*: a1 af sbr pc,0x0 ++ *[0-9a-f]*: bf bc sbr r12,0x1f ++ *[0-9a-f]*: b1 a5 sbr r5,0x10 ++ *[0-9a-f]*: af b4 sbr r4,0xf ++ *[0-9a-f]*: a1 be sbr lr,0x1 ++ *[0-9a-f]*: bf b8 sbr r8,0x1f ++ *[0-9a-f]*: b7 a6 sbr r6,0x16 ++ *[0-9a-f]*: b7 b1 sbr r1,0x17 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: a1 cf cbr pc,0x0 ++ *[0-9a-f]*: bf dc cbr r12,0x1f ++ *[0-9a-f]*: b1 c5 cbr r5,0x10 ++ *[0-9a-f]*: af d4 cbr r4,0xf ++ *[0-9a-f]*: a1 de cbr lr,0x1 ++ *[0-9a-f]*: ab cc cbr r12,0xa ++ *[0-9a-f]*: b7 c7 cbr r7,0x16 ++ *[0-9a-f]*: a9 d8 cbr r8,0x9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: c0 00 breq [0-9a-f]* <.*> ++ *[0-9a-f]*: cf f7 brpl [0-9a-f]* <.*> ++ *[0-9a-f]*: c8 04 brge [0-9a-f]* <.*> ++ *[0-9a-f]*: c7 f3 brcs [0-9a-f]* <.*> ++ *[0-9a-f]*: c0 11 brne [0-9a-f]* <.*> ++ *[0-9a-f]*: c7 33 brcs [0-9a-f]* <.*> ++ *[0-9a-f]*: cf 70 breq [0-9a-f]* <.*> ++ *[0-9a-f]*: c0 60 breq [0-9a-f]* <.*> ++ ++[0-9a-f]* : ++ *[0-9a-f]*: c0 08 rjmp [0-9a-f]* <.*> ++ *[0-9a-f]*: cf fb rjmp [0-9a-f]* <.*> ++ *[0-9a-f]*: c0 0a rjmp [0-9a-f]* <.*> ++ *[0-9a-f]*: cf f9 rjmp [0-9a-f]* <.*> ++ *[0-9a-f]*: c0 18 rjmp [0-9a-f]* <.*> ++ *[0-9a-f]*: c1 fa rjmp [0-9a-f]* <.*> ++ *[0-9a-f]*: c0 78 rjmp [0-9a-f]* <.*> ++ *[0-9a-f]*: cf ea rjmp [0-9a-f]* <.*> ++ ++[0-9a-f]* : ++ *[0-9a-f]*: c0 0c rcall [0-9a-f]* <.*> ++ *[0-9a-f]*: cf ff rcall [0-9a-f]* <.*> ++ *[0-9a-f]*: c0 0e rcall [0-9a-f]* <.*> ++ *[0-9a-f]*: cf fd rcall [0-9a-f]* <.*> ++ *[0-9a-f]*: c0 1c rcall [0-9a-f]* <.*> ++ *[0-9a-f]*: c6 cc rcall [0-9a-f]* <.*> ++ *[0-9a-f]*: cf 7e rcall [0-9a-f]* <.*> ++ *[0-9a-f]*: c1 ae rcall [0-9a-f]* <.*> ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d0 00 acall 0x0 ++ *[0-9a-f]*: df f0 acall 0x3fc ++ *[0-9a-f]*: d8 00 acall 0x200 ++ *[0-9a-f]*: d7 f0 acall 0x1fc ++ *[0-9a-f]*: d0 10 acall 0x4 ++ *[0-9a-f]*: d5 90 acall 0x164 ++ *[0-9a-f]*: d4 c0 acall 0x130 ++ *[0-9a-f]*: d2 b0 acall 0xac ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d7 33 scall ++ *[0-9a-f]*: d7 33 scall ++ *[0-9a-f]*: d7 33 scall ++ *[0-9a-f]*: d7 33 scall ++ *[0-9a-f]*: d7 33 scall ++ *[0-9a-f]*: d7 33 scall ++ *[0-9a-f]*: d7 33 scall ++ *[0-9a-f]*: d7 33 scall ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d8 02 popm pc ++ *[0-9a-f]*: dd fa popm r0-r11,pc,r12=-1 ++ *[0-9a-f]*: d4 02 popm lr ++ *[0-9a-f]*: db fa popm r0-r11,pc,r12=1 ++ *[0-9a-f]*: d0 12 popm r0-r3 ++ *[0-9a-f]*: d8 e2 popm r4-r10,pc ++ *[0-9a-f]*: d9 1a popm r0-r3,r11,pc,r12=0 ++ *[0-9a-f]*: d7 b2 popm r0-r7,r10-r12,lr ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d8 01 pushm pc ++ *[0-9a-f]*: df f1 pushm r0-r12,lr-pc ++ *[0-9a-f]*: d8 01 pushm pc ++ *[0-9a-f]*: d7 f1 pushm r0-r12,lr ++ *[0-9a-f]*: d0 11 pushm r0-r3 ++ *[0-9a-f]*: dc c1 pushm r8-r10,lr-pc ++ *[0-9a-f]*: d0 91 pushm r0-r3,r10 ++ *[0-9a-f]*: d2 41 pushm r8-r9,r12 ++ ++[0-9a-f]* : ++.* ++.* ++.* ++.* ++.* ++.* ++.* ++.* ++ ++[0-9a-f]* : ++.* ++.* ++.* ++.* ++.* ++.* ++.* ++.* ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d0 03 csrfcz 0x0 ++ *[0-9a-f]*: d1 f3 csrfcz 0x1f ++ *[0-9a-f]*: d1 03 csrfcz 0x10 ++ *[0-9a-f]*: d0 f3 csrfcz 0xf ++ *[0-9a-f]*: d0 13 csrfcz 0x1 ++ *[0-9a-f]*: d0 53 csrfcz 0x5 ++ *[0-9a-f]*: d0 d3 csrfcz 0xd ++ *[0-9a-f]*: d1 73 csrfcz 0x17 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d2 03 ssrf 0x0 ++ *[0-9a-f]*: d3 f3 ssrf 0x1f ++ *[0-9a-f]*: d3 03 ssrf 0x10 ++ *[0-9a-f]*: d2 f3 ssrf 0xf ++ *[0-9a-f]*: d2 13 ssrf 0x1 ++ *[0-9a-f]*: d3 d3 ssrf 0x1d ++ *[0-9a-f]*: d2 d3 ssrf 0xd ++ *[0-9a-f]*: d2 d3 ssrf 0xd ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d4 03 csrf 0x0 ++ *[0-9a-f]*: d5 f3 csrf 0x1f ++ *[0-9a-f]*: d5 03 csrf 0x10 ++ *[0-9a-f]*: d4 f3 csrf 0xf ++ *[0-9a-f]*: d4 13 csrf 0x1 ++ *[0-9a-f]*: d4 a3 csrf 0xa ++ *[0-9a-f]*: d4 f3 csrf 0xf ++ *[0-9a-f]*: d4 b3 csrf 0xb ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d6 03 rete ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d6 13 rets ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d6 23 retd ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d6 33 retj ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d6 43 tlbr ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d6 53 tlbs ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d6 63 tlbw ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d6 73 breakpoint ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d6 83 incjosp 1 ++ *[0-9a-f]*: d6 93 incjosp 2 ++ *[0-9a-f]*: d6 a3 incjosp 3 ++ *[0-9a-f]*: d6 b3 incjosp 4 ++ *[0-9a-f]*: d6 c3 incjosp -4 ++ *[0-9a-f]*: d6 d3 incjosp -3 ++ *[0-9a-f]*: d6 e3 incjosp -2 ++ *[0-9a-f]*: d6 f3 incjosp -1 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d7 03 nop ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d7 13 popjc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: d7 23 pushjc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 00 0f add pc,pc,pc ++ *[0-9a-f]*: f8 0c 00 3c add r12,r12,r12<<0x3 ++ *[0-9a-f]*: ea 05 00 25 add r5,r5,r5<<0x2 ++ *[0-9a-f]*: e8 04 00 14 add r4,r4,r4<<0x1 ++ *[0-9a-f]*: fc 0e 00 1e add lr,lr,lr<<0x1 ++ *[0-9a-f]*: f8 00 00 10 add r0,r12,r0<<0x1 ++ *[0-9a-f]*: f8 04 00 09 add r9,r12,r4 ++ *[0-9a-f]*: f8 07 00 2c add r12,r12,r7<<0x2 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 01 0f sub pc,pc,pc ++ *[0-9a-f]*: f8 0c 01 3c sub r12,r12,r12<<0x3 ++ *[0-9a-f]*: ea 05 01 25 sub r5,r5,r5<<0x2 ++ *[0-9a-f]*: e8 04 01 14 sub r4,r4,r4<<0x1 ++ *[0-9a-f]*: fc 0e 01 1e sub lr,lr,lr<<0x1 ++ *[0-9a-f]*: e6 04 01 0d sub sp,r3,r4 ++ *[0-9a-f]*: ee 03 01 03 sub r3,r7,r3 ++ *[0-9a-f]*: f4 0d 01 1d sub sp,r10,sp<<0x1 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0d 0f divu pc,pc,pc ++ *[0-9a-f]*: f8 0c 0d 0c divu r12,r12,r12 ++ *[0-9a-f]*: ea 05 0d 05 divu r5,r5,r5 ++ *[0-9a-f]*: e8 04 0d 04 divu r4,r4,r4 ++ *[0-9a-f]*: fc 0e 0d 0e divu lr,lr,lr ++ *[0-9a-f]*: e8 0f 0d 0d divu sp,r4,pc ++ *[0-9a-f]*: ea 0d 0d 05 divu r5,r5,sp ++ *[0-9a-f]*: fa 00 0d 0a divu r10,sp,r0 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0e 0f addhh\.w pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 0e 3c addhh\.w r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 0e 35 addhh\.w r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 0e 04 addhh\.w r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 0e 3e addhh\.w lr,lr:t,lr:t ++ *[0-9a-f]*: e0 03 0e 00 addhh\.w r0,r0:b,r3:b ++ *[0-9a-f]*: f8 07 0e 2e addhh\.w lr,r12:t,r7:b ++ *[0-9a-f]*: f4 02 0e 23 addhh\.w r3,r10:t,r2:b ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0f 0f subhh\.w pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 0f 3c subhh\.w r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 0f 35 subhh\.w r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 0f 04 subhh\.w r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 0f 3e subhh\.w lr,lr:t,lr:t ++ *[0-9a-f]*: e2 07 0f 2a subhh\.w r10,r1:t,r7:b ++ *[0-9a-f]*: f4 0e 0f 3f subhh\.w pc,r10:t,lr:t ++ *[0-9a-f]*: e0 0c 0f 23 subhh\.w r3,r0:t,r12:b ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 00 4f adc pc,pc,pc ++ *[0-9a-f]*: f8 0c 00 4c adc r12,r12,r12 ++ *[0-9a-f]*: ea 05 00 45 adc r5,r5,r5 ++ *[0-9a-f]*: e8 04 00 44 adc r4,r4,r4 ++ *[0-9a-f]*: fc 0e 00 4e adc lr,lr,lr ++ *[0-9a-f]*: e0 07 00 44 adc r4,r0,r7 ++ *[0-9a-f]*: e8 03 00 4d adc sp,r4,r3 ++ *[0-9a-f]*: f8 00 00 42 adc r2,r12,r0 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 01 4f sbc pc,pc,pc ++ *[0-9a-f]*: f8 0c 01 4c sbc r12,r12,r12 ++ *[0-9a-f]*: ea 05 01 45 sbc r5,r5,r5 ++ *[0-9a-f]*: e8 04 01 44 sbc r4,r4,r4 ++ *[0-9a-f]*: fc 0e 01 4e sbc lr,lr,lr ++ *[0-9a-f]*: ee 09 01 46 sbc r6,r7,r9 ++ *[0-9a-f]*: f0 05 01 40 sbc r0,r8,r5 ++ *[0-9a-f]*: e0 04 01 41 sbc r1,r0,r4 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 02 4f mul pc,pc,pc ++ *[0-9a-f]*: f8 0c 02 4c mul r12,r12,r12 ++ *[0-9a-f]*: ea 05 02 45 mul r5,r5,r5 ++ *[0-9a-f]*: e8 04 02 44 mul r4,r4,r4 ++ *[0-9a-f]*: fc 0e 02 4e mul lr,lr,lr ++ *[0-9a-f]*: e0 00 02 4f mul pc,r0,r0 ++ *[0-9a-f]*: fe 0e 02 48 mul r8,pc,lr ++ *[0-9a-f]*: f8 0f 02 44 mul r4,r12,pc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 03 4f mac pc,pc,pc ++ *[0-9a-f]*: f8 0c 03 4c mac r12,r12,r12 ++ *[0-9a-f]*: ea 05 03 45 mac r5,r5,r5 ++ *[0-9a-f]*: e8 04 03 44 mac r4,r4,r4 ++ *[0-9a-f]*: fc 0e 03 4e mac lr,lr,lr ++ *[0-9a-f]*: e8 00 03 4a mac r10,r4,r0 ++ *[0-9a-f]*: fc 00 03 47 mac r7,lr,r0 ++ *[0-9a-f]*: f2 0c 03 42 mac r2,r9,r12 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 04 4f muls\.d pc,pc,pc ++ *[0-9a-f]*: f8 0c 04 4c muls\.d r12,r12,r12 ++ *[0-9a-f]*: ea 05 04 45 muls\.d r5,r5,r5 ++ *[0-9a-f]*: e8 04 04 44 muls\.d r4,r4,r4 ++ *[0-9a-f]*: fc 0e 04 4e muls\.d lr,lr,lr ++ *[0-9a-f]*: f0 0e 04 42 muls\.d r2,r8,lr ++ *[0-9a-f]*: e0 0b 04 44 muls\.d r4,r0,r11 ++ *[0-9a-f]*: fc 06 04 45 muls\.d r5,lr,r6 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 05 40 macs\.d r0,pc,pc ++ *[0-9a-f]*: f8 0c 05 4e macs\.d lr,r12,r12 ++ *[0-9a-f]*: ea 05 05 48 macs\.d r8,r5,r5 ++ *[0-9a-f]*: e8 04 05 46 macs\.d r6,r4,r4 ++ *[0-9a-f]*: fc 0e 05 42 macs\.d r2,lr,lr ++ *[0-9a-f]*: e2 09 05 48 macs\.d r8,r1,r9 ++ *[0-9a-f]*: f0 08 05 4e macs\.d lr,r8,r8 ++ *[0-9a-f]*: e6 0c 05 44 macs\.d r4,r3,r12 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 06 40 mulu\.d r0,pc,pc ++ *[0-9a-f]*: f8 0c 06 4e mulu\.d lr,r12,r12 ++ *[0-9a-f]*: ea 05 06 48 mulu\.d r8,r5,r5 ++ *[0-9a-f]*: e8 04 06 46 mulu\.d r6,r4,r4 ++ *[0-9a-f]*: fc 0e 06 42 mulu\.d r2,lr,lr ++ *[0-9a-f]*: ea 00 06 46 mulu\.d r6,r5,r0 ++ *[0-9a-f]*: ec 01 06 44 mulu\.d r4,r6,r1 ++ *[0-9a-f]*: f0 02 06 48 mulu\.d r8,r8,r2 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 07 40 macu\.d r0,pc,pc ++ *[0-9a-f]*: f8 0c 07 4e macu\.d lr,r12,r12 ++ *[0-9a-f]*: ea 05 07 48 macu\.d r8,r5,r5 ++ *[0-9a-f]*: e8 04 07 46 macu\.d r6,r4,r4 ++ *[0-9a-f]*: fc 0e 07 42 macu\.d r2,lr,lr ++ *[0-9a-f]*: fa 0b 07 46 macu\.d r6,sp,r11 ++ *[0-9a-f]*: e8 08 07 42 macu\.d r2,r4,r8 ++ *[0-9a-f]*: f4 09 07 46 macu\.d r6,r10,r9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 08 4f asr pc,pc,pc ++ *[0-9a-f]*: f8 0c 08 4c asr r12,r12,r12 ++ *[0-9a-f]*: ea 05 08 45 asr r5,r5,r5 ++ *[0-9a-f]*: e8 04 08 44 asr r4,r4,r4 ++ *[0-9a-f]*: fc 0e 08 4e asr lr,lr,lr ++ *[0-9a-f]*: ec 0f 08 4f asr pc,r6,pc ++ *[0-9a-f]*: ec 0c 08 40 asr r0,r6,r12 ++ *[0-9a-f]*: fa 00 08 44 asr r4,sp,r0 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 09 4f lsl pc,pc,pc ++ *[0-9a-f]*: f8 0c 09 4c lsl r12,r12,r12 ++ *[0-9a-f]*: ea 05 09 45 lsl r5,r5,r5 ++ *[0-9a-f]*: e8 04 09 44 lsl r4,r4,r4 ++ *[0-9a-f]*: fc 0e 09 4e lsl lr,lr,lr ++ *[0-9a-f]*: ea 0e 09 4e lsl lr,r5,lr ++ *[0-9a-f]*: fe 03 09 45 lsl r5,pc,r3 ++ *[0-9a-f]*: fe 09 09 41 lsl r1,pc,r9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0a 4f lsr pc,pc,pc ++ *[0-9a-f]*: f8 0c 0a 4c lsr r12,r12,r12 ++ *[0-9a-f]*: ea 05 0a 45 lsr r5,r5,r5 ++ *[0-9a-f]*: e8 04 0a 44 lsr r4,r4,r4 ++ *[0-9a-f]*: fc 0e 0a 4e lsr lr,lr,lr ++ *[0-9a-f]*: e8 01 0a 42 lsr r2,r4,r1 ++ *[0-9a-f]*: e2 06 0a 45 lsr r5,r1,r6 ++ *[0-9a-f]*: ec 07 0a 4d lsr sp,r6,r7 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0b 4f xchg pc,pc,pc ++ *[0-9a-f]*: f8 0c 0b 4c xchg r12,r12,r12 ++ *[0-9a-f]*: ea 05 0b 45 xchg r5,r5,r5 ++ *[0-9a-f]*: e8 04 0b 44 xchg r4,r4,r4 ++ *[0-9a-f]*: fc 0e 0b 4e xchg lr,lr,lr ++ *[0-9a-f]*: e8 0d 0b 4e xchg lr,r4,sp ++ *[0-9a-f]*: ea 0c 0b 41 xchg r1,r5,r12 ++ *[0-9a-f]*: f8 00 0b 4e xchg lr,r12,r0 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0c 4f max pc,pc,pc ++ *[0-9a-f]*: f8 0c 0c 4c max r12,r12,r12 ++ *[0-9a-f]*: ea 05 0c 45 max r5,r5,r5 ++ *[0-9a-f]*: e8 04 0c 44 max r4,r4,r4 ++ *[0-9a-f]*: fc 0e 0c 4e max lr,lr,lr ++ *[0-9a-f]*: e4 0d 0c 4e max lr,r2,sp ++ *[0-9a-f]*: f4 09 0c 44 max r4,r10,r9 ++ *[0-9a-f]*: f2 0e 0c 4e max lr,r9,lr ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0d 4f min pc,pc,pc ++ *[0-9a-f]*: f8 0c 0d 4c min r12,r12,r12 ++ *[0-9a-f]*: ea 05 0d 45 min r5,r5,r5 ++ *[0-9a-f]*: e8 04 0d 44 min r4,r4,r4 ++ *[0-9a-f]*: fc 0e 0d 4e min lr,lr,lr ++ *[0-9a-f]*: ee 08 0d 49 min r9,r7,r8 ++ *[0-9a-f]*: ea 05 0d 4d min sp,r5,r5 ++ *[0-9a-f]*: e2 04 0d 44 min r4,r1,r4 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0e 4f addabs pc,pc,pc ++ *[0-9a-f]*: f8 0c 0e 4c addabs r12,r12,r12 ++ *[0-9a-f]*: ea 05 0e 45 addabs r5,r5,r5 ++ *[0-9a-f]*: e8 04 0e 44 addabs r4,r4,r4 ++ *[0-9a-f]*: fc 0e 0e 4e addabs lr,lr,lr ++ *[0-9a-f]*: f4 00 0e 47 addabs r7,r10,r0 ++ *[0-9a-f]*: f2 07 0e 49 addabs r9,r9,r7 ++ *[0-9a-f]*: f0 0c 0e 42 addabs r2,r8,r12 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 01 8f mulnhh\.w pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 01 bc mulnhh\.w r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 01 b5 mulnhh\.w r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 01 84 mulnhh\.w r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 01 be mulnhh\.w lr,lr:t,lr:t ++ *[0-9a-f]*: fa 09 01 ab mulnhh\.w r11,sp:t,r9:b ++ *[0-9a-f]*: e8 0e 01 9d mulnhh\.w sp,r4:b,lr:t ++ *[0-9a-f]*: e4 0b 01 ac mulnhh\.w r12,r2:t,r11:b ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 02 80 mulnwh\.d r0,pc,pc:b ++ *[0-9a-f]*: f8 0c 02 9e mulnwh\.d lr,r12,r12:t ++ *[0-9a-f]*: ea 05 02 98 mulnwh\.d r8,r5,r5:t ++ *[0-9a-f]*: e8 04 02 86 mulnwh\.d r6,r4,r4:b ++ *[0-9a-f]*: fc 0e 02 92 mulnwh\.d r2,lr,lr:t ++ *[0-9a-f]*: e6 02 02 9e mulnwh\.d lr,r3,r2:t ++ *[0-9a-f]*: ea 09 02 84 mulnwh\.d r4,r5,r9:b ++ *[0-9a-f]*: e8 04 02 9c mulnwh\.d r12,r4,r4:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 04 8f machh\.w pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 04 bc machh\.w r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 04 b5 machh\.w r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 04 84 machh\.w r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 04 be machh\.w lr,lr:t,lr:t ++ *[0-9a-f]*: ea 01 04 9e machh\.w lr,r5:b,r1:t ++ *[0-9a-f]*: ec 07 04 89 machh\.w r9,r6:b,r7:b ++ *[0-9a-f]*: fc 0c 04 a5 machh\.w r5,lr:t,r12:b ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 05 80 machh\.d r0,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 05 be machh\.d lr,r12:t,r12:t ++ *[0-9a-f]*: ea 05 05 b8 machh\.d r8,r5:t,r5:t ++ *[0-9a-f]*: e8 04 05 86 machh\.d r6,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 05 b2 machh\.d r2,lr:t,lr:t ++ *[0-9a-f]*: e0 08 05 8a machh\.d r10,r0:b,r8:b ++ *[0-9a-f]*: e8 05 05 9e machh\.d lr,r4:b,r5:t ++ *[0-9a-f]*: e0 04 05 98 machh\.d r8,r0:b,r4:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 06 8f macsathh\.w pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 06 bc macsathh\.w r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 06 b5 macsathh\.w r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 06 84 macsathh\.w r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 06 be macsathh\.w lr,lr:t,lr:t ++ *[0-9a-f]*: ee 0f 06 b7 macsathh\.w r7,r7:t,pc:t ++ *[0-9a-f]*: e4 04 06 a4 macsathh\.w r4,r2:t,r4:b ++ *[0-9a-f]*: f0 03 06 b4 macsathh\.w r4,r8:t,r3:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 07 8f mulhh\.w pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 07 bc mulhh\.w r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 07 b5 mulhh\.w r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 07 84 mulhh\.w r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 07 be mulhh\.w lr,lr:t,lr:t ++ *[0-9a-f]*: e8 09 07 a7 mulhh\.w r7,r4:t,r9:b ++ *[0-9a-f]*: e6 07 07 bf mulhh\.w pc,r3:t,r7:t ++ *[0-9a-f]*: e8 09 07 9f mulhh\.w pc,r4:b,r9:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 08 8f mulsathh\.h pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 08 bc mulsathh\.h r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 08 b5 mulsathh\.h r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 08 84 mulsathh\.h r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 08 be mulsathh\.h lr,lr:t,lr:t ++ *[0-9a-f]*: e2 0d 08 83 mulsathh\.h r3,r1:b,sp:b ++ *[0-9a-f]*: fc 0b 08 ab mulsathh\.h r11,lr:t,r11:b ++ *[0-9a-f]*: f0 0b 08 98 mulsathh\.h r8,r8:b,r11:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 09 8f mulsathh\.w pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 09 bc mulsathh\.w r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 09 b5 mulsathh\.w r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 09 84 mulsathh\.w r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 09 be mulsathh\.w lr,lr:t,lr:t ++ *[0-9a-f]*: f6 06 09 ae mulsathh\.w lr,r11:t,r6:b ++ *[0-9a-f]*: ec 07 09 96 mulsathh\.w r6,r6:b,r7:t ++ *[0-9a-f]*: e4 03 09 8a mulsathh\.w r10,r2:b,r3:b ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0a 8f mulsatrndhh\.h pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 0a bc mulsatrndhh\.h r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 0a b5 mulsatrndhh\.h r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 0a 84 mulsatrndhh\.h r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 0a be mulsatrndhh\.h lr,lr:t,lr:t ++ *[0-9a-f]*: ec 09 0a 8b mulsatrndhh\.h r11,r6:b,r9:b ++ *[0-9a-f]*: e6 08 0a 9b mulsatrndhh\.h r11,r3:b,r8:t ++ *[0-9a-f]*: fa 07 0a b5 mulsatrndhh\.h r5,sp:t,r7:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0b 8f mulsatrndwh\.w pc,pc,pc:b ++ *[0-9a-f]*: f8 0c 0b 9c mulsatrndwh\.w r12,r12,r12:t ++ *[0-9a-f]*: ea 05 0b 95 mulsatrndwh\.w r5,r5,r5:t ++ *[0-9a-f]*: e8 04 0b 84 mulsatrndwh\.w r4,r4,r4:b ++ *[0-9a-f]*: fc 0e 0b 9e mulsatrndwh\.w lr,lr,lr:t ++ *[0-9a-f]*: f8 00 0b 85 mulsatrndwh\.w r5,r12,r0:b ++ *[0-9a-f]*: f4 0f 0b 87 mulsatrndwh\.w r7,r10,pc:b ++ *[0-9a-f]*: f0 05 0b 9a mulsatrndwh\.w r10,r8,r5:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0c 80 macwh\.d r0,pc,pc:b ++ *[0-9a-f]*: f8 0c 0c 9e macwh\.d lr,r12,r12:t ++ *[0-9a-f]*: ea 05 0c 98 macwh\.d r8,r5,r5:t ++ *[0-9a-f]*: e8 04 0c 86 macwh\.d r6,r4,r4:b ++ *[0-9a-f]*: fc 0e 0c 92 macwh\.d r2,lr,lr:t ++ *[0-9a-f]*: f4 0c 0c 94 macwh\.d r4,r10,r12:t ++ *[0-9a-f]*: ee 0d 0c 84 macwh\.d r4,r7,sp:b ++ *[0-9a-f]*: f2 0b 0c 8e macwh\.d lr,r9,r11:b ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0d 80 mulwh\.d r0,pc,pc:b ++ *[0-9a-f]*: f8 0c 0d 9e mulwh\.d lr,r12,r12:t ++ *[0-9a-f]*: ea 05 0d 98 mulwh\.d r8,r5,r5:t ++ *[0-9a-f]*: e8 04 0d 86 mulwh\.d r6,r4,r4:b ++ *[0-9a-f]*: fc 0e 0d 92 mulwh\.d r2,lr,lr:t ++ *[0-9a-f]*: ea 01 0d 8c mulwh\.d r12,r5,r1:b ++ *[0-9a-f]*: e2 03 0d 90 mulwh\.d r0,r1,r3:t ++ *[0-9a-f]*: f2 02 0d 80 mulwh\.d r0,r9,r2:b ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0e 8f mulsatwh\.w pc,pc,pc:b ++ *[0-9a-f]*: f8 0c 0e 9c mulsatwh\.w r12,r12,r12:t ++ *[0-9a-f]*: ea 05 0e 95 mulsatwh\.w r5,r5,r5:t ++ *[0-9a-f]*: e8 04 0e 84 mulsatwh\.w r4,r4,r4:b ++ *[0-9a-f]*: fc 0e 0e 9e mulsatwh\.w lr,lr,lr:t ++ *[0-9a-f]*: fe 0a 0e 9b mulsatwh\.w r11,pc,r10:t ++ *[0-9a-f]*: f8 09 0e 9d mulsatwh\.w sp,r12,r9:t ++ *[0-9a-f]*: e6 02 0e 90 mulsatwh\.w r0,r3,r2:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 0f 8f ld\.w pc,pc\[pc:b<<2\] ++ *[0-9a-f]*: f8 0c 0f bc ld\.w r12,r12\[r12:t<<2\] ++ *[0-9a-f]*: ea 05 0f a5 ld\.w r5,r5\[r5:u<<2\] ++ *[0-9a-f]*: e8 04 0f 94 ld\.w r4,r4\[r4:l<<2\] ++ *[0-9a-f]*: fc 0e 0f 9e ld\.w lr,lr\[lr:l<<2\] ++ *[0-9a-f]*: f4 06 0f 99 ld\.w r9,r10\[r6:l<<2\] ++ *[0-9a-f]*: f4 0a 0f 82 ld\.w r2,r10\[r10:b<<2\] ++ *[0-9a-f]*: ea 0f 0f 8b ld\.w r11,r5\[pc:b<<2\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 00 cf satadd\.w pc,pc,pc ++ *[0-9a-f]*: f8 0c 00 cc satadd\.w r12,r12,r12 ++ *[0-9a-f]*: ea 05 00 c5 satadd\.w r5,r5,r5 ++ *[0-9a-f]*: e8 04 00 c4 satadd\.w r4,r4,r4 ++ *[0-9a-f]*: fc 0e 00 ce satadd\.w lr,lr,lr ++ *[0-9a-f]*: f0 0b 00 c4 satadd\.w r4,r8,r11 ++ *[0-9a-f]*: f8 06 00 c3 satadd\.w r3,r12,r6 ++ *[0-9a-f]*: fc 09 00 c3 satadd\.w r3,lr,r9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 01 cf satsub\.w pc,pc,pc ++ *[0-9a-f]*: f8 0c 01 cc satsub\.w r12,r12,r12 ++ *[0-9a-f]*: ea 05 01 c5 satsub\.w r5,r5,r5 ++ *[0-9a-f]*: e8 04 01 c4 satsub\.w r4,r4,r4 ++ *[0-9a-f]*: fc 0e 01 ce satsub\.w lr,lr,lr ++ *[0-9a-f]*: fa 00 01 c8 satsub\.w r8,sp,r0 ++ *[0-9a-f]*: f0 04 01 c9 satsub\.w r9,r8,r4 ++ *[0-9a-f]*: fc 02 01 cf satsub\.w pc,lr,r2 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 02 cf satadd\.h pc,pc,pc ++ *[0-9a-f]*: f8 0c 02 cc satadd\.h r12,r12,r12 ++ *[0-9a-f]*: ea 05 02 c5 satadd\.h r5,r5,r5 ++ *[0-9a-f]*: e8 04 02 c4 satadd\.h r4,r4,r4 ++ *[0-9a-f]*: fc 0e 02 ce satadd\.h lr,lr,lr ++ *[0-9a-f]*: e6 09 02 c7 satadd\.h r7,r3,r9 ++ *[0-9a-f]*: e0 02 02 c1 satadd\.h r1,r0,r2 ++ *[0-9a-f]*: e8 0e 02 c1 satadd\.h r1,r4,lr ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 03 cf satsub\.h pc,pc,pc ++ *[0-9a-f]*: f8 0c 03 cc satsub\.h r12,r12,r12 ++ *[0-9a-f]*: ea 05 03 c5 satsub\.h r5,r5,r5 ++ *[0-9a-f]*: e8 04 03 c4 satsub\.h r4,r4,r4 ++ *[0-9a-f]*: fc 0e 03 ce satsub\.h lr,lr,lr ++ *[0-9a-f]*: fc 03 03 ce satsub\.h lr,lr,r3 ++ *[0-9a-f]*: ec 05 03 cb satsub\.h r11,r6,r5 ++ *[0-9a-f]*: fa 00 03 c3 satsub\.h r3,sp,r0 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 10 00 mul pc,pc,0 ++ *[0-9a-f]*: f8 0c 10 ff mul r12,r12,-1 ++ *[0-9a-f]*: ea 05 10 80 mul r5,r5,-128 ++ *[0-9a-f]*: e8 04 10 7f mul r4,r4,127 ++ *[0-9a-f]*: fc 0e 10 01 mul lr,lr,1 ++ *[0-9a-f]*: e4 0c 10 f9 mul r12,r2,-7 ++ *[0-9a-f]*: fe 01 10 5f mul r1,pc,95 ++ *[0-9a-f]*: ec 04 10 13 mul r4,r6,19 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 11 00 rsub pc,pc,0 ++ *[0-9a-f]*: f8 0c 11 ff rsub r12,r12,-1 ++ *[0-9a-f]*: ea 05 11 80 rsub r5,r5,-128 ++ *[0-9a-f]*: e8 04 11 7f rsub r4,r4,127 ++ *[0-9a-f]*: fc 0e 11 01 rsub lr,lr,1 ++ *[0-9a-f]*: fc 09 11 60 rsub r9,lr,96 ++ *[0-9a-f]*: e2 0b 11 38 rsub r11,r1,56 ++ *[0-9a-f]*: ee 00 11 a9 rsub r0,r7,-87 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 12 00 clz pc,pc ++ *[0-9a-f]*: f8 0c 12 00 clz r12,r12 ++ *[0-9a-f]*: ea 05 12 00 clz r5,r5 ++ *[0-9a-f]*: e8 04 12 00 clz r4,r4 ++ *[0-9a-f]*: fc 0e 12 00 clz lr,lr ++ *[0-9a-f]*: e6 02 12 00 clz r2,r3 ++ *[0-9a-f]*: f6 05 12 00 clz r5,r11 ++ *[0-9a-f]*: e6 0f 12 00 clz pc,r3 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 13 00 cpc pc,pc ++ *[0-9a-f]*: f8 0c 13 00 cpc r12,r12 ++ *[0-9a-f]*: ea 05 13 00 cpc r5,r5 ++ *[0-9a-f]*: e8 04 13 00 cpc r4,r4 ++ *[0-9a-f]*: fc 0e 13 00 cpc lr,lr ++ *[0-9a-f]*: e8 0f 13 00 cpc pc,r4 ++ *[0-9a-f]*: f2 05 13 00 cpc r5,r9 ++ *[0-9a-f]*: ee 06 13 00 cpc r6,r7 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 14 00 asr pc,pc,0x0 ++ *[0-9a-f]*: f8 0c 14 1f asr r12,r12,0x1f ++ *[0-9a-f]*: ea 05 14 10 asr r5,r5,0x10 ++ *[0-9a-f]*: e8 04 14 0f asr r4,r4,0xf ++ *[0-9a-f]*: fc 0e 14 01 asr lr,lr,0x1 ++ *[0-9a-f]*: f6 04 14 13 asr r4,r11,0x13 ++ *[0-9a-f]*: fe 0d 14 1a asr sp,pc,0x1a ++ *[0-9a-f]*: fa 0b 14 08 asr r11,sp,0x8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 15 00 lsl pc,pc,0x0 ++ *[0-9a-f]*: f8 0c 15 1f lsl r12,r12,0x1f ++ *[0-9a-f]*: ea 05 15 10 lsl r5,r5,0x10 ++ *[0-9a-f]*: e8 04 15 0f lsl r4,r4,0xf ++ *[0-9a-f]*: fc 0e 15 01 lsl lr,lr,0x1 ++ *[0-9a-f]*: f4 08 15 11 lsl r8,r10,0x11 ++ *[0-9a-f]*: fc 02 15 03 lsl r2,lr,0x3 ++ *[0-9a-f]*: f6 0e 15 0e lsl lr,r11,0xe ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 16 00 lsr pc,pc,0x0 ++ *[0-9a-f]*: f8 0c 16 1f lsr r12,r12,0x1f ++ *[0-9a-f]*: ea 05 16 10 lsr r5,r5,0x10 ++ *[0-9a-f]*: e8 04 16 0f lsr r4,r4,0xf ++ *[0-9a-f]*: fc 0e 16 01 lsr lr,lr,0x1 ++ *[0-9a-f]*: e6 04 16 1f lsr r4,r3,0x1f ++ *[0-9a-f]*: f2 0f 16 0e lsr pc,r9,0xe ++ *[0-9a-f]*: e0 03 16 06 lsr r3,r0,0x6 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 17 00 moveq pc,pc ++ *[0-9a-f]*: f8 0c 17 f0 moval r12,r12 ++ *[0-9a-f]*: ea 05 17 80 movls r5,r5 ++ *[0-9a-f]*: e8 04 17 70 movpl r4,r4 ++ *[0-9a-f]*: fc 0e 17 10 movne lr,lr ++ *[0-9a-f]*: f6 0f 17 10 movne pc,r11 ++ *[0-9a-f]*: e4 0a 17 60 movmi r10,r2 ++ *[0-9a-f]*: f8 08 17 80 movls r8,r12 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 0f padd\.h pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 0c padd\.h r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 05 padd\.h r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 04 padd\.h r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 0e padd\.h lr,lr,lr ++ *[0-9a-f]*: e4 07 20 08 padd\.h r8,r2,r7 ++ *[0-9a-f]*: e0 03 20 00 padd\.h r0,r0,r3 ++ *[0-9a-f]*: f6 06 20 0d padd\.h sp,r11,r6 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 1f psub\.h pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 1c psub\.h r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 15 psub\.h r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 14 psub\.h r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 1e psub\.h lr,lr,lr ++ *[0-9a-f]*: ec 08 20 1e psub\.h lr,r6,r8 ++ *[0-9a-f]*: e2 0d 20 10 psub\.h r0,r1,sp ++ *[0-9a-f]*: fe 0d 20 1f psub\.h pc,pc,sp ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 2f paddx\.h pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 2c paddx\.h r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 25 paddx\.h r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 24 paddx\.h r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 2e paddx\.h lr,lr,lr ++ *[0-9a-f]*: fe 01 20 2f paddx\.h pc,pc,r1 ++ *[0-9a-f]*: e8 05 20 2a paddx\.h r10,r4,r5 ++ *[0-9a-f]*: fe 02 20 25 paddx\.h r5,pc,r2 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 3f psubx\.h pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 3c psubx\.h r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 35 psubx\.h r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 34 psubx\.h r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 3e psubx\.h lr,lr,lr ++ *[0-9a-f]*: f8 05 20 35 psubx\.h r5,r12,r5 ++ *[0-9a-f]*: f0 03 20 33 psubx\.h r3,r8,r3 ++ *[0-9a-f]*: e4 03 20 35 psubx\.h r5,r2,r3 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 4f padds\.sh pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 4c padds\.sh r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 45 padds\.sh r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 44 padds\.sh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 4e padds\.sh lr,lr,lr ++ *[0-9a-f]*: fc 02 20 49 padds\.sh r9,lr,r2 ++ *[0-9a-f]*: f0 01 20 46 padds\.sh r6,r8,r1 ++ *[0-9a-f]*: e8 0a 20 46 padds\.sh r6,r4,r10 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 5f psubs\.sh pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 5c psubs\.sh r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 55 psubs\.sh r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 54 psubs\.sh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 5e psubs\.sh lr,lr,lr ++ *[0-9a-f]*: fc 0b 20 56 psubs\.sh r6,lr,r11 ++ *[0-9a-f]*: f8 04 20 52 psubs\.sh r2,r12,r4 ++ *[0-9a-f]*: f2 00 20 50 psubs\.sh r0,r9,r0 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 6f paddxs\.sh pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 6c paddxs\.sh r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 65 paddxs\.sh r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 64 paddxs\.sh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 6e paddxs\.sh lr,lr,lr ++ *[0-9a-f]*: e6 09 20 60 paddxs\.sh r0,r3,r9 ++ *[0-9a-f]*: f4 0b 20 6f paddxs\.sh pc,r10,r11 ++ *[0-9a-f]*: f4 0f 20 6f paddxs\.sh pc,r10,pc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 7f psubxs\.sh pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 7c psubxs\.sh r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 75 psubxs\.sh r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 74 psubxs\.sh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 7e psubxs\.sh lr,lr,lr ++ *[0-9a-f]*: e8 04 20 77 psubxs\.sh r7,r4,r4 ++ *[0-9a-f]*: f0 03 20 77 psubxs\.sh r7,r8,r3 ++ *[0-9a-f]*: ec 05 20 7f psubxs\.sh pc,r6,r5 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 8f padds\.uh pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 8c padds\.uh r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 85 padds\.uh r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 84 padds\.uh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 8e padds\.uh lr,lr,lr ++ *[0-9a-f]*: f6 07 20 8c padds\.uh r12,r11,r7 ++ *[0-9a-f]*: f0 0e 20 87 padds\.uh r7,r8,lr ++ *[0-9a-f]*: f2 07 20 86 padds\.uh r6,r9,r7 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 9f psubs\.uh pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 9c psubs\.uh r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 95 psubs\.uh r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 94 psubs\.uh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 9e psubs\.uh lr,lr,lr ++ *[0-9a-f]*: f4 06 20 9e psubs\.uh lr,r10,r6 ++ *[0-9a-f]*: e4 0f 20 9d psubs\.uh sp,r2,pc ++ *[0-9a-f]*: f2 02 20 92 psubs\.uh r2,r9,r2 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 af paddxs\.uh pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 ac paddxs\.uh r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 a5 paddxs\.uh r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 a4 paddxs\.uh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 ae paddxs\.uh lr,lr,lr ++ *[0-9a-f]*: f2 05 20 a7 paddxs\.uh r7,r9,r5 ++ *[0-9a-f]*: e2 04 20 a9 paddxs\.uh r9,r1,r4 ++ *[0-9a-f]*: e4 03 20 a5 paddxs\.uh r5,r2,r3 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 bf psubxs\.uh pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 bc psubxs\.uh r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 b5 psubxs\.uh r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 b4 psubxs\.uh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 be psubxs\.uh lr,lr,lr ++ *[0-9a-f]*: ea 0d 20 bd psubxs\.uh sp,r5,sp ++ *[0-9a-f]*: ec 06 20 bd psubxs\.uh sp,r6,r6 ++ *[0-9a-f]*: f6 08 20 b3 psubxs\.uh r3,r11,r8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 cf paddh\.sh pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 cc paddh\.sh r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 c5 paddh\.sh r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 c4 paddh\.sh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 ce paddh\.sh lr,lr,lr ++ *[0-9a-f]*: fa 03 20 cc paddh\.sh r12,sp,r3 ++ *[0-9a-f]*: ea 03 20 cf paddh\.sh pc,r5,r3 ++ *[0-9a-f]*: f0 0d 20 c8 paddh\.sh r8,r8,sp ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 df psubh\.sh pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 dc psubh\.sh r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 d5 psubh\.sh r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 d4 psubh\.sh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 de psubh\.sh lr,lr,lr ++ *[0-9a-f]*: ea 08 20 d1 psubh\.sh r1,r5,r8 ++ *[0-9a-f]*: e6 06 20 d7 psubh\.sh r7,r3,r6 ++ *[0-9a-f]*: e6 03 20 d4 psubh\.sh r4,r3,r3 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 ef paddxh\.sh pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 ec paddxh\.sh r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 e5 paddxh\.sh r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 e4 paddxh\.sh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 ee paddxh\.sh lr,lr,lr ++ *[0-9a-f]*: e0 04 20 e6 paddxh\.sh r6,r0,r4 ++ *[0-9a-f]*: f0 09 20 e9 paddxh\.sh r9,r8,r9 ++ *[0-9a-f]*: e0 0d 20 e3 paddxh\.sh r3,r0,sp ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 20 ff psubxh\.sh pc,pc,pc ++ *[0-9a-f]*: f8 0c 20 fc psubxh\.sh r12,r12,r12 ++ *[0-9a-f]*: ea 05 20 f5 psubxh\.sh r5,r5,r5 ++ *[0-9a-f]*: e8 04 20 f4 psubxh\.sh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 20 fe psubxh\.sh lr,lr,lr ++ *[0-9a-f]*: fe 0c 20 f4 psubxh\.sh r4,pc,r12 ++ *[0-9a-f]*: e8 06 20 f8 psubxh\.sh r8,r4,r6 ++ *[0-9a-f]*: f2 04 20 fc psubxh\.sh r12,r9,r4 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 21 0f paddsub\.h pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 21 3c paddsub\.h r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 21 35 paddsub\.h r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 21 04 paddsub\.h r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 21 3e paddsub\.h lr,lr:t,lr:t ++ *[0-9a-f]*: e4 0e 21 25 paddsub\.h r5,r2:t,lr:b ++ *[0-9a-f]*: e2 08 21 07 paddsub\.h r7,r1:b,r8:b ++ *[0-9a-f]*: f4 05 21 36 paddsub\.h r6,r10:t,r5:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 21 4f psubadd\.h pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 21 7c psubadd\.h r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 21 75 psubadd\.h r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 21 44 psubadd\.h r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 21 7e psubadd\.h lr,lr:t,lr:t ++ *[0-9a-f]*: f6 08 21 79 psubadd\.h r9,r11:t,r8:t ++ *[0-9a-f]*: ee 0e 21 7a psubadd\.h r10,r7:t,lr:t ++ *[0-9a-f]*: fe 0f 21 66 psubadd\.h r6,pc:t,pc:b ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 21 8f paddsubs\.sh pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 21 bc paddsubs\.sh r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 21 b5 paddsubs\.sh r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 21 84 paddsubs\.sh r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 21 be paddsubs\.sh lr,lr:t,lr:t ++ *[0-9a-f]*: fc 00 21 a0 paddsubs\.sh r0,lr:t,r0:b ++ *[0-9a-f]*: e4 04 21 b9 paddsubs\.sh r9,r2:t,r4:t ++ *[0-9a-f]*: f2 0d 21 bc paddsubs\.sh r12,r9:t,sp:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 21 cf psubadds\.sh pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 21 fc psubadds\.sh r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 21 f5 psubadds\.sh r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 21 c4 psubadds\.sh r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 21 fe psubadds\.sh lr,lr:t,lr:t ++ *[0-9a-f]*: fc 01 21 df psubadds\.sh pc,lr:b,r1:t ++ *[0-9a-f]*: e6 0c 21 cb psubadds\.sh r11,r3:b,r12:b ++ *[0-9a-f]*: e4 08 21 fa psubadds\.sh r10,r2:t,r8:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 22 0f paddsubs\.uh pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 22 3c paddsubs\.uh r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 22 35 paddsubs\.uh r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 22 04 paddsubs\.uh r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 22 3e paddsubs\.uh lr,lr:t,lr:t ++ *[0-9a-f]*: e4 03 22 09 paddsubs\.uh r9,r2:b,r3:b ++ *[0-9a-f]*: fa 07 22 1d paddsubs\.uh sp,sp:b,r7:t ++ *[0-9a-f]*: e0 0a 22 1e paddsubs\.uh lr,r0:b,r10:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 22 4f psubadds\.uh pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 22 7c psubadds\.uh r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 22 75 psubadds\.uh r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 22 44 psubadds\.uh r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 22 7e psubadds\.uh lr,lr:t,lr:t ++ *[0-9a-f]*: f2 0f 22 7c psubadds\.uh r12,r9:t,pc:t ++ *[0-9a-f]*: ec 08 22 48 psubadds\.uh r8,r6:b,r8:b ++ *[0-9a-f]*: f0 04 22 48 psubadds\.uh r8,r8:b,r4:b ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 22 8f paddsubh\.sh pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 22 bc paddsubh\.sh r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 22 b5 paddsubh\.sh r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 22 84 paddsubh\.sh r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 22 be paddsubh\.sh lr,lr:t,lr:t ++ *[0-9a-f]*: f2 09 22 a8 paddsubh\.sh r8,r9:t,r9:b ++ *[0-9a-f]*: fa 01 22 b0 paddsubh\.sh r0,sp:t,r1:t ++ *[0-9a-f]*: e2 00 22 93 paddsubh\.sh r3,r1:b,r0:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 22 cf psubaddh\.sh pc,pc:b,pc:b ++ *[0-9a-f]*: f8 0c 22 fc psubaddh\.sh r12,r12:t,r12:t ++ *[0-9a-f]*: ea 05 22 f5 psubaddh\.sh r5,r5:t,r5:t ++ *[0-9a-f]*: e8 04 22 c4 psubaddh\.sh r4,r4:b,r4:b ++ *[0-9a-f]*: fc 0e 22 fe psubaddh\.sh lr,lr:t,lr:t ++ *[0-9a-f]*: e6 0a 22 e7 psubaddh\.sh r7,r3:t,r10:b ++ *[0-9a-f]*: e4 01 22 f7 psubaddh\.sh r7,r2:t,r1:t ++ *[0-9a-f]*: e6 06 22 cb psubaddh\.sh r11,r3:b,r6:b ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 23 0f padd\.b pc,pc,pc ++ *[0-9a-f]*: f8 0c 23 0c padd\.b r12,r12,r12 ++ *[0-9a-f]*: ea 05 23 05 padd\.b r5,r5,r5 ++ *[0-9a-f]*: e8 04 23 04 padd\.b r4,r4,r4 ++ *[0-9a-f]*: fc 0e 23 0e padd\.b lr,lr,lr ++ *[0-9a-f]*: ec 0f 23 02 padd\.b r2,r6,pc ++ *[0-9a-f]*: f2 0c 23 08 padd\.b r8,r9,r12 ++ *[0-9a-f]*: f8 03 23 05 padd\.b r5,r12,r3 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 23 1f psub\.b pc,pc,pc ++ *[0-9a-f]*: f8 0c 23 1c psub\.b r12,r12,r12 ++ *[0-9a-f]*: ea 05 23 15 psub\.b r5,r5,r5 ++ *[0-9a-f]*: e8 04 23 14 psub\.b r4,r4,r4 ++ *[0-9a-f]*: fc 0e 23 1e psub\.b lr,lr,lr ++ *[0-9a-f]*: f8 0f 23 10 psub\.b r0,r12,pc ++ *[0-9a-f]*: fa 0a 23 17 psub\.b r7,sp,r10 ++ *[0-9a-f]*: fa 0c 23 15 psub\.b r5,sp,r12 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 23 2f padds\.sb pc,pc,pc ++ *[0-9a-f]*: f8 0c 23 2c padds\.sb r12,r12,r12 ++ *[0-9a-f]*: ea 05 23 25 padds\.sb r5,r5,r5 ++ *[0-9a-f]*: e8 04 23 24 padds\.sb r4,r4,r4 ++ *[0-9a-f]*: fc 0e 23 2e padds\.sb lr,lr,lr ++ *[0-9a-f]*: f6 04 23 2d padds\.sb sp,r11,r4 ++ *[0-9a-f]*: f4 0b 23 2b padds\.sb r11,r10,r11 ++ *[0-9a-f]*: f8 06 23 25 padds\.sb r5,r12,r6 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 23 3f psubs\.sb pc,pc,pc ++ *[0-9a-f]*: f8 0c 23 3c psubs\.sb r12,r12,r12 ++ *[0-9a-f]*: ea 05 23 35 psubs\.sb r5,r5,r5 ++ *[0-9a-f]*: e8 04 23 34 psubs\.sb r4,r4,r4 ++ *[0-9a-f]*: fc 0e 23 3e psubs\.sb lr,lr,lr ++ *[0-9a-f]*: ec 08 23 37 psubs\.sb r7,r6,r8 ++ *[0-9a-f]*: f4 09 23 3c psubs\.sb r12,r10,r9 ++ *[0-9a-f]*: f6 00 23 3f psubs\.sb pc,r11,r0 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 23 4f padds\.ub pc,pc,pc ++ *[0-9a-f]*: f8 0c 23 4c padds\.ub r12,r12,r12 ++ *[0-9a-f]*: ea 05 23 45 padds\.ub r5,r5,r5 ++ *[0-9a-f]*: e8 04 23 44 padds\.ub r4,r4,r4 ++ *[0-9a-f]*: fc 0e 23 4e padds\.ub lr,lr,lr ++ *[0-9a-f]*: e4 0b 23 43 padds\.ub r3,r2,r11 ++ *[0-9a-f]*: f0 01 23 4a padds\.ub r10,r8,r1 ++ *[0-9a-f]*: f0 0a 23 4b padds\.ub r11,r8,r10 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 23 5f psubs\.ub pc,pc,pc ++ *[0-9a-f]*: f8 0c 23 5c psubs\.ub r12,r12,r12 ++ *[0-9a-f]*: ea 05 23 55 psubs\.ub r5,r5,r5 ++ *[0-9a-f]*: e8 04 23 54 psubs\.ub r4,r4,r4 ++ *[0-9a-f]*: fc 0e 23 5e psubs\.ub lr,lr,lr ++ *[0-9a-f]*: e4 07 23 50 psubs\.ub r0,r2,r7 ++ *[0-9a-f]*: ea 03 23 5e psubs\.ub lr,r5,r3 ++ *[0-9a-f]*: ee 09 23 56 psubs\.ub r6,r7,r9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 23 6f paddh\.ub pc,pc,pc ++ *[0-9a-f]*: f8 0c 23 6c paddh\.ub r12,r12,r12 ++ *[0-9a-f]*: ea 05 23 65 paddh\.ub r5,r5,r5 ++ *[0-9a-f]*: e8 04 23 64 paddh\.ub r4,r4,r4 ++ *[0-9a-f]*: fc 0e 23 6e paddh\.ub lr,lr,lr ++ *[0-9a-f]*: e2 00 23 6e paddh\.ub lr,r1,r0 ++ *[0-9a-f]*: ee 07 23 62 paddh\.ub r2,r7,r7 ++ *[0-9a-f]*: e2 02 23 62 paddh\.ub r2,r1,r2 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 23 7f psubh\.ub pc,pc,pc ++ *[0-9a-f]*: f8 0c 23 7c psubh\.ub r12,r12,r12 ++ *[0-9a-f]*: ea 05 23 75 psubh\.ub r5,r5,r5 ++ *[0-9a-f]*: e8 04 23 74 psubh\.ub r4,r4,r4 ++ *[0-9a-f]*: fc 0e 23 7e psubh\.ub lr,lr,lr ++ *[0-9a-f]*: e2 06 23 70 psubh\.ub r0,r1,r6 ++ *[0-9a-f]*: fc 0a 23 74 psubh\.ub r4,lr,r10 ++ *[0-9a-f]*: f0 01 23 79 psubh\.ub r9,r8,r1 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 23 8f pmax\.ub pc,pc,pc ++ *[0-9a-f]*: f8 0c 23 8c pmax\.ub r12,r12,r12 ++ *[0-9a-f]*: ea 05 23 85 pmax\.ub r5,r5,r5 ++ *[0-9a-f]*: e8 04 23 84 pmax\.ub r4,r4,r4 ++ *[0-9a-f]*: fc 0e 23 8e pmax\.ub lr,lr,lr ++ *[0-9a-f]*: e4 0b 23 8f pmax\.ub pc,r2,r11 ++ *[0-9a-f]*: e2 01 23 8c pmax\.ub r12,r1,r1 ++ *[0-9a-f]*: e4 00 23 85 pmax\.ub r5,r2,r0 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 23 9f pmax\.sh pc,pc,pc ++ *[0-9a-f]*: f8 0c 23 9c pmax\.sh r12,r12,r12 ++ *[0-9a-f]*: ea 05 23 95 pmax\.sh r5,r5,r5 ++ *[0-9a-f]*: e8 04 23 94 pmax\.sh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 23 9e pmax\.sh lr,lr,lr ++ *[0-9a-f]*: ec 0c 23 9e pmax\.sh lr,r6,r12 ++ *[0-9a-f]*: fe 05 23 92 pmax\.sh r2,pc,r5 ++ *[0-9a-f]*: e4 07 23 9f pmax\.sh pc,r2,r7 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 23 af pmin\.ub pc,pc,pc ++ *[0-9a-f]*: f8 0c 23 ac pmin\.ub r12,r12,r12 ++ *[0-9a-f]*: ea 05 23 a5 pmin\.ub r5,r5,r5 ++ *[0-9a-f]*: e8 04 23 a4 pmin\.ub r4,r4,r4 ++ *[0-9a-f]*: fc 0e 23 ae pmin\.ub lr,lr,lr ++ *[0-9a-f]*: e2 05 23 a8 pmin\.ub r8,r1,r5 ++ *[0-9a-f]*: f0 03 23 a1 pmin\.ub r1,r8,r3 ++ *[0-9a-f]*: e4 07 23 a0 pmin\.ub r0,r2,r7 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 23 bf pmin\.sh pc,pc,pc ++ *[0-9a-f]*: f8 0c 23 bc pmin\.sh r12,r12,r12 ++ *[0-9a-f]*: ea 05 23 b5 pmin\.sh r5,r5,r5 ++ *[0-9a-f]*: e8 04 23 b4 pmin\.sh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 23 be pmin\.sh lr,lr,lr ++ *[0-9a-f]*: e8 0a 23 b8 pmin\.sh r8,r4,r10 ++ *[0-9a-f]*: f4 0c 23 be pmin\.sh lr,r10,r12 ++ *[0-9a-f]*: ec 02 23 b2 pmin\.sh r2,r6,r2 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 23 cf pavg\.ub pc,pc,pc ++ *[0-9a-f]*: f8 0c 23 cc pavg\.ub r12,r12,r12 ++ *[0-9a-f]*: ea 05 23 c5 pavg\.ub r5,r5,r5 ++ *[0-9a-f]*: e8 04 23 c4 pavg\.ub r4,r4,r4 ++ *[0-9a-f]*: fc 0e 23 ce pavg\.ub lr,lr,lr ++ *[0-9a-f]*: e2 06 23 c0 pavg\.ub r0,r1,r6 ++ *[0-9a-f]*: e6 06 23 c8 pavg\.ub r8,r3,r6 ++ *[0-9a-f]*: f8 0a 23 cf pavg\.ub pc,r12,r10 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 23 df pavg\.sh pc,pc,pc ++ *[0-9a-f]*: f8 0c 23 dc pavg\.sh r12,r12,r12 ++ *[0-9a-f]*: ea 05 23 d5 pavg\.sh r5,r5,r5 ++ *[0-9a-f]*: e8 04 23 d4 pavg\.sh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 23 de pavg\.sh lr,lr,lr ++ *[0-9a-f]*: fe 0d 23 d9 pavg\.sh r9,pc,sp ++ *[0-9a-f]*: fa 03 23 df pavg\.sh pc,sp,r3 ++ *[0-9a-f]*: e2 09 23 d6 pavg\.sh r6,r1,r9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e0 0f 23 ef pabs\.sb pc,pc ++ *[0-9a-f]*: e0 0c 23 ec pabs\.sb r12,r12 ++ *[0-9a-f]*: e0 05 23 e5 pabs\.sb r5,r5 ++ *[0-9a-f]*: e0 04 23 e4 pabs\.sb r4,r4 ++ *[0-9a-f]*: e0 0e 23 ee pabs\.sb lr,lr ++ *[0-9a-f]*: e0 06 23 eb pabs\.sb r11,r6 ++ *[0-9a-f]*: e0 09 23 ee pabs\.sb lr,r9 ++ *[0-9a-f]*: e0 07 23 ed pabs\.sb sp,r7 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e0 0f 23 ff pabs\.sh pc,pc ++ *[0-9a-f]*: e0 0c 23 fc pabs\.sh r12,r12 ++ *[0-9a-f]*: e0 05 23 f5 pabs\.sh r5,r5 ++ *[0-9a-f]*: e0 04 23 f4 pabs\.sh r4,r4 ++ *[0-9a-f]*: e0 0e 23 fe pabs\.sh lr,lr ++ *[0-9a-f]*: e0 03 23 ff pabs\.sh pc,r3 ++ *[0-9a-f]*: e0 07 23 f5 pabs\.sh r5,r7 ++ *[0-9a-f]*: e0 00 23 f4 pabs\.sh r4,r0 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 24 0f psad pc,pc,pc ++ *[0-9a-f]*: f8 0c 24 0c psad r12,r12,r12 ++ *[0-9a-f]*: ea 05 24 05 psad r5,r5,r5 ++ *[0-9a-f]*: e8 04 24 04 psad r4,r4,r4 ++ *[0-9a-f]*: fc 0e 24 0e psad lr,lr,lr ++ *[0-9a-f]*: f6 0b 24 09 psad r9,r11,r11 ++ *[0-9a-f]*: e8 0d 24 0e psad lr,r4,sp ++ *[0-9a-f]*: e8 05 24 0e psad lr,r4,r5 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 00 24 1f pasr\.b pc,pc,0x0 ++ *[0-9a-f]*: f8 07 24 1c pasr\.b r12,r12,0x7 ++ *[0-9a-f]*: ea 04 24 15 pasr\.b r5,r5,0x4 ++ *[0-9a-f]*: e8 03 24 14 pasr\.b r4,r4,0x3 ++ *[0-9a-f]*: fc 01 24 1e pasr\.b lr,lr,0x1 ++ *[0-9a-f]*: ee 01 24 1f pasr\.b pc,r7,0x1 ++ *[0-9a-f]*: fc 06 24 1d pasr\.b sp,lr,0x6 ++ *[0-9a-f]*: e6 02 24 1d pasr\.b sp,r3,0x2 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 00 24 2f plsl\.b pc,pc,0x0 ++ *[0-9a-f]*: f8 07 24 2c plsl\.b r12,r12,0x7 ++ *[0-9a-f]*: ea 04 24 25 plsl\.b r5,r5,0x4 ++ *[0-9a-f]*: e8 03 24 24 plsl\.b r4,r4,0x3 ++ *[0-9a-f]*: fc 01 24 2e plsl\.b lr,lr,0x1 ++ *[0-9a-f]*: f6 04 24 22 plsl\.b r2,r11,0x4 ++ *[0-9a-f]*: ea 07 24 28 plsl\.b r8,r5,0x7 ++ *[0-9a-f]*: e0 02 24 2f plsl\.b pc,r0,0x2 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 00 24 3f plsr\.b pc,pc,0x0 ++ *[0-9a-f]*: f8 07 24 3c plsr\.b r12,r12,0x7 ++ *[0-9a-f]*: ea 04 24 35 plsr\.b r5,r5,0x4 ++ *[0-9a-f]*: e8 03 24 34 plsr\.b r4,r4,0x3 ++ *[0-9a-f]*: fc 01 24 3e plsr\.b lr,lr,0x1 ++ *[0-9a-f]*: e2 02 24 3c plsr\.b r12,r1,0x2 ++ *[0-9a-f]*: fe 07 24 36 plsr\.b r6,pc,0x7 ++ *[0-9a-f]*: f6 02 24 3c plsr\.b r12,r11,0x2 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 00 24 4f pasr\.h pc,pc,0x0 ++ *[0-9a-f]*: f8 0f 24 4c pasr\.h r12,r12,0xf ++ *[0-9a-f]*: ea 08 24 45 pasr\.h r5,r5,0x8 ++ *[0-9a-f]*: e8 07 24 44 pasr\.h r4,r4,0x7 ++ *[0-9a-f]*: fc 01 24 4e pasr\.h lr,lr,0x1 ++ *[0-9a-f]*: f6 0a 24 40 pasr\.h r0,r11,0xa ++ *[0-9a-f]*: ec 08 24 44 pasr\.h r4,r6,0x8 ++ *[0-9a-f]*: e4 04 24 46 pasr\.h r6,r2,0x4 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 00 24 5f plsl\.h pc,pc,0x0 ++ *[0-9a-f]*: f8 0f 24 5c plsl\.h r12,r12,0xf ++ *[0-9a-f]*: ea 08 24 55 plsl\.h r5,r5,0x8 ++ *[0-9a-f]*: e8 07 24 54 plsl\.h r4,r4,0x7 ++ *[0-9a-f]*: fc 01 24 5e plsl\.h lr,lr,0x1 ++ *[0-9a-f]*: f4 09 24 55 plsl\.h r5,r10,0x9 ++ *[0-9a-f]*: fc 08 24 5d plsl\.h sp,lr,0x8 ++ *[0-9a-f]*: fc 07 24 50 plsl\.h r0,lr,0x7 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 00 24 6f plsr\.h pc,pc,0x0 ++ *[0-9a-f]*: f8 0f 24 6c plsr\.h r12,r12,0xf ++ *[0-9a-f]*: ea 08 24 65 plsr\.h r5,r5,0x8 ++ *[0-9a-f]*: e8 07 24 64 plsr\.h r4,r4,0x7 ++ *[0-9a-f]*: fc 01 24 6e plsr\.h lr,lr,0x1 ++ *[0-9a-f]*: e0 0f 24 6b plsr\.h r11,r0,0xf ++ *[0-9a-f]*: e6 03 24 6e plsr\.h lr,r3,0x3 ++ *[0-9a-f]*: fc 0a 24 68 plsr\.h r8,lr,0xa ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 24 7f packw\.sh pc,pc,pc ++ *[0-9a-f]*: f8 0c 24 7c packw\.sh r12,r12,r12 ++ *[0-9a-f]*: ea 05 24 75 packw\.sh r5,r5,r5 ++ *[0-9a-f]*: e8 04 24 74 packw\.sh r4,r4,r4 ++ *[0-9a-f]*: fc 0e 24 7e packw\.sh lr,lr,lr ++ *[0-9a-f]*: f6 0a 24 7d packw\.sh sp,r11,r10 ++ *[0-9a-f]*: e4 0c 24 78 packw\.sh r8,r2,r12 ++ *[0-9a-f]*: e2 05 24 78 packw\.sh r8,r1,r5 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 00 24 8f punpckub\.h pc,pc:b ++ *[0-9a-f]*: f8 00 24 9c punpckub\.h r12,r12:t ++ *[0-9a-f]*: ea 00 24 95 punpckub\.h r5,r5:t ++ *[0-9a-f]*: e8 00 24 84 punpckub\.h r4,r4:b ++ *[0-9a-f]*: fc 00 24 9e punpckub\.h lr,lr:t ++ *[0-9a-f]*: e2 00 24 96 punpckub\.h r6,r1:t ++ *[0-9a-f]*: ea 00 24 8e punpckub\.h lr,r5:b ++ *[0-9a-f]*: e4 00 24 9e punpckub\.h lr,r2:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 00 24 af punpcksb\.h pc,pc:b ++ *[0-9a-f]*: f8 00 24 bc punpcksb\.h r12,r12:t ++ *[0-9a-f]*: ea 00 24 b5 punpcksb\.h r5,r5:t ++ *[0-9a-f]*: e8 00 24 a4 punpcksb\.h r4,r4:b ++ *[0-9a-f]*: fc 00 24 be punpcksb\.h lr,lr:t ++ *[0-9a-f]*: ee 00 24 b4 punpcksb\.h r4,r7:t ++ *[0-9a-f]*: fc 00 24 a6 punpcksb\.h r6,lr:b ++ *[0-9a-f]*: f8 00 24 bc punpcksb\.h r12,r12:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 24 cf packsh\.ub pc,pc,pc ++ *[0-9a-f]*: f8 0c 24 cc packsh\.ub r12,r12,r12 ++ *[0-9a-f]*: ea 05 24 c5 packsh\.ub r5,r5,r5 ++ *[0-9a-f]*: e8 04 24 c4 packsh\.ub r4,r4,r4 ++ *[0-9a-f]*: fc 0e 24 ce packsh\.ub lr,lr,lr ++ *[0-9a-f]*: ec 03 24 c3 packsh\.ub r3,r6,r3 ++ *[0-9a-f]*: e0 03 24 c8 packsh\.ub r8,r0,r3 ++ *[0-9a-f]*: e6 0e 24 c9 packsh\.ub r9,r3,lr ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe 0f 24 df packsh\.sb pc,pc,pc ++ *[0-9a-f]*: f8 0c 24 dc packsh\.sb r12,r12,r12 ++ *[0-9a-f]*: ea 05 24 d5 packsh\.sb r5,r5,r5 ++ *[0-9a-f]*: e8 04 24 d4 packsh\.sb r4,r4,r4 ++ *[0-9a-f]*: fc 0e 24 de packsh\.sb lr,lr,lr ++ *[0-9a-f]*: f0 01 24 d6 packsh\.sb r6,r8,r1 ++ *[0-9a-f]*: f2 08 24 de packsh\.sb lr,r9,r8 ++ *[0-9a-f]*: ec 06 24 dd packsh\.sb sp,r6,r6 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e0 1f 00 00 andl pc,0x0 ++ *[0-9a-f]*: e0 1c ff ff andl r12,0xffff ++ *[0-9a-f]*: e0 15 80 00 andl r5,0x8000 ++ *[0-9a-f]*: e0 14 7f ff andl r4,0x7fff ++ *[0-9a-f]*: e0 1e 00 01 andl lr,0x1 ++ *[0-9a-f]*: e0 1f 5a 58 andl pc,0x5a58 ++ *[0-9a-f]*: e0 18 b8 9e andl r8,0xb89e ++ *[0-9a-f]*: e0 17 35 97 andl r7,0x3597 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e2 1f 00 00 andl pc,0x0,COH ++ *[0-9a-f]*: e2 1c ff ff andl r12,0xffff,COH ++ *[0-9a-f]*: e2 15 80 00 andl r5,0x8000,COH ++ *[0-9a-f]*: e2 14 7f ff andl r4,0x7fff,COH ++ *[0-9a-f]*: e2 1e 00 01 andl lr,0x1,COH ++ *[0-9a-f]*: e2 16 58 e1 andl r6,0x58e1,COH ++ *[0-9a-f]*: e2 10 9e cd andl r0,0x9ecd,COH ++ *[0-9a-f]*: e2 14 bd c4 andl r4,0xbdc4,COH ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e4 1f 00 00 andh pc,0x0 ++ *[0-9a-f]*: e4 1c ff ff andh r12,0xffff ++ *[0-9a-f]*: e4 15 80 00 andh r5,0x8000 ++ *[0-9a-f]*: e4 14 7f ff andh r4,0x7fff ++ *[0-9a-f]*: e4 1e 00 01 andh lr,0x1 ++ *[0-9a-f]*: e4 1c cc 58 andh r12,0xcc58 ++ *[0-9a-f]*: e4 13 21 e3 andh r3,0x21e3 ++ *[0-9a-f]*: e4 12 a7 eb andh r2,0xa7eb ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e6 1f 00 00 andh pc,0x0,COH ++ *[0-9a-f]*: e6 1c ff ff andh r12,0xffff,COH ++ *[0-9a-f]*: e6 15 80 00 andh r5,0x8000,COH ++ *[0-9a-f]*: e6 14 7f ff andh r4,0x7fff,COH ++ *[0-9a-f]*: e6 1e 00 01 andh lr,0x1,COH ++ *[0-9a-f]*: e6 1b 86 0d andh r11,0x860d,COH ++ *[0-9a-f]*: e6 18 ce f6 andh r8,0xcef6,COH ++ *[0-9a-f]*: e6 1a 5c 83 andh r10,0x5c83,COH ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e8 1f 00 00 orl pc,0x0 ++ *[0-9a-f]*: e8 1c ff ff orl r12,0xffff ++ *[0-9a-f]*: e8 15 80 00 orl r5,0x8000 ++ *[0-9a-f]*: e8 14 7f ff orl r4,0x7fff ++ *[0-9a-f]*: e8 1e 00 01 orl lr,0x1 ++ *[0-9a-f]*: e8 1d 41 7e orl sp,0x417e ++ *[0-9a-f]*: e8 10 52 bd orl r0,0x52bd ++ *[0-9a-f]*: e8 1f ac 47 orl pc,0xac47 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ea 1f 00 00 orh pc,0x0 ++ *[0-9a-f]*: ea 1c ff ff orh r12,0xffff ++ *[0-9a-f]*: ea 15 80 00 orh r5,0x8000 ++ *[0-9a-f]*: ea 14 7f ff orh r4,0x7fff ++ *[0-9a-f]*: ea 1e 00 01 orh lr,0x1 ++ *[0-9a-f]*: ea 18 6e 7d orh r8,0x6e7d ++ *[0-9a-f]*: ea 1c 77 1c orh r12,0x771c ++ *[0-9a-f]*: ea 11 ea 1a orh r1,0xea1a ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ec 1f 00 00 eorl pc,0x0 ++ *[0-9a-f]*: ec 1c ff ff eorl r12,0xffff ++ *[0-9a-f]*: ec 15 80 00 eorl r5,0x8000 ++ *[0-9a-f]*: ec 14 7f ff eorl r4,0x7fff ++ *[0-9a-f]*: ec 1e 00 01 eorl lr,0x1 ++ *[0-9a-f]*: ec 14 c7 b9 eorl r4,0xc7b9 ++ *[0-9a-f]*: ec 16 fb dd eorl r6,0xfbdd ++ *[0-9a-f]*: ec 11 51 b1 eorl r1,0x51b1 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ee 1f 00 00 eorh pc,0x0 ++ *[0-9a-f]*: ee 1c ff ff eorh r12,0xffff ++ *[0-9a-f]*: ee 15 80 00 eorh r5,0x8000 ++ *[0-9a-f]*: ee 14 7f ff eorh r4,0x7fff ++ *[0-9a-f]*: ee 1e 00 01 eorh lr,0x1 ++ *[0-9a-f]*: ee 10 2d d4 eorh r0,0x2dd4 ++ *[0-9a-f]*: ee 1a 94 b5 eorh r10,0x94b5 ++ *[0-9a-f]*: ee 19 df 2a eorh r9,0xdf2a ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f0 1f 00 00 mcall [0-9a-f]* <.*> ++ *[0-9a-f]*: f0 1c ff ff mcall r12\[-4\] ++ *[0-9a-f]*: f0 15 80 00 mcall r5\[-131072\] ++ *[0-9a-f]*: f0 14 7f ff mcall r4\[131068\] ++ *[0-9a-f]*: f0 1e 00 01 mcall lr\[4\] ++ *[0-9a-f]*: f0 1d 3b bf mcall sp\[61180\] ++ *[0-9a-f]*: f0 14 dd d2 mcall r4\[-35000\] ++ *[0-9a-f]*: f0 10 09 b1 mcall r0\[9924\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f2 1f 00 00 pref pc\[0\] ++ *[0-9a-f]*: f2 1c ff ff pref r12\[-1\] ++ *[0-9a-f]*: f2 15 80 00 pref r5\[-32768\] ++ *[0-9a-f]*: f2 14 7f ff pref r4\[32767\] ++ *[0-9a-f]*: f2 1e 00 01 pref lr\[1\] ++ *[0-9a-f]*: f2 17 1e 44 pref r7\[7748\] ++ *[0-9a-f]*: f2 17 e1 ed pref r7\[-7699\] ++ *[0-9a-f]*: f2 12 9a dc pref r2\[-25892\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f4 1f 00 00 cache pc\[0\],0x0 ++ *[0-9a-f]*: f4 1c ff ff cache r12\[-1\],0x1f ++ *[0-9a-f]*: f4 15 84 00 cache r5\[-1024\],0x10 ++ *[0-9a-f]*: f4 14 7b ff cache r4\[1023\],0xf ++ *[0-9a-f]*: f4 1e 08 01 cache lr\[1\],0x1 ++ *[0-9a-f]*: f4 13 8c 3c cache r3\[-964\],0x11 ++ *[0-9a-f]*: f4 14 b6 89 cache r4\[-375\],0x16 ++ *[0-9a-f]*: f4 13 8c 88 cache r3\[-888\],0x11 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 20 0f sub pc,0 ++ *[0-9a-f]*: 2f fc sub r12,-1 ++ *[0-9a-f]*: f0 25 00 00 sub r5,-1048576 ++ *[0-9a-f]*: ee 34 ff ff sub r4,1048575 ++ *[0-9a-f]*: 20 1e sub lr,1 ++ *[0-9a-f]*: f6 22 8d 6c sub r2,-619156 ++ *[0-9a-f]*: e6 3e 0a cd sub lr,461517 ++ *[0-9a-f]*: fc 38 2d 25 sub r8,-185051 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 58 0f cp.w pc,0 ++ *[0-9a-f]*: 5b fc cp.w r12,-1 ++ *[0-9a-f]*: f0 45 00 00 cp.w r5,-1048576 ++ *[0-9a-f]*: ee 54 ff ff cp.w r4,1048575 ++ *[0-9a-f]*: 58 1e cp.w lr,1 ++ *[0-9a-f]*: e0 51 e4 ae cp.w r1,124078 ++ *[0-9a-f]*: fa 40 37 e3 cp.w r0,-378909 ++ *[0-9a-f]*: fc 44 4a 14 cp.w r4,-243180 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 30 0f mov pc,0 ++ *[0-9a-f]*: 3f fc mov r12,-1 ++ *[0-9a-f]*: f0 65 00 00 mov r5,-1048576 ++ *[0-9a-f]*: ee 74 ff ff mov r4,1048575 ++ *[0-9a-f]*: 30 1e mov lr,1 ++ *[0-9a-f]*: fa 75 29 a3 mov r5,-317021 ++ *[0-9a-f]*: f4 6d 91 94 mov sp,-749164 ++ *[0-9a-f]*: ee 65 58 93 mov r5,940179 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: c0 00 breq [0-9a-f]* <.*> ++ *[0-9a-f]*: fe 9f ff ff bral [0-9a-f]* <.*> ++ *[0-9a-f]*: f0 88 00 00 brls [0-9a-f]* <.*> ++ *[0-9a-f]*: ee 97 ff ff brpl [0-9a-f]* <.*> ++ *[0-9a-f]*: c0 11 brne [0-9a-f]* <.*> ++ *[0-9a-f]*: f2 8b 4a 4d brhi [0-9a-f]* <.*> ++ *[0-9a-f]*: ea 8e 14 cc brqs [0-9a-f]* <.*> ++ *[0-9a-f]*: fa 98 98 33 brls [0-9a-f]* <.*> ++ ++[0-9a-f]* : ++ *[0-9a-f]*: c0 0c rcall [0-9a-f]* <.*> ++ *[0-9a-f]*: cf ff rcall [0-9a-f]* <.*> ++ *[0-9a-f]*: f0 a0 00 00 rcall [0-9a-f]* <.*> ++ *[0-9a-f]*: ee b0 ff ff rcall [0-9a-f]* <.*> ++ *[0-9a-f]*: c0 1c rcall [0-9a-f]* <.*> ++ *[0-9a-f]*: e2 b0 ca 5a rcall [0-9a-f]* <.*> ++ *[0-9a-f]*: e8 a0 47 52 rcall [0-9a-f]* <.*> ++ *[0-9a-f]*: fe b0 fd ef rcall [0-9a-f]* <.*> ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe cf 00 00 sub pc,pc,0 ++ *[0-9a-f]*: f8 cc ff ff sub r12,r12,-1 ++ *[0-9a-f]*: ea c5 80 00 sub r5,r5,-32768 ++ *[0-9a-f]*: e8 c4 7f ff sub r4,r4,32767 ++ *[0-9a-f]*: fc ce 00 01 sub lr,lr,1 ++ *[0-9a-f]*: fe cf ce 38 sub pc,pc,-12744 ++ *[0-9a-f]*: ee c7 95 1b sub r7,r7,-27365 ++ *[0-9a-f]*: f2 c2 bc 32 sub r2,r9,-17358 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe df 00 00 satsub\.w pc,pc,0 ++ *[0-9a-f]*: f8 dc ff ff satsub\.w r12,r12,-1 ++ *[0-9a-f]*: ea d5 80 00 satsub\.w r5,r5,-32768 ++ *[0-9a-f]*: e8 d4 7f ff satsub\.w r4,r4,32767 ++ *[0-9a-f]*: fc de 00 01 satsub\.w lr,lr,1 ++ *[0-9a-f]*: fc d2 f8 29 satsub\.w r2,lr,-2007 ++ *[0-9a-f]*: f8 d7 fc f0 satsub\.w r7,r12,-784 ++ *[0-9a-f]*: ee d4 5a 8c satsub\.w r4,r7,23180 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe e0 00 00 ld\.d r0,pc\[0\] ++ *[0-9a-f]*: f8 ee ff ff ld\.d lr,r12\[-1\] ++ *[0-9a-f]*: ea e8 80 00 ld\.d r8,r5\[-32768\] ++ *[0-9a-f]*: e8 e6 7f ff ld\.d r6,r4\[32767\] ++ *[0-9a-f]*: fc e2 00 01 ld\.d r2,lr\[1\] ++ *[0-9a-f]*: f6 ee 39 c0 ld\.d lr,r11\[14784\] ++ *[0-9a-f]*: f2 e6 b6 27 ld\.d r6,r9\[-18905\] ++ *[0-9a-f]*: e6 e2 e7 2d ld\.d r2,r3\[-6355\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 7e 0f ld\.w pc,pc\[0x0\] ++ *[0-9a-f]*: f8 fc ff ff ld\.w r12,r12\[-1\] ++ *[0-9a-f]*: ea f5 80 00 ld\.w r5,r5\[-32768\] ++ *[0-9a-f]*: e8 f4 7f ff ld\.w r4,r4\[32767\] ++ *[0-9a-f]*: fc fe 00 01 ld\.w lr,lr\[1\] ++ *[0-9a-f]*: f8 f0 a9 8b ld\.w r0,r12\[-22133\] ++ *[0-9a-f]*: fe fd af d7 ld\.w sp,pc\[-20521\] ++ *[0-9a-f]*: d7 03 nop ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 9e 0f ld\.sh pc,pc\[0x0\] ++ *[0-9a-f]*: f9 0c ff ff ld\.sh r12,r12\[-1\] ++ *[0-9a-f]*: eb 05 80 00 ld\.sh r5,r5\[-32768\] ++ *[0-9a-f]*: e9 04 7f ff ld\.sh r4,r4\[32767\] ++ *[0-9a-f]*: fd 0e 00 01 ld\.sh lr,lr\[1\] ++ *[0-9a-f]*: f5 06 78 d2 ld\.sh r6,r10\[30930\] ++ *[0-9a-f]*: f5 06 55 d5 ld\.sh r6,r10\[21973\] ++ *[0-9a-f]*: d7 03 nop ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 9e 8f ld\.uh pc,pc\[0x0\] ++ *[0-9a-f]*: f9 1c ff ff ld\.uh r12,r12\[-1\] ++ *[0-9a-f]*: eb 15 80 00 ld\.uh r5,r5\[-32768\] ++ *[0-9a-f]*: e9 14 7f ff ld\.uh r4,r4\[32767\] ++ *[0-9a-f]*: fd 1e 00 01 ld\.uh lr,lr\[1\] ++ *[0-9a-f]*: f3 11 cb d6 ld\.uh r1,r9\[-13354\] ++ *[0-9a-f]*: f7 1e 53 59 ld\.uh lr,r11\[21337\] ++ *[0-9a-f]*: d7 03 nop ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff 2f 00 00 ld\.sb pc,pc\[0\] ++ *[0-9a-f]*: f9 2c ff ff ld\.sb r12,r12\[-1\] ++ *[0-9a-f]*: eb 25 80 00 ld\.sb r5,r5\[-32768\] ++ *[0-9a-f]*: e9 24 7f ff ld\.sb r4,r4\[32767\] ++ *[0-9a-f]*: fd 2e 00 01 ld\.sb lr,lr\[1\] ++ *[0-9a-f]*: fb 27 90 09 ld\.sb r7,sp\[-28663\] ++ *[0-9a-f]*: e3 22 e9 09 ld\.sb r2,r1\[-5879\] ++ *[0-9a-f]*: e7 2c 49 2e ld\.sb r12,r3\[18734\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 1f 8f ld\.ub pc,pc\[0x0\] ++ *[0-9a-f]*: f9 3c ff ff ld\.ub r12,r12\[-1\] ++ *[0-9a-f]*: eb 35 80 00 ld\.ub r5,r5\[-32768\] ++ *[0-9a-f]*: e9 34 7f ff ld\.ub r4,r4\[32767\] ++ *[0-9a-f]*: 1d 9e ld\.ub lr,lr\[0x1\] ++ *[0-9a-f]*: e9 3f 20 55 ld\.ub pc,r4\[8277\] ++ *[0-9a-f]*: f9 35 4a e4 ld\.ub r5,r12\[19172\] ++ *[0-9a-f]*: fd 3a 66 eb ld\.ub r10,lr\[26347\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fe e1 00 00 st\.d pc\[0\],r0 ++ *[0-9a-f]*: f8 ef ff ff st\.d r12\[-1\],lr ++ *[0-9a-f]*: ea e9 80 00 st\.d r5\[-32768\],r8 ++ *[0-9a-f]*: e8 e7 7f ff st\.d r4\[32767\],r6 ++ *[0-9a-f]*: fc e3 00 01 st\.d lr\[1\],r2 ++ *[0-9a-f]*: ea eb 33 90 st\.d r5\[13200\],r10 ++ *[0-9a-f]*: ea eb 24 88 st\.d r5\[9352\],r10 ++ *[0-9a-f]*: ea e5 7e 75 st\.d r5\[32373\],r4 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: 9f 0f st\.w pc\[0x0\],pc ++ *[0-9a-f]*: f9 4c ff ff st\.w r12\[-1\],r12 ++ *[0-9a-f]*: eb 45 80 00 st\.w r5\[-32768\],r5 ++ *[0-9a-f]*: e9 44 7f ff st\.w r4\[32767\],r4 ++ *[0-9a-f]*: fd 4e 00 01 st\.w lr\[1\],lr ++ *[0-9a-f]*: fb 47 17 f8 st\.w sp\[6136\],r7 ++ *[0-9a-f]*: ed 4c 69 cf st\.w r6\[27087\],r12 ++ *[0-9a-f]*: d7 03 nop ++ ++[0-9a-f]* : ++ *[0-9a-f]*: be 0f st\.h pc\[0x0\],pc ++ *[0-9a-f]*: f9 5c ff ff st\.h r12\[-1\],r12 ++ *[0-9a-f]*: eb 55 80 00 st\.h r5\[-32768\],r5 ++ *[0-9a-f]*: e9 54 7f ff st\.h r4\[32767\],r4 ++ *[0-9a-f]*: fd 5e 00 01 st\.h lr\[1\],lr ++ *[0-9a-f]*: e9 57 d9 16 st\.h r4\[-9962\],r7 ++ *[0-9a-f]*: f3 53 c0 86 st\.h r9\[-16250\],r3 ++ *[0-9a-f]*: d7 03 nop ++ ++[0-9a-f]* : ++ *[0-9a-f]*: be 8f st\.b pc\[0x0\],pc ++ *[0-9a-f]*: f9 6c ff ff st\.b r12\[-1\],r12 ++ *[0-9a-f]*: eb 65 80 00 st\.b r5\[-32768\],r5 ++ *[0-9a-f]*: e9 64 7f ff st\.b r4\[32767\],r4 ++ *[0-9a-f]*: bc 9e st\.b lr\[0x1\],lr ++ *[0-9a-f]*: f9 66 75 96 st\.b r12\[30102\],r6 ++ *[0-9a-f]*: eb 61 71 31 st\.b r5\[28977\],r1 ++ *[0-9a-f]*: e1 61 15 5e st\.b r0\[5470\],r1 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 bf 00 00 mfsr pc,0x0 ++ *[0-9a-f]*: e1 bc 00 ff mfsr r12,0x3fc ++ *[0-9a-f]*: e1 b5 00 80 mfsr r5,0x200 ++ *[0-9a-f]*: e1 b4 00 7f mfsr r4,0x1fc ++ *[0-9a-f]*: e1 be 00 01 mfsr lr,0x4 ++ *[0-9a-f]*: e1 b2 00 ae mfsr r2,0x2b8 ++ *[0-9a-f]*: e1 b4 00 41 mfsr r4,0x104 ++ *[0-9a-f]*: e1 ba 00 fe mfsr r10,0x3f8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e3 bf 00 00 mtsr 0x0,pc ++ *[0-9a-f]*: e3 bc 00 ff mtsr 0x3fc,r12 ++ *[0-9a-f]*: e3 b5 00 80 mtsr 0x200,r5 ++ *[0-9a-f]*: e3 b4 00 7f mtsr 0x1fc,r4 ++ *[0-9a-f]*: e3 be 00 01 mtsr 0x4,lr ++ *[0-9a-f]*: e3 ba 00 38 mtsr 0xe0,r10 ++ *[0-9a-f]*: e3 bc 00 d1 mtsr 0x344,r12 ++ *[0-9a-f]*: e3 b9 00 4c mtsr 0x130,r9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e5 bf 00 00 mfdr pc,0x0 ++ *[0-9a-f]*: e5 bc 00 ff mfdr r12,0x3fc ++ *[0-9a-f]*: e5 b5 00 80 mfdr r5,0x200 ++ *[0-9a-f]*: e5 b4 00 7f mfdr r4,0x1fc ++ *[0-9a-f]*: e5 be 00 01 mfdr lr,0x4 ++ *[0-9a-f]*: e5 b6 00 e9 mfdr r6,0x3a4 ++ *[0-9a-f]*: e5 b5 00 09 mfdr r5,0x24 ++ *[0-9a-f]*: e5 b9 00 4b mfdr r9,0x12c ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e7 bf 00 00 mtdr 0x0,pc ++ *[0-9a-f]*: e7 bc 00 ff mtdr 0x3fc,r12 ++ *[0-9a-f]*: e7 b5 00 80 mtdr 0x200,r5 ++ *[0-9a-f]*: e7 b4 00 7f mtdr 0x1fc,r4 ++ *[0-9a-f]*: e7 be 00 01 mtdr 0x4,lr ++ *[0-9a-f]*: e7 b8 00 2d mtdr 0xb4,r8 ++ *[0-9a-f]*: e7 ba 00 b4 mtdr 0x2d0,r10 ++ *[0-9a-f]*: e7 be 00 66 mtdr 0x198,lr ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e9 b0 00 00 sleep 0x0 ++ *[0-9a-f]*: e9 b0 00 ff sleep 0xff ++ *[0-9a-f]*: e9 b0 00 80 sleep 0x80 ++ *[0-9a-f]*: e9 b0 00 7f sleep 0x7f ++ *[0-9a-f]*: e9 b0 00 01 sleep 0x1 ++ *[0-9a-f]*: e9 b0 00 fe sleep 0xfe ++ *[0-9a-f]*: e9 b0 00 0f sleep 0xf ++ *[0-9a-f]*: e9 b0 00 2b sleep 0x2b ++ ++[0-9a-f]* : ++ *[0-9a-f]*: eb b0 00 00 sync 0x0 ++ *[0-9a-f]*: eb b0 00 ff sync 0xff ++ *[0-9a-f]*: eb b0 00 80 sync 0x80 ++ *[0-9a-f]*: eb b0 00 7f sync 0x7f ++ *[0-9a-f]*: eb b0 00 01 sync 0x1 ++ *[0-9a-f]*: eb b0 00 a6 sync 0xa6 ++ *[0-9a-f]*: eb b0 00 e6 sync 0xe6 ++ *[0-9a-f]*: eb b0 00 b4 sync 0xb4 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ed bf 00 00 bld pc,0x0 ++ *[0-9a-f]*: ed bc 00 1f bld r12,0x1f ++ *[0-9a-f]*: ed b5 00 10 bld r5,0x10 ++ *[0-9a-f]*: ed b4 00 0f bld r4,0xf ++ *[0-9a-f]*: ed be 00 01 bld lr,0x1 ++ *[0-9a-f]*: ed b9 00 0f bld r9,0xf ++ *[0-9a-f]*: ed b0 00 04 bld r0,0x4 ++ *[0-9a-f]*: ed be 00 1a bld lr,0x1a ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef bf 00 00 bst pc,0x0 ++ *[0-9a-f]*: ef bc 00 1f bst r12,0x1f ++ *[0-9a-f]*: ef b5 00 10 bst r5,0x10 ++ *[0-9a-f]*: ef b4 00 0f bst r4,0xf ++ *[0-9a-f]*: ef be 00 01 bst lr,0x1 ++ *[0-9a-f]*: ef ba 00 1c bst r10,0x1c ++ *[0-9a-f]*: ef b0 00 03 bst r0,0x3 ++ *[0-9a-f]*: ef bd 00 02 bst sp,0x2 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f1 bf 00 00 sats pc,0x0 ++ *[0-9a-f]*: f1 bc 03 ff sats r12>>0x1f,0x1f ++ *[0-9a-f]*: f1 b5 02 10 sats r5>>0x10,0x10 ++ *[0-9a-f]*: f1 b4 01 ef sats r4>>0xf,0xf ++ *[0-9a-f]*: f1 be 00 21 sats lr>>0x1,0x1 ++ *[0-9a-f]*: f1 ba 02 63 sats r10>>0x3,0x13 ++ *[0-9a-f]*: f1 ba 03 42 sats r10>>0x2,0x1a ++ *[0-9a-f]*: f1 b1 00 34 sats r1>>0x14,0x1 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f1 bf 04 00 satu pc,0x0 ++ *[0-9a-f]*: f1 bc 07 ff satu r12>>0x1f,0x1f ++ *[0-9a-f]*: f1 b5 06 10 satu r5>>0x10,0x10 ++ *[0-9a-f]*: f1 b4 05 ef satu r4>>0xf,0xf ++ *[0-9a-f]*: f1 be 04 21 satu lr>>0x1,0x1 ++ *[0-9a-f]*: f1 bf 04 e5 satu pc>>0x5,0x7 ++ *[0-9a-f]*: f1 b7 04 a5 satu r7>>0x5,0x5 ++ *[0-9a-f]*: f1 b2 06 7a satu r2>>0x1a,0x13 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f3 bf 00 00 satrnds pc,0x0 ++ *[0-9a-f]*: f3 bc 03 ff satrnds r12>>0x1f,0x1f ++ *[0-9a-f]*: f3 b5 02 10 satrnds r5>>0x10,0x10 ++ *[0-9a-f]*: f3 b4 01 ef satrnds r4>>0xf,0xf ++ *[0-9a-f]*: f3 be 00 21 satrnds lr>>0x1,0x1 ++ *[0-9a-f]*: f3 b0 02 75 satrnds r0>>0x15,0x13 ++ *[0-9a-f]*: f3 bd 00 40 satrnds sp,0x2 ++ *[0-9a-f]*: f3 b7 03 a6 satrnds r7>>0x6,0x1d ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f3 bf 04 00 satrndu pc,0x0 ++ *[0-9a-f]*: f3 bc 07 ff satrndu r12>>0x1f,0x1f ++ *[0-9a-f]*: f3 b5 06 10 satrndu r5>>0x10,0x10 ++ *[0-9a-f]*: f3 b4 05 ef satrndu r4>>0xf,0xf ++ *[0-9a-f]*: f3 be 04 21 satrndu lr>>0x1,0x1 ++ *[0-9a-f]*: f3 bc 07 40 satrndu r12,0x1a ++ *[0-9a-f]*: f3 b4 04 75 satrndu r4>>0x15,0x3 ++ *[0-9a-f]*: f3 ba 06 03 satrndu r10>>0x3,0x10 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f5 bf 00 00 subfeq pc,0 ++ *[0-9a-f]*: f5 bc 0f ff subfal r12,-1 ++ *[0-9a-f]*: f5 b5 08 80 subfls r5,-128 ++ *[0-9a-f]*: f5 b4 07 7f subfpl r4,127 ++ *[0-9a-f]*: f5 be 01 01 subfne lr,1 ++ *[0-9a-f]*: f5 ba 08 08 subfls r10,8 ++ *[0-9a-f]*: f5 bb 0d 63 subfvc r11,99 ++ *[0-9a-f]*: f5 b2 0c 49 subfvs r2,73 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f7 bf 00 00 subeq pc,0 ++ *[0-9a-f]*: f7 bc 0f ff subal r12,-1 ++ *[0-9a-f]*: f7 b5 08 80 subls r5,-128 ++ *[0-9a-f]*: f7 b4 07 7f subpl r4,127 ++ *[0-9a-f]*: f7 be 01 01 subne lr,1 ++ *[0-9a-f]*: f7 bc 08 76 subls r12,118 ++ *[0-9a-f]*: f7 be 0d f4 subvc lr,-12 ++ *[0-9a-f]*: f7 b4 06 f3 submi r4,-13 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f9 bf 00 00 moveq pc,0 ++ *[0-9a-f]*: f9 bc 0f ff moval r12,-1 ++ *[0-9a-f]*: f9 b5 08 80 movls r5,-128 ++ *[0-9a-f]*: f9 b4 07 7f movpl r4,127 ++ *[0-9a-f]*: f9 be 01 01 movne lr,1 ++ *[0-9a-f]*: f9 b3 05 86 movlt r3,-122 ++ *[0-9a-f]*: f9 b8 0d 02 movvc r8,2 ++ *[0-9a-f]*: f9 b7 01 91 movne r7,-111 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e0 0f 18 00 cp\.b pc,r0 ++ *[0-9a-f]*: fe 00 18 00 cp\.b r0,pc ++ *[0-9a-f]*: f0 07 18 00 cp\.b r7,r8 ++ *[0-9a-f]*: ee 08 18 00 cp\.b r8,r7 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e0 0f 19 00 cp\.h pc,r0 ++ *[0-9a-f]*: fe 00 19 00 cp\.h r0,pc ++ *[0-9a-f]*: f0 07 19 00 cp\.h r7,r8 ++ *[0-9a-f]*: ee 08 19 00 cp\.h r8,r7 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 cf 00 7e ldm pc,r1-r6 ++ *[0-9a-f]*: e1 cc ff ff ldm r12,r0-pc ++ *[0-9a-f]*: e1 c5 80 00 ldm r5,pc ++ *[0-9a-f]*: e1 c4 7f ff ldm r4,r0-lr ++ *[0-9a-f]*: e1 ce 00 01 ldm lr,r0 ++ *[0-9a-f]*: e1 c9 40 22 ldm r9,r1,r5,lr ++ *[0-9a-f]*: e1 cb 81 ec ldm r11,r2-r3,r5-r8,pc ++ *[0-9a-f]*: e1 c6 a2 09 ldm r6,r0,r3,r9,sp,pc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e3 cf 03 c0 ldm pc\+\+,r6-r9 ++ *[0-9a-f]*: e3 cc ff ff ldm r12\+\+,r0-pc ++ *[0-9a-f]*: e3 c5 80 00 ldm r5\+\+,pc ++ *[0-9a-f]*: e3 c4 7f ff ldm r4\+\+,r0-lr ++ *[0-9a-f]*: e3 ce 00 01 ldm lr\+\+,r0 ++ *[0-9a-f]*: e3 cc d5 38 ldm r12\+\+,r3-r5,r8,r10,r12,lr-pc ++ *[0-9a-f]*: e3 ca c0 74 ldm r10\+\+,r2,r4-r6,lr-pc ++ *[0-9a-f]*: e3 c6 7e 1a ldm r6\+\+,r1,r3-r4,r9-lr ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e5 cf 01 80 ldmts pc,r7-r8 ++ *[0-9a-f]*: e5 cc ff ff ldmts r12,r0-pc ++ *[0-9a-f]*: e5 c5 80 00 ldmts r5,pc ++ *[0-9a-f]*: e5 c4 7f ff ldmts r4,r0-lr ++ *[0-9a-f]*: e5 ce 00 01 ldmts lr,r0 ++ *[0-9a-f]*: e5 c0 18 06 ldmts r0,r1-r2,r11-r12 ++ *[0-9a-f]*: e5 ce 61 97 ldmts lr,r0-r2,r4,r7-r8,sp-lr ++ *[0-9a-f]*: e5 cc c2 3b ldmts r12,r0-r1,r3-r5,r9,lr-pc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e7 cf 02 00 ldmts pc\+\+,r9 ++ *[0-9a-f]*: e7 cc ff ff ldmts r12\+\+,r0-pc ++ *[0-9a-f]*: e7 c5 80 00 ldmts r5\+\+,pc ++ *[0-9a-f]*: e7 c4 7f ff ldmts r4\+\+,r0-lr ++ *[0-9a-f]*: e7 ce 00 01 ldmts lr\+\+,r0 ++ *[0-9a-f]*: e7 cd 0a bd ldmts sp\+\+,r0,r2-r5,r7,r9,r11 ++ *[0-9a-f]*: e7 c5 0c 8e ldmts r5\+\+,r1-r3,r7,r10-r11 ++ *[0-9a-f]*: e7 c8 a1 9c ldmts r8\+\+,r2-r4,r7-r8,sp,pc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e9 cf 00 80 stm pc,r7 ++ *[0-9a-f]*: e9 cc ff ff stm r12,r0-pc ++ *[0-9a-f]*: e9 c5 80 00 stm r5,pc ++ *[0-9a-f]*: e9 c4 7f ff stm r4,r0-lr ++ *[0-9a-f]*: e9 ce 00 01 stm lr,r0 ++ *[0-9a-f]*: e9 cd 49 2c stm sp,r2-r3,r5,r8,r11,lr ++ *[0-9a-f]*: e9 c4 4c 5f stm r4,r0-r4,r6,r10-r11,lr ++ *[0-9a-f]*: e9 c9 f2 22 stm r9,r1,r5,r9,r12-pc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: eb cf 00 70 stm --pc,r4-r6 ++ *[0-9a-f]*: eb cc ff ff stm --r12,r0-pc ++ *[0-9a-f]*: eb c5 80 00 stm --r5,pc ++ *[0-9a-f]*: eb c4 7f ff stm --r4,r0-lr ++ *[0-9a-f]*: eb ce 00 01 stm --lr,r0 ++ *[0-9a-f]*: eb cb fb f1 stm --r11,r0,r4-r9,r11-pc ++ *[0-9a-f]*: eb cb 56 09 stm --r11,r0,r3,r9-r10,r12,lr ++ *[0-9a-f]*: eb c6 63 04 stm --r6,r2,r8-r9,sp-lr ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ed cf 01 00 stmts pc,r8 ++ *[0-9a-f]*: ed cc ff ff stmts r12,r0-pc ++ *[0-9a-f]*: ed c5 80 00 stmts r5,pc ++ *[0-9a-f]*: ed c4 7f ff stmts r4,r0-lr ++ *[0-9a-f]*: ed ce 00 01 stmts lr,r0 ++ *[0-9a-f]*: ed c1 c6 5b stmts r1,r0-r1,r3-r4,r6,r9-r10,lr-pc ++ *[0-9a-f]*: ed c3 1d c1 stmts r3,r0,r6-r8,r10-r12 ++ *[0-9a-f]*: ed cb d6 d1 stmts r11,r0,r4,r6-r7,r9-r10,r12,lr-pc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef cf 01 c0 stmts --pc,r6-r8 ++ *[0-9a-f]*: ef cc ff ff stmts --r12,r0-pc ++ *[0-9a-f]*: ef c5 80 00 stmts --r5,pc ++ *[0-9a-f]*: ef c4 7f ff stmts --r4,r0-lr ++ *[0-9a-f]*: ef ce 00 01 stmts --lr,r0 ++ *[0-9a-f]*: ef c2 36 19 stmts --r2,r0,r3-r4,r9-r10,r12-sp ++ *[0-9a-f]*: ef c3 c0 03 stmts --r3,r0-r1,lr-pc ++ *[0-9a-f]*: ef c0 44 7d stmts --r0,r0,r2-r6,r10,lr ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff df 00 00 ldins\.h pc:b,pc\[0\] ++ *[0-9a-f]*: f9 dc 1f ff ldins\.h r12:t,r12\[-2\] ++ *[0-9a-f]*: eb d5 18 00 ldins\.h r5:t,r5\[-4096\] ++ *[0-9a-f]*: e9 d4 07 ff ldins\.h r4:b,r4\[4094\] ++ *[0-9a-f]*: fd de 10 01 ldins\.h lr:t,lr\[2\] ++ *[0-9a-f]*: fd d0 13 c5 ldins\.h r0:t,lr\[1930\] ++ *[0-9a-f]*: ef d3 0e f5 ldins\.h r3:b,r7\[-534\] ++ *[0-9a-f]*: f9 d2 0b 9a ldins\.h r2:b,r12\[-2252\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff df 40 00 ldins\.b pc:b,pc\[0\] ++ *[0-9a-f]*: f9 dc 7f ff ldins\.b r12:t,r12\[-1\] ++ *[0-9a-f]*: eb d5 68 00 ldins\.b r5:u,r5\[-2048\] ++ *[0-9a-f]*: e9 d4 57 ff ldins\.b r4:l,r4\[2047\] ++ *[0-9a-f]*: fd de 50 01 ldins\.b lr:l,lr\[1\] ++ *[0-9a-f]*: e9 d6 7d 6a ldins\.b r6:t,r4\[-662\] ++ *[0-9a-f]*: e3 d5 4f 69 ldins\.b r5:b,r1\[-151\] ++ *[0-9a-f]*: f7 da 78 7d ldins\.b r10:t,r11\[-1923\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff df 20 00 ldswp\.sh pc,pc\[0\] ++ *[0-9a-f]*: f9 dc 2f ff ldswp\.sh r12,r12\[-2\] ++ *[0-9a-f]*: eb d5 28 00 ldswp\.sh r5,r5\[-4096\] ++ *[0-9a-f]*: e9 d4 27 ff ldswp\.sh r4,r4\[4094\] ++ *[0-9a-f]*: fd de 20 01 ldswp\.sh lr,lr\[2\] ++ *[0-9a-f]*: f5 d9 27 84 ldswp\.sh r9,r10\[3848\] ++ *[0-9a-f]*: f9 d4 2c 04 ldswp\.sh r4,r12\[-2040\] ++ *[0-9a-f]*: e5 da 26 08 ldswp\.sh r10,r2\[3088\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff df 30 00 ldswp\.uh pc,pc\[0\] ++ *[0-9a-f]*: f9 dc 3f ff ldswp\.uh r12,r12\[-2\] ++ *[0-9a-f]*: eb d5 38 00 ldswp\.uh r5,r5\[-4096\] ++ *[0-9a-f]*: e9 d4 37 ff ldswp\.uh r4,r4\[4094\] ++ *[0-9a-f]*: fd de 30 01 ldswp\.uh lr,lr\[2\] ++ *[0-9a-f]*: f3 d4 37 46 ldswp\.uh r4,r9\[3724\] ++ *[0-9a-f]*: fb de 3c bc ldswp\.uh lr,sp\[-1672\] ++ *[0-9a-f]*: f9 d8 38 7d ldswp\.uh r8,r12\[-3846\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff df 80 00 ldswp\.w pc,pc\[0\] ++ *[0-9a-f]*: f9 dc 8f ff ldswp\.w r12,r12\[-4\] ++ *[0-9a-f]*: eb d5 88 00 ldswp\.w r5,r5\[-8192\] ++ *[0-9a-f]*: e9 d4 87 ff ldswp\.w r4,r4\[8188\] ++ *[0-9a-f]*: fd de 80 01 ldswp\.w lr,lr\[4\] ++ *[0-9a-f]*: ef dd 81 d1 ldswp\.w sp,r7\[1860\] ++ *[0-9a-f]*: eb df 8c c1 ldswp\.w pc,r5\[-3324\] ++ *[0-9a-f]*: f5 dc 8c c8 ldswp\.w r12,r10\[-3296\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff df 90 00 stswp\.h pc\[0\],pc ++ *[0-9a-f]*: f9 dc 9f ff stswp\.h r12\[-2\],r12 ++ *[0-9a-f]*: eb d5 98 00 stswp\.h r5\[-4096\],r5 ++ *[0-9a-f]*: e9 d4 97 ff stswp\.h r4\[4094\],r4 ++ *[0-9a-f]*: fd de 90 01 stswp\.h lr\[2\],lr ++ *[0-9a-f]*: ef da 90 20 stswp\.h r7\[64\],r10 ++ *[0-9a-f]*: f5 d2 95 e8 stswp\.h r10\[3024\],r2 ++ *[0-9a-f]*: e1 da 9b 74 stswp\.h r0\[-2328\],r10 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff df a0 00 stswp\.w pc\[0\],pc ++ *[0-9a-f]*: f9 dc af ff stswp\.w r12\[-4\],r12 ++ *[0-9a-f]*: eb d5 a8 00 stswp\.w r5\[-8192\],r5 ++ *[0-9a-f]*: e9 d4 a7 ff stswp\.w r4\[8188\],r4 ++ *[0-9a-f]*: fd de a0 01 stswp\.w lr\[4\],lr ++ *[0-9a-f]*: ff d8 a1 21 stswp\.w pc\[1156\],r8 ++ *[0-9a-f]*: fb da a7 ce stswp\.w sp\[7992\],r10 ++ *[0-9a-f]*: f1 d5 ae db stswp\.w r8\[-1172\],r5 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff ef 00 0f and pc,pc,pc ++ *[0-9a-f]*: f9 ec 01 fc and r12,r12,r12<<0x1f ++ *[0-9a-f]*: eb e5 01 05 and r5,r5,r5<<0x10 ++ *[0-9a-f]*: e9 e4 00 f4 and r4,r4,r4<<0xf ++ *[0-9a-f]*: fd ee 00 1e and lr,lr,lr<<0x1 ++ *[0-9a-f]*: e5 e1 00 1a and r10,r2,r1<<0x1 ++ *[0-9a-f]*: f1 eb 01 bc and r12,r8,r11<<0x1b ++ *[0-9a-f]*: ef e0 00 3a and r10,r7,r0<<0x3 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff ef 02 0f and pc,pc,pc ++ *[0-9a-f]*: f9 ec 03 fc and r12,r12,r12>>0x1f ++ *[0-9a-f]*: eb e5 03 05 and r5,r5,r5>>0x10 ++ *[0-9a-f]*: e9 e4 02 f4 and r4,r4,r4>>0xf ++ *[0-9a-f]*: fd ee 02 1e and lr,lr,lr>>0x1 ++ *[0-9a-f]*: f1 e7 03 1c and r12,r8,r7>>0x11 ++ *[0-9a-f]*: e9 e9 03 4f and pc,r4,r9>>0x14 ++ *[0-9a-f]*: f3 ea 02 ca and r10,r9,r10>>0xc ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff ef 10 0f or pc,pc,pc ++ *[0-9a-f]*: f9 ec 11 fc or r12,r12,r12<<0x1f ++ *[0-9a-f]*: eb e5 11 05 or r5,r5,r5<<0x10 ++ *[0-9a-f]*: e9 e4 10 f4 or r4,r4,r4<<0xf ++ *[0-9a-f]*: fd ee 10 1e or lr,lr,lr<<0x1 ++ *[0-9a-f]*: fb eb 11 d8 or r8,sp,r11<<0x1d ++ *[0-9a-f]*: f3 e2 11 cf or pc,r9,r2<<0x1c ++ *[0-9a-f]*: e3 e2 10 35 or r5,r1,r2<<0x3 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff ef 12 0f or pc,pc,pc ++ *[0-9a-f]*: f9 ec 13 fc or r12,r12,r12>>0x1f ++ *[0-9a-f]*: eb e5 13 05 or r5,r5,r5>>0x10 ++ *[0-9a-f]*: e9 e4 12 f4 or r4,r4,r4>>0xf ++ *[0-9a-f]*: fd ee 12 1e or lr,lr,lr>>0x1 ++ *[0-9a-f]*: fb ed 12 21 or r1,sp,sp>>0x2 ++ *[0-9a-f]*: e3 e1 13 d0 or r0,r1,r1>>0x1d ++ *[0-9a-f]*: f9 e8 12 84 or r4,r12,r8>>0x8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff ef 20 0f eor pc,pc,pc ++ *[0-9a-f]*: f9 ec 21 fc eor r12,r12,r12<<0x1f ++ *[0-9a-f]*: eb e5 21 05 eor r5,r5,r5<<0x10 ++ *[0-9a-f]*: e9 e4 20 f4 eor r4,r4,r4<<0xf ++ *[0-9a-f]*: fd ee 20 1e eor lr,lr,lr<<0x1 ++ *[0-9a-f]*: f3 e4 20 ba eor r10,r9,r4<<0xb ++ *[0-9a-f]*: e1 e1 21 f4 eor r4,r0,r1<<0x1f ++ *[0-9a-f]*: e5 ec 20 d6 eor r6,r2,r12<<0xd ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff ef 22 0f eor pc,pc,pc ++ *[0-9a-f]*: f9 ec 23 fc eor r12,r12,r12>>0x1f ++ *[0-9a-f]*: eb e5 23 05 eor r5,r5,r5>>0x10 ++ *[0-9a-f]*: e9 e4 22 f4 eor r4,r4,r4>>0xf ++ *[0-9a-f]*: fd ee 22 1e eor lr,lr,lr>>0x1 ++ *[0-9a-f]*: eb e5 23 65 eor r5,r5,r5>>0x16 ++ *[0-9a-f]*: e3 ee 22 3a eor r10,r1,lr>>0x3 ++ *[0-9a-f]*: fd ed 23 a7 eor r7,lr,sp>>0x1a ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff ef 8f 0f sthh\.w pc\[pc\],pc:b,pc:b ++ *[0-9a-f]*: f9 ec bc 3c sthh\.w r12\[r12<<0x3\],r12:t,r12:t ++ *[0-9a-f]*: eb e5 b5 25 sthh\.w r5\[r5<<0x2\],r5:t,r5:t ++ *[0-9a-f]*: e9 e4 84 14 sthh\.w r4\[r4<<0x1\],r4:b,r4:b ++ *[0-9a-f]*: fd ee be 1e sthh\.w lr\[lr<<0x1\],lr:t,lr:t ++ *[0-9a-f]*: e3 ec b6 3d sthh\.w sp\[r6<<0x3\],r1:t,r12:t ++ *[0-9a-f]*: f3 e9 b6 06 sthh\.w r6\[r6\],r9:t,r9:t ++ *[0-9a-f]*: e1 eb 93 0a sthh\.w r10\[r3\],r0:b,r11:t ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff ef c0 0f sthh\.w pc\[0x0\],pc:b,pc:b ++ *[0-9a-f]*: f9 ec ff fc sthh\.w r12\[0x3fc\],r12:t,r12:t ++ *[0-9a-f]*: eb e5 f8 05 sthh\.w r5\[0x200\],r5:t,r5:t ++ *[0-9a-f]*: e9 e4 c7 f4 sthh\.w r4\[0x1fc\],r4:b,r4:b ++ *[0-9a-f]*: fd ee f0 1e sthh\.w lr\[0x4\],lr:t,lr:t ++ *[0-9a-f]*: f3 e0 e6 54 sthh\.w r4\[0x194\],r9:t,r0:b ++ *[0-9a-f]*: e5 ea e5 78 sthh\.w r8\[0x15c\],r2:t,r10:b ++ *[0-9a-f]*: f3 e2 c2 bd sthh\.w sp\[0xac\],r9:b,r2:b ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a0 00 00 cop cp0,cr0,cr0,cr0,0x0 ++ *[0-9a-f]*: e7 af ff ff cop cp7,cr15,cr15,cr15,0x7f ++ *[0-9a-f]*: e3 a8 75 55 cop cp3,cr5,cr5,cr5,0x31 ++ *[0-9a-f]*: e3 a8 44 44 cop cp2,cr4,cr4,cr4,0x30 ++ *[0-9a-f]*: e5 ad a8 37 cop cp5,cr8,cr3,cr7,0x5a ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e9 a0 00 00 ldc\.w cp0,cr0,r0\[0x0\] ++ *[0-9a-f]*: e9 af ef ff ldc\.w cp7,cr15,pc\[0x3fc\] ++ *[0-9a-f]*: e9 a5 65 80 ldc\.w cp3,cr5,r5\[0x200\] ++ *[0-9a-f]*: e9 a4 44 7f ldc\.w cp2,cr4,r4\[0x1fc\] ++ *[0-9a-f]*: e9 ad 89 24 ldc\.w cp4,cr9,sp\[0x90\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef a0 00 40 ldc\.w cp0,cr0,--r0 ++ *[0-9a-f]*: ef af ef 40 ldc\.w cp7,cr15,--pc ++ *[0-9a-f]*: ef a5 65 40 ldc\.w cp3,cr5,--r5 ++ *[0-9a-f]*: ef a4 44 40 ldc\.w cp2,cr4,--r4 ++ *[0-9a-f]*: ef ad 89 40 ldc\.w cp4,cr9,--sp ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef a0 10 00 ldc\.w cp0,cr0,r0\[r0\] ++ *[0-9a-f]*: ef af ff 3f ldc\.w cp7,cr15,pc\[pc<<0x3\] ++ *[0-9a-f]*: ef a5 75 24 ldc\.w cp3,cr5,r5\[r4<<0x2\] ++ *[0-9a-f]*: ef a4 54 13 ldc\.w cp2,cr4,r4\[r3<<0x1\] ++ *[0-9a-f]*: ef ad 99 0c ldc\.w cp4,cr9,sp\[r12\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e9 a0 10 00 ldc\.d cp0,cr0,r0\[0x0\] ++ *[0-9a-f]*: e9 af fe ff ldc\.d cp7,cr14,pc\[0x3fc\] ++ *[0-9a-f]*: e9 a5 76 80 ldc\.d cp3,cr6,r5\[0x200\] ++ *[0-9a-f]*: e9 a4 54 7f ldc\.d cp2,cr4,r4\[0x1fc\] ++ *[0-9a-f]*: e9 ad 98 24 ldc\.d cp4,cr8,sp\[0x90\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef a0 00 50 ldc\.d cp0,cr0,--r0 ++ *[0-9a-f]*: ef af ee 50 ldc\.d cp7,cr14,--pc ++ *[0-9a-f]*: ef a5 66 50 ldc\.d cp3,cr6,--r5 ++ *[0-9a-f]*: ef a4 44 50 ldc\.d cp2,cr4,--r4 ++ *[0-9a-f]*: ef ad 88 50 ldc\.d cp4,cr8,--sp ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef a0 10 40 ldc\.d cp0,cr0,r0\[r0\] ++ *[0-9a-f]*: ef af fe 7f ldc\.d cp7,cr14,pc\[pc<<0x3\] ++ *[0-9a-f]*: ef a5 76 64 ldc\.d cp3,cr6,r5\[r4<<0x2\] ++ *[0-9a-f]*: ef a4 54 53 ldc\.d cp2,cr4,r4\[r3<<0x1\] ++ *[0-9a-f]*: ef ad 98 4c ldc\.d cp4,cr8,sp\[r12\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: eb a0 00 00 stc\.w cp0,r0\[0x0\],cr0 ++ *[0-9a-f]*: eb af ef ff stc\.w cp7,pc\[0x3fc\],cr15 ++ *[0-9a-f]*: eb a5 65 80 stc\.w cp3,r5\[0x200\],cr5 ++ *[0-9a-f]*: eb a4 44 7f stc\.w cp2,r4\[0x1fc\],cr4 ++ *[0-9a-f]*: eb ad 89 24 stc\.w cp4,sp\[0x90\],cr9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef a0 00 60 stc\.w cp0,r0\+\+,cr0 ++ *[0-9a-f]*: ef af ef 60 stc\.w cp7,pc\+\+,cr15 ++ *[0-9a-f]*: ef a5 65 60 stc\.w cp3,r5\+\+,cr5 ++ *[0-9a-f]*: ef a4 44 60 stc\.w cp2,r4\+\+,cr4 ++ *[0-9a-f]*: ef ad 89 60 stc\.w cp4,sp\+\+,cr9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef a0 10 80 stc\.w cp0,r0\[r0\],cr0 ++ *[0-9a-f]*: ef af ff bf stc\.w cp7,pc\[pc<<0x3\],cr15 ++ *[0-9a-f]*: ef a5 75 a4 stc\.w cp3,r5\[r4<<0x2\],cr5 ++ *[0-9a-f]*: ef a4 54 93 stc\.w cp2,r4\[r3<<0x1\],cr4 ++ *[0-9a-f]*: ef ad 99 8c stc\.w cp4,sp\[r12\],cr9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: eb a0 10 00 stc\.d cp0,r0\[0x0\],cr0 ++ *[0-9a-f]*: eb af fe ff stc\.d cp7,pc\[0x3fc\],cr14 ++ *[0-9a-f]*: eb a5 76 80 stc\.d cp3,r5\[0x200\],cr6 ++ *[0-9a-f]*: eb a4 54 7f stc\.d cp2,r4\[0x1fc\],cr4 ++ *[0-9a-f]*: eb ad 98 24 stc\.d cp4,sp\[0x90\],cr8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef a0 00 70 stc\.d cp0,r0\+\+,cr0 ++ *[0-9a-f]*: ef af ee 70 stc\.d cp7,pc\+\+,cr14 ++ *[0-9a-f]*: ef a5 66 70 stc\.d cp3,r5\+\+,cr6 ++ *[0-9a-f]*: ef a4 44 70 stc\.d cp2,r4\+\+,cr4 ++ *[0-9a-f]*: ef ad 88 70 stc\.d cp4,sp\+\+,cr8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef a0 10 c0 stc\.d cp0,r0\[r0\],cr0 ++ *[0-9a-f]*: ef af fe ff stc\.d cp7,pc\[pc<<0x3\],cr14 ++ *[0-9a-f]*: ef a5 76 e4 stc\.d cp3,r5\[r4<<0x2\],cr6 ++ *[0-9a-f]*: ef a4 54 d3 stc\.d cp2,r4\[r3<<0x1\],cr4 ++ *[0-9a-f]*: ef ad 98 cc stc\.d cp4,sp\[r12\],cr8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f1 a0 00 00 ldc0\.w cr0,r0\[0x0\] ++ *[0-9a-f]*: f1 af ff ff ldc0\.w cr15,pc\[0x3ffc\] ++ *[0-9a-f]*: f1 a5 85 00 ldc0\.w cr5,r5\[0x2000\] ++ *[0-9a-f]*: f1 a4 74 ff ldc0\.w cr4,r4\[0x1ffc\] ++ *[0-9a-f]*: f1 ad 09 93 ldc0\.w cr9,sp\[0x24c\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f3 a0 00 00 ldc0\.d cr0,r0\[0x0\] ++ *[0-9a-f]*: f3 af fe ff ldc0\.d cr14,pc\[0x3ffc\] ++ *[0-9a-f]*: f3 a5 86 00 ldc0\.d cr6,r5\[0x2000\] ++ *[0-9a-f]*: f3 a4 74 ff ldc0\.d cr4,r4\[0x1ffc\] ++ *[0-9a-f]*: f3 ad 08 93 ldc0\.d cr8,sp\[0x24c\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f5 a0 00 00 stc0\.w r0\[0x0\],cr0 ++ *[0-9a-f]*: f5 af ff ff stc0\.w pc\[0x3ffc\],cr15 ++ *[0-9a-f]*: f5 a5 85 00 stc0\.w r5\[0x2000\],cr5 ++ *[0-9a-f]*: f5 a4 74 ff stc0\.w r4\[0x1ffc\],cr4 ++ *[0-9a-f]*: f5 ad 09 93 stc0\.w sp\[0x24c\],cr9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f7 a0 00 00 stc0\.d r0\[0x0\],cr0 ++ *[0-9a-f]*: f7 af fe ff stc0\.d pc\[0x3ffc\],cr14 ++ *[0-9a-f]*: f7 a5 86 00 stc0\.d r5\[0x2000\],cr6 ++ *[0-9a-f]*: f7 a4 74 ff stc0\.d r4\[0x1ffc\],cr4 ++ *[0-9a-f]*: f7 ad 08 93 stc0\.d sp\[0x24c\],cr8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f6 10 00 00 memc 0,0x0 ++ *[0-9a-f]*: f6 1f ff ff memc -4,0x1f ++ *[0-9a-f]*: f6 18 40 00 memc -65536,0x10 ++ *[0-9a-f]*: f6 17 bf ff memc 65532,0xf ++ ++[0-9a-f]* : ++ *[0-9a-f]*: f8 10 00 00 mems 0,0x0 ++ *[0-9a-f]*: f8 1f ff ff mems -4,0x1f ++ *[0-9a-f]*: f8 18 40 00 mems -65536,0x10 ++ *[0-9a-f]*: f8 17 bf ff mems 65532,0xf ++ ++[0-9a-f]* : ++ *[0-9a-f]*: fa 10 00 00 memt 0,0x0 ++ *[0-9a-f]*: fa 1f ff ff memt -4,0x1f ++ *[0-9a-f]*: fa 18 40 00 memt -65536,0x10 ++ *[0-9a-f]*: fa 17 bf ff memt 65532,0xf ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 70 00 00 stcond r0\[0\],r0 ++ *[0-9a-f]*: ff 7f ff ff stcond pc\[-1\],pc ++ *[0-9a-f]*: f1 77 80 00 stcond r8\[-32768\],r7 ++ *[0-9a-f]*: ef 78 7f ff stcond r7\[32767\],r8 ++ *[0-9a-f]*: eb 7a 12 34 stcond r5\[4660\],r10 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ed af 00 ff ldcm\.w cp0,pc,cr0-cr7 ++ *[0-9a-f]*: ed a0 e0 01 ldcm\.w cp7,r0,cr0 ++ *[0-9a-f]*: ed a4 90 7f ldcm\.w cp4,r4\+\+,cr0-cr6 ++ *[0-9a-f]*: ed a7 60 80 ldcm\.w cp3,r7,cr7 ++ *[0-9a-f]*: ed ac 30 72 ldcm\.w cp1,r12\+\+,cr1,cr4-cr6 ++ *[0-9a-f]*: ed af 01 ff ldcm\.w cp0,pc,cr8-cr15 ++ *[0-9a-f]*: ed a0 e1 01 ldcm\.w cp7,r0,cr8 ++ *[0-9a-f]*: ed a4 91 7f ldcm\.w cp4,r4\+\+,cr8-cr14 ++ *[0-9a-f]*: ed a7 61 80 ldcm\.w cp3,r7,cr15 ++ *[0-9a-f]*: ed ac 31 72 ldcm\.w cp1,r12\+\+,cr9,cr12-cr14 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ed af 04 ff ldcm\.d cp0,pc,cr0-cr15 ++ *[0-9a-f]*: ed a0 e4 01 ldcm\.d cp7,r0,cr0-cr1 ++ *[0-9a-f]*: ed a4 94 7f ldcm\.d cp4,r4\+\+,cr0-cr13 ++ *[0-9a-f]*: ed a7 64 80 ldcm\.d cp3,r7,cr14-cr15 ++ *[0-9a-f]*: ed ac 54 93 ldcm\.d cp2,r12\+\+,cr0-cr3,cr8-cr9,cr14-cr15 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ed af 02 ff stcm\.w cp0,pc,cr0-cr7 ++ *[0-9a-f]*: ed a0 e2 01 stcm\.w cp7,r0,cr0 ++ *[0-9a-f]*: ed a4 92 7f stcm\.w cp4,--r4,cr0-cr6 ++ *[0-9a-f]*: ed a7 62 80 stcm\.w cp3,r7,cr7 ++ *[0-9a-f]*: ed ac 32 72 stcm\.w cp1,--r12,cr1,cr4-cr6 ++ *[0-9a-f]*: ed af 03 ff stcm\.w cp0,pc,cr8-cr15 ++ *[0-9a-f]*: ed a0 e3 01 stcm\.w cp7,r0,cr8 ++ *[0-9a-f]*: ed a4 93 7f stcm\.w cp4,--r4,cr8-cr14 ++ *[0-9a-f]*: ed a7 63 80 stcm\.w cp3,r7,cr15 ++ *[0-9a-f]*: ed ac 33 72 stcm\.w cp1,--r12,cr9,cr12-cr14 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ed af 05 ff stcm\.d cp0,pc,cr0-cr15 ++ *[0-9a-f]*: ed a0 e5 01 stcm\.d cp7,r0,cr0-cr1 ++ *[0-9a-f]*: ed a4 95 7f stcm\.d cp4,--r4,cr0-cr13 ++ *[0-9a-f]*: ed a7 65 80 stcm\.d cp3,r7,cr14-cr15 ++ *[0-9a-f]*: ed ac 55 93 stcm\.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef af ef 00 mvcr\.w cp7,pc,cr15 ++ *[0-9a-f]*: ef a0 00 00 mvcr\.w cp0,r0,cr0 ++ *[0-9a-f]*: ef af 0f 00 mvcr\.w cp0,pc,cr15 ++ *[0-9a-f]*: ef a0 ef 00 mvcr\.w cp7,r0,cr15 ++ *[0-9a-f]*: ef af e0 00 mvcr\.w cp7,pc,cr0 ++ *[0-9a-f]*: ef a7 88 00 mvcr\.w cp4,r7,cr8 ++ *[0-9a-f]*: ef a8 67 00 mvcr\.w cp3,r8,cr7 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef ae ee 10 mvcr\.d cp7,lr,cr14 ++ *[0-9a-f]*: ef a0 00 10 mvcr\.d cp0,r0,cr0 ++ *[0-9a-f]*: ef ae 0e 10 mvcr\.d cp0,lr,cr14 ++ *[0-9a-f]*: ef a0 ee 10 mvcr\.d cp7,r0,cr14 ++ *[0-9a-f]*: ef ae e0 10 mvcr\.d cp7,lr,cr0 ++ *[0-9a-f]*: ef a6 88 10 mvcr\.d cp4,r6,cr8 ++ *[0-9a-f]*: ef a8 66 10 mvcr\.d cp3,r8,cr6 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef af ef 20 mvrc\.w cp7,cr15,pc ++ *[0-9a-f]*: ef a0 00 20 mvrc\.w cp0,cr0,r0 ++ *[0-9a-f]*: ef af 0f 20 mvrc\.w cp0,cr15,pc ++ *[0-9a-f]*: ef a0 ef 20 mvrc\.w cp7,cr15,r0 ++ *[0-9a-f]*: ef af e0 20 mvrc\.w cp7,cr0,pc ++ *[0-9a-f]*: ef a7 88 20 mvrc\.w cp4,cr8,r7 ++ *[0-9a-f]*: ef a8 67 20 mvrc\.w cp3,cr7,r8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef ae ee 30 mvrc\.d cp7,cr14,lr ++ *[0-9a-f]*: ef a0 00 30 mvrc\.d cp0,cr0,r0 ++ *[0-9a-f]*: ef ae 0e 30 mvrc\.d cp0,cr14,lr ++ *[0-9a-f]*: ef a0 ee 30 mvrc\.d cp7,cr14,r0 ++ *[0-9a-f]*: ef ae e0 30 mvrc\.d cp7,cr0,lr ++ *[0-9a-f]*: ef a6 88 30 mvrc\.d cp4,cr8,r6 ++ *[0-9a-f]*: ef a8 66 30 mvrc\.d cp3,cr6,r8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff df b3 ff bfexts pc,pc,0x1f,0x1f ++ *[0-9a-f]*: e1 d0 b0 00 bfexts r0,r0,0x0,0x0 ++ *[0-9a-f]*: e1 df b3 ff bfexts r0,pc,0x1f,0x1f ++ *[0-9a-f]*: ff d0 b3 ff bfexts pc,r0,0x1f,0x1f ++ *[0-9a-f]*: ff df b0 1f bfexts pc,pc,0x0,0x1f ++ *[0-9a-f]*: ff df b3 e0 bfexts pc,pc,0x1f,0x0 ++ *[0-9a-f]*: ef d8 b1 f0 bfexts r7,r8,0xf,0x10 ++ *[0-9a-f]*: f1 d7 b2 0f bfexts r8,r7,0x10,0xf ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff df c3 ff bfextu pc,pc,0x1f,0x1f ++ *[0-9a-f]*: e1 d0 c0 00 bfextu r0,r0,0x0,0x0 ++ *[0-9a-f]*: e1 df c3 ff bfextu r0,pc,0x1f,0x1f ++ *[0-9a-f]*: ff d0 c3 ff bfextu pc,r0,0x1f,0x1f ++ *[0-9a-f]*: ff df c0 1f bfextu pc,pc,0x0,0x1f ++ *[0-9a-f]*: ff df c3 e0 bfextu pc,pc,0x1f,0x0 ++ *[0-9a-f]*: ef d8 c1 f0 bfextu r7,r8,0xf,0x10 ++ *[0-9a-f]*: f1 d7 c2 0f bfextu r8,r7,0x10,0xf ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ff df d3 ff bfins pc,pc,0x1f,0x1f ++ *[0-9a-f]*: e1 d0 d0 00 bfins r0,r0,0x0,0x0 ++ *[0-9a-f]*: e1 df d3 ff bfins r0,pc,0x1f,0x1f ++ *[0-9a-f]*: ff d0 d3 ff bfins pc,r0,0x1f,0x1f ++ *[0-9a-f]*: ff df d0 1f bfins pc,pc,0x0,0x1f ++ *[0-9a-f]*: ff df d3 e0 bfins pc,pc,0x1f,0x0 ++ *[0-9a-f]*: ef d8 d1 f0 bfins r7,r8,0xf,0x10 ++ *[0-9a-f]*: f1 d7 d2 0f bfins r8,r7,0x10,0xf +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/allinsn.exp binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/allinsn.exp +--- binutils-2.17/gas/testsuite/gas/avr32/allinsn.exp 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/allinsn.exp 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,5 @@ ++# AVR32 assembler testsuite. -*- Tcl -*- ++ ++if [istarget avr32-*-*] { ++ run_dump_test "allinsn" ++} +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/allinsn.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/allinsn.s +--- binutils-2.17/gas/testsuite/gas/avr32/allinsn.s 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/allinsn.s 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,3242 @@ ++ .data ++foodata: .word 42 ++ .text ++footext: ++ .text ++ .global ld_d5 ++ld_d5: ++ ld.d lr,pc[pc<<3] ++ ld.d r0,r0[r0<<0] ++ ld.d r6,r5[r5<<2] ++ ld.d r4,r4[r4<<1] ++ ld.d lr,lr[lr<<1] ++ ld.d r10,r3[sp<<2] ++ ld.d r8,r10[r6<<2] ++ ld.d r2,r7[r9<<0] ++ .text ++ .global ld_w5 ++ld_w5: ++ ld.w pc,pc[pc<<0] ++ ld.w r12,r12[r12<<3] ++ ld.w r5,r5[r5<<2] ++ ld.w r4,r4[r4<<1] ++ ld.w lr,lr[lr<<1] ++ ld.w r2,r9[r9<<0] ++ ld.w r11,r2[r6<<0] ++ ld.w r0,r2[sp<<3] ++ .text ++ .global ld_sh5 ++ld_sh5: ++ ld.sh pc,pc[pc<<0] ++ ld.sh r12,r12[r12<<3] ++ ld.sh r5,r5[r5<<2] ++ ld.sh r4,r4[r4<<1] ++ ld.sh lr,lr[lr<<1] ++ ld.sh r11,r0[pc<<2] ++ ld.sh r10,sp[r6<<2] ++ ld.sh r12,r2[r2<<0] ++ .text ++ .global ld_uh5 ++ld_uh5: ++ ld.uh pc,pc[pc<<0] ++ ld.uh r12,r12[r12<<3] ++ ld.uh r5,r5[r5<<2] ++ ld.uh r4,r4[r4<<1] ++ ld.uh lr,lr[lr<<1] ++ ld.uh r8,pc[lr<<3] ++ ld.uh r6,r1[pc<<1] ++ ld.uh r6,lr[sp<<1] ++ .text ++ .global ld_sb2 ++ld_sb2: ++ ld.sb pc,pc[pc<<0] ++ ld.sb r12,r12[r12<<3] ++ ld.sb r5,r5[r5<<2] ++ ld.sb r4,r4[r4<<1] ++ ld.sb lr,lr[lr<<1] ++ ld.sb r9,r1[pc<<3] ++ ld.sb r0,r3[r11<<1] ++ ld.sb r10,r5[r5<<1] ++ .text ++ .global ld_ub5 ++ld_ub5: ++ ld.ub pc,pc[pc<<0] ++ ld.ub r12,r12[r12<<3] ++ ld.ub r5,r5[r5<<2] ++ ld.ub r4,r4[r4<<1] ++ ld.ub lr,lr[lr<<1] ++ ld.ub r6,r12[r7<<3] ++ ld.ub r2,r6[r12<<0] ++ ld.ub r0,r7[r11<<1] ++ .text ++ .global st_d5 ++st_d5: ++ st.d pc[pc<<0],r14 ++ st.d r12[r12<<3],r12 ++ st.d r5[r5<<2],r6 ++ st.d r4[r4<<1],r4 ++ st.d lr[lr<<1],lr ++ st.d r1[r9<<1],r4 ++ st.d r10[r2<<1],r4 ++ st.d r12[r6<<0],lr ++ .text ++ .global st_w5 ++st_w5: ++ st.w pc[pc<<0],pc ++ st.w r12[r12<<3],r12 ++ st.w r5[r5<<2],r5 ++ st.w r4[r4<<1],r4 ++ st.w lr[lr<<1],lr ++ st.w r1[r10<<0],r3 ++ st.w r0[r10<<1],r9 ++ st.w r4[r5<<3],pc ++ .text ++ .global st_h5 ++st_h5: ++ st.h pc[pc<<0],pc ++ st.h r12[r12<<3],r12 ++ st.h r5[r5<<2],r5 ++ st.h r4[r4<<1],r4 ++ st.h lr[lr<<1],lr ++ st.h r2[r9<<0],r11 ++ st.h r5[r1<<2],r12 ++ st.h pc[r8<<2],r3 ++ .text ++ .global st_b5 ++st_b5: ++ st.b pc[pc<<0],pc ++ st.b r12[r12<<3],r12 ++ st.b r5[r5<<2],r5 ++ st.b r4[r4<<1],r4 ++ st.b lr[lr<<1],lr ++ st.b r1[r8<<1],r6 ++ st.b lr[lr<<3],r1 ++ st.b r5[r0<<2],pc ++ .text ++ .global divs ++divs: ++ divs pc,pc,pc ++ divs r12,r12,r12 ++ divs r5,r5,r5 ++ divs r4,r4,r4 ++ divs lr,lr,lr ++ divs r3,pc,pc ++ divs r9,r12,r2 ++ divs r7,r4,r1 ++ .text ++ .global add1 ++add1: ++ add pc,pc ++ add r12,r12 ++ add r5,r5 ++ add r4,r4 ++ add lr,lr ++ add r12,r9 ++ add r6,r3 ++ add r10,r12 ++ .text ++ .global sub1 ++sub1: ++ sub pc,pc ++ sub r12,r12 ++ sub r5,r5 ++ sub r4,r4 ++ sub lr,lr ++ sub lr,r6 ++ sub r0,sp ++ sub r6,r12 ++ .text ++ .global rsub1 ++rsub1: ++ rsub pc,pc ++ rsub r12,r12 ++ rsub r5,r5 ++ rsub r4,r4 ++ rsub lr,lr ++ rsub r11,sp ++ rsub r7,r4 ++ rsub r9,r1 ++ .text ++ .global cp1 ++cp1: ++ cp pc,pc ++ cp r12,r12 ++ cp r5,r5 ++ cp r4,r4 ++ cp lr,lr ++ cp r6,r2 ++ cp r0,r9 ++ cp r3,sp ++ .text ++ .global or1 ++or1: ++ or pc,pc ++ or r12,r12 ++ or r5,r5 ++ or r4,r4 ++ or lr,lr ++ or r4,r9 ++ or r11,r4 ++ or r4,r0 ++ .text ++ .global eor1 ++eor1: ++ eor pc,pc ++ eor r12,r12 ++ eor r5,r5 ++ eor r4,r4 ++ eor lr,lr ++ eor r12,r11 ++ eor r0,r1 ++ eor r5,pc ++ .text ++ .global and1 ++and1: ++ and pc,pc ++ and r12,r12 ++ and r5,r5 ++ and r4,r4 ++ and lr,lr ++ and r8,r1 ++ and r0,sp ++ and r10,r5 ++ .text ++ .global tst ++tst: ++ tst pc,pc ++ tst r12,r12 ++ tst r5,r5 ++ tst r4,r4 ++ tst lr,lr ++ tst r0,r12 ++ tst r10,r6 ++ tst sp,r4 ++ .text ++ .global andn ++andn: ++ andn pc,pc ++ andn r12,r12 ++ andn r5,r5 ++ andn r4,r4 ++ andn lr,lr ++ andn r9,r12 ++ andn r11,sp ++ andn r12,r5 ++ .text ++ .global mov3 ++mov3: ++ mov pc,pc ++ mov r12,r12 ++ mov r5,r5 ++ mov r4,r4 ++ mov lr,lr ++ mov r5,r9 ++ mov r11,r11 ++ mov r2,lr ++ .text ++ .global st_w1 ++st_w1: ++ st.w pc++,pc ++ st.w r12++,r12 ++ st.w r5++,r5 ++ st.w r4++,r4 ++ st.w lr++,lr ++ st.w r1++,r11 ++ st.w sp++,r0 ++ st.w sp++,r1 ++ .text ++ .global st_h1 ++st_h1: ++ st.h pc++,pc ++ st.h r12++,r12 ++ st.h r5++,r5 ++ st.h r4++,r4 ++ st.h lr++,lr ++ st.h r12++,sp ++ st.h r7++,lr ++ st.h r7++,r4 ++ .text ++ .global st_b1 ++st_b1: ++ st.b pc++,pc ++ st.b r12++,r12 ++ st.b r5++,r5 ++ st.b r4++,r4 ++ st.b lr++,lr ++ st.b r9++,sp ++ st.b r1++,sp ++ st.b r0++,r4 ++ .text ++ .global st_w2 ++st_w2: ++ st.w --pc,pc ++ st.w --r12,r12 ++ st.w --r5,r5 ++ st.w --r4,r4 ++ st.w --lr,lr ++ st.w --r1,r7 ++ st.w --r3,r9 ++ st.w --r5,r5 ++ .text ++ .global st_h2 ++st_h2: ++ st.h --pc,pc ++ st.h --r12,r12 ++ st.h --r5,r5 ++ st.h --r4,r4 ++ st.h --lr,lr ++ st.h --r5,r7 ++ st.h --r8,r8 ++ st.h --r7,r2 ++ .text ++ .global st_b2 ++st_b2: ++ st.b --pc,pc ++ st.b --r12,r12 ++ st.b --r5,r5 ++ st.b --r4,r4 ++ st.b --lr,lr ++ st.b --sp,sp ++ st.b --sp,r11 ++ st.b --r4,r5 ++ .text ++ .global ld_w1 ++ld_w1: ++ ld.w pc,pc++ ++ ld.w r12,r12++ ++ ld.w r5,r5++ ++ ld.w r4,r4++ ++ ld.w lr,lr++ ++ ld.w r3,r7++ ++ ld.w r3,lr++ ++ ld.w r12,r5++ ++ .text ++ .global ld_sh1 ++ld_sh1: ++ ld.sh pc,pc++ ++ ld.sh r12,r12++ ++ ld.sh r5,r5++ ++ ld.sh r4,r4++ ++ ld.sh lr,lr++ ++ ld.sh r11,r2++ ++ ld.sh r2,r8++ ++ ld.sh r7,r6++ ++ .text ++ .global ld_uh1 ++ld_uh1: ++ ld.uh pc,pc++ ++ ld.uh r12,r12++ ++ ld.uh r5,r5++ ++ ld.uh r4,r4++ ++ ld.uh lr,lr++ ++ ld.uh r6,r7++ ++ ld.uh r10,r11++ ++ ld.uh lr,r4++ ++ .text ++ .global ld_ub1 ++ld_ub1: ++ ld.ub pc,pc++ ++ ld.ub r12,r12++ ++ ld.ub r5,r5++ ++ ld.ub r4,r4++ ++ ld.ub lr,lr++ ++ ld.ub r8,lr++ ++ ld.ub r12,r12++ ++ ld.ub r11,r10++ ++ .text ++ .global ld_w2 ++ld_w2: ++ ld.w pc,--pc ++ ld.w r12,--r12 ++ ld.w r5,--r5 ++ ld.w r4,--r4 ++ ld.w lr,--lr ++ ld.w r10,--lr ++ ld.w r12,--r9 ++ ld.w r6,--r5 ++ .text ++ .global ld_sh2 ++ld_sh2: ++ ld.sh pc,--pc ++ ld.sh r12,--r12 ++ ld.sh r5,--r5 ++ ld.sh r4,--r4 ++ ld.sh lr,--lr ++ ld.sh pc,--r10 ++ ld.sh r6,--r3 ++ ld.sh r4,--r6 ++ .text ++ .global ld_uh2 ++ld_uh2: ++ ld.uh pc,--pc ++ ld.uh r12,--r12 ++ ld.uh r5,--r5 ++ ld.uh r4,--r4 ++ ld.uh lr,--lr ++ ld.uh r3,--r2 ++ ld.uh r1,--r0 ++ ld.uh r2,--r9 ++ .text ++ .global ld_ub2 ++ld_ub2: ++ ld.ub pc,--pc ++ ld.ub r12,--r12 ++ ld.ub r5,--r5 ++ ld.ub r4,--r4 ++ ld.ub lr,--lr ++ ld.ub r1,--r1 ++ ld.ub r0,--r6 ++ ld.ub r2,--r7 ++ .text ++ .global ld_ub3 ++ld_ub3: ++ ld.ub pc,pc[0] ++ ld.ub r12,r12[7] ++ ld.ub r5,r5[4] ++ ld.ub r4,r4[3] ++ ld.ub lr,lr[1] ++ ld.ub r6,r9[6] ++ ld.ub r2,lr[4] ++ ld.ub r1,r8[0] ++ .text ++ .global sub3_sp ++sub3_sp: ++ sub sp,0 ++ sub sp,-4 ++ sub sp,-512 ++ sub sp,508 ++ sub sp,4 ++ sub sp,44 ++ sub sp,8 ++ sub sp,348 ++ .text ++ .global sub3 ++sub3: ++ sub pc,0 ++ sub r12,-1 ++ sub r5,-128 ++ sub r4,127 ++ sub lr,1 ++ sub r6,-41 ++ sub r4,37 ++ sub r12,56 ++ .text ++ .global mov1 ++mov1: ++ mov pc,0 ++ mov r12,-1 ++ mov r5,-128 ++ mov r4,127 ++ mov lr,1 ++ mov pc,14 ++ mov r6,-100 ++ mov lr,-122 ++ .text ++ .global lddsp ++lddsp: ++ lddsp pc,sp[0] ++ lddsp r12,sp[508] ++ lddsp r5,sp[256] ++ lddsp r4,sp[252] ++ lddsp lr,sp[4] ++ lddsp lr,sp[256] ++ lddsp r12,sp[20] ++ lddsp r9,sp[472] ++ .text ++ .global lddpc ++lddpc: ++ lddpc pc,pc[0] ++ lddpc r0,pc[508] ++ lddpc r8,pc[256] ++ lddpc r7,pc[252] ++ lddpc lr,pc[4] ++ lddpc sp,pc[472] ++ lddpc r6,pc[120] ++ lddpc r11,pc[28] ++ .text ++ .global stdsp ++stdsp: ++ stdsp sp[0],pc ++ stdsp sp[508],r12 ++ stdsp sp[256],r5 ++ stdsp sp[252],r4 ++ stdsp sp[4],lr ++ stdsp sp[304],pc ++ stdsp sp[256],r0 ++ stdsp sp[336],r5 ++ .text ++ .global cp2 ++cp2: ++ cp pc,0 ++ cp r12,-1 ++ cp r5,-32 ++ cp r4,31 ++ cp lr,1 ++ cp r8,3 ++ cp lr,16 ++ cp r7,-26 ++ .text ++ .global acr ++acr: ++ acr pc ++ acr r12 ++ acr r5 ++ acr r4 ++ acr lr ++ acr r2 ++ acr r12 ++ acr pc ++ .text ++ .global scr ++scr: ++ scr pc ++ scr r12 ++ scr r5 ++ scr r4 ++ scr lr ++ scr pc ++ scr r6 ++ scr r1 ++ .text ++ .global cpc0 ++cpc0: ++ cpc pc ++ cpc r12 ++ cpc r5 ++ cpc r4 ++ cpc lr ++ cpc pc ++ cpc r4 ++ cpc r9 ++ .text ++ .global neg ++neg: ++ neg pc ++ neg r12 ++ neg r5 ++ neg r4 ++ neg lr ++ neg r7 ++ neg r1 ++ neg r9 ++ .text ++ .global abs ++abs: ++ abs pc ++ abs r12 ++ abs r5 ++ abs r4 ++ abs lr ++ abs r6 ++ abs r6 ++ abs r4 ++ .text ++ .global castu_b ++castu_b: ++ castu.b pc ++ castu.b r12 ++ castu.b r5 ++ castu.b r4 ++ castu.b lr ++ castu.b r7 ++ castu.b sp ++ castu.b r9 ++ .text ++ .global casts_b ++casts_b: ++ casts.b pc ++ casts.b r12 ++ casts.b r5 ++ casts.b r4 ++ casts.b lr ++ casts.b r11 ++ casts.b r1 ++ casts.b r10 ++ .text ++ .global castu_h ++castu_h: ++ castu.h pc ++ castu.h r12 ++ castu.h r5 ++ castu.h r4 ++ castu.h lr ++ castu.h r10 ++ castu.h r11 ++ castu.h r1 ++ .text ++ .global casts_h ++casts_h: ++ casts.h pc ++ casts.h r12 ++ casts.h r5 ++ casts.h r4 ++ casts.h lr ++ casts.h r0 ++ casts.h r5 ++ casts.h r9 ++ .text ++ .global brev ++brev: ++ brev pc ++ brev r12 ++ brev r5 ++ brev r4 ++ brev lr ++ brev r5 ++ brev r10 ++ brev r8 ++ .text ++ .global swap_h ++swap_h: ++ swap.h pc ++ swap.h r12 ++ swap.h r5 ++ swap.h r4 ++ swap.h lr ++ swap.h r7 ++ swap.h r0 ++ swap.h r8 ++ .text ++ .global swap_b ++swap_b: ++ swap.b pc ++ swap.b r12 ++ swap.b r5 ++ swap.b r4 ++ swap.b lr ++ swap.b r10 ++ swap.b r12 ++ swap.b r1 ++ .text ++ .global swap_bh ++swap_bh: ++ swap.bh pc ++ swap.bh r12 ++ swap.bh r5 ++ swap.bh r4 ++ swap.bh lr ++ swap.bh r9 ++ swap.bh r4 ++ swap.bh r1 ++ .text ++ .global One_s_compliment ++One_s_compliment: ++ com pc ++ com r12 ++ com r5 ++ com r4 ++ com lr ++ com r2 ++ com r2 ++ com r7 ++ .text ++ .global tnbz ++tnbz: ++ tnbz pc ++ tnbz r12 ++ tnbz r5 ++ tnbz r4 ++ tnbz lr ++ tnbz r8 ++ tnbz r12 ++ tnbz pc ++ .text ++ .global rol ++rol: ++ rol pc ++ rol r12 ++ rol r5 ++ rol r4 ++ rol lr ++ rol r10 ++ rol r9 ++ rol r5 ++ .text ++ .global ror ++ror: ++ ror pc ++ ror r12 ++ ror r5 ++ ror r4 ++ ror lr ++ ror r8 ++ ror r4 ++ ror r7 ++ .text ++ .global icall ++icall: ++ icall pc ++ icall r12 ++ icall r5 ++ icall r4 ++ icall lr ++ icall r3 ++ icall r1 ++ icall r3 ++ .text ++ .global mustr ++mustr: ++ mustr pc ++ mustr r12 ++ mustr r5 ++ mustr r4 ++ mustr lr ++ mustr r1 ++ mustr r4 ++ mustr r12 ++ .text ++ .global musfr ++musfr: ++ musfr pc ++ musfr r12 ++ musfr r5 ++ musfr r4 ++ musfr lr ++ musfr r11 ++ musfr r12 ++ musfr r2 ++ .text ++ .global ret_cond ++ret_cond: ++ reteq pc ++ retal r12 ++ retls r5 ++ retpl r4 ++ retne lr ++ retgt r0 ++ retgt r12 ++ retge r10 ++ .text ++ .global sr_cond ++sr_cond: ++ sreq pc ++ sral r12 ++ srls r5 ++ srpl r4 ++ srne lr ++ srlt r0 ++ sral sp ++ srge r9 ++ .text ++ .global ld_w3 ++ld_w3: ++ ld.w pc,pc[0] ++ ld.w r12,r12[124] ++ ld.w r5,r5[64] ++ ld.w r4,r4[60] ++ ld.w lr,lr[4] ++ ld.w sp,r2[52] ++ ld.w r9,r1[8] ++ ld.w r5,sp[60] ++ .text ++ .global ld_sh3 ++ld_sh3: ++ ld.sh pc,pc[0] ++ ld.sh r12,r12[14] ++ ld.sh r5,r5[8] ++ ld.sh r4,r4[6] ++ ld.sh lr,lr[2] ++ ld.sh r4,r2[8] ++ ld.sh sp,lr[10] ++ ld.sh r2,r11[2] ++ .text ++ .global ld_uh3 ++ld_uh3: ++ ld.uh pc,pc[0] ++ ld.uh r12,r12[14] ++ ld.uh r5,r5[8] ++ ld.uh r4,r4[6] ++ ld.uh lr,lr[2] ++ ld.uh r10,r0[10] ++ ld.uh r8,r11[8] ++ ld.uh r10,r2[12] ++ .text ++ .global st_w3 ++st_w3: ++ st.w pc[0],pc ++ st.w r12[60],r12 ++ st.w r5[32],r5 ++ st.w r4[28],r4 ++ st.w lr[4],lr ++ st.w r7[44],r11 ++ st.w r2[24],r6 ++ st.w r4[12],r9 ++ .text ++ .global st_h3 ++st_h3: ++ st.h pc[0],pc ++ st.h r12[14],r12 ++ st.h r5[8],r5 ++ st.h r4[6],r4 ++ st.h lr[2],lr ++ st.h lr[10],r12 ++ st.h r6[4],r0 ++ st.h r5[12],sp ++ .text ++ .global st_b3 ++st_b3: ++ st.b pc[0],pc ++ st.b r12[7],r12 ++ st.b r5[4],r5 ++ st.b r4[3],r4 ++ st.b lr[1],lr ++ st.b r12[6],r9 ++ st.b r2[3],lr ++ st.b r1[3],r11 ++ .text ++ .global ldd ++ldd: ++ ld.d r0,pc ++ ld.d r14,r12 ++ ld.d r8,r5 ++ ld.d r6,r4 ++ ld.d r2,lr ++ ld.d r14,r7 ++ ld.d r4,r4 ++ ld.d r14,pc ++ .text ++ .global ldd_postinc ++ldd_postinc: ++ ld.d r0,pc++ ++ ld.d r14,r12++ ++ ld.d r8,r5++ ++ ld.d r6,r4++ ++ ld.d r2,lr++ ++ ld.d r14,r5++ ++ ld.d r12,r11++ ++ ld.d r2,r12++ ++ .text ++ .global ldd_predec ++ldd_predec: ++ ld.d r0,--pc ++ ld.d r14,--r12 ++ ld.d r8,--r5 ++ ld.d r6,--r4 ++ ld.d r2,--lr ++ ld.d r8,--r0 ++ ld.d r10,--pc ++ ld.d r2,--r4 ++ .text ++ .global std ++std: ++ st.d pc,r0 ++ st.d r12,r14 ++ st.d r5,r8 ++ st.d r4,r6 ++ st.d lr,r2 ++ st.d r0,r12 ++ st.d sp,r4 ++ st.d r12,r12 ++ .text ++ .global std_postinc ++std_postinc: ++ st.d pc++,r0 ++ st.d r12++,r14 ++ st.d r5++,r8 ++ st.d r4++,r6 ++ st.d lr++,r2 ++ st.d sp++,r6 ++ st.d r10++,r6 ++ st.d r7++,r2 ++ .text ++ .global std_predec ++std_predec: ++ st.d --pc,r0 ++ st.d --r12,r14 ++ st.d --r5,r8 ++ st.d --r4,r6 ++ st.d --lr,r2 ++ st.d --r3,r6 ++ st.d --lr,r2 ++ st.d --r0,r4 ++ .text ++ .global mul ++mul: ++ mul pc,pc ++ mul r12,r12 ++ mul r5,r5 ++ mul r4,r4 ++ mul lr,lr ++ mul r10,lr ++ mul r0,r8 ++ mul r8,r5 ++ .text ++ .global asr_imm5 ++asr_imm5: ++ asr pc,0 ++ asr r12,31 ++ asr r5,16 ++ asr r4,15 ++ asr lr,1 ++ asr r6,23 ++ asr r6,18 ++ asr r5,8 ++ .text ++ .global lsl_imm5 ++lsl_imm5: ++ lsl pc,0 ++ lsl r12,31 ++ lsl r5,16 ++ lsl r4,15 ++ lsl lr,1 ++ lsl r12,13 ++ lsl r6,16 ++ lsl r1,25 ++ .text ++ .global lsr_imm5 ++lsr_imm5: ++ lsr pc,0 ++ lsr r12,31 ++ lsr r5,16 ++ lsr r4,15 ++ lsr lr,1 ++ lsr r0,1 ++ lsr r8,10 ++ lsr r7,26 ++ .text ++ .global sbr ++sbr: ++ sbr pc,0 ++ sbr r12,31 ++ sbr r5,16 ++ sbr r4,15 ++ sbr lr,1 ++ sbr r8,31 ++ sbr r6,22 ++ sbr r1,23 ++ .text ++ .global cbr ++cbr: ++ cbr pc,0 ++ cbr r12,31 ++ cbr r5,16 ++ cbr r4,15 ++ cbr lr,1 ++ cbr r12,10 ++ cbr r7,22 ++ cbr r8,9 ++ .text ++ .global brc1 ++brc1: ++ breq 0 ++ brpl -2 ++ brge -256 ++ brcs 254 ++ brne 2 ++ brcs 230 ++ breq -18 ++ breq 12 ++ .text ++ .global rjmp ++rjmp: ++ rjmp 0 ++ rjmp -2 ++ rjmp -1024 ++ rjmp 1022 ++ rjmp 2 ++ rjmp -962 ++ rjmp 14 ++ rjmp -516 ++ .text ++ .global rcall1 ++rcall1: ++ rcall 0 ++ rcall -2 ++ rcall -1024 ++ rcall 1022 ++ rcall 2 ++ rcall 216 ++ rcall -530 ++ rcall -972 ++ .text ++ .global acall ++acall: ++ acall 0 ++ acall 1020 ++ acall 512 ++ acall 508 ++ acall 4 ++ acall 356 ++ acall 304 ++ acall 172 ++ .text ++ .global scall ++scall: ++ scall ++ scall ++ scall ++ scall ++ scall ++ scall ++ scall ++ scall ++ .text ++ .global popm ++popm: ++ /* popm with no argument fails currently */ ++ popm pc ++ popm r0-r11,pc,r12=-1 ++ popm lr ++ popm r0-r11,pc,r12=1 ++ popm r0-r3 ++ popm r4-r10,pc ++ popm r0-r3,r11,pc,r12=0 ++ popm r0-r7,r10-r12,lr ++ .text ++ .global pushm ++pushm: ++ pushm pc ++ pushm r0-r12,lr,pc ++ pushm pc ++ pushm r0-r12,lr ++ pushm r0-r3 ++ pushm r8-r10,lr,pc ++ pushm r0-r3,r10 ++ pushm r8-r9,r12 ++ .text ++ .global popm_n ++popm_n: ++ popm pc ++ popm r0-r11,pc,r12=-1 ++ popm lr ++ popm r0-r11,pc,r12=1 ++ popm r0-r3 ++ popm r4-r10,pc ++ popm r0-r3,r11,pc,r12=0 ++ popm r0-r7,r10-r12,lr ++ .text ++ .global pushm_n ++pushm_n: ++ pushm pc ++ pushm r0-r12,lr,pc ++ pushm pc ++ pushm r0-r12,lr ++ pushm r0-r3 ++ pushm r8-r10,lr,pc ++ pushm r0-r3,r10 ++ pushm r8-r9,r12 ++ .text ++ .global csrfcz ++csrfcz: ++ csrfcz 0 ++ csrfcz 31 ++ csrfcz 16 ++ csrfcz 15 ++ csrfcz 1 ++ csrfcz 5 ++ csrfcz 13 ++ csrfcz 23 ++ .text ++ .global ssrf ++ssrf: ++ ssrf 0 ++ ssrf 31 ++ ssrf 16 ++ ssrf 15 ++ ssrf 1 ++ ssrf 29 ++ ssrf 13 ++ ssrf 13 ++ .text ++ .global csrf ++csrf: ++ csrf 0 ++ csrf 31 ++ csrf 16 ++ csrf 15 ++ csrf 1 ++ csrf 10 ++ csrf 15 ++ csrf 11 ++ .text ++ .global rete ++rete: ++ rete ++ .text ++ .global rets ++rets: ++ rets ++ .text ++ .global retd ++retd: ++ retd ++ .text ++ .global retj ++retj: ++ retj ++ .text ++ .global tlbr ++tlbr: ++ tlbr ++ .text ++ .global tlbs ++tlbs: ++ tlbs ++ .text ++ .global tlbw ++tlbw: ++ tlbw ++ .text ++ .global breakpoint ++breakpoint: ++ breakpoint ++ .text ++ .global incjosp ++incjosp: ++ incjosp 1 ++ incjosp 2 ++ incjosp 3 ++ incjosp 4 ++ incjosp -4 ++ incjosp -3 ++ incjosp -2 ++ incjosp -1 ++ .text ++ .global nop ++nop: ++ nop ++ .text ++ .global popjc ++popjc: ++ popjc ++ .text ++ .global pushjc ++pushjc: ++ pushjc ++ .text ++ .global add2 ++add2: ++ add pc,pc,pc<<0 ++ add r12,r12,r12<<3 ++ add r5,r5,r5<<2 ++ add r4,r4,r4<<1 ++ add lr,lr,lr<<1 ++ add r0,r12,r0<<1 ++ add r9,r12,r4<<0 ++ add r12,r12,r7<<2 ++ .text ++ .global sub2 ++sub2: ++ sub pc,pc,pc<<0 ++ sub r12,r12,r12<<3 ++ sub r5,r5,r5<<2 ++ sub r4,r4,r4<<1 ++ sub lr,lr,lr<<1 ++ sub sp,r3,r4<<0 ++ sub r3,r7,r3<<0 ++ sub sp,r10,sp<<1 ++ .text ++ .global divu ++divu: ++ divu pc,pc,pc ++ divu r12,r12,r12 ++ divu r5,r5,r5 ++ divu r4,r4,r4 ++ divu lr,lr,lr ++ divu sp,r4,pc ++ divu r5,r5,sp ++ divu r10,sp,r0 ++ .text ++ .global addhh_w ++addhh_w: ++ addhh.w pc,pc:b,pc:b ++ addhh.w r12,r12:t,r12:t ++ addhh.w r5,r5:t,r5:t ++ addhh.w r4,r4:b,r4:b ++ addhh.w lr,lr:t,lr:t ++ addhh.w r0,r0:b,r3:b ++ addhh.w lr,r12:t,r7:b ++ addhh.w r3,r10:t,r2:b ++ .text ++ .global subhh_w ++subhh_w: ++ subhh.w pc,pc:b,pc:b ++ subhh.w r12,r12:t,r12:t ++ subhh.w r5,r5:t,r5:t ++ subhh.w r4,r4:b,r4:b ++ subhh.w lr,lr:t,lr:t ++ subhh.w r10,r1:t,r7:b ++ subhh.w pc,r10:t,lr:t ++ subhh.w r3,r0:t,r12:b ++ .text ++ .global adc ++adc: ++ adc pc,pc,pc ++ adc r12,r12,r12 ++ adc r5,r5,r5 ++ adc r4,r4,r4 ++ adc lr,lr,lr ++ adc r4,r0,r7 ++ adc sp,r4,r3 ++ adc r2,r12,r0 ++ .text ++ .global sbc ++sbc: ++ sbc pc,pc,pc ++ sbc r12,r12,r12 ++ sbc r5,r5,r5 ++ sbc r4,r4,r4 ++ sbc lr,lr,lr ++ sbc r6,r7,r9 ++ sbc r0,r8,r5 ++ sbc r1,r0,r4 ++ .text ++ .global mul_2 ++mul_2: ++ mul pc,pc,pc ++ mul r12,r12,r12 ++ mul r5,r5,r5 ++ mul r4,r4,r4 ++ mul lr,lr,lr ++ mul pc,r0,r0 ++ mul r8,pc,lr ++ mul r4,r12,pc ++ .text ++ .global mac ++mac: ++ mac pc,pc,pc ++ mac r12,r12,r12 ++ mac r5,r5,r5 ++ mac r4,r4,r4 ++ mac lr,lr,lr ++ mac r10,r4,r0 ++ mac r7,lr,r0 ++ mac r2,r9,r12 ++ .text ++ .global mulsd ++mulsd: ++ muls.d pc,pc,pc ++ muls.d r12,r12,r12 ++ muls.d r5,r5,r5 ++ muls.d r4,r4,r4 ++ muls.d lr,lr,lr ++ muls.d r2,r8,lr ++ muls.d r4,r0,r11 ++ muls.d r5,lr,r6 ++ .text ++ .global macsd ++macsd: ++ macs.d r0,pc,pc ++ macs.d r14,r12,r12 ++ macs.d r8,r5,r5 ++ macs.d r6,r4,r4 ++ macs.d r2,lr,lr ++ macs.d r8,r1,r9 ++ macs.d r14,r8,r8 ++ macs.d r4,r3,r12 ++ .text ++ .global mulud ++mulud: ++ mulu.d r0,pc,pc ++ mulu.d r14,r12,r12 ++ mulu.d r8,r5,r5 ++ mulu.d r6,r4,r4 ++ mulu.d r2,lr,lr ++ mulu.d r6,r5,r0 ++ mulu.d r4,r6,r1 ++ mulu.d r8,r8,r2 ++ .text ++ .global macud ++macud: ++ macu.d r0,pc,pc ++ macu.d r14,r12,r12 ++ macu.d r8,r5,r5 ++ macu.d r6,r4,r4 ++ macu.d r2,lr,lr ++ macu.d r6,sp,r11 ++ macu.d r2,r4,r8 ++ macu.d r6,r10,r9 ++ .text ++ .global asr_1 ++asr_1: ++ asr pc,pc,pc ++ asr r12,r12,r12 ++ asr r5,r5,r5 ++ asr r4,r4,r4 ++ asr lr,lr,lr ++ asr pc,r6,pc ++ asr r0,r6,r12 ++ asr r4,sp,r0 ++ .text ++ .global lsl_1 ++lsl_1: ++ lsl pc,pc,pc ++ lsl r12,r12,r12 ++ lsl r5,r5,r5 ++ lsl r4,r4,r4 ++ lsl lr,lr,lr ++ lsl lr,r5,lr ++ lsl r5,pc,r3 ++ lsl r1,pc,r9 ++ .text ++ .global lsr_1 ++lsr_1: ++ lsr pc,pc,pc ++ lsr r12,r12,r12 ++ lsr r5,r5,r5 ++ lsr r4,r4,r4 ++ lsr lr,lr,lr ++ lsr r2,r4,r1 ++ lsr r5,r1,r6 ++ lsr sp,r6,r7 ++ .text ++ .global xchg ++xchg: ++ xchg pc,pc,pc ++ xchg r12,r12,r12 ++ xchg r5,r5,r5 ++ xchg r4,r4,r4 ++ xchg lr,lr,lr ++ xchg lr,r4,sp ++ xchg r1,r5,r12 ++ xchg lr,r12,r0 ++ .text ++ .global max ++max: ++ max pc,pc,pc ++ max r12,r12,r12 ++ max r5,r5,r5 ++ max r4,r4,r4 ++ max lr,lr,lr ++ max lr,r2,sp ++ max r4,r10,r9 ++ max lr,r9,lr ++ .text ++ .global min ++min: ++ min pc,pc,pc ++ min r12,r12,r12 ++ min r5,r5,r5 ++ min r4,r4,r4 ++ min lr,lr,lr ++ min r9,r7,r8 ++ min sp,r5,r5 ++ min r4,r1,r4 ++ .text ++ .global addabs ++addabs: ++ addabs pc,pc,pc ++ addabs r12,r12,r12 ++ addabs r5,r5,r5 ++ addabs r4,r4,r4 ++ addabs lr,lr,lr ++ addabs r7,r10,r0 ++ addabs r9,r9,r7 ++ addabs r2,r8,r12 ++ .text ++ .global mulnhh_w ++mulnhh_w: ++ mulnhh.w pc,pc:b,pc:b ++ mulnhh.w r12,r12:t,r12:t ++ mulnhh.w r5,r5:t,r5:t ++ mulnhh.w r4,r4:b,r4:b ++ mulnhh.w lr,lr:t,lr:t ++ mulnhh.w r11,sp:t,r9:b ++ mulnhh.w sp,r4:b,lr:t ++ mulnhh.w r12,r2:t,r11:b ++ .text ++ .global mulnwh_d ++mulnwh_d: ++ mulnwh.d r0,pc,pc:b ++ mulnwh.d r14,r12,r12:t ++ mulnwh.d r8,r5,r5:t ++ mulnwh.d r6,r4,r4:b ++ mulnwh.d r2,lr,lr:t ++ mulnwh.d r14,r3,r2:t ++ mulnwh.d r4,r5,r9:b ++ mulnwh.d r12,r4,r4:t ++ .text ++ .global machh_w ++machh_w: ++ machh.w pc,pc:b,pc:b ++ machh.w r12,r12:t,r12:t ++ machh.w r5,r5:t,r5:t ++ machh.w r4,r4:b,r4:b ++ machh.w lr,lr:t,lr:t ++ machh.w lr,r5:b,r1:t ++ machh.w r9,r6:b,r7:b ++ machh.w r5,lr:t,r12:b ++ .text ++ .global machh_d ++machh_d: ++ machh.d r0,pc:b,pc:b ++ machh.d r14,r12:t,r12:t ++ machh.d r8,r5:t,r5:t ++ machh.d r6,r4:b,r4:b ++ machh.d r2,lr:t,lr:t ++ machh.d r10,r0:b,r8:b ++ machh.d r14,r4:b,r5:t ++ machh.d r8,r0:b,r4:t ++ .text ++ .global macsathh_w ++macsathh_w: ++ macsathh.w pc,pc:b,pc:b ++ macsathh.w r12,r12:t,r12:t ++ macsathh.w r5,r5:t,r5:t ++ macsathh.w r4,r4:b,r4:b ++ macsathh.w lr,lr:t,lr:t ++ macsathh.w r7,r7:t,pc:t ++ macsathh.w r4,r2:t,r4:b ++ macsathh.w r4,r8:t,r3:t ++ .text ++ .global mulhh_w ++mulhh_w: ++ mulhh.w pc,pc:b,pc:b ++ mulhh.w r12,r12:t,r12:t ++ mulhh.w r5,r5:t,r5:t ++ mulhh.w r4,r4:b,r4:b ++ mulhh.w lr,lr:t,lr:t ++ mulhh.w r7,r4:t,r9:b ++ mulhh.w pc,r3:t,r7:t ++ mulhh.w pc,r4:b,r9:t ++ .text ++ .global mulsathh_h ++mulsathh_h: ++ mulsathh.h pc,pc:b,pc:b ++ mulsathh.h r12,r12:t,r12:t ++ mulsathh.h r5,r5:t,r5:t ++ mulsathh.h r4,r4:b,r4:b ++ mulsathh.h lr,lr:t,lr:t ++ mulsathh.h r3,r1:b,sp:b ++ mulsathh.h r11,lr:t,r11:b ++ mulsathh.h r8,r8:b,r11:t ++ .text ++ .global mulsathh_w ++mulsathh_w: ++ mulsathh.w pc,pc:b,pc:b ++ mulsathh.w r12,r12:t,r12:t ++ mulsathh.w r5,r5:t,r5:t ++ mulsathh.w r4,r4:b,r4:b ++ mulsathh.w lr,lr:t,lr:t ++ mulsathh.w lr,r11:t,r6:b ++ mulsathh.w r6,r6:b,r7:t ++ mulsathh.w r10,r2:b,r3:b ++ .text ++ .global mulsatrndhh_h ++mulsatrndhh_h: ++ mulsatrndhh.h pc,pc:b,pc:b ++ mulsatrndhh.h r12,r12:t,r12:t ++ mulsatrndhh.h r5,r5:t,r5:t ++ mulsatrndhh.h r4,r4:b,r4:b ++ mulsatrndhh.h lr,lr:t,lr:t ++ mulsatrndhh.h r11,r6:b,r9:b ++ mulsatrndhh.h r11,r3:b,r8:t ++ mulsatrndhh.h r5,sp:t,r7:t ++ .text ++ .global mulsatrndwh_w ++mulsatrndwh_w: ++ mulsatrndwh.w pc,pc,pc:b ++ mulsatrndwh.w r12,r12,r12:t ++ mulsatrndwh.w r5,r5,r5:t ++ mulsatrndwh.w r4,r4,r4:b ++ mulsatrndwh.w lr,lr,lr:t ++ mulsatrndwh.w r5,r12,r0:b ++ mulsatrndwh.w r7,r10,pc:b ++ mulsatrndwh.w r10,r8,r5:t ++ .text ++ .global macwh_d ++macwh_d: ++ macwh.d r0,pc,pc:b ++ macwh.d r14,r12,r12:t ++ macwh.d r8,r5,r5:t ++ macwh.d r6,r4,r4:b ++ macwh.d r2,lr,lr:t ++ macwh.d r4,r10,r12:t ++ macwh.d r4,r7,sp:b ++ macwh.d r14,r9,r11:b ++ .text ++ .global mulwh_d ++mulwh_d: ++ mulwh.d r0,pc,pc:b ++ mulwh.d r14,r12,r12:t ++ mulwh.d r8,r5,r5:t ++ mulwh.d r6,r4,r4:b ++ mulwh.d r2,lr,lr:t ++ mulwh.d r12,r5,r1:b ++ mulwh.d r0,r1,r3:t ++ mulwh.d r0,r9,r2:b ++ .text ++ .global mulsatwh_w ++mulsatwh_w: ++ mulsatwh.w pc,pc,pc:b ++ mulsatwh.w r12,r12,r12:t ++ mulsatwh.w r5,r5,r5:t ++ mulsatwh.w r4,r4,r4:b ++ mulsatwh.w lr,lr,lr:t ++ mulsatwh.w r11,pc,r10:t ++ mulsatwh.w sp,r12,r9:t ++ mulsatwh.w r0,r3,r2:t ++ .text ++ .global ldw7 ++ldw7: ++ ld.w pc,pc[pc:b<<2] ++ ld.w r12,r12[r12:t<<2] ++ ld.w r5,r5[r5:u<<2] ++ ld.w r4,r4[r4:l<<2] ++ ld.w lr,lr[lr:l<<2] ++ ld.w r9,r10[r6:l<<2] ++ ld.w r2,r10[r10:b<<2] ++ ld.w r11,r5[pc:b<<2] ++ .text ++ .global satadd_w ++satadd_w: ++ satadd.w pc,pc,pc ++ satadd.w r12,r12,r12 ++ satadd.w r5,r5,r5 ++ satadd.w r4,r4,r4 ++ satadd.w lr,lr,lr ++ satadd.w r4,r8,r11 ++ satadd.w r3,r12,r6 ++ satadd.w r3,lr,r9 ++ .text ++ .global satsub_w1 ++satsub_w1: ++ satsub.w pc,pc,pc ++ satsub.w r12,r12,r12 ++ satsub.w r5,r5,r5 ++ satsub.w r4,r4,r4 ++ satsub.w lr,lr,lr ++ satsub.w r8,sp,r0 ++ satsub.w r9,r8,r4 ++ satsub.w pc,lr,r2 ++ .text ++ .global satadd_h ++satadd_h: ++ satadd.h pc,pc,pc ++ satadd.h r12,r12,r12 ++ satadd.h r5,r5,r5 ++ satadd.h r4,r4,r4 ++ satadd.h lr,lr,lr ++ satadd.h r7,r3,r9 ++ satadd.h r1,r0,r2 ++ satadd.h r1,r4,lr ++ .text ++ .global satsub_h ++satsub_h: ++ satsub.h pc,pc,pc ++ satsub.h r12,r12,r12 ++ satsub.h r5,r5,r5 ++ satsub.h r4,r4,r4 ++ satsub.h lr,lr,lr ++ satsub.h lr,lr,r3 ++ satsub.h r11,r6,r5 ++ satsub.h r3,sp,r0 ++ .text ++ .global mul3 ++mul3: ++ mul pc,pc,0 ++ mul r12,r12,-1 ++ mul r5,r5,-128 ++ mul r4,r4,127 ++ mul lr,lr,1 ++ mul r12,r2,-7 ++ mul r1,pc,95 ++ mul r4,r6,19 ++ .text ++ .global rsub2 ++rsub2: ++ rsub pc,pc,0 ++ rsub r12,r12,-1 ++ rsub r5,r5,-128 ++ rsub r4,r4,127 ++ rsub lr,lr,1 ++ rsub r9,lr,96 ++ rsub r11,r1,56 ++ rsub r0,r7,-87 ++ .text ++ .global clz ++clz: ++ clz pc,pc ++ clz r12,r12 ++ clz r5,r5 ++ clz r4,r4 ++ clz lr,lr ++ clz r2,r3 ++ clz r5,r11 ++ clz pc,r3 ++ .text ++ .global cpc1 ++cpc1: ++ cpc pc,pc ++ cpc r12,r12 ++ cpc r5,r5 ++ cpc r4,r4 ++ cpc lr,lr ++ cpc pc,r4 ++ cpc r5,r9 ++ cpc r6,r7 ++ .text ++ .global asr3 ++asr3: ++ asr pc,pc,0 ++ asr r12,r12,31 ++ asr r5,r5,16 ++ asr r4,r4,15 ++ asr lr,lr,1 ++ asr r4,r11,19 ++ asr sp,pc,26 ++ asr r11,sp,8 ++ .text ++ .global lsl3 ++lsl3: ++ lsl pc,pc,0 ++ lsl r12,r12,31 ++ lsl r5,r5,16 ++ lsl r4,r4,15 ++ lsl lr,lr,1 ++ lsl r8,r10,17 ++ lsl r2,lr,3 ++ lsl lr,r11,14 ++ .text ++ .global lsr3 ++lsr3: ++ lsr pc,pc,0 ++ lsr r12,r12,31 ++ lsr r5,r5,16 ++ lsr r4,r4,15 ++ lsr lr,lr,1 ++ lsr r4,r3,31 ++ lsr pc,r9,14 ++ lsr r3,r0,6 ++/* .text ++ .global extract_b ++extract_b: ++ extract.b pc,pc:b ++ extract.b r12,r12:t ++ extract.b r5,r5:u ++ extract.b r4,r4:l ++ extract.b lr,lr:l ++ extract.b r2,r5:l ++ extract.b r12,r3:l ++ extract.b sp,r3:l ++ .text ++ .global insert_b ++insert_b: ++ insert.b pc:b,pc ++ insert.b r12:t,r12 ++ insert.b r5:u,r5 ++ insert.b r4:l,r4 ++ insert.b lr:l,lr ++ insert.b r12:u,r3 ++ insert.b r10:l,lr ++ insert.b r11:l,r12 ++ .text ++ .global extract_h ++extract_h: ++ extract.h pc,pc:b ++ extract.h r12,r12:t ++ extract.h r5,r5:t ++ extract.h r4,r4:b ++ extract.h lr,lr:t ++ extract.h r11,lr:b ++ extract.h r10,r0:b ++ extract.h r11,r12:b ++ .text ++ .global insert_h ++insert_h: ++ insert.h pc:b,pc ++ insert.h r12:t,r12 ++ insert.h r5:t,r5 ++ insert.h r4:b,r4 ++ insert.h lr:t,lr ++ insert.h r12:t,r11 ++ insert.h r7:b,r6 ++ insert.h r1:t,r11 */ ++ .text ++ .global movc1 ++movc1: ++ moveq pc,pc ++ moval r12,r12 ++ movls r5,r5 ++ movpl r4,r4 ++ movne lr,lr ++ movne pc,r11 ++ movmi r10,r2 ++ movls r8,r12 ++ .text ++ .global padd_h ++padd_h: ++ padd.h pc,pc,pc ++ padd.h r12,r12,r12 ++ padd.h r5,r5,r5 ++ padd.h r4,r4,r4 ++ padd.h lr,lr,lr ++ padd.h r8,r2,r7 ++ padd.h r0,r0,r3 ++ padd.h sp,r11,r6 ++ .text ++ .global psub_h ++psub_h: ++ psub.h pc,pc,pc ++ psub.h r12,r12,r12 ++ psub.h r5,r5,r5 ++ psub.h r4,r4,r4 ++ psub.h lr,lr,lr ++ psub.h lr,r6,r8 ++ psub.h r0,r1,sp ++ psub.h pc,pc,sp ++ .text ++ .global paddx_h ++paddx_h: ++ paddx.h pc,pc,pc ++ paddx.h r12,r12,r12 ++ paddx.h r5,r5,r5 ++ paddx.h r4,r4,r4 ++ paddx.h lr,lr,lr ++ paddx.h pc,pc,r1 ++ paddx.h r10,r4,r5 ++ paddx.h r5,pc,r2 ++ .text ++ .global psubx_h ++psubx_h: ++ psubx.h pc,pc,pc ++ psubx.h r12,r12,r12 ++ psubx.h r5,r5,r5 ++ psubx.h r4,r4,r4 ++ psubx.h lr,lr,lr ++ psubx.h r5,r12,r5 ++ psubx.h r3,r8,r3 ++ psubx.h r5,r2,r3 ++ .text ++ .global padds_sh ++padds_sh: ++ padds.sh pc,pc,pc ++ padds.sh r12,r12,r12 ++ padds.sh r5,r5,r5 ++ padds.sh r4,r4,r4 ++ padds.sh lr,lr,lr ++ padds.sh r9,lr,r2 ++ padds.sh r6,r8,r1 ++ padds.sh r6,r4,r10 ++ .text ++ .global psubs_sh ++psubs_sh: ++ psubs.sh pc,pc,pc ++ psubs.sh r12,r12,r12 ++ psubs.sh r5,r5,r5 ++ psubs.sh r4,r4,r4 ++ psubs.sh lr,lr,lr ++ psubs.sh r6,lr,r11 ++ psubs.sh r2,r12,r4 ++ psubs.sh r0,r9,r0 ++ .text ++ .global paddxs_sh ++paddxs_sh: ++ paddxs.sh pc,pc,pc ++ paddxs.sh r12,r12,r12 ++ paddxs.sh r5,r5,r5 ++ paddxs.sh r4,r4,r4 ++ paddxs.sh lr,lr,lr ++ paddxs.sh r0,r3,r9 ++ paddxs.sh pc,r10,r11 ++ paddxs.sh pc,r10,pc ++ .text ++ .global psubxs_sh ++psubxs_sh: ++ psubxs.sh pc,pc,pc ++ psubxs.sh r12,r12,r12 ++ psubxs.sh r5,r5,r5 ++ psubxs.sh r4,r4,r4 ++ psubxs.sh lr,lr,lr ++ psubxs.sh r7,r4,r4 ++ psubxs.sh r7,r8,r3 ++ psubxs.sh pc,r6,r5 ++ .text ++ .global padds_uh ++padds_uh: ++ padds.uh pc,pc,pc ++ padds.uh r12,r12,r12 ++ padds.uh r5,r5,r5 ++ padds.uh r4,r4,r4 ++ padds.uh lr,lr,lr ++ padds.uh r12,r11,r7 ++ padds.uh r7,r8,lr ++ padds.uh r6,r9,r7 ++ .text ++ .global psubs_uh ++psubs_uh: ++ psubs.uh pc,pc,pc ++ psubs.uh r12,r12,r12 ++ psubs.uh r5,r5,r5 ++ psubs.uh r4,r4,r4 ++ psubs.uh lr,lr,lr ++ psubs.uh lr,r10,r6 ++ psubs.uh sp,r2,pc ++ psubs.uh r2,r9,r2 ++ .text ++ .global paddxs_uh ++paddxs_uh: ++ paddxs.uh pc,pc,pc ++ paddxs.uh r12,r12,r12 ++ paddxs.uh r5,r5,r5 ++ paddxs.uh r4,r4,r4 ++ paddxs.uh lr,lr,lr ++ paddxs.uh r7,r9,r5 ++ paddxs.uh r9,r1,r4 ++ paddxs.uh r5,r2,r3 ++ .text ++ .global psubxs_uh ++psubxs_uh: ++ psubxs.uh pc,pc,pc ++ psubxs.uh r12,r12,r12 ++ psubxs.uh r5,r5,r5 ++ psubxs.uh r4,r4,r4 ++ psubxs.uh lr,lr,lr ++ psubxs.uh sp,r5,sp ++ psubxs.uh sp,r6,r6 ++ psubxs.uh r3,r11,r8 ++ .text ++ .global paddh_sh ++paddh_sh: ++ paddh.sh pc,pc,pc ++ paddh.sh r12,r12,r12 ++ paddh.sh r5,r5,r5 ++ paddh.sh r4,r4,r4 ++ paddh.sh lr,lr,lr ++ paddh.sh r12,sp,r3 ++ paddh.sh pc,r5,r3 ++ paddh.sh r8,r8,sp ++ .text ++ .global psubh_sh ++psubh_sh: ++ psubh.sh pc,pc,pc ++ psubh.sh r12,r12,r12 ++ psubh.sh r5,r5,r5 ++ psubh.sh r4,r4,r4 ++ psubh.sh lr,lr,lr ++ psubh.sh r1,r5,r8 ++ psubh.sh r7,r3,r6 ++ psubh.sh r4,r3,r3 ++ .text ++ .global paddxh_sh ++paddxh_sh: ++ paddxh.sh pc,pc,pc ++ paddxh.sh r12,r12,r12 ++ paddxh.sh r5,r5,r5 ++ paddxh.sh r4,r4,r4 ++ paddxh.sh lr,lr,lr ++ paddxh.sh r6,r0,r4 ++ paddxh.sh r9,r8,r9 ++ paddxh.sh r3,r0,sp ++ .text ++ .global psubxh_sh ++psubxh_sh: ++ psubxh.sh pc,pc,pc ++ psubxh.sh r12,r12,r12 ++ psubxh.sh r5,r5,r5 ++ psubxh.sh r4,r4,r4 ++ psubxh.sh lr,lr,lr ++ psubxh.sh r4,pc,r12 ++ psubxh.sh r8,r4,r6 ++ psubxh.sh r12,r9,r4 ++ .text ++ .global paddsub_h ++paddsub_h: ++ paddsub.h pc,pc:b,pc:b ++ paddsub.h r12,r12:t,r12:t ++ paddsub.h r5,r5:t,r5:t ++ paddsub.h r4,r4:b,r4:b ++ paddsub.h lr,lr:t,lr:t ++ paddsub.h r5,r2:t,lr:b ++ paddsub.h r7,r1:b,r8:b ++ paddsub.h r6,r10:t,r5:t ++ .text ++ .global psubadd_h ++psubadd_h: ++ psubadd.h pc,pc:b,pc:b ++ psubadd.h r12,r12:t,r12:t ++ psubadd.h r5,r5:t,r5:t ++ psubadd.h r4,r4:b,r4:b ++ psubadd.h lr,lr:t,lr:t ++ psubadd.h r9,r11:t,r8:t ++ psubadd.h r10,r7:t,lr:t ++ psubadd.h r6,pc:t,pc:b ++ .text ++ .global paddsubs_sh ++paddsubs_sh: ++ paddsubs.sh pc,pc:b,pc:b ++ paddsubs.sh r12,r12:t,r12:t ++ paddsubs.sh r5,r5:t,r5:t ++ paddsubs.sh r4,r4:b,r4:b ++ paddsubs.sh lr,lr:t,lr:t ++ paddsubs.sh r0,lr:t,r0:b ++ paddsubs.sh r9,r2:t,r4:t ++ paddsubs.sh r12,r9:t,sp:t ++ .text ++ .global psubadds_sh ++psubadds_sh: ++ psubadds.sh pc,pc:b,pc:b ++ psubadds.sh r12,r12:t,r12:t ++ psubadds.sh r5,r5:t,r5:t ++ psubadds.sh r4,r4:b,r4:b ++ psubadds.sh lr,lr:t,lr:t ++ psubadds.sh pc,lr:b,r1:t ++ psubadds.sh r11,r3:b,r12:b ++ psubadds.sh r10,r2:t,r8:t ++ .text ++ .global paddsubs_uh ++paddsubs_uh: ++ paddsubs.uh pc,pc:b,pc:b ++ paddsubs.uh r12,r12:t,r12:t ++ paddsubs.uh r5,r5:t,r5:t ++ paddsubs.uh r4,r4:b,r4:b ++ paddsubs.uh lr,lr:t,lr:t ++ paddsubs.uh r9,r2:b,r3:b ++ paddsubs.uh sp,sp:b,r7:t ++ paddsubs.uh lr,r0:b,r10:t ++ .text ++ .global psubadds_uh ++psubadds_uh: ++ psubadds.uh pc,pc:b,pc:b ++ psubadds.uh r12,r12:t,r12:t ++ psubadds.uh r5,r5:t,r5:t ++ psubadds.uh r4,r4:b,r4:b ++ psubadds.uh lr,lr:t,lr:t ++ psubadds.uh r12,r9:t,pc:t ++ psubadds.uh r8,r6:b,r8:b ++ psubadds.uh r8,r8:b,r4:b ++ .text ++ .global paddsubh_sh ++paddsubh_sh: ++ paddsubh.sh pc,pc:b,pc:b ++ paddsubh.sh r12,r12:t,r12:t ++ paddsubh.sh r5,r5:t,r5:t ++ paddsubh.sh r4,r4:b,r4:b ++ paddsubh.sh lr,lr:t,lr:t ++ paddsubh.sh r8,r9:t,r9:b ++ paddsubh.sh r0,sp:t,r1:t ++ paddsubh.sh r3,r1:b,r0:t ++ .text ++ .global psubaddh_sh ++psubaddh_sh: ++ psubaddh.sh pc,pc:b,pc:b ++ psubaddh.sh r12,r12:t,r12:t ++ psubaddh.sh r5,r5:t,r5:t ++ psubaddh.sh r4,r4:b,r4:b ++ psubaddh.sh lr,lr:t,lr:t ++ psubaddh.sh r7,r3:t,r10:b ++ psubaddh.sh r7,r2:t,r1:t ++ psubaddh.sh r11,r3:b,r6:b ++ .text ++ .global padd_b ++padd_b: ++ padd.b pc,pc,pc ++ padd.b r12,r12,r12 ++ padd.b r5,r5,r5 ++ padd.b r4,r4,r4 ++ padd.b lr,lr,lr ++ padd.b r2,r6,pc ++ padd.b r8,r9,r12 ++ padd.b r5,r12,r3 ++ .text ++ .global psub_b ++psub_b: ++ psub.b pc,pc,pc ++ psub.b r12,r12,r12 ++ psub.b r5,r5,r5 ++ psub.b r4,r4,r4 ++ psub.b lr,lr,lr ++ psub.b r0,r12,pc ++ psub.b r7,sp,r10 ++ psub.b r5,sp,r12 ++ .text ++ .global padds_sb ++padds_sb: ++ padds.sb pc,pc,pc ++ padds.sb r12,r12,r12 ++ padds.sb r5,r5,r5 ++ padds.sb r4,r4,r4 ++ padds.sb lr,lr,lr ++ padds.sb sp,r11,r4 ++ padds.sb r11,r10,r11 ++ padds.sb r5,r12,r6 ++ .text ++ .global psubs_sb ++psubs_sb: ++ psubs.sb pc,pc,pc ++ psubs.sb r12,r12,r12 ++ psubs.sb r5,r5,r5 ++ psubs.sb r4,r4,r4 ++ psubs.sb lr,lr,lr ++ psubs.sb r7,r6,r8 ++ psubs.sb r12,r10,r9 ++ psubs.sb pc,r11,r0 ++ .text ++ .global padds_ub ++padds_ub: ++ padds.ub pc,pc,pc ++ padds.ub r12,r12,r12 ++ padds.ub r5,r5,r5 ++ padds.ub r4,r4,r4 ++ padds.ub lr,lr,lr ++ padds.ub r3,r2,r11 ++ padds.ub r10,r8,r1 ++ padds.ub r11,r8,r10 ++ .text ++ .global psubs_ub ++psubs_ub: ++ psubs.ub pc,pc,pc ++ psubs.ub r12,r12,r12 ++ psubs.ub r5,r5,r5 ++ psubs.ub r4,r4,r4 ++ psubs.ub lr,lr,lr ++ psubs.ub r0,r2,r7 ++ psubs.ub lr,r5,r3 ++ psubs.ub r6,r7,r9 ++ .text ++ .global paddh_ub ++paddh_ub: ++ paddh.ub pc,pc,pc ++ paddh.ub r12,r12,r12 ++ paddh.ub r5,r5,r5 ++ paddh.ub r4,r4,r4 ++ paddh.ub lr,lr,lr ++ paddh.ub lr,r1,r0 ++ paddh.ub r2,r7,r7 ++ paddh.ub r2,r1,r2 ++ .text ++ .global psubh_ub ++psubh_ub: ++ psubh.ub pc,pc,pc ++ psubh.ub r12,r12,r12 ++ psubh.ub r5,r5,r5 ++ psubh.ub r4,r4,r4 ++ psubh.ub lr,lr,lr ++ psubh.ub r0,r1,r6 ++ psubh.ub r4,lr,r10 ++ psubh.ub r9,r8,r1 ++ .text ++ .global pmax_ub ++pmax_ub: ++ pmax.ub pc,pc,pc ++ pmax.ub r12,r12,r12 ++ pmax.ub r5,r5,r5 ++ pmax.ub r4,r4,r4 ++ pmax.ub lr,lr,lr ++ pmax.ub pc,r2,r11 ++ pmax.ub r12,r1,r1 ++ pmax.ub r5,r2,r0 ++ .text ++ .global pmax_sh ++pmax_sh: ++ pmax.sh pc,pc,pc ++ pmax.sh r12,r12,r12 ++ pmax.sh r5,r5,r5 ++ pmax.sh r4,r4,r4 ++ pmax.sh lr,lr,lr ++ pmax.sh lr,r6,r12 ++ pmax.sh r2,pc,r5 ++ pmax.sh pc,r2,r7 ++ .text ++ .global pmin_ub ++pmin_ub: ++ pmin.ub pc,pc,pc ++ pmin.ub r12,r12,r12 ++ pmin.ub r5,r5,r5 ++ pmin.ub r4,r4,r4 ++ pmin.ub lr,lr,lr ++ pmin.ub r8,r1,r5 ++ pmin.ub r1,r8,r3 ++ pmin.ub r0,r2,r7 ++ .text ++ .global pmin_sh ++pmin_sh: ++ pmin.sh pc,pc,pc ++ pmin.sh r12,r12,r12 ++ pmin.sh r5,r5,r5 ++ pmin.sh r4,r4,r4 ++ pmin.sh lr,lr,lr ++ pmin.sh r8,r4,r10 ++ pmin.sh lr,r10,r12 ++ pmin.sh r2,r6,r2 ++ .text ++ .global pavg_ub ++pavg_ub: ++ pavg.ub pc,pc,pc ++ pavg.ub r12,r12,r12 ++ pavg.ub r5,r5,r5 ++ pavg.ub r4,r4,r4 ++ pavg.ub lr,lr,lr ++ pavg.ub r0,r1,r6 ++ pavg.ub r8,r3,r6 ++ pavg.ub pc,r12,r10 ++ .text ++ .global pavg_sh ++pavg_sh: ++ pavg.sh pc,pc,pc ++ pavg.sh r12,r12,r12 ++ pavg.sh r5,r5,r5 ++ pavg.sh r4,r4,r4 ++ pavg.sh lr,lr,lr ++ pavg.sh r9,pc,sp ++ pavg.sh pc,sp,r3 ++ pavg.sh r6,r1,r9 ++ .text ++ .global pabs_sb ++pabs_sb: ++ pabs.sb pc,pc ++ pabs.sb r12,r12 ++ pabs.sb r5,r5 ++ pabs.sb r4,r4 ++ pabs.sb lr,lr ++ pabs.sb r11,r6 ++ pabs.sb lr,r9 ++ pabs.sb sp,r7 ++ .text ++ .global pabs_sh ++pabs_sh: ++ pabs.sh pc,pc ++ pabs.sh r12,r12 ++ pabs.sh r5,r5 ++ pabs.sh r4,r4 ++ pabs.sh lr,lr ++ pabs.sh pc,r3 ++ pabs.sh r5,r7 ++ pabs.sh r4,r0 ++ .text ++ .global psad ++psad: ++ psad pc,pc,pc ++ psad r12,r12,r12 ++ psad r5,r5,r5 ++ psad r4,r4,r4 ++ psad lr,lr,lr ++ psad r9,r11,r11 ++ psad lr,r4,sp ++ psad lr,r4,r5 ++ .text ++ .global pasr_b ++pasr_b: ++ pasr.b pc,pc,0 ++ pasr.b r12,r12,7 ++ pasr.b r5,r5,4 ++ pasr.b r4,r4,3 ++ pasr.b lr,lr,1 ++ pasr.b pc,r7,1 ++ pasr.b sp,lr,6 ++ pasr.b sp,r3,2 ++ .text ++ .global plsl_b ++plsl_b: ++ plsl.b pc,pc,0 ++ plsl.b r12,r12,7 ++ plsl.b r5,r5,4 ++ plsl.b r4,r4,3 ++ plsl.b lr,lr,1 ++ plsl.b r2,r11,4 ++ plsl.b r8,r5,7 ++ plsl.b pc,r0,2 ++ .text ++ .global plsr_b ++plsr_b: ++ plsr.b pc,pc,0 ++ plsr.b r12,r12,7 ++ plsr.b r5,r5,4 ++ plsr.b r4,r4,3 ++ plsr.b lr,lr,1 ++ plsr.b r12,r1,2 ++ plsr.b r6,pc,7 ++ plsr.b r12,r11,2 ++ .text ++ .global pasr_h ++pasr_h: ++ pasr.h pc,pc,0 ++ pasr.h r12,r12,15 ++ pasr.h r5,r5,8 ++ pasr.h r4,r4,7 ++ pasr.h lr,lr,1 ++ pasr.h r0,r11,10 ++ pasr.h r4,r6,8 ++ pasr.h r6,r2,4 ++ .text ++ .global plsl_h ++plsl_h: ++ plsl.h pc,pc,0 ++ plsl.h r12,r12,15 ++ plsl.h r5,r5,8 ++ plsl.h r4,r4,7 ++ plsl.h lr,lr,1 ++ plsl.h r5,r10,9 ++ plsl.h sp,lr,8 ++ plsl.h r0,lr,7 ++ .text ++ .global plsr_h ++plsr_h: ++ plsr.h pc,pc,0 ++ plsr.h r12,r12,15 ++ plsr.h r5,r5,8 ++ plsr.h r4,r4,7 ++ plsr.h lr,lr,1 ++ plsr.h r11,r0,15 ++ plsr.h lr,r3,3 ++ plsr.h r8,lr,10 ++ .text ++ .global packw_sh ++packw_sh: ++ packw.sh pc,pc,pc ++ packw.sh r12,r12,r12 ++ packw.sh r5,r5,r5 ++ packw.sh r4,r4,r4 ++ packw.sh lr,lr,lr ++ packw.sh sp,r11,r10 ++ packw.sh r8,r2,r12 ++ packw.sh r8,r1,r5 ++ .text ++ .global punpckub_h ++punpckub_h: ++ punpckub.h pc,pc:b ++ punpckub.h r12,r12:t ++ punpckub.h r5,r5:t ++ punpckub.h r4,r4:b ++ punpckub.h lr,lr:t ++ punpckub.h r6,r1:t ++ punpckub.h lr,r5:b ++ punpckub.h lr,r2:t ++ .text ++ .global punpcksb_h ++punpcksb_h: ++ punpcksb.h pc,pc:b ++ punpcksb.h r12,r12:t ++ punpcksb.h r5,r5:t ++ punpcksb.h r4,r4:b ++ punpcksb.h lr,lr:t ++ punpcksb.h r4,r7:t ++ punpcksb.h r6,lr:b ++ punpcksb.h r12,r12:t ++ .text ++ .global packsh_ub ++packsh_ub: ++ packsh.ub pc,pc,pc ++ packsh.ub r12,r12,r12 ++ packsh.ub r5,r5,r5 ++ packsh.ub r4,r4,r4 ++ packsh.ub lr,lr,lr ++ packsh.ub r3,r6,r3 ++ packsh.ub r8,r0,r3 ++ packsh.ub r9,r3,lr ++ .text ++ .global packsh_sb ++packsh_sb: ++ packsh.sb pc,pc,pc ++ packsh.sb r12,r12,r12 ++ packsh.sb r5,r5,r5 ++ packsh.sb r4,r4,r4 ++ packsh.sb lr,lr,lr ++ packsh.sb r6,r8,r1 ++ packsh.sb lr,r9,r8 ++ packsh.sb sp,r6,r6 ++ .text ++ .global andl ++andl: ++ andl pc,0 ++ andl r12,65535 ++ andl r5,32768 ++ andl r4,32767 ++ andl lr,1 ++ andl pc,23128 ++ andl r8,47262 ++ andl r7,13719 ++ .text ++ .global andl_coh ++andl_coh: ++ andl pc,0,COH ++ andl r12,65535,COH ++ andl r5,32768,COH ++ andl r4,32767,COH ++ andl lr,1,COH ++ andl r6,22753,COH ++ andl r0,40653,COH ++ andl r4,48580,COH ++ .text ++ .global andh ++andh: ++ andh pc,0 ++ andh r12,65535 ++ andh r5,32768 ++ andh r4,32767 ++ andh lr,1 ++ andh r12,52312 ++ andh r3,8675 ++ andh r2,42987 ++ .text ++ .global andh_coh ++andh_coh: ++ andh pc,0,COH ++ andh r12,65535,COH ++ andh r5,32768,COH ++ andh r4,32767,COH ++ andh lr,1,COH ++ andh r11,34317,COH ++ andh r8,52982,COH ++ andh r10,23683,COH ++ .text ++ .global orl ++orl: ++ orl pc,0 ++ orl r12,65535 ++ orl r5,32768 ++ orl r4,32767 ++ orl lr,1 ++ orl sp,16766 ++ orl r0,21181 ++ orl pc,44103 ++ .text ++ .global orh ++orh: ++ orh pc,0 ++ orh r12,65535 ++ orh r5,32768 ++ orh r4,32767 ++ orh lr,1 ++ orh r8,28285 ++ orh r12,30492 ++ orh r1,59930 ++ .text ++ .global eorl ++eorl: ++ eorl pc,0 ++ eorl r12,65535 ++ eorl r5,32768 ++ eorl r4,32767 ++ eorl lr,1 ++ eorl r4,51129 ++ eorl r6,64477 ++ eorl r1,20913 ++ .text ++ .global eorh ++eorh: ++ eorh pc,0 ++ eorh r12,65535 ++ eorh r5,32768 ++ eorh r4,32767 ++ eorh lr,1 ++ eorh r0,11732 ++ eorh r10,38069 ++ eorh r9,57130 ++ .text ++ .global mcall ++mcall: ++ mcall pc[0] ++ mcall r12[-4] ++ mcall r5[-131072] ++ mcall r4[131068] ++ mcall lr[4] ++ mcall sp[61180] ++ mcall r4[-35000] ++ mcall r0[9924] ++ .text ++ .global pref ++pref: ++ pref pc[0] ++ pref r12[-1] ++ pref r5[-32768] ++ pref r4[32767] ++ pref lr[1] ++ pref r7[7748] ++ pref r7[-7699] ++ pref r2[-25892] ++ .text ++ .global cache ++cache: ++ cache pc[0],0 ++ cache r12[-1],31 ++ cache r5[-1024],16 ++ cache r4[1023],15 ++ cache lr[1],1 ++ cache r3[-964],17 ++ cache r4[-375],22 ++ cache r3[-888],17 ++ .text ++ .global sub4 ++sub4: ++ sub pc,0 ++ sub r12,-1 ++ sub r5,-1048576 ++ sub r4,1048575 ++ sub lr,1 ++ sub r2,-619156 ++ sub lr,461517 ++ sub r8,-185051 ++ .text ++ .global cp3 ++cp3: ++ cp pc,0 ++ cp r12,-1 ++ cp r5,-1048576 ++ cp r4,1048575 ++ cp lr,1 ++ cp r1,124078 ++ cp r0,-378909 ++ cp r4,-243180 ++ .text ++ .global mov2 ++mov2: ++ mov pc,0 ++ mov r12,-1 ++ mov r5,-1048576 ++ mov r4,1048575 ++ mov lr,1 ++ mov r5,-317021 ++ mov sp,-749164 ++ mov r5,940179 ++ .text ++ .global brc2 ++brc2: ++ breq 0 ++ bral -2 ++ brls -2097152 ++ brpl 2097150 ++ brne 2 ++ brhi -1796966 ++ brqs 1321368 ++ brls -577434 ++ .text ++ .global rcall2 ++rcall2: ++ rcall 0 ++ rcall -2 ++ rcall -2097152 ++ rcall 2097150 ++ rcall 2 ++ rcall 496820 ++ rcall 1085092 ++ rcall -1058 ++ .text ++ .global sub5 ++sub5: ++ sub pc,pc,0 ++ sub r12,r12,-1 ++ sub r5,r5,-32768 ++ sub r4,r4,32767 ++ sub lr,lr,1 ++ sub pc,pc,-12744 ++ sub r7,r7,-27365 ++ sub r2,r9,-17358 ++ .text ++ .global satsub_w2 ++satsub_w2: ++ satsub.w pc,pc,0 ++ satsub.w r12,r12,-1 ++ satsub.w r5,r5,-32768 ++ satsub.w r4,r4,32767 ++ satsub.w lr,lr,1 ++ satsub.w r2,lr,-2007 ++ satsub.w r7,r12,-784 ++ satsub.w r4,r7,23180 ++ .text ++ .global ld_d4 ++ld_d4: ++ ld.d r0,pc[0] ++ ld.d r14,r12[-1] ++ ld.d r8,r5[-32768] ++ ld.d r6,r4[32767] ++ ld.d r2,lr[1] ++ ld.d r14,r11[14784] ++ ld.d r6,r9[-18905] ++ ld.d r2,r3[-6355] ++ .text ++ .global ld_w4 ++ld_w4: ++ ld.w pc,pc[0] ++ ld.w r12,r12[-1] ++ ld.w r5,r5[-32768] ++ ld.w r4,r4[32767] ++ ld.w lr,lr[1] ++ ld.w r0,r12[-22133] ++ ld.w sp,pc[-20521] ++ /* ld.w r3,r5[29035] */ ++ nop ++ .text ++ .global ld_sh4 ++ld_sh4: ++ ld.sh pc,pc[0] ++ ld.sh r12,r12[-1] ++ ld.sh r5,r5[-32768] ++ ld.sh r4,r4[32767] ++ ld.sh lr,lr[1] ++ ld.sh r6,r10[30930] ++ ld.sh r6,r10[21973] ++ /* ld.sh r11,r10[-2058] */ ++ nop ++ .text ++ .global ld_uh4 ++ld_uh4: ++ ld.uh pc,pc[0] ++ ld.uh r12,r12[-1] ++ ld.uh r5,r5[-32768] ++ ld.uh r4,r4[32767] ++ ld.uh lr,lr[1] ++ ld.uh r1,r9[-13354] ++ ld.uh lr,r11[21337] ++ /* ld.uh r2,lr[-25370] */ ++ nop ++ .text ++ .global ld_sb1 ++ld_sb1: ++ ld.sb pc,pc[0] ++ ld.sb r12,r12[-1] ++ ld.sb r5,r5[-32768] ++ ld.sb r4,r4[32767] ++ ld.sb lr,lr[1] ++ ld.sb r7,sp[-28663] ++ ld.sb r2,r1[-5879] ++ ld.sb r12,r3[18734] ++ .text ++ .global ld_ub4 ++ld_ub4: ++ ld.ub pc,pc[0] ++ ld.ub r12,r12[-1] ++ ld.ub r5,r5[-32768] ++ ld.ub r4,r4[32767] ++ ld.ub lr,lr[1] ++ ld.ub pc,r4[8277] ++ ld.ub r5,r12[19172] ++ ld.ub r10,lr[26347] ++ .text ++ .global st_d4 ++st_d4: ++ st.d pc[0],r0 ++ st.d r12[-1],r14 ++ st.d r5[-32768],r8 ++ st.d r4[32767],r6 ++ st.d lr[1],r2 ++ st.d r5[13200],r10 ++ st.d r5[9352],r10 ++ st.d r5[32373],r4 ++ .text ++ .global st_w4 ++st_w4: ++ st.w pc[0],pc ++ st.w r12[-1],r12 ++ st.w r5[-32768],r5 ++ st.w r4[32767],r4 ++ st.w lr[1],lr ++ st.w sp[6136],r7 ++ st.w r6[27087],r12 ++ /* st.w r3[20143],r7 */ ++ nop ++ .text ++ .global st_h4 ++st_h4: ++ st.h pc[0],pc ++ st.h r12[-1],r12 ++ st.h r5[-32768],r5 ++ st.h r4[32767],r4 ++ st.h lr[1],lr ++ st.h r4[-9962],r7 ++ st.h r9[-16250],r3 ++ /* st.h r8[-28810],r7 */ ++ nop ++ .text ++ .global st_b4 ++st_b4: ++ st.b pc[0],pc ++ st.b r12[-1],r12 ++ st.b r5[-32768],r5 ++ st.b r4[32767],r4 ++ st.b lr[1],lr ++ st.b r12[30102],r6 ++ st.b r5[28977],r1 ++ st.b r0[5470],r1 ++ .text ++ .global mfsr ++mfsr: ++ mfsr pc,0 ++ mfsr r12,1020 ++ mfsr r5,512 ++ mfsr r4,508 ++ mfsr lr,4 ++ mfsr r2,696 ++ mfsr r4,260 ++ mfsr r10,1016 ++ .text ++ .global mtsr ++mtsr: ++ mtsr 0,pc ++ mtsr 1020,r12 ++ mtsr 512,r5 ++ mtsr 508,r4 ++ mtsr 4,lr ++ mtsr 224,r10 ++ mtsr 836,r12 ++ mtsr 304,r9 ++ .text ++ .global mfdr ++mfdr: ++ mfdr pc,0 ++ mfdr r12,1020 ++ mfdr r5,512 ++ mfdr r4,508 ++ mfdr lr,4 ++ mfdr r6,932 ++ mfdr r5,36 ++ mfdr r9,300 ++ .text ++ .global mtdr ++mtdr: ++ mtdr 0,pc ++ mtdr 1020,r12 ++ mtdr 512,r5 ++ mtdr 508,r4 ++ mtdr 4,lr ++ mtdr 180,r8 ++ mtdr 720,r10 ++ mtdr 408,lr ++ .text ++ .global sleep ++sleep: ++ sleep 0 ++ sleep 255 ++ sleep 128 ++ sleep 127 ++ sleep 1 ++ sleep 254 ++ sleep 15 ++ sleep 43 ++ .text ++ .global sync ++sync: ++ sync 0 ++ sync 255 ++ sync 128 ++ sync 127 ++ sync 1 ++ sync 166 ++ sync 230 ++ sync 180 ++ .text ++ .global bld ++bld: ++ bld pc,0 ++ bld r12,31 ++ bld r5,16 ++ bld r4,15 ++ bld lr,1 ++ bld r9,15 ++ bld r0,4 ++ bld lr,26 ++ .text ++ .global bst ++bst: ++ bst pc,0 ++ bst r12,31 ++ bst r5,16 ++ bst r4,15 ++ bst lr,1 ++ bst r10,28 ++ bst r0,3 ++ bst sp,2 ++ .text ++ .global sats ++sats: ++ sats pc>>0,0 ++ sats r12>>31,31 ++ sats r5>>16,16 ++ sats r4>>15,15 ++ sats lr>>1,1 ++ sats r10>>3,19 ++ sats r10>>2,26 ++ sats r1>>20,1 ++ .text ++ .global satu ++satu: ++ satu pc>>0,0 ++ satu r12>>31,31 ++ satu r5>>16,16 ++ satu r4>>15,15 ++ satu lr>>1,1 ++ satu pc>>5,7 ++ satu r7>>5,5 ++ satu r2>>26,19 ++ .text ++ .global satrnds ++satrnds: ++ satrnds pc>>0,0 ++ satrnds r12>>31,31 ++ satrnds r5>>16,16 ++ satrnds r4>>15,15 ++ satrnds lr>>1,1 ++ satrnds r0>>21,19 ++ satrnds sp>>0,2 ++ satrnds r7>>6,29 ++ .text ++ .global satrndu ++satrndu: ++ satrndu pc>>0,0 ++ satrndu r12>>31,31 ++ satrndu r5>>16,16 ++ satrndu r4>>15,15 ++ satrndu lr>>1,1 ++ satrndu r12>>0,26 ++ satrndu r4>>21,3 ++ satrndu r10>>3,16 ++ .text ++ .global subfc ++subfc: ++ subfeq pc,0 ++ subfal r12,-1 ++ subfls r5,-128 ++ subfpl r4,127 ++ subfne lr,1 ++ subfls r10,8 ++ subfvc r11,99 ++ subfvs r2,73 ++ .text ++ .global subc ++subc: ++ subeq pc,0 ++ subal r12,-1 ++ subls r5,-128 ++ subpl r4,127 ++ subne lr,1 ++ subls r12,118 ++ subvc lr,-12 ++ submi r4,-13 ++ .text ++ .global movc2 ++movc2: ++ moveq pc,0 ++ moval r12,-1 ++ movls r5,-128 ++ movpl r4,127 ++ movne lr,1 ++ movlt r3,-122 ++ movvc r8,2 ++ movne r7,-111 ++ .text ++ .global cp_b ++cp_b: ++ cp.b pc,r0 ++ cp.b r0,pc ++ cp.b r7,r8 ++ cp.b r8,r7 ++ .text ++ .global cp_h ++cp_h: ++ cp.h pc,r0 ++ cp.h r0,pc ++ cp.h r7,r8 ++ cp.h r8,r7 ++ .text ++ .global ldm ++ldm: ++ ldm pc,r1-r6 ++ ldm r12,r0-r15 ++ ldm r5,r15 ++ ldm r4,r0-r14 ++ ldm lr,r0 ++ ldm r9,r1,r5,r14 ++ ldm r11,r2-r3,r5-r8,r15 ++ ldm r6,r0,r3,r9,r13,r15 ++ .text ++ .global ldm_pu ++ldm_pu: ++ ldm pc++,r6-r9 ++ ldm r12++,r0-r15 ++ ldm r5++,r15 ++ ldm r4++,r0-r14 ++ ldm lr++,r0 ++ ldm r12++,r3-r5,r8,r10,r12,r14-r15 ++ ldm r10++,r2,r4-r6,r14-r15 ++ ldm r6++,r1,r3-r4,r9-r14 ++ .text ++ .global ldmts ++ldmts: ++ ldmts pc,r7-r8 ++ ldmts r12,r0-r15 ++ ldmts r5,r15 ++ ldmts r4,r0-r14 ++ ldmts lr,r0 ++ ldmts r0,r1-r2,r11-r12 ++ ldmts lr,r0-r2,r4,r7-r8,r13-r14 ++ ldmts r12,r0-r1,r3-r5,r9,r14-r15 ++ .text ++ .global ldmts_pu ++ldmts_pu: ++ ldmts pc++,r9 ++ ldmts r12++,r0-r15 ++ ldmts r5++,r15 ++ ldmts r4++,r0-r14 ++ ldmts lr++,r0 ++ ldmts sp++,r0,r2-r5,r7,r9,r11 ++ ldmts r5++,r1-r3,r7,r10-r11 ++ ldmts r8++,r2-r4,r7-r8,r13,r15 ++ .text ++ .global stm ++stm: ++ stm pc,r7 ++ stm r12,r0-r15 ++ stm r5,r15 ++ stm r4,r0-r14 ++ stm lr,r0 ++ stm sp,r2-r3,r5,r8,r11,r14 ++ stm r4,r0-r4,r6,r10-r11,r14 ++ stm r9,r1,r5,r9,r12-r15 ++ .text ++ .global stm_pu ++stm_pu: ++ stm --pc,r4-r6 ++ stm --r12,r0-r15 ++ stm --r5,r15 ++ stm --r4,r0-r14 ++ stm --lr,r0 ++ stm --r11,r0,r4-r9,r11-r15 ++ stm --r11,r0,r3,r9-r10,r12,r14 ++ stm --r6,r2,r8-r9,r13-r14 ++ .text ++ .global stmts ++stmts: ++ stmts pc,r8 ++ stmts r12,r0-r15 ++ stmts r5,r15 ++ stmts r4,r0-r14 ++ stmts lr,r0 ++ stmts r1,r0-r1,r3-r4,r6,r9-r10,r14-r15 ++ stmts r3,r0,r6-r8,r10-r12 ++ stmts r11,r0,r4,r6-r7,r9-r10,r12,r14-r15 ++ .text ++ .global stmts_pu ++stmts_pu: ++ stmts --pc,r6-r8 ++ stmts --r12,r0-r15 ++ stmts --r5,r15 ++ stmts --r4,r0-r14 ++ stmts --lr,r0 ++ stmts --r2,r0,r3-r4,r9-r10,r12-r13 ++ stmts --r3,r0-r1,r14-r15 ++ stmts --r0,r0,r2-r6,r10,r14 ++ .text ++ .global ldins_h ++ldins_h: ++ ldins.h pc:b,pc[0] ++ ldins.h r12:t,r12[-2] ++ ldins.h r5:t,r5[-4096] ++ ldins.h r4:b,r4[4094] ++ ldins.h lr:t,lr[2] ++ ldins.h r0:t,lr[1930] ++ ldins.h r3:b,r7[-534] ++ ldins.h r2:b,r12[-2252] ++ .text ++ .global ldins_b ++ldins_b: ++ ldins.b pc:b,pc[0] ++ ldins.b r12:t,r12[-1] ++ ldins.b r5:u,r5[-2048] ++ ldins.b r4:l,r4[2047] ++ ldins.b lr:l,lr[1] ++ ldins.b r6:t,r4[-662] ++ ldins.b r5:b,r1[-151] ++ ldins.b r10:t,r11[-1923] ++ .text ++ .global ldswp_sh ++ldswp_sh: ++ ldswp.sh pc,pc[0] ++ ldswp.sh r12,r12[-2] ++ ldswp.sh r5,r5[-4096] ++ ldswp.sh r4,r4[4094] ++ ldswp.sh lr,lr[2] ++ ldswp.sh r9,r10[3848] ++ ldswp.sh r4,r12[-2040] ++ ldswp.sh r10,r2[3088] ++ .text ++ .global ldswp_uh ++ldswp_uh: ++ ldswp.uh pc,pc[0] ++ ldswp.uh r12,r12[-2] ++ ldswp.uh r5,r5[-4096] ++ ldswp.uh r4,r4[4094] ++ ldswp.uh lr,lr[2] ++ ldswp.uh r4,r9[3724] ++ ldswp.uh lr,sp[-1672] ++ ldswp.uh r8,r12[-3846] ++ .text ++ .global ldswp_w ++ldswp_w: ++ ldswp.w pc,pc[0] ++ ldswp.w r12,r12[-4] ++ ldswp.w r5,r5[-8192] ++ ldswp.w r4,r4[8188] ++ ldswp.w lr,lr[4] ++ ldswp.w sp,r7[1860] ++ ldswp.w pc,r5[-3324] ++ ldswp.w r12,r10[-3296] ++ .text ++ .global stswp_h ++stswp_h: ++ stswp.h pc[0],pc ++ stswp.h r12[-2],r12 ++ stswp.h r5[-4096],r5 ++ stswp.h r4[4094],r4 ++ stswp.h lr[2],lr ++ stswp.h r7[64],r10 ++ stswp.h r10[3024],r2 ++ stswp.h r0[-2328],r10 ++ .text ++ .global stswp_w ++stswp_w: ++ stswp.w pc[0],pc ++ stswp.w r12[-4],r12 ++ stswp.w r5[-8192],r5 ++ stswp.w r4[8188],r4 ++ stswp.w lr[4],lr ++ stswp.w pc[1156],r8 ++ stswp.w sp[7992],r10 ++ stswp.w r8[-1172],r5 ++ .text ++ .global and2 ++and2: ++ and pc,pc,pc<<0 ++ and r12,r12,r12<<31 ++ and r5,r5,r5<<16 ++ and r4,r4,r4<<15 ++ and lr,lr,lr<<1 ++ and r10,r2,r1<<1 ++ and r12,r8,r11<<27 ++ and r10,r7,r0<<3 ++ .text ++ .global and3 ++and3: ++ and pc,pc,pc>>0 ++ and r12,r12,r12>>31 ++ and r5,r5,r5>>16 ++ and r4,r4,r4>>15 ++ and lr,lr,lr>>1 ++ and r12,r8,r7>>17 ++ and pc,r4,r9>>20 ++ and r10,r9,r10>>12 ++ .text ++ .global or2 ++or2: ++ or pc,pc,pc<<0 ++ or r12,r12,r12<<31 ++ or r5,r5,r5<<16 ++ or r4,r4,r4<<15 ++ or lr,lr,lr<<1 ++ or r8,sp,r11<<29 ++ or pc,r9,r2<<28 ++ or r5,r1,r2<<3 ++ .text ++ .global or3 ++or3: ++ or pc,pc,pc>>0 ++ or r12,r12,r12>>31 ++ or r5,r5,r5>>16 ++ or r4,r4,r4>>15 ++ or lr,lr,lr>>1 ++ or r1,sp,sp>>2 ++ or r0,r1,r1>>29 ++ or r4,r12,r8>>8 ++ .text ++ .global eor2 ++eor2: ++ eor pc,pc,pc<<0 ++ eor r12,r12,r12<<31 ++ eor r5,r5,r5<<16 ++ eor r4,r4,r4<<15 ++ eor lr,lr,lr<<1 ++ eor r10,r9,r4<<11 ++ eor r4,r0,r1<<31 ++ eor r6,r2,r12<<13 ++ .text ++ .global eor3 ++eor3: ++ eor pc,pc,pc>>0 ++ eor r12,r12,r12>>31 ++ eor r5,r5,r5>>16 ++ eor r4,r4,r4>>15 ++ eor lr,lr,lr>>1 ++ eor r5,r5,r5>>22 ++ eor r10,r1,lr>>3 ++ eor r7,lr,sp>>26 ++ .text ++ .global sthh_w2 ++sthh_w2: ++ sthh.w pc[pc<<0],pc:b,pc:b ++ sthh.w r12[r12<<3],r12:t,r12:t ++ sthh.w r5[r5<<2],r5:t,r5:t ++ sthh.w r4[r4<<1],r4:b,r4:b ++ sthh.w lr[lr<<1],lr:t,lr:t ++ sthh.w sp[r6<<3],r1:t,r12:t ++ sthh.w r6[r6<<0],r9:t,r9:t ++ sthh.w r10[r3<<0],r0:b,r11:t ++ .text ++ .global sthh_w1 ++sthh_w1: ++ sthh.w pc[0],pc:b,pc:b ++ sthh.w r12[1020],r12:t,r12:t ++ sthh.w r5[512],r5:t,r5:t ++ sthh.w r4[508],r4:b,r4:b ++ sthh.w lr[4],lr:t,lr:t ++ sthh.w r4[404],r9:t,r0:b ++ sthh.w r8[348],r2:t,r10:b ++ sthh.w sp[172],r9:b,r2:b ++ .text ++ .global cop ++cop: ++ cop cp0,cr0,cr0,cr0,0 ++ cop cp7,cr15,cr15,cr15,0x7f ++ cop cp3,cr5,cr5,cr5,0x31 ++ cop cp2,cr4,cr4,cr4,0x30 ++ cop cp5,cr8,cr3,cr7,0x5a ++ .text ++ .global ldc_w1 ++ldc_w1: ++ ldc.w cp0,cr0,r0[0] ++ ldc.w cp7,cr15,pc[255<<2] ++ ldc.w cp3,cr5,r5[128<<2] ++ ldc.w cp2,cr4,r4[127<<2] ++ ldc.w cp4,cr9,r13[36<<2] ++ .text ++ .global ldc_w2 ++ldc_w2: ++ ldc.w cp0,cr0,--r0 ++ ldc.w cp7,cr15,--pc ++ ldc.w cp3,cr5,--r5 ++ ldc.w cp2,cr4,--r4 ++ ldc.w cp4,cr9,--r13 ++ .text ++ .global ldc_w3 ++ldc_w3: ++ ldc.w cp0,cr0,r0[r0] ++ ldc.w cp7,cr15,pc[pc<<3] ++ ldc.w cp3,cr5,r5[r4<<2] ++ ldc.w cp2,cr4,r4[r3<<1] ++ ldc.w cp4,cr9,r13[r12<<0] ++ .text ++ .global ldc_d1 ++ldc_d1: ++ ldc.d cp0,cr0,r0[0] ++ ldc.d cp7,cr14,pc[255<<2] ++ ldc.d cp3,cr6,r5[128<<2] ++ ldc.d cp2,cr4,r4[127<<2] ++ ldc.d cp4,cr8,r13[36<<2] ++ .text ++ .global ldc_d2 ++ldc_d2: ++ ldc.d cp0,cr0,--r0 ++ ldc.d cp7,cr14,--pc ++ ldc.d cp3,cr6,--r5 ++ ldc.d cp2,cr4,--r4 ++ ldc.d cp4,cr8,--r13 ++ .text ++ .global ldc_d3 ++ldc_d3: ++ ldc.d cp0,cr0,r0[r0] ++ ldc.d cp7,cr14,pc[pc<<3] ++ ldc.d cp3,cr6,r5[r4<<2] ++ ldc.d cp2,cr4,r4[r3<<1] ++ ldc.d cp4,cr8,r13[r12<<0] ++ .text ++ .global stc_w1 ++stc_w1: ++ stc.w cp0,r0[0],cr0 ++ stc.w cp7,pc[255<<2],cr15 ++ stc.w cp3,r5[128<<2],cr5 ++ stc.w cp2,r4[127<<2],cr4 ++ stc.w cp4,r13[36<<2],cr9 ++ .text ++ .global stc_w2 ++stc_w2: ++ stc.w cp0,r0++,cr0 ++ stc.w cp7,pc++,cr15 ++ stc.w cp3,r5++,cr5 ++ stc.w cp2,r4++,cr4 ++ stc.w cp4,r13++,cr9 ++ .text ++ .global stc_w3 ++stc_w3: ++ stc.w cp0,r0[r0],cr0 ++ stc.w cp7,pc[pc<<3],cr15 ++ stc.w cp3,r5[r4<<2],cr5 ++ stc.w cp2,r4[r3<<1],cr4 ++ stc.w cp4,r13[r12<<0],cr9 ++ .text ++ .global stc_d1 ++stc_d1: ++ stc.d cp0,r0[0],cr0 ++ stc.d cp7,pc[255<<2],cr14 ++ stc.d cp3,r5[128<<2],cr6 ++ stc.d cp2,r4[127<<2],cr4 ++ stc.d cp4,r13[36<<2],cr8 ++ .text ++ .global stc_d2 ++stc_d2: ++ stc.d cp0,r0++,cr0 ++ stc.d cp7,pc++,cr14 ++ stc.d cp3,r5++,cr6 ++ stc.d cp2,r4++,cr4 ++ stc.d cp4,r13++,cr8 ++ .text ++ .global stc_d3 ++stc_d3: ++ stc.d cp0,r0[r0],cr0 ++ stc.d cp7,pc[pc<<3],cr14 ++ stc.d cp3,r5[r4<<2],cr6 ++ stc.d cp2,r4[r3<<1],cr4 ++ stc.d cp4,r13[r12<<0],cr8 ++ .text ++ .global ldc0_w ++ldc0_w: ++ ldc0.w cr0,r0[0] ++ ldc0.w cr15,pc[4095<<2] ++ ldc0.w cr5,r5[2048<<2] ++ ldc0.w cr4,r4[2047<<2] ++ ldc0.w cr9,r13[147<<2] ++ .text ++ .global ldc0_d ++ldc0_d: ++ ldc0.d cr0,r0[0] ++ ldc0.d cr14,pc[4095<<2] ++ ldc0.d cr6,r5[2048<<2] ++ ldc0.d cr4,r4[2047<<2] ++ ldc0.d cr8,r13[147<<2] ++ .text ++ .global stc0_w ++stc0_w: ++ stc0.w r0[0],cr0 ++ stc0.w pc[4095<<2],cr15 ++ stc0.w r5[2048<<2],cr5 ++ stc0.w r4[2047<<2],cr4 ++ stc0.w r13[147<<2],cr9 ++ .text ++ .global stc0_d ++stc0_d: ++ stc0.d r0[0],cr0 ++ stc0.d pc[4095<<2],cr14 ++ stc0.d r5[2048<<2],cr6 ++ stc0.d r4[2047<<2],cr4 ++ stc0.d r13[147<<2],cr8 ++ .text ++ .global memc ++memc: ++ memc 0, 0 ++ memc -4, 31 ++ memc -65536, 16 ++ memc 65532, 15 ++ .text ++ .global mems ++mems: ++ mems 0, 0 ++ mems -4, 31 ++ mems -65536, 16 ++ mems 65532, 15 ++ .text ++ .global memt ++memt: ++ memt 0, 0 ++ memt -4, 31 ++ memt -65536, 16 ++ memt 65532, 15 ++ ++ .text ++ .global stcond ++stcond: ++ stcond r0[0], r0 ++ stcond pc[-1], pc ++ stcond r8[-32768], r7 ++ stcond r7[32767], r8 ++ stcond r5[0x1234], r10 ++ ++ldcm_w: ++ ldcm.w cp0,pc,cr0-cr7 ++ ldcm.w cp7,r0,cr0 ++ ldcm.w cp4,r4++,cr0-cr6 ++ ldcm.w cp3,r7,cr7 ++ ldcm.w cp1,r12++,cr1,cr4-cr6 ++ ldcm.w cp0,pc,cr8-cr15 ++ ldcm.w cp7,r0,cr8 ++ ldcm.w cp4,r4++,cr8-cr14 ++ ldcm.w cp3,r7,cr15 ++ ldcm.w cp1,r12++,cr9,cr12-cr14 ++ ++ldcm_d: ++ ldcm.d cp0,pc,cr0-cr15 ++ ldcm.d cp7,r0,cr0,cr1 ++ ldcm.d cp4,r4++,cr0-cr13 ++ ldcm.d cp3,r7,cr14-cr15 ++ ldcm.d cp2,r12++,cr0-cr3,cr8-cr9,cr14-cr15 ++ ++stcm_w: ++ stcm.w cp0,pc,cr0-cr7 ++ stcm.w cp7,r0,cr0 ++ stcm.w cp4,--r4,cr0-cr6 ++ stcm.w cp3,r7,cr7 ++ stcm.w cp1,--r12,cr1,cr4-cr6 ++ stcm.w cp0,pc,cr8-cr15 ++ stcm.w cp7,r0,cr8 ++ stcm.w cp4,--r4,cr8-cr14 ++ stcm.w cp3,r7,cr15 ++ stcm.w cp1,--r12,cr9,cr12-cr14 ++ ++stcm_d: ++ stcm.d cp0,pc,cr0-cr15 ++ stcm.d cp7,r0,cr0,cr1 ++ stcm.d cp4,--r4,cr0-cr13 ++ stcm.d cp3,r7,cr14-cr15 ++ stcm.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15 ++ ++mvcr_w: ++ mvcr.w cp7,pc,cr15 ++ mvcr.w cp0,r0,cr0 ++ mvcr.w cp0,pc,cr15 ++ mvcr.w cp7,r0,cr15 ++ mvcr.w cp7,pc,cr0 ++ mvcr.w cp4,r7,cr8 ++ mvcr.w cp3,r8,cr7 ++ ++mvcr_d: ++ mvcr.d cp7,lr,cr14 ++ mvcr.d cp0,r0,cr0 ++ mvcr.d cp0,lr,cr14 ++ mvcr.d cp7,r0,cr14 ++ mvcr.d cp7,lr,cr0 ++ mvcr.d cp4,r6,cr8 ++ mvcr.d cp3,r8,cr6 ++ ++mvrc_w: ++ mvrc.w cp7,cr15,pc ++ mvrc.w cp0,cr0,r0 ++ mvrc.w cp0,cr15,pc ++ mvrc.w cp7,cr15,r0 ++ mvrc.w cp7,cr0,pc ++ mvrc.w cp4,cr8,r7 ++ mvrc.w cp3,cr7,r8 ++ ++mvrc_d: ++ mvrc.d cp7,cr14,lr ++ mvrc.d cp0,cr0,r0 ++ mvrc.d cp0,cr14,lr ++ mvrc.d cp7,cr14,r0 ++ mvrc.d cp7,cr0,lr ++ mvrc.d cp4,cr8,r6 ++ mvrc.d cp3,cr6,r8 ++ ++bfexts: ++ bfexts pc,pc,31,31 ++ bfexts r0,r0,0,0 ++ bfexts r0,pc,31,31 ++ bfexts pc,r0,31,31 ++ bfexts pc,pc,0,31 ++ bfexts pc,pc,31,0 ++ bfexts r7,r8,15,16 ++ bfexts r8,r7,16,15 ++ ++bfextu: ++ bfextu pc,pc,31,31 ++ bfextu r0,r0,0,0 ++ bfextu r0,pc,31,31 ++ bfextu pc,r0,31,31 ++ bfextu pc,pc,0,31 ++ bfextu pc,pc,31,0 ++ bfextu r7,r8,15,16 ++ bfextu r8,r7,16,15 ++ ++bfins: ++ bfins pc,pc,31,31 ++ bfins r0,r0,0,0 ++ bfins r0,pc,31,31 ++ bfins pc,r0,31,31 ++ bfins pc,pc,0,31 ++ bfins pc,pc,31,0 ++ bfins r7,r8,15,16 ++ bfins r8,r7,16,15 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/avr32.exp binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/avr32.exp +--- binutils-2.17/gas/testsuite/gas/avr32/avr32.exp 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/avr32.exp 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,23 @@ ++# AVR32 assembler testsuite. -*- Tcl -*- ++ ++if [istarget avr32-*-*] { ++ run_dump_test "hwrd-lwrd" ++ run_dump_test "pcrel" ++ run_dump_test "aliases" ++ run_dump_test "dwarf2" ++ run_dump_test "pic_reloc" ++ run_dump_test "fpinsn" ++ run_dump_test "pico" ++ run_dump_test "lda_pic" ++ run_dump_test "lda_pic_linkrelax" ++ run_dump_test "lda_nopic" ++ run_dump_test "lda_nopic_linkrelax" ++ run_dump_test "call_pic" ++ run_dump_test "call_pic_linkrelax" ++ run_dump_test "call_nopic" ++ run_dump_test "call_nopic_linkrelax" ++ run_dump_test "jmptable" ++ run_dump_test "jmptable_linkrelax" ++ run_dump_test "symdiff" ++ run_dump_test "symdiff_linkrelax" ++} +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/call_nopic.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_nopic.d +--- binutils-2.17/gas/testsuite/gas/avr32/call_nopic.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_nopic.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,36 @@ ++#source: call.s ++#as: ++#objdump: -dr ++#name: call_nopic ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: d7 03 nop ++ ++00000002 : ++ \.\.\. ++ 1ffffe: 00 00 add r0,r0 ++ 200000: f0 a0 00 00 rcall 0 ++ 200004: f0 1f 00 0c mcall 200034 ++ 200008: f0 1f 00 0c mcall 200038 ++ 20000c: f0 1f 00 0c mcall 20003c ++ 200010: f0 1f 00 0c mcall 200040 ++ \.\.\. ++ 200030: ee b0 ff ff rcall 40002e ++ \.\.\. ++ 200034: R_AVR32_32_CPENT \.text\+0x2 ++ 200038: R_AVR32_32_CPENT \.text\.init ++ 20003c: R_AVR32_32_CPENT undefined ++ 200040: R_AVR32_32_CPENT \.text\+0x40002c ++ ++0040002c : ++ 40002c: d7 03 nop ++0040002e : ++ 40002e: d7 03 nop ++Disassembly of section \.text\.init: ++ ++00000000 : ++ 0: e2 c0 00 00 sub r0,r1,0 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/call_nopic_linkrelax.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_nopic_linkrelax.d +--- binutils-2.17/gas/testsuite/gas/avr32/call_nopic_linkrelax.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_nopic_linkrelax.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,43 @@ ++#source: call.s ++#as: --linkrelax ++#objdump: -dr ++#name: call_nopic_linkrelax ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: d7 03 nop ++ ++00000002 : ++ \.\.\. ++ 1ffffe: 00 00 add r0,r0 ++ 200000: e0 a0 00 00 rcall 200000 ++ 200000: R_AVR32_22H_PCREL \.text ++ 200004: f0 1f 00 00 mcall 200004 ++ 200004: R_AVR32_CPCALL \.text\+0x200034 ++ 200008: f0 1f 00 00 mcall 200008 ++ 200008: R_AVR32_CPCALL \.text\+0x200038 ++ 20000c: f0 1f 00 00 mcall 20000c ++ 20000c: R_AVR32_CPCALL \.text\+0x20003c ++ 200010: f0 1f 00 00 mcall 200010 ++ 200010: R_AVR32_CPCALL \.text\+0x200040 ++ \.\.\. ++ 200030: e0 a0 00 00 rcall 200030 ++ 200030: R_AVR32_22H_PCREL \.text\+0x40002e ++ \.\.\. ++ 200034: R_AVR32_ALIGN \*ABS\*\+0x2 ++ 200034: R_AVR32_32_CPENT \.text\+0x2 ++ 200038: R_AVR32_32_CPENT \.text\.init ++ 20003c: R_AVR32_32_CPENT undefined ++ 200040: R_AVR32_32_CPENT \.text\+0x40002c ++ ++0040002c : ++ 40002c: d7 03 nop ++0040002e : ++ 40002e: d7 03 nop ++Disassembly of section \.text\.init: ++ ++00000000 : ++ 0: e2 c0 00 00 sub r0,r1,0 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/call_pic.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_pic.d +--- binutils-2.17/gas/testsuite/gas/avr32/call_pic.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_pic.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,36 @@ ++#source: call.s ++#as: --pic ++#objdump: -dr ++#name: call_pic ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: d7 03 nop ++ ++00000002 : ++ \.\.\. ++ 1ffffe: 00 00 add r0,r0 ++ 200000: f0 a0 00 00 rcall 0 ++ 200004: f0 16 00 00 mcall r6\[0\] ++ 200004: R_AVR32_GOT18SW toofar_negative ++ 200008: f0 16 00 00 mcall r6\[0\] ++ 200008: R_AVR32_GOT18SW different_section ++ 20000c: f0 16 00 00 mcall r6\[0\] ++ 20000c: R_AVR32_GOT18SW undefined ++ 200010: f0 16 00 00 mcall r6\[0\] ++ 200010: R_AVR32_GOT18SW toofar_positive ++ \.\.\. ++ 200030: ee b0 ff ff rcall 40002e ++ \.\.\. ++ ++0040002c : ++ 40002c: d7 03 nop ++0040002e : ++ 40002e: d7 03 nop ++Disassembly of section \.text\.init: ++ ++00000000 : ++ 0: e2 c0 00 00 sub r0,r1,0 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/call_pic_linkrelax.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_pic_linkrelax.d +--- binutils-2.17/gas/testsuite/gas/avr32/call_pic_linkrelax.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call_pic_linkrelax.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,47 @@ ++#source: call.s ++#as: --pic --linkrelax ++#objdump: -dr ++#name: call_pic_linkrelax ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: d7 03 nop ++ ++00000002 : ++ \.\.\. ++ 1ffffe: 00 00 add r0,r0 ++ 200000: e0 a0 00 00 rcall 200000 ++ 200000: R_AVR32_22H_PCREL \.text ++ 200004: e0 6e 00 00 mov lr,0 ++ 200004: R_AVR32_GOTCALL toofar_negative ++ 200008: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\] ++ 20000c: 5d 1e icall lr ++ 20000e: e0 6e 00 00 mov lr,0 ++ 20000e: R_AVR32_GOTCALL different_section ++ 200012: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\] ++ 200016: 5d 1e icall lr ++ 200018: e0 6e 00 00 mov lr,0 ++ 200018: R_AVR32_GOTCALL undefined ++ 20001c: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\] ++ 200020: 5d 1e icall lr ++ 200022: e0 6e 00 00 mov lr,0 ++ 200022: R_AVR32_GOTCALL toofar_positive ++ 200026: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\] ++ 20002a: 5d 1e icall lr ++ 20002c: 00 00 add r0,r0 ++ 20002e: 00 00 add r0,r0 ++ 200030: e0 a0 00 00 rcall 200030 ++ 200030: R_AVR32_22H_PCREL \.text\+0x40002e ++ \.\.\. ++ ++0040002c : ++ 40002c: d7 03 nop ++0040002e : ++ 40002e: d7 03 nop ++Disassembly of section \.text\.init: ++ ++00000000 : ++ 0: e2 c0 00 00 sub r0,r1,0 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/call.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call.s +--- binutils-2.17/gas/testsuite/gas/avr32/call.s 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/call.s 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,30 @@ ++ ++ .text ++ .global call_test ++call_test: ++far_negative: ++ nop ++toofar_negative: ++ ++ .org 0x200000 ++ ++ call far_negative ++ call toofar_negative ++ call different_section ++ call undefined ++ call toofar_positive ++ .org 0x200030 ++ call far_positive ++ ++ .cpool ++ ++ .org 0x40002c ++ ++toofar_positive: ++ nop ++far_positive: ++ nop ++ ++ .section .text.init,"ax",@progbits ++different_section: ++ sub r0, r1, 0 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/dwarf2.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/dwarf2.d +--- binutils-2.17/gas/testsuite/gas/avr32/dwarf2.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/dwarf2.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,42 @@ ++#readelf: -wl ++#name: dwarf2 ++#source: dwarf2.s ++ ++Dump of debug contents of section \.debug_line: ++ ++ Length: 53 ++ DWARF Version: 2 ++ Prologue Length: 26 ++ Minimum Instruction Length: 1 ++ Initial value of 'is_stmt': 1 ++ Line Base: -5 ++ Line Range: 14 ++ Opcode Base: 10 ++ \(Pointer size: 4\) ++ ++ Opcodes: ++ Opcode 1 has 0 args ++ Opcode 2 has 1 args ++ Opcode 3 has 1 args ++ Opcode 4 has 1 args ++ Opcode 5 has 1 args ++ Opcode 6 has 0 args ++ Opcode 7 has 0 args ++ Opcode 8 has 0 args ++ Opcode 9 has 1 args ++ ++ The Directory Table is empty\. ++ ++ The File Name Table: ++ Entry Dir Time Size Name ++ 1 0 0 0 main\.c ++ ++ Line Number Statements: ++ Extended opcode 2: set Address to 0x0 ++ Advance Line by 87 to 88 ++ Copy ++ Advance Line by 23 to 111 ++ Special opcode .*: advance Address by 4 to 0x4 and Line by 0 to 111 ++ Special opcode .*: advance Address by 10 to 0xe and Line by 1 to 112 ++ Advance PC by 530 to 220 ++ Extended opcode 1: End of Sequence +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/dwarf2.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/dwarf2.s +--- binutils-2.17/gas/testsuite/gas/avr32/dwarf2.s 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/dwarf2.s 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,67 @@ ++# Source file used to test DWARF2 information for AVR32. ++ ++ .file "main.c" ++ ++ .section .debug_abbrev,"",@progbits ++.Ldebug_abbrev0: ++ .section .debug_info,"",@progbits ++.Ldebug_info0: ++ .section .debug_line,"",@progbits ++.Ldebug_line0: ++ ++ .text ++ .align 1 ++ .globl main ++ .type main, @function ++.Ltext0: ++main: ++ .file 1 "main.c" ++ .loc 1 88 0 ++ pushm r0-r7,lr ++ sub sp, 4 ++ .loc 1 111 0 ++ lddpc r12, .LC1 ++ lddpc r7, .LC1 ++ icall r7 ++ .loc 1 112 0 ++ lddpc r6, .LC4 ++ ++ .align 2 ++.LC4: .int 0 ++ ++ .fill 256, 2, 0 ++ ++ .align 2 ++.LC1: ++ .int 0 ++.LC2: ++ .int 0 ++.LC3: ++ .int 0 ++ .size main, . - main ++ ++.Letext0: ++ ++ .section .debug_info ++ .int .Ledebug_info0 - .Ldebug_info0 // size ++ .short 2 // version ++ .int .Ldebug_abbrev0 // abbrev offset ++ .byte 4 // bytes per addr ++ ++ .uleb128 1 // abbrev 1 ++ .int .Ldebug_line0 // DW_AT_stmt_list ++ .int .Letext0 // DW_AT_high_pc ++ .int .Ltext0 // DW_AT_low_pc ++ ++.Ledebug_info0: ++ ++ .section .debug_abbrev ++ .uleb128 0x01 ++ .uleb128 0x11 // DW_TAG_compile_unit ++ .byte 0 // DW_CHILDREN_no ++ .uleb128 0x10, 0x6 // DW_AT_stmt_list ++ .uleb128 0x12, 0x1 // DW_AT_high_pc ++ .uleb128 0x11, 0x1 // DW_AT_low_pc ++ .uleb128 0, 0 ++ ++ .byte 0 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/fpinsn.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/fpinsn.d +--- binutils-2.17/gas/testsuite/gas/avr32/fpinsn.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/fpinsn.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,271 @@ ++#as: ++#objdump: -dr ++#name: fpinsn ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a2 0f ff cop cp0,cr15,cr15,cr15,0x4 ++ *[0-9a-f]*: e1 a2 00 00 cop cp0,cr0,cr0,cr0,0x4 ++ *[0-9a-f]*: e1 a2 00 ff cop cp0,cr0,cr15,cr15,0x4 ++ *[0-9a-f]*: e1 a2 0f 0f cop cp0,cr15,cr0,cr15,0x4 ++ *[0-9a-f]*: e1 a2 0f f0 cop cp0,cr15,cr15,cr0,0x4 ++ *[0-9a-f]*: e1 a2 07 88 cop cp0,cr7,cr8,cr8,0x4 ++ *[0-9a-f]*: e1 a2 08 78 cop cp0,cr8,cr7,cr8,0x4 ++ *[0-9a-f]*: e1 a2 08 87 cop cp0,cr8,cr8,cr7,0x4 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a2 1f ff cop cp0,cr15,cr15,cr15,0x5 ++ *[0-9a-f]*: e1 a2 10 00 cop cp0,cr0,cr0,cr0,0x5 ++ *[0-9a-f]*: e1 a2 10 ff cop cp0,cr0,cr15,cr15,0x5 ++ *[0-9a-f]*: e1 a2 1f 0f cop cp0,cr15,cr0,cr15,0x5 ++ *[0-9a-f]*: e1 a2 1f f0 cop cp0,cr15,cr15,cr0,0x5 ++ *[0-9a-f]*: e1 a2 17 88 cop cp0,cr7,cr8,cr8,0x5 ++ *[0-9a-f]*: e1 a2 18 78 cop cp0,cr8,cr7,cr8,0x5 ++ *[0-9a-f]*: e1 a2 18 87 cop cp0,cr8,cr8,cr7,0x5 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a0 0f ff cop cp0,cr15,cr15,cr15,0x0 ++ *[0-9a-f]*: e1 a0 00 00 cop cp0,cr0,cr0,cr0,0x0 ++ *[0-9a-f]*: e1 a0 00 ff cop cp0,cr0,cr15,cr15,0x0 ++ *[0-9a-f]*: e1 a0 0f 0f cop cp0,cr15,cr0,cr15,0x0 ++ *[0-9a-f]*: e1 a0 0f f0 cop cp0,cr15,cr15,cr0,0x0 ++ *[0-9a-f]*: e1 a0 07 88 cop cp0,cr7,cr8,cr8,0x0 ++ *[0-9a-f]*: e1 a0 08 78 cop cp0,cr8,cr7,cr8,0x0 ++ *[0-9a-f]*: e1 a0 08 87 cop cp0,cr8,cr8,cr7,0x0 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a0 1f ff cop cp0,cr15,cr15,cr15,0x1 ++ *[0-9a-f]*: e1 a0 10 00 cop cp0,cr0,cr0,cr0,0x1 ++ *[0-9a-f]*: e1 a0 10 ff cop cp0,cr0,cr15,cr15,0x1 ++ *[0-9a-f]*: e1 a0 1f 0f cop cp0,cr15,cr0,cr15,0x1 ++ *[0-9a-f]*: e1 a0 1f f0 cop cp0,cr15,cr15,cr0,0x1 ++ *[0-9a-f]*: e1 a0 17 88 cop cp0,cr7,cr8,cr8,0x1 ++ *[0-9a-f]*: e1 a0 18 78 cop cp0,cr8,cr7,cr8,0x1 ++ *[0-9a-f]*: e1 a0 18 87 cop cp0,cr8,cr8,cr7,0x1 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a1 0f ff cop cp0,cr15,cr15,cr15,0x2 ++ *[0-9a-f]*: e1 a1 00 00 cop cp0,cr0,cr0,cr0,0x2 ++ *[0-9a-f]*: e1 a1 00 ff cop cp0,cr0,cr15,cr15,0x2 ++ *[0-9a-f]*: e1 a1 0f 0f cop cp0,cr15,cr0,cr15,0x2 ++ *[0-9a-f]*: e1 a1 0f f0 cop cp0,cr15,cr15,cr0,0x2 ++ *[0-9a-f]*: e1 a1 07 88 cop cp0,cr7,cr8,cr8,0x2 ++ *[0-9a-f]*: e1 a1 08 78 cop cp0,cr8,cr7,cr8,0x2 ++ *[0-9a-f]*: e1 a1 08 87 cop cp0,cr8,cr8,cr7,0x2 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a1 1f ff cop cp0,cr15,cr15,cr15,0x3 ++ *[0-9a-f]*: e1 a1 10 00 cop cp0,cr0,cr0,cr0,0x3 ++ *[0-9a-f]*: e1 a1 10 ff cop cp0,cr0,cr15,cr15,0x3 ++ *[0-9a-f]*: e1 a1 1f 0f cop cp0,cr15,cr0,cr15,0x3 ++ *[0-9a-f]*: e1 a1 1f f0 cop cp0,cr15,cr15,cr0,0x3 ++ *[0-9a-f]*: e1 a1 17 88 cop cp0,cr7,cr8,cr8,0x3 ++ *[0-9a-f]*: e1 a1 18 78 cop cp0,cr8,cr7,cr8,0x3 ++ *[0-9a-f]*: e1 a1 18 87 cop cp0,cr8,cr8,cr7,0x3 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a3 0f ff cop cp0,cr15,cr15,cr15,0x6 ++ *[0-9a-f]*: e1 a3 00 00 cop cp0,cr0,cr0,cr0,0x6 ++ *[0-9a-f]*: e1 a3 00 ff cop cp0,cr0,cr15,cr15,0x6 ++ *[0-9a-f]*: e1 a3 0f 0f cop cp0,cr15,cr0,cr15,0x6 ++ *[0-9a-f]*: e1 a3 0f f0 cop cp0,cr15,cr15,cr0,0x6 ++ *[0-9a-f]*: e1 a3 07 88 cop cp0,cr7,cr8,cr8,0x6 ++ *[0-9a-f]*: e1 a3 08 78 cop cp0,cr8,cr7,cr8,0x6 ++ *[0-9a-f]*: e1 a3 08 87 cop cp0,cr8,cr8,cr7,0x6 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a3 1f ff cop cp0,cr15,cr15,cr15,0x7 ++ *[0-9a-f]*: e1 a3 10 00 cop cp0,cr0,cr0,cr0,0x7 ++ *[0-9a-f]*: e1 a3 10 ff cop cp0,cr0,cr15,cr15,0x7 ++ *[0-9a-f]*: e1 a3 1f 0f cop cp0,cr15,cr0,cr15,0x7 ++ *[0-9a-f]*: e1 a3 1f f0 cop cp0,cr15,cr15,cr0,0x7 ++ *[0-9a-f]*: e1 a3 17 88 cop cp0,cr7,cr8,cr8,0x7 ++ *[0-9a-f]*: e1 a3 18 78 cop cp0,cr8,cr7,cr8,0x7 ++ *[0-9a-f]*: e1 a3 18 87 cop cp0,cr8,cr8,cr7,0x7 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a4 0f f0 cop cp0,cr15,cr15,cr0,0x8 ++ *[0-9a-f]*: e1 a4 00 00 cop cp0,cr0,cr0,cr0,0x8 ++ *[0-9a-f]*: e1 a4 00 f0 cop cp0,cr0,cr15,cr0,0x8 ++ *[0-9a-f]*: e1 a4 0f 00 cop cp0,cr15,cr0,cr0,0x8 ++ *[0-9a-f]*: e1 a4 07 80 cop cp0,cr7,cr8,cr0,0x8 ++ *[0-9a-f]*: e1 a4 08 70 cop cp0,cr8,cr7,cr0,0x8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a4 1f f0 cop cp0,cr15,cr15,cr0,0x9 ++ *[0-9a-f]*: e1 a4 10 00 cop cp0,cr0,cr0,cr0,0x9 ++ *[0-9a-f]*: e1 a4 10 f0 cop cp0,cr0,cr15,cr0,0x9 ++ *[0-9a-f]*: e1 a4 1f 00 cop cp0,cr15,cr0,cr0,0x9 ++ *[0-9a-f]*: e1 a4 17 80 cop cp0,cr7,cr8,cr0,0x9 ++ *[0-9a-f]*: e1 a4 18 70 cop cp0,cr8,cr7,cr0,0x9 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a6 10 ff cop cp0,cr0,cr15,cr15,0xd ++ *[0-9a-f]*: e1 a6 10 00 cop cp0,cr0,cr0,cr0,0xd ++ *[0-9a-f]*: e1 a6 10 0f cop cp0,cr0,cr0,cr15,0xd ++ *[0-9a-f]*: e1 a6 10 f0 cop cp0,cr0,cr15,cr0,0xd ++ *[0-9a-f]*: e1 a6 10 78 cop cp0,cr0,cr7,cr8,0xd ++ *[0-9a-f]*: e1 a6 10 87 cop cp0,cr0,cr8,cr7,0xd ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e5 a2 0e ee cop cp0,cr14,cr14,cr14,0x44 ++ *[0-9a-f]*: e5 a2 00 00 cop cp0,cr0,cr0,cr0,0x44 ++ *[0-9a-f]*: e5 a2 00 ee cop cp0,cr0,cr14,cr14,0x44 ++ *[0-9a-f]*: e5 a2 0e 0e cop cp0,cr14,cr0,cr14,0x44 ++ *[0-9a-f]*: e5 a2 0e e0 cop cp0,cr14,cr14,cr0,0x44 ++ *[0-9a-f]*: e5 a2 06 88 cop cp0,cr6,cr8,cr8,0x44 ++ *[0-9a-f]*: e5 a2 08 68 cop cp0,cr8,cr6,cr8,0x44 ++ *[0-9a-f]*: e5 a2 08 86 cop cp0,cr8,cr8,cr6,0x44 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e5 a2 1e ee cop cp0,cr14,cr14,cr14,0x45 ++ *[0-9a-f]*: e5 a2 10 00 cop cp0,cr0,cr0,cr0,0x45 ++ *[0-9a-f]*: e5 a2 10 ee cop cp0,cr0,cr14,cr14,0x45 ++ *[0-9a-f]*: e5 a2 1e 0e cop cp0,cr14,cr0,cr14,0x45 ++ *[0-9a-f]*: e5 a2 1e e0 cop cp0,cr14,cr14,cr0,0x45 ++ *[0-9a-f]*: e5 a2 16 88 cop cp0,cr6,cr8,cr8,0x45 ++ *[0-9a-f]*: e5 a2 18 68 cop cp0,cr8,cr6,cr8,0x45 ++ *[0-9a-f]*: e5 a2 18 86 cop cp0,cr8,cr8,cr6,0x45 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e5 a0 0e ee cop cp0,cr14,cr14,cr14,0x40 ++ *[0-9a-f]*: e5 a0 00 00 cop cp0,cr0,cr0,cr0,0x40 ++ *[0-9a-f]*: e5 a0 00 ee cop cp0,cr0,cr14,cr14,0x40 ++ *[0-9a-f]*: e5 a0 0e 0e cop cp0,cr14,cr0,cr14,0x40 ++ *[0-9a-f]*: e5 a0 0e e0 cop cp0,cr14,cr14,cr0,0x40 ++ *[0-9a-f]*: e5 a0 06 88 cop cp0,cr6,cr8,cr8,0x40 ++ *[0-9a-f]*: e5 a0 08 68 cop cp0,cr8,cr6,cr8,0x40 ++ *[0-9a-f]*: e5 a0 08 86 cop cp0,cr8,cr8,cr6,0x40 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e5 a0 1e ee cop cp0,cr14,cr14,cr14,0x41 ++ *[0-9a-f]*: e5 a0 10 00 cop cp0,cr0,cr0,cr0,0x41 ++ *[0-9a-f]*: e5 a0 10 ee cop cp0,cr0,cr14,cr14,0x41 ++ *[0-9a-f]*: e5 a0 1e 0e cop cp0,cr14,cr0,cr14,0x41 ++ *[0-9a-f]*: e5 a0 1e e0 cop cp0,cr14,cr14,cr0,0x41 ++ *[0-9a-f]*: e5 a0 16 88 cop cp0,cr6,cr8,cr8,0x41 ++ *[0-9a-f]*: e5 a0 18 68 cop cp0,cr8,cr6,cr8,0x41 ++ *[0-9a-f]*: e5 a0 18 86 cop cp0,cr8,cr8,cr6,0x41 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e5 a1 0e ee cop cp0,cr14,cr14,cr14,0x42 ++ *[0-9a-f]*: e5 a1 00 00 cop cp0,cr0,cr0,cr0,0x42 ++ *[0-9a-f]*: e5 a1 00 ee cop cp0,cr0,cr14,cr14,0x42 ++ *[0-9a-f]*: e5 a1 0e 0e cop cp0,cr14,cr0,cr14,0x42 ++ *[0-9a-f]*: e5 a1 0e e0 cop cp0,cr14,cr14,cr0,0x42 ++ *[0-9a-f]*: e5 a1 06 88 cop cp0,cr6,cr8,cr8,0x42 ++ *[0-9a-f]*: e5 a1 08 68 cop cp0,cr8,cr6,cr8,0x42 ++ *[0-9a-f]*: e5 a1 08 86 cop cp0,cr8,cr8,cr6,0x42 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e5 a1 1e ee cop cp0,cr14,cr14,cr14,0x43 ++ *[0-9a-f]*: e5 a1 10 00 cop cp0,cr0,cr0,cr0,0x43 ++ *[0-9a-f]*: e5 a1 10 ee cop cp0,cr0,cr14,cr14,0x43 ++ *[0-9a-f]*: e5 a1 1e 0e cop cp0,cr14,cr0,cr14,0x43 ++ *[0-9a-f]*: e5 a1 1e e0 cop cp0,cr14,cr14,cr0,0x43 ++ *[0-9a-f]*: e5 a1 16 88 cop cp0,cr6,cr8,cr8,0x43 ++ *[0-9a-f]*: e5 a1 18 68 cop cp0,cr8,cr6,cr8,0x43 ++ *[0-9a-f]*: e5 a1 18 86 cop cp0,cr8,cr8,cr6,0x43 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e5 a3 0e ee cop cp0,cr14,cr14,cr14,0x46 ++ *[0-9a-f]*: e5 a3 00 00 cop cp0,cr0,cr0,cr0,0x46 ++ *[0-9a-f]*: e5 a3 00 ee cop cp0,cr0,cr14,cr14,0x46 ++ *[0-9a-f]*: e5 a3 0e 0e cop cp0,cr14,cr0,cr14,0x46 ++ *[0-9a-f]*: e5 a3 0e e0 cop cp0,cr14,cr14,cr0,0x46 ++ *[0-9a-f]*: e5 a3 06 88 cop cp0,cr6,cr8,cr8,0x46 ++ *[0-9a-f]*: e5 a3 08 68 cop cp0,cr8,cr6,cr8,0x46 ++ *[0-9a-f]*: e5 a3 08 86 cop cp0,cr8,cr8,cr6,0x46 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e5 a3 1e ee cop cp0,cr14,cr14,cr14,0x47 ++ *[0-9a-f]*: e5 a3 10 00 cop cp0,cr0,cr0,cr0,0x47 ++ *[0-9a-f]*: e5 a3 10 ee cop cp0,cr0,cr14,cr14,0x47 ++ *[0-9a-f]*: e5 a3 1e 0e cop cp0,cr14,cr0,cr14,0x47 ++ *[0-9a-f]*: e5 a3 1e e0 cop cp0,cr14,cr14,cr0,0x47 ++ *[0-9a-f]*: e5 a3 16 88 cop cp0,cr6,cr8,cr8,0x47 ++ *[0-9a-f]*: e5 a3 18 68 cop cp0,cr8,cr6,cr8,0x47 ++ *[0-9a-f]*: e5 a3 18 86 cop cp0,cr8,cr8,cr6,0x47 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e5 a4 0e e0 cop cp0,cr14,cr14,cr0,0x48 ++ *[0-9a-f]*: e5 a4 00 00 cop cp0,cr0,cr0,cr0,0x48 ++ *[0-9a-f]*: e5 a4 00 e0 cop cp0,cr0,cr14,cr0,0x48 ++ *[0-9a-f]*: e5 a4 0e 00 cop cp0,cr14,cr0,cr0,0x48 ++ *[0-9a-f]*: e5 a4 06 80 cop cp0,cr6,cr8,cr0,0x48 ++ *[0-9a-f]*: e5 a4 08 60 cop cp0,cr8,cr6,cr0,0x48 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e5 a4 1e e0 cop cp0,cr14,cr14,cr0,0x49 ++ *[0-9a-f]*: e5 a4 10 00 cop cp0,cr0,cr0,cr0,0x49 ++ *[0-9a-f]*: e5 a4 10 e0 cop cp0,cr0,cr14,cr0,0x49 ++ *[0-9a-f]*: e5 a4 1e 00 cop cp0,cr14,cr0,cr0,0x49 ++ *[0-9a-f]*: e5 a4 16 80 cop cp0,cr6,cr8,cr0,0x49 ++ *[0-9a-f]*: e5 a4 18 60 cop cp0,cr8,cr6,cr0,0x49 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e5 a6 10 ee cop cp0,cr0,cr14,cr14,0x4d ++ *[0-9a-f]*: e5 a6 10 00 cop cp0,cr0,cr0,cr0,0x4d ++ *[0-9a-f]*: e5 a6 10 0e cop cp0,cr0,cr0,cr14,0x4d ++ *[0-9a-f]*: e5 a6 10 e0 cop cp0,cr0,cr14,cr0,0x4d ++ *[0-9a-f]*: e5 a6 10 68 cop cp0,cr0,cr6,cr8,0x4d ++ *[0-9a-f]*: e5 a6 10 86 cop cp0,cr0,cr8,cr6,0x4d ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a5 0f f0 cop cp0,cr15,cr15,cr0,0xa ++ *[0-9a-f]*: e1 a5 00 00 cop cp0,cr0,cr0,cr0,0xa ++ *[0-9a-f]*: e1 a5 0f 00 cop cp0,cr15,cr0,cr0,0xa ++ *[0-9a-f]*: e1 a5 00 f0 cop cp0,cr0,cr15,cr0,0xa ++ *[0-9a-f]*: e1 a5 08 70 cop cp0,cr8,cr7,cr0,0xa ++ *[0-9a-f]*: e1 a5 07 80 cop cp0,cr7,cr8,cr0,0xa ++ *[0-9a-f]*: ef af 0f 00 mvcr.w cp0,pc,cr15 ++ *[0-9a-f]*: ef a0 00 00 mvcr.w cp0,r0,cr0 ++ *[0-9a-f]*: ef af 00 00 mvcr.w cp0,pc,cr0 ++ *[0-9a-f]*: ef a0 0f 00 mvcr.w cp0,r0,cr15 ++ *[0-9a-f]*: ef a8 07 00 mvcr.w cp0,r8,cr7 ++ *[0-9a-f]*: ef a7 08 00 mvcr.w cp0,r7,cr8 ++ *[0-9a-f]*: ef af 0f 20 mvrc.w cp0,cr15,pc ++ *[0-9a-f]*: ef a0 00 20 mvrc.w cp0,cr0,r0 ++ *[0-9a-f]*: ef a0 0f 20 mvrc.w cp0,cr15,r0 ++ *[0-9a-f]*: ef af 00 20 mvrc.w cp0,cr0,pc ++ *[0-9a-f]*: ef a7 08 20 mvrc.w cp0,cr8,r7 ++ *[0-9a-f]*: ef a8 07 20 mvrc.w cp0,cr7,r8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e5 a5 0e e0 cop cp0,cr14,cr14,cr0,0x4a ++ *[0-9a-f]*: e5 a5 00 00 cop cp0,cr0,cr0,cr0,0x4a ++ *[0-9a-f]*: e5 a5 0e 00 cop cp0,cr14,cr0,cr0,0x4a ++ *[0-9a-f]*: e5 a5 00 e0 cop cp0,cr0,cr14,cr0,0x4a ++ *[0-9a-f]*: e5 a5 08 60 cop cp0,cr8,cr6,cr0,0x4a ++ *[0-9a-f]*: e5 a5 06 80 cop cp0,cr6,cr8,cr0,0x4a ++ *[0-9a-f]*: ef ae 0e 10 mvcr.d cp0,lr,cr14 ++ *[0-9a-f]*: ef a0 00 10 mvcr.d cp0,r0,cr0 ++ *[0-9a-f]*: ef ae 00 10 mvcr.d cp0,lr,cr0 ++ *[0-9a-f]*: ef a0 0e 10 mvcr.d cp0,r0,cr14 ++ *[0-9a-f]*: ef a8 06 10 mvcr.d cp0,r8,cr6 ++ *[0-9a-f]*: ef a6 08 10 mvcr.d cp0,r6,cr8 ++ *[0-9a-f]*: ef ae 0e 30 mvrc.d cp0,cr14,lr ++ *[0-9a-f]*: ef a0 00 30 mvrc.d cp0,cr0,r0 ++ *[0-9a-f]*: ef a0 0e 30 mvrc.d cp0,cr14,r0 ++ *[0-9a-f]*: ef ae 00 30 mvrc.d cp0,cr0,lr ++ *[0-9a-f]*: ef a6 08 30 mvrc.d cp0,cr8,r6 ++ *[0-9a-f]*: ef a8 06 30 mvrc.d cp0,cr6,r8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a7 1f e0 cop cp0,cr15,cr14,cr0,0xf ++ *[0-9a-f]*: e1 a7 10 00 cop cp0,cr0,cr0,cr0,0xf ++ *[0-9a-f]*: e1 a7 1f 00 cop cp0,cr15,cr0,cr0,0xf ++ *[0-9a-f]*: e1 a7 10 e0 cop cp0,cr0,cr14,cr0,0xf ++ *[0-9a-f]*: e1 a7 18 60 cop cp0,cr8,cr6,cr0,0xf ++ *[0-9a-f]*: e1 a7 17 80 cop cp0,cr7,cr8,cr0,0xf ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a8 0e f0 cop cp0,cr14,cr15,cr0,0x10 ++ *[0-9a-f]*: e1 a8 00 00 cop cp0,cr0,cr0,cr0,0x10 ++ *[0-9a-f]*: e1 a8 0e 00 cop cp0,cr14,cr0,cr0,0x10 ++ *[0-9a-f]*: e1 a8 00 f0 cop cp0,cr0,cr15,cr0,0x10 ++ *[0-9a-f]*: e1 a8 08 70 cop cp0,cr8,cr7,cr0,0x10 ++ *[0-9a-f]*: e1 a8 06 80 cop cp0,cr6,cr8,cr0,0x10 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/fpinsn.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/fpinsn.s +--- binutils-2.17/gas/testsuite/gas/avr32/fpinsn.s 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/fpinsn.s 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,266 @@ ++ ++ .text ++ .global fadd_s ++fadd_s: ++ fadd.s fr15, fr15, fr15 ++ fadd.s fr0, fr0, fr0 ++ fadd.s fr0, fr15, fr15 ++ fadd.s fr15, fr0, fr15 ++ fadd.s fr15, fr15, fr0 ++ fadd.s fr7, fr8, fr8 ++ fadd.s fr8, fr7, fr8 ++ fadd.s fr8, fr8, fr7 ++ .global fsub_s ++fsub_s: ++ fsub.s fr15, fr15, fr15 ++ fsub.s fr0, fr0, fr0 ++ fsub.s fr0, fr15, fr15 ++ fsub.s fr15, fr0, fr15 ++ fsub.s fr15, fr15, fr0 ++ fsub.s fr7, fr8, fr8 ++ fsub.s fr8, fr7, fr8 ++ fsub.s fr8, fr8, fr7 ++ .global fmac_s ++fmac_s: ++ fmac.s fr15, fr15, fr15 ++ fmac.s fr0, fr0, fr0 ++ fmac.s fr0, fr15, fr15 ++ fmac.s fr15, fr0, fr15 ++ fmac.s fr15, fr15, fr0 ++ fmac.s fr7, fr8, fr8 ++ fmac.s fr8, fr7, fr8 ++ fmac.s fr8, fr8, fr7 ++ .global fnmac_s ++fnmac_s: ++ fnmac.s fr15, fr15, fr15 ++ fnmac.s fr0, fr0, fr0 ++ fnmac.s fr0, fr15, fr15 ++ fnmac.s fr15, fr0, fr15 ++ fnmac.s fr15, fr15, fr0 ++ fnmac.s fr7, fr8, fr8 ++ fnmac.s fr8, fr7, fr8 ++ fnmac.s fr8, fr8, fr7 ++ .global fmsc_s ++fmsc_s: ++ fmsc.s fr15, fr15, fr15 ++ fmsc.s fr0, fr0, fr0 ++ fmsc.s fr0, fr15, fr15 ++ fmsc.s fr15, fr0, fr15 ++ fmsc.s fr15, fr15, fr0 ++ fmsc.s fr7, fr8, fr8 ++ fmsc.s fr8, fr7, fr8 ++ fmsc.s fr8, fr8, fr7 ++ .global fnmsc_s ++fnmsc_s: ++ fnmsc.s fr15, fr15, fr15 ++ fnmsc.s fr0, fr0, fr0 ++ fnmsc.s fr0, fr15, fr15 ++ fnmsc.s fr15, fr0, fr15 ++ fnmsc.s fr15, fr15, fr0 ++ fnmsc.s fr7, fr8, fr8 ++ fnmsc.s fr8, fr7, fr8 ++ fnmsc.s fr8, fr8, fr7 ++ .global fmul_s ++fmul_s: ++ fmul.s fr15, fr15, fr15 ++ fmul.s fr0, fr0, fr0 ++ fmul.s fr0, fr15, fr15 ++ fmul.s fr15, fr0, fr15 ++ fmul.s fr15, fr15, fr0 ++ fmul.s fr7, fr8, fr8 ++ fmul.s fr8, fr7, fr8 ++ fmul.s fr8, fr8, fr7 ++ .global fnmul_s ++fnmul_s: ++ fnmul.s fr15, fr15, fr15 ++ fnmul.s fr0, fr0, fr0 ++ fnmul.s fr0, fr15, fr15 ++ fnmul.s fr15, fr0, fr15 ++ fnmul.s fr15, fr15, fr0 ++ fnmul.s fr7, fr8, fr8 ++ fnmul.s fr8, fr7, fr8 ++ fnmul.s fr8, fr8, fr7 ++ .global fneg_s ++fneg_s: ++ fneg.s fr15, fr15 ++ fneg.s fr0, fr0 ++ fneg.s fr0, fr15 ++ fneg.s fr15, fr0 ++ fneg.s fr7, fr8 ++ fneg.s fr8, fr7 ++ .global fabs_s ++fabs_s: ++ fabs.s fr15, fr15 ++ fabs.s fr0, fr0 ++ fabs.s fr0, fr15 ++ fabs.s fr15, fr0 ++ fabs.s fr7, fr8 ++ fabs.s fr8, fr7 ++ .global fcmp_s ++fcmp_s: ++ fcmp.s fr15, fr15 ++ fcmp.s fr0, fr0 ++ fcmp.s fr0, fr15 ++ fcmp.s fr15, fr0 ++ fcmp.s fr7, fr8 ++ fcmp.s fr8, fr7 ++ .global fadd_d ++fadd_d: ++ fadd.d fr14, fr14, fr14 ++ fadd.d fr0, fr0, fr0 ++ fadd.d fr0, fr14, fr14 ++ fadd.d fr14, fr0, fr14 ++ fadd.d fr14, fr14, fr0 ++ fadd.d fr6, fr8, fr8 ++ fadd.d fr8, fr6, fr8 ++ fadd.d fr8, fr8, fr6 ++ .global fsub_d ++fsub_d: ++ fsub.d fr14, fr14, fr14 ++ fsub.d fr0, fr0, fr0 ++ fsub.d fr0, fr14, fr14 ++ fsub.d fr14, fr0, fr14 ++ fsub.d fr14, fr14, fr0 ++ fsub.d fr6, fr8, fr8 ++ fsub.d fr8, fr6, fr8 ++ fsub.d fr8, fr8, fr6 ++ .global fmac_d ++fmac_d: ++ fmac.d fr14, fr14, fr14 ++ fmac.d fr0, fr0, fr0 ++ fmac.d fr0, fr14, fr14 ++ fmac.d fr14, fr0, fr14 ++ fmac.d fr14, fr14, fr0 ++ fmac.d fr6, fr8, fr8 ++ fmac.d fr8, fr6, fr8 ++ fmac.d fr8, fr8, fr6 ++ .global fnmac_d ++fnmac_d: ++ fnmac.d fr14, fr14, fr14 ++ fnmac.d fr0, fr0, fr0 ++ fnmac.d fr0, fr14, fr14 ++ fnmac.d fr14, fr0, fr14 ++ fnmac.d fr14, fr14, fr0 ++ fnmac.d fr6, fr8, fr8 ++ fnmac.d fr8, fr6, fr8 ++ fnmac.d fr8, fr8, fr6 ++ .global fmsc_d ++fmsc_d: ++ fmsc.d fr14, fr14, fr14 ++ fmsc.d fr0, fr0, fr0 ++ fmsc.d fr0, fr14, fr14 ++ fmsc.d fr14, fr0, fr14 ++ fmsc.d fr14, fr14, fr0 ++ fmsc.d fr6, fr8, fr8 ++ fmsc.d fr8, fr6, fr8 ++ fmsc.d fr8, fr8, fr6 ++ .global fnmsc_d ++fnmsc_d: ++ fnmsc.d fr14, fr14, fr14 ++ fnmsc.d fr0, fr0, fr0 ++ fnmsc.d fr0, fr14, fr14 ++ fnmsc.d fr14, fr0, fr14 ++ fnmsc.d fr14, fr14, fr0 ++ fnmsc.d fr6, fr8, fr8 ++ fnmsc.d fr8, fr6, fr8 ++ fnmsc.d fr8, fr8, fr6 ++ .global fmul_d ++fmul_d: ++ fmul.d fr14, fr14, fr14 ++ fmul.d fr0, fr0, fr0 ++ fmul.d fr0, fr14, fr14 ++ fmul.d fr14, fr0, fr14 ++ fmul.d fr14, fr14, fr0 ++ fmul.d fr6, fr8, fr8 ++ fmul.d fr8, fr6, fr8 ++ fmul.d fr8, fr8, fr6 ++ .global fnmul_d ++fnmul_d: ++ fnmul.d fr14, fr14, fr14 ++ fnmul.d fr0, fr0, fr0 ++ fnmul.d fr0, fr14, fr14 ++ fnmul.d fr14, fr0, fr14 ++ fnmul.d fr14, fr14, fr0 ++ fnmul.d fr6, fr8, fr8 ++ fnmul.d fr8, fr6, fr8 ++ fnmul.d fr8, fr8, fr6 ++ .global fneg_d ++fneg_d: ++ fneg.d fr14, fr14 ++ fneg.d fr0, fr0 ++ fneg.d fr0, fr14 ++ fneg.d fr14, fr0 ++ fneg.d fr6, fr8 ++ fneg.d fr8, fr6 ++ .global fabs_d ++fabs_d: ++ fabs.d fr14, fr14 ++ fabs.d fr0, fr0 ++ fabs.d fr0, fr14 ++ fabs.d fr14, fr0 ++ fabs.d fr6, fr8 ++ fabs.d fr8, fr6 ++ .global fcmp_d ++fcmp_d: ++ fcmp.d fr14, fr14 ++ fcmp.d fr0, fr0 ++ fcmp.d fr0, fr14 ++ fcmp.d fr14, fr0 ++ fcmp.d fr6, fr8 ++ fcmp.d fr8, fr6 ++ .global fmov_s ++fmov_s: ++ fmov.s fr15, fr15 ++ fmov.s fr0, fr0 ++ fmov.s fr15, fr0 ++ fmov.s fr0, fr15 ++ fmov.s fr8, fr7 ++ fmov.s fr7, fr8 ++ fmov.s pc, fr15 ++ fmov.s r0, fr0 ++ fmov.s pc, fr0 ++ fmov.s r0, fr15 ++ fmov.s r8, fr7 ++ fmov.s r7, fr8 ++ fmov.s fr15, pc ++ fmov.s fr0, r0 ++ fmov.s fr15, r0 ++ fmov.s fr0, pc ++ fmov.s fr8, r7 ++ fmov.s fr7, r8 ++ .global fmov_d ++fmov_d: ++ fmov.d fr14, fr14 ++ fmov.d fr0, fr0 ++ fmov.d fr14, fr0 ++ fmov.d fr0, fr14 ++ fmov.d fr8, fr6 ++ fmov.d fr6, fr8 ++ fmov.d lr, fr14 ++ fmov.d r0, fr0 ++ fmov.d lr, fr0 ++ fmov.d r0, fr14 ++ fmov.d r8, fr6 ++ fmov.d r6, fr8 ++ fmov.d fr14, lr ++ fmov.d fr0, r0 ++ fmov.d fr14, r0 ++ fmov.d fr0, lr ++ fmov.d fr8, r6 ++ fmov.d fr6, r8 ++ .global fcasts_d ++fcasts_d: ++ fcasts.d fr15, fr14 ++ fcasts.d fr0, fr0 ++ fcasts.d fr15, fr0 ++ fcasts.d fr0, fr14 ++ fcasts.d fr8, fr6 ++ fcasts.d fr7, fr8 ++ .global fcastd_s ++fcastd_s: ++ fcastd.s fr14, fr15 ++ fcastd.s fr0, fr0 ++ fcastd.s fr14, fr0 ++ fcastd.s fr0, fr15 ++ fcastd.s fr8, fr7 ++ fcastd.s fr6, fr8 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/hwrd-lwrd.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/hwrd-lwrd.d +--- binutils-2.17/gas/testsuite/gas/avr32/hwrd-lwrd.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/hwrd-lwrd.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,47 @@ ++#as: ++#objdump: -dr ++#name: hwrd-lwrd ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: e0 60 87 65 mov r0,34661 ++ 4: e0 60 12 34 mov r0,4660 ++ 8: e0 60 00 00 mov r0,0 ++ 8: R_AVR32_HI16 \.text\+0x60 ++ c: e0 60 00 00 mov r0,0 ++ c: R_AVR32_HI16 extsym1 ++ 10: ea 10 87 65 orh r0,0x8765 ++ 14: ea 10 12 34 orh r0,0x1234 ++ 18: ea 10 00 00 orh r0,0x0 ++ 18: R_AVR32_HI16 \.text\+0x60 ++ 1c: ea 10 00 00 orh r0,0x0 ++ 1c: R_AVR32_HI16 extsym1 ++ 20: e4 10 87 65 andh r0,0x8765 ++ 24: e4 10 12 34 andh r0,0x1234 ++ 28: e4 10 00 00 andh r0,0x0 ++ 28: R_AVR32_HI16 \.text\+0x60 ++ 2c: e4 10 00 00 andh r0,0x0 ++ 2c: R_AVR32_HI16 extsym1 ++ ++00000030 : ++ 30: e0 60 43 21 mov r0,17185 ++ 34: e0 60 56 78 mov r0,22136 ++ 38: e0 60 00 00 mov r0,0 ++ 38: R_AVR32_LO16 \.text\+0x60 ++ 3c: e0 60 00 00 mov r0,0 ++ 3c: R_AVR32_LO16 extsym1 ++ 40: e8 10 43 21 orl r0,0x4321 ++ 44: e8 10 56 78 orl r0,0x5678 ++ 48: e8 10 00 00 orl r0,0x0 ++ 48: R_AVR32_LO16 \.text\+0x60 ++ 4c: e8 10 00 00 orl r0,0x0 ++ 4c: R_AVR32_LO16 extsym1 ++ 50: e0 10 43 21 andl r0,0x4321 ++ 54: e0 10 56 78 andl r0,0x5678 ++ 58: e0 10 00 00 andl r0,0x0 ++ 58: R_AVR32_LO16 \.text\+0x60 ++ 5c: e0 10 00 00 andl r0,0x0 ++ 5c: R_AVR32_LO16 extsym1 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/hwrd-lwrd.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/hwrd-lwrd.s +--- binutils-2.17/gas/testsuite/gas/avr32/hwrd-lwrd.s 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/hwrd-lwrd.s 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,39 @@ ++ ++ .equ sym1, 0x12345678 ++ ++ .text ++ .global test_hwrd ++test_hwrd: ++ mov r0, hi(0x87654321) ++ mov r0, hi(sym1) ++ mov r0, hi(sym2) ++ mov r0, hi(extsym1) ++ ++ orh r0, hi(0x87654321) ++ orh r0, hi(sym1) ++ orh r0, hi(sym2) ++ orh r0, hi(extsym1) ++ ++ andh r0, hi(0x87654321) ++ andh r0, hi(sym1) ++ andh r0, hi(sym2) ++ andh r0, hi(extsym1) ++ ++ .global test_lwrd ++test_lwrd: ++ mov r0, lo(0x87654321) ++ mov r0, lo(sym1) ++ mov r0, lo(sym2) ++ mov r0, lo(extsym1) ++ ++ orl r0, lo(0x87654321) ++ orl r0, lo(sym1) ++ orl r0, lo(sym2) ++ orl r0, lo(extsym1) ++ ++ andl r0, lo(0x87654321) ++ andl r0, lo(sym1) ++ andl r0, lo(sym2) ++ andl r0, lo(extsym1) ++ ++sym2: +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/jmptable.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/jmptable.d +--- binutils-2.17/gas/testsuite/gas/avr32/jmptable.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/jmptable.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,20 @@ ++#source: jmptable.s ++#as: ++#objdump: -dr ++#name: jmptable ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: fe c8 ff f4 sub r8,pc,-12 ++ 4: f0 00 00 2f add pc,r8,r0<<0x2 ++ 8: d7 03 nop ++ a: 00 00 add r0,r0 ++ c: c0 38 rjmp 12 ++ e: c0 38 rjmp 14 ++ 10: c0 38 rjmp 16 ++ 12: d7 03 nop ++ 14: d7 03 nop ++ 16: d7 03 nop +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/jmptable_linkrelax.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/jmptable_linkrelax.d +--- binutils-2.17/gas/testsuite/gas/avr32/jmptable_linkrelax.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/jmptable_linkrelax.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,25 @@ ++#source: jmptable.s ++#as: --linkrelax ++#objdump: -dr ++#name: jmptable_linkrelax ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: fe c8 00 00 sub r8,pc,0 ++ 0: R_AVR32_16N_PCREL \.text\+0xc ++ 4: f0 00 00 2f add pc,r8,r0<<0x2 ++ 8: d7 03 nop ++ a: 00 00 add r0,r0 ++ a: R_AVR32_ALIGN \*ABS\*\+0x2 ++ c: c0 08 rjmp c ++ c: R_AVR32_11H_PCREL \.text\+0x12 ++ e: c0 08 rjmp e ++ e: R_AVR32_11H_PCREL \.text\+0x14 ++ 10: c0 08 rjmp 10 ++ 10: R_AVR32_11H_PCREL \.text\+0x16 ++ 12: d7 03 nop ++ 14: d7 03 nop ++ 16: d7 03 nop +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/jmptable.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/jmptable.s +--- binutils-2.17/gas/testsuite/gas/avr32/jmptable.s 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/jmptable.s 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,14 @@ ++ ++ .text ++ .global jmptable_test ++jmptable_test: ++ sub r8, pc, -(.L1 - .) ++ add pc, r8, r0 << 2 ++ nop ++ .align 2 ++.L1: rjmp 1f ++ rjmp 2f ++ rjmp 3f ++1: nop ++2: nop ++3: nop +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/lda_nopic.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_nopic.d +--- binutils-2.17/gas/testsuite/gas/avr32/lda_nopic.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_nopic.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,32 @@ ++#source: lda.s ++#as: ++#objdump: -dr ++#name: lda_nopic ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: f2 c8 00 00 sub r8,r9,0 ++ ++00000004 : ++ 4: f6 ca 00 00 sub r10,r11,0 ++ ... ++ 8000: fe c0 7f fc sub r0,pc,32764 ++ 8004: 48 31 lddpc r1,8010 ++ 8006: 48 42 lddpc r2,8014 ++ 8008: 48 43 lddpc r3,8018 ++ 800a: 48 54 lddpc r4,801c ++ 800c: fe c5 80 04 sub r5,pc,-32764 ++ ... ++ 8010: R_AVR32_32_CPENT \.text ++ 8014: R_AVR32_32_CPENT \.data ++ 8018: R_AVR32_32_CPENT undefined ++ 801c: R_AVR32_32_CPENT \.text\+0x1001c ++ ++00010008 : ++ 10008: fa cc 00 00 sub r12,sp,0 ++ ... ++0001001c : ++ 1001c: fe ce 00 00 sub lr,pc,0 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d +--- binutils-2.17/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,41 @@ ++#source: lda.s ++#as: --linkrelax ++#objdump: -dr ++#name: lda_nopic_linkrelax ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: f2 c8 00 00 sub r8,r9,0 ++ ++00000004 : ++ 4: f6 ca 00 00 sub r10,r11,0 ++ \.\.\. ++ 8000: 48 00 lddpc r0,8000 ++ 8000: R_AVR32_9W_CP \.text\+0x800c ++ 8002: 48 01 lddpc r1,8000 ++ 8002: R_AVR32_9W_CP \.text\+0x8010 ++ 8004: 48 02 lddpc r2,8004 ++ 8004: R_AVR32_9W_CP \.text\+0x8014 ++ 8006: 48 03 lddpc r3,8004 ++ 8006: R_AVR32_9W_CP \.text\+0x8018 ++ 8008: 48 04 lddpc r4,8008 ++ 8008: R_AVR32_9W_CP \.text\+0x801c ++ 800a: 48 05 lddpc r5,8008 ++ 800a: R_AVR32_9W_CP \.text\+0x8020 ++ \.\.\. ++ 800c: R_AVR32_ALIGN \*ABS\*\+0x2 ++ 800c: R_AVR32_32_CPENT \.text\+0x4 ++ 8010: R_AVR32_32_CPENT \.text ++ 8014: R_AVR32_32_CPENT \.data ++ 8018: R_AVR32_32_CPENT undefined ++ 801c: R_AVR32_32_CPENT \.text\+0x10020 ++ 8020: R_AVR32_32_CPENT \.text\+0x1000c ++ ++0001000c : ++ 1000c: fa cc 00 00 sub r12,sp,0 ++ \.\.\. ++00010020 : ++ 10020: fe ce 00 00 sub lr,pc,0 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/lda_pic.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_pic.d +--- binutils-2.17/gas/testsuite/gas/avr32/lda_pic.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_pic.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,32 @@ ++#source: lda.s ++#as: --pic ++#objdump: -dr ++#name: lda_pic ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: f2 c8 00 00 sub r8,r9,0 ++ ++00000004 : ++ 4: f6 ca 00 00 sub r10,r11,0 ++ ... ++ 8000: fe c0 7f fc sub r0,pc,32764 ++ 8004: ec f1 00 00 ld.w r1,r6\[0\] ++ 8004: R_AVR32_GOT16S toofar_negative ++ 8008: ec f2 00 00 ld.w r2,r6\[0\] ++ 8008: R_AVR32_GOT16S different_section ++ 800c: ec f3 00 00 ld.w r3,r6\[0\] ++ 800c: R_AVR32_GOT16S undefined ++ 8010: ec f4 00 00 ld.w r4,r6\[0\] ++ 8010: R_AVR32_GOT16S toofar_positive ++ 8014: fe c5 80 14 sub r5,pc,-32748 ++ ... ++ ++00010000 : ++ 10000: fa cc 00 00 sub r12,sp,0 ++ ... ++00010014 : ++ 10014: fe ce 00 00 sub lr,pc,0 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/lda_pic_linkrelax.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_pic_linkrelax.d +--- binutils-2.17/gas/testsuite/gas/avr32/lda_pic_linkrelax.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda_pic_linkrelax.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,40 @@ ++#source: lda.s ++#as: --pic --linkrelax ++#objdump: -dr ++#name: lda_pic_linkrelax ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: f2 c8 00 00 sub r8,r9,0 ++ ++00000004 : ++ 4: f6 ca 00 00 sub r10,r11,0 ++ ... ++ 8000: e0 60 00 00 mov r0,0 ++ 8000: R_AVR32_LDA_GOT far_negative ++ 8004: ec 00 03 20 ld\.w r0,r6\[r0<<0x2\] ++ 8008: e0 61 00 00 mov r1,0 ++ 8008: R_AVR32_LDA_GOT toofar_negative ++ 800c: ec 01 03 21 ld\.w r1,r6\[r1<<0x2\] ++ 8010: e0 62 00 00 mov r2,0 ++ 8010: R_AVR32_LDA_GOT different_section ++ 8014: ec 02 03 22 ld\.w r2,r6\[r2<<0x2\] ++ 8018: e0 63 00 00 mov r3,0 ++ 8018: R_AVR32_LDA_GOT undefined ++ 801c: ec 03 03 23 ld\.w r3,r6\[r3<<0x2\] ++ 8020: e0 64 00 00 mov r4,0 ++ 8020: R_AVR32_LDA_GOT toofar_positive ++ 8024: ec 04 03 24 ld\.w r4,r6\[r4<<0x2\] ++ 8028: e0 65 00 00 mov r5,0 ++ 8028: R_AVR32_LDA_GOT far_positive ++ 802c: ec 05 03 25 ld\.w r5,r6\[r5<<0x2\] ++ ... ++ ++00010018 : ++ 10018: fa cc 00 00 sub r12,sp,0 ++ ... ++0001002c : ++ 1002c: fe ce 00 00 sub lr,pc,0 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/lda.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda.s +--- binutils-2.17/gas/testsuite/gas/avr32/lda.s 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/lda.s 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,30 @@ ++ ++ .text ++ .global lda_test ++lda_test: ++toofar_negative: ++ sub r8, r9, 0 ++far_negative: ++ sub r10, r11, 0 ++ ++ .fill 32760, 1, 0x00 ++ ++ lda.w r0, far_negative ++ lda.w r1, toofar_negative ++ lda.w r2, different_section ++ lda.w r3, undefined ++ lda.w r4, toofar_positive ++ lda.w r5, far_positive ++ ++ .cpool ++ ++ .fill 32744, 1, 0x00 ++far_positive: ++ sub r12, sp, 0 ++ .fill 16, 1, 0x00 ++toofar_positive: ++ sub lr, pc, 0 ++ ++ .data ++different_section: ++ .long 0x12345678 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/pcrel.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pcrel.d +--- binutils-2.17/gas/testsuite/gas/avr32/pcrel.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pcrel.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,64 @@ ++#as: ++#objdump: -dr ++#name: pcrel ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: d7 03 nop ++ 2: c0 28 rjmp 6 ++ 4: d7 03 nop ++ 6: e0 8f 00 00 bral 6 ++ 6: R_AVR32_22H_PCREL extsym10 ++ ++0000000a : ++ a: d7 03 nop ++0000000c : ++ c: c0 2c rcall 10 ++ e: d7 03 nop ++ 10: e0 a0 00 00 rcall 10 ++ 10: R_AVR32_22H_PCREL extsym21 ++ ++00000014 : ++ 14: c0 31 brne 1a ++ 16: e0 8f 00 00 bral 16 ++ 16: R_AVR32_22H_PCREL test_branch ++ 1a: e0 80 00 00 breq 1a ++ 1a: R_AVR32_22H_PCREL extsym21 ++ ++0000001e : ++ 1e: 48 30 lddpc r0,28 ++ 20: 48 20 lddpc r0,28 ++ 22: fe f0 00 00 ld.w r0,pc\[0\] ++ 22: R_AVR32_16B_PCREL extsym16 ++ \.\.\. ++ ++00000028 : ++ 28: d7 03 nop ++ 2a: d7 03 nop ++ ++0000002c : ++ 2c: 48 20 lddpc r0,34 ++ 2e: 48 30 lddpc r0,38 ++ 30: 48 20 lddpc r0,38 ++ 32: 00 00 add r0,r0 ++ 34: d7 03 nop ++ 36: d7 03 nop ++ 38: d7 03 nop ++ 3a: d7 03 nop ++ ++Disassembly of section \.text\.init: ++ ++00000000 : ++ 0: e0 a0 .. .. rcall [0-9a-f]+ <.*> ++ 0: R_AVR32_22H_PCREL test_rcall ++ 4: d7 03 nop ++ 6: e0 a0 .. .. rcall [0-9a-f]+ <.*> ++ 6: R_AVR32_22H_PCREL test_rcall ++ a: e0 a0 .. .. rcall [0-9a-z]+ <.*> ++ a: R_AVR32_22H_PCREL \.text\+0xc ++ e: d7 03 nop ++ 10: e0 a0 .. .. rcall [0-9a-f]+ <.*> ++ 10: R_AVR32_22H_PCREL \.text\+0xc +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/pcrel.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pcrel.s +--- binutils-2.17/gas/testsuite/gas/avr32/pcrel.s 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pcrel.s 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,57 @@ ++ ++ .text ++ .global test_rjmp ++test_rjmp: ++ nop ++ rjmp 0f ++ nop ++0: rjmp extsym10 ++ ++ .global test_rcall ++test_rcall: ++ nop ++test_rcall2: ++ rcall 0f ++ nop ++0: rcall extsym21 ++ ++ .global test_branch ++test_branch: ++ brne 0f ++ /* This will generate a reloc since test_branch is global */ ++ bral test_branch ++0: breq extsym21 ++ ++ .global test_lddpc ++test_lddpc: ++ lddpc r0,sym1 ++ lddpc r0,sym1 ++ lddpc r0,extsym16 ++ ++ .align 2 ++sym1: nop ++ nop ++ ++ .global test_local ++test_local: ++ lddpc r0, .LC1 ++ lddpc r0, .LC2 ++ lddpc r0, .LC1 + 0x4 ++ ++ .align 2 ++.LC1: ++ nop ++ nop ++.LC2: ++ nop ++ nop ++ ++ .section .text.init,"ax" ++ .global test_inter_section ++test_inter_section: ++ rcall test_rcall ++ nop ++ rcall test_rcall ++ rcall test_rcall2 ++ nop ++ rcall test_rcall2 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/pico.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pico.d +--- binutils-2.17/gas/testsuite/gas/avr32/pico.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pico.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,149 @@ ++#as: ++#objdump: -dr ++#name: pico ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a6 20 00 cop cp1,cr0,cr0,cr0,0xc ++ *[0-9a-f]*: e1 a7 2b bb cop cp1,cr11,cr11,cr11,0xe ++ *[0-9a-f]*: e1 a6 3a 05 cop cp1,cr10,cr0,cr5,0xd ++ *[0-9a-f]*: e1 a7 36 90 cop cp1,cr6,cr9,cr0,0xf ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a4 20 00 cop cp1,cr0,cr0,cr0,0x8 ++ *[0-9a-f]*: e1 a5 2b bb cop cp1,cr11,cr11,cr11,0xa ++ *[0-9a-f]*: e1 a4 3a 05 cop cp1,cr10,cr0,cr5,0x9 ++ *[0-9a-f]*: e1 a5 36 90 cop cp1,cr6,cr9,cr0,0xb ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a2 20 00 cop cp1,cr0,cr0,cr0,0x4 ++ *[0-9a-f]*: e1 a3 2b bb cop cp1,cr11,cr11,cr11,0x6 ++ *[0-9a-f]*: e1 a2 3a 05 cop cp1,cr10,cr0,cr5,0x5 ++ *[0-9a-f]*: e1 a3 36 90 cop cp1,cr6,cr9,cr0,0x7 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e1 a0 20 00 cop cp1,cr0,cr0,cr0,0x0 ++ *[0-9a-f]*: e1 a1 2b bb cop cp1,cr11,cr11,cr11,0x2 ++ *[0-9a-f]*: e1 a0 3a 05 cop cp1,cr10,cr0,cr5,0x1 ++ *[0-9a-f]*: e1 a1 36 90 cop cp1,cr6,cr9,cr0,0x3 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e9 af 3e ff ldc\.d cp1,cr14,pc\[0x3fc\] ++ *[0-9a-f]*: e9 a0 30 ff ldc\.d cp1,cr0,r0\[0x3fc\] ++ *[0-9a-f]*: e9 a0 30 00 ldc\.d cp1,cr0,r0\[0x0\] ++ *[0-9a-f]*: ef a8 26 50 ldc\.d cp1,cr6,--r8 ++ *[0-9a-f]*: ef a7 28 50 ldc\.d cp1,cr8,--r7 ++ *[0-9a-f]*: ef aa 32 65 ldc\.d cp1,cr2,r10\[r5<<0x2\] ++ *[0-9a-f]*: ef a3 3c 46 ldc\.d cp1,cr12,r3\[r6\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: e9 af 2f ff ldc\.w cp1,cr15,pc\[0x3fc\] ++ *[0-9a-f]*: e9 a0 20 ff ldc\.w cp1,cr0,r0\[0x3fc\] ++ *[0-9a-f]*: e9 a0 20 00 ldc\.w cp1,cr0,r0\[0x0\] ++ *[0-9a-f]*: ef a8 27 40 ldc\.w cp1,cr7,--r8 ++ *[0-9a-f]*: ef a7 28 40 ldc\.w cp1,cr8,--r7 ++ *[0-9a-f]*: ef aa 31 25 ldc\.w cp1,cr1,r10\[r5<<0x2\] ++ *[0-9a-f]*: ef a3 3d 06 ldc\.w cp1,cr13,r3\[r6\] ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ed af 24 ff ldcm\.d cp1,pc,cr0-cr15 ++ *[0-9a-f]*: ed a0 24 01 ldcm\.d cp1,r0,cr0-cr1 ++ *[0-9a-f]*: ed a7 24 80 ldcm\.d cp1,r7,cr14-cr15 ++ *[0-9a-f]*: ed a8 24 7f ldcm\.d cp1,r8,cr0-cr13 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ed af 34 ff ldcm\.d cp1,pc\+\+,cr0-cr15 ++ *[0-9a-f]*: ed a0 34 01 ldcm\.d cp1,r0\+\+,cr0-cr1 ++ *[0-9a-f]*: ed a7 34 80 ldcm\.d cp1,r7\+\+,cr14-cr15 ++ *[0-9a-f]*: ed a8 34 7f ldcm\.d cp1,r8\+\+,cr0-cr13 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ed af 20 ff ldcm\.w cp1,pc,cr0-cr7 ++ *[0-9a-f]*: ed a0 20 01 ldcm\.w cp1,r0,cr0 ++ *[0-9a-f]*: ed a7 20 80 ldcm\.w cp1,r7,cr7 ++ *[0-9a-f]*: ed a8 20 7f ldcm\.w cp1,r8,cr0-cr6 ++ *[0-9a-f]*: ed af 21 ff ldcm\.w cp1,pc,cr8-cr15 ++ *[0-9a-f]*: ed a0 21 01 ldcm\.w cp1,r0,cr8 ++ *[0-9a-f]*: ed a7 21 80 ldcm\.w cp1,r7,cr15 ++ *[0-9a-f]*: ed a8 21 7f ldcm\.w cp1,r8,cr8-cr14 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ed af 30 ff ldcm\.w cp1,pc\+\+,cr0-cr7 ++ *[0-9a-f]*: ed a0 30 01 ldcm\.w cp1,r0\+\+,cr0 ++ *[0-9a-f]*: ed a7 30 80 ldcm\.w cp1,r7\+\+,cr7 ++ *[0-9a-f]*: ed a8 30 7f ldcm\.w cp1,r8\+\+,cr0-cr6 ++ *[0-9a-f]*: ed af 31 ff ldcm\.w cp1,pc\+\+,cr8-cr15 ++ *[0-9a-f]*: ed a0 31 01 ldcm\.w cp1,r0\+\+,cr8 ++ *[0-9a-f]*: ed a7 31 80 ldcm\.w cp1,r7\+\+,cr15 ++ *[0-9a-f]*: ed a8 31 7f ldcm\.w cp1,r8\+\+,cr8-cr14 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef ae 2e 30 mvrc\.d cp1,cr14,lr ++ *[0-9a-f]*: ef a0 20 30 mvrc\.d cp1,cr0,r0 ++ *[0-9a-f]*: ef a8 26 30 mvrc\.d cp1,cr6,r8 ++ *[0-9a-f]*: ef a6 28 30 mvrc\.d cp1,cr8,r6 ++ *[0-9a-f]*: ef ae 2e 10 mvcr\.d cp1,lr,cr14 ++ *[0-9a-f]*: ef a0 20 10 mvcr\.d cp1,r0,cr0 ++ *[0-9a-f]*: ef a8 26 10 mvcr\.d cp1,r8,cr6 ++ *[0-9a-f]*: ef a6 28 10 mvcr\.d cp1,r6,cr8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ef af 2f 20 mvrc\.w cp1,cr15,pc ++ *[0-9a-f]*: ef a0 20 20 mvrc\.w cp1,cr0,r0 ++ *[0-9a-f]*: ef a8 27 20 mvrc\.w cp1,cr7,r8 ++ *[0-9a-f]*: ef a7 28 20 mvrc\.w cp1,cr8,r7 ++ *[0-9a-f]*: ef af 2f 00 mvcr\.w cp1,pc,cr15 ++ *[0-9a-f]*: ef a0 20 00 mvcr\.w cp1,r0,cr0 ++ *[0-9a-f]*: ef a8 27 00 mvcr\.w cp1,r8,cr7 ++ *[0-9a-f]*: ef a7 28 00 mvcr\.w cp1,r7,cr8 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: eb af 3e ff stc\.d cp1,pc\[0x3fc\],cr14 ++ *[0-9a-f]*: eb a0 30 00 stc\.d cp1,r0\[0x0\],cr0 ++ *[0-9a-f]*: ef a8 26 70 stc\.d cp1,r8\+\+,cr6 ++ *[0-9a-f]*: ef a7 28 70 stc\.d cp1,r7\+\+,cr8 ++ *[0-9a-f]*: ef aa 32 e5 stc\.d cp1,r10\[r5<<0x2\],cr2 ++ *[0-9a-f]*: ef a3 3c c6 stc\.d cp1,r3\[r6\],cr12 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: eb af 2f ff stc\.w cp1,pc\[0x3fc\],cr15 ++ *[0-9a-f]*: eb a0 20 00 stc\.w cp1,r0\[0x0\],cr0 ++ *[0-9a-f]*: ef a8 27 60 stc\.w cp1,r8\+\+,cr7 ++ *[0-9a-f]*: ef a7 28 60 stc\.w cp1,r7\+\+,cr8 ++ *[0-9a-f]*: ef aa 31 a5 stc\.w cp1,r10\[r5<<0x2\],cr1 ++ *[0-9a-f]*: ef a3 3d 86 stc\.w cp1,r3\[r6\],cr13 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ed af 25 ff stcm\.d cp1,pc,cr0-cr15 ++ *[0-9a-f]*: ed a0 25 01 stcm\.d cp1,r0,cr0-cr1 ++ *[0-9a-f]*: ed a7 25 80 stcm\.d cp1,r7,cr14-cr15 ++ *[0-9a-f]*: ed a8 25 7f stcm\.d cp1,r8,cr0-cr13 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ed af 35 ff stcm\.d cp1,--pc,cr0-cr15 ++ *[0-9a-f]*: ed a0 35 01 stcm\.d cp1,--r0,cr0-cr1 ++ *[0-9a-f]*: ed a7 35 80 stcm\.d cp1,--r7,cr14-cr15 ++ *[0-9a-f]*: ed a8 35 7f stcm\.d cp1,--r8,cr0-cr13 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ed af 22 ff stcm\.w cp1,pc,cr0-cr7 ++ *[0-9a-f]*: ed a0 22 01 stcm\.w cp1,r0,cr0 ++ *[0-9a-f]*: ed a7 22 80 stcm\.w cp1,r7,cr7 ++ *[0-9a-f]*: ed a8 22 7f stcm\.w cp1,r8,cr0-cr6 ++ *[0-9a-f]*: ed af 23 ff stcm\.w cp1,pc,cr8-cr15 ++ *[0-9a-f]*: ed a0 23 01 stcm\.w cp1,r0,cr8 ++ *[0-9a-f]*: ed a7 23 80 stcm\.w cp1,r7,cr15 ++ *[0-9a-f]*: ed a8 23 7f stcm\.w cp1,r8,cr8-cr14 ++ ++[0-9a-f]* : ++ *[0-9a-f]*: ed af 32 ff stcm\.w cp1,--pc,cr0-cr7 ++ *[0-9a-f]*: ed a0 32 01 stcm\.w cp1,--r0,cr0 ++ *[0-9a-f]*: ed a7 32 80 stcm\.w cp1,--r7,cr7 ++ *[0-9a-f]*: ed a8 32 7f stcm\.w cp1,--r8,cr0-cr6 ++ *[0-9a-f]*: ed af 33 ff stcm\.w cp1,--pc,cr8-cr15 ++ *[0-9a-f]*: ed a0 33 01 stcm\.w cp1,--r0,cr8 ++ *[0-9a-f]*: ed a7 33 80 stcm\.w cp1,--r7,cr15 ++ *[0-9a-f]*: ed a8 33 7f stcm\.w cp1,--r8,cr8-cr14 +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/pico.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pico.s +--- binutils-2.17/gas/testsuite/gas/avr32/pico.s 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pico.s 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,144 @@ ++ ++ .text ++ .global picosvmac ++picosvmac: ++ picosvmac out0, in0, in0, in0 ++ picosvmac out2, in11, in11, in11 ++ picosvmac out1, in10, in0, in5 ++ picosvmac out3, in6, in9, in0 ++ .global picosvmul ++picosvmul: ++ picosvmul out0, in0, in0, in0 ++ picosvmul out2, in11, in11, in11 ++ picosvmul out1, in10, in0, in5 ++ picosvmul out3, in6, in9, in0 ++ .global picovmac ++picovmac: ++ picovmac out0, in0, in0, in0 ++ picovmac out2, in11, in11, in11 ++ picovmac out1, in10, in0, in5 ++ picovmac out3, in6, in9, in0 ++ .global picovmul ++picovmul: ++ picovmul out0, in0, in0, in0 ++ picovmul out2, in11, in11, in11 ++ picovmul out1, in10, in0, in5 ++ picovmul out3, in6, in9, in0 ++ .global picold_d ++picold_d: ++ picold.d vmu2_out, pc[1020] ++ picold.d inpix2, r0[1020] ++ picold.d inpix2, r0[0] ++ picold.d coeff0_a, --r8 ++ picold.d coeff1_a, --r7 ++ picold.d inpix0, r10[r5 << 2] ++ picold.d vmu0_out, r3[r6 << 0] ++ .global picold_w ++picold_w: ++ picold.w config, pc[1020] ++ picold.w inpix2, r0[1020] ++ picold.w inpix2, r0[0] ++ picold.w coeff0_b, --r8 ++ picold.w coeff1_a, --r7 ++ picold.w inpix1, r10[r5 << 2] ++ picold.w vmu1_out, r3[r6 << 0] ++ .global picoldm_d ++picoldm_d: ++ picoldm.d pc, inpix2-config ++ picoldm.d r0, inpix2, inpix1 ++ picoldm.d r7, vmu2_out, config ++ picoldm.d r8, inpix2-vmu1_out ++ .global picoldm_d_pu ++picoldm_d_pu: ++ picoldm.d pc++, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out, vmu2_out, config ++ picoldm.d r0++, inpix2, inpix1 ++ picoldm.d r7++, vmu2_out, config ++ picoldm.d r8++, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out ++ .global picoldm_w ++picoldm_w: ++ picoldm.w pc, inpix2-coeff0_b ++ picoldm.w r0, inpix2 ++ picoldm.w r7, coeff0_b ++ picoldm.w r8, inpix2-coeff0_a ++ picoldm.w pc, coeff1_a-config ++ picoldm.w r0, coeff1_a ++ picoldm.w r7, config ++ picoldm.w r8, coeff1_a-vmu2_out ++ .global picoldm_w_pu ++picoldm_w_pu: ++ picoldm.w pc++, inpix2-coeff0_b ++ picoldm.w r0++, inpix2 ++ picoldm.w r7++, coeff0_b ++ picoldm.w r8++, inpix2-coeff0_a ++ picoldm.w pc++, coeff1_a-config ++ picoldm.w r0++, coeff1_a ++ picoldm.w r7++, config ++ picoldm.w r8++, coeff1_a-vmu2_out ++ .global picomv_d ++picomv_d: ++ picomv.d vmu2_out, lr ++ picomv.d inpix2, r0 ++ picomv.d coeff0_a, r8 ++ picomv.d coeff1_a, r6 ++ picomv.d pc, vmu2_out ++ picomv.d r0, inpix2 ++ picomv.d r8, coeff0_a ++ picomv.d r6, coeff1_a ++ .global picomv_w ++picomv_w: ++ picomv.w config, pc ++ picomv.w inpix2, r0 ++ picomv.w coeff0_b, r8 ++ picomv.w coeff1_a, r7 ++ picomv.w pc, config ++ picomv.w r0, inpix2 ++ picomv.w r8, coeff0_b ++ picomv.w r7, coeff1_a ++ .global picost_d ++picost_d: ++ picost.d pc[1020], vmu2_out ++ picost.d r0[0], inpix2 ++ picost.d r8++, coeff0_a ++ picost.d r7++, coeff1_a ++ picost.d r10[r5 << 2], inpix0 ++ picost.d r3[r6 << 0], vmu0_out ++ .global picost_w ++picost_w: ++ picost.w pc[1020], config ++ picost.w r0[0], inpix2 ++ picost.w r8++, coeff0_b ++ picost.w r7++, coeff1_a ++ picost.w r10[r5 << 2], inpix1 ++ picost.w r3[r6 << 0], vmu1_out ++ .global picostm_d ++picostm_d: ++ picostm.d pc, inpix2-config ++ picostm.d r0, inpix2, inpix1 ++ picostm.d r7, vmu2_out, config ++ picostm.d r8, inpix2-vmu1_out ++ .global picostm_d_pu ++picostm_d_pu: ++ picostm.d --pc, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out, vmu2_out, config ++ picostm.d --r0, inpix2, inpix1 ++ picostm.d --r7, vmu2_out, config ++ picostm.d --r8, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out ++ .global picostm_w ++picostm_w: ++ picostm.w pc, inpix2-coeff0_b ++ picostm.w r0, inpix2 ++ picostm.w r7, coeff0_b ++ picostm.w r8, inpix2-coeff0_a ++ picostm.w pc, coeff1_a-config ++ picostm.w r0, coeff1_a ++ picostm.w r7, config ++ picostm.w r8, coeff1_a-vmu2_out ++ .global picostm_w_pu ++picostm_w_pu: ++ picostm.w --pc, inpix2-coeff0_b ++ picostm.w --r0, inpix2 ++ picostm.w --r7, coeff0_b ++ picostm.w --r8, inpix2-coeff0_a ++ picostm.w --pc, coeff1_a-config ++ picostm.w --r0, coeff1_a ++ picostm.w --r7, config ++ picostm.w --r8, coeff1_a-vmu2_out +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/pic_reloc.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pic_reloc.d +--- binutils-2.17/gas/testsuite/gas/avr32/pic_reloc.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pic_reloc.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,27 @@ ++#as: ++#objdump: -dr ++#name: pic_reloc ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: f0 16 00 00 mcall r6\[0\] ++ 0: R_AVR32_GOT18SW extfunc ++ 4: f0 16 00 00 mcall r6\[0\] ++ 4: R_AVR32_GOT18SW \.L1 ++ 8: f0 16 00 00 mcall r6\[0\] ++ 8: R_AVR32_GOT18SW \.L2 ++ c: f0 16 00 00 mcall r6\[0\] ++ c: R_AVR32_GOT18SW mcall_got ++ ++00000010 : ++ 10: ec f0 00 00 ld.w r0,r6\[0\] ++ 10: R_AVR32_GOT16S extvar ++ 14: ec f0 00 00 ld.w r0,r6\[0\] ++ 14: R_AVR32_GOT16S \.L3 ++ 18: ec f0 00 00 ld.w r0,r6\[0\] ++ 18: R_AVR32_GOT16S \.L4 ++ 1c: ec f0 00 00 ld.w r0,r6\[0\] ++ 1c: R_AVR32_GOT16S ldw_got +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/pic_reloc.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pic_reloc.s +--- binutils-2.17/gas/testsuite/gas/avr32/pic_reloc.s 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/pic_reloc.s 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,18 @@ ++ ++ .text ++ .global mcall_got ++mcall_got: ++.L1: ++ mcall r6[extfunc@got] ++ mcall r6[.L1@got] ++ mcall r6[.L2@got] ++ mcall r6[mcall_got@got] ++.L2: ++ ++ .global ldw_got ++ldw_got: ++.L3: ld.w r0,r6[extvar@got] ++ ld.w r0,r6[.L3@got] ++ ld.w r0,r6[.L4@got] ++ ld.w r0,r6[ldw_got@got] ++.L4: +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/symdiff.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/symdiff.d +--- binutils-2.17/gas/testsuite/gas/avr32/symdiff.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/symdiff.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,24 @@ ++#source: symdiff.s ++#as: ++#objdump: -dr ++#name: symdiff ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: 00 00 add r0,r0 ++ 2: 00 04 add r4,r0 ++ ++00000004 : ++ 4: 00 04 add r4,r0 ++ ++00000006 : ++ 6: 04 00 add r0,r2 ++ ++00000008 : ++ 8: d7 03 nop ++ a: d7 03 nop ++ c: d7 03 nop ++ e: d7 03 nop +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/symdiff_linkrelax.d binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/symdiff_linkrelax.d +--- binutils-2.17/gas/testsuite/gas/avr32/symdiff_linkrelax.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/symdiff_linkrelax.d 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,28 @@ ++#source: symdiff.s ++#as: --linkrelax ++#objdump: -dr ++#name: symdiff_linkrelax ++ ++.*: +file format .* ++ ++Disassembly of section \.text: ++ ++00000000 : ++ 0: 00 00 add r0,r0 ++ 0: R_AVR32_DIFF32 \.text\+0xa ++ 2: 00 04 add r4,r0 ++ ++00000004 : ++ 4: 00 04 add r4,r0 ++ 4: R_AVR32_DIFF16 \.text\+0xa ++ ++00000006 : ++ 6: 04 00 add r0,r2 ++ 6: R_AVR32_DIFF8 \.text\+0xa ++ 7: R_AVR32_ALIGN \*ABS\*\+0x1 ++ ++00000008 : ++ 8: d7 03 nop ++ a: d7 03 nop ++ c: d7 03 nop ++ e: d7 03 nop +diff -Nrup binutils-2.17/gas/testsuite/gas/avr32/symdiff.s binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/symdiff.s +--- binutils-2.17/gas/testsuite/gas/avr32/symdiff.s 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/gas/testsuite/gas/avr32/symdiff.s 2007-03-26 10:19:48.000000000 +0200 +@@ -0,0 +1,19 @@ ++ ++ .text ++ .global diff32 ++diff32: ++ .long .L2 - .L1 ++ .global diff16 ++diff16: ++ .short .L2 - .L1 ++ .global diff8 ++diff8: ++ .byte .L2 - .L1 ++ ++ .global symdiff_test ++ .align 1 ++symdiff_test: ++ nop ++.L1: nop ++ nop ++.L2: nop +diff -Nrup binutils-2.17/gas/write.c binutils-2.17.atmel.1.3.0/gas/write.c +--- binutils-2.17/gas/write.c 2006-05-10 15:43:37.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/gas/write.c 2007-03-26 10:20:16.000000000 +0200 +@@ -126,7 +126,9 @@ static fixS *fix_new_internal (fragS *, + offsetT offset, int pcrel, + RELOC_ENUM r_type); + static long fixup_segment (fixS *, segT); ++#if !defined (TC_RELAX_ALIGN) + static relax_addressT relax_align (relax_addressT addr, int align); ++#endif + static fragS *chain_frchains_together_1 (segT, struct frchain *); + static void chain_frchains_together (bfd *, segT, PTR); + static void cvt_frag_to_fill (segT, fragS *); +@@ -1684,6 +1686,10 @@ relax_frag (segT segment, fragS *fragP, + + #endif /* defined (TC_GENERIC_RELAX_TABLE) */ + ++#ifdef TC_RELAX_ALIGN ++#define RELAX_ALIGN(SEG, FRAG, ADDR) TC_RELAX_ALIGN(SEG, FRAG, ADDR) ++#else ++#define RELAX_ALIGN(SEG, FRAG, ADDR) relax_align(ADDR, (FRAG)->fr_offset) + /* Relax_align. Advance location counter to next address that has 'alignment' + lowest order bits all 0s, return size of adjustment made. */ + static relax_addressT +@@ -1703,6 +1709,7 @@ relax_align (register relax_addressT add + #endif + return (new_address - address); + } ++#endif + + /* Now we have a segment, not a crowd of sub-segments, we can make + fr_address values. +@@ -1746,7 +1753,7 @@ relax_segment (struct frag *segment_frag + case rs_align_code: + case rs_align_test: + { +- addressT offset = relax_align (address, (int) fragP->fr_offset); ++ addressT offset = RELAX_ALIGN(segment, fragP, address); + + if (fragP->fr_subtype != 0 && offset > fragP->fr_subtype) + offset = 0; +@@ -1922,10 +1929,10 @@ relax_segment (struct frag *segment_frag + { + addressT oldoff, newoff; + +- oldoff = relax_align (was_address + fragP->fr_fix, +- (int) offset); +- newoff = relax_align (address + fragP->fr_fix, +- (int) offset); ++ oldoff = RELAX_ALIGN (segment, fragP, ++ was_address + fragP->fr_fix); ++ newoff = RELAX_ALIGN (segment, fragP, ++ address + fragP->fr_fix); + + if (fragP->fr_subtype != 0) + { +diff -Nrup binutils-2.17/include/dis-asm.h binutils-2.17.atmel.1.3.0/include/dis-asm.h +--- binutils-2.17/include/dis-asm.h 2006-02-17 15:36:26.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/include/dis-asm.h 2007-03-26 10:20:18.000000000 +0200 +@@ -223,6 +223,7 @@ extern int print_insn_big_arm (bfd_vma, + extern int print_insn_little_arm (bfd_vma, disassemble_info *); + extern int print_insn_sparc (bfd_vma, disassemble_info *); + extern int print_insn_avr (bfd_vma, disassemble_info *); ++extern int print_insn_avr32 (bfd_vma, disassemble_info *); + extern int print_insn_bfin (bfd_vma, disassemble_info *); + extern int print_insn_d10v (bfd_vma, disassemble_info *); + extern int print_insn_d30v (bfd_vma, disassemble_info *); +@@ -276,7 +277,9 @@ extern disassembler_ftype cris_get_disas + extern void print_mips_disassembler_options (FILE *); + extern void print_ppc_disassembler_options (FILE *); + extern void print_arm_disassembler_options (FILE *); ++extern void print_avr32_disassembler_options (FILE *); + extern void parse_arm_disassembler_option (char *); ++extern void parse_avr32_disassembler_option (char *); + extern int get_arm_regname_num_options (void); + extern int set_arm_regname_option (int); + extern int get_arm_regnames (int, const char **, const char **, const char *const **); +diff -Nrup binutils-2.17/include/elf/avr32.h binutils-2.17.atmel.1.3.0/include/elf/avr32.h +--- binutils-2.17/include/elf/avr32.h 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/include/elf/avr32.h 2007-03-26 10:20:17.000000000 +0200 +@@ -0,0 +1,95 @@ ++/* AVR32 ELF support for BFD. ++ Copyright 2003-2006 Atmel Corporation. ++ ++ Written by Haavard Skinnemoen, Atmel Norway, ++ ++ This file is part of BFD, the Binary File Descriptor library. ++ ++ This program is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#include "elf/reloc-macros.h" ++ ++/* CPU-specific flags for the ELF header e_flags field */ ++#define EF_AVR32_LINKRELAX 0x01 ++#define EF_AVR32_PIC 0x02 ++ ++START_RELOC_NUMBERS (elf_avr32_reloc_type) ++ RELOC_NUMBER (R_AVR32_NONE, 0) ++ ++ /* Data Relocations */ ++ RELOC_NUMBER (R_AVR32_32, 1) ++ RELOC_NUMBER (R_AVR32_16, 2) ++ RELOC_NUMBER (R_AVR32_8, 3) ++ RELOC_NUMBER (R_AVR32_32_PCREL, 4) ++ RELOC_NUMBER (R_AVR32_16_PCREL, 5) ++ RELOC_NUMBER (R_AVR32_8_PCREL, 6) ++ RELOC_NUMBER (R_AVR32_DIFF32, 7) ++ RELOC_NUMBER (R_AVR32_DIFF16, 8) ++ RELOC_NUMBER (R_AVR32_DIFF8, 9) ++ RELOC_NUMBER (R_AVR32_GOT32, 10) ++ RELOC_NUMBER (R_AVR32_GOT16, 11) ++ RELOC_NUMBER (R_AVR32_GOT8, 12) ++ ++ /* Normal Code Relocations */ ++ RELOC_NUMBER (R_AVR32_21S, 13) ++ RELOC_NUMBER (R_AVR32_16U, 14) ++ RELOC_NUMBER (R_AVR32_16S, 15) ++ RELOC_NUMBER (R_AVR32_8S, 16) ++ RELOC_NUMBER (R_AVR32_8S_EXT, 17) ++ ++ /* PC-Relative Code Relocations */ ++ RELOC_NUMBER (R_AVR32_22H_PCREL, 18) ++ RELOC_NUMBER (R_AVR32_18W_PCREL, 19) ++ RELOC_NUMBER (R_AVR32_16B_PCREL, 20) ++ RELOC_NUMBER (R_AVR32_16N_PCREL, 21) ++ RELOC_NUMBER (R_AVR32_14UW_PCREL, 22) ++ RELOC_NUMBER (R_AVR32_11H_PCREL, 23) ++ RELOC_NUMBER (R_AVR32_10UW_PCREL, 24) ++ RELOC_NUMBER (R_AVR32_9H_PCREL, 25) ++ RELOC_NUMBER (R_AVR32_9UW_PCREL, 26) ++ ++ /* Special Code Relocations */ ++ RELOC_NUMBER (R_AVR32_HI16, 27) ++ RELOC_NUMBER (R_AVR32_LO16, 28) ++ ++ /* PIC Relocations */ ++ RELOC_NUMBER (R_AVR32_GOTPC, 29) ++ RELOC_NUMBER (R_AVR32_GOTCALL, 30) ++ RELOC_NUMBER (R_AVR32_LDA_GOT, 31) ++ RELOC_NUMBER (R_AVR32_GOT21S, 32) ++ RELOC_NUMBER (R_AVR32_GOT18SW, 33) ++ RELOC_NUMBER (R_AVR32_GOT16S, 34) ++ RELOC_NUMBER (R_AVR32_GOT7UW, 35) ++ ++ /* Constant Pool Relocations */ ++ RELOC_NUMBER (R_AVR32_32_CPENT, 36) ++ RELOC_NUMBER (R_AVR32_CPCALL, 37) ++ RELOC_NUMBER (R_AVR32_16_CP, 38) ++ RELOC_NUMBER (R_AVR32_9W_CP, 39) ++ ++ /* Dynamic Relocations */ ++ RELOC_NUMBER (R_AVR32_RELATIVE, 40) ++ RELOC_NUMBER (R_AVR32_GLOB_DAT, 41) ++ RELOC_NUMBER (R_AVR32_JMP_SLOT, 42) ++ ++ /* Linkrelax Information */ ++ RELOC_NUMBER (R_AVR32_ALIGN, 43) ++END_RELOC_NUMBERS (R_AVR32_max) ++ ++/* Processor specific dynamic array tags. */ ++ ++/* The total size in bytes of the Global Offset Table */ ++#define DT_AVR32_GOTSZ 0x70000001 +diff -Nrup binutils-2.17/include/elf/common.h binutils-2.17.atmel.1.3.0/include/elf/common.h +--- binutils-2.17/include/elf/common.h 2006-02-17 15:36:26.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/include/elf/common.h 2007-03-26 10:20:17.000000000 +0200 +@@ -256,6 +256,9 @@ + /* V850 backend magic number. Written in the absense of an ABI. */ + #define EM_CYGNUS_V850 0x9080 + ++/* AVR32 magic number, picked by IAR Systems. */ ++#define EM_AVR32 0x18ad ++ + /* old S/390 backend magic number. Written in the absence of an ABI. */ + #define EM_S390_OLD 0xa390 + +diff -Nrup binutils-2.17/ld/configdoc.texi binutils-2.17.atmel.1.3.0/ld/configdoc.texi +--- binutils-2.17/ld/configdoc.texi 2006-05-10 15:43:46.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/ld/configdoc.texi 2007-09-28 10:30:45.000000000 +0200 +@@ -6,6 +6,7 @@ + @set H8300 + @set I960 + @set ARM ++@set AVR32 + @set HPPA + @set MMIX + @set MSP430 +diff -Nrup binutils-2.17/ld/config.in binutils-2.17.atmel.1.3.0/ld/config.in +--- binutils-2.17/ld/config.in 2006-04-16 20:20:30.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/ld/config.in 2007-03-26 10:32:23.000000000 +0200 +@@ -187,7 +187,7 @@ + + /* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be +- automatically deduced at run-time. ++ automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +@@ -215,8 +215,8 @@ + #undef inline + #endif + +-/* Define to `long' if does not define. */ ++/* Define to `long int' if does not define. */ + #undef off_t + +-/* Define to `unsigned' if does not define. */ ++/* Define to `unsigned int' if does not define. */ + #undef size_t +diff -Nrup binutils-2.17/ld/configure binutils-2.17.atmel.1.3.0/ld/configure +--- binutils-2.17/ld/configure 2006-04-11 12:36:26.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/ld/configure 2007-03-26 10:32:22.000000000 +0200 +@@ -1,25 +1,54 @@ + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +-# Generated by GNU Autoconf 2.59. ++# Generated by GNU Autoconf 2.61. + # +-# Copyright (C) 2003 Free Software Foundation, Inc. ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++# 2002, 2003, 2004, 2005, 2006 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 Bourne compatible ++# 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=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix ++ 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 ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh + fi +-DUALCASE=1; export DUALCASE # for MKS sh + + # Support unset when possible. + if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +@@ -29,8 +58,43 @@ else + 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.) ++as_nl=' ++' ++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 ++ 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. +-$as_unset ENV MAIL MAILPATH ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done + PS1='$ ' + PS2='> ' + PS4='+ ' +@@ -44,18 +108,19 @@ do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else +- $as_unset $as_var ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi + done + + # Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then ++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 ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename + else + as_basename=false +@@ -63,157 +128,388 @@ fi + + + # Name of the executable. +-as_me=`$as_basename "$0" || ++as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + ++# CDPATH. ++$as_unset CDPATH + +-# PATH needs CR, and LINENO needs CR and PATH. +-# 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 + +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh ++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 + +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- 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 ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi + +- ;; +- 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 +- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') ++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=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in ++ case $as_dir in + /*) +- if ("$as_dir/$as_base" -c ' ++ 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=: ++ # Zsh 3.x and 4.x performs 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=: ++ # Zsh 3.x and 4.x performs 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 +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac ++ 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 autoconf@gnu.org about your system, ++ echo including any error possibly output before this ++ echo message ++} ++ ++ ++ ++ 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 before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. ++ # 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 +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | ++ # 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 +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, ++ s/-\n.*// + ' >$as_me.lineno && +- chmod +x $as_me.lineno || ++ chmod +x "$as_me.lineno" || + { 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 sensible to this). +- . ./$as_me.lineno ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" + # Exit status is that of the last command. + exit + } + + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; ++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; then ++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 ++fi + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links ++ 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' +- else +- as_ln_s='ln -s' +- fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +-rm -f conf$$ conf$$.exe conf$$.file ++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=: +@@ -222,7 +518,28 @@ else + as_mkdir_p=false + fi + +-as_executable_p="test -f" ++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'" +@@ -231,39 +548,27 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P + as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH + ++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` + +-exec 6>&1 +- + # + # 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} + +-# Maximum number of lines to put in a shell here document. +-# This variable seems obsolete. It should probably be removed, and +-# only ac_max_sed_lines should be used. +-: ${ac_max_here_lines=38} +- + # Identity of this package. + PACKAGE_NAME= + PACKAGE_TARNAME= +@@ -275,42 +580,191 @@ ac_unique_file="ldmain.c" + # Factoring default headers for most tests. + ac_includes_default="\ + #include +-#if HAVE_SYS_TYPES_H ++#ifdef HAVE_SYS_TYPES_H + # include + #endif +-#if HAVE_SYS_STAT_H ++#ifdef HAVE_SYS_STAT_H + # include + #endif +-#if STDC_HEADERS ++#ifdef STDC_HEADERS + # include + # include + #else +-# if HAVE_STDLIB_H ++# ifdef HAVE_STDLIB_H + # include + # endif + #endif +-#if HAVE_STRING_H +-# if !STDC_HEADERS && HAVE_MEMORY_H ++#ifdef HAVE_STRING_H ++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H + # include + # endif + # include + #endif +-#if HAVE_STRINGS_H ++#ifdef HAVE_STRINGS_H + # include + #endif +-#if HAVE_INTTYPES_H ++#ifdef HAVE_INTTYPES_H + # include +-#else +-# if HAVE_STDINT_H +-# include +-# endif + #endif +-#if HAVE_UNISTD_H ++#ifdef HAVE_STDINT_H ++# include ++#endif ++#ifdef HAVE_UNISTD_H + # include + #endif" + +-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE LN_S RANLIB ac_ct_RANLIB LIBTOOL use_sysroot TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE WARN_CFLAGS NO_WERROR CPP EGREP ALLOCA USE_NLS MSGFMT GMSGFMT XGETTEXT USE_INCLUDED_LIBINTL CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLDEPS INTLLIBS INTLOBJS POFILES POSUB INCLUDE_LOCALE_H GT_NO GT_YES MKINSTALLDIRS l YACC LEX LEXLIB LEX_OUTPUT_ROOT MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT HDEFINES HOSTING_CRT0 HOSTING_LIBS NATIVE_LIB_DIRS STRINGIFY EMUL EMULATION_OFILES EMUL_EXTRA_OFILES LIB_PATH EMULATION_LIBPATH TESTBFDLIB datarootdir docdir htmldir LIBOBJS LTLIBOBJS' ++ac_subst_vars='SHELL ++PATH_SEPARATOR ++PACKAGE_NAME ++PACKAGE_TARNAME ++PACKAGE_VERSION ++PACKAGE_STRING ++PACKAGE_BUGREPORT ++exec_prefix ++prefix ++program_transform_name ++bindir ++sbindir ++libexecdir ++datarootdir ++datadir ++sysconfdir ++sharedstatedir ++localstatedir ++includedir ++oldincludedir ++docdir ++infodir ++htmldir ++dvidir ++pdfdir ++psdir ++libdir ++localedir ++mandir ++DEFS ++ECHO_C ++ECHO_N ++ECHO_T ++LIBS ++build_alias ++host_alias ++target_alias ++build ++build_cpu ++build_vendor ++build_os ++host ++host_cpu ++host_vendor ++host_os ++target ++target_cpu ++target_vendor ++target_os ++CC ++CFLAGS ++LDFLAGS ++CPPFLAGS ++ac_ct_CC ++EXEEXT ++OBJEXT ++INSTALL_PROGRAM ++INSTALL_SCRIPT ++INSTALL_DATA ++CYGPATH_W ++PACKAGE ++VERSION ++ACLOCAL ++AUTOCONF ++AUTOMAKE ++AUTOHEADER ++MAKEINFO ++install_sh ++STRIP ++INSTALL_STRIP_PROGRAM ++mkdir_p ++AWK ++SET_MAKE ++am__leading_dot ++AMTAR ++am__tar ++am__untar ++DEPDIR ++am__include ++am__quote ++AMDEP_TRUE ++AMDEP_FALSE ++AMDEPBACKSLASH ++CCDEPMODE ++am__fastdepCC_TRUE ++am__fastdepCC_FALSE ++LN_S ++RANLIB ++LIBTOOL ++use_sysroot ++TARGET_SYSTEM_ROOT ++TARGET_SYSTEM_ROOT_DEFINE ++WARN_CFLAGS ++NO_WERROR ++CPP ++GREP ++EGREP ++ALLOCA ++USE_NLS ++MSGFMT ++GMSGFMT ++XGETTEXT ++USE_INCLUDED_LIBINTL ++CATALOGS ++CATOBJEXT ++DATADIRNAME ++GMOFILES ++INSTOBJEXT ++INTLDEPS ++INTLLIBS ++INTLOBJS ++POFILES ++POSUB ++INCLUDE_LOCALE_H ++GT_NO ++GT_YES ++MKINSTALLDIRS ++l ++YACC ++YFLAGS ++LEX ++LEX_OUTPUT_ROOT ++LEXLIB ++MAINTAINER_MODE_TRUE ++MAINTAINER_MODE_FALSE ++MAINT ++HDEFINES ++HOSTING_CRT0 ++HOSTING_LIBS ++NATIVE_LIB_DIRS ++STRINGIFY ++EMUL ++EMULATION_OFILES ++EMUL_EXTRA_OFILES ++LIB_PATH ++EMULATION_LIBPATH ++TESTBFDLIB ++LIBOBJS ++LTLIBOBJS' + ac_subst_files='TDIRS' ++ ac_precious_vars='build_alias ++host_alias ++target_alias ++CC ++CFLAGS ++LDFLAGS ++LIBS ++CPPFLAGS ++CPP ++YACC ++YFLAGS' ++ + + # Initialize some variables set by options. + ac_init_help= +@@ -337,34 +791,48 @@ x_libraries=NONE + # 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' +-datadir='${prefix}/share' ++datarootdir='${prefix}/share' ++datadir='${datarootdir}' + sysconfdir='${prefix}/etc' + sharedstatedir='${prefix}/com' + localstatedir='${prefix}/var' +-libdir='${exec_prefix}/lib' + includedir='${prefix}/include' + oldincludedir='/usr/include' +-infodir='${prefix}/info' +-mandir='${prefix}/man' ++docdir='${datarootdir}/doc/${PACKAGE}' ++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" ++ eval $ac_prev=\$ac_option + ac_prev= + continue + fi + +- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` ++ 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_option in ++ case $ac_dashdash$ac_option in ++ --) ++ ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; +@@ -386,33 +854,45 @@ do + --config-cache | -C) + cache_file=config.cache ;; + +- -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ++ -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; +- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ +- | --da=*) ++ -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_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- eval "enable_$ac_feature=no" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=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_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "enable_$ac_feature='$ac_optarg'" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ +@@ -439,6 +919,12 @@ do + -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 ;; +@@ -463,13 +949,16 @@ do + | --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 | --local | --loca | --loc | --lo) ++ | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ +- | --localstate=* | --localstat=* | --localsta=* | --localst=* \ +- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) ++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) +@@ -534,6 +1023,16 @@ do + | --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 ;; +@@ -586,24 +1085,20 @@ do + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package| sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "with_$ac_package='$ac_optarg'" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package | sed 's/-/_/g'` +- eval "with_$ac_package=no" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. +@@ -634,8 +1129,7 @@ Try \`$0 --help' for more information." + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } +- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` +- eval "$ac_envvar='$ac_optarg'" ++ eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) +@@ -655,27 +1149,19 @@ if test -n "$ac_prev"; then + { (exit 1); exit 1; }; } + fi + +-# Be sure to have absolute paths. +-for ac_var in exec_prefix prefix ++# Be sure to have absolute directory names. ++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=$`echo $ac_var` ++ eval ac_val=\$$ac_var + case $ac_val in +- [\\/$]* | ?:[\\/]* | NONE | '' ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# Be sure to have absolute paths. +-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ +- localstatedir libdir includedir oldincludedir infodir mandir +-do +- eval ac_val=$`echo $ac_var` +- case $ac_val in +- [\\/$]* | ?:[\\/]* ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; ++ [\\/$]* | ?:[\\/]* ) continue;; ++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac ++ { 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' +@@ -702,74 +1188,76 @@ test -n "$host_alias" && ac_tool_prefix= + 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 .` || ++ { echo "$as_me: error: Working directory cannot be determined" >&2 ++ { (exit 1); exit 1; }; } ++test "X$ac_ls_di" = "X$ac_pwd_ls_di" || ++ { 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 its parent. +- ac_confdir=`(dirname "$0") 2>/dev/null || ++ # Try the directory containing this script, then the parent directory. ++ ac_confdir=`$as_dirname -- "$0" || + $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X"$0" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ 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 ++ if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi + else + ac_srcdir_defaulted=no + fi +-if test ! -r $srcdir/$ac_unique_file; then +- if test "$ac_srcdir_defaulted" = yes; then +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 +- { (exit 1); exit 1; }; } +- else +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +- { (exit 1); exit 1; }; } +- fi +-fi +-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || +- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +- { (exit 1); exit 1; }; } +-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +-ac_env_build_alias_set=${build_alias+set} +-ac_env_build_alias_value=$build_alias +-ac_cv_env_build_alias_set=${build_alias+set} +-ac_cv_env_build_alias_value=$build_alias +-ac_env_host_alias_set=${host_alias+set} +-ac_env_host_alias_value=$host_alias +-ac_cv_env_host_alias_set=${host_alias+set} +-ac_cv_env_host_alias_value=$host_alias +-ac_env_target_alias_set=${target_alias+set} +-ac_env_target_alias_value=$target_alias +-ac_cv_env_target_alias_set=${target_alias+set} +-ac_cv_env_target_alias_value=$target_alias +-ac_env_CC_set=${CC+set} +-ac_env_CC_value=$CC +-ac_cv_env_CC_set=${CC+set} +-ac_cv_env_CC_value=$CC +-ac_env_CFLAGS_set=${CFLAGS+set} +-ac_env_CFLAGS_value=$CFLAGS +-ac_cv_env_CFLAGS_set=${CFLAGS+set} +-ac_cv_env_CFLAGS_value=$CFLAGS +-ac_env_LDFLAGS_set=${LDFLAGS+set} +-ac_env_LDFLAGS_value=$LDFLAGS +-ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +-ac_cv_env_LDFLAGS_value=$LDFLAGS +-ac_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_env_CPPFLAGS_value=$CPPFLAGS +-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_cv_env_CPPFLAGS_value=$CPPFLAGS +-ac_env_CPP_set=${CPP+set} +-ac_env_CPP_value=$CPP +-ac_cv_env_CPP_set=${CPP+set} +-ac_cv_env_CPP_value=$CPP ++if test ! -r "$srcdir/$ac_unique_file"; then ++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." ++ { 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" || { 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. +@@ -798,9 +1286,6 @@ Configuration: + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +-_ACEOF +- +- cat <<_ACEOF + Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] +@@ -818,15 +1303,22 @@ Fine tuning of the installation director + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] +- --datadir=DIR read-only architecture-independent data [PREFIX/share] + --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] +- --infodir=DIR info documentation [PREFIX/info] +- --mandir=DIR man documentation [PREFIX/man] ++ --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/PACKAGE] ++ --htmldir=DIR html documentation [DOCDIR] ++ --dvidir=DIR dvi documentation [DOCDIR] ++ --pdfdir=DIR pdf documentation [DOCDIR] ++ --psdir=DIR ps documentation [DOCDIR] + _ACEOF + + cat <<\_ACEOF +@@ -878,126 +1370,100 @@ Some influential environment variables: + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory +- CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have +- headers in a nonstandard directory ++ LIBS libraries to pass to the linker, e.g. -l ++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if ++ you have headers in a nonstandard directory + CPP C preprocessor ++ YACC The `Yet Another C Compiler' implementation to use. Defaults to ++ the first program found out of: `bison -y', `byacc', `yacc'. ++ YFLAGS The list of arguments that will be passed by default to $YACC. ++ This script will default YFLAGS to the empty string to avoid a ++ default value of `-d' given by some make applications. + + 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. +- ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue +- test -d $ac_dir || continue ++ test -d "$ac_dir" || continue + ac_builddir=. + +-if test "$ac_dir" != .; then ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`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 +- .) # No --srcdir option. We are building in place. ++ .) # We are building in place. + ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. ++ 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 ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +- +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac +- +- cd $ac_dir +- # Check for guested configure; otherwise get Cygnus style 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 +- elif test -f $ac_srcdir/configure.ac || +- test -f $ac_srcdir/configure.in; then +- echo +- $ac_configure --help ++ 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 + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 +- fi +- cd $ac_popdir ++ fi || ac_status=$? ++ cd "$ac_pwd" || { ac_status=$?; break; } + done + fi + +-test -n "$ac_init_help" && exit 0 ++test -n "$ac_init_help" && exit $ac_status + if $ac_init_version; then + cat <<\_ACEOF ++configure ++generated by GNU Autoconf 2.61 + +-Copyright (C) 2003 Free Software Foundation, Inc. ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++2002, 2003, 2004, 2005, 2006 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 0 ++ exit + fi +-exec 5>config.log +-cat >&5 <<_ACEOF ++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 $as_me, which was +-generated by GNU Autoconf 2.59. Invocation command line was ++generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + + _ACEOF ++exec 5>>config.log + { + cat <<_ASUNAME + ## --------- ## +@@ -1016,7 +1482,7 @@ uname -v = `(uname -v) 2>/dev/null || ec + /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` +-hostinfo = `(hostinfo) 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` +@@ -1030,6 +1496,7 @@ do + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" + done ++IFS=$as_save_IFS + + } >&5 + +@@ -1051,7 +1518,6 @@ _ACEOF + ac_configure_args= + ac_configure_args0= + ac_configure_args1= +-ac_sep= + ac_must_keep_next=false + for ac_pass in 1 2 + do +@@ -1062,7 +1528,7 @@ do + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ++ *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in +@@ -1084,9 +1550,7 @@ do + -* ) ac_must_keep_next=true ;; + esac + fi +- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" +- # Get rid of the leading space. +- ac_sep=" " ++ ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +@@ -1097,8 +1561,8 @@ $as_unset ac_configure_args1 || test "${ + # 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: Be sure not to use single quotes in there, as some shells, +-# such as our DU 5.0 friend, will then `close' the trap. ++# 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. + { +@@ -1111,20 +1575,34 @@ trap 'exit_status=$? + _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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done + (set) 2>&1 | +- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ 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" +- ;; ++ "s/'\''/'\''\\\\'\'''\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ++ ;; #( + *) +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} ++ esac | ++ sort ++) + echo + + cat <<\_ASBOX +@@ -1135,22 +1613,28 @@ _ASBOX + echo + for ac_var in $ac_subst_vars + do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +-## ------------- ## +-## Output files. ## +-## ------------- ## ++## ------------------- ## ++## File substitutions. ## ++## ------------------- ## + _ASBOX + echo + for ac_var in $ac_subst_files + do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi +@@ -1162,26 +1646,24 @@ _ASBOX + ## ----------- ## + _ASBOX + echo +- sed "/^$/d" confdefs.h | sort ++ cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 +- rm -f core *.core && +- rm -rf conftest* confdefs* conf$$* $ac_clean_files && ++ rm -f core *.core core.conftest.* && ++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +- ' 0 ++' 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 -rf conftest* confdefs.h +-# AIX cpp loses on an empty file, so make sure it contains at least a newline. +-echo >confdefs.h ++rm -f -r conftest* confdefs.h + + # Predefined preprocessor variables. + +@@ -1212,14 +1694,17 @@ _ACEOF + + # Let the site file select an alternate cache file if it wants to. + # Prefer explicitly selected file to automatically selected ones. +-if test -z "$CONFIG_SITE"; then +- if test "x$prefix" != xNONE; then +- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" +- else +- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +- fi ++if test -n "$CONFIG_SITE"; then ++ set x "$CONFIG_SITE" ++elif test "x$prefix" != xNONE; then ++ set x "$prefix/share/config.site" "$prefix/etc/config.site" ++else ++ set x "$ac_default_prefix/share/config.site" \ ++ "$ac_default_prefix/etc/config.site" + fi +-for ac_site_file in $CONFIG_SITE; do ++shift ++for ac_site_file ++do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 + echo "$as_me: loading site script $ac_site_file" >&6;} +@@ -1235,8 +1720,8 @@ if test -r "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 + echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; + esac + fi + else +@@ -1248,12 +1733,11 @@ fi + # Check that the precious variables saved in the cache have kept the same + # value. + ac_cache_corrupted=false +-for ac_var in `(set) 2>&1 | +- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do ++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" ++ 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,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +@@ -1278,8 +1762,7 @@ echo "$as_me: current value: $ac_new_v + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in +@@ -1296,12 +1779,6 @@ echo "$as_me: error: run \`make distclea + { (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 +- + + + +@@ -1318,108 +1795,163 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ++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 $srcdir/.. $srcdir/../..; do +- if test -f $ac_dir/install-sh; then ++for ac_dir in "$srcdir" "$srcdir/.." "$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 ++ 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 ++ 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 +- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} ++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 ++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } + fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. ++ ++# 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. +-$ac_config_sub sun4 >/dev/null 2>&1 || +- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +-echo "$as_me: error: cannot run $ac_config_sub" >&2;} ++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || ++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 ++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +-echo "$as_me:$LINENO: checking build system type" >&5 +-echo $ECHO_N "checking build system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking build system type" >&5 ++echo $ECHO_N "checking build system type... $ECHO_C" >&6; } + if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_build_alias=$build_alias +-test -z "$ac_cv_build_alias" && +- ac_cv_build_alias=`$ac_config_guess` +-test -z "$ac_cv_build_alias" && ++ 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 && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 + echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} ++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + + fi +-echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +-echo "${ECHO_T}$ac_cv_build" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 ++echo "${ECHO_T}$ac_cv_build" >&6; } ++case $ac_cv_build in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 ++echo "$as_me: error: invalid value of canonical build" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + build=$ac_cv_build +-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++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 + + +-echo "$as_me:$LINENO: checking host system type" >&5 +-echo $ECHO_N "checking host system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking host system type" >&5 ++echo $ECHO_N "checking host system type... $ECHO_C" >&6; } + if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_host_alias=$host_alias +-test -z "$ac_cv_host_alias" && +- ac_cv_host_alias=$ac_cv_build_alias +-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} ++ 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` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } ++fi + + fi +-echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +-echo "${ECHO_T}$ac_cv_host" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 ++echo "${ECHO_T}$ac_cv_host" >&6; } ++case $ac_cv_host in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 ++echo "$as_me: error: invalid value of canonical host" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + host=$ac_cv_host +-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++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 + + +-echo "$as_me:$LINENO: checking target system type" >&5 +-echo $ECHO_N "checking target system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking target system type" >&5 ++echo $ECHO_N "checking target system type... $ECHO_C" >&6; } + if test "${ac_cv_target+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_target_alias=$target_alias +-test "x$ac_cv_target_alias" = "x" && +- ac_cv_target_alias=$ac_cv_host_alias +-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} ++ if test "x$target_alias" = x; then ++ ac_cv_target=$ac_cv_host ++else ++ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} + { (exit 1); exit 1; }; } ++fi + + fi +-echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +-echo "${ECHO_T}$ac_cv_target" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5 ++echo "${ECHO_T}$ac_cv_target" >&6; } ++case $ac_cv_target in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 ++echo "$as_me: error: invalid value of canonical target" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + target=$ac_cv_target +-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_target ++shift ++target_cpu=$1 ++target_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++target_os=$* ++IFS=$ac_save_IFS ++case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + + # The aliases save the names the user supplied, while $host etc. +@@ -1436,8 +1968,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1450,32 +1982,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}gcc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1488,36 +2022,51 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="gcc" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + else + CC="$ac_cv_prog_CC" + fi + + if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1530,74 +2079,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}cc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi + ++ fi + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1611,7 +2120,7 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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 +@@ -1622,6 +2131,7 @@ do + 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. +@@ -1639,22 +2149,23 @@ fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1667,36 +2178,38 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="$ac_tool_prefix$ac_prog" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CC" && break + done + fi + if test -z "$CC"; then + ac_ct_CC=$CC +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1709,29 +2222,45 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="$ac_prog" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CC" && break + done + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + fi + + fi +@@ -1744,21 +2273,35 @@ See \`config.log' for more details." >&2 + { (exit 1); exit 1; }; } + + # Provide some information about the compiler. +-echo "$as_me:$LINENO:" \ +- "checking for C compiler version" >&5 ++echo "$as_me:$LINENO: checking for C compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +@@ -1783,47 +2326,77 @@ ac_clean_files="$ac_clean_files a.out a. + # Try to create an executable without -o first, disregard a.out. + # It will help us diagnose broken compilers, and finding out an intuition + # of exeext. +-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 ++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } + ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 +- (eval $ac_link_default) 2>&5 ++# ++# List of possible output files, starting from the most likely. ++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) ++# only as a last resort. b.out is created by i960 compilers. ++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' ++# ++# The IRIX 6 linker writes into existing files which may not be ++# executable, retaining their permissions. Remove them first so a ++# subsequent execution test works. ++ac_rmfiles= ++for ac_file in $ac_files ++do ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; ++ * ) ac_rmfiles="$ac_rmfiles $ac_file";; ++ esac ++done ++rm -f $ac_rmfiles ++ ++if { (ac_try="$ac_link_default" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- # Find the output, starting from the most likely. This scheme is +-# not robust to junk in `.', hence go to wildcards (a.*) only as a last +-# resort. +- +-# Be careful to initialize this variable, since it used to be cached. +-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +-ac_cv_exeext= +-# b.out is created by i960 compilers. +-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out ++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. ++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' ++# in a Makefile. We should not override ac_cv_exeext if it was cached, ++# so that the user can short-circuit this test for compilers unknown to ++# Autoconf. ++for ac_file in $ac_files '' + do + test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) +- ;; +- conftest.$ac_ext ) +- # This is the source file. ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) +- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- # FIXME: I believe we export ac_cv_exeext for Libtool, +- # but it would be cool to find out if it's true. Does anybody +- # maintain Libtool? --akim. +- export ac_cv_exeext ++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ then :; else ++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ fi ++ # We set ac_cv_exeext here because the later test for it is not ++ # safe: cross compilers may not add the suffix if given an `-o' ++ # argument, so we may need to know it at that point already. ++ # Even if this section looks crufty: it has the advantage of ++ # actually working. + break;; + * ) + break;; + esac + done ++test "$ac_cv_exeext" = no && ac_cv_exeext= ++ + else ++ ac_file='' ++fi ++ ++{ echo "$as_me:$LINENO: result: $ac_file" >&5 ++echo "${ECHO_T}$ac_file" >&6; } ++if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +@@ -1835,19 +2408,21 @@ See \`config.log' for more details." >&2 + fi + + ac_exeext=$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_file" >&5 +-echo "${ECHO_T}$ac_file" >&6 + +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 ++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. + if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -1866,22 +2441,27 @@ See \`config.log' for more details." >&2 + fi + fi + fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + + rm -f a.out a.exe conftest$ac_cv_exeext b.out + ac_clean_files=$ac_clean_files_save +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +-echo "$as_me:$LINENO: result: $cross_compiling" >&5 +-echo "${ECHO_T}$cross_compiling" >&6 +- +-echo "$as_me:$LINENO: checking for suffix of executables" >&5 +-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 ++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 ++echo "${ECHO_T}$cross_compiling" >&6; } ++ ++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 ++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +@@ -1892,9 +2472,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l + for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- export ac_cv_exeext + break;; + * ) break;; + esac +@@ -1908,14 +2487,14 @@ See \`config.log' for more details." >&2 + fi + + rm -f conftest$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +-echo "${ECHO_T}$ac_cv_exeext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 ++echo "${ECHO_T}$ac_cv_exeext" >&6; } + + rm -f conftest.$ac_ext + EXEEXT=$ac_cv_exeext + ac_exeext=$EXEEXT +-echo "$as_me:$LINENO: checking for suffix of object files" >&5 +-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 ++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } + if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1935,14 +2514,20 @@ main () + } + _ACEOF + rm -f conftest.o conftest.obj +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do ++ for ac_file in conftest.o conftest.obj conftest.*; do ++ test -f "$ac_file" || continue; + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +@@ -1960,12 +2545,12 @@ fi + + rm -f conftest.$ac_cv_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +-echo "${ECHO_T}$ac_cv_objext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 ++echo "${ECHO_T}$ac_cv_objext" >&6; } + OBJEXT=$ac_cv_objext + ac_objext=$OBJEXT +-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } + if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1988,50 +2573,49 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_compiler_gnu=no ++ ac_compiler_gnu=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } + GCC=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CFLAGS=${CFLAGS+set} + ac_save_CFLAGS=$CFLAGS +-CFLAGS="-g" +-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ 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 +@@ -2047,38 +2631,118 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&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 ++ 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 "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ : ++else ++ 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 "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (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 + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_prog_cc_g=no ++ ++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 conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_c_werror_flag=$ac_save_c_werror_flag + fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++echo "${ECHO_T}$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 +@@ -2094,12 +2758,12 @@ else + CFLAGS= + fi + fi +-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_stdc+set}" = set; then ++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_prog_cc_stdc=no ++ ac_cv_prog_cc_c89=no + ac_save_CC=$CC + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -2133,12 +2797,17 @@ static char *f (char * (*g) (char **, in + /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated +- as 'x'. The following induces an error, until -std1 is added to get ++ as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something +- that's true only with -std1. */ ++ that's true only with -std. */ + int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ + int test (int i, double x); + struct s1 {int (*f) (int a);}; + struct s2 {int (*f) (double a);}; +@@ -2153,335 +2822,144 @@ return f (e, argv, 0) != argv[0] || f + return 0; + } + _ACEOF +-# Don't try gcc -ansi; that turns off useful extensions and +-# breaks some systems' header files. +-# AIX -qlanglvl=ansi +-# Ultrix and OSF/1 -std1 +-# HP-UX 10.20 and later -Ae +-# HP-UX older versions -Aa -D_HPUX_SOURCE +-# SVR4 -Xc -D__EXTENSIONS__ +-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" + do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_stdc=$ac_arg +-break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_c89=$ac_arg + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext ++ ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break + done +-rm -f conftest.$ac_ext conftest.$ac_objext ++rm -f conftest.$ac_ext + CC=$ac_save_CC + + fi +- +-case "x$ac_cv_prog_cc_stdc" in +- x|xno) +- echo "$as_me:$LINENO: result: none needed" >&5 +-echo "${ECHO_T}none needed" >&6 ;; ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { echo "$as_me:$LINENO: result: none needed" >&5 ++echo "${ECHO_T}none needed" >&6; } ;; ++ xno) ++ { echo "$as_me:$LINENO: result: unsupported" >&5 ++echo "${ECHO_T}unsupported" >&6; } ;; + *) +- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 +- CC="$CC $ac_cv_prog_cc_stdc" ;; ++ CC="$CC $ac_cv_prog_cc_c89" ++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + esac + +-# Some people use a C++ compiler to compile C. Since we use `exit', +-# in C++ we need to declare it. In case someone uses the same compiler +-# for both compiling C and C++ we need to have the C++ compiler decide +-# the declaration of exit, since it's the most demanding environment. ++ ++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 ++ ++ ++{ echo "$as_me:$LINENO: checking for library containing strerror" >&5 ++echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; } ++if test "${ac_cv_search_strerror+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_func_search_save_LIBS=$LIBS + cat >conftest.$ac_ext <<_ACEOF +-#ifndef __cplusplus +- choke me +-#endif +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- for ac_declaration in \ +- '' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_declaration +-#include ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char strerror (); + int + main () + { +-exit (42); ++return strerror (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++for ac_lib in '' cposix; do ++ if test -z "$ac_lib"; then ++ ac_res="none required" ++ else ++ ac_res=-l$ac_lib ++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" ++ fi ++ rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_search_strerror=$ac_res + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-continue +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h +-fi +- +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext ++ if test "${ac_cv_search_strerror+set}" = set; then ++ break + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-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 +- +- +-echo "$as_me:$LINENO: checking for library containing strerror" >&5 +-echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6 ++done + if test "${ac_cv_search_strerror+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_func_search_save_LIBS=$LIBS +-ac_cv_search_strerror=no +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char strerror (); +-int +-main () +-{ +-strerror (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_strerror="none required" +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-if test "$ac_cv_search_strerror" = no; then +- for ac_lib in cposix; do +- LIBS="-l$ac_lib $ac_func_search_save_LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char strerror (); +-int +-main () +-{ +-strerror (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_strerror="-l$ac_lib" +-break ++ : + else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- done ++ ac_cv_search_strerror=no + fi ++rm conftest.$ac_ext + LIBS=$ac_func_search_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 +-echo "${ECHO_T}$ac_cv_search_strerror" >&6 +-if test "$ac_cv_search_strerror" != no; then +- test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS" ++{ echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 ++echo "${ECHO_T}$ac_cv_search_strerror" >&6; } ++ac_res=$ac_cv_search_strerror ++if test "$ac_res" != no; then ++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + fi + +@@ -2501,8 +2979,8 @@ am__api_version="1.9" + # 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. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } + if test -z "$INSTALL"; then + if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -2524,7 +3002,7 @@ case $as_dir/ in + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ++ 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. +@@ -2543,21 +3021,22 @@ case $as_dir/ in + ;; + esac + done ++IFS=$as_save_IFS + + + 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. We don't cache a +- # path for INSTALL within a source directory, because that will ++ # 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 path is relative. ++ # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi + fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -2567,8 +3046,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR + + test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +-echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 ++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } + # Just in case + sleep 1 + echo timestamp > conftest.file +@@ -2610,20 +3089,20 @@ echo "$as_me: error: newly created file + Check your system clock" >&2;} + { (exit 1); exit 1; }; } + fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + test "$program_prefix" != NONE && +- program_transform_name="s,^,$program_prefix,;$program_transform_name" ++ 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" ++ program_transform_name="s&\$&$program_suffix&;$program_transform_name" + # Double any \ or $. echo might interpret backslashes. + # By default was `s,x,x', remove it if useless. + cat <<\_ACEOF >conftest.sed + s/[\\$]/&&/g;s/;s,x,x,$// + _ACEOF + program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +-rm conftest.sed ++rm -f conftest.sed + + # expand $ac_aux_dir to an absolute path + am_aux_dir=`cd $ac_aux_dir && pwd` +@@ -2675,8 +3154,8 @@ 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2689,54 +3168,57 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $AWK" >&5 +-echo "${ECHO_T}$AWK" >&6 ++ { echo "$as_me:$LINENO: result: $AWK" >&5 ++echo "${ECHO_T}$AWK" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$AWK" && break + done + +-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } ++set x ${MAKE-make}; ac_make=`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 + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh + all: +- @echo 'ac_maketemp="$(MAKE)"' ++ @echo '@@@%%%=$(MAKE)=@@@%%%' + _ACEOF + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. +-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +-if test -n "$ac_maketemp"; then +- eval ac_cv_prog_make_${ac_make}_set=yes +-else +- eval ac_cv_prog_make_${ac_make}_set=no +-fi ++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 \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + SET_MAKE= + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" + fi + +@@ -2751,7 +3233,7 @@ rmdir .tst 2>/dev/null + + DEPDIR="${am__leading_dot}deps" + +- ac_config_commands="$ac_config_commands depfiles" ++ac_config_commands="$ac_config_commands depfiles" + + + am_make=${MAKE-make} +@@ -2761,8 +3243,8 @@ am__doit: + .PHONY: am__doit + END + # If we don't find an include directive, just comment out the code. +-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 ++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } + am__include="#" + am__quote= + _am_result=none +@@ -2789,15 +3271,15 @@ if test "$am__include" = "#"; then + fi + + +-echo "$as_me:$LINENO: result: $_am_result" >&5 +-echo "${ECHO_T}$_am_result" >&6 ++{ echo "$as_me:$LINENO: result: $_am_result" >&5 ++echo "${ECHO_T}$_am_result" >&6; } + rm -f confinc confmf + +-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. ++# Check whether --enable-dependency-tracking was given. + if test "${enable_dependency_tracking+set}" = set; then +- enableval="$enable_dependency_tracking" ++ enableval=$enable_dependency_tracking; ++fi + +-fi; + if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +@@ -2872,8 +3354,8 @@ 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2886,32 +3368,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2924,27 +3408,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" + fi + fi + ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP + if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- STRIP=$ac_ct_STRIP ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi + else + STRIP="$ac_cv_prog_STRIP" + fi +@@ -2965,8 +3463,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am + + depcc="$CC" am_compiler_list= + +-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } + if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3055,8 +3553,8 @@ else + fi + + fi +-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 ++{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 ++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } + CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + +@@ -3074,10 +3572,9 @@ fi + + + +-# Check whether --enable-shared or --disable-shared was given. ++# Check whether --enable-shared was given. + if test "${enable_shared+set}" = set; then +- enableval="$enable_shared" +- p=${PACKAGE-default} ++ enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; +@@ -3095,11 +3592,11 @@ no) enable_shared=no ;; + esac + else + enable_shared=yes +-fi; +-# Check whether --enable-static or --disable-static was given. ++fi ++ ++# Check whether --enable-static was given. + if test "${enable_static+set}" = set; then +- enableval="$enable_static" +- p=${PACKAGE-default} ++ enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; +@@ -3117,11 +3614,11 @@ no) enable_static=no ;; + esac + else + enable_static=yes +-fi; +-# Check whether --enable-fast-install or --disable-fast-install was given. ++fi ++ ++# Check whether --enable-fast-install was given. + if test "${enable_fast_install+set}" = set; then +- enableval="$enable_fast_install" +- p=${PACKAGE-default} ++ enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; +@@ -3139,20 +3636,21 @@ no) enable_fast_install=no ;; + esac + else + enable_fast_install=yes +-fi; ++fi ++ + +-# Check whether --with-gnu-ld or --without-gnu-ld was given. ++# Check whether --with-gnu-ld was given. + if test "${with_gnu_ld+set}" = set; then +- withval="$with_gnu_ld" +- test "$withval" = no || with_gnu_ld=yes ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes + else + with_gnu_ld=no +-fi; ++fi ++ + ac_prog=ld + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. +- echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for ld used by GCC" >&5 ++echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw +@@ -3181,11 +3679,11 @@ echo $ECHO_N "checking for ld used by GC + ;; + esac + elif test "$with_gnu_ld" = yes; then +- echo "$as_me:$LINENO: checking for GNU ld" >&5 +-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for GNU ld" >&5 ++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + else +- echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + fi + if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -3214,17 +3712,17 @@ fi + + LD="$lt_cv_path_LD" + if test -n "$LD"; then +- echo "$as_me:$LINENO: result: $LD" >&5 +-echo "${ECHO_T}$LD" >&6 ++ { echo "$as_me:$LINENO: result: $LD" >&5 ++echo "${ECHO_T}$LD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 + echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } + if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3235,25 +3733,25 @@ else + lt_cv_prog_gnu_ld=no + fi + fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 ++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } + with_gnu_ld=$lt_cv_prog_gnu_ld + + +-echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 ++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } + if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + lt_cv_ld_reload_flag='-r' + fi +-echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 ++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } + reload_flag=$lt_cv_ld_reload_flag + test -n "$reload_flag" && reload_flag=" $reload_flag" + +-echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 ++echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } + if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3288,22 +3786,22 @@ fi + fi + + NM="$lt_cv_path_NM" +-echo "$as_me:$LINENO: result: $NM" >&5 +-echo "${ECHO_T}$NM" >&6 ++{ echo "$as_me:$LINENO: result: $NM" >&5 ++echo "${ECHO_T}$NM" >&6; } + +-echo "$as_me:$LINENO: checking whether ln -s works" >&5 +-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 ++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } + LN_S=$as_ln_s + if test "$LN_S" = "ln -s"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + else +- echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +-echo "${ECHO_T}no, using $LN_S" >&6 ++ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 ++echo "${ECHO_T}no, using $LN_S" >&6; } + fi + +-echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 +-echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 ++echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6; } + if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3465,8 +3963,8 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + esac + + fi +-echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 ++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } + file_magic_cmd=$lt_cv_file_magic_cmd + deplibs_check_method=$lt_cv_deplibs_check_method + +@@ -3476,8 +3974,8 @@ deplibs_check_method=$lt_cv_deplibs_chec + # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + + # find the maximum length of command line arguments +-echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 ++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } + if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3528,11 +4026,11 @@ else + fi + + if test -n "$lt_cv_sys_max_cmd_len" ; then +- echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 ++ { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 ++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } + else +- echo "$as_me:$LINENO: result: none" >&5 +-echo "${ECHO_T}none" >&6 ++ { echo "$as_me:$LINENO: result: none" >&5 ++echo "${ECHO_T}none" >&6; } + fi + + +@@ -3540,8 +4038,8 @@ fi + case $deplibs_check_method in + file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 ++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } + if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3595,17 +4093,17 @@ fi + + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then +- echo "$as_me:$LINENO: checking for file" >&5 +-echo $ECHO_N "checking for file... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for file" >&5 ++echo $ECHO_N "checking for file... $ECHO_C" >&6; } + if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3659,11 +4157,11 @@ fi + + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + else +@@ -3678,8 +4176,8 @@ esac + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3692,32 +4190,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3730,27 +4230,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" + fi + fi + ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB + if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- RANLIB=$ac_ct_RANLIB ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi + else + RANLIB="$ac_cv_prog_RANLIB" + fi +@@ -3758,8 +4272,8 @@ fi + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3772,32 +4286,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3810,27 +4326,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" + fi + fi + ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP + if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- STRIP=$ac_ct_STRIP ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi + else + STRIP="$ac_cv_prog_STRIP" + fi +@@ -3845,22 +4375,22 @@ test "$GCC" = yes && libtool_flags="$lib + test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" + + +-# Check whether --enable-libtool-lock or --disable-libtool-lock was given. ++# Check whether --enable-libtool-lock was given. + if test "${enable_libtool_lock+set}" = set; then +- enableval="$enable_libtool_lock" ++ enableval=$enable_libtool_lock; ++fi + +-fi; + test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" + test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" + + +-# Check whether --with-pic or --without-pic was given. ++# Check whether --with-pic was given. + if test "${with_pic+set}" = set; then +- withval="$with_pic" +- pic_mode="$withval" ++ withval=$with_pic; pic_mode="$withval" + else + pic_mode=default +-fi; ++fi ++ + test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic" + test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic" + +@@ -3869,7 +4399,7 @@ test x"$pic_mode" = xno && libtool_flags + case $host in + *-*-irix6*) + # Find out which ABI we are using. +- echo '#line 3872 "configure"' > conftest.$ac_ext ++ echo '#line 4402 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +@@ -3974,13 +4504,12 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*li + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" +- echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 ++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } + if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + +- + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -4003,35 +4532,32 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + lt_cv_cc_needs_belf=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-lt_cv_cc_needs_belf=no ++ lt_cv_cc_needs_belf=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' +@@ -4040,8 +4566,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLA + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 ++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" +@@ -4071,39 +4597,58 @@ _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, don't put newlines in cache variables' values. ++# 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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ + (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ 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 \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} | ++ esac | ++ sort ++) | + sed ' ++ /^ac_cv_env_/b end + t clear +- : clear ++ :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end +- /^ac_cv_env/!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" && echo "updating cache $cache_file" ++ 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" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else +- echo "not updating unwritable cache $cache_file" ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi + fi + rm -f confcache +@@ -4129,8 +4674,8 @@ if test -r "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 + echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; + esac + fi + else +@@ -4157,15 +4702,14 @@ exec 5>>./config.log + + + +-# Check whether --with-lib-path or --without-lib-path was given. ++# Check whether --with-lib-path was given. + if test "${with_lib_path+set}" = set; then +- withval="$with_lib_path" +- LIB_PATH=$withval +-fi; +-# Check whether --enable-targets or --disable-targets was given. ++ withval=$with_lib_path; LIB_PATH=$withval ++fi ++ ++# Check whether --enable-targets was given. + if test "${enable_targets+set}" = set; then +- enableval="$enable_targets" +- case "${enableval}" in ++ enableval=$enable_targets; case "${enableval}" in + yes | "") { { echo "$as_me:$LINENO: error: enable-targets option must specify target names or 'all'" >&5 + echo "$as_me: error: enable-targets option must specify target names or 'all'" >&2;} + { (exit 1); exit 1; }; } +@@ -4173,10 +4717,10 @@ echo "$as_me: error: enable-targets opti + no) enable_targets= ;; + *) enable_targets=$enableval ;; + esac +-fi; # Check whether --enable-64-bit-bfd or --disable-64-bit-bfd was given. ++fi ++# Check whether --enable-64-bit-bfd was given. + if test "${enable_64_bit_bfd+set}" = set; then +- enableval="$enable_64_bit_bfd" +- case "${enableval}" in ++ enableval=$enable_64_bit_bfd; case "${enableval}" in + yes) want64=true ;; + no) want64=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for 64-bit-bfd option" >&5 +@@ -4185,12 +4729,12 @@ echo "$as_me: error: bad value ${enablev + esac + else + want64=false +-fi; ++fi + +-# Check whether --with-sysroot or --without-sysroot was given. +-if test "${with_sysroot+set}" = set; then +- withval="$with_sysroot" + ++# Check whether --with-sysroot was given. ++if test "${with_sysroot+set}" = set; then ++ withval=$with_sysroot; + case ${with_sysroot} in + yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_alias}/sys-root' ;; + *) TARGET_SYSTEM_ROOT=$with_sysroot ;; +@@ -4222,7 +4766,8 @@ else + TARGET_SYSTEM_ROOT= + TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"\"' + +-fi; ++fi ++ + + + +@@ -4230,17 +4775,17 @@ fi; + + GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" + +-# Check whether --enable-werror or --disable-werror was given. ++# Check whether --enable-werror was given. + if test "${enable_werror+set}" = set; then +- enableval="$enable_werror" +- case "${enableval}" in ++ enableval=$enable_werror; case "${enableval}" in + yes | y) ERROR_ON_WARNING="yes" ;; + no | n) ERROR_ON_WARNING="no" ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-werror" >&5 + echo "$as_me: error: bad value ${enableval} for --enable-werror" >&2;} + { (exit 1); exit 1; }; } ;; + esac +-fi; ++fi ++ + + # Enable -Werror by default when using gcc + if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then +@@ -4257,10 +4802,9 @@ if test "${GCC}" = yes ; then + WARN_CFLAGS="${GCC_WARN_CFLAGS}" + fi + +-# Check whether --enable-build-warnings or --disable-build-warnings was given. ++# Check whether --enable-build-warnings was given. + if test "${enable_build_warnings+set}" = set; then +- enableval="$enable_build_warnings" +- case "${enableval}" in ++ enableval=$enable_build_warnings; case "${enableval}" in + yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; + no) if test "${GCC}" = yes ; then + WARN_CFLAGS="-w" +@@ -4271,7 +4815,8 @@ if test "${enable_build_warnings+set}" = + WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";; + *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;; + esac +-fi; ++fi ++ + + if test x"$silent" != x"yes" && test x"$WARN_CFLAGS" != x""; then + echo "Setting warning flags = $WARN_CFLAGS" 6>&1 +@@ -4281,7 +4826,7 @@ fi + + + +- ac_config_headers="$ac_config_headers config.h:config.in" ++ac_config_headers="$ac_config_headers config.h:config.in" + + + if test -z "$target" ; then +@@ -4305,8 +4850,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4319,32 +4864,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}gcc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4357,36 +4904,51 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="gcc" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + else + CC="$ac_cv_prog_CC" + fi + + if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4399,74 +4961,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}cc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi + ++ fi + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4480,7 +5002,7 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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 +@@ -4491,6 +5013,7 @@ do + 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. +@@ -4508,22 +5031,23 @@ fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4536,36 +5060,38 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="$ac_tool_prefix$ac_prog" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CC" && break + done + fi + if test -z "$CC"; then + ac_ct_CC=$CC +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4578,29 +5104,45 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="$ac_prog" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CC" && break + done + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + fi + + fi +@@ -4613,27 +5155,41 @@ See \`config.log' for more details." >&2 + { (exit 1); exit 1; }; } + + # Provide some information about the compiler. +-echo "$as_me:$LINENO:" \ +- "checking for C compiler version" >&5 ++echo "$as_me:$LINENO: checking for C compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } + if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4656,50 +5212,49 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_compiler_gnu=no ++ ac_compiler_gnu=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } + GCC=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CFLAGS=${CFLAGS+set} + ac_save_CFLAGS=$CFLAGS +-CFLAGS="-g" +-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ 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 +@@ -4715,59 +5270,139 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (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 + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_prog_cc_g=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +-echo "${ECHO_T}$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 +-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_stdc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_prog_cc_stdc=no ++ 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 "echo \"\$as_me:$LINENO: $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 ++ 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 ++ 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 "echo \"\$as_me:$LINENO: $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 ++ 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 ++ 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 ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++echo "${ECHO_T}$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 ++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_c89+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_prog_cc_c89=no + ac_save_CC=$CC + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -4801,12 +5436,17 @@ static char *f (char * (*g) (char **, in + /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated +- as 'x'. The following induces an error, until -std1 is added to get ++ as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something +- that's true only with -std1. */ ++ that's true only with -std. */ + int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ + int test (int i, double x); + struct s1 {int (*f) (int a);}; + struct s2 {int (*f) (double a);}; +@@ -4821,205 +5461,57 @@ return f (e, argv, 0) != argv[0] || f + return 0; + } + _ACEOF +-# Don't try gcc -ansi; that turns off useful extensions and +-# breaks some systems' header files. +-# AIX -qlanglvl=ansi +-# Ultrix and OSF/1 -std1 +-# HP-UX 10.20 and later -Ae +-# HP-UX older versions -Aa -D_HPUX_SOURCE +-# SVR4 -Xc -D__EXTENSIONS__ +-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" + do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_stdc=$ac_arg +-break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_c89=$ac_arg + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext ++ ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break + done +-rm -f conftest.$ac_ext conftest.$ac_objext ++rm -f conftest.$ac_ext + CC=$ac_save_CC + + fi +- +-case "x$ac_cv_prog_cc_stdc" in +- x|xno) +- echo "$as_me:$LINENO: result: none needed" >&5 +-echo "${ECHO_T}none needed" >&6 ;; ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { echo "$as_me:$LINENO: result: none needed" >&5 ++echo "${ECHO_T}none needed" >&6; } ;; ++ xno) ++ { echo "$as_me:$LINENO: result: unsupported" >&5 ++echo "${ECHO_T}unsupported" >&6; } ;; + *) +- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 +- CC="$CC $ac_cv_prog_cc_stdc" ;; ++ CC="$CC $ac_cv_prog_cc_c89" ++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + esac + +-# Some people use a C++ compiler to compile C. Since we use `exit', +-# in C++ we need to declare it. In case someone uses the same compiler +-# for both compiling C and C++ we need to have the C++ compiler decide +-# the declaration of exit, since it's the most demanding environment. +-cat >conftest.$ac_ext <<_ACEOF +-#ifndef __cplusplus +- choke me +-#endif +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- for ac_declaration in \ +- '' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-#include +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-continue +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h +-fi +- +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -5039,8 +5531,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + # 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. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } + if test -z "$INSTALL"; then + if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -5062,7 +5554,7 @@ case $as_dir/ in + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ++ 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. +@@ -5081,21 +5573,22 @@ case $as_dir/ in + ;; + esac + done ++IFS=$as_save_IFS + + + 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. We don't cache a +- # path for INSTALL within a source directory, because that will ++ # 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 path is relative. ++ # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi + fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -5110,8 +5603,8 @@ ALL_LINGUAS="fr sv tr es da vi zh_CN" + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5124,32 +5617,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5162,27 +5657,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" + fi + fi + ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB + if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- RANLIB=$ac_ct_RANLIB ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi + else + RANLIB="$ac_cv_prog_RANLIB" + fi +@@ -5192,8 +5701,8 @@ 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 +-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 ++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= +@@ -5227,24 +5736,22 @@ cat >>conftest.$ac_ext <<_ACEOF + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -5253,9 +5760,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -5265,24 +5773,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -5293,6 +5799,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -5310,8 +5817,8 @@ fi + else + ac_cv_prog_CPP=$CPP + fi +-echo "$as_me:$LINENO: result: $CPP" >&5 +-echo "${ECHO_T}$CPP" >&6 ++{ echo "$as_me:$LINENO: result: $CPP" >&5 ++echo "${ECHO_T}$CPP" >&6; } + ac_preproc_ok=false + for ac_c_preproc_warn_flag in '' yes + do +@@ -5334,24 +5841,22 @@ cat >>conftest.$ac_ext <<_ACEOF + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -5360,9 +5865,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -5372,24 +5878,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -5400,6 +5904,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -5422,79 +5927,222 @@ ac_link='$CC -o conftest$ac_exeext $CFLA + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +-echo "$as_me:$LINENO: checking for egrep" >&5 +-echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +-if test "${ac_cv_prog_egrep+set}" = set; then ++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 ++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # Extract the first word of "grep ggrep" to use in msg output ++if test -z "$GREP"; then ++set dummy grep ggrep; ac_prog_name=$2 ++if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if echo a | (grep -E '(a|b)') >/dev/null 2>&1 +- then ac_cv_prog_egrep='grep -E' +- else ac_cv_prog_egrep='egrep' ++ ac_path_GREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in grep ggrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue ++ # Check for GNU ac_path_GREP and select it if it is found. ++ # Check for GNU $ac_path_GREP ++case `"$ac_path_GREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'GREP' >> "conftest.nl" ++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_GREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_GREP="$ac_path_GREP" ++ ac_path_GREP_max=$ac_count + fi +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +-echo "${ECHO_T}$ac_cv_prog_egrep" >&6 +- EGREP=$ac_cv_prog_egrep ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac + + +-echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +-if test "${ac_cv_header_stdc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +-#include +-#include +-#include ++ $ac_path_GREP_found && break 3 ++ done ++done + +-int +-main () +-{ ++done ++IFS=$as_save_IFS + +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_header_stdc=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_header_stdc=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +-if test $ac_cv_header_stdc = yes; then +- # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF ++GREP="$ac_cv_path_GREP" ++if test -z "$GREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_GREP=$GREP ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 ++echo "${ECHO_T}$ac_cv_path_GREP" >&6; } ++ GREP="$ac_cv_path_GREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for egrep" >&5 ++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 ++ then ac_cv_path_EGREP="$GREP -E" ++ else ++ # Extract the first word of "egrep" to use in msg output ++if test -z "$EGREP"; then ++set dummy egrep; ac_prog_name=$2 ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_EGREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in egrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue ++ # Check for GNU ac_path_EGREP and select it if it is found. ++ # Check for GNU $ac_path_EGREP ++case `"$ac_path_EGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'EGREP' >> "conftest.nl" ++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_EGREP="$ac_path_EGREP" ++ ac_path_EGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_EGREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++EGREP="$ac_cv_path_EGREP" ++if test -z "$EGREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_EGREP=$EGREP ++fi ++ ++ ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 ++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } ++ EGREP="$ac_cv_path_EGREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } ++if test "${ac_cv_header_stdc+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++ ++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 "echo \"\$as_me:$LINENO: $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 ++ 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_header_stdc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_stdc=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++if test $ac_cv_header_stdc = yes; then ++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -5546,6 +6194,7 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include ++#include + #if ((' ' & 0x0FF) == 0x020) + # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') + # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +@@ -5565,18 +6214,27 @@ main () + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) +- exit(2); +- exit (0); ++ return 2; ++ return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -5589,12 +6247,14 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) + ac_cv_header_stdc=no + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +-echo "${ECHO_T}$ac_cv_header_stdc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++echo "${ECHO_T}$ac_cv_header_stdc" >&6; } + if test $ac_cv_header_stdc = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -5603,8 +6263,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 ++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } + if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5622,10 +6282,10 @@ main () + #ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; +- const charset x; ++ const charset cs; + /* SunOS 4.1.1 cc rejects this. */ +- char const *const *ccp; +- char **p; ++ char const *const *pcpcc; ++ char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; +@@ -5634,16 +6294,17 @@ main () + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; +- ccp = &g + (g ? g-g : 0); ++ pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ +- ++ccp; +- p = (char**) ccp; +- ccp = (char const *const *) p; ++ ++pcpcc; ++ ppc = (char**) pcpcc; ++ pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; ++ if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; +@@ -5662,7 +6323,9 @@ main () + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; ++ if (!foo) return 0; + } ++ return !cs[0] && !zero.x; + #endif + + ; +@@ -5670,38 +6333,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_c_const=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_c_const=no ++ ac_cv_c_const=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +-echo "${ECHO_T}$ac_cv_c_const" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 ++echo "${ECHO_T}$ac_cv_c_const" >&6; } + if test $ac_cv_c_const = no; then + + cat >>confdefs.h <<\_ACEOF +@@ -5710,8 +6369,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for inline" >&5 +-echo $ECHO_N "checking for inline... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for inline" >&5 ++echo $ECHO_N "checking for inline... $ECHO_C" >&6; } + if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5731,39 +6390,37 @@ $ac_kw foo_t foo () {return 0; } + + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_c_inline=$ac_kw; break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_inline=$ac_kw + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ test "$ac_cv_c_inline" != no && break + done + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +-echo "${ECHO_T}$ac_cv_c_inline" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 ++echo "${ECHO_T}$ac_cv_c_inline" >&6; } + + + case $ac_cv_c_inline in +@@ -5795,9 +6452,9 @@ for ac_header in sys/types.h sys/stat.h + inttypes.h stdint.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -5811,38 +6468,35 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_Header=no" ++ eval "$as_ac_Header=no" + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +@@ -5853,8 +6507,8 @@ fi + done + + +-echo "$as_me:$LINENO: checking for off_t" >&5 +-echo $ECHO_N "checking for off_t... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for off_t" >&5 ++echo $ECHO_N "checking for off_t... $ECHO_C" >&6; } + if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5865,62 +6519,59 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++typedef off_t ac__type_new_; + int + main () + { +-if ((off_t *) 0) ++if ((ac__type_new_ *) 0) + return 0; +-if (sizeof (off_t)) ++if (sizeof (ac__type_new_)) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_type_off_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_off_t=no ++ ac_cv_type_off_t=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +-echo "${ECHO_T}$ac_cv_type_off_t" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 ++echo "${ECHO_T}$ac_cv_type_off_t" >&6; } + if test $ac_cv_type_off_t = yes; then + : + else + + cat >>confdefs.h <<_ACEOF +-#define off_t long ++#define off_t long int + _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for size_t" >&5 +-echo $ECHO_N "checking for size_t... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for size_t" >&5 ++echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } + if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5931,64 +6582,61 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++typedef size_t ac__type_new_; + int + main () + { +-if ((size_t *) 0) ++if ((ac__type_new_ *) 0) + return 0; +-if (sizeof (size_t)) ++if (sizeof (ac__type_new_)) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_type_size_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_size_t=no ++ ac_cv_type_size_t=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +-echo "${ECHO_T}$ac_cv_type_size_t" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 ++echo "${ECHO_T}$ac_cv_type_size_t" >&6; } + if test $ac_cv_type_size_t = yes; then + : + else + + cat >>confdefs.h <<_ACEOF +-#define size_t unsigned ++#define size_t unsigned int + _ACEOF + + fi + + # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works + # for constant arguments. Useless! +-echo "$as_me:$LINENO: checking for working alloca.h" >&5 +-echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for working alloca.h" >&5 ++echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; } + if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6003,44 +6651,42 @@ int + main () + { + char *p = (char *) alloca (2 * sizeof (int)); ++ if (p) return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_working_alloca_h=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_working_alloca_h=no ++ ac_cv_working_alloca_h=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +-echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 ++echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; } + if test $ac_cv_working_alloca_h = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -6049,8 +6695,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for alloca" >&5 +-echo $ECHO_N "checking for alloca... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for alloca" >&5 ++echo $ECHO_N "checking for alloca... $ECHO_C" >&6; } + if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6067,7 +6713,7 @@ cat >>conftest.$ac_ext <<_ACEOF + # include + # define alloca _alloca + # else +-# if HAVE_ALLOCA_H ++# ifdef HAVE_ALLOCA_H + # include + # else + # ifdef _AIX +@@ -6085,44 +6731,42 @@ int + main () + { + char *p = (char *) alloca (1); ++ if (p) return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_func_alloca_works=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_alloca_works=no ++ ac_cv_func_alloca_works=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +-echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 ++echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; } + + if test $ac_cv_func_alloca_works = yes; then + +@@ -6136,15 +6780,15 @@ else + # contain a buggy version. If you still want to use their alloca, + # use ar to extract alloca.o from them instead of compiling alloca.c. + +-ALLOCA=alloca.$ac_objext ++ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + + cat >>confdefs.h <<\_ACEOF + #define C_ALLOCA 1 + _ACEOF + + +-echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +-echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 ++echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; } + if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6154,7 +6798,7 @@ _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#if defined(CRAY) && ! defined(CRAY2) ++#if defined CRAY && ! defined CRAY2 + webecray + #else + wenotbecray +@@ -6170,14 +6814,14 @@ fi + rm -f conftest* + + fi +-echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +-echo "${ECHO_T}$ac_cv_os_cray" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 ++echo "${ECHO_T}$ac_cv_os_cray" >&6; } + if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -6203,68 +6847,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -6277,8 +6913,8 @@ fi + done + fi + +-echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +-echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 ++echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; } + if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6291,6 +6927,7 @@ _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ ++$ac_includes_default + int + find_stack_direction () + { +@@ -6308,17 +6945,26 @@ find_stack_direction () + int + main () + { +- exit (find_stack_direction () < 0); ++ return find_stack_direction () < 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -6331,11 +6977,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) + ac_cv_c_stack_direction=-1 + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +-echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 ++echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; } + + cat >>confdefs.h <<_ACEOF + #define STACK_DIRECTION $ac_cv_c_stack_direction +@@ -6349,18 +6997,19 @@ fi + for ac_header in stdlib.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -6371,41 +7020,37 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -6414,24 +7059,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -6439,9 +7082,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -6465,25 +7109,19 @@ echo "$as_me: WARNING: $ac_header: s + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -6499,9 +7137,9 @@ done + for ac_func in getpagesize + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -6527,68 +7165,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -6597,8 +7227,8 @@ _ACEOF + fi + done + +-echo "$as_me:$LINENO: checking for working mmap" >&5 +-echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for working mmap" >&5 ++echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; } + if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6640,21 +7270,21 @@ $ac_includes_default + #include + #include + +-#if !STDC_HEADERS && !HAVE_STDLIB_H ++#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H + char *malloc (); + #endif + + /* This mess was copied from the GNU getpagesize.h. */ +-#if !HAVE_GETPAGESIZE ++#ifndef HAVE_GETPAGESIZE + /* Assume that all systems that can run configure have sys/param.h. */ +-# if !HAVE_SYS_PARAM_H ++# ifndef HAVE_SYS_PARAM_H + # define HAVE_SYS_PARAM_H 1 + # endif + + # ifdef _SC_PAGESIZE + # define getpagesize() sysconf(_SC_PAGESIZE) + # else /* no _SC_PAGESIZE */ +-# if HAVE_SYS_PARAM_H ++# ifdef HAVE_SYS_PARAM_H + # include + # ifdef EXEC_PAGESIZE + # define getpagesize() EXEC_PAGESIZE +@@ -6693,15 +7323,15 @@ main () + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) +- exit (1); ++ return 1; + if (write (fd, data, pagesize) != pagesize) +- exit (1); ++ return 1; + close (fd); + + /* Next, try to mmap the file at a fixed address which already has +@@ -6709,17 +7339,17 @@ main () + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) +- exit (1); ++ return 1; + data2 = (char *) malloc (2 * pagesize); + if (!data2) +- exit (1); +- data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); ++ return 1; ++ data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) +- exit (1); ++ return 1; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on +@@ -6728,24 +7358,33 @@ main () + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) +- exit (1); ++ return 1; + if (read (fd, data3, pagesize) != pagesize) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) +- exit (1); ++ return 1; + close (fd); +- exit (0); ++ return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -6758,11 +7397,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) + ac_cv_func_mmap_fixed_mapped=no + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +-echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 ++echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; } + if test $ac_cv_func_mmap_fixed_mapped = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -6786,18 +7427,19 @@ for ac_header in argz.h limits.h locale. + unistd.h values.h sys/param.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -6808,41 +7450,37 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -6851,24 +7489,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -6876,9 +7512,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -6902,25 +7539,19 @@ echo "$as_me: WARNING: $ac_header: s + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -6946,9 +7577,9 @@ for ac_func in getcwd munmap putenv sete + __argz_count __argz_stringify __argz_next + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -6974,68 +7605,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -7050,9 +7673,9 @@ done + for ac_func in stpcpy + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -7078,68 +7701,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -7158,8 +7773,8 @@ _ACEOF + fi + + if test $ac_cv_header_locale_h = yes; then +- echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +-echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 ++echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6; } + if test "${am_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7179,39 +7794,36 @@ return LC_MESSAGES + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + am_cv_val_LC_MESSAGES=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-am_cv_val_LC_MESSAGES=no ++ am_cv_val_LC_MESSAGES=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +-echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 ++{ echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 ++echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6; } + if test $am_cv_val_LC_MESSAGES = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -7220,34 +7832,34 @@ _ACEOF + + fi + fi +- echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 +- # Check whether --enable-nls or --disable-nls was given. ++ { echo "$as_me:$LINENO: checking whether NLS is requested" >&5 ++echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; } ++ # Check whether --enable-nls was given. + if test "${enable_nls+set}" = set; then +- enableval="$enable_nls" +- USE_NLS=$enableval ++ enableval=$enable_nls; USE_NLS=$enableval + else + USE_NLS=yes +-fi; +- echo "$as_me:$LINENO: result: $USE_NLS" >&5 +-echo "${ECHO_T}$USE_NLS" >&6 ++fi ++ ++ { echo "$as_me:$LINENO: result: $USE_NLS" >&5 ++echo "${ECHO_T}$USE_NLS" >&6; } + + + USE_INCLUDED_LIBINTL=no + + if test "$USE_NLS" = "yes"; then +- echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 +-echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 ++echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6; } + +-# Check whether --with-included-gettext or --without-included-gettext was given. ++# Check whether --with-included-gettext was given. + if test "${with_included_gettext+set}" = set; then +- withval="$with_included_gettext" +- nls_cv_force_use_gnu_gettext=$withval ++ withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval + else + nls_cv_force_use_gnu_gettext=no +-fi; +- echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 +-echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 ++fi ++ ++ { echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 ++echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6; } + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then +@@ -7256,17 +7868,17 @@ echo "${ECHO_T}$nls_cv_force_use_gnu_get + CATOBJEXT= + + if test "${ac_cv_header_libintl_h+set}" = set; then +- echo "$as_me:$LINENO: checking for libintl.h" >&5 +-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for libintl.h" >&5 ++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; } + if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 ++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking libintl.h usability" >&5 +-echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking libintl.h usability" >&5 ++echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -7277,41 +7889,37 @@ $ac_includes_default + #include + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking libintl.h presence" >&5 +-echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking libintl.h presence" >&5 ++echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -7320,24 +7928,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -7345,9 +7951,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -7371,30 +7978,23 @@ echo "$as_me: WARNING: libintl.h: se + echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for libintl.h" >&5 +-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for libintl.h" >&5 ++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; } + if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_cv_header_libintl_h=$ac_header_preproc + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 ++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; } + + fi + if test $ac_cv_header_libintl_h = yes; then +- echo "$as_me:$LINENO: checking for gettext in libc" >&5 +-echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for gettext in libc" >&5 ++echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6; } + if test "${gt_cv_func_gettext_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7414,43 +8014,40 @@ return (int) gettext ("") + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + gt_cv_func_gettext_libc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-gt_cv_func_gettext_libc=no ++ gt_cv_func_gettext_libc=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5 +-echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6 ++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5 ++echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6; } + + if test "$gt_cv_func_gettext_libc" != "yes"; then +- echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5 +-echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5 ++echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6; } + if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7463,59 +8060,56 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char bindtextdomain (); + int + main () + { +-bindtextdomain (); ++return bindtextdomain (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_intl_bindtextdomain=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_intl_bindtextdomain=no ++ ac_cv_lib_intl_bindtextdomain=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5 +-echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5 ++echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6; } + if test $ac_cv_lib_intl_bindtextdomain = yes; then +- echo "$as_me:$LINENO: checking for gettext in libintl" >&5 +-echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for gettext in libintl" >&5 ++echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6; } + if test "${gt_cv_func_gettext_libintl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7535,39 +8129,36 @@ return (int) gettext ("") + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + gt_cv_func_gettext_libintl=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-gt_cv_func_gettext_libintl=no ++ gt_cv_func_gettext_libintl=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5 +-echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6 ++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5 ++echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6; } + fi + + fi +@@ -7581,8 +8172,8 @@ _ACEOF + + # Extract the first word of "msgfmt", so it can be a program name with args. + set dummy msgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7608,20 +8199,20 @@ esac + fi + MSGFMT="$ac_cv_path_MSGFMT" + if test -n "$MSGFMT"; then +- echo "$as_me:$LINENO: result: $MSGFMT" >&5 +-echo "${ECHO_T}$MSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5 ++echo "${ECHO_T}$MSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + if test "$MSGFMT" != "no"; then + + for ac_func in dcgettext + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -7647,68 +8238,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -7719,8 +8302,8 @@ done + + # Extract the first word of "gmsgfmt", so it can be a program name with args. + set dummy gmsgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7735,32 +8318,33 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; + esac + fi + GMSGFMT=$ac_cv_path_GMSGFMT +- + if test -n "$GMSGFMT"; then +- echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +-echo "${ECHO_T}$GMSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5 ++echo "${ECHO_T}$GMSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + # Extract the first word of "xgettext", so it can be a program name with args. + set dummy xgettext; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7786,11 +8370,11 @@ esac + fi + XGETTEXT="$ac_cv_path_XGETTEXT" + if test -n "$XGETTEXT"; then +- echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +-echo "${ECHO_T}$XGETTEXT" >&6 ++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5 ++echo "${ECHO_T}$XGETTEXT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + cat >conftest.$ac_ext <<_ACEOF +@@ -7810,37 +8394,34 @@ extern int _nl_msg_cat_cntr; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + CATOBJEXT=.gmo + DATADIRNAME=share + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-CATOBJEXT=.mo ++ CATOBJEXT=.mo + DATADIRNAME=lib + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + INSTOBJEXT=.mo + fi +@@ -7862,8 +8443,8 @@ fi + INTLOBJS="\$(GETTOBJS)" + # Extract the first word of "msgfmt", so it can be a program name with args. + set dummy msgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7889,17 +8470,17 @@ esac + fi + MSGFMT="$ac_cv_path_MSGFMT" + if test -n "$MSGFMT"; then +- echo "$as_me:$LINENO: result: $MSGFMT" >&5 +-echo "${ECHO_T}$MSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5 ++echo "${ECHO_T}$MSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. + set dummy gmsgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7914,32 +8495,33 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; + esac + fi + GMSGFMT=$ac_cv_path_GMSGFMT +- + if test -n "$GMSGFMT"; then +- echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +-echo "${ECHO_T}$GMSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5 ++echo "${ECHO_T}$GMSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + # Extract the first word of "xgettext", so it can be a program name with args. + set dummy xgettext; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7965,11 +8547,11 @@ esac + fi + XGETTEXT="$ac_cv_path_XGETTEXT" + if test -n "$XGETTEXT"; then +- echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +-echo "${ECHO_T}$XGETTEXT" >&6 ++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5 ++echo "${ECHO_T}$XGETTEXT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + +@@ -7988,8 +8570,8 @@ fi + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else +- echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5 +-echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6 ++ { echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5 ++echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6; } + XGETTEXT=":" + fi + fi +@@ -8038,8 +8620,8 @@ _ACEOF + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else +- echo "$as_me:$LINENO: checking for catalogs to be installed" >&5 +-echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for catalogs to be installed" >&5 ++echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6; } + NEW_LINGUAS= + for lang in ${LINGUAS=$ALL_LINGUAS}; do + case "$ALL_LINGUAS" in +@@ -8047,8 +8629,8 @@ echo $ECHO_N "checking for catalogs to b + esac + done + LINGUAS=$NEW_LINGUAS +- echo "$as_me:$LINENO: result: $LINGUAS" >&5 +-echo "${ECHO_T}$LINGUAS" >&6 ++ { echo "$as_me:$LINENO: result: $LINGUAS" >&5 ++echo "${ECHO_T}$LINGUAS" >&6; } + fi + + if test -n "$LINGUAS"; then +@@ -8067,17 +8649,17 @@ echo "${ECHO_T}$LINGUAS" >&6 + if test -f $srcdir/po2tbl.sed.in; then + if test "$CATOBJEXT" = ".cat"; then + if test "${ac_cv_header_linux_version_h+set}" = set; then +- echo "$as_me:$LINENO: checking for linux/version.h" >&5 +-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for linux/version.h" >&5 ++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; } + if test "${ac_cv_header_linux_version_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 +-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking linux/version.h usability" >&5 +-echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking linux/version.h usability" >&5 ++echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8088,41 +8670,37 @@ $ac_includes_default + #include + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking linux/version.h presence" >&5 +-echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking linux/version.h presence" >&5 ++echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8131,24 +8709,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -8156,9 +8732,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -8182,25 +8759,18 @@ echo "$as_me: WARNING: linux/version.h: + echo "$as_me: WARNING: linux/version.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: linux/version.h: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: linux/version.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for linux/version.h" >&5 +-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for linux/version.h" >&5 ++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; } + if test "${ac_cv_header_linux_version_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_cv_header_linux_version_h=$ac_header_preproc + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 +-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; } + + fi + if test $ac_cv_header_linux_version_h = yes; then +@@ -8256,8 +8826,8 @@ for ac_prog in 'bison -y' byacc + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_YACC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8270,25 +8840,27 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_YACC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + YACC=$ac_cv_prog_YACC + if test -n "$YACC"; then +- echo "$as_me:$LINENO: result: $YACC" >&5 +-echo "${ECHO_T}$YACC" >&6 ++ { echo "$as_me:$LINENO: result: $YACC" >&5 ++echo "${ECHO_T}$YACC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$YACC" && break + done + test -n "$YACC" || YACC="yacc" +@@ -8297,8 +8869,8 @@ for ac_prog in flex lex + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_LEX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8311,253 +8883,182 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LEX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + LEX=$ac_cv_prog_LEX + if test -n "$LEX"; then +- echo "$as_me:$LINENO: result: $LEX" >&5 +-echo "${ECHO_T}$LEX" >&6 ++ { echo "$as_me:$LINENO: result: $LEX" >&5 ++echo "${ECHO_T}$LEX" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$LEX" && break + done + test -n "$LEX" || LEX=":" + +-if test -z "$LEXLIB" +-then +- echo "$as_me:$LINENO: checking for yywrap in -lfl" >&5 +-echo $ECHO_N "checking for yywrap in -lfl... $ECHO_C" >&6 +-if test "${ac_cv_lib_fl_yywrap+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lfl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" ++if test "x$LEX" != "x:"; then ++ cat >conftest.l <<_ACEOF ++%% ++a { ECHO; } ++b { REJECT; } ++c { yymore (); } ++d { yyless (1); } ++e { yyless (input () != 0); } ++f { unput (yytext[0]); } ++. { BEGIN INITIAL; } ++%% ++#ifdef YYTEXT_POINTER ++extern char *yytext; + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char yywrap (); + int +-main () ++main (void) + { +-yywrap (); +- ; +- return 0; ++ return ! yylex () + ! yywrap (); + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++{ (ac_try="$LEX conftest.l" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$LEX conftest.l") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_fl_yywrap=yes ++ (exit $ac_status); } ++{ echo "$as_me:$LINENO: checking lex output file root" >&5 ++echo $ECHO_N "checking lex output file root... $ECHO_C" >&6; } ++if test "${ac_cv_prog_lex_root+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_fl_yywrap=no ++if test -f lex.yy.c; then ++ ac_cv_prog_lex_root=lex.yy ++elif test -f lexyy.c; then ++ ac_cv_prog_lex_root=lexyy ++else ++ { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 ++echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} ++ { (exit 1); exit 1; }; } + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_fl_yywrap" >&5 +-echo "${ECHO_T}$ac_cv_lib_fl_yywrap" >&6 +-if test $ac_cv_lib_fl_yywrap = yes; then +- LEXLIB="-lfl" +-else +- echo "$as_me:$LINENO: checking for yywrap in -ll" >&5 +-echo $ECHO_N "checking for yywrap in -ll... $ECHO_C" >&6 +-if test "${ac_cv_lib_l_yywrap+set}" = set; then ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 ++echo "${ECHO_T}$ac_cv_prog_lex_root" >&6; } ++LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root ++ ++if test -z "${LEXLIB+set}"; then ++ { echo "$as_me:$LINENO: checking lex library" >&5 ++echo $ECHO_N "checking lex library... $ECHO_C" >&6; } ++if test "${ac_cv_lib_lex+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ll $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char yywrap (); +-int +-main () +-{ +-yywrap (); +- ; +- return 0; +-} ++ ac_save_LIBS=$LIBS ++ ac_cv_lib_lex='none needed' ++ for ac_lib in '' -lfl -ll; do ++ LIBS="$ac_lib $ac_save_LIBS" ++ cat >conftest.$ac_ext <<_ACEOF ++`cat $LEX_OUTPUT_ROOT.c` + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_l_yywrap=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_lex=$ac_lib + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_l_yywrap=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_l_yywrap" >&5 +-echo "${ECHO_T}$ac_cv_lib_l_yywrap" >&6 +-if test $ac_cv_lib_l_yywrap = yes; then +- LEXLIB="-ll" +-fi + + fi + +-fi ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ test "$ac_cv_lib_lex" != 'none needed' && break ++ done ++ LIBS=$ac_save_LIBS + +-if test "x$LEX" != "x:"; then +- echo "$as_me:$LINENO: checking lex output file root" >&5 +-echo $ECHO_N "checking lex output file root... $ECHO_C" >&6 +-if test "${ac_cv_prog_lex_root+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- # The minimal lex program is just a single line: %%. But some broken lexes +-# (Solaris, I think it was) want two %% lines, so accommodate them. +-cat >conftest.l <<_ACEOF +-%% +-%% +-_ACEOF +-{ (eval echo "$as_me:$LINENO: \"$LEX conftest.l\"") >&5 +- (eval $LEX conftest.l) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +-if test -f lex.yy.c; then +- ac_cv_prog_lex_root=lex.yy +-elif test -f lexyy.c; then +- ac_cv_prog_lex_root=lexyy +-else +- { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 +-echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} +- { (exit 1); exit 1; }; } + fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5 ++echo "${ECHO_T}$ac_cv_lib_lex" >&6; } ++ test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex + fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 +-echo "${ECHO_T}$ac_cv_prog_lex_root" >&6 +-rm -f conftest.l +-LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root + +-echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 +-echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6 ++ ++{ echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 ++echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6; } + if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + # POSIX says lex can declare yytext either as a pointer or an array; the +-# default is implementation-dependent. Figure out which it is, since ++# default is implementation-dependent. Figure out which it is, since + # not all implementations provide the %pointer and %array declarations. + ac_cv_prog_lex_yytext_pointer=no +-echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c + ac_save_LIBS=$LIBS +-LIBS="$LIBS $LEXLIB" ++LIBS="$LEXLIB $ac_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF ++#define YYTEXT_POINTER 1 + `cat $LEX_OUTPUT_ROOT.c` + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_prog_lex_yytext_pointer=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_save_LIBS +-rm -f "${LEX_OUTPUT_ROOT}.c" + + fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 +-echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 ++echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6; } + if test $ac_cv_prog_lex_yytext_pointer = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -8565,23 +9066,24 @@ cat >>confdefs.h <<\_ACEOF + _ACEOF + + fi ++rm -f conftest.l $LEX_OUTPUT_ROOT.c + + fi + if test "$LEX" = :; then + LEX=${am_missing_run}flex + fi + +-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 +- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. ++{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 ++echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; } ++ # Check whether --enable-maintainer-mode was given. + if test "${enable_maintainer_mode+set}" = set; then +- enableval="$enable_maintainer_mode" +- USE_MAINTAINER_MODE=$enableval ++ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval + else + USE_MAINTAINER_MODE=no +-fi; +- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 ++fi ++ ++ { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 ++echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; } + + + if test $USE_MAINTAINER_MODE = yes; then +@@ -8611,18 +9113,19 @@ fi + for ac_header in string.h strings.h stdlib.h unistd.h elf-hints.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8633,41 +9136,37 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8676,24 +9175,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -8701,9 +9198,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -8727,25 +9225,19 @@ echo "$as_me: WARNING: $ac_header: s + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -8763,9 +9255,9 @@ done + for ac_func in sbrk realpath glob + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -8791,68 +9283,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -8869,9 +9353,9 @@ done + ac_header_dirent=no + for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 +-echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 ++echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -8893,38 +9377,35 @@ return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_Header=no" ++ eval "$as_ac_Header=no" + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +@@ -8936,13 +9417,12 @@ fi + done + # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. + if test $ac_header_dirent = dirent.h; then +- echo "$as_me:$LINENO: checking for library containing opendir" >&5 +-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for library containing opendir" >&5 ++echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } + if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_func_search_save_LIBS=$LIBS +-ac_cv_search_opendir=no + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8950,126 +9430,83 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char opendir (); + int + main () + { +-opendir (); ++return opendir (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++for ac_lib in '' dir; do ++ if test -z "$ac_lib"; then ++ ac_res="none required" ++ else ++ ac_res=-l$ac_lib ++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" ++ fi ++ rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_opendir="none required" ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_search_opendir=$ac_res + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-if test "$ac_cv_search_opendir" = no; then +- for ac_lib in dir; do +- LIBS="-l$ac_lib $ac_func_search_save_LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char opendir (); +-int +-main () +-{ +-opendir (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_opendir="-l$ac_lib" +-break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext ++ if test "${ac_cv_search_opendir+set}" = set; then ++ break + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- done ++done ++if test "${ac_cv_search_opendir+set}" = set; then ++ : ++else ++ ac_cv_search_opendir=no + fi ++rm conftest.$ac_ext + LIBS=$ac_func_search_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +-echo "${ECHO_T}$ac_cv_search_opendir" >&6 +-if test "$ac_cv_search_opendir" != no; then +- test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" ++{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 ++echo "${ECHO_T}$ac_cv_search_opendir" >&6; } ++ac_res=$ac_cv_search_opendir ++if test "$ac_res" != no; then ++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + fi + + else +- echo "$as_me:$LINENO: checking for library containing opendir" >&5 +-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for library containing opendir" >&5 ++echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } + if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_func_search_save_LIBS=$LIBS +-ac_cv_search_opendir=no + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -9077,123 +9514,81 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char opendir (); + int + main () + { +-opendir (); ++return opendir (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++for ac_lib in '' x; do ++ if test -z "$ac_lib"; then ++ ac_res="none required" ++ else ++ ac_res=-l$ac_lib ++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" ++ fi ++ rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_opendir="none required" ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_search_opendir=$ac_res + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-if test "$ac_cv_search_opendir" = no; then +- for ac_lib in x; do +- LIBS="-l$ac_lib $ac_func_search_save_LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char opendir (); +-int +-main () +-{ +-opendir (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_opendir="-l$ac_lib" +-break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++fi + ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext ++ if test "${ac_cv_search_opendir+set}" = set; then ++ break + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- done ++done ++if test "${ac_cv_search_opendir+set}" = set; then ++ : ++else ++ ac_cv_search_opendir=no + fi ++rm conftest.$ac_ext + LIBS=$ac_func_search_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +-echo "${ECHO_T}$ac_cv_search_opendir" >&6 +-if test "$ac_cv_search_opendir" != no; then +- test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" ++{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 ++echo "${ECHO_T}$ac_cv_search_opendir" >&6; } ++ac_res=$ac_cv_search_opendir ++if test "$ac_res" != no; then ++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + fi + + fi + + +-echo "$as_me:$LINENO: checking for a known getopt prototype in unistd.h" >&5 +-echo $ECHO_N "checking for a known getopt prototype in unistd.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a known getopt prototype in unistd.h" >&5 ++echo $ECHO_N "checking for a known getopt prototype in unistd.h... $ECHO_C" >&6; } + if test "${ld_cv_decl_getopt_unistd_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9213,39 +9608,35 @@ extern int getopt (int, char *const*, co + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ld_cv_decl_getopt_unistd_h=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ld_cv_decl_getopt_unistd_h=no ++ ld_cv_decl_getopt_unistd_h=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + +-echo "$as_me:$LINENO: result: $ld_cv_decl_getopt_unistd_h" >&5 +-echo "${ECHO_T}$ld_cv_decl_getopt_unistd_h" >&6 ++{ echo "$as_me:$LINENO: result: $ld_cv_decl_getopt_unistd_h" >&5 ++echo "${ECHO_T}$ld_cv_decl_getopt_unistd_h" >&6; } + if test $ld_cv_decl_getopt_unistd_h = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -9264,8 +9655,8 @@ _ACEOF + ;; + esac + +-echo "$as_me:$LINENO: checking whether strstr is declared" >&5 +-echo $ECHO_N "checking whether strstr is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether strstr is declared" >&5 ++echo $ECHO_N "checking whether strstr is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_strstr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9280,7 +9671,7 @@ int + main () + { + #ifndef strstr +- char *p = (char *) strstr; ++ (void) strstr; + #endif + + ; +@@ -9288,38 +9679,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_strstr=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_strstr=no ++ ac_cv_have_decl_strstr=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_strstr" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_strstr" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strstr" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_strstr" >&6; } + if test $ac_cv_have_decl_strstr = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -9334,8 +9721,8 @@ _ACEOF + + + fi +-echo "$as_me:$LINENO: checking whether free is declared" >&5 +-echo $ECHO_N "checking whether free is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether free is declared" >&5 ++echo $ECHO_N "checking whether free is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_free+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9350,7 +9737,7 @@ int + main () + { + #ifndef free +- char *p = (char *) free; ++ (void) free; + #endif + + ; +@@ -9358,38 +9745,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_free=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_free=no ++ ac_cv_have_decl_free=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_free" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_free" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_free" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_free" >&6; } + if test $ac_cv_have_decl_free = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -9404,8 +9787,8 @@ _ACEOF + + + fi +-echo "$as_me:$LINENO: checking whether sbrk is declared" >&5 +-echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether sbrk is declared" >&5 ++echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_sbrk+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9420,7 +9803,7 @@ int + main () + { + #ifndef sbrk +- char *p = (char *) sbrk; ++ (void) sbrk; + #endif + + ; +@@ -9428,38 +9811,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_sbrk=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_sbrk=no ++ ac_cv_have_decl_sbrk=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6; } + if test $ac_cv_have_decl_sbrk = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -9474,8 +9853,8 @@ _ACEOF + + + fi +-echo "$as_me:$LINENO: checking whether getenv is declared" >&5 +-echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether getenv is declared" >&5 ++echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_getenv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9490,7 +9869,7 @@ int + main () + { + #ifndef getenv +- char *p = (char *) getenv; ++ (void) getenv; + #endif + + ; +@@ -9498,38 +9877,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_getenv=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_getenv=no ++ ac_cv_have_decl_getenv=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6; } + if test $ac_cv_have_decl_getenv = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -9544,8 +9919,8 @@ _ACEOF + + + fi +-echo "$as_me:$LINENO: checking whether environ is declared" >&5 +-echo $ECHO_N "checking whether environ is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether environ is declared" >&5 ++echo $ECHO_N "checking whether environ is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_environ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9560,7 +9935,7 @@ int + main () + { + #ifndef environ +- char *p = (char *) environ; ++ (void) environ; + #endif + + ; +@@ -9568,38 +9943,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_environ=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_environ=no ++ ac_cv_have_decl_environ=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_environ" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_environ" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_environ" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_environ" >&6; } + if test $ac_cv_have_decl_environ = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -9623,8 +9994,8 @@ fi + # broken Microsoft MSVC compiler, which limits the length of string + # constants, while still supporting pre-ANSI compilers which do not + # support string concatenation. +-echo "$as_me:$LINENO: checking whether ANSI C string concatenation works" >&5 +-echo $ECHO_N "checking whether ANSI C string concatenation works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether ANSI C string concatenation works" >&5 ++echo $ECHO_N "checking whether ANSI C string concatenation works... $ECHO_C" >&6; } + if test "${ld_cv_string_concatenation+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9644,39 +10015,35 @@ char *a = "a" "a"; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ld_cv_string_concatenation=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ld_cv_string_concatenation=no ++ ld_cv_string_concatenation=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + +-echo "$as_me:$LINENO: result: $ld_cv_string_concatenation" >&5 +-echo "${ECHO_T}$ld_cv_string_concatenation" >&6 ++{ echo "$as_me:$LINENO: result: $ld_cv_string_concatenation" >&5 ++echo "${ECHO_T}$ld_cv_string_concatenation" >&6; } + if test "$ld_cv_string_concatenation" = "yes"; then + STRINGIFY=astring.sed + else +@@ -9801,8 +10168,10 @@ fi + + + +- ac_config_files="$ac_config_files Makefile po/Makefile.in:po/Make-in" +- ac_config_commands="$ac_config_commands default" ++ac_config_files="$ac_config_files Makefile po/Makefile.in:po/Make-in" ++ ++ac_config_commands="$ac_config_commands default" ++ + 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 +@@ -9821,39 +10190,58 @@ _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, don't put newlines in cache variables' values. ++# 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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ + (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ 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 \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} | ++ esac | ++ sort ++) | + sed ' ++ /^ac_cv_env_/b end + t clear +- : clear ++ :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end +- /^ac_cv_env/!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" && echo "updating cache $cache_file" ++ 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" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else +- echo "not updating unwritable cache $cache_file" ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi + fi + rm -f confcache +@@ -9862,32 +10250,18 @@ test "x$prefix" = xNONE && prefix=$ac_de + # Let make expand exec_prefix. + test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +-# 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 +- + DEFS=-DHAVE_CONFIG_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_i=`echo "$ac_i" | +- sed 's/\$U\././;s/\.o$//;s/\.obj$//'` +- # 2. Add them. +- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" +- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' ++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ++ ac_i=`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 + +@@ -9939,17 +10313,45 @@ cat >>$CONFIG_STATUS <<\_ACEOF + ## M4sh Initialization. ## + ## --------------------- ## + +-# Be Bourne compatible ++# 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=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix ++ 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 ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh + fi +-DUALCASE=1; export DUALCASE # for MKS sh + + # Support unset when possible. + if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +@@ -9959,8 +10361,43 @@ else + 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.) ++as_nl=' ++' ++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 ++ 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. +-$as_unset ENV MAIL MAILPATH ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done + PS1='$ ' + PS2='> ' + PS4='+ ' +@@ -9974,18 +10411,19 @@ do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else +- $as_unset $as_var ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi + done + + # Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then ++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 ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename + else + as_basename=false +@@ -9993,159 +10431,120 @@ fi + + + # Name of the executable. +-as_me=`$as_basename "$0" || ++as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- +- +-# PATH needs CR, and LINENO needs CR and PATH. +-# 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 ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh +-fi ++# CDPATH. ++$as_unset CDPATH + + +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- 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 + +- ;; +- 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 +- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') +- 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=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in +- /*) +- if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac ++ 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 before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. ++ # 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 +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | ++ # 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 +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, ++ s/-\n.*// + ' >$as_me.lineno && +- chmod +x $as_me.lineno || +- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} ++ chmod +x "$as_me.lineno" || ++ { 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 sensible to this). +- . ./$as_me.lineno ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" + # Exit status is that of the last command. + exit + } + + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; ++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; then ++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 ++fi + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links ++ 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' +- else +- as_ln_s='ln -s' +- fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +-rm -f conf$$ conf$$.exe conf$$.file ++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=: +@@ -10154,7 +10553,28 @@ else + as_mkdir_p=false + fi + +-as_executable_p="test -f" ++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'" +@@ -10163,31 +10583,14 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P + as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH +- + exec 6>&1 + +-# Open the log real soon, to keep \$[0] and so on meaningful, and to ++# 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. Logging --version etc. is OK. +-exec 5>>config.log +-{ +- echo +- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +-## Running $as_me. ## +-_ASBOX +-} >&5 +-cat >&5 <<_CSEOF +- ++# values after options handling. ++ac_log=" + This file was extended by $as_me, which was +-generated by GNU Autoconf 2.59. Invocation command line was ++generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS +@@ -10195,30 +10598,20 @@ generated by GNU Autoconf 2.59. Invocat + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +-_CSEOF +-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +-echo >&5 ++on `(hostname || uname -n) 2>/dev/null | sed 1q` ++" ++ + _ACEOF + ++cat >>$CONFIG_STATUS <<_ACEOF + # Files that config.status was made for. +-if test -n "$ac_config_files"; then +- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_headers"; then +- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_links"; then +- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +-fi ++config_files="$ac_config_files" ++config_headers="$ac_config_headers" ++config_commands="$ac_config_commands" + +-if test -n "$ac_config_commands"; then +- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +-fi ++_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF +- + ac_cs_usage="\ + \`$as_me' instantiates files from templates according to the + current configuration. +@@ -10226,7 +10619,7 @@ current configuration. + Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit +- -V, --version print version number, then exit ++ -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions +@@ -10245,19 +10638,21 @@ Configuration commands: + $config_commands + + Report bugs to ." +-_ACEOF + ++_ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + ac_cs_version="\\ + config.status +-configured by $0, generated by GNU Autoconf 2.59, +- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ++configured by $0, generated by GNU Autoconf 2.61, ++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +-Copyright (C) 2003 Free Software Foundation, Inc. ++Copyright (C) 2006 Free Software Foundation, Inc. + This config.status script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it." +-srcdir=$srcdir +-INSTALL="$INSTALL" ++ ++ac_pwd='$ac_pwd' ++srcdir='$srcdir' ++INSTALL='$INSTALL' + _ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF +@@ -10268,39 +10663,24 @@ while test $# != 0 + do + case $1 in + --*=*) +- ac_option=`expr "x$1" : 'x\([^=]*\)='` +- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; +- -*) ++ *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; +- *) # This is not an option, so the user has probably given explicit +- # arguments. +- ac_option=$1 +- ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; +- --version | --vers* | -V ) +- echo "$ac_cs_version"; exit 0 ;; +- --he | --h) +- # Conflict between --help and --header +- { { echo "$as_me:$LINENO: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; };; +- --help | --hel | -h ) +- echo "$ac_cs_usage"; exit 0 ;; +- --debug | --d* | -d ) ++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) ++ echo "$ac_cs_version"; exit ;; ++ --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift +@@ -10310,18 +10690,24 @@ Try \`$0 --help' for more information." + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; ++ --he | --h) ++ # Conflict between --help and --header ++ { echo "$as_me: error: ambiguous option: $1 ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; };; ++ --help | --hel | -h ) ++ 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. +- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&2;} ++ -*) { 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_config_targets="$ac_config_targets $1" ++ ac_need_defaults=false ;; + + esac + shift +@@ -10337,39 +10723,51 @@ fi + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + if \$ac_cs_recheck; then +- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 +- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 ++ CONFIG_SHELL=$SHELL ++ export CONFIG_SHELL ++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + fi + + _ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF ++exec 5>>config.log ++{ ++ echo ++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ++## Running $as_me. ## ++_ASBOX ++ echo "$ac_log" ++} >&5 + ++_ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + # +-# INIT-COMMANDS section. ++# INIT-COMMANDS + # +- + AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + _ACEOF + +- +- + cat >>$CONFIG_STATUS <<\_ACEOF ++ ++# Handling of arguments. + for ac_config_target in $ac_config_targets + do +- case "$ac_config_target" in +- # Handling of arguments. +- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; +- "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;; +- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; +- "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; +- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;; ++ case $ac_config_target in ++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; ++ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;; ++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; ++ "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;; ++ "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; ++ + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 + 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 +@@ -10381,640 +10779,634 @@ if $ac_need_defaults; then + fi + + # Have a temporary directory for convenience. Make it in the build tree +-# simply because there is no reason to put it here, and in addition, ++# simply because there is no reason against having it here, and in addition, + # creating and moving files from /tmp can sometimes cause problems. +-# Create a temporary directory, and hook for its removal unless debugging. ++# 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 || + { +- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 ++ 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 -q "./confstatXXXXXX") 2>/dev/null` && ++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" + } || + { +- tmp=./confstat$$-$RANDOM +- (umask 077 && mkdir $tmp) ++ tmp=./conf$$-$RANDOM ++ (umask 077 && mkdir "$tmp") + } || + { + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } + } + +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +- + # +-# CONFIG_FILES section. ++# Set up the sed scripts for CONFIG_FILES section. + # + + # No need to generate the scripts if there are no CONFIG_FILES. + # This happens for instance when ./config.status config.h +-if test -n "\$CONFIG_FILES"; then +- # Protect against being on the right side of a sed subst in config.status. +- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; +- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +-s,@SHELL@,$SHELL,;t t +-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +-s,@exec_prefix@,$exec_prefix,;t t +-s,@prefix@,$prefix,;t t +-s,@program_transform_name@,$program_transform_name,;t t +-s,@bindir@,$bindir,;t t +-s,@sbindir@,$sbindir,;t t +-s,@libexecdir@,$libexecdir,;t t +-s,@datadir@,$datadir,;t t +-s,@sysconfdir@,$sysconfdir,;t t +-s,@sharedstatedir@,$sharedstatedir,;t t +-s,@localstatedir@,$localstatedir,;t t +-s,@libdir@,$libdir,;t t +-s,@includedir@,$includedir,;t t +-s,@oldincludedir@,$oldincludedir,;t t +-s,@infodir@,$infodir,;t t +-s,@mandir@,$mandir,;t t +-s,@build_alias@,$build_alias,;t t +-s,@host_alias@,$host_alias,;t t +-s,@target_alias@,$target_alias,;t t +-s,@DEFS@,$DEFS,;t t +-s,@ECHO_C@,$ECHO_C,;t t +-s,@ECHO_N@,$ECHO_N,;t t +-s,@ECHO_T@,$ECHO_T,;t t +-s,@LIBS@,$LIBS,;t t +-s,@build@,$build,;t t +-s,@build_cpu@,$build_cpu,;t t +-s,@build_vendor@,$build_vendor,;t t +-s,@build_os@,$build_os,;t t +-s,@host@,$host,;t t +-s,@host_cpu@,$host_cpu,;t t +-s,@host_vendor@,$host_vendor,;t t +-s,@host_os@,$host_os,;t t +-s,@target@,$target,;t t +-s,@target_cpu@,$target_cpu,;t t +-s,@target_vendor@,$target_vendor,;t t +-s,@target_os@,$target_os,;t t +-s,@CC@,$CC,;t t +-s,@CFLAGS@,$CFLAGS,;t t +-s,@LDFLAGS@,$LDFLAGS,;t t +-s,@CPPFLAGS@,$CPPFLAGS,;t t +-s,@ac_ct_CC@,$ac_ct_CC,;t t +-s,@EXEEXT@,$EXEEXT,;t t +-s,@OBJEXT@,$OBJEXT,;t t +-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +-s,@INSTALL_DATA@,$INSTALL_DATA,;t t +-s,@CYGPATH_W@,$CYGPATH_W,;t t +-s,@PACKAGE@,$PACKAGE,;t t +-s,@VERSION@,$VERSION,;t t +-s,@ACLOCAL@,$ACLOCAL,;t t +-s,@AUTOCONF@,$AUTOCONF,;t t +-s,@AUTOMAKE@,$AUTOMAKE,;t t +-s,@AUTOHEADER@,$AUTOHEADER,;t t +-s,@MAKEINFO@,$MAKEINFO,;t t +-s,@install_sh@,$install_sh,;t t +-s,@STRIP@,$STRIP,;t t +-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +-s,@mkdir_p@,$mkdir_p,;t t +-s,@AWK@,$AWK,;t t +-s,@SET_MAKE@,$SET_MAKE,;t t +-s,@am__leading_dot@,$am__leading_dot,;t t +-s,@AMTAR@,$AMTAR,;t t +-s,@am__tar@,$am__tar,;t t +-s,@am__untar@,$am__untar,;t t +-s,@DEPDIR@,$DEPDIR,;t t +-s,@am__include@,$am__include,;t t +-s,@am__quote@,$am__quote,;t t +-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +-s,@CCDEPMODE@,$CCDEPMODE,;t t +-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +-s,@LN_S@,$LN_S,;t t +-s,@RANLIB@,$RANLIB,;t t +-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +-s,@LIBTOOL@,$LIBTOOL,;t t +-s,@use_sysroot@,$use_sysroot,;t t +-s,@TARGET_SYSTEM_ROOT@,$TARGET_SYSTEM_ROOT,;t t +-s,@TARGET_SYSTEM_ROOT_DEFINE@,$TARGET_SYSTEM_ROOT_DEFINE,;t t +-s,@WARN_CFLAGS@,$WARN_CFLAGS,;t t +-s,@NO_WERROR@,$NO_WERROR,;t t +-s,@CPP@,$CPP,;t t +-s,@EGREP@,$EGREP,;t t +-s,@ALLOCA@,$ALLOCA,;t t +-s,@USE_NLS@,$USE_NLS,;t t +-s,@MSGFMT@,$MSGFMT,;t t +-s,@GMSGFMT@,$GMSGFMT,;t t +-s,@XGETTEXT@,$XGETTEXT,;t t +-s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t +-s,@CATALOGS@,$CATALOGS,;t t +-s,@CATOBJEXT@,$CATOBJEXT,;t t +-s,@DATADIRNAME@,$DATADIRNAME,;t t +-s,@GMOFILES@,$GMOFILES,;t t +-s,@INSTOBJEXT@,$INSTOBJEXT,;t t +-s,@INTLDEPS@,$INTLDEPS,;t t +-s,@INTLLIBS@,$INTLLIBS,;t t +-s,@INTLOBJS@,$INTLOBJS,;t t +-s,@POFILES@,$POFILES,;t t +-s,@POSUB@,$POSUB,;t t +-s,@INCLUDE_LOCALE_H@,$INCLUDE_LOCALE_H,;t t +-s,@GT_NO@,$GT_NO,;t t +-s,@GT_YES@,$GT_YES,;t t +-s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +-s,@l@,$l,;t t +-s,@YACC@,$YACC,;t t +-s,@LEX@,$LEX,;t t +-s,@LEXLIB@,$LEXLIB,;t t +-s,@LEX_OUTPUT_ROOT@,$LEX_OUTPUT_ROOT,;t t +-s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +-s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +-s,@MAINT@,$MAINT,;t t +-s,@HDEFINES@,$HDEFINES,;t t +-s,@HOSTING_CRT0@,$HOSTING_CRT0,;t t +-s,@HOSTING_LIBS@,$HOSTING_LIBS,;t t +-s,@NATIVE_LIB_DIRS@,$NATIVE_LIB_DIRS,;t t +-s,@STRINGIFY@,$STRINGIFY,;t t +-s,@EMUL@,$EMUL,;t t +-s,@EMULATION_OFILES@,$EMULATION_OFILES,;t t +-s,@EMUL_EXTRA_OFILES@,$EMUL_EXTRA_OFILES,;t t +-s,@LIB_PATH@,$LIB_PATH,;t t +-s,@EMULATION_LIBPATH@,$EMULATION_LIBPATH,;t t +-s,@TESTBFDLIB@,$TESTBFDLIB,;t t +-s,@datarootdir@,$datarootdir,;t t +-s,@docdir@,$docdir,;t t +-s,@htmldir@,$htmldir,;t t +-s,@LIBOBJS@,$LIBOBJS,;t t +-s,@LTLIBOBJS@,$LTLIBOBJS,;t t +-/@TDIRS@/r $TDIRS +-s,@TDIRS@,,;t t +-CEOF +- +-_ACEOF +- +- cat >>$CONFIG_STATUS <<\_ACEOF +- # Split the substitutions into bite-sized pieces for seds with +- # small command number limits, like on Digital OSF/1 and HP-UX. +- ac_max_sed_lines=48 +- ac_sed_frag=1 # Number of current file. +- ac_beg=1 # First line for current file. +- ac_end=$ac_max_sed_lines # Line after last line for current file. +- ac_more_lines=: +- ac_sed_cmds= +- while $ac_more_lines; do +- if test $ac_beg -gt 1; then +- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- else +- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- fi +- if test ! -s $tmp/subs.frag; then +- ac_more_lines=false +- else +- # The purpose of the label and of the branching condition is to +- # speed up the sed processing (if there are no `@' at all, there +- # is no need to browse any of the substitutions). +- # These are the two extra sed commands mentioned above. +- (echo ':t +- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" +- else +- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" +- fi +- ac_sed_frag=`expr $ac_sed_frag + 1` +- ac_beg=$ac_end +- ac_end=`expr $ac_end + $ac_max_sed_lines` +- fi +- done +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds=cat ++if test -n "$CONFIG_FILES"; then ++ ++_ACEOF ++ ++# Create sed commands to just substitute file output variables. ++ ++# Remaining file output variables are in a fragment that also has non-file ++# output varibles. ++ ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++SHELL!$SHELL$ac_delim ++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim ++PACKAGE_NAME!$PACKAGE_NAME$ac_delim ++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim ++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim ++PACKAGE_STRING!$PACKAGE_STRING$ac_delim ++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim ++exec_prefix!$exec_prefix$ac_delim ++prefix!$prefix$ac_delim ++program_transform_name!$program_transform_name$ac_delim ++bindir!$bindir$ac_delim ++sbindir!$sbindir$ac_delim ++libexecdir!$libexecdir$ac_delim ++datarootdir!$datarootdir$ac_delim ++datadir!$datadir$ac_delim ++sysconfdir!$sysconfdir$ac_delim ++sharedstatedir!$sharedstatedir$ac_delim ++localstatedir!$localstatedir$ac_delim ++includedir!$includedir$ac_delim ++oldincludedir!$oldincludedir$ac_delim ++docdir!$docdir$ac_delim ++infodir!$infodir$ac_delim ++htmldir!$htmldir$ac_delim ++dvidir!$dvidir$ac_delim ++pdfdir!$pdfdir$ac_delim ++psdir!$psdir$ac_delim ++libdir!$libdir$ac_delim ++localedir!$localedir$ac_delim ++mandir!$mandir$ac_delim ++DEFS!$DEFS$ac_delim ++ECHO_C!$ECHO_C$ac_delim ++ECHO_N!$ECHO_N$ac_delim ++ECHO_T!$ECHO_T$ac_delim ++LIBS!$LIBS$ac_delim ++build_alias!$build_alias$ac_delim ++host_alias!$host_alias$ac_delim ++target_alias!$target_alias$ac_delim ++build!$build$ac_delim ++build_cpu!$build_cpu$ac_delim ++build_vendor!$build_vendor$ac_delim ++build_os!$build_os$ac_delim ++host!$host$ac_delim ++host_cpu!$host_cpu$ac_delim ++host_vendor!$host_vendor$ac_delim ++host_os!$host_os$ac_delim ++target!$target$ac_delim ++target_cpu!$target_cpu$ac_delim ++target_vendor!$target_vendor$ac_delim ++target_os!$target_os$ac_delim ++CC!$CC$ac_delim ++CFLAGS!$CFLAGS$ac_delim ++LDFLAGS!$LDFLAGS$ac_delim ++CPPFLAGS!$CPPFLAGS$ac_delim ++ac_ct_CC!$ac_ct_CC$ac_delim ++EXEEXT!$EXEEXT$ac_delim ++OBJEXT!$OBJEXT$ac_delim ++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim ++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim ++INSTALL_DATA!$INSTALL_DATA$ac_delim ++CYGPATH_W!$CYGPATH_W$ac_delim ++PACKAGE!$PACKAGE$ac_delim ++VERSION!$VERSION$ac_delim ++ACLOCAL!$ACLOCAL$ac_delim ++AUTOCONF!$AUTOCONF$ac_delim ++AUTOMAKE!$AUTOMAKE$ac_delim ++AUTOHEADER!$AUTOHEADER$ac_delim ++MAKEINFO!$MAKEINFO$ac_delim ++install_sh!$install_sh$ac_delim ++STRIP!$STRIP$ac_delim ++INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim ++mkdir_p!$mkdir_p$ac_delim ++AWK!$AWK$ac_delim ++SET_MAKE!$SET_MAKE$ac_delim ++am__leading_dot!$am__leading_dot$ac_delim ++AMTAR!$AMTAR$ac_delim ++am__tar!$am__tar$ac_delim ++am__untar!$am__untar$ac_delim ++DEPDIR!$DEPDIR$ac_delim ++am__include!$am__include$ac_delim ++am__quote!$am__quote$ac_delim ++AMDEP_TRUE!$AMDEP_TRUE$ac_delim ++AMDEP_FALSE!$AMDEP_FALSE$ac_delim ++AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim ++CCDEPMODE!$CCDEPMODE$ac_delim ++am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim ++am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim ++LN_S!$LN_S$ac_delim ++RANLIB!$RANLIB$ac_delim ++LIBTOOL!$LIBTOOL$ac_delim ++use_sysroot!$use_sysroot$ac_delim ++TARGET_SYSTEM_ROOT!$TARGET_SYSTEM_ROOT$ac_delim ++TARGET_SYSTEM_ROOT_DEFINE!$TARGET_SYSTEM_ROOT_DEFINE$ac_delim ++WARN_CFLAGS!$WARN_CFLAGS$ac_delim ++NO_WERROR!$NO_WERROR$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 94; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +-fi # test -n "$CONFIG_FILES" ++done ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++/^[ ]*@TDIRS@[ ]*$/{ ++r $TDIRS ++d ++} ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++CEOF$ac_eof ++_ACEOF ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++CPP!$CPP$ac_delim ++GREP!$GREP$ac_delim ++EGREP!$EGREP$ac_delim ++ALLOCA!$ALLOCA$ac_delim ++USE_NLS!$USE_NLS$ac_delim ++MSGFMT!$MSGFMT$ac_delim ++GMSGFMT!$GMSGFMT$ac_delim ++XGETTEXT!$XGETTEXT$ac_delim ++USE_INCLUDED_LIBINTL!$USE_INCLUDED_LIBINTL$ac_delim ++CATALOGS!$CATALOGS$ac_delim ++CATOBJEXT!$CATOBJEXT$ac_delim ++DATADIRNAME!$DATADIRNAME$ac_delim ++GMOFILES!$GMOFILES$ac_delim ++INSTOBJEXT!$INSTOBJEXT$ac_delim ++INTLDEPS!$INTLDEPS$ac_delim ++INTLLIBS!$INTLLIBS$ac_delim ++INTLOBJS!$INTLOBJS$ac_delim ++POFILES!$POFILES$ac_delim ++POSUB!$POSUB$ac_delim ++INCLUDE_LOCALE_H!$INCLUDE_LOCALE_H$ac_delim ++GT_NO!$GT_NO$ac_delim ++GT_YES!$GT_YES$ac_delim ++MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim ++l!$l$ac_delim ++YACC!$YACC$ac_delim ++YFLAGS!$YFLAGS$ac_delim ++LEX!$LEX$ac_delim ++LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim ++LEXLIB!$LEXLIB$ac_delim ++MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim ++MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim ++MAINT!$MAINT$ac_delim ++HDEFINES!$HDEFINES$ac_delim ++HOSTING_CRT0!$HOSTING_CRT0$ac_delim ++HOSTING_LIBS!$HOSTING_LIBS$ac_delim ++NATIVE_LIB_DIRS!$NATIVE_LIB_DIRS$ac_delim ++STRINGIFY!$STRINGIFY$ac_delim ++EMUL!$EMUL$ac_delim ++EMULATION_OFILES!$EMULATION_OFILES$ac_delim ++EMUL_EXTRA_OFILES!$EMUL_EXTRA_OFILES$ac_delim ++LIB_PATH!$LIB_PATH$ac_delim ++EMULATION_LIBPATH!$EMULATION_LIBPATH$ac_delim ++TESTBFDLIB!$TESTBFDLIB$ac_delim ++LIBOBJS!$LIBOBJS$ac_delim ++LTLIBOBJS!$LTLIBOBJS$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 45; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++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 ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi + ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++:end ++s/|#_!!_#|//g ++CEOF$ac_eof + _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 +-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". +- case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; ++fi # test -n "$CONFIG_FILES" ++ ++ ++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS ++do ++ case $ac_tag in ++ :[FHLC]) ac_mode=$ac_tag; continue;; ++ esac ++ case $ac_mode$ac_tag in ++ :[FHL]*:*);; ++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 ++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 || ++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 ++echo "$as_me: error: cannot find input file: $ac_f" >&2;} ++ { (exit 1); exit 1; }; };; ++ 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 "`IFS=: ++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." ++ if test x"$ac_file" != x-; then ++ configure_input="$ac_file. $configure_input" ++ { echo "$as_me:$LINENO: creating $ac_file" >&5 ++echo "$as_me: creating $ac_file" >&6;} ++ fi ++ ++ case $ac_tag in ++ *:-:* | *:-) cat >"$tmp/stdin";; ++ esac ++ ;; + esac + +- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. +- ac_dir=`(dirname "$ac_file") 2>/dev/null || ++ 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 || ++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || + echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" ++ 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 test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`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 || ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || + echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ 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 ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } +- + ac_builddir=. + +-if test "$ac_dir" != .; then ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`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 +- .) # No --srcdir option. We are building in place. ++ .) # We are building in place. + ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. ++ 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 ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac ++ 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 + +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac + ++ case $ac_mode in ++ :F) ++ # ++ # CONFIG_FILE ++ # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; +- *) ac_INSTALL=$ac_top_builddir$INSTALL ;; ++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac ++_ACEOF + +- if test x"$ac_file" != x-; then +- { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- rm -f "$ac_file" +- fi +- # 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. */ +- if test x"$ac_file" = x-; then +- configure_input= +- else +- configure_input="$ac_file. " +- fi +- configure_input=$configure_input"Generated from `echo $ac_file_in | +- sed 's,.*/,,'` by configure." +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- echo "$f";; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo "$f" +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo "$srcdir/$f" +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } ++cat >>$CONFIG_STATUS <<\_ACEOF ++# 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= ++ ++case `sed -n '/datarootdir/ { ++ p ++ q ++} ++/@datadir@/p ++/@docdir@/p ++/@infodir@/p ++/@localedir@/p ++/@mandir@/p ++' $ac_file_inputs` in ++*datarootdir*) ac_datarootdir_seen=yes;; ++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) ++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF ++ 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 + sed "$ac_vpsub + $extrasub + _ACEOF + cat >>$CONFIG_STATUS <<\_ACEOF + :t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b +-s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t +-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +-s,@INSTALL@,$ac_INSTALL,;t t +-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out +- rm -f $tmp/stdin +- if test x"$ac_file" != x-; then +- mv $tmp/out $ac_file +- else +- cat $tmp/out +- rm -f $tmp/out +- fi +- +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-# +-# CONFIG_HEADER section. +-# +- +-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +-# NAME is the cpp macro being defined and VALUE is the value it is being given. +-# +-# ac_d sets the value in "#define NAME VALUE" lines. +-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +-ac_dB='[ ].*$,\1#\2' +-ac_dC=' ' +-ac_dD=',;t' +-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +-ac_uB='$,\1#\2define\3' +-ac_uC=' ' +-ac_uD=',;t' ++s&@configure_input@&$configure_input&;t t ++s&@top_builddir@&$ac_top_builddir_sub&;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 ++$ac_datarootdir_hack ++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out ++ ++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"; } && ++ { 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 ++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;} + +-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". ++ rm -f "$tmp/stdin" + case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; ++ -) cat "$tmp/out"; rm -f "$tmp/out";; ++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac ++ ;; ++ :H) ++ # ++ # CONFIG_HEADER ++ # ++_ACEOF ++ ++# Transform confdefs.h into a sed script `conftest.defines', that ++# substitutes the proper values into config.h.in to produce config.h. ++rm -f conftest.defines conftest.tail ++# First, append a space to every undef/define line, to ease matching. ++echo 's/$/ /' >conftest.defines ++# Then, protect against being on the right side of a sed subst, or in ++# an unquoted here document, in config.status. If some macros were ++# called several times there might be several #defines for the same ++# symbol, which is useless. But do not sort them, since the last ++# AC_DEFINE must be honored. ++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* ++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where ++# NAME is the cpp macro being defined, VALUE is the value it is being given. ++# PARAMS is the parameter list in the macro definition--in most cases, it's ++# just an empty string. ++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' ++ac_dB='\\)[ (].*,\\1define\\2' ++ac_dC=' ' ++ac_dD=' ,' + +- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- # Do quote $f, to prevent DOS paths from being IFS'd. +- echo "$f";; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo "$f" +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo "$srcdir/$f" +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } +- # Remove the trailing spaces. +- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in +- +-_ACEOF +- +-# Transform confdefs.h into two sed scripts, `conftest.defines' and +-# `conftest.undefs', that substitutes the proper values into +-# config.h.in to produce config.h. The first handles `#define' +-# templates, and the second `#undef' templates. +-# And first: Protect against being on the right side of a sed subst in +-# config.status. Protect against being in an unquoted here document +-# in config.status. +-rm -f conftest.defines conftest.undefs +-# Using a here document instead of a string reduces the quoting nightmare. +-# Putting comments in sed scripts is not portable. +-# +-# `end' is used to avoid that the second main sed command (meant for +-# 0-ary CPP macros) applies to n-ary macro definitions. +-# See the Autoconf documentation for `clear'. +-cat >confdef2sed.sed <<\_ACEOF +-s/[\\&,]/\\&/g +-s,[\\$`],\\&,g +-t clear +-: clear +-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +-t end +-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +-: end +-_ACEOF +-# If some macros were called several times there might be several times +-# the same #defines, which is useless. Nevertheless, we may not want to +-# sort them, since we want the *last* AC-DEFINE to be honored. +-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +-rm -f confdef2sed.sed ++uniq confdefs.h | ++ sed -n ' ++ t rset ++ :rset ++ s/^[ ]*#[ ]*define[ ][ ]*// ++ t ok ++ d ++ :ok ++ s/[\\&,]/\\&/g ++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p ++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ++ ' >>conftest.defines + +-# This sed command replaces #undef with comments. This is necessary, for ++# Remove the space that was appended to ease matching. ++# Then replace #undef with comments. This is necessary, for + # example, in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. +-cat >>conftest.undefs <<\_ACEOF +-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, ++# (The regexp can be short, since the line contains either #define or #undef.) ++echo 's/ $// ++s,^[ #]*u.*,/* & */,' >>conftest.defines ++ ++# Break up conftest.defines: ++ac_max_sed_lines=50 ++ ++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" ++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" ++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" ++# et cetera. ++ac_in='$ac_file_inputs' ++ac_out='"$tmp/out1"' ++ac_nxt='"$tmp/out2"' ++ ++while : ++do ++ # Write a here document: ++ cat >>$CONFIG_STATUS <<_ACEOF ++ # First, check the format of the line: ++ cat >"\$tmp/defines.sed" <<\\CEOF ++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def ++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def ++b ++:def + _ACEOF +- +-# Break up conftest.defines because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +-echo ' :' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.defines >/dev/null +-do +- # Write a limited-size here document to $tmp/defines.sed. +- echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#define' lines. +- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS ++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF +- sed -f $tmp/defines.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail ++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS ++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in ++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail ++ grep . conftest.tail >/dev/null || break + rm -f conftest.defines + mv conftest.tail conftest.defines + done +-rm -f conftest.defines +-echo ' fi # grep' >>$CONFIG_STATUS +-echo >>$CONFIG_STATUS +- +-# Break up conftest.undefs because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.undefs >/dev/null +-do +- # Write a limited-size here document to $tmp/undefs.sed. +- echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#undef' +- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS +- echo 'CEOF +- sed -f $tmp/undefs.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail +- rm -f conftest.undefs +- mv conftest.tail conftest.undefs +-done +-rm -f conftest.undefs ++rm -f conftest.defines conftest.tail + ++echo "ac_result=$ac_in" >>$CONFIG_STATUS + cat >>$CONFIG_STATUS <<\_ACEOF +- # 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. */ +- if test x"$ac_file" = x-; then +- echo "/* Generated by configure. */" >$tmp/config.h +- else +- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h +- fi +- cat $tmp/in >>$tmp/config.h +- rm -f $tmp/in + if test x"$ac_file" != x-; then +- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then ++ echo "/* $configure_input */" >"$tmp/config.h" ++ cat "$ac_result" >>"$tmp/config.h" ++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 + echo "$as_me: $ac_file is unchanged" >&6;} + else +- ac_dir=`(dirname "$ac_file") 2>/dev/null || +-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_file" : 'X\(//\)[^/]' \| \ +- X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } +- + rm -f $ac_file +- mv $tmp/config.h $ac_file ++ mv "$tmp/config.h" $ac_file + fi + else +- cat $tmp/config.h +- rm -f $tmp/config.h ++ echo "/* $configure_input */" ++ cat "$ac_result" + fi ++ rm -f "$tmp/out12" + # Compute $ac_file's index in $config_headers. + _am_stamp_count=1 + for _am_header in $config_headers :; do +@@ -11025,135 +11417,39 @@ for _am_header in $config_headers :; do + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac + done +-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || ++echo "timestamp for $ac_file" >`$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 || ++ X$ac_file : 'X\(/\)' \| . 2>/dev/null || + echo X$ac_file | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'`/stamp-h$_am_stamp_count +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-# +-# CONFIG_COMMANDS section. +-# +-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue +- ac_dest=`echo "$ac_file" | sed 's,:.*,,'` +- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_dir=`(dirname "$ac_dest") 2>/dev/null || +-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_dest" : 'X\(//\)[^/]' \| \ +- X"$ac_dest" : 'X\(//\)$' \| \ +- X"$ac_dest" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_dest" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } +- +- ac_builddir=. +- +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi +- +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'`/stamp-h$_am_stamp_count ++ ;; + +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac ++ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 ++echo "$as_me: executing $ac_file commands" >&6;} ++ ;; ++ esac + + +- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +-echo "$as_me: executing $ac_dest commands" >&6;} +- case $ac_dest in +- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do ++ case $ac_file$ac_mode in ++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; 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. +@@ -11163,18 +11459,29 @@ echo "$as_me: executing $ac_dest command + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then +- dirpart=`(dirname "$mf") 2>/dev/null || ++ dirpart=`$as_dirname -- "$mf" || + $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ +- X"$mf" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$mf" : 'X\(/\)' \| . 2>/dev/null || + echo X"$mf" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + else + continue + fi +@@ -11196,54 +11503,80 @@ echo X"$mf" | + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue +- fdir=`(dirname "$file") 2>/dev/null || ++ fdir=`$as_dirname -- "$file" || + $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ +- X"$file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$file" : 'X\(/\)' \| . 2>/dev/null || + echo X"$file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p $dirpart/$fdir +- else +- as_dir=$dirpart/$fdir ++ 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 test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`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 || ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || + echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ 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 ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } +- + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done + ;; +- default ) sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile ;; ++ "default":C) sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile ;; ++ + esac +-done +-_ACEOF ++done # for ac_tag + +-cat >>$CONFIG_STATUS <<\_ACEOF + + { (exit 0); exit 0; } + _ACEOF +diff -Nrup binutils-2.17/ld/configure.tgt binutils-2.17.atmel.1.3.0/ld/configure.tgt +--- binutils-2.17/ld/configure.tgt 2006-04-05 14:41:57.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/ld/configure.tgt 2007-05-31 17:03:35.000000000 +0200 +@@ -81,8 +81,10 @@ xscale-*-coff) targ_emul=armcoff ;; + xscale-*-elf) targ_emul=armelf + ;; + avr-*-*) targ_emul=avr2 +- targ_extra_emuls="avr1 avr3 avr4 avr5" +- ;; ++ targ_extra_emuls="avr1 avr3 avr4 avr5" ;; ++avr32-*-none) targ_emul=avr32elf_ap7000 ++ targ_extra_emuls="avr32elf_uc3a0128 avr32elf_uc3a0256 avr32elf_uc3a0512 avr32elf_uc3a1128 avr32elf_uc3a1256 avr32elf_uc3a1512 avr32elf_uc3b064 avr32elf_uc3b0128 avr32elf_uc3b0256 avr32elf_uc3b164 avr32elf_uc3b1128 avr32elf_uc3b1256" ;; ++avr32-*-linux*) targ_emul=avr32linux ;; + bfin-*-elf) targ_emul=elf32bfin; targ_extra_emuls="elf32bfinfd" ;; + bfin-*-uclinux*) targ_emul=elf32bfin; targ_extra_emuls="elf32bfinfd" ;; + cr16c-*-elf*) targ_emul=elf32cr16c +diff -Nrup binutils-2.17/ld/emulparams/avr32elf_ap7000.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_ap7000.sh +--- binutils-2.17/ld/emulparams/avr32elf_ap7000.sh 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_ap7000.sh 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,35 @@ ++MACHINE=ap ++SCRIPT_NAME=elf_xip ++TEMPLATE_NAME=elf32 ++EXTRA_EM_FILE=avr32elf ++OUTPUT_FORMAT="elf32-avr32" ++ARCH=avr32 ++MAXPAGESIZE=4096 ++ENTRY=_start ++EMBEDDED=yes ++NO_SMALL_DATA=yes ++NOP=0xd703d703 ++ ++TEXT_START_ADDR=0xa0000000 ++DATA_SEGMENT_ALIGN=8 ++BSS_ALIGNMENT=8 ++ ++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH ++ . = . & 0x9fffffff;" ++ ++MEMORY="MEMORY ++ { ++ FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 0x4000000 ++ SRAM (rwxa) : ORIGIN = 0x24000000, LENGTH = 0x8000 ++ }" ++RO_LMA_REGION="FLASH" ++RO_VMA_REGION="FLASH" ++RW_LMA_REGION="FLASH" ++RW_VMA_REGION="SRAM" ++ ++STACK_SIZE=0x1000 ++STACK_ADDR="ORIGIN(SRAM) + LENGTH(SRAM) - ${STACK_SIZE}" ++ ++DATA_SEGMENT_END="__heap_start__ = ALIGN(8); ++ . = ${STACK_ADDR}; ++ __heap_end__ = .;" +diff -Nrup binutils-2.17/ld/emulparams/avr32elf.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf.sh +--- binutils-2.17/ld/emulparams/avr32elf.sh 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf.sh 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,25 @@ ++MACHINE= ++SCRIPT_NAME=elf ++TEMPLATE_NAME=elf32 ++EXTRA_EM_FILE=avr32elf ++OUTPUT_FORMAT="elf32-avr32" ++TEXT_START_ADDR=0xa0000000 ++ARCH=avr32 ++MAXPAGESIZE=0x4 ++ENTRY=_start ++EMBEDDED=yes ++NOP=0xd703d703 ++INITIAL_READONLY_SECTIONS=".reset : AT(0x0) { *(.reset) } ++ . = . & 0x9fffffff;" ++DATA_START_SYMBOLS="__data_init_start__ = .; ++ __data_init_end__ = .; ++ __data_start__ = .;" ++ ++OTHER_BSS_SYMBOLS='__bss_start__ = .;' ++OTHER_BSS_END_SYMBOLS="_bss_end__ = . ; __bss_end__ = . ; __end__ = . ; ++ . = ALIGN(16); ++ __heap_start__ = .; ++ __heap_end__ = 0x82000000;" ++ ++STACK_ADDR=0x82000000 ++ +diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3a0128.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a0128.sh +--- binutils-2.17/ld/emulparams/avr32elf_uc3a0128.sh 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a0128.sh 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,40 @@ ++MACHINE=uc ++SCRIPT_NAME=elf_xip ++TEMPLATE_NAME=elf32 ++EXTRA_EM_FILE=avr32elf ++OUTPUT_FORMAT="elf32-avr32" ++ARCH=avr32 ++MAXPAGESIZE=4096 ++ENTRY=_start ++EMBEDDED=yes ++NO_SMALL_DATA=yes ++NOP=0xd703d703 ++ ++TEXT_START_ADDR=0x80000000 ++DATA_SEGMENT_ALIGN=8 ++BSS_ALIGNMENT=8 ++ ++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH" ++ ++MEMORY="MEMORY ++ { ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x20000 ++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x8000 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200 ++ }" ++RO_LMA_REGION="FLASH" ++RO_VMA_REGION="FLASH" ++RW_LMA_REGION="FLASH" ++RW_VMA_REGION="INTRAM" ++ ++STACK_SIZE=0x1000 ++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}" ++ ++DATA_SEGMENT_END="__heap_start__ = ALIGN(8); ++ . = ${STACK_ADDR}; ++ __heap_end__ = .;" ++ ++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE ++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE" ++ +\ No newline at end of file +diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3a0256.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a0256.sh +--- binutils-2.17/ld/emulparams/avr32elf_uc3a0256.sh 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a0256.sh 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,39 @@ ++MACHINE=uc ++SCRIPT_NAME=elf_xip ++TEMPLATE_NAME=elf32 ++EXTRA_EM_FILE=avr32elf ++OUTPUT_FORMAT="elf32-avr32" ++ARCH=avr32 ++MAXPAGESIZE=4096 ++ENTRY=_start ++EMBEDDED=yes ++NO_SMALL_DATA=yes ++NOP=0xd703d703 ++ ++TEXT_START_ADDR=0x80000000 ++DATA_SEGMENT_ALIGN=8 ++BSS_ALIGNMENT=8 ++ ++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH" ++ ++MEMORY="MEMORY ++ { ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x40000 ++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x10000 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200 ++ }" ++RO_LMA_REGION="FLASH" ++RO_VMA_REGION="FLASH" ++RW_LMA_REGION="FLASH" ++RW_VMA_REGION="INTRAM" ++ ++STACK_SIZE=0x1000 ++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}" ++ ++DATA_SEGMENT_END="__heap_start__ = ALIGN(8); ++ . = ${STACK_ADDR}; ++ __heap_end__ = .;" ++ ++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE ++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE" +diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3a0512.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a0512.sh +--- binutils-2.17/ld/emulparams/avr32elf_uc3a0512.sh 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a0512.sh 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,39 @@ ++MACHINE=uc ++SCRIPT_NAME=elf_xip ++TEMPLATE_NAME=elf32 ++EXTRA_EM_FILE=avr32elf ++OUTPUT_FORMAT="elf32-avr32" ++ARCH=avr32 ++MAXPAGESIZE=4096 ++ENTRY=_start ++EMBEDDED=yes ++NO_SMALL_DATA=yes ++NOP=0xd703d703 ++ ++TEXT_START_ADDR=0x80000000 ++DATA_SEGMENT_ALIGN=8 ++BSS_ALIGNMENT=8 ++ ++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH" ++ ++MEMORY="MEMORY ++ { ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x80000 ++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x10000 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200 ++ }" ++RO_LMA_REGION="FLASH" ++RO_VMA_REGION="FLASH" ++RW_LMA_REGION="FLASH" ++RW_VMA_REGION="INTRAM" ++ ++STACK_SIZE=0x1000 ++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}" ++ ++DATA_SEGMENT_END="__heap_start__ = ALIGN(8); ++ . = ${STACK_ADDR}; ++ __heap_end__ = .;" ++ ++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE ++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE" +diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3a1128.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a1128.sh +--- binutils-2.17/ld/emulparams/avr32elf_uc3a1128.sh 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a1128.sh 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,39 @@ ++MACHINE=uc ++SCRIPT_NAME=elf_xip ++TEMPLATE_NAME=elf32 ++EXTRA_EM_FILE=avr32elf ++OUTPUT_FORMAT="elf32-avr32" ++ARCH=avr32 ++MAXPAGESIZE=4096 ++ENTRY=_start ++EMBEDDED=yes ++NO_SMALL_DATA=yes ++NOP=0xd703d703 ++ ++TEXT_START_ADDR=0x80000000 ++DATA_SEGMENT_ALIGN=8 ++BSS_ALIGNMENT=8 ++ ++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH" ++ ++MEMORY="MEMORY ++ { ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x20000 ++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x8000 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200 ++ }" ++RO_LMA_REGION="FLASH" ++RO_VMA_REGION="FLASH" ++RW_LMA_REGION="FLASH" ++RW_VMA_REGION="INTRAM" ++ ++STACK_SIZE=0x1000 ++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}" ++ ++DATA_SEGMENT_END="__heap_start__ = ALIGN(8); ++ . = ${STACK_ADDR}; ++ __heap_end__ = .;" ++ ++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE ++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE" +diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3a1256.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a1256.sh +--- binutils-2.17/ld/emulparams/avr32elf_uc3a1256.sh 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a1256.sh 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,39 @@ ++MACHINE=uc ++SCRIPT_NAME=elf_xip ++TEMPLATE_NAME=elf32 ++EXTRA_EM_FILE=avr32elf ++OUTPUT_FORMAT="elf32-avr32" ++ARCH=avr32 ++MAXPAGESIZE=4096 ++ENTRY=_start ++EMBEDDED=yes ++NO_SMALL_DATA=yes ++NOP=0xd703d703 ++ ++TEXT_START_ADDR=0x80000000 ++DATA_SEGMENT_ALIGN=8 ++BSS_ALIGNMENT=8 ++ ++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH" ++ ++MEMORY="MEMORY ++ { ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x40000 ++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x10000 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200 ++ }" ++RO_LMA_REGION="FLASH" ++RO_VMA_REGION="FLASH" ++RW_LMA_REGION="FLASH" ++RW_VMA_REGION="INTRAM" ++ ++STACK_SIZE=0x1000 ++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}" ++ ++DATA_SEGMENT_END="__heap_start__ = ALIGN(8); ++ . = ${STACK_ADDR}; ++ __heap_end__ = .;" ++ ++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE ++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE" +diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3a1512.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a1512.sh +--- binutils-2.17/ld/emulparams/avr32elf_uc3a1512.sh 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3a1512.sh 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,39 @@ ++MACHINE=uc ++SCRIPT_NAME=elf_xip ++TEMPLATE_NAME=elf32 ++EXTRA_EM_FILE=avr32elf ++OUTPUT_FORMAT="elf32-avr32" ++ARCH=avr32 ++MAXPAGESIZE=4096 ++ENTRY=_start ++EMBEDDED=yes ++NO_SMALL_DATA=yes ++NOP=0xd703d703 ++ ++TEXT_START_ADDR=0x80000000 ++DATA_SEGMENT_ALIGN=8 ++BSS_ALIGNMENT=8 ++ ++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH" ++ ++MEMORY="MEMORY ++ { ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x80000 ++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x10000 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200 ++ }" ++RO_LMA_REGION="FLASH" ++RO_VMA_REGION="FLASH" ++RW_LMA_REGION="FLASH" ++RW_VMA_REGION="INTRAM" ++ ++STACK_SIZE=0x1000 ++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}" ++ ++DATA_SEGMENT_END="__heap_start__ = ALIGN(8); ++ . = ${STACK_ADDR}; ++ __heap_end__ = .;" ++ ++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE ++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE" +diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3b0128.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b0128.sh +--- binutils-2.17/ld/emulparams/avr32elf_uc3b0128.sh 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b0128.sh 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,39 @@ ++MACHINE=uc ++SCRIPT_NAME=elf_xip ++TEMPLATE_NAME=elf32 ++EXTRA_EM_FILE=avr32elf ++OUTPUT_FORMAT="elf32-avr32" ++ARCH=avr32 ++MAXPAGESIZE=4096 ++ENTRY=_start ++EMBEDDED=yes ++NO_SMALL_DATA=yes ++NOP=0xd703d703 ++ ++TEXT_START_ADDR=0x80000000 ++DATA_SEGMENT_ALIGN=8 ++BSS_ALIGNMENT=8 ++ ++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH" ++ ++MEMORY="MEMORY ++ { ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x20000 ++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x8000 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200 ++ }" ++RO_LMA_REGION="FLASH" ++RO_VMA_REGION="FLASH" ++RW_LMA_REGION="FLASH" ++RW_VMA_REGION="INTRAM" ++ ++STACK_SIZE=0x1000 ++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}" ++ ++DATA_SEGMENT_END="__heap_start__ = ALIGN(8); ++ . = ${STACK_ADDR}; ++ __heap_end__ = .;" ++ ++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE ++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE" +diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3b0256.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b0256.sh +--- binutils-2.17/ld/emulparams/avr32elf_uc3b0256.sh 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b0256.sh 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,40 @@ ++MACHINE=uc ++SCRIPT_NAME=elf_xip ++TEMPLATE_NAME=elf32 ++EXTRA_EM_FILE=avr32elf ++OUTPUT_FORMAT="elf32-avr32" ++ARCH=avr32 ++MAXPAGESIZE=4096 ++ENTRY=_start ++EMBEDDED=yes ++NO_SMALL_DATA=yes ++NOP=0xd703d703 ++ ++TEXT_START_ADDR=0x80000000 ++DATA_SEGMENT_ALIGN=8 ++BSS_ALIGNMENT=8 ++ ++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH" ++ ++MEMORY="MEMORY ++ { ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x40000 ++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x8000 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200 ++ }" ++RO_LMA_REGION="FLASH" ++RO_VMA_REGION="FLASH" ++RW_LMA_REGION="FLASH" ++RW_VMA_REGION="INTRAM" ++ ++STACK_SIZE=0x1000 ++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}" ++ ++DATA_SEGMENT_END="__heap_start__ = ALIGN(8); ++ . = ${STACK_ADDR}; ++ __heap_end__ = .;" ++ ++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE ++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE" ++ +\ No newline at end of file +diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3b064.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b064.sh +--- binutils-2.17/ld/emulparams/avr32elf_uc3b064.sh 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b064.sh 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,39 @@ ++MACHINE=uc ++SCRIPT_NAME=elf_xip ++TEMPLATE_NAME=elf32 ++EXTRA_EM_FILE=avr32elf ++OUTPUT_FORMAT="elf32-avr32" ++ARCH=avr32 ++MAXPAGESIZE=4096 ++ENTRY=_start ++EMBEDDED=yes ++NO_SMALL_DATA=yes ++NOP=0xd703d703 ++ ++TEXT_START_ADDR=0x80000000 ++DATA_SEGMENT_ALIGN=8 ++BSS_ALIGNMENT=8 ++ ++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH" ++ ++MEMORY="MEMORY ++ { ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x10000 ++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x4000 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200 ++ }" ++RO_LMA_REGION="FLASH" ++RO_VMA_REGION="FLASH" ++RW_LMA_REGION="FLASH" ++RW_VMA_REGION="INTRAM" ++ ++STACK_SIZE=0x1000 ++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}" ++ ++DATA_SEGMENT_END="__heap_start__ = ALIGN(8); ++ . = ${STACK_ADDR}; ++ __heap_end__ = .;" ++ ++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE ++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE" +diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3b1128.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b1128.sh +--- binutils-2.17/ld/emulparams/avr32elf_uc3b1128.sh 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b1128.sh 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,39 @@ ++MACHINE=uc ++SCRIPT_NAME=elf_xip ++TEMPLATE_NAME=elf32 ++EXTRA_EM_FILE=avr32elf ++OUTPUT_FORMAT="elf32-avr32" ++ARCH=avr32 ++MAXPAGESIZE=4096 ++ENTRY=_start ++EMBEDDED=yes ++NO_SMALL_DATA=yes ++NOP=0xd703d703 ++ ++TEXT_START_ADDR=0x80000000 ++DATA_SEGMENT_ALIGN=8 ++BSS_ALIGNMENT=8 ++ ++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH" ++ ++MEMORY="MEMORY ++ { ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x20000 ++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x8000 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200 ++ }" ++RO_LMA_REGION="FLASH" ++RO_VMA_REGION="FLASH" ++RW_LMA_REGION="FLASH" ++RW_VMA_REGION="INTRAM" ++ ++STACK_SIZE=0x1000 ++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}" ++ ++DATA_SEGMENT_END="__heap_start__ = ALIGN(8); ++ . = ${STACK_ADDR}; ++ __heap_end__ = .;" ++ ++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE ++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE" +diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3b1256.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b1256.sh +--- binutils-2.17/ld/emulparams/avr32elf_uc3b1256.sh 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b1256.sh 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,39 @@ ++MACHINE=uc ++SCRIPT_NAME=elf_xip ++TEMPLATE_NAME=elf32 ++EXTRA_EM_FILE=avr32elf ++OUTPUT_FORMAT="elf32-avr32" ++ARCH=avr32 ++MAXPAGESIZE=4096 ++ENTRY=_start ++EMBEDDED=yes ++NO_SMALL_DATA=yes ++NOP=0xd703d703 ++ ++TEXT_START_ADDR=0x80000000 ++DATA_SEGMENT_ALIGN=8 ++BSS_ALIGNMENT=8 ++ ++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH" ++ ++MEMORY="MEMORY ++ { ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x40000 ++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x8000 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200 ++ }" ++RO_LMA_REGION="FLASH" ++RO_VMA_REGION="FLASH" ++RW_LMA_REGION="FLASH" ++RW_VMA_REGION="INTRAM" ++ ++STACK_SIZE=0x1000 ++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}" ++ ++DATA_SEGMENT_END="__heap_start__ = ALIGN(8); ++ . = ${STACK_ADDR}; ++ __heap_end__ = .;" ++ ++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE ++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE" +diff -Nrup binutils-2.17/ld/emulparams/avr32elf_uc3b164.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b164.sh +--- binutils-2.17/ld/emulparams/avr32elf_uc3b164.sh 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32elf_uc3b164.sh 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,40 @@ ++MACHINE=uc ++SCRIPT_NAME=elf_xip ++TEMPLATE_NAME=elf32 ++EXTRA_EM_FILE=avr32elf ++OUTPUT_FORMAT="elf32-avr32" ++ARCH=avr32 ++MAXPAGESIZE=4096 ++ENTRY=_start ++EMBEDDED=yes ++NO_SMALL_DATA=yes ++NOP=0xd703d703 ++ ++TEXT_START_ADDR=0x80000000 ++DATA_SEGMENT_ALIGN=8 ++BSS_ALIGNMENT=8 ++ ++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH" ++ ++MEMORY="MEMORY ++ { ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x10000 ++ INTRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 0x4000 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x200 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 0x200 ++ }" ++RO_LMA_REGION="FLASH" ++RO_VMA_REGION="FLASH" ++RW_LMA_REGION="FLASH" ++RW_VMA_REGION="INTRAM" ++ ++STACK_SIZE=0x1000 ++STACK_ADDR="ORIGIN(INTRAM) + LENGTH(INTRAM) - ${STACK_SIZE}" ++ ++DATA_SEGMENT_END="__heap_start__ = ALIGN(8); ++ . = ${STACK_ADDR}; ++ __heap_end__ = .;" ++ ++OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE ++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE" ++ +\ No newline at end of file +diff -Nrup binutils-2.17/ld/emulparams/avr32linux.sh binutils-2.17.atmel.1.3.0/ld/emulparams/avr32linux.sh +--- binutils-2.17/ld/emulparams/avr32linux.sh 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emulparams/avr32linux.sh 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,14 @@ ++ARCH=avr32 ++SCRIPT_NAME=elf ++TEMPLATE_NAME=elf32 ++EXTRA_EM_FILE=avr32elf ++OUTPUT_FORMAT="elf32-avr32" ++GENERATE_SHLIB_SCRIPT=yes ++MAXPAGESIZE=0x1000 ++TEXT_START_ADDR=0x00001000 ++NOP=0xd703d703 ++ ++# This appears to place the GOT before the data section, which is ++# essential for uClinux. We don't use those .s* sections on AVR32 ++# anyway, so it shouldn't hurt for regular Linux either... ++NO_SMALL_DATA=yes +diff -Nrup binutils-2.17/ld/emultempl/avr32elf.em binutils-2.17.atmel.1.3.0/ld/emultempl/avr32elf.em +--- binutils-2.17/ld/emultempl/avr32elf.em 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/emultempl/avr32elf.em 2007-09-28 10:30:44.000000000 +0200 +@@ -0,0 +1,72 @@ ++# This shell script emits a C file. -*- C -*- ++# Copyright (C) 2007 Atmel Corporation ++# ++# This file is part of GLD, the Gnu Linker. ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. ++# ++ ++# This file is sourced from elf32.em, and defines extra avr32-elf ++# specific routines. ++# ++ ++cat >> e${EMULATION_NAME}.c <LMA_REGION: Output Section LMA. (line 6) + * automatic data imports: WIN32. (line 170) ++* AVR32 options: AVR32. (line 6) + * back end: BFD. (line 6) + * BASE (MRI): MRI. (line 54) + * BE8: ARM. (line 23) +@@ -6611,81 +6642,161 @@ Index + +  + Tag Table: +-Node: Top347 +-Node: Overview1109 +-Node: Invocation2223 +-Node: Options2631 +-Node: Environment77286 +-Node: Scripts79046 +-Node: Basic Script Concepts80780 +-Node: Script Format83487 +-Node: Simple Example84350 +-Node: Simple Commands87446 +-Node: Entry Point87897 +-Node: File Commands88656 +-Node: Format Commands92522 +-Node: Miscellaneous Commands94488 +-Node: Assignments96718 +-Node: Simple Assignments97209 +-Node: PROVIDE98945 +-Node: PROVIDE_HIDDEN100150 +-Node: Source Code Reference100394 +-Node: SECTIONS103974 +-Node: Output Section Description105865 +-Node: Output Section Name106918 +-Node: Output Section Address107794 +-Node: Input Section109443 +-Node: Input Section Basics110244 +-Node: Input Section Wildcards112596 +-Node: Input Section Common117329 +-Node: Input Section Keep118811 +-Node: Input Section Example119301 +-Node: Output Section Data120269 +-Node: Output Section Keywords123046 +-Node: Output Section Discarding126615 +-Node: Output Section Attributes127571 +-Node: Output Section Type128575 +-Node: Output Section LMA129729 +-Node: Forced Output Alignment132000 +-Node: Forced Input Alignment132268 +-Node: Output Section Region132653 +-Node: Output Section Phdr133083 +-Node: Output Section Fill133747 +-Node: Overlay Description134889 +-Node: MEMORY139137 +-Node: PHDRS143337 +-Node: VERSION148376 +-Node: Expressions156167 +-Node: Constants157045 +-Node: Symbols157606 +-Node: Orphan Sections158344 +-Node: Location Counter159107 +-Node: Operators163411 +-Node: Evaluation164333 +-Node: Expression Section165697 +-Node: Builtin Functions167186 +-Node: Implicit Linker Scripts174678 +-Node: Machine Dependent175453 +-Node: H8/300176314 +-Node: i960177939 +-Node: ARM179624 +-Node: HPPA ELF32182540 +-Node: MMIX184163 +-Node: MSP430185380 +-Node: PowerPC ELF32186428 +-Node: PowerPC64 ELF64188719 +-Node: TI COFF193133 +-Node: WIN32193665 +-Node: Xtensa211739 +-Node: BFD214861 +-Node: BFD outline216316 +-Node: BFD information loss217602 +-Node: Canonical format220119 +-Node: Reporting Bugs224476 +-Node: Bug Criteria225170 +-Node: Bug Reporting225869 +-Node: MRI232894 +-Node: GNU Free Documentation License237537 +-Node: Index257251 ++<<<<<<< .mine ++Node: Top487 ++Node: Overview1249 ++Node: Invocation2363 ++Node: Options2771 ++Node: Environment77426 ++Node: Scripts79186 ++Node: Basic Script Concepts80920 ++Node: Script Format83627 ++Node: Simple Example84490 ++Node: Simple Commands87586 ++Node: Entry Point88037 ++Node: File Commands88796 ++Node: Format Commands92662 ++Node: Miscellaneous Commands94628 ++Node: Assignments96858 ++Node: Simple Assignments97349 ++Node: PROVIDE99085 ++Node: PROVIDE_HIDDEN100290 ++Node: Source Code Reference100534 ++Node: SECTIONS104114 ++Node: Output Section Description106005 ++Node: Output Section Name107058 ++Node: Output Section Address107934 ++Node: Input Section109583 ++Node: Input Section Basics110384 ++Node: Input Section Wildcards112736 ++Node: Input Section Common117469 ++Node: Input Section Keep118951 ++Node: Input Section Example119441 ++Node: Output Section Data120409 ++Node: Output Section Keywords123186 ++Node: Output Section Discarding126755 ++Node: Output Section Attributes127711 ++Node: Output Section Type128715 ++Node: Output Section LMA129869 ++Node: Forced Output Alignment132140 ++Node: Forced Input Alignment132408 ++Node: Output Section Region132793 ++Node: Output Section Phdr133223 ++Node: Output Section Fill133887 ++Node: Overlay Description135029 ++Node: MEMORY139277 ++Node: PHDRS143477 ++Node: VERSION148516 ++Node: Expressions156307 ++Node: Constants157185 ++Node: Symbols157746 ++Node: Orphan Sections158484 ++Node: Location Counter159247 ++Node: Operators163551 ++Node: Evaluation164473 ++Node: Expression Section165837 ++Node: Builtin Functions167326 ++Node: Implicit Linker Scripts174818 ++Node: Machine Dependent175593 ++Node: H8/300176454 ++Node: i960178079 ++Node: ARM179764 ++Node: HPPA ELF32182680 ++Node: MMIX184303 ++Node: MSP430185520 ++Node: PowerPC ELF32186568 ++Node: PowerPC64 ELF64188859 ++Node: TI COFF193273 ++Node: WIN32193805 ++Node: Xtensa211879 ++Node: BFD215001 ++Node: BFD outline216456 ++Node: BFD information loss217742 ++Node: Canonical format220259 ++Node: Reporting Bugs224616 ++Node: Bug Criteria225310 ++Node: Bug Reporting226009 ++Node: MRI233034 ++Node: GNU Free Documentation License237677 ++Node: Index257391 ++======= ++Node: Top331 ++Node: Overview1093 ++Node: Invocation2207 ++Node: Options2615 ++Node: Environment77270 ++Node: Scripts79030 ++Node: Basic Script Concepts80764 ++Node: Script Format83471 ++Node: Simple Example84334 ++Node: Simple Commands87430 ++Node: Entry Point87881 ++Node: File Commands88640 ++Node: Format Commands92506 ++Node: Miscellaneous Commands94472 ++Node: Assignments96702 ++Node: Simple Assignments97193 ++Node: PROVIDE98929 ++Node: PROVIDE_HIDDEN100134 ++Node: Source Code Reference100378 ++Node: SECTIONS103958 ++Node: Output Section Description105849 ++Node: Output Section Name106902 ++Node: Output Section Address107778 ++Node: Input Section109427 ++Node: Input Section Basics110228 ++Node: Input Section Wildcards112580 ++Node: Input Section Common117313 ++Node: Input Section Keep118795 ++Node: Input Section Example119285 ++Node: Output Section Data120253 ++Node: Output Section Keywords123030 ++Node: Output Section Discarding126599 ++Node: Output Section Attributes127555 ++Node: Output Section Type128559 ++Node: Output Section LMA129713 ++Node: Forced Output Alignment131984 ++Node: Forced Input Alignment132252 ++Node: Output Section Region132637 ++Node: Output Section Phdr133067 ++Node: Output Section Fill133731 ++Node: Overlay Description134873 ++Node: MEMORY139121 ++Node: PHDRS143321 ++Node: VERSION148360 ++Node: Expressions156151 ++Node: Constants157029 ++Node: Symbols157590 ++Node: Orphan Sections158328 ++Node: Location Counter159091 ++Node: Operators163395 ++Node: Evaluation164317 ++Node: Expression Section165681 ++Node: Builtin Functions167170 ++Node: Implicit Linker Scripts174662 ++Node: Machine Dependent175437 ++Node: H8/300176357 ++Node: i960177982 ++Node: ARM179667 ++Node: AVR32182578 ++Node: HPPA ELF32183526 ++Node: MMIX185151 ++Node: MSP430186368 ++Node: PowerPC ELF32187416 ++Node: PowerPC64 ELF64189707 ++Node: TI COFF194121 ++Node: WIN32194655 ++Node: Xtensa212729 ++Node: BFD215851 ++Node: BFD outline217306 ++Node: BFD information loss218592 ++Node: Canonical format221109 ++Node: Reporting Bugs225466 ++Node: Bug Criteria226160 ++Node: Bug Reporting226859 ++Node: MRI233884 ++Node: GNU Free Documentation License238527 ++Node: Index258241 ++>>>>>>> .r31496 +  + End Tag Table +diff -Nrup binutils-2.17/ld/ld.info.mine binutils-2.17.atmel.1.3.0/ld/ld.info.mine +--- binutils-2.17/ld/ld.info.mine 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/ld.info.mine 2007-09-28 10:30:44.000000000 +0200 +@@ -0,0 +1,6693 @@ ++This is ++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/ld/ld.info, ++produced by makeinfo version 4.8 from ++/home/hcegtvedt/svnwork/tools/T0243-GNU_Toolchain/50-Source/binutils/trunk/ld/ld.texinfo. ++ ++START-INFO-DIR-ENTRY ++* Ld: (ld). The GNU linker. ++END-INFO-DIR-ENTRY ++ ++ This file documents the GNU linker LD version 2.17. ++ ++ Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, ++2002, 2003, 2004 Free Software Foundation, Inc. ++ ++ ++File: ld.info, Node: Top, Next: Overview, Up: (dir) ++ ++Using ld ++******** ++ ++This file documents the GNU linker ld version 2.17. ++ ++ This document is distributed under the terms of the GNU Free ++Documentation License. A copy of the license is included in the ++section entitled "GNU Free Documentation License". ++ ++* Menu: ++ ++* Overview:: Overview ++* Invocation:: Invocation ++* Scripts:: Linker Scripts ++ ++* Machine Dependent:: Machine Dependent Features ++ ++* BFD:: BFD ++ ++* Reporting Bugs:: Reporting Bugs ++* MRI:: MRI Compatible Script Files ++* GNU Free Documentation License:: GNU Free Documentation License ++* Index:: Index ++ ++ ++File: ld.info, Node: Overview, Next: Invocation, Prev: Top, Up: Top ++ ++1 Overview ++********** ++ ++`ld' combines a number of object and archive files, relocates their ++data and ties up symbol references. Usually the last step in compiling ++a program is to run `ld'. ++ ++ `ld' accepts Linker Command Language files written in a superset of ++AT&T's Link Editor Command Language syntax, to provide explicit and ++total control over the linking process. ++ ++ This version of `ld' uses the general purpose BFD libraries to ++operate on object files. This allows `ld' to read, combine, and write ++object files in many different formats--for example, COFF or `a.out'. ++Different formats may be linked together to produce any available kind ++of object file. *Note BFD::, for more information. ++ ++ Aside from its flexibility, the GNU linker is more helpful than other ++linkers in providing diagnostic information. Many linkers abandon ++execution immediately upon encountering an error; whenever possible, ++`ld' continues executing, allowing you to identify other errors (or, in ++some cases, to get an output file in spite of the error). ++ ++ ++File: ld.info, Node: Invocation, Next: Scripts, Prev: Overview, Up: Top ++ ++2 Invocation ++************ ++ ++The GNU linker `ld' is meant to cover a broad range of situations, and ++to be as compatible as possible with other linkers. As a result, you ++have many choices to control its behavior. ++ ++* Menu: ++ ++* Options:: Command Line Options ++* Environment:: Environment Variables ++ ++ ++File: ld.info, Node: Options, Next: Environment, Up: Invocation ++ ++2.1 Command Line Options ++======================== ++ ++ The linker supports a plethora of command-line options, but in actual ++practice few of them are used in any particular context. For instance, ++a frequent use of `ld' is to link standard Unix object files on a ++standard, supported Unix system. On such a system, to link a file ++`hello.o': ++ ++ ld -o OUTPUT /lib/crt0.o hello.o -lc ++ ++ This tells `ld' to produce a file called OUTPUT as the result of ++linking the file `/lib/crt0.o' with `hello.o' and the library `libc.a', ++which will come from the standard search directories. (See the ++discussion of the `-l' option below.) ++ ++ Some of the command-line options to `ld' may be specified at any ++point in the command line. However, options which refer to files, such ++as `-l' or `-T', cause the file to be read at the point at which the ++option appears in the command line, relative to the object files and ++other file options. Repeating non-file options with a different ++argument will either have no further effect, or override prior ++occurrences (those further to the left on the command line) of that ++option. Options which may be meaningfully specified more than once are ++noted in the descriptions below. ++ ++ Non-option arguments are object files or archives which are to be ++linked together. They may follow, precede, or be mixed in with ++command-line options, except that an object file argument may not be ++placed between an option and its argument. ++ ++ Usually the linker is invoked with at least one object file, but you ++can specify other forms of binary input files using `-l', `-R', and the ++script command language. If _no_ binary input files at all are ++specified, the linker does not produce any output, and issues the ++message `No input files'. ++ ++ If the linker cannot recognize the format of an object file, it will ++assume that it is a linker script. A script specified in this way ++augments the main linker script used for the link (either the default ++linker script or the one specified by using `-T'). This feature ++permits the linker to link against a file which appears to be an object ++or an archive, but actually merely defines some symbol values, or uses ++`INPUT' or `GROUP' to load other objects. Note that specifying a ++script in this way merely augments the main linker script; use the `-T' ++option to replace the default linker script entirely. *Note Scripts::. ++ ++ For options whose names are a single letter, option arguments must ++either follow the option letter without intervening whitespace, or be ++given as separate arguments immediately following the option that ++requires them. ++ ++ For options whose names are multiple letters, either one dash or two ++can precede the option name; for example, `-trace-symbol' and ++`--trace-symbol' are equivalent. Note--there is one exception to this ++rule. Multiple letter options that start with a lower case 'o' can ++only be preceeded by two dashes. This is to reduce confusion with the ++`-o' option. So for example `-omagic' sets the output file name to ++`magic' whereas `--omagic' sets the NMAGIC flag on the output. ++ ++ Arguments to multiple-letter options must either be separated from ++the option name by an equals sign, or be given as separate arguments ++immediately following the option that requires them. For example, ++`--trace-symbol foo' and `--trace-symbol=foo' are equivalent. Unique ++abbreviations of the names of multiple-letter options are accepted. ++ ++ Note--if the linker is being invoked indirectly, via a compiler ++driver (e.g. `gcc') then all the linker command line options should be ++prefixed by `-Wl,' (or whatever is appropriate for the particular ++compiler driver) like this: ++ ++ gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup ++ ++ This is important, because otherwise the compiler driver program may ++silently drop the linker options, resulting in a bad link. ++ ++ Here is a table of the generic command line switches accepted by the ++GNU linker: ++ ++`@FILE' ++ Read command-line options from FILE. The options read are ++ inserted in place of the original @FILE option. If FILE does not ++ exist, or cannot be read, then the option will be treated ++ literally, and not removed. ++ ++ Options in FILE are separated by whitespace. A whitespace ++ character may be included in an option by surrounding the entire ++ option in either single or double quotes. Any character ++ (including a backslash) may be included by prefixing the character ++ to be included with a backslash. The FILE may itself contain ++ additional @FILE options; any such options will be processed ++ recursively. ++ ++`-aKEYWORD' ++ This option is supported for HP/UX compatibility. The KEYWORD ++ argument must be one of the strings `archive', `shared', or ++ `default'. `-aarchive' is functionally equivalent to `-Bstatic', ++ and the other two keywords are functionally equivalent to ++ `-Bdynamic'. This option may be used any number of times. ++ ++`-AARCHITECTURE' ++`--architecture=ARCHITECTURE' ++ In the current release of `ld', this option is useful only for the ++ Intel 960 family of architectures. In that `ld' configuration, the ++ ARCHITECTURE argument identifies the particular architecture in ++ the 960 family, enabling some safeguards and modifying the ++ archive-library search path. *Note `ld' and the Intel 960 family: ++ i960, for details. ++ ++ Future releases of `ld' may support similar functionality for ++ other architecture families. ++ ++`-b INPUT-FORMAT' ++`--format=INPUT-FORMAT' ++ `ld' may be configured to support more than one kind of object ++ file. If your `ld' is configured this way, you can use the `-b' ++ option to specify the binary format for input object files that ++ follow this option on the command line. Even when `ld' is ++ configured to support alternative object formats, you don't ++ usually need to specify this, as `ld' should be configured to ++ expect as a default input format the most usual format on each ++ machine. INPUT-FORMAT is a text string, the name of a particular ++ format supported by the BFD libraries. (You can list the ++ available binary formats with `objdump -i'.) *Note BFD::. ++ ++ You may want to use this option if you are linking files with an ++ unusual binary format. You can also use `-b' to switch formats ++ explicitly (when linking object files of different formats), by ++ including `-b INPUT-FORMAT' before each group of object files in a ++ particular format. ++ ++ The default format is taken from the environment variable ++ `GNUTARGET'. *Note Environment::. You can also define the input ++ format from a script, using the command `TARGET'; see *Note Format ++ Commands::. ++ ++`-c MRI-COMMANDFILE' ++`--mri-script=MRI-COMMANDFILE' ++ For compatibility with linkers produced by MRI, `ld' accepts script ++ files written in an alternate, restricted command language, ++ described in *Note MRI Compatible Script Files: MRI. Introduce ++ MRI script files with the option `-c'; use the `-T' option to run ++ linker scripts written in the general-purpose `ld' scripting ++ language. If MRI-CMDFILE does not exist, `ld' looks for it in the ++ directories specified by any `-L' options. ++ ++`-d' ++`-dc' ++`-dp' ++ These three options are equivalent; multiple forms are supported ++ for compatibility with other linkers. They assign space to common ++ symbols even if a relocatable output file is specified (with ++ `-r'). The script command `FORCE_COMMON_ALLOCATION' has the same ++ effect. *Note Miscellaneous Commands::. ++ ++`-e ENTRY' ++`--entry=ENTRY' ++ Use ENTRY as the explicit symbol for beginning execution of your ++ program, rather than the default entry point. If there is no ++ symbol named ENTRY, the linker will try to parse ENTRY as a number, ++ and use that as the entry address (the number will be interpreted ++ in base 10; you may use a leading `0x' for base 16, or a leading ++ `0' for base 8). *Note Entry Point::, for a discussion of defaults ++ and other ways of specifying the entry point. ++ ++`--exclude-libs LIB,LIB,...' ++ Specifies a list of archive libraries from which symbols should ++ not be automatically exported. The library names may be delimited ++ by commas or colons. Specifying `--exclude-libs ALL' excludes ++ symbols in all archive libraries from automatic export. This ++ option is available only for the i386 PE targeted port of the ++ linker and for ELF targeted ports. For i386 PE, symbols ++ explicitly listed in a .def file are still exported, regardless of ++ this option. For ELF targeted ports, symbols affected by this ++ option will be treated as hidden. ++ ++`-E' ++`--export-dynamic' ++ When creating a dynamically linked executable, add all symbols to ++ the dynamic symbol table. The dynamic symbol table is the set of ++ symbols which are visible from dynamic objects at run time. ++ ++ If you do not use this option, the dynamic symbol table will ++ normally contain only those symbols which are referenced by some ++ dynamic object mentioned in the link. ++ ++ If you use `dlopen' to load a dynamic object which needs to refer ++ back to the symbols defined by the program, rather than some other ++ dynamic object, then you will probably need to use this option when ++ linking the program itself. ++ ++ You can also use the version script to control what symbols should ++ be added to the dynamic symbol table if the output format supports ++ it. See the description of `--version-script' in *Note VERSION::. ++ ++`-EB' ++ Link big-endian objects. This affects the default output format. ++ ++`-EL' ++ Link little-endian objects. This affects the default output ++ format. ++ ++`-f' ++`--auxiliary NAME' ++ When creating an ELF shared object, set the internal DT_AUXILIARY ++ field to the specified name. This tells the dynamic linker that ++ the symbol table of the shared object should be used as an ++ auxiliary filter on the symbol table of the shared object NAME. ++ ++ If you later link a program against this filter object, then, when ++ you run the program, the dynamic linker will see the DT_AUXILIARY ++ field. If the dynamic linker resolves any symbols from the filter ++ object, it will first check whether there is a definition in the ++ shared object NAME. If there is one, it will be used instead of ++ the definition in the filter object. The shared object NAME need ++ not exist. Thus the shared object NAME may be used to provide an ++ alternative implementation of certain functions, perhaps for ++ debugging or for machine specific performance. ++ ++ This option may be specified more than once. The DT_AUXILIARY ++ entries will be created in the order in which they appear on the ++ command line. ++ ++`-F NAME' ++`--filter NAME' ++ When creating an ELF shared object, set the internal DT_FILTER ++ field to the specified name. This tells the dynamic linker that ++ the symbol table of the shared object which is being created ++ should be used as a filter on the symbol table of the shared ++ object NAME. ++ ++ If you later link a program against this filter object, then, when ++ you run the program, the dynamic linker will see the DT_FILTER ++ field. The dynamic linker will resolve symbols according to the ++ symbol table of the filter object as usual, but it will actually ++ link to the definitions found in the shared object NAME. Thus the ++ filter object can be used to select a subset of the symbols ++ provided by the object NAME. ++ ++ Some older linkers used the `-F' option throughout a compilation ++ toolchain for specifying object-file format for both input and ++ output object files. The GNU linker uses other mechanisms for ++ this purpose: the `-b', `--format', `--oformat' options, the ++ `TARGET' command in linker scripts, and the `GNUTARGET' ++ environment variable. The GNU linker will ignore the `-F' option ++ when not creating an ELF shared object. ++ ++`-fini NAME' ++ When creating an ELF executable or shared object, call NAME when ++ the executable or shared object is unloaded, by setting DT_FINI to ++ the address of the function. By default, the linker uses `_fini' ++ as the function to call. ++ ++`-g' ++ Ignored. Provided for compatibility with other tools. ++ ++`-GVALUE' ++`--gpsize=VALUE' ++ Set the maximum size of objects to be optimized using the GP ++ register to SIZE. This is only meaningful for object file formats ++ such as MIPS ECOFF which supports putting large and small objects ++ into different sections. This is ignored for other object file ++ formats. ++ ++`-hNAME' ++`-soname=NAME' ++ When creating an ELF shared object, set the internal DT_SONAME ++ field to the specified name. When an executable is linked with a ++ shared object which has a DT_SONAME field, then when the ++ executable is run the dynamic linker will attempt to load the ++ shared object specified by the DT_SONAME field rather than the ++ using the file name given to the linker. ++ ++`-i' ++ Perform an incremental link (same as option `-r'). ++ ++`-init NAME' ++ When creating an ELF executable or shared object, call NAME when ++ the executable or shared object is loaded, by setting DT_INIT to ++ the address of the function. By default, the linker uses `_init' ++ as the function to call. ++ ++`-lARCHIVE' ++`--library=ARCHIVE' ++ Add archive file ARCHIVE to the list of files to link. This ++ option may be used any number of times. `ld' will search its ++ path-list for occurrences of `libARCHIVE.a' for every ARCHIVE ++ specified. ++ ++ On systems which support shared libraries, `ld' may also search for ++ libraries with extensions other than `.a'. Specifically, on ELF ++ and SunOS systems, `ld' will search a directory for a library with ++ an extension of `.so' before searching for one with an extension of ++ `.a'. By convention, a `.so' extension indicates a shared library. ++ ++ The linker will search an archive only once, at the location where ++ it is specified on the command line. If the archive defines a ++ symbol which was undefined in some object which appeared before ++ the archive on the command line, the linker will include the ++ appropriate file(s) from the archive. However, an undefined ++ symbol in an object appearing later on the command line will not ++ cause the linker to search the archive again. ++ ++ See the `-(' option for a way to force the linker to search ++ archives multiple times. ++ ++ You may list the same archive multiple times on the command line. ++ ++ This type of archive searching is standard for Unix linkers. ++ However, if you are using `ld' on AIX, note that it is different ++ from the behaviour of the AIX linker. ++ ++`-LSEARCHDIR' ++`--library-path=SEARCHDIR' ++ Add path SEARCHDIR to the list of paths that `ld' will search for ++ archive libraries and `ld' control scripts. You may use this ++ option any number of times. The directories are searched in the ++ order in which they are specified on the command line. ++ Directories specified on the command line are searched before the ++ default directories. All `-L' options apply to all `-l' options, ++ regardless of the order in which the options appear. ++ ++ If SEARCHDIR begins with `=', then the `=' will be replaced by the ++ "sysroot prefix", a path specified when the linker is configured. ++ ++ The default set of paths searched (without being specified with ++ `-L') depends on which emulation mode `ld' is using, and in some ++ cases also on how it was configured. *Note Environment::. ++ ++ The paths can also be specified in a link script with the ++ `SEARCH_DIR' command. Directories specified this way are searched ++ at the point in which the linker script appears in the command ++ line. ++ ++`-mEMULATION' ++ Emulate the EMULATION linker. You can list the available ++ emulations with the `--verbose' or `-V' options. ++ ++ If the `-m' option is not used, the emulation is taken from the ++ `LDEMULATION' environment variable, if that is defined. ++ ++ Otherwise, the default emulation depends upon how the linker was ++ configured. ++ ++`-M' ++`--print-map' ++ Print a link map to the standard output. A link map provides ++ information about the link, including the following: ++ ++ * Where object files are mapped into memory. ++ ++ * How common symbols are allocated. ++ ++ * All archive members included in the link, with a mention of ++ the symbol which caused the archive member to be brought in. ++ ++ * The values assigned to symbols. ++ ++ Note - symbols whose values are computed by an expression ++ which involves a reference to a previous value of the same ++ symbol may not have correct result displayed in the link map. ++ This is because the linker discards intermediate results and ++ only retains the final value of an expression. Under such ++ circumstances the linker will display the final value ++ enclosed by square brackets. Thus for example a linker ++ script containing: ++ ++ foo = 1 ++ foo = foo * 4 ++ foo = foo + 8 ++ ++ will produce the following output in the link map if the `-M' ++ option is used: ++ ++ 0x00000001 foo = 0x1 ++ [0x0000000c] foo = (foo * 0x4) ++ [0x0000000c] foo = (foo + 0x8) ++ ++ See *Note Expressions:: for more information about ++ expressions in linker scripts. ++ ++`-n' ++`--nmagic' ++ Turn off page alignment of sections, and mark the output as ++ `NMAGIC' if possible. ++ ++`-N' ++`--omagic' ++ Set the text and data sections to be readable and writable. Also, ++ do not page-align the data segment, and disable linking against ++ shared libraries. If the output format supports Unix style magic ++ numbers, mark the output as `OMAGIC'. Note: Although a writable ++ text section is allowed for PE-COFF targets, it does not conform ++ to the format specification published by Microsoft. ++ ++`--no-omagic' ++ This option negates most of the effects of the `-N' option. It ++ sets the text section to be read-only, and forces the data segment ++ to be page-aligned. Note - this option does not enable linking ++ against shared libraries. Use `-Bdynamic' for this. ++ ++`-o OUTPUT' ++`--output=OUTPUT' ++ Use OUTPUT as the name for the program produced by `ld'; if this ++ option is not specified, the name `a.out' is used by default. The ++ script command `OUTPUT' can also specify the output file name. ++ ++`-O LEVEL' ++ If LEVEL is a numeric values greater than zero `ld' optimizes the ++ output. This might take significantly longer and therefore ++ probably should only be enabled for the final binary. ++ ++`-q' ++`--emit-relocs' ++ Leave relocation sections and contents in fully linked ++ exececutables. Post link analysis and optimization tools may need ++ this information in order to perform correct modifications of ++ executables. This results in larger executables. ++ ++ This option is currently only supported on ELF platforms. ++ ++`--force-dynamic' ++ Force the output file to have dynamic sections. This option is ++ specific to VxWorks targets. ++ ++`-r' ++`--relocatable' ++ Generate relocatable output--i.e., generate an output file that ++ can in turn serve as input to `ld'. This is often called "partial ++ linking". As a side effect, in environments that support standard ++ Unix magic numbers, this option also sets the output file's magic ++ number to `OMAGIC'. If this option is not specified, an absolute ++ file is produced. When linking C++ programs, this option _will ++ not_ resolve references to constructors; to do that, use `-Ur'. ++ ++ When an input file does not have the same format as the output ++ file, partial linking is only supported if that input file does ++ not contain any relocations. Different output formats can have ++ further restrictions; for example some `a.out'-based formats do ++ not support partial linking with input files in other formats at ++ all. ++ ++ This option does the same thing as `-i'. ++ ++`-R FILENAME' ++`--just-symbols=FILENAME' ++ Read symbol names and their addresses from FILENAME, but do not ++ relocate it or include it in the output. This allows your output ++ file to refer symbolically to absolute locations of memory defined ++ in other programs. You may use this option more than once. ++ ++ For compatibility with other ELF linkers, if the `-R' option is ++ followed by a directory name, rather than a file name, it is ++ treated as the `-rpath' option. ++ ++`-s' ++`--strip-all' ++ Omit all symbol information from the output file. ++ ++`-S' ++`--strip-debug' ++ Omit debugger symbol information (but not all symbols) from the ++ output file. ++ ++`-t' ++`--trace' ++ Print the names of the input files as `ld' processes them. ++ ++`-T SCRIPTFILE' ++`--script=SCRIPTFILE' ++ Use SCRIPTFILE as the linker script. This script replaces `ld''s ++ default linker script (rather than adding to it), so COMMANDFILE ++ must specify everything necessary to describe the output file. ++ *Note Scripts::. If SCRIPTFILE does not exist in the current ++ directory, `ld' looks for it in the directories specified by any ++ preceding `-L' options. Multiple `-T' options accumulate. ++ ++`-u SYMBOL' ++`--undefined=SYMBOL' ++ Force SYMBOL to be entered in the output file as an undefined ++ symbol. Doing this may, for example, trigger linking of additional ++ modules from standard libraries. `-u' may be repeated with ++ different option arguments to enter additional undefined symbols. ++ This option is equivalent to the `EXTERN' linker script command. ++ ++`-Ur' ++ For anything other than C++ programs, this option is equivalent to ++ `-r': it generates relocatable output--i.e., an output file that ++ can in turn serve as input to `ld'. When linking C++ programs, ++ `-Ur' _does_ resolve references to constructors, unlike `-r'. It ++ does not work to use `-Ur' on files that were themselves linked ++ with `-Ur'; once the constructor table has been built, it cannot ++ be added to. Use `-Ur' only for the last partial link, and `-r' ++ for the others. ++ ++`--unique[=SECTION]' ++ Creates a separate output section for every input section matching ++ SECTION, or if the optional wildcard SECTION argument is missing, ++ for every orphan input section. An orphan section is one not ++ specifically mentioned in a linker script. You may use this option ++ multiple times on the command line; It prevents the normal ++ merging of input sections with the same name, overriding output ++ section assignments in a linker script. ++ ++`-v' ++`--version' ++`-V' ++ Display the version number for `ld'. The `-V' option also lists ++ the supported emulations. ++ ++`-x' ++`--discard-all' ++ Delete all local symbols. ++ ++`-X' ++`--discard-locals' ++ Delete all temporary local symbols. For most targets, this is all ++ local symbols whose names begin with `L'. ++ ++`-y SYMBOL' ++`--trace-symbol=SYMBOL' ++ Print the name of each linked file in which SYMBOL appears. This ++ option may be given any number of times. On many systems it is ++ necessary to prepend an underscore. ++ ++ This option is useful when you have an undefined symbol in your ++ link but don't know where the reference is coming from. ++ ++`-Y PATH' ++ Add PATH to the default library search path. This option exists ++ for Solaris compatibility. ++ ++`-z KEYWORD' ++ The recognized keywords are: ++ `combreloc' ++ Combines multiple reloc sections and sorts them to make ++ dynamic symbol lookup caching possible. ++ ++ `defs' ++ Disallows undefined symbols in object files. Undefined ++ symbols in shared libraries are still allowed. ++ ++ `execstack' ++ Marks the object as requiring executable stack. ++ ++ `initfirst' ++ This option is only meaningful when building a shared object. ++ It marks the object so that its runtime initialization will ++ occur before the runtime initialization of any other objects ++ brought into the process at the same time. Similarly the ++ runtime finalization of the object will occur after the ++ runtime finalization of any other objects. ++ ++ `interpose' ++ Marks the object that its symbol table interposes before all ++ symbols but the primary executable. ++ ++ `loadfltr' ++ Marks the object that its filters be processed immediately at ++ runtime. ++ ++ `muldefs' ++ Allows multiple definitions. ++ ++ `nocombreloc' ++ Disables multiple reloc sections combining. ++ ++ `nocopyreloc' ++ Disables production of copy relocs. ++ ++ `nodefaultlib' ++ Marks the object that the search for dependencies of this ++ object will ignore any default library search paths. ++ ++ `nodelete' ++ Marks the object shouldn't be unloaded at runtime. ++ ++ `nodlopen' ++ Marks the object not available to `dlopen'. ++ ++ `nodump' ++ Marks the object can not be dumped by `dldump'. ++ ++ `noexecstack' ++ Marks the object as not requiring executable stack. ++ ++ `norelro' ++ Don't create an ELF `PT_GNU_RELRO' segment header in the ++ object. ++ ++ `now' ++ When generating an executable or shared library, mark it to ++ tell the dynamic linker to resolve all symbols when the ++ program is started, or when the shared library is linked to ++ using dlopen, instead of deferring function call resolution ++ to the point when the function is first called. ++ ++ `origin' ++ Marks the object may contain $ORIGIN. ++ ++ `relro' ++ Create an ELF `PT_GNU_RELRO' segment header in the object. ++ ++ ++ Other keywords are ignored for Solaris compatibility. ++ ++`-( ARCHIVES -)' ++`--start-group ARCHIVES --end-group' ++ The ARCHIVES should be a list of archive files. They may be ++ either explicit file names, or `-l' options. ++ ++ The specified archives are searched repeatedly until no new ++ undefined references are created. Normally, an archive is ++ searched only once in the order that it is specified on the ++ command line. If a symbol in that archive is needed to resolve an ++ undefined symbol referred to by an object in an archive that ++ appears later on the command line, the linker would not be able to ++ resolve that reference. By grouping the archives, they all be ++ searched repeatedly until all possible references are resolved. ++ ++ Using this option has a significant performance cost. It is best ++ to use it only when there are unavoidable circular references ++ between two or more archives. ++ ++`--accept-unknown-input-arch' ++`--no-accept-unknown-input-arch' ++ Tells the linker to accept input files whose architecture cannot be ++ recognised. The assumption is that the user knows what they are ++ doing and deliberately wants to link in these unknown input files. ++ This was the default behaviour of the linker, before release ++ 2.14. The default behaviour from release 2.14 onwards is to ++ reject such input files, and so the `--accept-unknown-input-arch' ++ option has been added to restore the old behaviour. ++ ++`--as-needed' ++`--no-as-needed' ++ This option affects ELF DT_NEEDED tags for dynamic libraries ++ mentioned on the command line after the `--as-needed' option. ++ Normally, the linker will add a DT_NEEDED tag for each dynamic ++ library mentioned on the command line, regardless of whether the ++ library is actually needed. `--as-needed' causes DT_NEEDED tags ++ to only be emitted for libraries that satisfy some symbol ++ reference from regular objects which is undefined at the point ++ that the library was linked. `--no-as-needed' restores the ++ default behaviour. ++ ++`--add-needed' ++`--no-add-needed' ++ This option affects the treatment of dynamic libraries from ELF ++ DT_NEEDED tags in dynamic libraries mentioned on the command line ++ after the `--no-add-needed' option. Normally, the linker will add ++ a DT_NEEDED tag for each dynamic library from DT_NEEDED tags. ++ `--no-add-needed' causes DT_NEEDED tags will never be emitted for ++ those libraries from DT_NEEDED tags. `--add-needed' restores the ++ default behaviour. ++ ++`-assert KEYWORD' ++ This option is ignored for SunOS compatibility. ++ ++`-Bdynamic' ++`-dy' ++`-call_shared' ++ Link against dynamic libraries. This is only meaningful on ++ platforms for which shared libraries are supported. This option ++ is normally the default on such platforms. The different variants ++ of this option are for compatibility with various systems. You ++ may use this option multiple times on the command line: it affects ++ library searching for `-l' options which follow it. ++ ++`-Bgroup' ++ Set the `DF_1_GROUP' flag in the `DT_FLAGS_1' entry in the dynamic ++ section. This causes the runtime linker to handle lookups in this ++ object and its dependencies to be performed only inside the group. ++ `--unresolved-symbols=report-all' is implied. This option is only ++ meaningful on ELF platforms which support shared libraries. ++ ++`-Bstatic' ++`-dn' ++`-non_shared' ++`-static' ++ Do not link against shared libraries. This is only meaningful on ++ platforms for which shared libraries are supported. The different ++ variants of this option are for compatibility with various ++ systems. You may use this option multiple times on the command ++ line: it affects library searching for `-l' options which follow ++ it. This option also implies `--unresolved-symbols=report-all'. ++ This option can be used with `-shared'. Doing so means that a ++ shared library is being created but that all of the library's ++ external references must be resolved by pulling in entries from ++ static libraries. ++ ++`-Bsymbolic' ++ When creating a shared library, bind references to global symbols ++ to the definition within the shared library, if any. Normally, it ++ is possible for a program linked against a shared library to ++ override the definition within the shared library. This option is ++ only meaningful on ELF platforms which support shared libraries. ++ ++`--check-sections' ++`--no-check-sections' ++ Asks the linker _not_ to check section addresses after they have ++ been assigned to see if there are any overlaps. Normally the ++ linker will perform this check, and if it finds any overlaps it ++ will produce suitable error messages. The linker does know about, ++ and does make allowances for sections in overlays. The default ++ behaviour can be restored by using the command line switch ++ `--check-sections'. ++ ++`--cref' ++ Output a cross reference table. If a linker map file is being ++ generated, the cross reference table is printed to the map file. ++ Otherwise, it is printed on the standard output. ++ ++ The format of the table is intentionally simple, so that it may be ++ easily processed by a script if necessary. The symbols are ++ printed out, sorted by name. For each symbol, a list of file ++ names is given. If the symbol is defined, the first file listed ++ is the location of the definition. The remaining files contain ++ references to the symbol. ++ ++`--no-define-common' ++ This option inhibits the assignment of addresses to common symbols. ++ The script command `INHIBIT_COMMON_ALLOCATION' has the same effect. ++ *Note Miscellaneous Commands::. ++ ++ The `--no-define-common' option allows decoupling the decision to ++ assign addresses to Common symbols from the choice of the output ++ file type; otherwise a non-Relocatable output type forces ++ assigning addresses to Common symbols. Using `--no-define-common' ++ allows Common symbols that are referenced from a shared library to ++ be assigned addresses only in the main program. This eliminates ++ the unused duplicate space in the shared library, and also ++ prevents any possible confusion over resolving to the wrong ++ duplicate when there are many dynamic modules with specialized ++ search paths for runtime symbol resolution. ++ ++`--defsym SYMBOL=EXPRESSION' ++ Create a global symbol in the output file, containing the absolute ++ address given by EXPRESSION. You may use this option as many ++ times as necessary to define multiple symbols in the command line. ++ A limited form of arithmetic is supported for the EXPRESSION in ++ this context: you may give a hexadecimal constant or the name of ++ an existing symbol, or use `+' and `-' to add or subtract ++ hexadecimal constants or symbols. If you need more elaborate ++ expressions, consider using the linker command language from a ++ script (*note Assignment: Symbol Definitions: Assignments.). ++ _Note:_ there should be no white space between SYMBOL, the equals ++ sign ("<=>"), and EXPRESSION. ++ ++`--demangle[=STYLE]' ++`--no-demangle' ++ These options control whether to demangle symbol names in error ++ messages and other output. When the linker is told to demangle, ++ it tries to present symbol names in a readable fashion: it strips ++ leading underscores if they are used by the object file format, ++ and converts C++ mangled symbol names into user readable names. ++ Different compilers have different mangling styles. The optional ++ demangling style argument can be used to choose an appropriate ++ demangling style for your compiler. The linker will demangle by ++ default unless the environment variable `COLLECT_NO_DEMANGLE' is ++ set. These options may be used to override the default. ++ ++`--dynamic-linker FILE' ++ Set the name of the dynamic linker. This is only meaningful when ++ generating dynamically linked ELF executables. The default dynamic ++ linker is normally correct; don't use this unless you know what ++ you are doing. ++ ++`--fatal-warnings' ++ Treat all warnings as errors. ++ ++`--force-exe-suffix' ++ Make sure that an output file has a .exe suffix. ++ ++ If a successfully built fully linked output file does not have a ++ `.exe' or `.dll' suffix, this option forces the linker to copy the ++ output file to one of the same name with a `.exe' suffix. This ++ option is useful when using unmodified Unix makefiles on a ++ Microsoft Windows host, since some versions of Windows won't run ++ an image unless it ends in a `.exe' suffix. ++ ++`--no-gc-sections' ++`--gc-sections' ++ Enable garbage collection of unused input sections. It is ignored ++ on targets that do not support this option. This option is not ++ compatible with `-r'. The default behaviour (of not performing ++ this garbage collection) can be restored by specifying ++ `--no-gc-sections' on the command line. ++ ++`--help' ++ Print a summary of the command-line options on the standard output ++ and exit. ++ ++`--target-help' ++ Print a summary of all target specific options on the standard ++ output and exit. ++ ++`-Map MAPFILE' ++ Print a link map to the file MAPFILE. See the description of the ++ `-M' option, above. ++ ++`--no-keep-memory' ++ `ld' normally optimizes for speed over memory usage by caching the ++ symbol tables of input files in memory. This option tells `ld' to ++ instead optimize for memory usage, by rereading the symbol tables ++ as necessary. This may be required if `ld' runs out of memory ++ space while linking a large executable. ++ ++`--no-undefined' ++`-z defs' ++ Report unresolved symbol references from regular object files. ++ This is done even if the linker is creating a non-symbolic shared ++ library. The switch `--[no-]allow-shlib-undefined' controls the ++ behaviour for reporting unresolved references found in shared ++ libraries being linked in. ++ ++`--allow-multiple-definition' ++`-z muldefs' ++ Normally when a symbol is defined multiple times, the linker will ++ report a fatal error. These options allow multiple definitions and ++ the first definition will be used. ++ ++`--allow-shlib-undefined' ++`--no-allow-shlib-undefined' ++ Allows (the default) or disallows undefined symbols in shared ++ libraries. This switch is similar to `--no-undefined' except that ++ it determines the behaviour when the undefined symbols are in a ++ shared library rather than a regular object file. It does not ++ affect how undefined symbols in regular object files are handled. ++ ++ The reason that `--allow-shlib-undefined' is the default is that ++ the shared library being specified at link time may not be the ++ same as the one that is available at load time, so the symbols ++ might actually be resolvable at load time. Plus there are some ++ systems, (eg BeOS) where undefined symbols in shared libraries is ++ normal. (The kernel patches them at load time to select which ++ function is most appropriate for the current architecture. This ++ is used for example to dynamically select an appropriate memset ++ function). Apparently it is also normal for HPPA shared libraries ++ to have undefined symbols. ++ ++`--no-undefined-version' ++ Normally when a symbol has an undefined version, the linker will ++ ignore it. This option disallows symbols with undefined version ++ and a fatal error will be issued instead. ++ ++`--default-symver' ++ Create and use a default symbol version (the soname) for ++ unversioned exported symbols. ++ ++`--default-imported-symver' ++ Create and use a default symbol version (the soname) for ++ unversioned imported symbols. ++ ++`--no-warn-mismatch' ++ Normally `ld' will give an error if you try to link together input ++ files that are mismatched for some reason, perhaps because they ++ have been compiled for different processors or for different ++ endiannesses. This option tells `ld' that it should silently ++ permit such possible errors. This option should only be used with ++ care, in cases when you have taken some special action that ++ ensures that the linker errors are inappropriate. ++ ++`--no-whole-archive' ++ Turn off the effect of the `--whole-archive' option for subsequent ++ archive files. ++ ++`--noinhibit-exec' ++ Retain the executable output file whenever it is still usable. ++ Normally, the linker will not produce an output file if it ++ encounters errors during the link process; it exits without ++ writing an output file when it issues any error whatsoever. ++ ++`-nostdlib' ++ Only search library directories explicitly specified on the ++ command line. Library directories specified in linker scripts ++ (including linker scripts specified on the command line) are ++ ignored. ++ ++`--oformat OUTPUT-FORMAT' ++ `ld' may be configured to support more than one kind of object ++ file. If your `ld' is configured this way, you can use the ++ `--oformat' option to specify the binary format for the output ++ object file. Even when `ld' is configured to support alternative ++ object formats, you don't usually need to specify this, as `ld' ++ should be configured to produce as a default output format the most ++ usual format on each machine. OUTPUT-FORMAT is a text string, the ++ name of a particular format supported by the BFD libraries. (You ++ can list the available binary formats with `objdump -i'.) The ++ script command `OUTPUT_FORMAT' can also specify the output format, ++ but this option overrides it. *Note BFD::. ++ ++`-pie' ++`--pic-executable' ++ Create a position independent executable. This is currently only ++ supported on ELF platforms. Position independent executables are ++ similar to shared libraries in that they are relocated by the ++ dynamic linker to the virtual address the OS chooses for them ++ (which can vary between invocations). Like normal dynamically ++ linked executables they can be executed and symbols defined in the ++ executable cannot be overridden by shared libraries. ++ ++`-qmagic' ++ This option is ignored for Linux compatibility. ++ ++`-Qy' ++ This option is ignored for SVR4 compatibility. ++ ++`--relax' ++ An option with machine dependent effects. This option is only ++ supported on a few targets. *Note `ld' and the H8/300: H8/300. ++ *Note `ld' and the Intel 960 family: i960. *Note `ld' and Xtensa ++ Processors: Xtensa. *Note `ld' and PowerPC 32-bit ELF Support: ++ PowerPC ELF32. ++ ++ On some platforms, the `--relax' option performs global ++ optimizations that become possible when the linker resolves ++ addressing in the program, such as relaxing address modes and ++ synthesizing new instructions in the output object file. ++ ++ On some platforms these link time global optimizations may make ++ symbolic debugging of the resulting executable impossible. This ++ is known to be the case for the Matsushita MN10200 and MN10300 ++ family of processors. ++ ++ On platforms where this is not supported, `--relax' is accepted, ++ but ignored. ++ ++`--retain-symbols-file FILENAME' ++ Retain _only_ the symbols listed in the file FILENAME, discarding ++ all others. FILENAME is simply a flat file, with one symbol name ++ per line. This option is especially useful in environments (such ++ as VxWorks) where a large global symbol table is accumulated ++ gradually, to conserve run-time memory. ++ ++ `--retain-symbols-file' does _not_ discard undefined symbols, or ++ symbols needed for relocations. ++ ++ You may only specify `--retain-symbols-file' once in the command ++ line. It overrides `-s' and `-S'. ++ ++`-rpath DIR' ++ Add a directory to the runtime library search path. This is used ++ when linking an ELF executable with shared objects. All `-rpath' ++ arguments are concatenated and passed to the runtime linker, which ++ uses them to locate shared objects at runtime. The `-rpath' ++ option is also used when locating shared objects which are needed ++ by shared objects explicitly included in the link; see the ++ description of the `-rpath-link' option. If `-rpath' is not used ++ when linking an ELF executable, the contents of the environment ++ variable `LD_RUN_PATH' will be used if it is defined. ++ ++ The `-rpath' option may also be used on SunOS. By default, on ++ SunOS, the linker will form a runtime search patch out of all the ++ `-L' options it is given. If a `-rpath' option is used, the ++ runtime search path will be formed exclusively using the `-rpath' ++ options, ignoring the `-L' options. This can be useful when using ++ gcc, which adds many `-L' options which may be on NFS mounted ++ filesystems. ++ ++ For compatibility with other ELF linkers, if the `-R' option is ++ followed by a directory name, rather than a file name, it is ++ treated as the `-rpath' option. ++ ++`-rpath-link DIR' ++ When using ELF or SunOS, one shared library may require another. ++ This happens when an `ld -shared' link includes a shared library ++ as one of the input files. ++ ++ When the linker encounters such a dependency when doing a ++ non-shared, non-relocatable link, it will automatically try to ++ locate the required shared library and include it in the link, if ++ it is not included explicitly. In such a case, the `-rpath-link' ++ option specifies the first set of directories to search. The ++ `-rpath-link' option may specify a sequence of directory names ++ either by specifying a list of names separated by colons, or by ++ appearing multiple times. ++ ++ This option should be used with caution as it overrides the search ++ path that may have been hard compiled into a shared library. In ++ such a case it is possible to use unintentionally a different ++ search path than the runtime linker would do. ++ ++ The linker uses the following search paths to locate required ++ shared libraries. ++ 1. Any directories specified by `-rpath-link' options. ++ ++ 2. Any directories specified by `-rpath' options. The difference ++ between `-rpath' and `-rpath-link' is that directories ++ specified by `-rpath' options are included in the executable ++ and used at runtime, whereas the `-rpath-link' option is only ++ effective at link time. It is for the native linker only. ++ ++ 3. On an ELF system, if the `-rpath' and `rpath-link' options ++ were not used, search the contents of the environment variable ++ `LD_RUN_PATH'. It is for the native linker only. ++ ++ 4. On SunOS, if the `-rpath' option was not used, search any ++ directories specified using `-L' options. ++ ++ 5. For a native linker, the contents of the environment variable ++ `LD_LIBRARY_PATH'. ++ ++ 6. For a native ELF linker, the directories in `DT_RUNPATH' or ++ `DT_RPATH' of a shared library are searched for shared ++ libraries needed by it. The `DT_RPATH' entries are ignored if ++ `DT_RUNPATH' entries exist. ++ ++ 7. The default directories, normally `/lib' and `/usr/lib'. ++ ++ 8. For a native linker on an ELF system, if the file ++ `/etc/ld.so.conf' exists, the list of directories found in ++ that file. ++ ++ If the required shared library is not found, the linker will issue ++ a warning and continue with the link. ++ ++`-shared' ++`-Bshareable' ++ Create a shared library. This is currently only supported on ELF, ++ XCOFF and SunOS platforms. On SunOS, the linker will ++ automatically create a shared library if the `-e' option is not ++ used and there are undefined symbols in the link. ++ ++`--sort-common' ++ This option tells `ld' to sort the common symbols by size when it ++ places them in the appropriate output sections. First come all ++ the one byte symbols, then all the two byte, then all the four ++ byte, and then everything else. This is to prevent gaps between ++ symbols due to alignment constraints. ++ ++`--sort-section name' ++ This option will apply `SORT_BY_NAME' to all wildcard section ++ patterns in the linker script. ++ ++`--sort-section alignment' ++ This option will apply `SORT_BY_ALIGNMENT' to all wildcard section ++ patterns in the linker script. ++ ++`--split-by-file [SIZE]' ++ Similar to `--split-by-reloc' but creates a new output section for ++ each input file when SIZE is reached. SIZE defaults to a size of ++ 1 if not given. ++ ++`--split-by-reloc [COUNT]' ++ Tries to creates extra sections in the output file so that no ++ single output section in the file contains more than COUNT ++ relocations. This is useful when generating huge relocatable ++ files for downloading into certain real time kernels with the COFF ++ object file format; since COFF cannot represent more than 65535 ++ relocations in a single section. Note that this will fail to work ++ with object file formats which do not support arbitrary sections. ++ The linker will not split up individual input sections for ++ redistribution, so if a single input section contains more than ++ COUNT relocations one output section will contain that many ++ relocations. COUNT defaults to a value of 32768. ++ ++`--stats' ++ Compute and display statistics about the operation of the linker, ++ such as execution time and memory usage. ++ ++`--sysroot=DIRECTORY' ++ Use DIRECTORY as the location of the sysroot, overriding the ++ configure-time default. This option is only supported by linkers ++ that were configured using `--with-sysroot'. ++ ++`--traditional-format' ++ For some targets, the output of `ld' is different in some ways from ++ the output of some existing linker. This switch requests `ld' to ++ use the traditional format instead. ++ ++ For example, on SunOS, `ld' combines duplicate entries in the ++ symbol string table. This can reduce the size of an output file ++ with full debugging information by over 30 percent. ++ Unfortunately, the SunOS `dbx' program can not read the resulting ++ program (`gdb' has no trouble). The `--traditional-format' switch ++ tells `ld' to not combine duplicate entries. ++ ++`--section-start SECTIONNAME=ORG' ++ Locate a section in the output file at the absolute address given ++ by ORG. You may use this option as many times as necessary to ++ locate multiple sections in the command line. ORG must be a ++ single hexadecimal integer; for compatibility with other linkers, ++ you may omit the leading `0x' usually associated with hexadecimal ++ values. _Note:_ there should be no white space between ++ SECTIONNAME, the equals sign ("<=>"), and ORG. ++ ++`-Tbss ORG' ++`-Tdata ORG' ++`-Ttext ORG' ++ Same as -section-start, with `.bss', `.data' or `.text' as the ++ SECTIONNAME. ++ ++`--unresolved-symbols=METHOD' ++ Determine how to handle unresolved symbols. There are four ++ possible values for `method': ++ ++ `ignore-all' ++ Do not report any unresolved symbols. ++ ++ `report-all' ++ Report all unresolved symbols. This is the default. ++ ++ `ignore-in-object-files' ++ Report unresolved symbols that are contained in shared ++ libraries, but ignore them if they come from regular object ++ files. ++ ++ `ignore-in-shared-libs' ++ Report unresolved symbols that come from regular object ++ files, but ignore them if they come from shared libraries. ++ This can be useful when creating a dynamic binary and it is ++ known that all the shared libraries that it should be ++ referencing are included on the linker's command line. ++ ++ The behaviour for shared libraries on their own can also be ++ controlled by the `--[no-]allow-shlib-undefined' option. ++ ++ Normally the linker will generate an error message for each ++ reported unresolved symbol but the option ++ `--warn-unresolved-symbols' can change this to a warning. ++ ++`--dll-verbose' ++`--verbose' ++ Display the version number for `ld' and list the linker emulations ++ supported. Display which input files can and cannot be opened. ++ Display the linker script being used by the linker. ++ ++`--version-script=VERSION-SCRIPTFILE' ++ Specify the name of a version script to the linker. This is ++ typically used when creating shared libraries to specify ++ additional information about the version hierarchy for the library ++ being created. This option is only meaningful on ELF platforms ++ which support shared libraries. *Note VERSION::. ++ ++`--warn-common' ++ Warn when a common symbol is combined with another common symbol ++ or with a symbol definition. Unix linkers allow this somewhat ++ sloppy practise, but linkers on some other operating systems do ++ not. This option allows you to find potential problems from ++ combining global symbols. Unfortunately, some C libraries use ++ this practise, so you may get some warnings about symbols in the ++ libraries as well as in your programs. ++ ++ There are three kinds of global symbols, illustrated here by C ++ examples: ++ ++ `int i = 1;' ++ A definition, which goes in the initialized data section of ++ the output file. ++ ++ `extern int i;' ++ An undefined reference, which does not allocate space. There ++ must be either a definition or a common symbol for the ++ variable somewhere. ++ ++ `int i;' ++ A common symbol. If there are only (one or more) common ++ symbols for a variable, it goes in the uninitialized data ++ area of the output file. The linker merges multiple common ++ symbols for the same variable into a single symbol. If they ++ are of different sizes, it picks the largest size. The ++ linker turns a common symbol into a declaration, if there is ++ a definition of the same variable. ++ ++ The `--warn-common' option can produce five kinds of warnings. ++ Each warning consists of a pair of lines: the first describes the ++ symbol just encountered, and the second describes the previous ++ symbol encountered with the same name. One or both of the two ++ symbols will be a common symbol. ++ ++ 1. Turning a common symbol into a reference, because there is ++ already a definition for the symbol. ++ FILE(SECTION): warning: common of `SYMBOL' ++ overridden by definition ++ FILE(SECTION): warning: defined here ++ ++ 2. Turning a common symbol into a reference, because a later ++ definition for the symbol is encountered. This is the same ++ as the previous case, except that the symbols are encountered ++ in a different order. ++ FILE(SECTION): warning: definition of `SYMBOL' ++ overriding common ++ FILE(SECTION): warning: common is here ++ ++ 3. Merging a common symbol with a previous same-sized common ++ symbol. ++ FILE(SECTION): warning: multiple common ++ of `SYMBOL' ++ FILE(SECTION): warning: previous common is here ++ ++ 4. Merging a common symbol with a previous larger common symbol. ++ FILE(SECTION): warning: common of `SYMBOL' ++ overridden by larger common ++ FILE(SECTION): warning: larger common is here ++ ++ 5. Merging a common symbol with a previous smaller common ++ symbol. This is the same as the previous case, except that ++ the symbols are encountered in a different order. ++ FILE(SECTION): warning: common of `SYMBOL' ++ overriding smaller common ++ FILE(SECTION): warning: smaller common is here ++ ++`--warn-constructors' ++ Warn if any global constructors are used. This is only useful for ++ a few object file formats. For formats like COFF or ELF, the ++ linker can not detect the use of global constructors. ++ ++`--warn-multiple-gp' ++ Warn if multiple global pointer values are required in the output ++ file. This is only meaningful for certain processors, such as the ++ Alpha. Specifically, some processors put large-valued constants ++ in a special section. A special register (the global pointer) ++ points into the middle of this section, so that constants can be ++ loaded efficiently via a base-register relative addressing mode. ++ Since the offset in base-register relative mode is fixed and ++ relatively small (e.g., 16 bits), this limits the maximum size of ++ the constant pool. Thus, in large programs, it is often necessary ++ to use multiple global pointer values in order to be able to ++ address all possible constants. This option causes a warning to ++ be issued whenever this case occurs. ++ ++`--warn-once' ++ Only warn once for each undefined symbol, rather than once per ++ module which refers to it. ++ ++`--warn-section-align' ++ Warn if the address of an output section is changed because of ++ alignment. Typically, the alignment will be set by an input ++ section. The address will only be changed if it not explicitly ++ specified; that is, if the `SECTIONS' command does not specify a ++ start address for the section (*note SECTIONS::). ++ ++`--warn-shared-textrel' ++ Warn if the linker adds a DT_TEXTREL to a shared object. ++ ++`--warn-unresolved-symbols' ++ If the linker is going to report an unresolved symbol (see the ++ option `--unresolved-symbols') it will normally generate an error. ++ This option makes it generate a warning instead. ++ ++`--error-unresolved-symbols' ++ This restores the linker's default behaviour of generating errors ++ when it is reporting unresolved symbols. ++ ++`--whole-archive' ++ For each archive mentioned on the command line after the ++ `--whole-archive' option, include every object file in the archive ++ in the link, rather than searching the archive for the required ++ object files. This is normally used to turn an archive file into ++ a shared library, forcing every object to be included in the ++ resulting shared library. This option may be used more than once. ++ ++ Two notes when using this option from gcc: First, gcc doesn't know ++ about this option, so you have to use `-Wl,-whole-archive'. ++ Second, don't forget to use `-Wl,-no-whole-archive' after your ++ list of archives, because gcc will add its own list of archives to ++ your link and you may not want this flag to affect those as well. ++ ++`--wrap SYMBOL' ++ Use a wrapper function for SYMBOL. Any undefined reference to ++ SYMBOL will be resolved to `__wrap_SYMBOL'. Any undefined ++ reference to `__real_SYMBOL' will be resolved to SYMBOL. ++ ++ This can be used to provide a wrapper for a system function. The ++ wrapper function should be called `__wrap_SYMBOL'. If it wishes ++ to call the system function, it should call `__real_SYMBOL'. ++ ++ Here is a trivial example: ++ ++ void * ++ __wrap_malloc (size_t c) ++ { ++ printf ("malloc called with %zu\n", c); ++ return __real_malloc (c); ++ } ++ ++ If you link other code with this file using `--wrap malloc', then ++ all calls to `malloc' will call the function `__wrap_malloc' ++ instead. The call to `__real_malloc' in `__wrap_malloc' will call ++ the real `malloc' function. ++ ++ You may wish to provide a `__real_malloc' function as well, so that ++ links without the `--wrap' option will succeed. If you do this, ++ you should not put the definition of `__real_malloc' in the same ++ file as `__wrap_malloc'; if you do, the assembler may resolve the ++ call before the linker has a chance to wrap it to `malloc'. ++ ++`--eh-frame-hdr' ++ Request creation of `.eh_frame_hdr' section and ELF ++ `PT_GNU_EH_FRAME' segment header. ++ ++`--enable-new-dtags' ++`--disable-new-dtags' ++ This linker can create the new dynamic tags in ELF. But the older ++ ELF systems may not understand them. If you specify ++ `--enable-new-dtags', the dynamic tags will be created as needed. ++ If you specify `--disable-new-dtags', no new dynamic tags will be ++ created. By default, the new dynamic tags are not created. Note ++ that those options are only available for ELF systems. ++ ++`--hash-size=NUMBER' ++ Set the default size of the linker's hash tables to a prime number ++ close to NUMBER. Increasing this value can reduce the length of ++ time it takes the linker to perform its tasks, at the expense of ++ increasing the linker's memory requirements. Similarly reducing ++ this value can reduce the memory requirements at the expense of ++ speed. ++ ++`--reduce-memory-overheads' ++ This option reduces memory requirements at ld runtime, at the ++ expense of linking speed. This was introduced to select the old ++ O(n^2) algorithm for link map file generation, rather than the new ++ O(n) algorithm which uses about 40% more memory for symbol storage. ++ ++ Another effect of the switch is to set the default hash table size ++ to 1021, which again saves memory at the cost of lengthening the ++ linker's run time. This is not done however if the `--hash-size' ++ switch has been used. ++ ++ The `--reduce-memory-overheads' switch may be also be used to ++ enable other tradeoffs in future versions of the linker. ++ ++ ++2.1.1 Options Specific to i386 PE Targets ++----------------------------------------- ++ ++The i386 PE linker supports the `-shared' option, which causes the ++output to be a dynamically linked library (DLL) instead of a normal ++executable. You should name the output `*.dll' when you use this ++option. In addition, the linker fully supports the standard `*.def' ++files, which may be specified on the linker command line like an object ++file (in fact, it should precede archives it exports symbols from, to ++ensure that they get linked in, just like a normal object file). ++ ++ In addition to the options common to all targets, the i386 PE linker ++support additional command line options that are specific to the i386 ++PE target. Options that take values may be separated from their values ++by either a space or an equals sign. ++ ++`--add-stdcall-alias' ++ If given, symbols with a stdcall suffix (@NN) will be exported ++ as-is and also with the suffix stripped. [This option is specific ++ to the i386 PE targeted port of the linker] ++ ++`--base-file FILE' ++ Use FILE as the name of a file in which to save the base addresses ++ of all the relocations needed for generating DLLs with `dlltool'. ++ [This is an i386 PE specific option] ++ ++`--dll' ++ Create a DLL instead of a regular executable. You may also use ++ `-shared' or specify a `LIBRARY' in a given `.def' file. [This ++ option is specific to the i386 PE targeted port of the linker] ++ ++`--enable-stdcall-fixup' ++`--disable-stdcall-fixup' ++ If the link finds a symbol that it cannot resolve, it will attempt ++ to do "fuzzy linking" by looking for another defined symbol that ++ differs only in the format of the symbol name (cdecl vs stdcall) ++ and will resolve that symbol by linking to the match. For ++ example, the undefined symbol `_foo' might be linked to the ++ function `_foo@12', or the undefined symbol `_bar@16' might be ++ linked to the function `_bar'. When the linker does this, it ++ prints a warning, since it normally should have failed to link, ++ but sometimes import libraries generated from third-party dlls may ++ need this feature to be usable. If you specify ++ `--enable-stdcall-fixup', this feature is fully enabled and ++ warnings are not printed. If you specify ++ `--disable-stdcall-fixup', this feature is disabled and such ++ mismatches are considered to be errors. [This option is specific ++ to the i386 PE targeted port of the linker] ++ ++`--export-all-symbols' ++ If given, all global symbols in the objects used to build a DLL ++ will be exported by the DLL. Note that this is the default if ++ there otherwise wouldn't be any exported symbols. When symbols are ++ explicitly exported via DEF files or implicitly exported via ++ function attributes, the default is to not export anything else ++ unless this option is given. Note that the symbols `DllMain@12', ++ `DllEntryPoint@0', `DllMainCRTStartup@12', and `impure_ptr' will ++ not be automatically exported. Also, symbols imported from other ++ DLLs will not be re-exported, nor will symbols specifying the ++ DLL's internal layout such as those beginning with `_head_' or ++ ending with `_iname'. In addition, no symbols from `libgcc', ++ `libstd++', `libmingw32', or `crtX.o' will be exported. Symbols ++ whose names begin with `__rtti_' or `__builtin_' will not be ++ exported, to help with C++ DLLs. Finally, there is an extensive ++ list of cygwin-private symbols that are not exported (obviously, ++ this applies on when building DLLs for cygwin targets). These ++ cygwin-excludes are: `_cygwin_dll_entry@12', ++ `_cygwin_crt0_common@8', `_cygwin_noncygwin_dll_entry@12', ++ `_fmode', `_impure_ptr', `cygwin_attach_dll', `cygwin_premain0', ++ `cygwin_premain1', `cygwin_premain2', `cygwin_premain3', and ++ `environ'. [This option is specific to the i386 PE targeted port ++ of the linker] ++ ++`--exclude-symbols SYMBOL,SYMBOL,...' ++ Specifies a list of symbols which should not be automatically ++ exported. The symbol names may be delimited by commas or colons. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--file-alignment' ++ Specify the file alignment. Sections in the file will always ++ begin at file offsets which are multiples of this number. This ++ defaults to 512. [This option is specific to the i386 PE targeted ++ port of the linker] ++ ++`--heap RESERVE' ++`--heap RESERVE,COMMIT' ++ Specify the amount of memory to reserve (and optionally commit) to ++ be used as heap for this program. The default is 1Mb reserved, 4K ++ committed. [This option is specific to the i386 PE targeted port ++ of the linker] ++ ++`--image-base VALUE' ++ Use VALUE as the base address of your program or dll. This is the ++ lowest memory location that will be used when your program or dll ++ is loaded. To reduce the need to relocate and improve performance ++ of your dlls, each should have a unique base address and not ++ overlap any other dlls. The default is 0x400000 for executables, ++ and 0x10000000 for dlls. [This option is specific to the i386 PE ++ targeted port of the linker] ++ ++`--kill-at' ++ If given, the stdcall suffixes (@NN) will be stripped from symbols ++ before they are exported. [This option is specific to the i386 PE ++ targeted port of the linker] ++ ++`--large-address-aware' ++ If given, the appropriate bit in the "Charateristics" field of the ++ COFF header is set to indicate that this executable supports ++ virtual addresses greater than 2 gigabytes. This should be used ++ in conjuction with the /3GB or /USERVA=VALUE megabytes switch in ++ the "[operating systems]" section of the BOOT.INI. Otherwise, ++ this bit has no effect. [This option is specific to PE targeted ++ ports of the linker] ++ ++`--major-image-version VALUE' ++ Sets the major number of the "image version". Defaults to 1. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--major-os-version VALUE' ++ Sets the major number of the "os version". Defaults to 4. [This ++ option is specific to the i386 PE targeted port of the linker] ++ ++`--major-subsystem-version VALUE' ++ Sets the major number of the "subsystem version". Defaults to 4. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--minor-image-version VALUE' ++ Sets the minor number of the "image version". Defaults to 0. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--minor-os-version VALUE' ++ Sets the minor number of the "os version". Defaults to 0. [This ++ option is specific to the i386 PE targeted port of the linker] ++ ++`--minor-subsystem-version VALUE' ++ Sets the minor number of the "subsystem version". Defaults to 0. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--output-def FILE' ++ The linker will create the file FILE which will contain a DEF file ++ corresponding to the DLL the linker is generating. This DEF file ++ (which should be called `*.def') may be used to create an import ++ library with `dlltool' or may be used as a reference to ++ automatically or implicitly exported symbols. [This option is ++ specific to the i386 PE targeted port of the linker] ++ ++`--out-implib FILE' ++ The linker will create the file FILE which will contain an import ++ lib corresponding to the DLL the linker is generating. This import ++ lib (which should be called `*.dll.a' or `*.a' may be used to link ++ clients against the generated DLL; this behaviour makes it ++ possible to skip a separate `dlltool' import library creation step. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--enable-auto-image-base' ++ Automatically choose the image base for DLLs, unless one is ++ specified using the `--image-base' argument. By using a hash ++ generated from the dllname to create unique image bases for each ++ DLL, in-memory collisions and relocations which can delay program ++ execution are avoided. [This option is specific to the i386 PE ++ targeted port of the linker] ++ ++`--disable-auto-image-base' ++ Do not automatically generate a unique image base. If there is no ++ user-specified image base (`--image-base') then use the platform ++ default. [This option is specific to the i386 PE targeted port of ++ the linker] ++ ++`--dll-search-prefix STRING' ++ When linking dynamically to a dll without an import library, ++ search for `.dll' in preference to ++ `lib.dll'. This behaviour allows easy distinction ++ between DLLs built for the various "subplatforms": native, cygwin, ++ uwin, pw, etc. For instance, cygwin DLLs typically use ++ `--dll-search-prefix=cyg'. [This option is specific to the i386 ++ PE targeted port of the linker] ++ ++`--enable-auto-import' ++ Do sophisticated linking of `_symbol' to `__imp__symbol' for DATA ++ imports from DLLs, and create the necessary thunking symbols when ++ building the import libraries with those DATA exports. Note: Use ++ of the 'auto-import' extension will cause the text section of the ++ image file to be made writable. This does not conform to the ++ PE-COFF format specification published by Microsoft. ++ ++ Using 'auto-import' generally will 'just work' - but sometimes you ++ may see this message: ++ ++ "variable '' can't be auto-imported. Please read the ++ documentation for ld's `--enable-auto-import' for details." ++ ++ This message occurs when some (sub)expression accesses an address ++ ultimately given by the sum of two constants (Win32 import tables ++ only allow one). Instances where this may occur include accesses ++ to member fields of struct variables imported from a DLL, as well ++ as using a constant index into an array variable imported from a ++ DLL. Any multiword variable (arrays, structs, long long, etc) may ++ trigger this error condition. However, regardless of the exact ++ data type of the offending exported variable, ld will always ++ detect it, issue the warning, and exit. ++ ++ There are several ways to address this difficulty, regardless of ++ the data type of the exported variable: ++ ++ One way is to use -enable-runtime-pseudo-reloc switch. This leaves ++ the task of adjusting references in your client code for runtime ++ environment, so this method works only when runtime environment ++ supports this feature. ++ ++ A second solution is to force one of the 'constants' to be a ++ variable - that is, unknown and un-optimizable at compile time. ++ For arrays, there are two possibilities: a) make the indexee (the ++ array's address) a variable, or b) make the 'constant' index a ++ variable. Thus: ++ ++ extern type extern_array[]; ++ extern_array[1] --> ++ { volatile type *t=extern_array; t[1] } ++ ++ or ++ ++ extern type extern_array[]; ++ extern_array[1] --> ++ { volatile int t=1; extern_array[t] } ++ ++ For structs (and most other multiword data types) the only option ++ is to make the struct itself (or the long long, or the ...) ++ variable: ++ ++ extern struct s extern_struct; ++ extern_struct.field --> ++ { volatile struct s *t=&extern_struct; t->field } ++ ++ or ++ ++ extern long long extern_ll; ++ extern_ll --> ++ { volatile long long * local_ll=&extern_ll; *local_ll } ++ ++ A third method of dealing with this difficulty is to abandon ++ 'auto-import' for the offending symbol and mark it with ++ `__declspec(dllimport)'. However, in practise that requires using ++ compile-time #defines to indicate whether you are building a DLL, ++ building client code that will link to the DLL, or merely ++ building/linking to a static library. In making the choice ++ between the various methods of resolving the 'direct address with ++ constant offset' problem, you should consider typical real-world ++ usage: ++ ++ Original: ++ --foo.h ++ extern int arr[]; ++ --foo.c ++ #include "foo.h" ++ void main(int argc, char **argv){ ++ printf("%d\n",arr[1]); ++ } ++ ++ Solution 1: ++ --foo.h ++ extern int arr[]; ++ --foo.c ++ #include "foo.h" ++ void main(int argc, char **argv){ ++ /* This workaround is for win32 and cygwin; do not "optimize" */ ++ volatile int *parr = arr; ++ printf("%d\n",parr[1]); ++ } ++ ++ Solution 2: ++ --foo.h ++ /* Note: auto-export is assumed (no __declspec(dllexport)) */ ++ #if (defined(_WIN32) || defined(__CYGWIN__)) && \ ++ !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC)) ++ #define FOO_IMPORT __declspec(dllimport) ++ #else ++ #define FOO_IMPORT ++ #endif ++ extern FOO_IMPORT int arr[]; ++ --foo.c ++ #include "foo.h" ++ void main(int argc, char **argv){ ++ printf("%d\n",arr[1]); ++ } ++ ++ A fourth way to avoid this problem is to re-code your library to ++ use a functional interface rather than a data interface for the ++ offending variables (e.g. set_foo() and get_foo() accessor ++ functions). [This option is specific to the i386 PE targeted port ++ of the linker] ++ ++`--disable-auto-import' ++ Do not attempt to do sophisticated linking of `_symbol' to ++ `__imp__symbol' for DATA imports from DLLs. [This option is ++ specific to the i386 PE targeted port of the linker] ++ ++`--enable-runtime-pseudo-reloc' ++ If your code contains expressions described in -enable-auto-import ++ section, that is, DATA imports from DLL with non-zero offset, this ++ switch will create a vector of 'runtime pseudo relocations' which ++ can be used by runtime environment to adjust references to such ++ data in your client code. [This option is specific to the i386 PE ++ targeted port of the linker] ++ ++`--disable-runtime-pseudo-reloc' ++ Do not create pseudo relocations for non-zero offset DATA imports ++ from DLLs. This is the default. [This option is specific to the ++ i386 PE targeted port of the linker] ++ ++`--enable-extra-pe-debug' ++ Show additional debug info related to auto-import symbol thunking. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--section-alignment' ++ Sets the section alignment. Sections in memory will always begin ++ at addresses which are a multiple of this number. Defaults to ++ 0x1000. [This option is specific to the i386 PE targeted port of ++ the linker] ++ ++`--stack RESERVE' ++`--stack RESERVE,COMMIT' ++ Specify the amount of memory to reserve (and optionally commit) to ++ be used as stack for this program. The default is 2Mb reserved, 4K ++ committed. [This option is specific to the i386 PE targeted port ++ of the linker] ++ ++`--subsystem WHICH' ++`--subsystem WHICH:MAJOR' ++`--subsystem WHICH:MAJOR.MINOR' ++ Specifies the subsystem under which your program will execute. The ++ legal values for WHICH are `native', `windows', `console', ++ `posix', and `xbox'. You may optionally set the subsystem version ++ also. Numeric values are also accepted for WHICH. [This option ++ is specific to the i386 PE targeted port of the linker] ++ ++ ++ ++File: ld.info, Node: Environment, Prev: Options, Up: Invocation ++ ++2.2 Environment Variables ++========================= ++ ++You can change the behaviour of `ld' with the environment variables ++`GNUTARGET', `LDEMULATION' and `COLLECT_NO_DEMANGLE'. ++ ++ `GNUTARGET' determines the input-file object format if you don't use ++`-b' (or its synonym `--format'). Its value should be one of the BFD ++names for an input format (*note BFD::). If there is no `GNUTARGET' in ++the environment, `ld' uses the natural format of the target. If ++`GNUTARGET' is set to `default' then BFD attempts to discover the input ++format by examining binary input files; this method often succeeds, but ++there are potential ambiguities, since there is no method of ensuring ++that the magic number used to specify object-file formats is unique. ++However, the configuration procedure for BFD on each system places the ++conventional format for that system first in the search-list, so ++ambiguities are resolved in favor of convention. ++ ++ `LDEMULATION' determines the default emulation if you don't use the ++`-m' option. The emulation can affect various aspects of linker ++behaviour, particularly the default linker script. You can list the ++available emulations with the `--verbose' or `-V' options. If the `-m' ++option is not used, and the `LDEMULATION' environment variable is not ++defined, the default emulation depends upon how the linker was ++configured. ++ ++ Normally, the linker will default to demangling symbols. However, if ++`COLLECT_NO_DEMANGLE' is set in the environment, then it will default ++to not demangling symbols. This environment variable is used in a ++similar fashion by the `gcc' linker wrapper program. The default may ++be overridden by the `--demangle' and `--no-demangle' options. ++ ++ ++File: ld.info, Node: Scripts, Next: Machine Dependent, Prev: Invocation, Up: Top ++ ++3 Linker Scripts ++**************** ++ ++Every link is controlled by a "linker script". This script is written ++in the linker command language. ++ ++ The main purpose of the linker script is to describe how the ++sections in the input files should be mapped into the output file, and ++to control the memory layout of the output file. Most linker scripts ++do nothing more than this. However, when necessary, the linker script ++can also direct the linker to perform many other operations, using the ++commands described below. ++ ++ The linker always uses a linker script. If you do not supply one ++yourself, the linker will use a default script that is compiled into the ++linker executable. You can use the `--verbose' command line option to ++display the default linker script. Certain command line options, such ++as `-r' or `-N', will affect the default linker script. ++ ++ You may supply your own linker script by using the `-T' command line ++option. When you do this, your linker script will replace the default ++linker script. ++ ++ You may also use linker scripts implicitly by naming them as input ++files to the linker, as though they were files to be linked. *Note ++Implicit Linker Scripts::. ++ ++* Menu: ++ ++* Basic Script Concepts:: Basic Linker Script Concepts ++* Script Format:: Linker Script Format ++* Simple Example:: Simple Linker Script Example ++* Simple Commands:: Simple Linker Script Commands ++* Assignments:: Assigning Values to Symbols ++* SECTIONS:: SECTIONS Command ++* MEMORY:: MEMORY Command ++* PHDRS:: PHDRS Command ++* VERSION:: VERSION Command ++* Expressions:: Expressions in Linker Scripts ++* Implicit Linker Scripts:: Implicit Linker Scripts ++ ++ ++File: ld.info, Node: Basic Script Concepts, Next: Script Format, Up: Scripts ++ ++3.1 Basic Linker Script Concepts ++================================ ++ ++We need to define some basic concepts and vocabulary in order to ++describe the linker script language. ++ ++ The linker combines input files into a single output file. The ++output file and each input file are in a special data format known as an ++"object file format". Each file is called an "object file". The ++output file is often called an "executable", but for our purposes we ++will also call it an object file. Each object file has, among other ++things, a list of "sections". We sometimes refer to a section in an ++input file as an "input section"; similarly, a section in the output ++file is an "output section". ++ ++ Each section in an object file has a name and a size. Most sections ++also have an associated block of data, known as the "section contents". ++A section may be marked as "loadable", which mean that the contents ++should be loaded into memory when the output file is run. A section ++with no contents may be "allocatable", which means that an area in ++memory should be set aside, but nothing in particular should be loaded ++there (in some cases this memory must be zeroed out). A section which ++is neither loadable nor allocatable typically contains some sort of ++debugging information. ++ ++ Every loadable or allocatable output section has two addresses. The ++first is the "VMA", or virtual memory address. This is the address the ++section will have when the output file is run. The second is the ++"LMA", or load memory address. This is the address at which the ++section will be loaded. In most cases the two addresses will be the ++same. An example of when they might be different is when a data section ++is loaded into ROM, and then copied into RAM when the program starts up ++(this technique is often used to initialize global variables in a ROM ++based system). In this case the ROM address would be the LMA, and the ++RAM address would be the VMA. ++ ++ You can see the sections in an object file by using the `objdump' ++program with the `-h' option. ++ ++ Every object file also has a list of "symbols", known as the "symbol ++table". A symbol may be defined or undefined. Each symbol has a name, ++and each defined symbol has an address, among other information. If ++you compile a C or C++ program into an object file, you will get a ++defined symbol for every defined function and global or static ++variable. Every undefined function or global variable which is ++referenced in the input file will become an undefined symbol. ++ ++ You can see the symbols in an object file by using the `nm' program, ++or by using the `objdump' program with the `-t' option. ++ ++ ++File: ld.info, Node: Script Format, Next: Simple Example, Prev: Basic Script Concepts, Up: Scripts ++ ++3.2 Linker Script Format ++======================== ++ ++Linker scripts are text files. ++ ++ You write a linker script as a series of commands. Each command is ++either a keyword, possibly followed by arguments, or an assignment to a ++symbol. You may separate commands using semicolons. Whitespace is ++generally ignored. ++ ++ Strings such as file or format names can normally be entered ++directly. If the file name contains a character such as a comma which ++would otherwise serve to separate file names, you may put the file name ++in double quotes. There is no way to use a double quote character in a ++file name. ++ ++ You may include comments in linker scripts just as in C, delimited by ++`/*' and `*/'. As in C, comments are syntactically equivalent to ++whitespace. ++ ++ ++File: ld.info, Node: Simple Example, Next: Simple Commands, Prev: Script Format, Up: Scripts ++ ++3.3 Simple Linker Script Example ++================================ ++ ++Many linker scripts are fairly simple. ++ ++ The simplest possible linker script has just one command: ++`SECTIONS'. You use the `SECTIONS' command to describe the memory ++layout of the output file. ++ ++ The `SECTIONS' command is a powerful command. Here we will describe ++a simple use of it. Let's assume your program consists only of code, ++initialized data, and uninitialized data. These will be in the ++`.text', `.data', and `.bss' sections, respectively. Let's assume ++further that these are the only sections which appear in your input ++files. ++ ++ For this example, let's say that the code should be loaded at address ++0x10000, and that the data should start at address 0x8000000. Here is a ++linker script which will do that: ++ SECTIONS ++ { ++ . = 0x10000; ++ .text : { *(.text) } ++ . = 0x8000000; ++ .data : { *(.data) } ++ .bss : { *(.bss) } ++ } ++ ++ You write the `SECTIONS' command as the keyword `SECTIONS', followed ++by a series of symbol assignments and output section descriptions ++enclosed in curly braces. ++ ++ The first line inside the `SECTIONS' command of the above example ++sets the value of the special symbol `.', which is the location ++counter. If you do not specify the address of an output section in some ++other way (other ways are described later), the address is set from the ++current value of the location counter. The location counter is then ++incremented by the size of the output section. At the start of the ++`SECTIONS' command, the location counter has the value `0'. ++ ++ The second line defines an output section, `.text'. The colon is ++required syntax which may be ignored for now. Within the curly braces ++after the output section name, you list the names of the input sections ++which should be placed into this output section. The `*' is a wildcard ++which matches any file name. The expression `*(.text)' means all ++`.text' input sections in all input files. ++ ++ Since the location counter is `0x10000' when the output section ++`.text' is defined, the linker will set the address of the `.text' ++section in the output file to be `0x10000'. ++ ++ The remaining lines define the `.data' and `.bss' sections in the ++output file. The linker will place the `.data' output section at ++address `0x8000000'. After the linker places the `.data' output ++section, the value of the location counter will be `0x8000000' plus the ++size of the `.data' output section. The effect is that the linker will ++place the `.bss' output section immediately after the `.data' output ++section in memory. ++ ++ The linker will ensure that each output section has the required ++alignment, by increasing the location counter if necessary. In this ++example, the specified addresses for the `.text' and `.data' sections ++will probably satisfy any alignment constraints, but the linker may ++have to create a small gap between the `.data' and `.bss' sections. ++ ++ That's it! That's a simple and complete linker script. ++ ++ ++File: ld.info, Node: Simple Commands, Next: Assignments, Prev: Simple Example, Up: Scripts ++ ++3.4 Simple Linker Script Commands ++================================= ++ ++In this section we describe the simple linker script commands. ++ ++* Menu: ++ ++* Entry Point:: Setting the entry point ++* File Commands:: Commands dealing with files ++ ++* Format Commands:: Commands dealing with object file formats ++ ++* Miscellaneous Commands:: Other linker script commands ++ ++ ++File: ld.info, Node: Entry Point, Next: File Commands, Up: Simple Commands ++ ++3.4.1 Setting the Entry Point ++----------------------------- ++ ++The first instruction to execute in a program is called the "entry ++point". You can use the `ENTRY' linker script command to set the entry ++point. The argument is a symbol name: ++ ENTRY(SYMBOL) ++ ++ There are several ways to set the entry point. The linker will set ++the entry point by trying each of the following methods in order, and ++stopping when one of them succeeds: ++ * the `-e' ENTRY command-line option; ++ ++ * the `ENTRY(SYMBOL)' command in a linker script; ++ ++ * the value of the symbol `start', if defined; ++ ++ * the address of the first byte of the `.text' section, if present; ++ ++ * The address `0'. ++ ++ ++File: ld.info, Node: File Commands, Next: Format Commands, Prev: Entry Point, Up: Simple Commands ++ ++3.4.2 Commands Dealing with Files ++--------------------------------- ++ ++Several linker script commands deal with files. ++ ++`INCLUDE FILENAME' ++ Include the linker script FILENAME at this point. The file will ++ be searched for in the current directory, and in any directory ++ specified with the `-L' option. You can nest calls to `INCLUDE' ++ up to 10 levels deep. ++ ++`INPUT(FILE, FILE, ...)' ++`INPUT(FILE FILE ...)' ++ The `INPUT' command directs the linker to include the named files ++ in the link, as though they were named on the command line. ++ ++ For example, if you always want to include `subr.o' any time you do ++ a link, but you can't be bothered to put it on every link command ++ line, then you can put `INPUT (subr.o)' in your linker script. ++ ++ In fact, if you like, you can list all of your input files in the ++ linker script, and then invoke the linker with nothing but a `-T' ++ option. ++ ++ In case a "sysroot prefix" is configured, and the filename starts ++ with the `/' character, and the script being processed was located ++ inside the "sysroot prefix", the filename will be looked for in ++ the "sysroot prefix". Otherwise, the linker will try to open the ++ file in the current directory. If it is not found, the linker ++ will search through the archive library search path. See the ++ description of `-L' in *Note Command Line Options: Options. ++ ++ If you use `INPUT (-lFILE)', `ld' will transform the name to ++ `libFILE.a', as with the command line argument `-l'. ++ ++ When you use the `INPUT' command in an implicit linker script, the ++ files will be included in the link at the point at which the linker ++ script file is included. This can affect archive searching. ++ ++`GROUP(FILE, FILE, ...)' ++`GROUP(FILE FILE ...)' ++ The `GROUP' command is like `INPUT', except that the named files ++ should all be archives, and they are searched repeatedly until no ++ new undefined references are created. See the description of `-(' ++ in *Note Command Line Options: Options. ++ ++`AS_NEEDED(FILE, FILE, ...)' ++`AS_NEEDED(FILE FILE ...)' ++ This construct can appear only inside of the `INPUT' or `GROUP' ++ commands, among other filenames. The files listed will be handled ++ as if they appear directly in the `INPUT' or `GROUP' commands, ++ with the exception of ELF shared libraries, that will be added only ++ when they are actually needed. This construct essentially enables ++ `--as-needed' option for all the files listed inside of it and ++ restores previous `--as-needed' resp. `--no-as-needed' setting ++ afterwards. ++ ++`OUTPUT(FILENAME)' ++ The `OUTPUT' command names the output file. Using ++ `OUTPUT(FILENAME)' in the linker script is exactly like using `-o ++ FILENAME' on the command line (*note Command Line Options: ++ Options.). If both are used, the command line option takes ++ precedence. ++ ++ You can use the `OUTPUT' command to define a default name for the ++ output file other than the usual default of `a.out'. ++ ++`SEARCH_DIR(PATH)' ++ The `SEARCH_DIR' command adds PATH to the list of paths where `ld' ++ looks for archive libraries. Using `SEARCH_DIR(PATH)' is exactly ++ like using `-L PATH' on the command line (*note Command Line ++ Options: Options.). If both are used, then the linker will search ++ both paths. Paths specified using the command line option are ++ searched first. ++ ++`STARTUP(FILENAME)' ++ The `STARTUP' command is just like the `INPUT' command, except ++ that FILENAME will become the first input file to be linked, as ++ though it were specified first on the command line. This may be ++ useful when using a system in which the entry point is always the ++ start of the first file. ++ ++ ++File: ld.info, Node: Format Commands, Next: Miscellaneous Commands, Prev: File Commands, Up: Simple Commands ++ ++3.4.3 Commands Dealing with Object File Formats ++----------------------------------------------- ++ ++A couple of linker script commands deal with object file formats. ++ ++`OUTPUT_FORMAT(BFDNAME)' ++`OUTPUT_FORMAT(DEFAULT, BIG, LITTLE)' ++ The `OUTPUT_FORMAT' command names the BFD format to use for the ++ output file (*note BFD::). Using `OUTPUT_FORMAT(BFDNAME)' is ++ exactly like using `--oformat BFDNAME' on the command line (*note ++ Command Line Options: Options.). If both are used, the command ++ line option takes precedence. ++ ++ You can use `OUTPUT_FORMAT' with three arguments to use different ++ formats based on the `-EB' and `-EL' command line options. This ++ permits the linker script to set the output format based on the ++ desired endianness. ++ ++ If neither `-EB' nor `-EL' are used, then the output format will ++ be the first argument, DEFAULT. If `-EB' is used, the output ++ format will be the second argument, BIG. If `-EL' is used, the ++ output format will be the third argument, LITTLE. ++ ++ For example, the default linker script for the MIPS ELF target ++ uses this command: ++ OUTPUT_FORMAT(elf32-bigmips, elf32-bigmips, elf32-littlemips) ++ This says that the default format for the output file is ++ `elf32-bigmips', but if the user uses the `-EL' command line ++ option, the output file will be created in the `elf32-littlemips' ++ format. ++ ++`TARGET(BFDNAME)' ++ The `TARGET' command names the BFD format to use when reading input ++ files. It affects subsequent `INPUT' and `GROUP' commands. This ++ command is like using `-b BFDNAME' on the command line (*note ++ Command Line Options: Options.). If the `TARGET' command is used ++ but `OUTPUT_FORMAT' is not, then the last `TARGET' command is also ++ used to set the format for the output file. *Note BFD::. ++ ++ ++File: ld.info, Node: Miscellaneous Commands, Prev: Format Commands, Up: Simple Commands ++ ++3.4.4 Other Linker Script Commands ++---------------------------------- ++ ++There are a few other linker scripts commands. ++ ++`ASSERT(EXP, MESSAGE)' ++ Ensure that EXP is non-zero. If it is zero, then exit the linker ++ with an error code, and print MESSAGE. ++ ++`EXTERN(SYMBOL SYMBOL ...)' ++ Force SYMBOL to be entered in the output file as an undefined ++ symbol. Doing this may, for example, trigger linking of additional ++ modules from standard libraries. You may list several SYMBOLs for ++ each `EXTERN', and you may use `EXTERN' multiple times. This ++ command has the same effect as the `-u' command-line option. ++ ++`FORCE_COMMON_ALLOCATION' ++ This command has the same effect as the `-d' command-line option: ++ to make `ld' assign space to common symbols even if a relocatable ++ output file is specified (`-r'). ++ ++`INHIBIT_COMMON_ALLOCATION' ++ This command has the same effect as the `--no-define-common' ++ command-line option: to make `ld' omit the assignment of addresses ++ to common symbols even for a non-relocatable output file. ++ ++`NOCROSSREFS(SECTION SECTION ...)' ++ This command may be used to tell `ld' to issue an error about any ++ references among certain output sections. ++ ++ In certain types of programs, particularly on embedded systems when ++ using overlays, when one section is loaded into memory, another ++ section will not be. Any direct references between the two ++ sections would be errors. For example, it would be an error if ++ code in one section called a function defined in the other section. ++ ++ The `NOCROSSREFS' command takes a list of output section names. If ++ `ld' detects any cross references between the sections, it reports ++ an error and returns a non-zero exit status. Note that the ++ `NOCROSSREFS' command uses output section names, not input section ++ names. ++ ++`OUTPUT_ARCH(BFDARCH)' ++ Specify a particular output machine architecture. The argument is ++ one of the names used by the BFD library (*note BFD::). You can ++ see the architecture of an object file by using the `objdump' ++ program with the `-f' option. ++ ++ ++File: ld.info, Node: Assignments, Next: SECTIONS, Prev: Simple Commands, Up: Scripts ++ ++3.5 Assigning Values to Symbols ++=============================== ++ ++You may assign a value to a symbol in a linker script. This will define ++the symbol and place it into the symbol table with a global scope. ++ ++* Menu: ++ ++* Simple Assignments:: Simple Assignments ++* PROVIDE:: PROVIDE ++* PROVIDE_HIDDEN:: PROVIDE_HIDDEN ++* Source Code Reference:: How to use a linker script defined symbol in source code ++ ++ ++File: ld.info, Node: Simple Assignments, Next: PROVIDE, Up: Assignments ++ ++3.5.1 Simple Assignments ++------------------------ ++ ++You may assign to a symbol using any of the C assignment operators: ++ ++`SYMBOL = EXPRESSION ;' ++`SYMBOL += EXPRESSION ;' ++`SYMBOL -= EXPRESSION ;' ++`SYMBOL *= EXPRESSION ;' ++`SYMBOL /= EXPRESSION ;' ++`SYMBOL <<= EXPRESSION ;' ++`SYMBOL >>= EXPRESSION ;' ++`SYMBOL &= EXPRESSION ;' ++`SYMBOL |= EXPRESSION ;' ++ ++ The first case will define SYMBOL to the value of EXPRESSION. In ++the other cases, SYMBOL must already be defined, and the value will be ++adjusted accordingly. ++ ++ The special symbol name `.' indicates the location counter. You may ++only use this within a `SECTIONS' command. *Note Location Counter::. ++ ++ The semicolon after EXPRESSION is required. ++ ++ Expressions are defined below; see *Note Expressions::. ++ ++ You may write symbol assignments as commands in their own right, or ++as statements within a `SECTIONS' command, or as part of an output ++section description in a `SECTIONS' command. ++ ++ The section of the symbol will be set from the section of the ++expression; for more information, see *Note Expression Section::. ++ ++ Here is an example showing the three different places that symbol ++assignments may be used: ++ ++ floating_point = 0; ++ SECTIONS ++ { ++ .text : ++ { ++ *(.text) ++ _etext = .; ++ } ++ _bdata = (. + 3) & ~ 3; ++ .data : { *(.data) } ++ } ++ In this example, the symbol `floating_point' will be defined as ++zero. The symbol `_etext' will be defined as the address following the ++last `.text' input section. The symbol `_bdata' will be defined as the ++address following the `.text' output section aligned upward to a 4 byte ++boundary. ++ ++ ++File: ld.info, Node: PROVIDE, Next: PROVIDE_HIDDEN, Prev: Simple Assignments, Up: Assignments ++ ++3.5.2 PROVIDE ++------------- ++ ++In some cases, it is desirable for a linker script to define a symbol ++only if it is referenced and is not defined by any object included in ++the link. For example, traditional linkers defined the symbol `etext'. ++However, ANSI C requires that the user be able to use `etext' as a ++function name without encountering an error. The `PROVIDE' keyword may ++be used to define a symbol, such as `etext', only if it is referenced ++but not defined. The syntax is `PROVIDE(SYMBOL = EXPRESSION)'. ++ ++ Here is an example of using `PROVIDE' to define `etext': ++ SECTIONS ++ { ++ .text : ++ { ++ *(.text) ++ _etext = .; ++ PROVIDE(etext = .); ++ } ++ } ++ ++ In this example, if the program defines `_etext' (with a leading ++underscore), the linker will give a multiple definition error. If, on ++the other hand, the program defines `etext' (with no leading ++underscore), the linker will silently use the definition in the program. ++If the program references `etext' but does not define it, the linker ++will use the definition in the linker script. ++ ++ ++File: ld.info, Node: PROVIDE_HIDDEN, Next: Source Code Reference, Prev: PROVIDE, Up: Assignments ++ ++3.5.3 PROVIDE_HIDDEN ++-------------------- ++ ++Similar to `PROVIDE'. For ELF targeted ports, the symbol will be ++hidden and won't be exported. ++ ++ ++File: ld.info, Node: Source Code Reference, Prev: PROVIDE_HIDDEN, Up: Assignments ++ ++3.5.4 Source Code Reference ++--------------------------- ++ ++Accessing a linker script defined variable from source code is not ++intuitive. In particular a linker script symbol is not equivalent to a ++variable declaration in a high level language, it is instead a symbol ++that does not have a value. ++ ++ Before going further, it is important to note that compilers often ++transform names in the source code into different names when they are ++stored in the symbol table. For example, Fortran compilers commonly ++prepend or append an underscore, and C++ performs extensive `name ++mangling'. Therefore there might be a discrepancy between the name of ++a variable as it is used in source code and the name of the same ++variable as it is defined in a linker script. For example in C a ++linker script variable might be referred to as: ++ ++ extern int foo; ++ ++ But in the linker script it might be defined as: ++ ++ _foo = 1000; ++ ++ In the remaining examples however it is assumed that no name ++transformation has taken place. ++ ++ When a symbol is declared in a high level language such as C, two ++things happen. The first is that the compiler reserves enough space in ++the program's memory to hold the _value_ of the symbol. The second is ++that the compiler creates an entry in the program's symbol table which ++holds the symbol's _address_. ie the symbol table contains the address ++of the block of memory holding the symbol's value. So for example the ++following C declaration, at file scope: ++ ++ int foo = 1000; ++ ++ creates a entry called `foo' in the symbol table. This entry holds ++the address of an `int' sized block of memory where the number 1000 is ++initially stored. ++ ++ When a program references a symbol the compiler generates code that ++first accesses the symbol table to find the address of the symbol's ++memory block and then code to read the value from that memory block. ++So: ++ ++ foo = 1; ++ ++ looks up the symbol `foo' in the symbol table, gets the address ++associated with this symbol and then writes the value 1 into that ++address. Whereas: ++ ++ int * a = & foo; ++ ++ looks up the symbol `foo' in the symbol table, gets it address and ++then copies this address into the block of memory associated with the ++variable `a'. ++ ++ Linker scripts symbol declarations, by contrast, create an entry in ++the symbol table but do not assign any memory to them. Thus they are ++an address without a value. So for example the linker script ++definition: ++ ++ foo = 1000; ++ ++ creates an entry in the symbol table called `foo' which holds the ++address of memory location 1000, but nothing special is stored at ++address 1000. This means that you cannot access the _value_ of a ++linker script defined symbol - it has no value - all you can do is ++access the _address_ of a linker script defined symbol. ++ ++ Hence when you are using a linker script defined symbol in source ++code you should always take the address of the symbol, and never ++attempt to use its value. For example suppose you want to copy the ++contents of a section of memory called .ROM into a section called ++.FLASH and the linker script contains these declarations: ++ ++ start_of_ROM = .ROM; ++ end_of_ROM = .ROM + sizeof (.ROM) - 1; ++ start_of_FLASH = .FLASH; ++ ++ Then the C source code to perform the copy would be: ++ ++ extern char start_of_ROM, end_of_ROM, start_of_FLASH; ++ ++ memcpy (& start_of_FLASH, & start_of_ROM, & end_of_ROM - & start_of_ROM); ++ ++ Note the use of the `&' operators. These are correct. ++ ++ ++File: ld.info, Node: SECTIONS, Next: MEMORY, Prev: Assignments, Up: Scripts ++ ++3.6 SECTIONS Command ++==================== ++ ++The `SECTIONS' command tells the linker how to map input sections into ++output sections, and how to place the output sections in memory. ++ ++ The format of the `SECTIONS' command is: ++ SECTIONS ++ { ++ SECTIONS-COMMAND ++ SECTIONS-COMMAND ++ ... ++ } ++ ++ Each SECTIONS-COMMAND may of be one of the following: ++ ++ * an `ENTRY' command (*note Entry command: Entry Point.) ++ ++ * a symbol assignment (*note Assignments::) ++ ++ * an output section description ++ ++ * an overlay description ++ ++ The `ENTRY' command and symbol assignments are permitted inside the ++`SECTIONS' command for convenience in using the location counter in ++those commands. This can also make the linker script easier to ++understand because you can use those commands at meaningful points in ++the layout of the output file. ++ ++ Output section descriptions and overlay descriptions are described ++below. ++ ++ If you do not use a `SECTIONS' command in your linker script, the ++linker will place each input section into an identically named output ++section in the order that the sections are first encountered in the ++input files. If all input sections are present in the first file, for ++example, the order of sections in the output file will match the order ++in the first input file. The first section will be at address zero. ++ ++* Menu: ++ ++* Output Section Description:: Output section description ++* Output Section Name:: Output section name ++* Output Section Address:: Output section address ++* Input Section:: Input section description ++* Output Section Data:: Output section data ++* Output Section Keywords:: Output section keywords ++* Output Section Discarding:: Output section discarding ++* Output Section Attributes:: Output section attributes ++* Overlay Description:: Overlay description ++ ++ ++File: ld.info, Node: Output Section Description, Next: Output Section Name, Up: SECTIONS ++ ++3.6.1 Output Section Description ++-------------------------------- ++ ++The full description of an output section looks like this: ++ SECTION [ADDRESS] [(TYPE)] : ++ [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)] ++ { ++ OUTPUT-SECTION-COMMAND ++ OUTPUT-SECTION-COMMAND ++ ... ++ } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP] ++ ++ Most output sections do not use most of the optional section ++attributes. ++ ++ The whitespace around SECTION is required, so that the section name ++is unambiguous. The colon and the curly braces are also required. The ++line breaks and other white space are optional. ++ ++ Each OUTPUT-SECTION-COMMAND may be one of the following: ++ ++ * a symbol assignment (*note Assignments::) ++ ++ * an input section description (*note Input Section::) ++ ++ * data values to include directly (*note Output Section Data::) ++ ++ * a special output section keyword (*note Output Section Keywords::) ++ ++ ++File: ld.info, Node: Output Section Name, Next: Output Section Address, Prev: Output Section Description, Up: SECTIONS ++ ++3.6.2 Output Section Name ++------------------------- ++ ++The name of the output section is SECTION. SECTION must meet the ++constraints of your output format. In formats which only support a ++limited number of sections, such as `a.out', the name must be one of ++the names supported by the format (`a.out', for example, allows only ++`.text', `.data' or `.bss'). If the output format supports any number ++of sections, but with numbers and not names (as is the case for Oasys), ++the name should be supplied as a quoted numeric string. A section name ++may consist of any sequence of characters, but a name which contains ++any unusual characters such as commas must be quoted. ++ ++ The output section name `/DISCARD/' is special; *Note Output Section ++Discarding::. ++ ++ ++File: ld.info, Node: Output Section Address, Next: Input Section, Prev: Output Section Name, Up: SECTIONS ++ ++3.6.3 Output Section Address ++---------------------------- ++ ++The ADDRESS is an expression for the VMA (the virtual memory address) ++of the output section. If you do not provide ADDRESS, the linker will ++set it based on REGION if present, or otherwise based on the current ++value of the location counter. ++ ++ If you provide ADDRESS, the address of the output section will be ++set to precisely that. If you provide neither ADDRESS nor REGION, then ++the address of the output section will be set to the current value of ++the location counter aligned to the alignment requirements of the ++output section. The alignment requirement of the output section is the ++strictest alignment of any input section contained within the output ++section. ++ ++ For example, ++ .text . : { *(.text) } ++ and ++ .text : { *(.text) } ++ are subtly different. The first will set the address of the `.text' ++output section to the current value of the location counter. The ++second will set it to the current value of the location counter aligned ++to the strictest alignment of a `.text' input section. ++ ++ The ADDRESS may be an arbitrary expression; *Note Expressions::. ++For example, if you want to align the section on a 0x10 byte boundary, ++so that the lowest four bits of the section address are zero, you could ++do something like this: ++ .text ALIGN(0x10) : { *(.text) } ++ This works because `ALIGN' returns the current location counter ++aligned upward to the specified value. ++ ++ Specifying ADDRESS for a section will change the value of the ++location counter. ++ ++ ++File: ld.info, Node: Input Section, Next: Output Section Data, Prev: Output Section Address, Up: SECTIONS ++ ++3.6.4 Input Section Description ++------------------------------- ++ ++The most common output section command is an input section description. ++ ++ The input section description is the most basic linker script ++operation. You use output sections to tell the linker how to lay out ++your program in memory. You use input section descriptions to tell the ++linker how to map the input files into your memory layout. ++ ++* Menu: ++ ++* Input Section Basics:: Input section basics ++* Input Section Wildcards:: Input section wildcard patterns ++* Input Section Common:: Input section for common symbols ++* Input Section Keep:: Input section and garbage collection ++* Input Section Example:: Input section example ++ ++ ++File: ld.info, Node: Input Section Basics, Next: Input Section Wildcards, Up: Input Section ++ ++3.6.4.1 Input Section Basics ++............................ ++ ++An input section description consists of a file name optionally followed ++by a list of section names in parentheses. ++ ++ The file name and the section name may be wildcard patterns, which we ++describe further below (*note Input Section Wildcards::). ++ ++ The most common input section description is to include all input ++sections with a particular name in the output section. For example, to ++include all input `.text' sections, you would write: ++ *(.text) ++ Here the `*' is a wildcard which matches any file name. To exclude ++a list of files from matching the file name wildcard, EXCLUDE_FILE may ++be used to match all files except the ones specified in the ++EXCLUDE_FILE list. For example: ++ (*(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors)) ++ will cause all .ctors sections from all files except `crtend.o' and ++`otherfile.o' to be included. ++ ++ There are two ways to include more than one section: ++ *(.text .rdata) ++ *(.text) *(.rdata) ++ The difference between these is the order in which the `.text' and ++`.rdata' input sections will appear in the output section. In the ++first example, they will be intermingled, appearing in the same order as ++they are found in the linker input. In the second example, all `.text' ++input sections will appear first, followed by all `.rdata' input ++sections. ++ ++ You can specify a file name to include sections from a particular ++file. You would do this if one or more of your files contain special ++data that needs to be at a particular location in memory. For example: ++ data.o(.data) ++ ++ If you use a file name without a list of sections, then all sections ++in the input file will be included in the output section. This is not ++commonly done, but it may by useful on occasion. For example: ++ data.o ++ ++ When you use a file name which does not contain any wild card ++characters, the linker will first see if you also specified the file ++name on the linker command line or in an `INPUT' command. If you did ++not, the linker will attempt to open the file as an input file, as ++though it appeared on the command line. Note that this differs from an ++`INPUT' command, because the linker will not search for the file in the ++archive search path. ++ ++ ++File: ld.info, Node: Input Section Wildcards, Next: Input Section Common, Prev: Input Section Basics, Up: Input Section ++ ++3.6.4.2 Input Section Wildcard Patterns ++....................................... ++ ++In an input section description, either the file name or the section ++name or both may be wildcard patterns. ++ ++ The file name of `*' seen in many examples is a simple wildcard ++pattern for the file name. ++ ++ The wildcard patterns are like those used by the Unix shell. ++ ++`*' ++ matches any number of characters ++ ++`?' ++ matches any single character ++ ++`[CHARS]' ++ matches a single instance of any of the CHARS; the `-' character ++ may be used to specify a range of characters, as in `[a-z]' to ++ match any lower case letter ++ ++`\' ++ quotes the following character ++ ++ When a file name is matched with a wildcard, the wildcard characters ++will not match a `/' character (used to separate directory names on ++Unix). A pattern consisting of a single `*' character is an exception; ++it will always match any file name, whether it contains a `/' or not. ++In a section name, the wildcard characters will match a `/' character. ++ ++ File name wildcard patterns only match files which are explicitly ++specified on the command line or in an `INPUT' command. The linker ++does not search directories to expand wildcards. ++ ++ If a file name matches more than one wildcard pattern, or if a file ++name appears explicitly and is also matched by a wildcard pattern, the ++linker will use the first match in the linker script. For example, this ++sequence of input section descriptions is probably in error, because the ++`data.o' rule will not be used: ++ .data : { *(.data) } ++ .data1 : { data.o(.data) } ++ ++ Normally, the linker will place files and sections matched by ++wildcards in the order in which they are seen during the link. You can ++change this by using the `SORT_BY_NAME' keyword, which appears before a ++wildcard pattern in parentheses (e.g., `SORT_BY_NAME(.text*)'). When ++the `SORT_BY_NAME' keyword is used, the linker will sort the files or ++sections into ascending order by name before placing them in the output ++file. ++ ++ `SORT_BY_ALIGNMENT' is very similar to `SORT_BY_NAME'. The ++difference is `SORT_BY_ALIGNMENT' will sort sections into ascending ++order by alignment before placing them in the output file. ++ ++ `SORT' is an alias for `SORT_BY_NAME'. ++ ++ When there are nested section sorting commands in linker script, ++there can be at most 1 level of nesting for section sorting commands. ++ ++ 1. `SORT_BY_NAME' (`SORT_BY_ALIGNMENT' (wildcard section pattern)). ++ It will sort the input sections by name first, then by alignment ++ if 2 sections have the same name. ++ ++ 2. `SORT_BY_ALIGNMENT' (`SORT_BY_NAME' (wildcard section pattern)). ++ It will sort the input sections by alignment first, then by name ++ if 2 sections have the same alignment. ++ ++ 3. `SORT_BY_NAME' (`SORT_BY_NAME' (wildcard section pattern)) is ++ treated the same as `SORT_BY_NAME' (wildcard section pattern). ++ ++ 4. `SORT_BY_ALIGNMENT' (`SORT_BY_ALIGNMENT' (wildcard section ++ pattern)) is treated the same as `SORT_BY_ALIGNMENT' (wildcard ++ section pattern). ++ ++ 5. All other nested section sorting commands are invalid. ++ ++ When both command line section sorting option and linker script ++section sorting command are used, section sorting command always takes ++precedence over the command line option. ++ ++ If the section sorting command in linker script isn't nested, the ++command line option will make the section sorting command to be treated ++as nested sorting command. ++ ++ 1. `SORT_BY_NAME' (wildcard section pattern ) with `--sort-sections ++ alignment' is equivalent to `SORT_BY_NAME' (`SORT_BY_ALIGNMENT' ++ (wildcard section pattern)). ++ ++ 2. `SORT_BY_ALIGNMENT' (wildcard section pattern) with ++ `--sort-section name' is equivalent to `SORT_BY_ALIGNMENT' ++ (`SORT_BY_NAME' (wildcard section pattern)). ++ ++ If the section sorting command in linker script is nested, the ++command line option will be ignored. ++ ++ If you ever get confused about where input sections are going, use ++the `-M' linker option to generate a map file. The map file shows ++precisely how input sections are mapped to output sections. ++ ++ This example shows how wildcard patterns might be used to partition ++files. This linker script directs the linker to place all `.text' ++sections in `.text' and all `.bss' sections in `.bss'. The linker will ++place the `.data' section from all files beginning with an upper case ++character in `.DATA'; for all other files, the linker will place the ++`.data' section in `.data'. ++ SECTIONS { ++ .text : { *(.text) } ++ .DATA : { [A-Z]*(.data) } ++ .data : { *(.data) } ++ .bss : { *(.bss) } ++ } ++ ++ ++File: ld.info, Node: Input Section Common, Next: Input Section Keep, Prev: Input Section Wildcards, Up: Input Section ++ ++3.6.4.3 Input Section for Common Symbols ++........................................ ++ ++A special notation is needed for common symbols, because in many object ++file formats common symbols do not have a particular input section. The ++linker treats common symbols as though they are in an input section ++named `COMMON'. ++ ++ You may use file names with the `COMMON' section just as with any ++other input sections. You can use this to place common symbols from a ++particular input file in one section while common symbols from other ++input files are placed in another section. ++ ++ In most cases, common symbols in input files will be placed in the ++`.bss' section in the output file. For example: ++ .bss { *(.bss) *(COMMON) } ++ ++ Some object file formats have more than one type of common symbol. ++For example, the MIPS ELF object file format distinguishes standard ++common symbols and small common symbols. In this case, the linker will ++use a different special section name for other types of common symbols. ++In the case of MIPS ELF, the linker uses `COMMON' for standard common ++symbols and `.scommon' for small common symbols. This permits you to ++map the different types of common symbols into memory at different ++locations. ++ ++ You will sometimes see `[COMMON]' in old linker scripts. This ++notation is now considered obsolete. It is equivalent to `*(COMMON)'. ++ ++ ++File: ld.info, Node: Input Section Keep, Next: Input Section Example, Prev: Input Section Common, Up: Input Section ++ ++3.6.4.4 Input Section and Garbage Collection ++............................................ ++ ++When link-time garbage collection is in use (`--gc-sections'), it is ++often useful to mark sections that should not be eliminated. This is ++accomplished by surrounding an input section's wildcard entry with ++`KEEP()', as in `KEEP(*(.init))' or `KEEP(SORT_BY_NAME(*)(.ctors))'. ++ ++ ++File: ld.info, Node: Input Section Example, Prev: Input Section Keep, Up: Input Section ++ ++3.6.4.5 Input Section Example ++............................. ++ ++The following example is a complete linker script. It tells the linker ++to read all of the sections from file `all.o' and place them at the ++start of output section `outputa' which starts at location `0x10000'. ++All of section `.input1' from file `foo.o' follows immediately, in the ++same output section. All of section `.input2' from `foo.o' goes into ++output section `outputb', followed by section `.input1' from `foo1.o'. ++All of the remaining `.input1' and `.input2' sections from any files ++are written to output section `outputc'. ++ ++ SECTIONS { ++ outputa 0x10000 : ++ { ++ all.o ++ foo.o (.input1) ++ } ++ outputb : ++ { ++ foo.o (.input2) ++ foo1.o (.input1) ++ } ++ outputc : ++ { ++ *(.input1) ++ *(.input2) ++ } ++ } ++ ++ ++File: ld.info, Node: Output Section Data, Next: Output Section Keywords, Prev: Input Section, Up: SECTIONS ++ ++3.6.5 Output Section Data ++------------------------- ++ ++You can include explicit bytes of data in an output section by using ++`BYTE', `SHORT', `LONG', `QUAD', or `SQUAD' as an output section ++command. Each keyword is followed by an expression in parentheses ++providing the value to store (*note Expressions::). The value of the ++expression is stored at the current value of the location counter. ++ ++ The `BYTE', `SHORT', `LONG', and `QUAD' commands store one, two, ++four, and eight bytes (respectively). After storing the bytes, the ++location counter is incremented by the number of bytes stored. ++ ++ For example, this will store the byte 1 followed by the four byte ++value of the symbol `addr': ++ BYTE(1) ++ LONG(addr) ++ ++ When using a 64 bit host or target, `QUAD' and `SQUAD' are the same; ++they both store an 8 byte, or 64 bit, value. When both host and target ++are 32 bits, an expression is computed as 32 bits. In this case `QUAD' ++stores a 32 bit value zero extended to 64 bits, and `SQUAD' stores a 32 ++bit value sign extended to 64 bits. ++ ++ If the object file format of the output file has an explicit ++endianness, which is the normal case, the value will be stored in that ++endianness. When the object file format does not have an explicit ++endianness, as is true of, for example, S-records, the value will be ++stored in the endianness of the first input object file. ++ ++ Note--these commands only work inside a section description and not ++between them, so the following will produce an error from the linker: ++ SECTIONS { .text : { *(.text) } LONG(1) .data : { *(.data) } } ++ whereas this will work: ++ SECTIONS { .text : { *(.text) ; LONG(1) } .data : { *(.data) } } ++ ++ You may use the `FILL' command to set the fill pattern for the ++current section. It is followed by an expression in parentheses. Any ++otherwise unspecified regions of memory within the section (for example, ++gaps left due to the required alignment of input sections) are filled ++with the value of the expression, repeated as necessary. A `FILL' ++statement covers memory locations after the point at which it occurs in ++the section definition; by including more than one `FILL' statement, ++you can have different fill patterns in different parts of an output ++section. ++ ++ This example shows how to fill unspecified regions of memory with the ++value `0x90': ++ FILL(0x90909090) ++ ++ The `FILL' command is similar to the `=FILLEXP' output section ++attribute, but it only affects the part of the section following the ++`FILL' command, rather than the entire section. If both are used, the ++`FILL' command takes precedence. *Note Output Section Fill::, for ++details on the fill expression. ++ ++ ++File: ld.info, Node: Output Section Keywords, Next: Output Section Discarding, Prev: Output Section Data, Up: SECTIONS ++ ++3.6.6 Output Section Keywords ++----------------------------- ++ ++There are a couple of keywords which can appear as output section ++commands. ++ ++`CREATE_OBJECT_SYMBOLS' ++ The command tells the linker to create a symbol for each input ++ file. The name of each symbol will be the name of the ++ corresponding input file. The section of each symbol will be the ++ output section in which the `CREATE_OBJECT_SYMBOLS' command ++ appears. ++ ++ This is conventional for the a.out object file format. It is not ++ normally used for any other object file format. ++ ++`CONSTRUCTORS' ++ When linking using the a.out object file format, the linker uses an ++ unusual set construct to support C++ global constructors and ++ destructors. When linking object file formats which do not support ++ arbitrary sections, such as ECOFF and XCOFF, the linker will ++ automatically recognize C++ global constructors and destructors by ++ name. For these object file formats, the `CONSTRUCTORS' command ++ tells the linker to place constructor information in the output ++ section where the `CONSTRUCTORS' command appears. The ++ `CONSTRUCTORS' command is ignored for other object file formats. ++ ++ The symbol `__CTOR_LIST__' marks the start of the global ++ constructors, and the symbol `__CTOR_END__' marks the end. ++ Similarly, `__DTOR_LIST__' and `__DTOR_END__' mark the start and ++ end of the global destructors. The first word in the list is the ++ number of entries, followed by the address of each constructor or ++ destructor, followed by a zero word. The compiler must arrange to ++ actually run the code. For these object file formats GNU C++ ++ normally calls constructors from a subroutine `__main'; a call to ++ `__main' is automatically inserted into the startup code for ++ `main'. GNU C++ normally runs destructors either by using ++ `atexit', or directly from the function `exit'. ++ ++ For object file formats such as `COFF' or `ELF' which support ++ arbitrary section names, GNU C++ will normally arrange to put the ++ addresses of global constructors and destructors into the `.ctors' ++ and `.dtors' sections. Placing the following sequence into your ++ linker script will build the sort of table which the GNU C++ ++ runtime code expects to see. ++ ++ __CTOR_LIST__ = .; ++ LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) ++ *(.ctors) ++ LONG(0) ++ __CTOR_END__ = .; ++ __DTOR_LIST__ = .; ++ LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) ++ *(.dtors) ++ LONG(0) ++ __DTOR_END__ = .; ++ ++ If you are using the GNU C++ support for initialization priority, ++ which provides some control over the order in which global ++ constructors are run, you must sort the constructors at link time ++ to ensure that they are executed in the correct order. When using ++ the `CONSTRUCTORS' command, use `SORT_BY_NAME(CONSTRUCTORS)' ++ instead. When using the `.ctors' and `.dtors' sections, use ++ `*(SORT_BY_NAME(.ctors))' and `*(SORT_BY_NAME(.dtors))' instead of ++ just `*(.ctors)' and `*(.dtors)'. ++ ++ Normally the compiler and linker will handle these issues ++ automatically, and you will not need to concern yourself with ++ them. However, you may need to consider this if you are using C++ ++ and writing your own linker scripts. ++ ++ ++ ++File: ld.info, Node: Output Section Discarding, Next: Output Section Attributes, Prev: Output Section Keywords, Up: SECTIONS ++ ++3.6.7 Output Section Discarding ++------------------------------- ++ ++The linker will not create output section which do not have any ++contents. This is for convenience when referring to input sections that ++may or may not be present in any of the input files. For example: ++ .foo { *(.foo) } ++ will only create a `.foo' section in the output file if there is a ++`.foo' section in at least one input file. ++ ++ If you use anything other than an input section description as an ++output section command, such as a symbol assignment, then the output ++section will always be created, even if there are no matching input ++sections. ++ ++ The special output section name `/DISCARD/' may be used to discard ++input sections. Any input sections which are assigned to an output ++section named `/DISCARD/' are not included in the output file. ++ ++ ++File: ld.info, Node: Output Section Attributes, Next: Overlay Description, Prev: Output Section Discarding, Up: SECTIONS ++ ++3.6.8 Output Section Attributes ++------------------------------- ++ ++We showed above that the full description of an output section looked ++like this: ++ SECTION [ADDRESS] [(TYPE)] : ++ [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)] ++ { ++ OUTPUT-SECTION-COMMAND ++ OUTPUT-SECTION-COMMAND ++ ... ++ } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP] ++We've already described SECTION, ADDRESS, and ++OUTPUT-SECTION-COMMAND. In this section we will describe the remaining ++section attributes. ++ ++* Menu: ++ ++* Output Section Type:: Output section type ++* Output Section LMA:: Output section LMA ++* Forced Output Alignment:: Forced Output Alignment ++* Forced Input Alignment:: Forced Input Alignment ++* Output Section Region:: Output section region ++* Output Section Phdr:: Output section phdr ++* Output Section Fill:: Output section fill ++ ++ ++File: ld.info, Node: Output Section Type, Next: Output Section LMA, Up: Output Section Attributes ++ ++3.6.8.1 Output Section Type ++........................... ++ ++Each output section may have a type. The type is a keyword in ++parentheses. The following types are defined: ++ ++`NOLOAD' ++ The section should be marked as not loadable, so that it will not ++ be loaded into memory when the program is run. ++ ++`DSECT' ++`COPY' ++`INFO' ++`OVERLAY' ++ These type names are supported for backward compatibility, and are ++ rarely used. They all have the same effect: the section should be ++ marked as not allocatable, so that no memory is allocated for the ++ section when the program is run. ++ ++ The linker normally sets the attributes of an output section based on ++the input sections which map into it. You can override this by using ++the section type. For example, in the script sample below, the `ROM' ++section is addressed at memory location `0' and does not need to be ++loaded when the program is run. The contents of the `ROM' section will ++appear in the linker output file as usual. ++ SECTIONS { ++ ROM 0 (NOLOAD) : { ... } ++ ... ++ } ++ ++ ++File: ld.info, Node: Output Section LMA, Next: Forced Output Alignment, Prev: Output Section Type, Up: Output Section Attributes ++ ++3.6.8.2 Output Section LMA ++.......................... ++ ++Every section has a virtual address (VMA) and a load address (LMA); see ++*Note Basic Script Concepts::. The address expression which may appear ++in an output section description sets the VMA (*note Output Section ++Address::). ++ ++ The linker will normally set the LMA equal to the VMA. You can ++change that by using the `AT' keyword. The expression LMA that follows ++the `AT' keyword specifies the load address of the section. ++ ++ Alternatively, with `AT>LMA_REGION' expression, you may specify a ++memory region for the section's load address. *Note MEMORY::. Note ++that if the section has not had a VMA assigned to it then the linker ++will use the LMA_REGION as the VMA region as well. *Note Output ++Section Region::. ++ ++ This feature is designed to make it easy to build a ROM image. For ++example, the following linker script creates three output sections: one ++called `.text', which starts at `0x1000', one called `.mdata', which is ++loaded at the end of the `.text' section even though its VMA is ++`0x2000', and one called `.bss' to hold uninitialized data at address ++`0x3000'. The symbol `_data' is defined with the value `0x2000', which ++shows that the location counter holds the VMA value, not the LMA value. ++ ++ SECTIONS ++ { ++ .text 0x1000 : { *(.text) _etext = . ; } ++ .mdata 0x2000 : ++ AT ( ADDR (.text) + SIZEOF (.text) ) ++ { _data = . ; *(.data); _edata = . ; } ++ .bss 0x3000 : ++ { _bstart = . ; *(.bss) *(COMMON) ; _bend = . ;} ++ } ++ ++ The run-time initialization code for use with a program generated ++with this linker script would include something like the following, to ++copy the initialized data from the ROM image to its runtime address. ++Notice how this code takes advantage of the symbols defined by the ++linker script. ++ ++ extern char _etext, _data, _edata, _bstart, _bend; ++ char *src = &_etext; ++ char *dst = &_data; ++ ++ /* ROM has data at end of text; copy it. */ ++ while (dst < &_edata) { ++ *dst++ = *src++; ++ } ++ ++ /* Zero bss */ ++ for (dst = &_bstart; dst< &_bend; dst++) ++ *dst = 0; ++ ++ ++File: ld.info, Node: Forced Output Alignment, Next: Forced Input Alignment, Prev: Output Section LMA, Up: Output Section Attributes ++ ++3.6.8.3 Forced Output Alignment ++............................... ++ ++You can increase an output section's alignment by using ALIGN. ++ ++ ++File: ld.info, Node: Forced Input Alignment, Next: Output Section Region, Prev: Forced Output Alignment, Up: Output Section Attributes ++ ++3.6.8.4 Forced Input Alignment ++.............................. ++ ++You can force input section alignment within an output section by using ++SUBALIGN. The value specified overrides any alignment given by input ++sections, whether larger or smaller. ++ ++ ++File: ld.info, Node: Output Section Region, Next: Output Section Phdr, Prev: Forced Input Alignment, Up: Output Section Attributes ++ ++3.6.8.5 Output Section Region ++............................. ++ ++You can assign a section to a previously defined region of memory by ++using `>REGION'. *Note MEMORY::. ++ ++ Here is a simple example: ++ MEMORY { rom : ORIGIN = 0x1000, LENGTH = 0x1000 } ++ SECTIONS { ROM : { *(.text) } >rom } ++ ++ ++File: ld.info, Node: Output Section Phdr, Next: Output Section Fill, Prev: Output Section Region, Up: Output Section Attributes ++ ++3.6.8.6 Output Section Phdr ++........................... ++ ++You can assign a section to a previously defined program segment by ++using `:PHDR'. *Note PHDRS::. If a section is assigned to one or more ++segments, then all subsequent allocated sections will be assigned to ++those segments as well, unless they use an explicitly `:PHDR' modifier. ++You can use `:NONE' to tell the linker to not put the section in any ++segment at all. ++ ++ Here is a simple example: ++ PHDRS { text PT_LOAD ; } ++ SECTIONS { .text : { *(.text) } :text } ++ ++ ++File: ld.info, Node: Output Section Fill, Prev: Output Section Phdr, Up: Output Section Attributes ++ ++3.6.8.7 Output Section Fill ++........................... ++ ++You can set the fill pattern for an entire section by using `=FILLEXP'. ++FILLEXP is an expression (*note Expressions::). Any otherwise ++unspecified regions of memory within the output section (for example, ++gaps left due to the required alignment of input sections) will be ++filled with the value, repeated as necessary. If the fill expression ++is a simple hex number, ie. a string of hex digit starting with `0x' ++and without a trailing `k' or `M', then an arbitrarily long sequence of ++hex digits can be used to specify the fill pattern; Leading zeros ++become part of the pattern too. For all other cases, including extra ++parentheses or a unary `+', the fill pattern is the four least ++significant bytes of the value of the expression. In all cases, the ++number is big-endian. ++ ++ You can also change the fill value with a `FILL' command in the ++output section commands; (*note Output Section Data::). ++ ++ Here is a simple example: ++ SECTIONS { .text : { *(.text) } =0x90909090 } ++ ++ ++File: ld.info, Node: Overlay Description, Prev: Output Section Attributes, Up: SECTIONS ++ ++3.6.9 Overlay Description ++------------------------- ++ ++An overlay description provides an easy way to describe sections which ++are to be loaded as part of a single memory image but are to be run at ++the same memory address. At run time, some sort of overlay manager will ++copy the overlaid sections in and out of the runtime memory address as ++required, perhaps by simply manipulating addressing bits. This approach ++can be useful, for example, when a certain region of memory is faster ++than another. ++ ++ Overlays are described using the `OVERLAY' command. The `OVERLAY' ++command is used within a `SECTIONS' command, like an output section ++description. The full syntax of the `OVERLAY' command is as follows: ++ OVERLAY [START] : [NOCROSSREFS] [AT ( LDADDR )] ++ { ++ SECNAME1 ++ { ++ OUTPUT-SECTION-COMMAND ++ OUTPUT-SECTION-COMMAND ++ ... ++ } [:PHDR...] [=FILL] ++ SECNAME2 ++ { ++ OUTPUT-SECTION-COMMAND ++ OUTPUT-SECTION-COMMAND ++ ... ++ } [:PHDR...] [=FILL] ++ ... ++ } [>REGION] [:PHDR...] [=FILL] ++ ++ Everything is optional except `OVERLAY' (a keyword), and each ++section must have a name (SECNAME1 and SECNAME2 above). The section ++definitions within the `OVERLAY' construct are identical to those ++within the general `SECTIONS' contruct (*note SECTIONS::), except that ++no addresses and no memory regions may be defined for sections within ++an `OVERLAY'. ++ ++ The sections are all defined with the same starting address. The ++load addresses of the sections are arranged such that they are ++consecutive in memory starting at the load address used for the ++`OVERLAY' as a whole (as with normal section definitions, the load ++address is optional, and defaults to the start address; the start ++address is also optional, and defaults to the current value of the ++location counter). ++ ++ If the `NOCROSSREFS' keyword is used, and there any references among ++the sections, the linker will report an error. Since the sections all ++run at the same address, it normally does not make sense for one ++section to refer directly to another. *Note NOCROSSREFS: Miscellaneous ++Commands. ++ ++ For each section within the `OVERLAY', the linker automatically ++defines two symbols. The symbol `__load_start_SECNAME' is defined as ++the starting load address of the section. The symbol ++`__load_stop_SECNAME' is defined as the final load address of the ++section. Any characters within SECNAME which are not legal within C ++identifiers are removed. C (or assembler) code may use these symbols ++to move the overlaid sections around as necessary. ++ ++ At the end of the overlay, the value of the location counter is set ++to the start address of the overlay plus the size of the largest ++section. ++ ++ Here is an example. Remember that this would appear inside a ++`SECTIONS' construct. ++ OVERLAY 0x1000 : AT (0x4000) ++ { ++ .text0 { o1/*.o(.text) } ++ .text1 { o2/*.o(.text) } ++ } ++This will define both `.text0' and `.text1' to start at address ++0x1000. `.text0' will be loaded at address 0x4000, and `.text1' will ++be loaded immediately after `.text0'. The following symbols will be ++defined: `__load_start_text0', `__load_stop_text0', ++`__load_start_text1', `__load_stop_text1'. ++ ++ C code to copy overlay `.text1' into the overlay area might look ++like the following. ++ ++ extern char __load_start_text1, __load_stop_text1; ++ memcpy ((char *) 0x1000, &__load_start_text1, ++ &__load_stop_text1 - &__load_start_text1); ++ ++ Note that the `OVERLAY' command is just syntactic sugar, since ++everything it does can be done using the more basic commands. The above ++example could have been written identically as follows. ++ ++ .text0 0x1000 : AT (0x4000) { o1/*.o(.text) } ++ __load_start_text0 = LOADADDR (.text0); ++ __load_stop_text0 = LOADADDR (.text0) + SIZEOF (.text0); ++ .text1 0x1000 : AT (0x4000 + SIZEOF (.text0)) { o2/*.o(.text) } ++ __load_start_text1 = LOADADDR (.text1); ++ __load_stop_text1 = LOADADDR (.text1) + SIZEOF (.text1); ++ . = 0x1000 + MAX (SIZEOF (.text0), SIZEOF (.text1)); ++ ++ ++File: ld.info, Node: MEMORY, Next: PHDRS, Prev: SECTIONS, Up: Scripts ++ ++3.7 MEMORY Command ++================== ++ ++The linker's default configuration permits allocation of all available ++memory. You can override this by using the `MEMORY' command. ++ ++ The `MEMORY' command describes the location and size of blocks of ++memory in the target. You can use it to describe which memory regions ++may be used by the linker, and which memory regions it must avoid. You ++can then assign sections to particular memory regions. The linker will ++set section addresses based on the memory regions, and will warn about ++regions that become too full. The linker will not shuffle sections ++around to fit into the available regions. ++ ++ A linker script may contain at most one use of the `MEMORY' command. ++However, you can define as many blocks of memory within it as you ++wish. The syntax is: ++ MEMORY ++ { ++ NAME [(ATTR)] : ORIGIN = ORIGIN, LENGTH = LEN ++ ... ++ } ++ ++ The NAME is a name used in the linker script to refer to the region. ++The region name has no meaning outside of the linker script. Region ++names are stored in a separate name space, and will not conflict with ++symbol names, file names, or section names. Each memory region must ++have a distinct name. ++ ++ The ATTR string is an optional list of attributes that specify ++whether to use a particular memory region for an input section which is ++not explicitly mapped in the linker script. As described in *Note ++SECTIONS::, if you do not specify an output section for some input ++section, the linker will create an output section with the same name as ++the input section. If you define region attributes, the linker will use ++them to select the memory region for the output section that it creates. ++ ++ The ATTR string must consist only of the following characters: ++`R' ++ Read-only section ++ ++`W' ++ Read/write section ++ ++`X' ++ Executable section ++ ++`A' ++ Allocatable section ++ ++`I' ++ Initialized section ++ ++`L' ++ Same as `I' ++ ++`!' ++ Invert the sense of any of the preceding attributes ++ ++ If a unmapped section matches any of the listed attributes other than ++`!', it will be placed in the memory region. The `!' attribute ++reverses this test, so that an unmapped section will be placed in the ++memory region only if it does not match any of the listed attributes. ++ ++ The ORIGIN is an numerical expression for the start address of the ++memory region. The expression must evaluate to a constant and it ++cannot involve any symbols. The keyword `ORIGIN' may be abbreviated to ++`org' or `o' (but not, for example, `ORG'). ++ ++ The LEN is an expression for the size in bytes of the memory region. ++As with the ORIGIN expression, the expression must be numerical only ++and must evaluate to a constant. The keyword `LENGTH' may be ++abbreviated to `len' or `l'. ++ ++ In the following example, we specify that there are two memory ++regions available for allocation: one starting at `0' for 256 kilobytes, ++and the other starting at `0x40000000' for four megabytes. The linker ++will place into the `rom' memory region every section which is not ++explicitly mapped into a memory region, and is either read-only or ++executable. The linker will place other sections which are not ++explicitly mapped into a memory region into the `ram' memory region. ++ ++ MEMORY ++ { ++ rom (rx) : ORIGIN = 0, LENGTH = 256K ++ ram (!rx) : org = 0x40000000, l = 4M ++ } ++ ++ Once you define a memory region, you can direct the linker to place ++specific output sections into that memory region by using the `>REGION' ++output section attribute. For example, if you have a memory region ++named `mem', you would use `>mem' in the output section definition. ++*Note Output Section Region::. If no address was specified for the ++output section, the linker will set the address to the next available ++address within the memory region. If the combined output sections ++directed to a memory region are too large for the region, the linker ++will issue an error message. ++ ++ It is possible to access the origin and length of a memory in an ++expression via the `ORIGIN(MEMORY)' and `LENGTH(MEMORY)' functions: ++ ++ _fstack = ORIGIN(ram) + LENGTH(ram) - 4; ++ ++ ++File: ld.info, Node: PHDRS, Next: VERSION, Prev: MEMORY, Up: Scripts ++ ++3.8 PHDRS Command ++================= ++ ++The ELF object file format uses "program headers", also knows as ++"segments". The program headers describe how the program should be ++loaded into memory. You can print them out by using the `objdump' ++program with the `-p' option. ++ ++ When you run an ELF program on a native ELF system, the system loader ++reads the program headers in order to figure out how to load the ++program. This will only work if the program headers are set correctly. ++This manual does not describe the details of how the system loader ++interprets program headers; for more information, see the ELF ABI. ++ ++ The linker will create reasonable program headers by default. ++However, in some cases, you may need to specify the program headers more ++precisely. You may use the `PHDRS' command for this purpose. When the ++linker sees the `PHDRS' command in the linker script, it will not ++create any program headers other than the ones specified. ++ ++ The linker only pays attention to the `PHDRS' command when ++generating an ELF output file. In other cases, the linker will simply ++ignore `PHDRS'. ++ ++ This is the syntax of the `PHDRS' command. The words `PHDRS', ++`FILEHDR', `AT', and `FLAGS' are keywords. ++ ++ PHDRS ++ { ++ NAME TYPE [ FILEHDR ] [ PHDRS ] [ AT ( ADDRESS ) ] ++ [ FLAGS ( FLAGS ) ] ; ++ } ++ ++ The NAME is used only for reference in the `SECTIONS' command of the ++linker script. It is not put into the output file. Program header ++names are stored in a separate name space, and will not conflict with ++symbol names, file names, or section names. Each program header must ++have a distinct name. ++ ++ Certain program header types describe segments of memory which the ++system loader will load from the file. In the linker script, you ++specify the contents of these segments by placing allocatable output ++sections in the segments. You use the `:PHDR' output section attribute ++to place a section in a particular segment. *Note Output Section ++Phdr::. ++ ++ It is normal to put certain sections in more than one segment. This ++merely implies that one segment of memory contains another. You may ++repeat `:PHDR', using it once for each segment which should contain the ++section. ++ ++ If you place a section in one or more segments using `:PHDR', then ++the linker will place all subsequent allocatable sections which do not ++specify `:PHDR' in the same segments. This is for convenience, since ++generally a whole set of contiguous sections will be placed in a single ++segment. You can use `:NONE' to override the default segment and tell ++the linker to not put the section in any segment at all. ++ ++ You may use the `FILEHDR' and `PHDRS' keywords appear after the ++program header type to further describe the contents of the segment. ++The `FILEHDR' keyword means that the segment should include the ELF ++file header. The `PHDRS' keyword means that the segment should include ++the ELF program headers themselves. ++ ++ The TYPE may be one of the following. The numbers indicate the ++value of the keyword. ++ ++`PT_NULL' (0) ++ Indicates an unused program header. ++ ++`PT_LOAD' (1) ++ Indicates that this program header describes a segment to be ++ loaded from the file. ++ ++`PT_DYNAMIC' (2) ++ Indicates a segment where dynamic linking information can be found. ++ ++`PT_INTERP' (3) ++ Indicates a segment where the name of the program interpreter may ++ be found. ++ ++`PT_NOTE' (4) ++ Indicates a segment holding note information. ++ ++`PT_SHLIB' (5) ++ A reserved program header type, defined but not specified by the ++ ELF ABI. ++ ++`PT_PHDR' (6) ++ Indicates a segment where the program headers may be found. ++ ++EXPRESSION ++ An expression giving the numeric type of the program header. This ++ may be used for types not defined above. ++ ++ You can specify that a segment should be loaded at a particular ++address in memory by using an `AT' expression. This is identical to the ++`AT' command used as an output section attribute (*note Output Section ++LMA::). The `AT' command for a program header overrides the output ++section attribute. ++ ++ The linker will normally set the segment flags based on the sections ++which comprise the segment. You may use the `FLAGS' keyword to ++explicitly specify the segment flags. The value of FLAGS must be an ++integer. It is used to set the `p_flags' field of the program header. ++ ++ Here is an example of `PHDRS'. This shows a typical set of program ++headers used on a native ELF system. ++ ++ PHDRS ++ { ++ headers PT_PHDR PHDRS ; ++ interp PT_INTERP ; ++ text PT_LOAD FILEHDR PHDRS ; ++ data PT_LOAD ; ++ dynamic PT_DYNAMIC ; ++ } ++ ++ SECTIONS ++ { ++ . = SIZEOF_HEADERS; ++ .interp : { *(.interp) } :text :interp ++ .text : { *(.text) } :text ++ .rodata : { *(.rodata) } /* defaults to :text */ ++ ... ++ . = . + 0x1000; /* move to a new page in memory */ ++ .data : { *(.data) } :data ++ .dynamic : { *(.dynamic) } :data :dynamic ++ ... ++ } ++ ++ ++File: ld.info, Node: VERSION, Next: Expressions, Prev: PHDRS, Up: Scripts ++ ++3.9 VERSION Command ++=================== ++ ++The linker supports symbol versions when using ELF. Symbol versions are ++only useful when using shared libraries. The dynamic linker can use ++symbol versions to select a specific version of a function when it runs ++a program that may have been linked against an earlier version of the ++shared library. ++ ++ You can include a version script directly in the main linker script, ++or you can supply the version script as an implicit linker script. You ++can also use the `--version-script' linker option. ++ ++ The syntax of the `VERSION' command is simply ++ VERSION { version-script-commands } ++ ++ The format of the version script commands is identical to that used ++by Sun's linker in Solaris 2.5. The version script defines a tree of ++version nodes. You specify the node names and interdependencies in the ++version script. You can specify which symbols are bound to which ++version nodes, and you can reduce a specified set of symbols to local ++scope so that they are not globally visible outside of the shared ++library. ++ ++ The easiest way to demonstrate the version script language is with a ++few examples. ++ ++ VERS_1.1 { ++ global: ++ foo1; ++ local: ++ old*; ++ original*; ++ new*; ++ }; ++ ++ VERS_1.2 { ++ foo2; ++ } VERS_1.1; ++ ++ VERS_2.0 { ++ bar1; bar2; ++ extern "C++" { ++ ns::*; ++ "int f(int, double)"; ++ } ++ } VERS_1.2; ++ ++ This example version script defines three version nodes. The first ++version node defined is `VERS_1.1'; it has no other dependencies. The ++script binds the symbol `foo1' to `VERS_1.1'. It reduces a number of ++symbols to local scope so that they are not visible outside of the ++shared library; this is done using wildcard patterns, so that any ++symbol whose name begins with `old', `original', or `new' is matched. ++The wildcard patterns available are the same as those used in the shell ++when matching filenames (also known as "globbing"). However, if you ++specify the symbol name inside double quotes, then the name is treated ++as literal, rather than as a glob pattern. ++ ++ Next, the version script defines node `VERS_1.2'. This node depends ++upon `VERS_1.1'. The script binds the symbol `foo2' to the version ++node `VERS_1.2'. ++ ++ Finally, the version script defines node `VERS_2.0'. This node ++depends upon `VERS_1.2'. The scripts binds the symbols `bar1' and ++`bar2' are bound to the version node `VERS_2.0'. ++ ++ When the linker finds a symbol defined in a library which is not ++specifically bound to a version node, it will effectively bind it to an ++unspecified base version of the library. You can bind all otherwise ++unspecified symbols to a given version node by using `global: *;' ++somewhere in the version script. ++ ++ The names of the version nodes have no specific meaning other than ++what they might suggest to the person reading them. The `2.0' version ++could just as well have appeared in between `1.1' and `1.2'. However, ++this would be a confusing way to write a version script. ++ ++ Node name can be omited, provided it is the only version node in the ++version script. Such version script doesn't assign any versions to ++symbols, only selects which symbols will be globally visible out and ++which won't. ++ ++ { global: foo; bar; local: *; }; ++ ++ When you link an application against a shared library that has ++versioned symbols, the application itself knows which version of each ++symbol it requires, and it also knows which version nodes it needs from ++each shared library it is linked against. Thus at runtime, the dynamic ++loader can make a quick check to make sure that the libraries you have ++linked against do in fact supply all of the version nodes that the ++application will need to resolve all of the dynamic symbols. In this ++way it is possible for the dynamic linker to know with certainty that ++all external symbols that it needs will be resolvable without having to ++search for each symbol reference. ++ ++ The symbol versioning is in effect a much more sophisticated way of ++doing minor version checking that SunOS does. The fundamental problem ++that is being addressed here is that typically references to external ++functions are bound on an as-needed basis, and are not all bound when ++the application starts up. If a shared library is out of date, a ++required interface may be missing; when the application tries to use ++that interface, it may suddenly and unexpectedly fail. With symbol ++versioning, the user will get a warning when they start their program if ++the libraries being used with the application are too old. ++ ++ There are several GNU extensions to Sun's versioning approach. The ++first of these is the ability to bind a symbol to a version node in the ++source file where the symbol is defined instead of in the versioning ++script. This was done mainly to reduce the burden on the library ++maintainer. You can do this by putting something like: ++ __asm__(".symver original_foo,foo@VERS_1.1"); ++ in the C source file. This renames the function `original_foo' to ++be an alias for `foo' bound to the version node `VERS_1.1'. The ++`local:' directive can be used to prevent the symbol `original_foo' ++from being exported. A `.symver' directive takes precedence over a ++version script. ++ ++ The second GNU extension is to allow multiple versions of the same ++function to appear in a given shared library. In this way you can make ++an incompatible change to an interface without increasing the major ++version number of the shared library, while still allowing applications ++linked against the old interface to continue to function. ++ ++ To do this, you must use multiple `.symver' directives in the source ++file. Here is an example: ++ ++ __asm__(".symver original_foo,foo@"); ++ __asm__(".symver old_foo,foo@VERS_1.1"); ++ __asm__(".symver old_foo1,foo@VERS_1.2"); ++ __asm__(".symver new_foo,foo@@VERS_2.0"); ++ ++ In this example, `foo@' represents the symbol `foo' bound to the ++unspecified base version of the symbol. The source file that contains ++this example would define 4 C functions: `original_foo', `old_foo', ++`old_foo1', and `new_foo'. ++ ++ When you have multiple definitions of a given symbol, there needs to ++be some way to specify a default version to which external references to ++this symbol will be bound. You can do this with the `foo@@VERS_2.0' ++type of `.symver' directive. You can only declare one version of a ++symbol as the default in this manner; otherwise you would effectively ++have multiple definitions of the same symbol. ++ ++ If you wish to bind a reference to a specific version of the symbol ++within the shared library, you can use the aliases of convenience ++(i.e., `old_foo'), or you can use the `.symver' directive to ++specifically bind to an external version of the function in question. ++ ++ You can also specify the language in the version script: ++ ++ VERSION extern "lang" { version-script-commands } ++ ++ The supported `lang's are `C', `C++', and `Java'. The linker will ++iterate over the list of symbols at the link time and demangle them ++according to `lang' before matching them to the patterns specified in ++`version-script-commands'. ++ ++ Demangled names may contains spaces and other special characters. As ++described above, you can use a glob pattern to match demangled names, ++or you can use a double-quoted string to match the string exactly. In ++the latter case, be aware that minor differences (such as differing ++whitespace) between the version script and the demangler output will ++cause a mismatch. As the exact string generated by the demangler might ++change in the future, even if the mangled name does not, you should ++check that all of your version directives are behaving as you expect ++when you upgrade. ++ ++ ++File: ld.info, Node: Expressions, Next: Implicit Linker Scripts, Prev: VERSION, Up: Scripts ++ ++3.10 Expressions in Linker Scripts ++================================== ++ ++The syntax for expressions in the linker script language is identical to ++that of C expressions. All expressions are evaluated as integers. All ++expressions are evaluated in the same size, which is 32 bits if both the ++host and target are 32 bits, and is otherwise 64 bits. ++ ++ You can use and set symbol values in expressions. ++ ++ The linker defines several special purpose builtin functions for use ++in expressions. ++ ++* Menu: ++ ++* Constants:: Constants ++* Symbols:: Symbol Names ++* Orphan Sections:: Orphan Sections ++* Location Counter:: The Location Counter ++* Operators:: Operators ++* Evaluation:: Evaluation ++* Expression Section:: The Section of an Expression ++* Builtin Functions:: Builtin Functions ++ ++ ++File: ld.info, Node: Constants, Next: Symbols, Up: Expressions ++ ++3.10.1 Constants ++---------------- ++ ++All constants are integers. ++ ++ As in C, the linker considers an integer beginning with `0' to be ++octal, and an integer beginning with `0x' or `0X' to be hexadecimal. ++The linker considers other integers to be decimal. ++ ++ In addition, you can use the suffixes `K' and `M' to scale a ++constant by `1024' or `1024*1024' respectively. For example, the ++following all refer to the same quantity: ++ _fourk_1 = 4K; ++ _fourk_2 = 4096; ++ _fourk_3 = 0x1000; ++ ++ ++File: ld.info, Node: Symbols, Next: Orphan Sections, Prev: Constants, Up: Expressions ++ ++3.10.2 Symbol Names ++------------------- ++ ++Unless quoted, symbol names start with a letter, underscore, or period ++and may include letters, digits, underscores, periods, and hyphens. ++Unquoted symbol names must not conflict with any keywords. You can ++specify a symbol which contains odd characters or has the same name as a ++keyword by surrounding the symbol name in double quotes: ++ "SECTION" = 9; ++ "with a space" = "also with a space" + 10; ++ ++ Since symbols can contain many non-alphabetic characters, it is ++safest to delimit symbols with spaces. For example, `A-B' is one ++symbol, whereas `A - B' is an expression involving subtraction. ++ ++ ++File: ld.info, Node: Orphan Sections, Next: Location Counter, Prev: Symbols, Up: Expressions ++ ++3.10.3 Orphan Sections ++---------------------- ++ ++Orphan sections are sections present in the input files which are not ++explicitly placed into the output file by the linker script. The ++linker will still copy these sections into the output file, but it has ++to guess as to where they should be placed. The linker uses a simple ++heuristic to do this. It attempts to place orphan sections after ++non-orphan sections of the same attribute, such as code vs data, ++loadable vs non-loadable, etc. If there is not enough room to do this ++then it places at the end of the file. ++ ++ For ELF targets, the attribute of the section includes section type ++as well as section flag. ++ ++ ++File: ld.info, Node: Location Counter, Next: Operators, Prev: Orphan Sections, Up: Expressions ++ ++3.10.4 The Location Counter ++--------------------------- ++ ++The special linker variable "dot" `.' always contains the current ++output location counter. Since the `.' always refers to a location in ++an output section, it may only appear in an expression within a ++`SECTIONS' command. The `.' symbol may appear anywhere that an ++ordinary symbol is allowed in an expression. ++ ++ Assigning a value to `.' will cause the location counter to be ++moved. This may be used to create holes in the output section. The ++location counter may never be moved backwards. ++ ++ SECTIONS ++ { ++ output : ++ { ++ file1(.text) ++ . = . + 1000; ++ file2(.text) ++ . += 1000; ++ file3(.text) ++ } = 0x12345678; ++ } ++ In the previous example, the `.text' section from `file1' is located ++at the beginning of the output section `output'. It is followed by a ++1000 byte gap. Then the `.text' section from `file2' appears, also ++with a 1000 byte gap following before the `.text' section from `file3'. ++The notation `= 0x12345678' specifies what data to write in the gaps ++(*note Output Section Fill::). ++ ++ Note: `.' actually refers to the byte offset from the start of the ++current containing object. Normally this is the `SECTIONS' statement, ++whose start address is 0, hence `.' can be used as an absolute address. ++If `.' is used inside a section description however, it refers to the ++byte offset from the start of that section, not an absolute address. ++Thus in a script like this: ++ ++ SECTIONS ++ { ++ . = 0x100 ++ .text: { ++ *(.text) ++ . = 0x200 ++ } ++ . = 0x500 ++ .data: { ++ *(.data) ++ . += 0x600 ++ } ++ } ++ ++ The `.text' section will be assigned a starting address of 0x100 and ++a size of exactly 0x200 bytes, even if there is not enough data in the ++`.text' input sections to fill this area. (If there is too much data, ++an error will be produced because this would be an attempt to move `.' ++backwards). The `.data' section will start at 0x500 and it will have ++an extra 0x600 bytes worth of space after the end of the values from ++the `.data' input sections and before the end of the `.data' output ++section itself. ++ ++ Setting symbols to the value of the location counter outside of an ++output section statement can result in unexpected values if the linker ++needs to place orphan sections. For example, given the following: ++ ++ SECTIONS ++ { ++ start_of_text = . ; ++ .text: { *(.text) } ++ end_of_text = . ; ++ ++ start_of_data = . ; ++ .data: { *(.data) } ++ end_of_data = . ; ++ } ++ ++ If the linker needs to place some input section, e.g. `.rodata', not ++mentioned in the script, it might choose to place that section between ++`.text' and `.data'. You might think the linker should place `.rodata' ++on the blank line in the above script, but blank lines are of no ++particular significance to the linker. As well, the linker doesn't ++associate the above symbol names with their sections. Instead, it ++assumes that all assignments or other statements belong to the previous ++output section, except for the special case of an assignment to `.'. ++I.e., the linker will place the orphan `.rodata' section as if the ++script was written as follows: ++ ++ SECTIONS ++ { ++ start_of_text = . ; ++ .text: { *(.text) } ++ end_of_text = . ; ++ ++ start_of_data = . ; ++ .rodata: { *(.rodata) } ++ .data: { *(.data) } ++ end_of_data = . ; ++ } ++ ++ This may or may not be the script author's intention for the value of ++`start_of_data'. One way to influence the orphan section placement is ++to assign the location counter to itself, as the linker assumes that an ++assignment to `.' is setting the start address of a following output ++section and thus should be grouped with that section. So you could ++write: ++ ++ SECTIONS ++ { ++ start_of_text = . ; ++ .text: { *(.text) } ++ end_of_text = . ; ++ ++ . = . ; ++ start_of_data = . ; ++ .data: { *(.data) } ++ end_of_data = . ; ++ } ++ ++ Now, the orphan `.rodata' section will be placed between ++`end_of_text' and `start_of_data'. ++ ++ ++File: ld.info, Node: Operators, Next: Evaluation, Prev: Location Counter, Up: Expressions ++ ++3.10.5 Operators ++---------------- ++ ++The linker recognizes the standard C set of arithmetic operators, with ++the standard bindings and precedence levels: ++ precedence associativity Operators Notes ++ (highest) ++ 1 left ! - ~ (1) ++ 2 left * / % ++ 3 left + - ++ 4 left >> << ++ 5 left == != > < <= >= ++ 6 left & ++ 7 left | ++ 8 left && ++ 9 left || ++ 10 right ? : ++ 11 right &= += -= *= /= (2) ++ (lowest) ++ Notes: (1) Prefix operators (2) *Note Assignments::. ++ ++ ++File: ld.info, Node: Evaluation, Next: Expression Section, Prev: Operators, Up: Expressions ++ ++3.10.6 Evaluation ++----------------- ++ ++The linker evaluates expressions lazily. It only computes the value of ++an expression when absolutely necessary. ++ ++ The linker needs some information, such as the value of the start ++address of the first section, and the origins and lengths of memory ++regions, in order to do any linking at all. These values are computed ++as soon as possible when the linker reads in the linker script. ++ ++ However, other values (such as symbol values) are not known or needed ++until after storage allocation. Such values are evaluated later, when ++other information (such as the sizes of output sections) is available ++for use in the symbol assignment expression. ++ ++ The sizes of sections cannot be known until after allocation, so ++assignments dependent upon these are not performed until after ++allocation. ++ ++ Some expressions, such as those depending upon the location counter ++`.', must be evaluated during section allocation. ++ ++ If the result of an expression is required, but the value is not ++available, then an error results. For example, a script like the ++following ++ SECTIONS ++ { ++ .text 9+this_isnt_constant : ++ { *(.text) } ++ } ++will cause the error message `non constant expression for initial ++address'. ++ ++ ++File: ld.info, Node: Expression Section, Next: Builtin Functions, Prev: Evaluation, Up: Expressions ++ ++3.10.7 The Section of an Expression ++----------------------------------- ++ ++When the linker evaluates an expression, the result is either absolute ++or relative to some section. A relative expression is expressed as a ++fixed offset from the base of a section. ++ ++ The position of the expression within the linker script determines ++whether it is absolute or relative. An expression which appears within ++an output section definition is relative to the base of the output ++section. An expression which appears elsewhere will be absolute. ++ ++ A symbol set to a relative expression will be relocatable if you ++request relocatable output using the `-r' option. That means that a ++further link operation may change the value of the symbol. The symbol's ++section will be the section of the relative expression. ++ ++ A symbol set to an absolute expression will retain the same value ++through any further link operation. The symbol will be absolute, and ++will not have any particular associated section. ++ ++ You can use the builtin function `ABSOLUTE' to force an expression ++to be absolute when it would otherwise be relative. For example, to ++create an absolute symbol set to the address of the end of the output ++section `.data': ++ SECTIONS ++ { ++ .data : { *(.data) _edata = ABSOLUTE(.); } ++ } ++ If `ABSOLUTE' were not used, `_edata' would be relative to the ++`.data' section. ++ ++ ++File: ld.info, Node: Builtin Functions, Prev: Expression Section, Up: Expressions ++ ++3.10.8 Builtin Functions ++------------------------ ++ ++The linker script language includes a number of builtin functions for ++use in linker script expressions. ++ ++`ABSOLUTE(EXP)' ++ Return the absolute (non-relocatable, as opposed to non-negative) ++ value of the expression EXP. Primarily useful to assign an ++ absolute value to a symbol within a section definition, where ++ symbol values are normally section relative. *Note Expression ++ Section::. ++ ++`ADDR(SECTION)' ++ Return the absolute address (the VMA) of the named SECTION. Your ++ script must previously have defined the location of that section. ++ In the following example, `symbol_1' and `symbol_2' are assigned ++ identical values: ++ SECTIONS { ... ++ .output1 : ++ { ++ start_of_output_1 = ABSOLUTE(.); ++ ... ++ } ++ .output : ++ { ++ symbol_1 = ADDR(.output1); ++ symbol_2 = start_of_output_1; ++ } ++ ... } ++ ++`ALIGN(ALIGN)' ++`ALIGN(EXP,ALIGN)' ++ Return the location counter (`.') or arbitrary expression aligned ++ to the next ALIGN boundary. The single operand `ALIGN' doesn't ++ change the value of the location counter--it just does arithmetic ++ on it. The two operand `ALIGN' allows an arbitrary expression to ++ be aligned upwards (`ALIGN(ALIGN)' is equivalent to `ALIGN(., ++ ALIGN)'). ++ ++ Here is an example which aligns the output `.data' section to the ++ next `0x2000' byte boundary after the preceding section and sets a ++ variable within the section to the next `0x8000' boundary after the ++ input sections: ++ SECTIONS { ... ++ .data ALIGN(0x2000): { ++ *(.data) ++ variable = ALIGN(0x8000); ++ } ++ ... } ++ The first use of `ALIGN' in this example specifies the ++ location of a section because it is used as the optional ADDRESS ++ attribute of a section definition (*note Output Section ++ Address::). The second use of `ALIGN' is used to defines the ++ value of a symbol. ++ ++ The builtin function `NEXT' is closely related to `ALIGN'. ++ ++`BLOCK(EXP)' ++ This is a synonym for `ALIGN', for compatibility with older linker ++ scripts. It is most often seen when setting the address of an ++ output section. ++ ++`DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE)' ++ This is equivalent to either ++ (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - 1))) ++ or ++ (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - COMMONPAGESIZE))) ++ depending on whether the latter uses fewer COMMONPAGESIZE sized ++ pages for the data segment (area between the result of this ++ expression and `DATA_SEGMENT_END') than the former or not. If the ++ latter form is used, it means COMMONPAGESIZE bytes of runtime ++ memory will be saved at the expense of up to COMMONPAGESIZE wasted ++ bytes in the on-disk file. ++ ++ This expression can only be used directly in `SECTIONS' commands, ++ not in any output section descriptions and only once in the linker ++ script. COMMONPAGESIZE should be less or equal to MAXPAGESIZE and ++ should be the system page size the object wants to be optimized ++ for (while still working on system page sizes up to MAXPAGESIZE). ++ ++ Example: ++ . = DATA_SEGMENT_ALIGN(0x10000, 0x2000); ++ ++`DATA_SEGMENT_END(EXP)' ++ This defines the end of data segment for `DATA_SEGMENT_ALIGN' ++ evaluation purposes. ++ ++ . = DATA_SEGMENT_END(.); ++ ++`DATA_SEGMENT_RELRO_END(OFFSET, EXP)' ++ This defines the end of the `PT_GNU_RELRO' segment when `-z relro' ++ option is used. Second argument is returned. When `-z relro' ++ option is not present, `DATA_SEGMENT_RELRO_END' does nothing, ++ otherwise `DATA_SEGMENT_ALIGN' is padded so that EXP + OFFSET is ++ aligned to the most commonly used page boundary for particular ++ target. If present in the linker script, it must always come in ++ between `DATA_SEGMENT_ALIGN' and `DATA_SEGMENT_END'. ++ ++ . = DATA_SEGMENT_RELRO_END(24, .); ++ ++`DEFINED(SYMBOL)' ++ Return 1 if SYMBOL is in the linker global symbol table and is ++ defined before the statement using DEFINED in the script, otherwise ++ return 0. You can use this function to provide default values for ++ symbols. For example, the following script fragment shows how to ++ set a global symbol `begin' to the first location in the `.text' ++ section--but if a symbol called `begin' already existed, its value ++ is preserved: ++ ++ SECTIONS { ... ++ .text : { ++ begin = DEFINED(begin) ? begin : . ; ++ ... ++ } ++ ... ++ } ++ ++`LENGTH(MEMORY)' ++ Return the length of the memory region named MEMORY. ++ ++`LOADADDR(SECTION)' ++ Return the absolute LMA of the named SECTION. This is normally ++ the same as `ADDR', but it may be different if the `AT' attribute ++ is used in the output section definition (*note Output Section ++ LMA::). ++ ++`MAX(EXP1, EXP2)' ++ Returns the maximum of EXP1 and EXP2. ++ ++`MIN(EXP1, EXP2)' ++ Returns the minimum of EXP1 and EXP2. ++ ++`NEXT(EXP)' ++ Return the next unallocated address that is a multiple of EXP. ++ This function is closely related to `ALIGN(EXP)'; unless you use ++ the `MEMORY' command to define discontinuous memory for the output ++ file, the two functions are equivalent. ++ ++`ORIGIN(MEMORY)' ++ Return the origin of the memory region named MEMORY. ++ ++`SEGMENT_START(SEGMENT, DEFAULT)' ++ Return the base address of the named SEGMENT. If an explicit ++ value has been given for this segment (with a command-line `-T' ++ option) that value will be returned; otherwise the value will be ++ DEFAULT. At present, the `-T' command-line option can only be ++ used to set the base address for the "text", "data", and "bss" ++ sections, but you use `SEGMENT_START' with any segment name. ++ ++`SIZEOF(SECTION)' ++ Return the size in bytes of the named SECTION, if that section has ++ been allocated. If the section has not been allocated when this is ++ evaluated, the linker will report an error. In the following ++ example, `symbol_1' and `symbol_2' are assigned identical values: ++ SECTIONS{ ... ++ .output { ++ .start = . ; ++ ... ++ .end = . ; ++ } ++ symbol_1 = .end - .start ; ++ symbol_2 = SIZEOF(.output); ++ ... } ++ ++`SIZEOF_HEADERS' ++`sizeof_headers' ++ Return the size in bytes of the output file's headers. This is ++ information which appears at the start of the output file. You ++ can use this number when setting the start address of the first ++ section, if you choose, to facilitate paging. ++ ++ When producing an ELF output file, if the linker script uses the ++ `SIZEOF_HEADERS' builtin function, the linker must compute the ++ number of program headers before it has determined all the section ++ addresses and sizes. If the linker later discovers that it needs ++ additional program headers, it will report an error `not enough ++ room for program headers'. To avoid this error, you must avoid ++ using the `SIZEOF_HEADERS' function, or you must rework your linker ++ script to avoid forcing the linker to use additional program ++ headers, or you must define the program headers yourself using the ++ `PHDRS' command (*note PHDRS::). ++ ++ ++File: ld.info, Node: Implicit Linker Scripts, Prev: Expressions, Up: Scripts ++ ++3.11 Implicit Linker Scripts ++============================ ++ ++If you specify a linker input file which the linker can not recognize as ++an object file or an archive file, it will try to read the file as a ++linker script. If the file can not be parsed as a linker script, the ++linker will report an error. ++ ++ An implicit linker script will not replace the default linker script. ++ ++ Typically an implicit linker script would contain only symbol ++assignments, or the `INPUT', `GROUP', or `VERSION' commands. ++ ++ Any input files read because of an implicit linker script will be ++read at the position in the command line where the implicit linker ++script was read. This can affect archive searching. ++ ++ ++File: ld.info, Node: Machine Dependent, Next: BFD, Prev: Scripts, Up: Top ++ ++4 Machine Dependent Features ++**************************** ++ ++`ld' has additional features on some platforms; the following sections ++describe them. Machines where `ld' has no additional functionality are ++not listed. ++ ++* Menu: ++ ++ ++* H8/300:: `ld' and the H8/300 ++ ++* i960:: `ld' and the Intel 960 family ++ ++* ARM:: `ld' and the ARM family ++ ++* HPPA ELF32:: `ld' and HPPA 32-bit ELF ++ ++* MMIX:: `ld' and MMIX ++ ++* MSP430:: `ld' and MSP430 ++ ++* PowerPC ELF32:: `ld' and PowerPC 32-bit ELF Support ++ ++* PowerPC64 ELF64:: `ld' and PowerPC64 64-bit ELF Support ++ ++* TI COFF:: `ld' and TI COFF ++ ++* WIN32:: `ld' and WIN32 (cygwin/mingw) ++ ++* Xtensa:: `ld' and Xtensa Processors ++ ++ ++File: ld.info, Node: H8/300, Next: i960, Up: Machine Dependent ++ ++4.1 `ld' and the H8/300 ++======================= ++ ++For the H8/300, `ld' can perform these global optimizations when you ++specify the `--relax' command-line option. ++ ++_relaxing address modes_ ++ `ld' finds all `jsr' and `jmp' instructions whose targets are ++ within eight bits, and turns them into eight-bit program-counter ++ relative `bsr' and `bra' instructions, respectively. ++ ++_synthesizing instructions_ ++ `ld' finds all `mov.b' instructions which use the sixteen-bit ++ absolute address form, but refer to the top page of memory, and ++ changes them to use the eight-bit address form. (That is: the ++ linker turns `mov.b `@'AA:16' into `mov.b `@'AA:8' whenever the ++ address AA is in the top page of memory). ++ ++_bit manipulation instructions_ ++ `ld' finds all bit manipulation instructions like `band, bclr, ++ biand, bild, bior, bist, bixor, bld, bnot, bor, bset, bst, btst, ++ bxor' which use 32 bit and 16 bit absolute address form, but refer ++ to the top page of memory, and changes them to use the 8 bit ++ address form. (That is: the linker turns `bset #xx:3,`@'AA:32' ++ into `bset #xx:3,`@'AA:8' whenever the address AA is in the top ++ page of memory). ++ ++_system control instructions_ ++ `ld' finds all `ldc.w, stc.w' instrcutions which use the 32 bit ++ absolute address form, but refer to the top page of memory, and ++ changes them to use 16 bit address form. (That is: the linker ++ turns `ldc.w `@'AA:32,ccr' into `ldc.w `@'AA:16,ccr' whenever the ++ address AA is in the top page of memory). ++ ++ ++File: ld.info, Node: i960, Next: ARM, Prev: H8/300, Up: Machine Dependent ++ ++4.2 `ld' and the Intel 960 Family ++================================= ++ ++You can use the `-AARCHITECTURE' command line option to specify one of ++the two-letter names identifying members of the 960 family; the option ++specifies the desired output target, and warns of any incompatible ++instructions in the input files. It also modifies the linker's search ++strategy for archive libraries, to support the use of libraries ++specific to each particular architecture, by including in the search ++loop names suffixed with the string identifying the architecture. ++ ++ For example, if your `ld' command line included `-ACA' as well as ++`-ltry', the linker would look (in its built-in search paths, and in ++any paths you specify with `-L') for a library with the names ++ ++ try ++ libtry.a ++ tryca ++ libtryca.a ++ ++The first two possibilities would be considered in any event; the last ++two are due to the use of `-ACA'. ++ ++ You can meaningfully use `-A' more than once on a command line, since ++the 960 architecture family allows combination of target architectures; ++each use will add another pair of name variants to search for when `-l' ++specifies a library. ++ ++ `ld' supports the `--relax' option for the i960 family. If you ++specify `--relax', `ld' finds all `balx' and `calx' instructions whose ++targets are within 24 bits, and turns them into 24-bit program-counter ++relative `bal' and `cal' instructions, respectively. `ld' also turns ++`cal' instructions into `bal' instructions when it determines that the ++target subroutine is a leaf routine (that is, the target subroutine does ++not itself call any subroutines). ++ ++ ++File: ld.info, Node: ARM, Next: HPPA ELF32, Prev: i960, Up: Machine Dependent ++ ++4.3 `ld' and the ARM family ++=========================== ++ ++For the ARM, `ld' will generate code stubs to allow functions calls ++betweem ARM and Thumb code. These stubs only work with code that has ++been compiled and assembled with the `-mthumb-interwork' command line ++option. If it is necessary to link with old ARM object files or ++libraries, which have not been compiled with the -mthumb-interwork ++option then the `--support-old-code' command line switch should be ++given to the linker. This will make it generate larger stub functions ++which will work with non-interworking aware ARM code. Note, however, ++the linker does not support generating stubs for function calls to ++non-interworking aware Thumb code. ++ ++ The `--thumb-entry' switch is a duplicate of the generic `--entry' ++switch, in that it sets the program's starting address. But it also ++sets the bottom bit of the address, so that it can be branched to using ++a BX instruction, and the program will start executing in Thumb mode ++straight away. ++ ++ The `--be8' switch instructs `ld' to generate BE8 format ++executables. This option is only valid when linking big-endian objects. ++The resulting image will contain big-endian data and little-endian code. ++ ++ The `R_ARM_TARGET1' relocation is typically used for entries in the ++`.init_array' section. It is interpreted as either `R_ARM_REL32' or ++`R_ARM_ABS32', depending on the target. The `--target1-rel' and ++`--target1-abs' switches override the default. ++ ++ The `--target2=type' switch overrides the default definition of the ++`R_ARM_TARGET2' relocation. Valid values for `type', their meanings, ++and target defaults are as follows: ++`rel' ++ `R_ARM_REL32' (arm*-*-elf, arm*-*-eabi) ++ ++`abs' ++ `R_ARM_ABS32' (arm*-*-symbianelf) ++ ++`got-rel' ++ `R_ARM_GOT_PREL' (arm*-*-linux, arm*-*-*bsd) ++ ++ The `R_ARM_V4BX' relocation (defined by the ARM AAELF specification) ++enables objects compiled for the ARMv4 architecture to be ++interworking-safe when linked with other objects compiled for ARMv4t, ++but also allows pure ARMv4 binaries to be built from the same ARMv4 ++objects. ++ ++ In the latter case, the switch `--fix-v4bx' must be passed to the ++linker, which causes v4t `BX rM' instructions to be rewritten as `MOV ++PC,rM', since v4 processors do not have a `BX' instruction. ++ ++ In the former case, the switch should not be used, and `R_ARM_V4BX' ++relocations are ignored. ++ ++ The `--use-blx' switch enables the linker to use ARM/Thumb BLX ++instructions (available on ARMv5t and above) in various situations. ++Currently it is used to perform calls via the PLT from Thumb code using ++BLX rather than using BX and a mode-switching stub before each PLT ++entry. This should lead to such calls executing slightly faster. ++ ++ This option is enabled implicitly for SymbianOS, so there is no need ++to specify it if you are using that target. ++ ++ ++File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: ARM, Up: Machine Dependent ++ ++4.4 `ld' and HPPA 32-bit ELF Support ++==================================== ++ ++When generating a shared library, `ld' will by default generate import ++stubs suitable for use with a single sub-space application. The ++`--multi-subspace' switch causes `ld' to generate export stubs, and ++different (larger) import stubs suitable for use with multiple ++sub-spaces. ++ ++ Long branch stubs and import/export stubs are placed by `ld' in stub ++sections located between groups of input sections. `--stub-group-size' ++specifies the maximum size of a group of input sections handled by one ++stub section. Since branch offsets are signed, a stub section may ++serve two groups of input sections, one group before the stub section, ++and one group after it. However, when using conditional branches that ++require stubs, it may be better (for branch prediction) that stub ++sections only serve one group of input sections. A negative value for ++`N' chooses this scheme, ensuring that branches to stubs always use a ++negative offset. Two special values of `N' are recognized, `1' and ++`-1'. These both instruct `ld' to automatically size input section ++groups for the branch types detected, with the same behaviour regarding ++stub placement as other positive or negative values of `N' respectively. ++ ++ Note that `--stub-group-size' does not split input sections. A ++single input section larger than the group size specified will of course ++create a larger group (of one section). If input sections are too ++large, it may not be possible for a branch to reach its stub. ++ ++ ++File: ld.info, Node: MMIX, Next: MSP430, Prev: HPPA ELF32, Up: Machine Dependent ++ ++4.5 `ld' and MMIX ++================= ++ ++For MMIX, there is a choice of generating `ELF' object files or `mmo' ++object files when linking. The simulator `mmix' understands the `mmo' ++format. The binutils `objcopy' utility can translate between the two ++formats. ++ ++ There is one special section, the `.MMIX.reg_contents' section. ++Contents in this section is assumed to correspond to that of global ++registers, and symbols referring to it are translated to special ++symbols, equal to registers. In a final link, the start address of the ++`.MMIX.reg_contents' section corresponds to the first allocated global ++register multiplied by 8. Register `$255' is not included in this ++section; it is always set to the program entry, which is at the symbol ++`Main' for `mmo' files. ++ ++ Symbols with the prefix `__.MMIX.start.', for example ++`__.MMIX.start..text' and `__.MMIX.start..data' are special; there must ++be only one each, even if they are local. The default linker script ++uses these to set the default start address of a section. ++ ++ Initial and trailing multiples of zero-valued 32-bit words in a ++section, are left out from an mmo file. ++ ++ ++File: ld.info, Node: MSP430, Next: PowerPC ELF32, Prev: MMIX, Up: Machine Dependent ++ ++4.6 `ld' and MSP430 ++=================== ++ ++For the MSP430 it is possible to select the MPU architecture. The flag ++`-m [mpu type]' will select an appropriate linker script for selected ++MPU type. (To get a list of known MPUs just pass `-m help' option to ++the linker). ++ ++ The linker will recognize some extra sections which are MSP430 ++specific: ++ ++``.vectors'' ++ Defines a portion of ROM where interrupt vectors located. ++ ++``.bootloader'' ++ Defines the bootloader portion of the ROM (if applicable). Any ++ code in this section will be uploaded to the MPU. ++ ++``.infomem'' ++ Defines an information memory section (if applicable). Any code in ++ this section will be uploaded to the MPU. ++ ++``.infomemnobits'' ++ This is the same as the `.infomem' section except that any code in ++ this section will not be uploaded to the MPU. ++ ++``.noinit'' ++ Denotes a portion of RAM located above `.bss' section. ++ ++ The last two sections are used by gcc. ++ ++ ++File: ld.info, Node: PowerPC ELF32, Next: PowerPC64 ELF64, Prev: MSP430, Up: Machine Dependent ++ ++4.7 `ld' and PowerPC 32-bit ELF Support ++======================================= ++ ++Branches on PowerPC processors are limited to a signed 26-bit ++displacement, which may result in `ld' giving `relocation truncated to ++fit' errors with very large programs. `--relax' enables the generation ++of trampolines that can access the entire 32-bit address space. These ++trampolines are inserted at section boundaries, so may not themselves ++be reachable if an input section exceeds 33M in size. ++ ++`--bss-plt' ++ Current PowerPC GCC accepts a `-msecure-plt' option that generates ++ code capable of using a newer PLT and GOT layout that has the ++ security advantage of no executable section ever needing to be ++ writable and no writable section ever being executable. PowerPC ++ `ld' will generate this layout, including stubs to access the PLT, ++ if all input files (including startup and static libraries) were ++ compiled with `-msecure-plt'. `--bss-plt' forces the old BSS PLT ++ (and GOT layout) which can give slightly better performance. ++ ++`--sdata-got' ++ The new secure PLT and GOT are placed differently relative to other ++ sections compared to older BSS PLT and GOT placement. The ++ location of `.plt' must change because the new secure PLT is an ++ initialized section while the old PLT is uninitialized. The ++ reason for the `.got' change is more subtle: The new placement ++ allows `.got' to be read-only in applications linked with `-z ++ relro -z now'. However, this placement means that `.sdata' cannot ++ always be used in shared libraries, because the PowerPC ABI ++ accesses `.sdata' in shared libraries from the GOT pointer. ++ `--sdata-got' forces the old GOT placement. PowerPC GCC doesn't ++ use `.sdata' in shared libraries, so this option is really only ++ useful for other compilers that may do so. ++ ++`--emit-stub-syms' ++ This option causes `ld' to label linker stubs with a local symbol ++ that encodes the stub type and destination. ++ ++`--no-tls-optimize' ++ PowerPC `ld' normally performs some optimization of code sequences ++ used to access Thread-Local Storage. Use this option to disable ++ the optimization. ++ ++ ++File: ld.info, Node: PowerPC64 ELF64, Next: TI COFF, Prev: PowerPC ELF32, Up: Machine Dependent ++ ++4.8 `ld' and PowerPC64 64-bit ELF Support ++========================================= ++ ++`--stub-group-size' ++ Long branch stubs, PLT call stubs and TOC adjusting stubs are ++ placed by `ld' in stub sections located between groups of input ++ sections. `--stub-group-size' specifies the maximum size of a ++ group of input sections handled by one stub section. Since branch ++ offsets are signed, a stub section may serve two groups of input ++ sections, one group before the stub section, and one group after ++ it. However, when using conditional branches that require stubs, ++ it may be better (for branch prediction) that stub sections only ++ serve one group of input sections. A negative value for `N' ++ chooses this scheme, ensuring that branches to stubs always use a ++ negative offset. Two special values of `N' are recognized, `1' ++ and `-1'. These both instruct `ld' to automatically size input ++ section groups for the branch types detected, with the same ++ behaviour regarding stub placement as other positive or negative ++ values of `N' respectively. ++ ++ Note that `--stub-group-size' does not split input sections. A ++ single input section larger than the group size specified will of ++ course create a larger group (of one section). If input sections ++ are too large, it may not be possible for a branch to reach its ++ stub. ++ ++`--emit-stub-syms' ++ This option causes `ld' to label linker stubs with a local symbol ++ that encodes the stub type and destination. ++ ++`--dotsyms, --no-dotsyms' ++ These two options control how `ld' interprets version patterns in ++ a version script. Older PowerPC64 compilers emitted both a ++ function descriptor symbol with the same name as the function, and ++ a code entry symbol with the name prefixed by a dot (`.'). To ++ properly version a function `foo', the version script thus needs ++ to control both `foo' and `.foo'. The option `--dotsyms', on by ++ default, automatically adds the required dot-prefixed patterns. ++ Use `--no-dotsyms' to disable this feature. ++ ++`--no-tls-optimize' ++ PowerPC64 `ld' normally performs some optimization of code ++ sequences used to access Thread-Local Storage. Use this option to ++ disable the optimization. ++ ++`--no-opd-optimize' ++ PowerPC64 `ld' normally removes `.opd' section entries ++ corresponding to deleted link-once functions, or functions removed ++ by the action of `--gc-sections' or linker scrip `/DISCARD/'. Use ++ this option to disable `.opd' optimization. ++ ++`--non-overlapping-opd' ++ Some PowerPC64 compilers have an option to generate compressed ++ `.opd' entries spaced 16 bytes apart, overlapping the third word, ++ the static chain pointer (unused in C) with the first word of the ++ next entry. This option expands such entries to the full 24 bytes. ++ ++`--no-toc-optimize' ++ PowerPC64 `ld' normally removes unused `.toc' section entries. ++ Such entries are detected by examining relocations that reference ++ the TOC in code sections. A reloc in a deleted code section marks ++ a TOC word as unneeded, while a reloc in a kept code section marks ++ a TOC word as needed. Since the TOC may reference itself, TOC ++ relocs are also examined. TOC words marked as both needed and ++ unneeded will of course be kept. TOC words without any referencing ++ reloc are assumed to be part of a multi-word entry, and are kept or ++ discarded as per the nearest marked preceding word. This works ++ reliably for compiler generated code, but may be incorrect if ++ assembly code is used to insert TOC entries. Use this option to ++ disable the optimization. ++ ++`--no-multi-toc' ++ By default, PowerPC64 GCC generates code for a TOC model where TOC ++ entries are accessed with a 16-bit offset from r2. This limits the ++ total TOC size to 64K. PowerPC64 `ld' extends this limit by ++ grouping code sections such that each group uses less than 64K for ++ its TOC entries, then inserts r2 adjusting stubs between ++ inter-group calls. `ld' does not split apart input sections, so ++ cannot help if a single input file has a `.toc' section that ++ exceeds 64K, most likely from linking multiple files with `ld -r'. ++ Use this option to turn off this feature. ++ ++ ++File: ld.info, Node: TI COFF, Next: WIN32, Prev: PowerPC64 ELF64, Up: Machine Dependent ++ ++4.9 `ld''s Support for Various TI COFF Versions ++=============================================== ++ ++The `--format' switch allows selection of one of the various TI COFF ++versions. The latest of this writing is 2; versions 0 and 1 are also ++supported. The TI COFF versions also vary in header byte-order format; ++`ld' will read any version or byte order, but the output header format ++depends on the default specified by the specific target. ++ ++ ++File: ld.info, Node: WIN32, Next: Xtensa, Prev: TI COFF, Up: Machine Dependent ++ ++4.10 `ld' and WIN32 (cygwin/mingw) ++================================== ++ ++This section describes some of the win32 specific `ld' issues. See ++*Note Command Line Options: Options. for detailed decription of the ++command line options mentioned here. ++ ++_import libraries_ ++ The standard Windows linker creates and uses so-called import ++ libraries, which contains information for linking to dll's. They ++ are regular static archives and are handled as any other static ++ archive. The cygwin and mingw ports of `ld' have specific support ++ for creating such libraries provided with the `--out-implib' ++ command line option. ++ ++_exporting DLL symbols_ ++ The cygwin/mingw `ld' has several ways to export symbols for dll's. ++ ++ _using auto-export functionality_ ++ By default `ld' exports symbols with the auto-export ++ functionality, which is controlled by the following command ++ line options: ++ ++ * -export-all-symbols [This is the default] ++ ++ * -exclude-symbols ++ ++ * -exclude-libs ++ ++ If, however, `--export-all-symbols' is not given explicitly ++ on the command line, then the default auto-export behavior ++ will be _disabled_ if either of the following are true: ++ ++ * A DEF file is used. ++ ++ * Any symbol in any object file was marked with the ++ __declspec(dllexport) attribute. ++ ++ _using a DEF file_ ++ Another way of exporting symbols is using a DEF file. A DEF ++ file is an ASCII file containing definitions of symbols which ++ should be exported when a dll is created. Usually it is ++ named `.def' and is added as any other object file ++ to the linker's command line. The file's name must end in ++ `.def' or `.DEF'. ++ ++ gcc -o .def ++ ++ Using a DEF file turns off the normal auto-export behavior, ++ unless the `--export-all-symbols' option is also used. ++ ++ Here is an example of a DEF file for a shared library called ++ `xyz.dll': ++ ++ LIBRARY "xyz.dll" BASE=0x20000000 ++ ++ EXPORTS ++ foo ++ bar ++ _bar = bar ++ another_foo = abc.dll.afoo ++ var1 DATA ++ ++ This example defines a DLL with a non-default base address ++ and five symbols in the export table. The third exported ++ symbol `_bar' is an alias for the second. The fourth symbol, ++ `another_foo' is resolved by "forwarding" to another module ++ and treating it as an alias for `afoo' exported from the DLL ++ `abc.dll'. The final symbol `var1' is declared to be a data ++ object. ++ ++ The optional `LIBRARY ' command indicates the _internal_ ++ name of the output DLL. If `' does not include a suffix, ++ the default library suffix, `.DLL' is appended. ++ ++ When the .DEF file is used to build an application. rather ++ than a library, the `NAME ' command shoud be used ++ instead of `LIBRARY'. If `' does not include a suffix, ++ the default executable suffix, `.EXE' is appended. ++ ++ With either `LIBRARY ' or `NAME ' the optional ++ specification `BASE = ' may be used to specify a ++ non-default base address for the image. ++ ++ If neither `LIBRARY ' nor `NAME ' is specified, ++ or they specify an empty string, the internal name is the ++ same as the filename specified on the command line. ++ ++ The complete specification of an export symbol is: ++ ++ EXPORTS ++ ( ( ( [ = ] ) ++ | ( = . )) ++ [ @ ] [NONAME] [DATA] [CONSTANT] [PRIVATE] ) * ++ ++ Declares `' as an exported symbol from the DLL, or ++ declares `' as an exported alias for `'; or ++ declares `' as a "forward" alias for the symbol ++ `' in the DLL `'. Optionally, ++ the symbol may be exported by the specified ordinal ++ `' alias. ++ ++ The optional keywords that follow the declaration indicate: ++ ++ `NONAME': Do not put the symbol name in the DLL's export ++ table. It will still be exported by its ordinal alias ++ (either the value specified by the .def specification or, ++ otherwise, the value assigned by the linker). The symbol ++ name, however, does remain visible in the import library (if ++ any), unless `PRIVATE' is also specified. ++ ++ `DATA': The symbol is a variable or object, rather than a ++ function. The import lib will export only an indirect ++ reference to `foo' as the symbol `_imp__foo' (ie, `foo' must ++ be resolved as `*_imp__foo'). ++ ++ `CONSTANT': Like `DATA', but put the undecorated `foo' as ++ well as `_imp__foo' into the import library. Both refer to the ++ read-only import address table's pointer to the variable, not ++ to the variable itself. This can be dangerous. If the user ++ code fails to add the `dllimport' attribute and also fails to ++ explicitly add the extra indirection that the use of the ++ attribute enforces, the application will behave unexpectedly. ++ ++ `PRIVATE': Put the symbol in the DLL's export table, but do ++ not put it into the static import library used to resolve ++ imports at link time. The symbol can still be imported using ++ the `LoadLibrary/GetProcAddress' API at runtime or by by ++ using the GNU ld extension of linking directly to the DLL ++ without an import library. ++ ++ See ld/deffilep.y in the binutils sources for the full ++ specification of other DEF file statements ++ ++ While linking a shared dll, `ld' is able to create a DEF file ++ with the `--output-def ' command line option. ++ ++ _Using decorations_ ++ Another way of marking symbols for export is to modify the ++ source code itself, so that when building the DLL each symbol ++ to be exported is declared as: ++ ++ __declspec(dllexport) int a_variable ++ __declspec(dllexport) void a_function(int with_args) ++ ++ All such symbols will be exported from the DLL. If, however, ++ any of the object files in the DLL contain symbols decorated ++ in this way, then the normal auto-export behavior is ++ disabled, unless the `--export-all-symbols' option is also ++ used. ++ ++ Note that object files that wish to access these symbols must ++ _not_ decorate them with dllexport. Instead, they should use ++ dllimport, instead: ++ ++ __declspec(dllimport) int a_variable ++ __declspec(dllimport) void a_function(int with_args) ++ ++ This complicates the structure of library header files, ++ because when included by the library itself the header must ++ declare the variables and functions as dllexport, but when ++ included by client code the header must declare them as ++ dllimport. There are a number of idioms that are typically ++ used to do this; often client code can omit the __declspec() ++ declaration completely. See `--enable-auto-import' and ++ `automatic data imports' for more imformation. ++ ++_automatic data imports_ ++ The standard Windows dll format supports data imports from dlls ++ only by adding special decorations (dllimport/dllexport), which ++ let the compiler produce specific assembler instructions to deal ++ with this issue. This increases the effort necessary to port ++ existing Un*x code to these platforms, especially for large c++ ++ libraries and applications. The auto-import feature, which was ++ initially provided by Paul Sokolovsky, allows one to omit the ++ decorations to archieve a behavior that conforms to that on ++ POSIX/Un*x platforms. This feature is enabled with the ++ `--enable-auto-import' command-line option, although it is enabled ++ by default on cygwin/mingw. The `--enable-auto-import' option ++ itself now serves mainly to suppress any warnings that are ++ ordinarily emitted when linked objects trigger the feature's use. ++ ++ auto-import of variables does not always work flawlessly without ++ additional assistance. Sometimes, you will see this message ++ ++ "variable '' can't be auto-imported. Please read the ++ documentation for ld's `--enable-auto-import' for details." ++ ++ The `--enable-auto-import' documentation explains why this error ++ occurs, and several methods that can be used to overcome this ++ difficulty. One of these methods is the _runtime pseudo-relocs_ ++ feature, described below. ++ ++ For complex variables imported from DLLs (such as structs or ++ classes), object files typically contain a base address for the ++ variable and an offset (_addend_) within the variable-to specify a ++ particular field or public member, for instance. Unfortunately, ++ the runtime loader used in win32 environments is incapable of ++ fixing these references at runtime without the additional ++ information supplied by dllimport/dllexport decorations. The ++ standard auto-import feature described above is unable to resolve ++ these references. ++ ++ The `--enable-runtime-pseudo-relocs' switch allows these ++ references to be resolved without error, while leaving the task of ++ adjusting the references themselves (with their non-zero addends) ++ to specialized code provided by the runtime environment. Recent ++ versions of the cygwin and mingw environments and compilers ++ provide this runtime support; older versions do not. However, the ++ support is only necessary on the developer's platform; the ++ compiled result will run without error on an older system. ++ ++ `--enable-runtime-pseudo-relocs' is not the default; it must be ++ explicitly enabled as needed. ++ ++_direct linking to a dll_ ++ The cygwin/mingw ports of `ld' support the direct linking, ++ including data symbols, to a dll without the usage of any import ++ libraries. This is much faster and uses much less memory than ++ does the traditional import library method, expecially when ++ linking large libraries or applications. When `ld' creates an ++ import lib, each function or variable exported from the dll is ++ stored in its own bfd, even though a single bfd could contain many ++ exports. The overhead involved in storing, loading, and ++ processing so many bfd's is quite large, and explains the ++ tremendous time, memory, and storage needed to link against ++ particularly large or complex libraries when using import libs. ++ ++ Linking directly to a dll uses no extra command-line switches ++ other than `-L' and `-l', because `ld' already searches for a ++ number of names to match each library. All that is needed from ++ the developer's perspective is an understanding of this search, in ++ order to force ld to select the dll instead of an import library. ++ ++ For instance, when ld is called with the argument `-lxxx' it will ++ attempt to find, in the first directory of its search path, ++ ++ libxxx.dll.a ++ xxx.dll.a ++ libxxx.a ++ cygxxx.dll (*) ++ libxxx.dll ++ xxx.dll ++ ++ before moving on to the next directory in the search path. ++ ++ (*) Actually, this is not `cygxxx.dll' but in fact is ++ `xxx.dll', where `' is set by the `ld' option ++ `--dll-search-prefix='. In the case of cygwin, the ++ standard gcc spec file includes `--dll-search-prefix=cyg', so in ++ effect we actually search for `cygxxx.dll'. ++ ++ Other win32-based unix environments, such as mingw or pw32, may ++ use other `'es, although at present only cygwin makes use ++ of this feature. It was originally intended to help avoid name ++ conflicts among dll's built for the various win32/un*x ++ environments, so that (for example) two versions of a zlib dll ++ could coexist on the same machine. ++ ++ The generic cygwin/mingw path layout uses a `bin' directory for ++ applications and dll's and a `lib' directory for the import ++ libraries (using cygwin nomenclature): ++ ++ bin/ ++ cygxxx.dll ++ lib/ ++ libxxx.dll.a (in case of dll's) ++ libxxx.a (in case of static archive) ++ ++ Linking directly to a dll without using the import library can be ++ done two ways: ++ ++ 1. Use the dll directly by adding the `bin' path to the link line ++ gcc -Wl,-verbose -o a.exe -L../bin/ -lxxx ++ ++ However, as the dll's often have version numbers appended to their ++ names (`cygncurses-5.dll') this will often fail, unless one ++ specifies `-L../bin -lncurses-5' to include the version. Import ++ libs are generally not versioned, and do not have this difficulty. ++ ++ 2. Create a symbolic link from the dll to a file in the `lib' ++ directory according to the above mentioned search pattern. This ++ should be used to avoid unwanted changes in the tools needed for ++ making the app/dll. ++ ++ ln -s bin/cygxxx.dll lib/[cyg|lib|]xxx.dll[.a] ++ ++ Then you can link without any make environment changes. ++ ++ gcc -Wl,-verbose -o a.exe -L../lib/ -lxxx ++ ++ This technique also avoids the version number problems, because ++ the following is perfectly legal ++ ++ bin/ ++ cygxxx-5.dll ++ lib/ ++ libxxx.dll.a -> ../bin/cygxxx-5.dll ++ ++ Linking directly to a dll without using an import lib will work ++ even when auto-import features are exercised, and even when ++ `--enable-runtime-pseudo-relocs' is used. ++ ++ Given the improvements in speed and memory usage, one might ++ justifiably wonder why import libraries are used at all. There ++ are two reasons: ++ ++ 1. Until recently, the link-directly-to-dll functionality did _not_ ++ work with auto-imported data. ++ ++ 2. Sometimes it is necessary to include pure static objects within ++ the import library (which otherwise contains only bfd's for ++ indirection symbols that point to the exports of a dll). Again, ++ the import lib for the cygwin kernel makes use of this ability, ++ and it is not possible to do this without an import lib. ++ ++ So, import libs are not going away. But the ability to replace ++ true import libs with a simple symbolic link to (or a copy of) a ++ dll, in most cases, is a useful addition to the suite of tools ++ binutils makes available to the win32 developer. Given the ++ massive improvements in memory requirements during linking, storage ++ requirements, and linking speed, we expect that many developers ++ will soon begin to use this feature whenever possible. ++ ++_symbol aliasing_ ++ ++ _adding additional names_ ++ Sometimes, it is useful to export symbols with additional ++ names. A symbol `foo' will be exported as `foo', but it can ++ also be exported as `_foo' by using special directives in the ++ DEF file when creating the dll. This will affect also the ++ optional created import library. Consider the following DEF ++ file: ++ ++ LIBRARY "xyz.dll" BASE=0x61000000 ++ ++ EXPORTS ++ foo ++ _foo = foo ++ ++ The line `_foo = foo' maps the symbol `foo' to `_foo'. ++ ++ Another method for creating a symbol alias is to create it in ++ the source code using the "weak" attribute: ++ ++ void foo () { /* Do something. */; } ++ void _foo () __attribute__ ((weak, alias ("foo"))); ++ ++ See the gcc manual for more information about attributes and ++ weak symbols. ++ ++ _renaming symbols_ ++ Sometimes it is useful to rename exports. For instance, the ++ cygwin kernel does this regularly. A symbol `_foo' can be ++ exported as `foo' but not as `_foo' by using special ++ directives in the DEF file. (This will also affect the import ++ library, if it is created). In the following example: ++ ++ LIBRARY "xyz.dll" BASE=0x61000000 ++ ++ EXPORTS ++ _foo = foo ++ ++ The line `_foo = foo' maps the exported symbol `foo' to ++ `_foo'. ++ ++ Note: using a DEF file disables the default auto-export behavior, ++ unless the `--export-all-symbols' command line option is used. ++ If, however, you are trying to rename symbols, then you should list ++ _all_ desired exports in the DEF file, including the symbols that ++ are not being renamed, and do _not_ use the `--export-all-symbols' ++ option. If you list only the renamed symbols in the DEF file, and ++ use `--export-all-symbols' to handle the other symbols, then the ++ both the new names _and_ the original names for the renamed ++ symbols will be exported. In effect, you'd be aliasing those ++ symbols, not renaming them, which is probably not what you wanted. ++ ++_weak externals_ ++ The Windows object format, PE, specifies a form of weak symbols ++ called weak externals. When a weak symbol is linked and the ++ symbol is not defined, the weak symbol becomes an alias for some ++ other symbol. There are three variants of weak externals: ++ * Definition is searched for in objects and libraries, ++ historically called lazy externals. ++ ++ * Definition is searched for only in other objects, not in ++ libraries. This form is not presently implemented. ++ ++ * No search; the symbol is an alias. This form is not presently ++ implemented. ++ As a GNU extension, weak symbols that do not specify an alternate ++ symbol are supported. If the symbol is undefined when linking, ++ the symbol uses a default value. ++ ++ ++File: ld.info, Node: Xtensa, Prev: WIN32, Up: Machine Dependent ++ ++4.11 `ld' and Xtensa Processors ++=============================== ++ ++The default `ld' behavior for Xtensa processors is to interpret ++`SECTIONS' commands so that lists of explicitly named sections in a ++specification with a wildcard file will be interleaved when necessary to ++keep literal pools within the range of PC-relative load offsets. For ++example, with the command: ++ ++ SECTIONS ++ { ++ .text : { ++ *(.literal .text) ++ } ++ } ++ ++`ld' may interleave some of the `.literal' and `.text' sections from ++different object files to ensure that the literal pools are within the ++range of PC-relative load offsets. A valid interleaving might place ++the `.literal' sections from an initial group of files followed by the ++`.text' sections of that group of files. Then, the `.literal' sections ++from the rest of the files and the `.text' sections from the rest of ++the files would follow. ++ ++ Relaxation is enabled by default for the Xtensa version of `ld' and ++provides two important link-time optimizations. The first optimization ++is to combine identical literal values to reduce code size. A redundant ++literal will be removed and all the `L32R' instructions that use it ++will be changed to reference an identical literal, as long as the ++location of the replacement literal is within the offset range of all ++the `L32R' instructions. The second optimization is to remove ++unnecessary overhead from assembler-generated "longcall" sequences of ++`L32R'/`CALLXN' when the target functions are within range of direct ++`CALLN' instructions. ++ ++ For each of these cases where an indirect call sequence can be ++optimized to a direct call, the linker will change the `CALLXN' ++instruction to a `CALLN' instruction, remove the `L32R' instruction, ++and remove the literal referenced by the `L32R' instruction if it is ++not used for anything else. Removing the `L32R' instruction always ++reduces code size but can potentially hurt performance by changing the ++alignment of subsequent branch targets. By default, the linker will ++always preserve alignments, either by switching some instructions ++between 24-bit encodings and the equivalent density instructions or by ++inserting a no-op in place of the `L32R' instruction that was removed. ++If code size is more important than performance, the `--size-opt' ++option can be used to prevent the linker from widening density ++instructions or inserting no-ops, except in a few cases where no-ops ++are required for correctness. ++ ++ The following Xtensa-specific command-line options can be used to ++control the linker: ++ ++`--no-relax' ++ Since the Xtensa version of `ld' enables the `--relax' option by ++ default, the `--no-relax' option is provided to disable relaxation. ++ ++`--size-opt' ++ When optimizing indirect calls to direct calls, optimize for code ++ size more than performance. With this option, the linker will not ++ insert no-ops or widen density instructions to preserve branch ++ target alignment. There may still be some cases where no-ops are ++ required to preserve the correctness of the code. ++ ++ ++File: ld.info, Node: BFD, Next: Reporting Bugs, Prev: Machine Dependent, Up: Top ++ ++5 BFD ++***** ++ ++The linker accesses object and archive files using the BFD libraries. ++These libraries allow the linker to use the same routines to operate on ++object files whatever the object file format. A different object file ++format can be supported simply by creating a new BFD back end and adding ++it to the library. To conserve runtime memory, however, the linker and ++associated tools are usually configured to support only a subset of the ++object file formats available. You can use `objdump -i' (*note ++objdump: (binutils.info)objdump.) to list all the formats available for ++your configuration. ++ ++ As with most implementations, BFD is a compromise between several ++conflicting requirements. The major factor influencing BFD design was ++efficiency: any time used converting between formats is time which ++would not have been spent had BFD not been involved. This is partly ++offset by abstraction payback; since BFD simplifies applications and ++back ends, more time and care may be spent optimizing algorithms for a ++greater speed. ++ ++ One minor artifact of the BFD solution which you should bear in mind ++is the potential for information loss. There are two places where ++useful information can be lost using the BFD mechanism: during ++conversion and during output. *Note BFD information loss::. ++ ++* Menu: ++ ++* BFD outline:: How it works: an outline of BFD ++ ++ ++File: ld.info, Node: BFD outline, Up: BFD ++ ++5.1 How It Works: An Outline of BFD ++=================================== ++ ++When an object file is opened, BFD subroutines automatically determine ++the format of the input object file. They then build a descriptor in ++memory with pointers to routines that will be used to access elements of ++the object file's data structures. ++ ++ As different information from the object files is required, BFD ++reads from different sections of the file and processes them. For ++example, a very common operation for the linker is processing symbol ++tables. Each BFD back end provides a routine for converting between ++the object file's representation of symbols and an internal canonical ++format. When the linker asks for the symbol table of an object file, it ++calls through a memory pointer to the routine from the relevant BFD ++back end which reads and converts the table into a canonical form. The ++linker then operates upon the canonical form. When the link is finished ++and the linker writes the output file's symbol table, another BFD back ++end routine is called to take the newly created symbol table and ++convert it into the chosen output format. ++ ++* Menu: ++ ++* BFD information loss:: Information Loss ++* Canonical format:: The BFD canonical object-file format ++ ++ ++File: ld.info, Node: BFD information loss, Next: Canonical format, Up: BFD outline ++ ++5.1.1 Information Loss ++---------------------- ++ ++_Information can be lost during output._ The output formats supported ++by BFD do not provide identical facilities, and information which can ++be described in one form has nowhere to go in another format. One ++example of this is alignment information in `b.out'. There is nowhere ++in an `a.out' format file to store alignment information on the ++contained data, so when a file is linked from `b.out' and an `a.out' ++image is produced, alignment information will not propagate to the ++output file. (The linker will still use the alignment information ++internally, so the link is performed correctly). ++ ++ Another example is COFF section names. COFF files may contain an ++unlimited number of sections, each one with a textual section name. If ++the target of the link is a format which does not have many sections ++(e.g., `a.out') or has sections without names (e.g., the Oasys format), ++the link cannot be done simply. You can circumvent this problem by ++describing the desired input-to-output section mapping with the linker ++command language. ++ ++ _Information can be lost during canonicalization._ The BFD internal ++canonical form of the external formats is not exhaustive; there are ++structures in input formats for which there is no direct representation ++internally. This means that the BFD back ends cannot maintain all ++possible data richness through the transformation between external to ++internal and back to external formats. ++ ++ This limitation is only a problem when an application reads one ++format and writes another. Each BFD back end is responsible for ++maintaining as much data as possible, and the internal BFD canonical ++form has structures which are opaque to the BFD core, and exported only ++to the back ends. When a file is read in one format, the canonical form ++is generated for BFD and the application. At the same time, the back ++end saves away any information which may otherwise be lost. If the data ++is then written back in the same format, the back end routine will be ++able to use the canonical form provided by the BFD core as well as the ++information it prepared earlier. Since there is a great deal of ++commonality between back ends, there is no information lost when ++linking or copying big endian COFF to little endian COFF, or `a.out' to ++`b.out'. When a mixture of formats is linked, the information is only ++lost from the files whose format differs from the destination. ++ ++ ++File: ld.info, Node: Canonical format, Prev: BFD information loss, Up: BFD outline ++ ++5.1.2 The BFD canonical object-file format ++------------------------------------------ ++ ++The greatest potential for loss of information occurs when there is the ++least overlap between the information provided by the source format, ++that stored by the canonical format, and that needed by the destination ++format. A brief description of the canonical form may help you ++understand which kinds of data you can count on preserving across ++conversions. ++ ++_files_ ++ Information stored on a per-file basis includes target machine ++ architecture, particular implementation format type, a demand ++ pageable bit, and a write protected bit. Information like Unix ++ magic numbers is not stored here--only the magic numbers' meaning, ++ so a `ZMAGIC' file would have both the demand pageable bit and the ++ write protected text bit set. The byte order of the target is ++ stored on a per-file basis, so that big- and little-endian object ++ files may be used with one another. ++ ++_sections_ ++ Each section in the input file contains the name of the section, ++ the section's original address in the object file, size and ++ alignment information, various flags, and pointers into other BFD ++ data structures. ++ ++_symbols_ ++ Each symbol contains a pointer to the information for the object ++ file which originally defined it, its name, its value, and various ++ flag bits. When a BFD back end reads in a symbol table, it ++ relocates all symbols to make them relative to the base of the ++ section where they were defined. Doing this ensures that each ++ symbol points to its containing section. Each symbol also has a ++ varying amount of hidden private data for the BFD back end. Since ++ the symbol points to the original file, the private data format ++ for that symbol is accessible. `ld' can operate on a collection ++ of symbols of wildly different formats without problems. ++ ++ Normal global and simple local symbols are maintained on output, ++ so an output file (no matter its format) will retain symbols ++ pointing to functions and to global, static, and common variables. ++ Some symbol information is not worth retaining; in `a.out', type ++ information is stored in the symbol table as long symbol names. ++ This information would be useless to most COFF debuggers; the ++ linker has command line switches to allow users to throw it away. ++ ++ There is one word of type information within the symbol, so if the ++ format supports symbol type information within symbols (for ++ example, COFF, IEEE, Oasys) and the type is simple enough to fit ++ within one word (nearly everything but aggregates), the ++ information will be preserved. ++ ++_relocation level_ ++ Each canonical BFD relocation record contains a pointer to the ++ symbol to relocate to, the offset of the data to relocate, the ++ section the data is in, and a pointer to a relocation type ++ descriptor. Relocation is performed by passing messages through ++ the relocation type descriptor and the symbol pointer. Therefore, ++ relocations can be performed on output data using a relocation ++ method that is only available in one of the input formats. For ++ instance, Oasys provides a byte relocation format. A relocation ++ record requesting this relocation type would point indirectly to a ++ routine to perform this, so the relocation may be performed on a ++ byte being written to a 68k COFF file, even though 68k COFF has no ++ such relocation type. ++ ++_line numbers_ ++ Object formats can contain, for debugging purposes, some form of ++ mapping between symbols, source line numbers, and addresses in the ++ output file. These addresses have to be relocated along with the ++ symbol information. Each symbol with an associated list of line ++ number records points to the first record of the list. The head ++ of a line number list consists of a pointer to the symbol, which ++ allows finding out the address of the function whose line number ++ is being described. The rest of the list is made up of pairs: ++ offsets into the section and line numbers. Any format which can ++ simply derive this information can pass it successfully between ++ formats (COFF, IEEE and Oasys). ++ ++ ++File: ld.info, Node: Reporting Bugs, Next: MRI, Prev: BFD, Up: Top ++ ++6 Reporting Bugs ++**************** ++ ++Your bug reports play an essential role in making `ld' reliable. ++ ++ Reporting a bug may help you by bringing a solution to your problem, ++or it may not. But in any case the principal function of a bug report ++is to help the entire community by making the next version of `ld' work ++better. Bug reports are your contribution to the maintenance of `ld'. ++ ++ In order for a bug report to serve its purpose, you must include the ++information that enables us to fix the bug. ++ ++* Menu: ++ ++* Bug Criteria:: Have you found a bug? ++* Bug Reporting:: How to report bugs ++ ++ ++File: ld.info, Node: Bug Criteria, Next: Bug Reporting, Up: Reporting Bugs ++ ++6.1 Have You Found a Bug? ++========================= ++ ++If you are not sure whether you have found a bug, here are some ++guidelines: ++ ++ * If the linker gets a fatal signal, for any input whatever, that is ++ a `ld' bug. Reliable linkers never crash. ++ ++ * If `ld' produces an error message for valid input, that is a bug. ++ ++ * If `ld' does not produce an error message for invalid input, that ++ may be a bug. In the general case, the linker can not verify that ++ object files are correct. ++ ++ * If you are an experienced user of linkers, your suggestions for ++ improvement of `ld' are welcome in any case. ++ ++ ++File: ld.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Reporting Bugs ++ ++6.2 How to Report Bugs ++====================== ++ ++A number of companies and individuals offer support for GNU products. ++If you obtained `ld' from a support organization, we recommend you ++contact that organization first. ++ ++ You can find contact information for many support companies and ++individuals in the file `etc/SERVICE' in the GNU Emacs distribution. ++ ++ Otherwise, send bug reports for `ld' to `bug-binutils@gnu.org'. ++ ++ The fundamental principle of reporting bugs usefully is this: ++*report all the facts*. If you are not sure whether to state a fact or ++leave it out, state it! ++ ++ Often people omit facts because they think they know what causes the ++problem and assume that some details do not matter. Thus, you might ++assume that the name of a symbol you use in an example does not matter. ++Well, probably it does not, but one cannot be sure. Perhaps the bug ++is a stray memory reference which happens to fetch from the location ++where that name is stored in memory; perhaps, if the name were ++different, the contents of that location would fool the linker into ++doing the right thing despite the bug. Play it safe and give a ++specific, complete example. That is the easiest thing for you to do, ++and the most helpful. ++ ++ Keep in mind that the purpose of a bug report is to enable us to fix ++the bug if it is new to us. Therefore, always write your bug reports ++on the assumption that the bug has not been reported previously. ++ ++ Sometimes people give a few sketchy facts and ask, "Does this ring a ++bell?" This cannot help us fix a bug, so it is basically useless. We ++respond by asking for enough details to enable us to investigate. You ++might as well expedite matters by sending them to begin with. ++ ++ To enable us to fix the bug, you should include all these things: ++ ++ * The version of `ld'. `ld' announces it if you start it with the ++ `--version' argument. ++ ++ Without this, we will not know whether there is any point in ++ looking for the bug in the current version of `ld'. ++ ++ * Any patches you may have applied to the `ld' source, including any ++ patches made to the `BFD' library. ++ ++ * The type of machine you are using, and the operating system name ++ and version number. ++ ++ * What compiler (and its version) was used to compile `ld'--e.g. ++ "`gcc-2.7'". ++ ++ * The command arguments you gave the linker to link your example and ++ observe the bug. To guarantee you will not omit something ++ important, list them all. A copy of the Makefile (or the output ++ from make) is sufficient. ++ ++ If we were to try to guess the arguments, we would probably guess ++ wrong and then we might not encounter the bug. ++ ++ * A complete input file, or set of input files, that will reproduce ++ the bug. It is generally most helpful to send the actual object ++ files provided that they are reasonably small. Say no more than ++ 10K. For bigger files you can either make them available by FTP ++ or HTTP or else state that you are willing to send the object ++ file(s) to whomever requests them. (Note - your email will be ++ going to a mailing list, so we do not want to clog it up with ++ large attachments). But small attachments are best. ++ ++ If the source files were assembled using `gas' or compiled using ++ `gcc', then it may be OK to send the source files rather than the ++ object files. In this case, be sure to say exactly what version of ++ `gas' or `gcc' was used to produce the object files. Also say how ++ `gas' or `gcc' were configured. ++ ++ * A description of what behavior you observe that you believe is ++ incorrect. For example, "It gets a fatal signal." ++ ++ Of course, if the bug is that `ld' gets a fatal signal, then we ++ will certainly notice it. But if the bug is incorrect output, we ++ might not notice unless it is glaringly wrong. You might as well ++ not give us a chance to make a mistake. ++ ++ Even if the problem you experience is a fatal signal, you should ++ still say so explicitly. Suppose something strange is going on, ++ such as, your copy of `ld' is out of synch, or you have ++ encountered a bug in the C library on your system. (This has ++ happened!) Your copy might crash and ours would not. If you told ++ us to expect a crash, then when ours fails to crash, we would know ++ that the bug was not happening for us. If you had not told us to ++ expect a crash, then we would not be able to draw any conclusion ++ from our observations. ++ ++ * If you wish to suggest changes to the `ld' source, send us context ++ diffs, as generated by `diff' with the `-u', `-c', or `-p' option. ++ Always send diffs from the old file to the new file. If you even ++ discuss something in the `ld' source, refer to it by context, not ++ by line number. ++ ++ The line numbers in our development sources will not match those ++ in your sources. Your line numbers would convey no useful ++ information to us. ++ ++ Here are some things that are not necessary: ++ ++ * A description of the envelope of the bug. ++ ++ Often people who encounter a bug spend a lot of time investigating ++ which changes to the input file will make the bug go away and which ++ changes will not affect it. ++ ++ This is often time consuming and not very useful, because the way ++ we will find the bug is by running a single example under the ++ debugger with breakpoints, not by pure deduction from a series of ++ examples. We recommend that you save your time for something else. ++ ++ Of course, if you can find a simpler example to report _instead_ ++ of the original one, that is a convenience for us. Errors in the ++ output will be easier to spot, running under the debugger will take ++ less time, and so on. ++ ++ However, simplification is not vital; if you do not want to do ++ this, report the bug anyway and send us the entire test case you ++ used. ++ ++ * A patch for the bug. ++ ++ A patch for the bug does help us if it is a good one. But do not ++ omit the necessary information, such as the test case, on the ++ assumption that a patch is all we need. We might see problems ++ with your patch and decide to fix the problem another way, or we ++ might not understand it at all. ++ ++ Sometimes with a program as complicated as `ld' it is very hard to ++ construct an example that will make the program follow a certain ++ path through the code. If you do not send us the example, we will ++ not be able to construct one, so we will not be able to verify ++ that the bug is fixed. ++ ++ And if we cannot understand what bug you are trying to fix, or why ++ your patch should be an improvement, we will not install it. A ++ test case will help us to understand. ++ ++ * A guess about what the bug is or what it depends on. ++ ++ Such guesses are usually wrong. Even we cannot guess right about ++ such things without first using the debugger to find the facts. ++ ++ ++File: ld.info, Node: MRI, Next: GNU Free Documentation License, Prev: Reporting Bugs, Up: Top ++ ++Appendix A MRI Compatible Script Files ++************************************** ++ ++To aid users making the transition to GNU `ld' from the MRI linker, ++`ld' can use MRI compatible linker scripts as an alternative to the ++more general-purpose linker scripting language described in *Note ++Scripts::. MRI compatible linker scripts have a much simpler command ++set than the scripting language otherwise used with `ld'. GNU `ld' ++supports the most commonly used MRI linker commands; these commands are ++described here. ++ ++ In general, MRI scripts aren't of much use with the `a.out' object ++file format, since it only has three sections and MRI scripts lack some ++features to make use of them. ++ ++ You can specify a file containing an MRI-compatible script using the ++`-c' command-line option. ++ ++ Each command in an MRI-compatible script occupies its own line; each ++command line starts with the keyword that identifies the command (though ++blank lines are also allowed for punctuation). If a line of an ++MRI-compatible script begins with an unrecognized keyword, `ld' issues ++a warning message, but continues processing the script. ++ ++ Lines beginning with `*' are comments. ++ ++ You can write these commands using all upper-case letters, or all ++lower case; for example, `chip' is the same as `CHIP'. The following ++list shows only the upper-case form of each command. ++ ++`ABSOLUTE SECNAME' ++`ABSOLUTE SECNAME, SECNAME, ... SECNAME' ++ Normally, `ld' includes in the output file all sections from all ++ the input files. However, in an MRI-compatible script, you can ++ use the `ABSOLUTE' command to restrict the sections that will be ++ present in your output program. If the `ABSOLUTE' command is used ++ at all in a script, then only the sections named explicitly in ++ `ABSOLUTE' commands will appear in the linker output. You can ++ still use other input sections (whatever you select on the command ++ line, or using `LOAD') to resolve addresses in the output file. ++ ++`ALIAS OUT-SECNAME, IN-SECNAME' ++ Use this command to place the data from input section IN-SECNAME ++ in a section called OUT-SECNAME in the linker output file. ++ ++ IN-SECNAME may be an integer. ++ ++`ALIGN SECNAME = EXPRESSION' ++ Align the section called SECNAME to EXPRESSION. The EXPRESSION ++ should be a power of two. ++ ++`BASE EXPRESSION' ++ Use the value of EXPRESSION as the lowest address (other than ++ absolute addresses) in the output file. ++ ++`CHIP EXPRESSION' ++`CHIP EXPRESSION, EXPRESSION' ++ This command does nothing; it is accepted only for compatibility. ++ ++`END' ++ This command does nothing whatever; it's only accepted for ++ compatibility. ++ ++`FORMAT OUTPUT-FORMAT' ++ Similar to the `OUTPUT_FORMAT' command in the more general linker ++ language, but restricted to one of these output formats: ++ ++ 1. S-records, if OUTPUT-FORMAT is `S' ++ ++ 2. IEEE, if OUTPUT-FORMAT is `IEEE' ++ ++ 3. COFF (the `coff-m68k' variant in BFD), if OUTPUT-FORMAT is ++ `COFF' ++ ++`LIST ANYTHING...' ++ Print (to the standard output file) a link map, as produced by the ++ `ld' command-line option `-M'. ++ ++ The keyword `LIST' may be followed by anything on the same line, ++ with no change in its effect. ++ ++`LOAD FILENAME' ++`LOAD FILENAME, FILENAME, ... FILENAME' ++ Include one or more object file FILENAME in the link; this has the ++ same effect as specifying FILENAME directly on the `ld' command ++ line. ++ ++`NAME OUTPUT-NAME' ++ OUTPUT-NAME is the name for the program produced by `ld'; the ++ MRI-compatible command `NAME' is equivalent to the command-line ++ option `-o' or the general script language command `OUTPUT'. ++ ++`ORDER SECNAME, SECNAME, ... SECNAME' ++`ORDER SECNAME SECNAME SECNAME' ++ Normally, `ld' orders the sections in its output file in the order ++ in which they first appear in the input files. In an ++ MRI-compatible script, you can override this ordering with the ++ `ORDER' command. The sections you list with `ORDER' will appear ++ first in your output file, in the order specified. ++ ++`PUBLIC NAME=EXPRESSION' ++`PUBLIC NAME,EXPRESSION' ++`PUBLIC NAME EXPRESSION' ++ Supply a value (EXPRESSION) for external symbol NAME used in the ++ linker input files. ++ ++`SECT SECNAME, EXPRESSION' ++`SECT SECNAME=EXPRESSION' ++`SECT SECNAME EXPRESSION' ++ You can use any of these three forms of the `SECT' command to ++ specify the start address (EXPRESSION) for section SECNAME. If ++ you have more than one `SECT' statement for the same SECNAME, only ++ the _first_ sets the start address. ++ ++ ++File: ld.info, Node: GNU Free Documentation License, Next: Index, Prev: MRI, Up: Top ++ ++Appendix B GNU Free Documentation License ++***************************************** ++ ++ Version 1.1, March 2000 ++ ++ Copyright (C) 2000, 2003 Free Software Foundation, Inc. ++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Everyone is permitted to copy and distribute verbatim copies ++ of this license document, but changing it is not allowed. ++ ++ ++ 0. PREAMBLE ++ ++ The purpose of this License is to make a manual, textbook, or other ++ written document "free" in the sense of freedom: to assure everyone ++ the effective freedom to copy and redistribute it, with or without ++ modifying it, either commercially or noncommercially. Secondarily, ++ this License preserves for the author and publisher a way to get ++ credit for their work, while not being considered responsible for ++ modifications made by others. ++ ++ This License is a kind of "copyleft", which means that derivative ++ works of the document must themselves be free in the same sense. ++ It complements the GNU General Public License, which is a copyleft ++ license designed for free software. ++ ++ We have designed this License in order to use it for manuals for ++ free software, because free software needs free documentation: a ++ free program should come with manuals providing the same freedoms ++ that the software does. But this License is not limited to ++ software manuals; it can be used for any textual work, regardless ++ of subject matter or whether it is published as a printed book. ++ We recommend this License principally for works whose purpose is ++ instruction or reference. ++ ++ ++ 1. APPLICABILITY AND DEFINITIONS ++ ++ This License applies to any manual or other work that contains a ++ notice placed by the copyright holder saying it can be distributed ++ under the terms of this License. The "Document", below, refers to ++ any such manual or work. Any member of the public is a licensee, ++ and is addressed as "you." ++ ++ A "Modified Version" of the Document means any work containing the ++ Document or a portion of it, either copied verbatim, or with ++ modifications and/or translated into another language. ++ ++ A "Secondary Section" is a named appendix or a front-matter ++ section of the Document that deals exclusively with the ++ relationship of the publishers or authors of the Document to the ++ Document's overall subject (or to related matters) and contains ++ nothing that could fall directly within that overall subject. ++ (For example, if the Document is in part a textbook of ++ mathematics, a Secondary Section may not explain any mathematics.) ++ The relationship could be a matter of historical connection with ++ the subject or with related matters, or of legal, commercial, ++ philosophical, ethical or political position regarding them. ++ ++ The "Invariant Sections" are certain Secondary Sections whose ++ titles are designated, as being those of Invariant Sections, in ++ the notice that says that the Document is released under this ++ License. ++ ++ The "Cover Texts" are certain short passages of text that are ++ listed, as Front-Cover Texts or Back-Cover Texts, in the notice ++ that says that the Document is released under this License. ++ ++ A "Transparent" copy of the Document means a machine-readable copy, ++ represented in a format whose specification is available to the ++ general public, whose contents can be viewed and edited directly ++ and straightforwardly with generic text editors or (for images ++ composed of pixels) generic paint programs or (for drawings) some ++ widely available drawing editor, and that is suitable for input to ++ text formatters or for automatic translation to a variety of ++ formats suitable for input to text formatters. A copy made in an ++ otherwise Transparent file format whose markup has been designed ++ to thwart or discourage subsequent modification by readers is not ++ Transparent. A copy that is not "Transparent" is called "Opaque." ++ ++ Examples of suitable formats for Transparent copies include plain ++ ASCII without markup, Texinfo input format, LaTeX input format, ++ SGML or XML using a publicly available DTD, and ++ standard-conforming simple HTML designed for human modification. ++ Opaque formats include PostScript, PDF, proprietary formats that ++ can be read and edited only by proprietary word processors, SGML ++ or XML for which the DTD and/or processing tools are not generally ++ available, and the machine-generated HTML produced by some word ++ processors for output purposes only. ++ ++ The "Title Page" means, for a printed book, the title page itself, ++ plus such following pages as are needed to hold, legibly, the ++ material this License requires to appear in the title page. For ++ works in formats which do not have any title page as such, "Title ++ Page" means the text near the most prominent appearance of the ++ work's title, preceding the beginning of the body of the text. ++ ++ 2. VERBATIM COPYING ++ ++ You may copy and distribute the Document in any medium, either ++ commercially or noncommercially, provided that this License, the ++ copyright notices, and the license notice saying this License ++ applies to the Document are reproduced in all copies, and that you ++ add no other conditions whatsoever to those of this License. You ++ may not use technical measures to obstruct or control the reading ++ or further copying of the copies you make or distribute. However, ++ you may accept compensation in exchange for copies. If you ++ distribute a large enough number of copies you must also follow ++ the conditions in section 3. ++ ++ You may also lend copies, under the same conditions stated above, ++ and you may publicly display copies. ++ ++ 3. COPYING IN QUANTITY ++ ++ If you publish printed copies of the Document numbering more than ++ 100, and the Document's license notice requires Cover Texts, you ++ must enclose the copies in covers that carry, clearly and legibly, ++ all these Cover Texts: Front-Cover Texts on the front cover, and ++ Back-Cover Texts on the back cover. Both covers must also clearly ++ and legibly identify you as the publisher of these copies. The ++ front cover must present the full title with all words of the ++ title equally prominent and visible. You may add other material ++ on the covers in addition. Copying with changes limited to the ++ covers, as long as they preserve the title of the Document and ++ satisfy these conditions, can be treated as verbatim copying in ++ other respects. ++ ++ If the required texts for either cover are too voluminous to fit ++ legibly, you should put the first ones listed (as many as fit ++ reasonably) on the actual cover, and continue the rest onto ++ adjacent pages. ++ ++ If you publish or distribute Opaque copies of the Document ++ numbering more than 100, you must either include a ++ machine-readable Transparent copy along with each Opaque copy, or ++ state in or with each Opaque copy a publicly-accessible ++ computer-network location containing a complete Transparent copy ++ of the Document, free of added material, which the general ++ network-using public has access to download anonymously at no ++ charge using public-standard network protocols. If you use the ++ latter option, you must take reasonably prudent steps, when you ++ begin distribution of Opaque copies in quantity, to ensure that ++ this Transparent copy will remain thus accessible at the stated ++ location until at least one year after the last time you ++ distribute an Opaque copy (directly or through your agents or ++ retailers) of that edition to the public. ++ ++ It is requested, but not required, that you contact the authors of ++ the Document well before redistributing any large number of ++ copies, to give them a chance to provide you with an updated ++ version of the Document. ++ ++ 4. MODIFICATIONS ++ ++ You may copy and distribute a Modified Version of the Document ++ under the conditions of sections 2 and 3 above, provided that you ++ release the Modified Version under precisely this License, with ++ the Modified Version filling the role of the Document, thus ++ licensing distribution and modification of the Modified Version to ++ whoever possesses a copy of it. In addition, you must do these ++ things in the Modified Version: ++ ++ A. Use in the Title Page (and on the covers, if any) a title ++ distinct from that of the Document, and from those of previous ++ versions (which should, if there were any, be listed in the ++ History section of the Document). You may use the same title ++ as a previous version if the original publisher of that version ++ gives permission. ++ B. List on the Title Page, as authors, one or more persons or ++ entities responsible for authorship of the modifications in the ++ Modified Version, together with at least five of the principal ++ authors of the Document (all of its principal authors, if it ++ has less than five). ++ C. State on the Title page the name of the publisher of the ++ Modified Version, as the publisher. ++ D. Preserve all the copyright notices of the Document. ++ E. Add an appropriate copyright notice for your modifications ++ adjacent to the other copyright notices. ++ F. Include, immediately after the copyright notices, a license ++ notice giving the public permission to use the Modified Version ++ under the terms of this License, in the form shown in the ++ Addendum below. ++ G. Preserve in that license notice the full lists of Invariant ++ Sections and required Cover Texts given in the Document's ++ license notice. ++ H. Include an unaltered copy of this License. ++ I. Preserve the section entitled "History", and its title, and add ++ to it an item stating at least the title, year, new authors, and ++ publisher of the Modified Version as given on the Title Page. ++ If there is no section entitled "History" in the Document, ++ create one stating the title, year, authors, and publisher of ++ the Document as given on its Title Page, then add an item ++ describing the Modified Version as stated in the previous ++ sentence. ++ J. Preserve the network location, if any, given in the Document for ++ public access to a Transparent copy of the Document, and ++ likewise the network locations given in the Document for ++ previous versions it was based on. These may be placed in the ++ "History" section. You may omit a network location for a work ++ that was published at least four years before the Document ++ itself, or if the original publisher of the version it refers ++ to gives permission. ++ K. In any section entitled "Acknowledgements" or "Dedications", ++ preserve the section's title, and preserve in the section all the ++ substance and tone of each of the contributor acknowledgements ++ and/or dedications given therein. ++ L. Preserve all the Invariant Sections of the Document, ++ unaltered in their text and in their titles. Section numbers ++ or the equivalent are not considered part of the section titles. ++ M. Delete any section entitled "Endorsements." Such a section ++ may not be included in the Modified Version. ++ N. Do not retitle any existing section as "Endorsements" or to ++ conflict in title with any Invariant Section. ++ ++ If the Modified Version includes new front-matter sections or ++ appendices that qualify as Secondary Sections and contain no ++ material copied from the Document, you may at your option ++ designate some or all of these sections as invariant. To do this, ++ add their titles to the list of Invariant Sections in the Modified ++ Version's license notice. These titles must be distinct from any ++ other section titles. ++ ++ You may add a section entitled "Endorsements", provided it contains ++ nothing but endorsements of your Modified Version by various ++ parties-for example, statements of peer review or that the text has ++ been approved by an organization as the authoritative definition ++ of a standard. ++ ++ You may add a passage of up to five words as a Front-Cover Text, ++ and a passage of up to 25 words as a Back-Cover Text, to the end ++ of the list of Cover Texts in the Modified Version. Only one ++ passage of Front-Cover Text and one of Back-Cover Text may be ++ added by (or through arrangements made by) any one entity. If the ++ Document already includes a cover text for the same cover, ++ previously added by you or by arrangement made by the same entity ++ you are acting on behalf of, you may not add another; but you may ++ replace the old one, on explicit permission from the previous ++ publisher that added the old one. ++ ++ The author(s) and publisher(s) of the Document do not by this ++ License give permission to use their names for publicity for or to ++ assert or imply endorsement of any Modified Version. ++ ++ 5. COMBINING DOCUMENTS ++ ++ You may combine the Document with other documents released under ++ this License, under the terms defined in section 4 above for ++ modified versions, provided that you include in the combination ++ all of the Invariant Sections of all of the original documents, ++ unmodified, and list them all as Invariant Sections of your ++ combined work in its license notice. ++ ++ The combined work need only contain one copy of this License, and ++ multiple identical Invariant Sections may be replaced with a single ++ copy. If there are multiple Invariant Sections with the same name ++ but different contents, make the title of each such section unique ++ by adding at the end of it, in parentheses, the name of the ++ original author or publisher of that section if known, or else a ++ unique number. Make the same adjustment to the section titles in ++ the list of Invariant Sections in the license notice of the ++ combined work. ++ ++ In the combination, you must combine any sections entitled ++ "History" in the various original documents, forming one section ++ entitled "History"; likewise combine any sections entitled ++ "Acknowledgements", and any sections entitled "Dedications." You ++ must delete all sections entitled "Endorsements." ++ ++ 6. COLLECTIONS OF DOCUMENTS ++ ++ You may make a collection consisting of the Document and other ++ documents released under this License, and replace the individual ++ copies of this License in the various documents with a single copy ++ that is included in the collection, provided that you follow the ++ rules of this License for verbatim copying of each of the ++ documents in all other respects. ++ ++ You may extract a single document from such a collection, and ++ distribute it individually under this License, provided you insert ++ a copy of this License into the extracted document, and follow ++ this License in all other respects regarding verbatim copying of ++ that document. ++ ++ 7. AGGREGATION WITH INDEPENDENT WORKS ++ ++ A compilation of the Document or its derivatives with other ++ separate and independent documents or works, in or on a volume of ++ a storage or distribution medium, does not as a whole count as a ++ Modified Version of the Document, provided no compilation ++ copyright is claimed for the compilation. Such a compilation is ++ called an "aggregate", and this License does not apply to the ++ other self-contained works thus compiled with the Document, on ++ account of their being thus compiled, if they are not themselves ++ derivative works of the Document. ++ ++ If the Cover Text requirement of section 3 is applicable to these ++ copies of the Document, then if the Document is less than one ++ quarter of the entire aggregate, the Document's Cover Texts may be ++ placed on covers that surround only the Document within the ++ aggregate. Otherwise they must appear on covers around the whole ++ aggregate. ++ ++ 8. TRANSLATION ++ ++ Translation is considered a kind of modification, so you may ++ distribute translations of the Document under the terms of section ++ 4. Replacing Invariant Sections with translations requires special ++ permission from their copyright holders, but you may include ++ translations of some or all Invariant Sections in addition to the ++ original versions of these Invariant Sections. You may include a ++ translation of this License provided that you also include the ++ original English version of this License. In case of a ++ disagreement between the translation and the original English ++ version of this License, the original English version will prevail. ++ ++ 9. TERMINATION ++ ++ You may not copy, modify, sublicense, or distribute the Document ++ except as expressly provided for under this License. Any other ++ attempt to copy, modify, sublicense or distribute the Document is ++ void, and will automatically terminate your rights under this ++ License. However, parties who have received copies, or rights, ++ from you under this License will not have their licenses ++ terminated so long as such parties remain in full compliance. ++ ++ 10. FUTURE REVISIONS OF THIS LICENSE ++ ++ The Free Software Foundation may publish new, revised versions of ++ the GNU Free Documentation License from time to time. Such new ++ versions will be similar in spirit to the present version, but may ++ differ in detail to address new problems or concerns. See ++ http://www.gnu.org/copyleft/. ++ ++ Each version of the License is given a distinguishing version ++ number. If the Document specifies that a particular numbered ++ version of this License "or any later version" applies to it, you ++ have the option of following the terms and conditions either of ++ that specified version or of any later version that has been ++ published (not as a draft) by the Free Software Foundation. If ++ the Document does not specify a version number of this License, ++ you may choose any version ever published (not as a draft) by the ++ Free Software Foundation. ++ ++ ++ADDENDUM: How to use this License for your documents ++==================================================== ++ ++To use this License in a document you have written, include a copy of ++the License in the document and put the following copyright and license ++notices just after the title page: ++ ++ Copyright (C) YEAR YOUR NAME. ++ Permission is granted to copy, distribute and/or modify this document ++ under the terms of the GNU Free Documentation License, Version 1.1 ++ or any later version published by the Free Software Foundation; ++ with the Invariant Sections being LIST THEIR TITLES, with the ++ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. ++ A copy of the license is included in the section entitled "GNU ++ Free Documentation License." ++ ++ If you have no Invariant Sections, write "with no Invariant Sections" ++instead of saying which ones are invariant. If you have no Front-Cover ++Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being ++LIST"; likewise for Back-Cover Texts. ++ ++ If your document contains nontrivial examples of program code, we ++recommend releasing these examples in parallel under your choice of ++free software license, such as the GNU General Public License, to ++permit their use in free software. ++ ++ ++File: ld.info, Node: Index, Prev: GNU Free Documentation License, Up: Top ++ ++Index ++***** ++ ++[index] ++* Menu: ++ ++* ": Symbols. (line 6) ++* -(: Options. (line 609) ++* --accept-unknown-input-arch: Options. (line 627) ++* --add-needed: Options. (line 649) ++* --add-stdcall-alias: Options. (line 1343) ++* --allow-multiple-definition: Options. (line 819) ++* --allow-shlib-undefined: Options. (line 825) ++* --architecture=ARCH: Options. (line 104) ++* --as-needed: Options. (line 637) ++* --auxiliary: Options. (line 205) ++* --base-file: Options. (line 1348) ++* --be8: ARM. (line 23) ++* --bss-plt: PowerPC ELF32. (line 13) ++* --check-sections: Options. (line 701) ++* --cref: Options. (line 711) ++* --default-imported-symver: Options. (line 853) ++* --default-symver: Options. (line 849) ++* --defsym SYMBOL=EXP: Options. (line 739) ++* --demangle[=STYLE]: Options. (line 752) ++* --disable-auto-image-base: Options. (line 1495) ++* --disable-auto-import: Options. (line 1624) ++* --disable-new-dtags: Options. (line 1295) ++* --disable-runtime-pseudo-reloc: Options. (line 1637) ++* --disable-stdcall-fixup: Options. (line 1358) ++* --discard-all: Options. (line 513) ++* --discard-locals: Options. (line 517) ++* --dll: Options. (line 1353) ++* --dll-search-prefix: Options. (line 1501) ++* --dotsyms: PowerPC64 ELF64. (line 33) ++* --dynamic-linker FILE: Options. (line 765) ++* --eh-frame-hdr: Options. (line 1291) ++* --emit-relocs: Options. (line 415) ++* --emit-stub-syms <1>: PowerPC64 ELF64. (line 29) ++* --emit-stub-syms: PowerPC ELF32. (line 37) ++* --enable-auto-image-base: Options. (line 1487) ++* --enable-auto-import: Options. (line 1510) ++* --enable-extra-pe-debug: Options. (line 1642) ++* --enable-new-dtags: Options. (line 1295) ++* --enable-runtime-pseudo-reloc: Options. (line 1629) ++* --enable-stdcall-fixup: Options. (line 1358) ++* --entry=ENTRY: Options. (line 158) ++* --error-unresolved-symbols: Options. (line 1244) ++* --exclude-libs: Options. (line 168) ++* --exclude-symbols: Options. (line 1400) ++* --export-all-symbols: Options. (line 1376) ++* --export-dynamic: Options. (line 179) ++* --fatal-warnings: Options. (line 771) ++* --file-alignment: Options. (line 1406) ++* --filter: Options. (line 226) ++* --fix-v4bx: ARM. (line 44) ++* --force-dynamic: Options. (line 424) ++* --force-exe-suffix: Options. (line 774) ++* --format=FORMAT: Options. (line 115) ++* --format=VERSION: TI COFF. (line 6) ++* --gc-sections: Options. (line 784) ++* --gpsize: Options. (line 259) ++* --hash-size=NUMBER: Options. (line 1304) ++* --heap: Options. (line 1412) ++* --help: Options. (line 792) ++* --image-base: Options. (line 1419) ++* --just-symbols=FILE: Options. (line 447) ++* --kill-at: Options. (line 1428) ++* --large-address-aware: Options. (line 1433) ++* --library-path=DIR: Options. (line 315) ++* --library=ARCHIVE: Options. (line 285) ++* --major-image-version: Options. (line 1442) ++* --major-os-version: Options. (line 1447) ++* --major-subsystem-version: Options. (line 1451) ++* --minor-image-version: Options. (line 1456) ++* --minor-os-version: Options. (line 1461) ++* --minor-subsystem-version: Options. (line 1465) ++* --mri-script=MRI-CMDFILE: Options. (line 139) ++* --multi-subspace: HPPA ELF32. (line 6) ++* --nmagic: Options. (line 384) ++* --no-accept-unknown-input-arch: Options. (line 627) ++* --no-add-needed: Options. (line 649) ++* --no-allow-shlib-undefined: Options. (line 825) ++* --no-as-needed: Options. (line 637) ++* --no-check-sections: Options. (line 701) ++* --no-define-common: Options. (line 723) ++* --no-demangle: Options. (line 752) ++* --no-dotsyms: PowerPC64 ELF64. (line 33) ++* --no-gc-sections: Options. (line 784) ++* --no-keep-memory: Options. (line 804) ++* --no-multi-toc: PowerPC64 ELF64. (line 74) ++* --no-omagic: Options. (line 398) ++* --no-opd-optimize: PowerPC64 ELF64. (line 48) ++* --no-relax: Xtensa. (line 56) ++* --no-tls-optimize <1>: PowerPC64 ELF64. (line 43) ++* --no-tls-optimize: PowerPC ELF32. (line 41) ++* --no-toc-optimize: PowerPC64 ELF64. (line 60) ++* --no-undefined: Options. (line 811) ++* --no-undefined-version: Options. (line 844) ++* --no-warn-mismatch: Options. (line 857) ++* --no-whole-archive: Options. (line 866) ++* --noinhibit-exec: Options. (line 870) ++* --non-overlapping-opd: PowerPC64 ELF64. (line 54) ++* --oformat: Options. (line 882) ++* --omagic: Options. (line 389) ++* --out-implib: Options. (line 1478) ++* --output-def: Options. (line 1470) ++* --output=OUTPUT: Options. (line 404) ++* --pic-executable: Options. (line 895) ++* --print-map: Options. (line 347) ++* --reduce-memory-overheads: Options. (line 1312) ++* --relax: Options. (line 911) ++* --relax on i960: i960. (line 31) ++* --relax on PowerPC: PowerPC ELF32. (line 6) ++* --relax on Xtensa: Xtensa. (line 27) ++* --relocatable: Options. (line 428) ++* --script=SCRIPT: Options. (line 471) ++* --sdata-got: PowerPC ELF32. (line 23) ++* --section-alignment: Options. (line 1647) ++* --section-start SECTIONNAME=ORG: Options. (line 1081) ++* --sort-common: Options. (line 1028) ++* --sort-section alignment: Options. (line 1038) ++* --sort-section name: Options. (line 1034) ++* --split-by-file: Options. (line 1042) ++* --split-by-reloc: Options. (line 1047) ++* --stack: Options. (line 1653) ++* --stats: Options. (line 1060) ++* --strip-all: Options. (line 458) ++* --strip-debug: Options. (line 462) ++* --stub-group-size: PowerPC64 ELF64. (line 6) ++* --stub-group-size=N: HPPA ELF32. (line 12) ++* --subsystem: Options. (line 1660) ++* --support-old-code: ARM. (line 6) ++* --sysroot: Options. (line 1064) ++* --target-help: Options. (line 796) ++* --target1-abs: ARM. (line 27) ++* --target1-rel: ARM. (line 27) ++* --target2=TYPE: ARM. (line 32) ++* --thumb-entry=ENTRY: ARM. (line 17) ++* --trace: Options. (line 467) ++* --trace-symbol=SYMBOL: Options. (line 522) ++* --traditional-format: Options. (line 1069) ++* --undefined=SYMBOL: Options. (line 480) ++* --unique[=SECTION]: Options. (line 498) ++* --unresolved-symbols: Options. (line 1096) ++* --use-blx: ARM. (line 57) ++* --verbose: Options. (line 1125) ++* --version: Options. (line 507) ++* --version-script=VERSION-SCRIPTFILE: Options. (line 1131) ++* --warn-common: Options. (line 1138) ++* --warn-constructors: Options. (line 1206) ++* --warn-multiple-gp: Options. (line 1211) ++* --warn-once: Options. (line 1225) ++* --warn-section-align: Options. (line 1229) ++* --warn-shared-textrel: Options. (line 1236) ++* --warn-unresolved-symbols: Options. (line 1239) ++* --whole-archive: Options. (line 1248) ++* --wrap: Options. (line 1262) ++* -AARCH: Options. (line 103) ++* -aKEYWORD: Options. (line 96) ++* -assert KEYWORD: Options. (line 659) ++* -b FORMAT: Options. (line 115) ++* -Bdynamic: Options. (line 662) ++* -Bgroup: Options. (line 672) ++* -Bshareable: Options. (line 1020) ++* -Bstatic: Options. (line 679) ++* -Bsymbolic: Options. (line 694) ++* -c MRI-CMDFILE: Options. (line 139) ++* -call_shared: Options. (line 662) ++* -d: Options. (line 149) ++* -dc: Options. (line 149) ++* -dn: Options. (line 679) ++* -dp: Options. (line 149) ++* -dy: Options. (line 662) ++* -E: Options. (line 179) ++* -e ENTRY: Options. (line 158) ++* -EB: Options. (line 198) ++* -EL: Options. (line 201) ++* -F: Options. (line 226) ++* -f: Options. (line 205) ++* -fini: Options. (line 250) ++* -G: Options. (line 259) ++* -g: Options. (line 256) ++* -hNAME: Options. (line 267) ++* -i: Options. (line 276) ++* -IFILE: Options. (line 765) ++* -init: Options. (line 279) ++* -lARCHIVE: Options. (line 285) ++* -LDIR: Options. (line 315) ++* -M: Options. (line 347) ++* -m EMULATION: Options. (line 337) ++* -Map: Options. (line 800) ++* -N: Options. (line 389) ++* -n: Options. (line 384) ++* -non_shared: Options. (line 679) ++* -nostdlib: Options. (line 876) ++* -O LEVEL: Options. (line 410) ++* -o OUTPUT: Options. (line 404) ++* -pie: Options. (line 895) ++* -q: Options. (line 415) ++* -qmagic: Options. (line 905) ++* -Qy: Options. (line 908) ++* -r: Options. (line 428) ++* -R FILE: Options. (line 447) ++* -rpath: Options. (line 945) ++* -rpath-link: Options. (line 967) ++* -S: Options. (line 462) ++* -s: Options. (line 458) ++* -shared: Options. (line 1020) ++* -soname=NAME: Options. (line 267) ++* -static: Options. (line 679) ++* -t: Options. (line 467) ++* -T SCRIPT: Options. (line 471) ++* -Tbss ORG: Options. (line 1090) ++* -Tdata ORG: Options. (line 1090) ++* -Ttext ORG: Options. (line 1090) ++* -u SYMBOL: Options. (line 480) ++* -Ur: Options. (line 488) ++* -V: Options. (line 507) ++* -v: Options. (line 507) ++* -X: Options. (line 517) ++* -x: Options. (line 513) ++* -Y PATH: Options. (line 531) ++* -y SYMBOL: Options. (line 522) ++* -z defs: Options. (line 811) ++* -z KEYWORD: Options. (line 535) ++* -z muldefs: Options. (line 819) ++* .: Location Counter. (line 6) ++* /DISCARD/: Output Section Discarding. ++ (line 18) ++* :PHDR: Output Section Phdr. ++ (line 6) ++* =FILLEXP: Output Section Fill. ++ (line 6) ++* >REGION: Output Section Region. ++ (line 6) ++* [COMMON]: Input Section Common. ++ (line 29) ++* ABSOLUTE (MRI): MRI. (line 33) ++* absolute and relocatable symbols: Expression Section. (line 6) ++* absolute expressions: Expression Section. (line 6) ++* ABSOLUTE(EXP): Builtin Functions. (line 10) ++* ADDR(SECTION): Builtin Functions. (line 17) ++* address, section: Output Section Address. ++ (line 6) ++* ALIAS (MRI): MRI. (line 44) ++* ALIGN (MRI): MRI. (line 50) ++* align expression: Builtin Functions. (line 36) ++* align location counter: Builtin Functions. (line 36) ++* ALIGN(ALIGN): Builtin Functions. (line 36) ++* ALIGN(EXP,ALIGN): Builtin Functions. (line 36) ++* ALIGN(SECTION_ALIGN): Forced Output Alignment. ++ (line 6) ++* allocating memory: MEMORY. (line 6) ++* architecture: Miscellaneous Commands. ++ (line 46) ++* architectures: Options. (line 103) ++* archive files, from cmd line: Options. (line 285) ++* archive search path in linker script: File Commands. (line 71) ++* arithmetic: Expressions. (line 6) ++* arithmetic operators: Operators. (line 6) ++* ARM interworking support: ARM. (line 6) ++* AS_NEEDED(FILES): File Commands. (line 51) ++* ASSERT: Miscellaneous Commands. ++ (line 9) ++* assertion in linker script: Miscellaneous Commands. ++ (line 9) ++* assignment in scripts: Assignments. (line 6) ++* AT(LMA): Output Section LMA. (line 6) ++* AT>LMA_REGION: Output Section LMA. (line 6) ++* automatic data imports: WIN32. (line 170) ++* back end: BFD. (line 6) ++* BASE (MRI): MRI. (line 54) ++* BE8: ARM. (line 23) ++* BFD canonical format: Canonical format. (line 11) ++* BFD requirements: BFD. (line 16) ++* big-endian objects: Options. (line 198) ++* binary input format: Options. (line 115) ++* BLOCK(EXP): Builtin Functions. (line 62) ++* bug criteria: Bug Criteria. (line 6) ++* bug reports: Bug Reporting. (line 6) ++* bugs in ld: Reporting Bugs. (line 6) ++* BYTE(EXPRESSION): Output Section Data. ++ (line 6) ++* C++ constructors, arranging in link: Output Section Keywords. ++ (line 19) ++* CHIP (MRI): MRI. (line 58) ++* COLLECT_NO_DEMANGLE: Environment. (line 29) ++* combining symbols, warnings on: Options. (line 1138) ++* command files: Scripts. (line 6) ++* command line: Options. (line 6) ++* common allocation: Options. (line 149) ++* common allocation in linker script: Miscellaneous Commands. ++ (line 20) ++* common symbol placement: Input Section Common. ++ (line 6) ++* compatibility, MRI: Options. (line 139) ++* constants in linker scripts: Constants. (line 6) ++* CONSTRUCTORS: Output Section Keywords. ++ (line 19) ++* constructors: Options. (line 488) ++* constructors, arranging in link: Output Section Keywords. ++ (line 19) ++* crash of linker: Bug Criteria. (line 9) ++* CREATE_OBJECT_SYMBOLS: Output Section Keywords. ++ (line 9) ++* creating a DEF file: WIN32. (line 137) ++* cross reference table: Options. (line 711) ++* cross references: Miscellaneous Commands. ++ (line 30) ++* current output location: Location Counter. (line 6) ++* data: Output Section Data. ++ (line 6) ++* DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE): Builtin Functions. ++ (line 67) ++* DATA_SEGMENT_END(EXP): Builtin Functions. (line 88) ++* DATA_SEGMENT_RELRO_END(OFFSET, EXP): Builtin Functions. (line 94) ++* dbx: Options. (line 1074) ++* DEF files, creating: Options. (line 1470) ++* default emulation: Environment. (line 21) ++* default input format: Environment. (line 9) ++* DEFINED(SYMBOL): Builtin Functions. (line 105) ++* deleting local symbols: Options. (line 513) ++* demangling, default: Environment. (line 29) ++* demangling, from command line: Options. (line 752) ++* direct linking to a dll: WIN32. (line 218) ++* discarding sections: Output Section Discarding. ++ (line 6) ++* discontinuous memory: MEMORY. (line 6) ++* DLLs, creating: Options. (line 1376) ++* DLLs, linking to: Options. (line 1501) ++* dot: Location Counter. (line 6) ++* dot inside sections: Location Counter. (line 34) ++* dot outside sections: Location Counter. (line 64) ++* dynamic linker, from command line: Options. (line 765) ++* dynamic symbol table: Options. (line 179) ++* ELF program headers: PHDRS. (line 6) ++* emulation: Options. (line 337) ++* emulation, default: Environment. (line 21) ++* END (MRI): MRI. (line 62) ++* endianness: Options. (line 198) ++* entry point: Entry Point. (line 6) ++* entry point, from command line: Options. (line 158) ++* entry point, thumb: ARM. (line 17) ++* ENTRY(SYMBOL): Entry Point. (line 6) ++* error on valid input: Bug Criteria. (line 12) ++* example of linker script: Simple Example. (line 6) ++* exporting DLL symbols: WIN32. (line 19) ++* expression evaluation order: Evaluation. (line 6) ++* expression sections: Expression Section. (line 6) ++* expression, absolute: Builtin Functions. (line 10) ++* expressions: Expressions. (line 6) ++* EXTERN: Miscellaneous Commands. ++ (line 13) ++* fatal signal: Bug Criteria. (line 9) ++* file name wildcard patterns: Input Section Wildcards. ++ (line 6) ++* FILEHDR: PHDRS. (line 61) ++* filename symbols: Output Section Keywords. ++ (line 9) ++* fill pattern, entire section: Output Section Fill. ++ (line 6) ++* FILL(EXPRESSION): Output Section Data. ++ (line 39) ++* finalization function: Options. (line 250) ++* first input file: File Commands. (line 79) ++* first instruction: Entry Point. (line 6) ++* FIX_V4BX: ARM. (line 44) ++* FORCE_COMMON_ALLOCATION: Miscellaneous Commands. ++ (line 20) ++* forcing input section alignment: Forced Input Alignment. ++ (line 6) ++* forcing output section alignment: Forced Output Alignment. ++ (line 6) ++* forcing the creation of dynamic sections: Options. (line 424) ++* FORMAT (MRI): MRI. (line 66) ++* functions in expressions: Builtin Functions. (line 6) ++* garbage collection <1>: Input Section Keep. (line 6) ++* garbage collection: Options. (line 784) ++* generating optimized output: Options. (line 410) ++* GNU linker: Overview. (line 6) ++* GNUTARGET: Environment. (line 9) ++* GROUP(FILES): File Commands. (line 44) ++* grouping input files: File Commands. (line 44) ++* groups of archives: Options. (line 609) ++* H8/300 support: H8/300. (line 6) ++* header size: Builtin Functions. (line 170) ++* heap size: Options. (line 1412) ++* help: Options. (line 792) ++* holes: Location Counter. (line 12) ++* holes, filling: Output Section Data. ++ (line 39) ++* HPPA multiple sub-space stubs: HPPA ELF32. (line 6) ++* HPPA stub grouping: HPPA ELF32. (line 12) ++* i960 support: i960. (line 6) ++* image base: Options. (line 1419) ++* implicit linker scripts: Implicit Linker Scripts. ++ (line 6) ++* import libraries: WIN32. (line 10) ++* INCLUDE FILENAME: File Commands. (line 9) ++* including a linker script: File Commands. (line 9) ++* including an entire archive: Options. (line 1248) ++* incremental link: Options. (line 276) ++* INHIBIT_COMMON_ALLOCATION: Miscellaneous Commands. ++ (line 25) ++* initialization function: Options. (line 279) ++* initialized data in ROM: Output Section LMA. (line 21) ++* input file format in linker script: Format Commands. (line 35) ++* input filename symbols: Output Section Keywords. ++ (line 9) ++* input files in linker scripts: File Commands. (line 16) ++* input files, displaying: Options. (line 467) ++* input format: Options. (line 115) ++* input object files in linker scripts: File Commands. (line 16) ++* input section alignment: Forced Input Alignment. ++ (line 6) ++* input section basics: Input Section Basics. ++ (line 6) ++* input section wildcards: Input Section Wildcards. ++ (line 6) ++* input sections: Input Section. (line 6) ++* INPUT(FILES): File Commands. (line 16) ++* integer notation: Constants. (line 6) ++* integer suffixes: Constants. (line 12) ++* internal object-file format: Canonical format. (line 11) ++* invalid input: Bug Criteria. (line 14) ++* K and M integer suffixes: Constants. (line 12) ++* KEEP: Input Section Keep. (line 6) ++* l =: MEMORY. (line 72) ++* L, deleting symbols beginning: Options. (line 517) ++* lazy evaluation: Evaluation. (line 6) ++* ld bugs, reporting: Bug Reporting. (line 6) ++* LDEMULATION: Environment. (line 21) ++* len =: MEMORY. (line 72) ++* LENGTH =: MEMORY. (line 72) ++* LENGTH(MEMORY): Builtin Functions. (line 122) ++* library search path in linker script: File Commands. (line 71) ++* link map: Options. (line 347) ++* link-time runtime library search path: Options. (line 967) ++* linker crash: Bug Criteria. (line 9) ++* linker script concepts: Basic Script Concepts. ++ (line 6) ++* linker script example: Simple Example. (line 6) ++* linker script file commands: File Commands. (line 6) ++* linker script format: Script Format. (line 6) ++* linker script input object files: File Commands. (line 16) ++* linker script simple commands: Simple Commands. (line 6) ++* linker scripts: Scripts. (line 6) ++* LIST (MRI): MRI. (line 77) ++* little-endian objects: Options. (line 201) ++* LOAD (MRI): MRI. (line 84) ++* load address: Output Section LMA. (line 6) ++* LOADADDR(SECTION): Builtin Functions. (line 125) ++* loading, preventing: Output Section Type. ++ (line 22) ++* local symbols, deleting: Options. (line 517) ++* location counter: Location Counter. (line 6) ++* LONG(EXPRESSION): Output Section Data. ++ (line 6) ++* M and K integer suffixes: Constants. (line 12) ++* machine architecture: Miscellaneous Commands. ++ (line 46) ++* machine dependencies: Machine Dependent. (line 6) ++* mapping input sections to output sections: Input Section. (line 6) ++* MAX: Builtin Functions. (line 130) ++* MEMORY: MEMORY. (line 6) ++* memory region attributes: MEMORY. (line 32) ++* memory regions: MEMORY. (line 6) ++* memory regions and sections: Output Section Region. ++ (line 6) ++* memory usage: Options. (line 804) ++* MIN: Builtin Functions. (line 133) ++* MRI compatibility: MRI. (line 6) ++* MSP430 extra sections: MSP430. (line 11) ++* NAME (MRI): MRI. (line 90) ++* name, section: Output Section Name. ++ (line 6) ++* names: Symbols. (line 6) ++* naming the output file: Options. (line 404) ++* NEXT(EXP): Builtin Functions. (line 137) ++* NMAGIC: Options. (line 384) ++* NOCROSSREFS(SECTIONS): Miscellaneous Commands. ++ (line 30) ++* NOLOAD: Output Section Type. ++ (line 22) ++* not enough room for program headers: Builtin Functions. (line 175) ++* o =: MEMORY. (line 67) ++* objdump -i: BFD. (line 6) ++* object file management: BFD. (line 6) ++* object files: Options. (line 29) ++* object formats available: BFD. (line 6) ++* object size: Options. (line 259) ++* OMAGIC: Options. (line 389) ++* opening object files: BFD outline. (line 6) ++* operators for arithmetic: Operators. (line 6) ++* options: Options. (line 6) ++* ORDER (MRI): MRI. (line 95) ++* org =: MEMORY. (line 67) ++* ORIGIN =: MEMORY. (line 67) ++* ORIGIN(MEMORY): Builtin Functions. (line 143) ++* orphan: Orphan Sections. (line 6) ++* output file after errors: Options. (line 870) ++* output file format in linker script: Format Commands. (line 10) ++* output file name in linker scripot: File Commands. (line 61) ++* output section alignment: Forced Output Alignment. ++ (line 6) ++* output section attributes: Output Section Attributes. ++ (line 6) ++* output section data: Output Section Data. ++ (line 6) ++* OUTPUT(FILENAME): File Commands. (line 61) ++* OUTPUT_ARCH(BFDARCH): Miscellaneous Commands. ++ (line 46) ++* OUTPUT_FORMAT(BFDNAME): Format Commands. (line 10) ++* OVERLAY: Overlay Description. ++ (line 6) ++* overlays: Overlay Description. ++ (line 6) ++* partial link: Options. (line 428) ++* PHDRS: PHDRS. (line 6) ++* position independent executables: Options. (line 897) ++* PowerPC ELF32 options: PowerPC ELF32. (line 13) ++* PowerPC GOT: PowerPC ELF32. (line 23) ++* PowerPC long branches: PowerPC ELF32. (line 6) ++* PowerPC PLT: PowerPC ELF32. (line 13) ++* PowerPC stub symbols: PowerPC ELF32. (line 37) ++* PowerPC TLS optimization: PowerPC ELF32. (line 41) ++* PowerPC64 dot symbols: PowerPC64 ELF64. (line 33) ++* PowerPC64 ELF64 options: PowerPC64 ELF64. (line 6) ++* PowerPC64 multi-TOC: PowerPC64 ELF64. (line 74) ++* PowerPC64 OPD optimization: PowerPC64 ELF64. (line 48) ++* PowerPC64 OPD spacing: PowerPC64 ELF64. (line 54) ++* PowerPC64 stub grouping: PowerPC64 ELF64. (line 6) ++* PowerPC64 stub symbols: PowerPC64 ELF64. (line 29) ++* PowerPC64 TLS optimization: PowerPC64 ELF64. (line 43) ++* PowerPC64 TOC optimization: PowerPC64 ELF64. (line 60) ++* precedence in expressions: Operators. (line 6) ++* prevent unnecessary loading: Output Section Type. ++ (line 22) ++* program headers: PHDRS. (line 6) ++* program headers and sections: Output Section Phdr. ++ (line 6) ++* program headers, not enough room: Builtin Functions. (line 175) ++* program segments: PHDRS. (line 6) ++* PROVIDE: PROVIDE. (line 6) ++* PROVIDE_HIDDEN: PROVIDE_HIDDEN. (line 6) ++* PUBLIC (MRI): MRI. (line 103) ++* QUAD(EXPRESSION): Output Section Data. ++ (line 6) ++* quoted symbol names: Symbols. (line 6) ++* read-only text: Options. (line 384) ++* read/write from cmd line: Options. (line 389) ++* regions of memory: MEMORY. (line 6) ++* relative expressions: Expression Section. (line 6) ++* relaxing addressing modes: Options. (line 911) ++* relaxing on H8/300: H8/300. (line 9) ++* relaxing on i960: i960. (line 31) ++* relaxing on Xtensa: Xtensa. (line 27) ++* relocatable and absolute symbols: Expression Section. (line 6) ++* relocatable output: Options. (line 428) ++* removing sections: Output Section Discarding. ++ (line 6) ++* reporting bugs in ld: Reporting Bugs. (line 6) ++* requirements for BFD: BFD. (line 16) ++* retain relocations in final executable: Options. (line 415) ++* retaining specified symbols: Options. (line 931) ++* ROM initialized data: Output Section LMA. (line 21) ++* round up expression: Builtin Functions. (line 36) ++* round up location counter: Builtin Functions. (line 36) ++* runtime library name: Options. (line 267) ++* runtime library search path: Options. (line 945) ++* runtime pseudo-relocation: WIN32. (line 196) ++* scaled integers: Constants. (line 12) ++* scommon section: Input Section Common. ++ (line 20) ++* script files: Options. (line 471) ++* scripts: Scripts. (line 6) ++* search directory, from cmd line: Options. (line 315) ++* search path in linker script: File Commands. (line 71) ++* SEARCH_DIR(PATH): File Commands. (line 71) ++* SECT (MRI): MRI. (line 109) ++* section address: Output Section Address. ++ (line 6) ++* section address in expression: Builtin Functions. (line 17) ++* section alignment, warnings on: Options. (line 1229) ++* section data: Output Section Data. ++ (line 6) ++* section fill pattern: Output Section Fill. ++ (line 6) ++* section load address: Output Section LMA. (line 6) ++* section load address in expression: Builtin Functions. (line 125) ++* section name: Output Section Name. ++ (line 6) ++* section name wildcard patterns: Input Section Wildcards. ++ (line 6) ++* section size: Builtin Functions. (line 154) ++* section, assigning to memory region: Output Section Region. ++ (line 6) ++* section, assigning to program header: Output Section Phdr. ++ (line 6) ++* SECTIONS: SECTIONS. (line 6) ++* sections, discarding: Output Section Discarding. ++ (line 6) ++* segment origins, cmd line: Options. (line 1090) ++* SEGMENT_START(SEGMENT, DEFAULT): Builtin Functions. (line 146) ++* segments, ELF: PHDRS. (line 6) ++* shared libraries: Options. (line 1022) ++* SHORT(EXPRESSION): Output Section Data. ++ (line 6) ++* SIZEOF(SECTION): Builtin Functions. (line 154) ++* SIZEOF_HEADERS: Builtin Functions. (line 170) ++* small common symbols: Input Section Common. ++ (line 20) ++* SORT: Input Section Wildcards. ++ (line 58) ++* SORT_BY_ALIGNMENT: Input Section Wildcards. ++ (line 54) ++* SORT_BY_NAME: Input Section Wildcards. ++ (line 46) ++* SQUAD(EXPRESSION): Output Section Data. ++ (line 6) ++* stack size: Options. (line 1653) ++* standard Unix system: Options. (line 7) ++* start of execution: Entry Point. (line 6) ++* STARTUP(FILENAME): File Commands. (line 79) ++* strip all symbols: Options. (line 458) ++* strip debugger symbols: Options. (line 462) ++* stripping all but some symbols: Options. (line 931) ++* SUBALIGN(SUBSECTION_ALIGN): Forced Input Alignment. ++ (line 6) ++* suffixes for integers: Constants. (line 12) ++* symbol defaults: Builtin Functions. (line 105) ++* symbol definition, scripts: Assignments. (line 6) ++* symbol names: Symbols. (line 6) ++* symbol tracing: Options. (line 522) ++* symbol versions: VERSION. (line 6) ++* symbol-only input: Options. (line 447) ++* symbols, from command line: Options. (line 739) ++* symbols, relocatable and absolute: Expression Section. (line 6) ++* symbols, retaining selectively: Options. (line 931) ++* synthesizing linker: Options. (line 911) ++* synthesizing on H8/300: H8/300. (line 14) ++* TARGET(BFDNAME): Format Commands. (line 35) ++* TARGET1: ARM. (line 27) ++* TARGET2: ARM. (line 32) ++* thumb entry point: ARM. (line 17) ++* TI COFF versions: TI COFF. (line 6) ++* traditional format: Options. (line 1069) ++* unallocated address, next: Builtin Functions. (line 137) ++* undefined symbol: Options. (line 480) ++* undefined symbol in linker script: Miscellaneous Commands. ++ (line 13) ++* undefined symbols, warnings on: Options. (line 1225) ++* uninitialized data placement: Input Section Common. ++ (line 6) ++* unspecified memory: Output Section Data. ++ (line 39) ++* usage: Options. (line 792) ++* USE_BLX: ARM. (line 57) ++* using a DEF file: WIN32. (line 42) ++* using auto-export functionality: WIN32. (line 22) ++* Using decorations: WIN32. (line 141) ++* variables, defining: Assignments. (line 6) ++* verbose: Options. (line 1125) ++* version: Options. (line 507) ++* version script: VERSION. (line 6) ++* version script, symbol versions: Options. (line 1131) ++* VERSION {script text}: VERSION. (line 6) ++* versions of symbols: VERSION. (line 6) ++* warnings, on combining symbols: Options. (line 1138) ++* warnings, on section alignment: Options. (line 1229) ++* warnings, on undefined symbols: Options. (line 1225) ++* weak externals: WIN32. (line 380) ++* what is this?: Overview. (line 6) ++* wildcard file name patterns: Input Section Wildcards. ++ (line 6) ++* Xtensa options: Xtensa. (line 56) ++* Xtensa processors: Xtensa. (line 6) ++ ++ ++ ++Tag Table: ++Node: Top487 ++Node: Overview1249 ++Node: Invocation2363 ++Node: Options2771 ++Node: Environment77426 ++Node: Scripts79186 ++Node: Basic Script Concepts80920 ++Node: Script Format83627 ++Node: Simple Example84490 ++Node: Simple Commands87586 ++Node: Entry Point88037 ++Node: File Commands88796 ++Node: Format Commands92662 ++Node: Miscellaneous Commands94628 ++Node: Assignments96858 ++Node: Simple Assignments97349 ++Node: PROVIDE99085 ++Node: PROVIDE_HIDDEN100290 ++Node: Source Code Reference100534 ++Node: SECTIONS104114 ++Node: Output Section Description106005 ++Node: Output Section Name107058 ++Node: Output Section Address107934 ++Node: Input Section109583 ++Node: Input Section Basics110384 ++Node: Input Section Wildcards112736 ++Node: Input Section Common117469 ++Node: Input Section Keep118951 ++Node: Input Section Example119441 ++Node: Output Section Data120409 ++Node: Output Section Keywords123186 ++Node: Output Section Discarding126755 ++Node: Output Section Attributes127711 ++Node: Output Section Type128715 ++Node: Output Section LMA129869 ++Node: Forced Output Alignment132140 ++Node: Forced Input Alignment132408 ++Node: Output Section Region132793 ++Node: Output Section Phdr133223 ++Node: Output Section Fill133887 ++Node: Overlay Description135029 ++Node: MEMORY139277 ++Node: PHDRS143477 ++Node: VERSION148516 ++Node: Expressions156307 ++Node: Constants157185 ++Node: Symbols157746 ++Node: Orphan Sections158484 ++Node: Location Counter159247 ++Node: Operators163551 ++Node: Evaluation164473 ++Node: Expression Section165837 ++Node: Builtin Functions167326 ++Node: Implicit Linker Scripts174818 ++Node: Machine Dependent175593 ++Node: H8/300176454 ++Node: i960178079 ++Node: ARM179764 ++Node: HPPA ELF32182680 ++Node: MMIX184303 ++Node: MSP430185520 ++Node: PowerPC ELF32186568 ++Node: PowerPC64 ELF64188859 ++Node: TI COFF193273 ++Node: WIN32193805 ++Node: Xtensa211879 ++Node: BFD215001 ++Node: BFD outline216456 ++Node: BFD information loss217742 ++Node: Canonical format220259 ++Node: Reporting Bugs224616 ++Node: Bug Criteria225310 ++Node: Bug Reporting226009 ++Node: MRI233034 ++Node: GNU Free Documentation License237677 ++Node: Index257391 ++ ++End Tag Table +diff -Nrup binutils-2.17/ld/ld.info.r27273 binutils-2.17.atmel.1.3.0/ld/ld.info.r27273 +--- binutils-2.17/ld/ld.info.r27273 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/ld.info.r27273 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,6691 @@ ++This is .././ld/ld.info, produced by makeinfo version 4.8 from ++.././ld/ld.texinfo. ++ ++START-INFO-DIR-ENTRY ++* Ld: (ld). The GNU linker. ++END-INFO-DIR-ENTRY ++ ++ This file documents the GNU linker LD version 2.17. ++ ++ Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, ++2002, 2003, 2004 Free Software Foundation, Inc. ++ ++ ++File: ld.info, Node: Top, Next: Overview, Up: (dir) ++ ++Using ld ++******** ++ ++This file documents the GNU linker ld version 2.17. ++ ++ This document is distributed under the terms of the GNU Free ++Documentation License. A copy of the license is included in the ++section entitled "GNU Free Documentation License". ++ ++* Menu: ++ ++* Overview:: Overview ++* Invocation:: Invocation ++* Scripts:: Linker Scripts ++ ++* Machine Dependent:: Machine Dependent Features ++ ++* BFD:: BFD ++ ++* Reporting Bugs:: Reporting Bugs ++* MRI:: MRI Compatible Script Files ++* GNU Free Documentation License:: GNU Free Documentation License ++* Index:: Index ++ ++ ++File: ld.info, Node: Overview, Next: Invocation, Prev: Top, Up: Top ++ ++1 Overview ++********** ++ ++`ld' combines a number of object and archive files, relocates their ++data and ties up symbol references. Usually the last step in compiling ++a program is to run `ld'. ++ ++ `ld' accepts Linker Command Language files written in a superset of ++AT&T's Link Editor Command Language syntax, to provide explicit and ++total control over the linking process. ++ ++ This version of `ld' uses the general purpose BFD libraries to ++operate on object files. This allows `ld' to read, combine, and write ++object files in many different formats--for example, COFF or `a.out'. ++Different formats may be linked together to produce any available kind ++of object file. *Note BFD::, for more information. ++ ++ Aside from its flexibility, the GNU linker is more helpful than other ++linkers in providing diagnostic information. Many linkers abandon ++execution immediately upon encountering an error; whenever possible, ++`ld' continues executing, allowing you to identify other errors (or, in ++some cases, to get an output file in spite of the error). ++ ++ ++File: ld.info, Node: Invocation, Next: Scripts, Prev: Overview, Up: Top ++ ++2 Invocation ++************ ++ ++The GNU linker `ld' is meant to cover a broad range of situations, and ++to be as compatible as possible with other linkers. As a result, you ++have many choices to control its behavior. ++ ++* Menu: ++ ++* Options:: Command Line Options ++* Environment:: Environment Variables ++ ++ ++File: ld.info, Node: Options, Next: Environment, Up: Invocation ++ ++2.1 Command Line Options ++======================== ++ ++ The linker supports a plethora of command-line options, but in actual ++practice few of them are used in any particular context. For instance, ++a frequent use of `ld' is to link standard Unix object files on a ++standard, supported Unix system. On such a system, to link a file ++`hello.o': ++ ++ ld -o OUTPUT /lib/crt0.o hello.o -lc ++ ++ This tells `ld' to produce a file called OUTPUT as the result of ++linking the file `/lib/crt0.o' with `hello.o' and the library `libc.a', ++which will come from the standard search directories. (See the ++discussion of the `-l' option below.) ++ ++ Some of the command-line options to `ld' may be specified at any ++point in the command line. However, options which refer to files, such ++as `-l' or `-T', cause the file to be read at the point at which the ++option appears in the command line, relative to the object files and ++other file options. Repeating non-file options with a different ++argument will either have no further effect, or override prior ++occurrences (those further to the left on the command line) of that ++option. Options which may be meaningfully specified more than once are ++noted in the descriptions below. ++ ++ Non-option arguments are object files or archives which are to be ++linked together. They may follow, precede, or be mixed in with ++command-line options, except that an object file argument may not be ++placed between an option and its argument. ++ ++ Usually the linker is invoked with at least one object file, but you ++can specify other forms of binary input files using `-l', `-R', and the ++script command language. If _no_ binary input files at all are ++specified, the linker does not produce any output, and issues the ++message `No input files'. ++ ++ If the linker cannot recognize the format of an object file, it will ++assume that it is a linker script. A script specified in this way ++augments the main linker script used for the link (either the default ++linker script or the one specified by using `-T'). This feature ++permits the linker to link against a file which appears to be an object ++or an archive, but actually merely defines some symbol values, or uses ++`INPUT' or `GROUP' to load other objects. Note that specifying a ++script in this way merely augments the main linker script; use the `-T' ++option to replace the default linker script entirely. *Note Scripts::. ++ ++ For options whose names are a single letter, option arguments must ++either follow the option letter without intervening whitespace, or be ++given as separate arguments immediately following the option that ++requires them. ++ ++ For options whose names are multiple letters, either one dash or two ++can precede the option name; for example, `-trace-symbol' and ++`--trace-symbol' are equivalent. Note--there is one exception to this ++rule. Multiple letter options that start with a lower case 'o' can ++only be preceeded by two dashes. This is to reduce confusion with the ++`-o' option. So for example `-omagic' sets the output file name to ++`magic' whereas `--omagic' sets the NMAGIC flag on the output. ++ ++ Arguments to multiple-letter options must either be separated from ++the option name by an equals sign, or be given as separate arguments ++immediately following the option that requires them. For example, ++`--trace-symbol foo' and `--trace-symbol=foo' are equivalent. Unique ++abbreviations of the names of multiple-letter options are accepted. ++ ++ Note--if the linker is being invoked indirectly, via a compiler ++driver (e.g. `gcc') then all the linker command line options should be ++prefixed by `-Wl,' (or whatever is appropriate for the particular ++compiler driver) like this: ++ ++ gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup ++ ++ This is important, because otherwise the compiler driver program may ++silently drop the linker options, resulting in a bad link. ++ ++ Here is a table of the generic command line switches accepted by the ++GNU linker: ++ ++`@FILE' ++ Read command-line options from FILE. The options read are ++ inserted in place of the original @FILE option. If FILE does not ++ exist, or cannot be read, then the option will be treated ++ literally, and not removed. ++ ++ Options in FILE are separated by whitespace. A whitespace ++ character may be included in an option by surrounding the entire ++ option in either single or double quotes. Any character ++ (including a backslash) may be included by prefixing the character ++ to be included with a backslash. The FILE may itself contain ++ additional @FILE options; any such options will be processed ++ recursively. ++ ++`-aKEYWORD' ++ This option is supported for HP/UX compatibility. The KEYWORD ++ argument must be one of the strings `archive', `shared', or ++ `default'. `-aarchive' is functionally equivalent to `-Bstatic', ++ and the other two keywords are functionally equivalent to ++ `-Bdynamic'. This option may be used any number of times. ++ ++`-AARCHITECTURE' ++`--architecture=ARCHITECTURE' ++ In the current release of `ld', this option is useful only for the ++ Intel 960 family of architectures. In that `ld' configuration, the ++ ARCHITECTURE argument identifies the particular architecture in ++ the 960 family, enabling some safeguards and modifying the ++ archive-library search path. *Note `ld' and the Intel 960 family: ++ i960, for details. ++ ++ Future releases of `ld' may support similar functionality for ++ other architecture families. ++ ++`-b INPUT-FORMAT' ++`--format=INPUT-FORMAT' ++ `ld' may be configured to support more than one kind of object ++ file. If your `ld' is configured this way, you can use the `-b' ++ option to specify the binary format for input object files that ++ follow this option on the command line. Even when `ld' is ++ configured to support alternative object formats, you don't ++ usually need to specify this, as `ld' should be configured to ++ expect as a default input format the most usual format on each ++ machine. INPUT-FORMAT is a text string, the name of a particular ++ format supported by the BFD libraries. (You can list the ++ available binary formats with `objdump -i'.) *Note BFD::. ++ ++ You may want to use this option if you are linking files with an ++ unusual binary format. You can also use `-b' to switch formats ++ explicitly (when linking object files of different formats), by ++ including `-b INPUT-FORMAT' before each group of object files in a ++ particular format. ++ ++ The default format is taken from the environment variable ++ `GNUTARGET'. *Note Environment::. You can also define the input ++ format from a script, using the command `TARGET'; see *Note Format ++ Commands::. ++ ++`-c MRI-COMMANDFILE' ++`--mri-script=MRI-COMMANDFILE' ++ For compatibility with linkers produced by MRI, `ld' accepts script ++ files written in an alternate, restricted command language, ++ described in *Note MRI Compatible Script Files: MRI. Introduce ++ MRI script files with the option `-c'; use the `-T' option to run ++ linker scripts written in the general-purpose `ld' scripting ++ language. If MRI-CMDFILE does not exist, `ld' looks for it in the ++ directories specified by any `-L' options. ++ ++`-d' ++`-dc' ++`-dp' ++ These three options are equivalent; multiple forms are supported ++ for compatibility with other linkers. They assign space to common ++ symbols even if a relocatable output file is specified (with ++ `-r'). The script command `FORCE_COMMON_ALLOCATION' has the same ++ effect. *Note Miscellaneous Commands::. ++ ++`-e ENTRY' ++`--entry=ENTRY' ++ Use ENTRY as the explicit symbol for beginning execution of your ++ program, rather than the default entry point. If there is no ++ symbol named ENTRY, the linker will try to parse ENTRY as a number, ++ and use that as the entry address (the number will be interpreted ++ in base 10; you may use a leading `0x' for base 16, or a leading ++ `0' for base 8). *Note Entry Point::, for a discussion of defaults ++ and other ways of specifying the entry point. ++ ++`--exclude-libs LIB,LIB,...' ++ Specifies a list of archive libraries from which symbols should ++ not be automatically exported. The library names may be delimited ++ by commas or colons. Specifying `--exclude-libs ALL' excludes ++ symbols in all archive libraries from automatic export. This ++ option is available only for the i386 PE targeted port of the ++ linker and for ELF targeted ports. For i386 PE, symbols ++ explicitly listed in a .def file are still exported, regardless of ++ this option. For ELF targeted ports, symbols affected by this ++ option will be treated as hidden. ++ ++`-E' ++`--export-dynamic' ++ When creating a dynamically linked executable, add all symbols to ++ the dynamic symbol table. The dynamic symbol table is the set of ++ symbols which are visible from dynamic objects at run time. ++ ++ If you do not use this option, the dynamic symbol table will ++ normally contain only those symbols which are referenced by some ++ dynamic object mentioned in the link. ++ ++ If you use `dlopen' to load a dynamic object which needs to refer ++ back to the symbols defined by the program, rather than some other ++ dynamic object, then you will probably need to use this option when ++ linking the program itself. ++ ++ You can also use the version script to control what symbols should ++ be added to the dynamic symbol table if the output format supports ++ it. See the description of `--version-script' in *Note VERSION::. ++ ++`-EB' ++ Link big-endian objects. This affects the default output format. ++ ++`-EL' ++ Link little-endian objects. This affects the default output ++ format. ++ ++`-f' ++`--auxiliary NAME' ++ When creating an ELF shared object, set the internal DT_AUXILIARY ++ field to the specified name. This tells the dynamic linker that ++ the symbol table of the shared object should be used as an ++ auxiliary filter on the symbol table of the shared object NAME. ++ ++ If you later link a program against this filter object, then, when ++ you run the program, the dynamic linker will see the DT_AUXILIARY ++ field. If the dynamic linker resolves any symbols from the filter ++ object, it will first check whether there is a definition in the ++ shared object NAME. If there is one, it will be used instead of ++ the definition in the filter object. The shared object NAME need ++ not exist. Thus the shared object NAME may be used to provide an ++ alternative implementation of certain functions, perhaps for ++ debugging or for machine specific performance. ++ ++ This option may be specified more than once. The DT_AUXILIARY ++ entries will be created in the order in which they appear on the ++ command line. ++ ++`-F NAME' ++`--filter NAME' ++ When creating an ELF shared object, set the internal DT_FILTER ++ field to the specified name. This tells the dynamic linker that ++ the symbol table of the shared object which is being created ++ should be used as a filter on the symbol table of the shared ++ object NAME. ++ ++ If you later link a program against this filter object, then, when ++ you run the program, the dynamic linker will see the DT_FILTER ++ field. The dynamic linker will resolve symbols according to the ++ symbol table of the filter object as usual, but it will actually ++ link to the definitions found in the shared object NAME. Thus the ++ filter object can be used to select a subset of the symbols ++ provided by the object NAME. ++ ++ Some older linkers used the `-F' option throughout a compilation ++ toolchain for specifying object-file format for both input and ++ output object files. The GNU linker uses other mechanisms for ++ this purpose: the `-b', `--format', `--oformat' options, the ++ `TARGET' command in linker scripts, and the `GNUTARGET' ++ environment variable. The GNU linker will ignore the `-F' option ++ when not creating an ELF shared object. ++ ++`-fini NAME' ++ When creating an ELF executable or shared object, call NAME when ++ the executable or shared object is unloaded, by setting DT_FINI to ++ the address of the function. By default, the linker uses `_fini' ++ as the function to call. ++ ++`-g' ++ Ignored. Provided for compatibility with other tools. ++ ++`-GVALUE' ++`--gpsize=VALUE' ++ Set the maximum size of objects to be optimized using the GP ++ register to SIZE. This is only meaningful for object file formats ++ such as MIPS ECOFF which supports putting large and small objects ++ into different sections. This is ignored for other object file ++ formats. ++ ++`-hNAME' ++`-soname=NAME' ++ When creating an ELF shared object, set the internal DT_SONAME ++ field to the specified name. When an executable is linked with a ++ shared object which has a DT_SONAME field, then when the ++ executable is run the dynamic linker will attempt to load the ++ shared object specified by the DT_SONAME field rather than the ++ using the file name given to the linker. ++ ++`-i' ++ Perform an incremental link (same as option `-r'). ++ ++`-init NAME' ++ When creating an ELF executable or shared object, call NAME when ++ the executable or shared object is loaded, by setting DT_INIT to ++ the address of the function. By default, the linker uses `_init' ++ as the function to call. ++ ++`-lARCHIVE' ++`--library=ARCHIVE' ++ Add archive file ARCHIVE to the list of files to link. This ++ option may be used any number of times. `ld' will search its ++ path-list for occurrences of `libARCHIVE.a' for every ARCHIVE ++ specified. ++ ++ On systems which support shared libraries, `ld' may also search for ++ libraries with extensions other than `.a'. Specifically, on ELF ++ and SunOS systems, `ld' will search a directory for a library with ++ an extension of `.so' before searching for one with an extension of ++ `.a'. By convention, a `.so' extension indicates a shared library. ++ ++ The linker will search an archive only once, at the location where ++ it is specified on the command line. If the archive defines a ++ symbol which was undefined in some object which appeared before ++ the archive on the command line, the linker will include the ++ appropriate file(s) from the archive. However, an undefined ++ symbol in an object appearing later on the command line will not ++ cause the linker to search the archive again. ++ ++ See the `-(' option for a way to force the linker to search ++ archives multiple times. ++ ++ You may list the same archive multiple times on the command line. ++ ++ This type of archive searching is standard for Unix linkers. ++ However, if you are using `ld' on AIX, note that it is different ++ from the behaviour of the AIX linker. ++ ++`-LSEARCHDIR' ++`--library-path=SEARCHDIR' ++ Add path SEARCHDIR to the list of paths that `ld' will search for ++ archive libraries and `ld' control scripts. You may use this ++ option any number of times. The directories are searched in the ++ order in which they are specified on the command line. ++ Directories specified on the command line are searched before the ++ default directories. All `-L' options apply to all `-l' options, ++ regardless of the order in which the options appear. ++ ++ If SEARCHDIR begins with `=', then the `=' will be replaced by the ++ "sysroot prefix", a path specified when the linker is configured. ++ ++ The default set of paths searched (without being specified with ++ `-L') depends on which emulation mode `ld' is using, and in some ++ cases also on how it was configured. *Note Environment::. ++ ++ The paths can also be specified in a link script with the ++ `SEARCH_DIR' command. Directories specified this way are searched ++ at the point in which the linker script appears in the command ++ line. ++ ++`-mEMULATION' ++ Emulate the EMULATION linker. You can list the available ++ emulations with the `--verbose' or `-V' options. ++ ++ If the `-m' option is not used, the emulation is taken from the ++ `LDEMULATION' environment variable, if that is defined. ++ ++ Otherwise, the default emulation depends upon how the linker was ++ configured. ++ ++`-M' ++`--print-map' ++ Print a link map to the standard output. A link map provides ++ information about the link, including the following: ++ ++ * Where object files are mapped into memory. ++ ++ * How common symbols are allocated. ++ ++ * All archive members included in the link, with a mention of ++ the symbol which caused the archive member to be brought in. ++ ++ * The values assigned to symbols. ++ ++ Note - symbols whose values are computed by an expression ++ which involves a reference to a previous value of the same ++ symbol may not have correct result displayed in the link map. ++ This is because the linker discards intermediate results and ++ only retains the final value of an expression. Under such ++ circumstances the linker will display the final value ++ enclosed by square brackets. Thus for example a linker ++ script containing: ++ ++ foo = 1 ++ foo = foo * 4 ++ foo = foo + 8 ++ ++ will produce the following output in the link map if the `-M' ++ option is used: ++ ++ 0x00000001 foo = 0x1 ++ [0x0000000c] foo = (foo * 0x4) ++ [0x0000000c] foo = (foo + 0x8) ++ ++ See *Note Expressions:: for more information about ++ expressions in linker scripts. ++ ++`-n' ++`--nmagic' ++ Turn off page alignment of sections, and mark the output as ++ `NMAGIC' if possible. ++ ++`-N' ++`--omagic' ++ Set the text and data sections to be readable and writable. Also, ++ do not page-align the data segment, and disable linking against ++ shared libraries. If the output format supports Unix style magic ++ numbers, mark the output as `OMAGIC'. Note: Although a writable ++ text section is allowed for PE-COFF targets, it does not conform ++ to the format specification published by Microsoft. ++ ++`--no-omagic' ++ This option negates most of the effects of the `-N' option. It ++ sets the text section to be read-only, and forces the data segment ++ to be page-aligned. Note - this option does not enable linking ++ against shared libraries. Use `-Bdynamic' for this. ++ ++`-o OUTPUT' ++`--output=OUTPUT' ++ Use OUTPUT as the name for the program produced by `ld'; if this ++ option is not specified, the name `a.out' is used by default. The ++ script command `OUTPUT' can also specify the output file name. ++ ++`-O LEVEL' ++ If LEVEL is a numeric values greater than zero `ld' optimizes the ++ output. This might take significantly longer and therefore ++ probably should only be enabled for the final binary. ++ ++`-q' ++`--emit-relocs' ++ Leave relocation sections and contents in fully linked ++ exececutables. Post link analysis and optimization tools may need ++ this information in order to perform correct modifications of ++ executables. This results in larger executables. ++ ++ This option is currently only supported on ELF platforms. ++ ++`--force-dynamic' ++ Force the output file to have dynamic sections. This option is ++ specific to VxWorks targets. ++ ++`-r' ++`--relocatable' ++ Generate relocatable output--i.e., generate an output file that ++ can in turn serve as input to `ld'. This is often called "partial ++ linking". As a side effect, in environments that support standard ++ Unix magic numbers, this option also sets the output file's magic ++ number to `OMAGIC'. If this option is not specified, an absolute ++ file is produced. When linking C++ programs, this option _will ++ not_ resolve references to constructors; to do that, use `-Ur'. ++ ++ When an input file does not have the same format as the output ++ file, partial linking is only supported if that input file does ++ not contain any relocations. Different output formats can have ++ further restrictions; for example some `a.out'-based formats do ++ not support partial linking with input files in other formats at ++ all. ++ ++ This option does the same thing as `-i'. ++ ++`-R FILENAME' ++`--just-symbols=FILENAME' ++ Read symbol names and their addresses from FILENAME, but do not ++ relocate it or include it in the output. This allows your output ++ file to refer symbolically to absolute locations of memory defined ++ in other programs. You may use this option more than once. ++ ++ For compatibility with other ELF linkers, if the `-R' option is ++ followed by a directory name, rather than a file name, it is ++ treated as the `-rpath' option. ++ ++`-s' ++`--strip-all' ++ Omit all symbol information from the output file. ++ ++`-S' ++`--strip-debug' ++ Omit debugger symbol information (but not all symbols) from the ++ output file. ++ ++`-t' ++`--trace' ++ Print the names of the input files as `ld' processes them. ++ ++`-T SCRIPTFILE' ++`--script=SCRIPTFILE' ++ Use SCRIPTFILE as the linker script. This script replaces `ld''s ++ default linker script (rather than adding to it), so COMMANDFILE ++ must specify everything necessary to describe the output file. ++ *Note Scripts::. If SCRIPTFILE does not exist in the current ++ directory, `ld' looks for it in the directories specified by any ++ preceding `-L' options. Multiple `-T' options accumulate. ++ ++`-u SYMBOL' ++`--undefined=SYMBOL' ++ Force SYMBOL to be entered in the output file as an undefined ++ symbol. Doing this may, for example, trigger linking of additional ++ modules from standard libraries. `-u' may be repeated with ++ different option arguments to enter additional undefined symbols. ++ This option is equivalent to the `EXTERN' linker script command. ++ ++`-Ur' ++ For anything other than C++ programs, this option is equivalent to ++ `-r': it generates relocatable output--i.e., an output file that ++ can in turn serve as input to `ld'. When linking C++ programs, ++ `-Ur' _does_ resolve references to constructors, unlike `-r'. It ++ does not work to use `-Ur' on files that were themselves linked ++ with `-Ur'; once the constructor table has been built, it cannot ++ be added to. Use `-Ur' only for the last partial link, and `-r' ++ for the others. ++ ++`--unique[=SECTION]' ++ Creates a separate output section for every input section matching ++ SECTION, or if the optional wildcard SECTION argument is missing, ++ for every orphan input section. An orphan section is one not ++ specifically mentioned in a linker script. You may use this option ++ multiple times on the command line; It prevents the normal ++ merging of input sections with the same name, overriding output ++ section assignments in a linker script. ++ ++`-v' ++`--version' ++`-V' ++ Display the version number for `ld'. The `-V' option also lists ++ the supported emulations. ++ ++`-x' ++`--discard-all' ++ Delete all local symbols. ++ ++`-X' ++`--discard-locals' ++ Delete all temporary local symbols. For most targets, this is all ++ local symbols whose names begin with `L'. ++ ++`-y SYMBOL' ++`--trace-symbol=SYMBOL' ++ Print the name of each linked file in which SYMBOL appears. This ++ option may be given any number of times. On many systems it is ++ necessary to prepend an underscore. ++ ++ This option is useful when you have an undefined symbol in your ++ link but don't know where the reference is coming from. ++ ++`-Y PATH' ++ Add PATH to the default library search path. This option exists ++ for Solaris compatibility. ++ ++`-z KEYWORD' ++ The recognized keywords are: ++ `combreloc' ++ Combines multiple reloc sections and sorts them to make ++ dynamic symbol lookup caching possible. ++ ++ `defs' ++ Disallows undefined symbols in object files. Undefined ++ symbols in shared libraries are still allowed. ++ ++ `execstack' ++ Marks the object as requiring executable stack. ++ ++ `initfirst' ++ This option is only meaningful when building a shared object. ++ It marks the object so that its runtime initialization will ++ occur before the runtime initialization of any other objects ++ brought into the process at the same time. Similarly the ++ runtime finalization of the object will occur after the ++ runtime finalization of any other objects. ++ ++ `interpose' ++ Marks the object that its symbol table interposes before all ++ symbols but the primary executable. ++ ++ `loadfltr' ++ Marks the object that its filters be processed immediately at ++ runtime. ++ ++ `muldefs' ++ Allows multiple definitions. ++ ++ `nocombreloc' ++ Disables multiple reloc sections combining. ++ ++ `nocopyreloc' ++ Disables production of copy relocs. ++ ++ `nodefaultlib' ++ Marks the object that the search for dependencies of this ++ object will ignore any default library search paths. ++ ++ `nodelete' ++ Marks the object shouldn't be unloaded at runtime. ++ ++ `nodlopen' ++ Marks the object not available to `dlopen'. ++ ++ `nodump' ++ Marks the object can not be dumped by `dldump'. ++ ++ `noexecstack' ++ Marks the object as not requiring executable stack. ++ ++ `norelro' ++ Don't create an ELF `PT_GNU_RELRO' segment header in the ++ object. ++ ++ `now' ++ When generating an executable or shared library, mark it to ++ tell the dynamic linker to resolve all symbols when the ++ program is started, or when the shared library is linked to ++ using dlopen, instead of deferring function call resolution ++ to the point when the function is first called. ++ ++ `origin' ++ Marks the object may contain $ORIGIN. ++ ++ `relro' ++ Create an ELF `PT_GNU_RELRO' segment header in the object. ++ ++ ++ Other keywords are ignored for Solaris compatibility. ++ ++`-( ARCHIVES -)' ++`--start-group ARCHIVES --end-group' ++ The ARCHIVES should be a list of archive files. They may be ++ either explicit file names, or `-l' options. ++ ++ The specified archives are searched repeatedly until no new ++ undefined references are created. Normally, an archive is ++ searched only once in the order that it is specified on the ++ command line. If a symbol in that archive is needed to resolve an ++ undefined symbol referred to by an object in an archive that ++ appears later on the command line, the linker would not be able to ++ resolve that reference. By grouping the archives, they all be ++ searched repeatedly until all possible references are resolved. ++ ++ Using this option has a significant performance cost. It is best ++ to use it only when there are unavoidable circular references ++ between two or more archives. ++ ++`--accept-unknown-input-arch' ++`--no-accept-unknown-input-arch' ++ Tells the linker to accept input files whose architecture cannot be ++ recognised. The assumption is that the user knows what they are ++ doing and deliberately wants to link in these unknown input files. ++ This was the default behaviour of the linker, before release ++ 2.14. The default behaviour from release 2.14 onwards is to ++ reject such input files, and so the `--accept-unknown-input-arch' ++ option has been added to restore the old behaviour. ++ ++`--as-needed' ++`--no-as-needed' ++ This option affects ELF DT_NEEDED tags for dynamic libraries ++ mentioned on the command line after the `--as-needed' option. ++ Normally, the linker will add a DT_NEEDED tag for each dynamic ++ library mentioned on the command line, regardless of whether the ++ library is actually needed. `--as-needed' causes DT_NEEDED tags ++ to only be emitted for libraries that satisfy some symbol ++ reference from regular objects which is undefined at the point ++ that the library was linked. `--no-as-needed' restores the ++ default behaviour. ++ ++`--add-needed' ++`--no-add-needed' ++ This option affects the treatment of dynamic libraries from ELF ++ DT_NEEDED tags in dynamic libraries mentioned on the command line ++ after the `--no-add-needed' option. Normally, the linker will add ++ a DT_NEEDED tag for each dynamic library from DT_NEEDED tags. ++ `--no-add-needed' causes DT_NEEDED tags will never be emitted for ++ those libraries from DT_NEEDED tags. `--add-needed' restores the ++ default behaviour. ++ ++`-assert KEYWORD' ++ This option is ignored for SunOS compatibility. ++ ++`-Bdynamic' ++`-dy' ++`-call_shared' ++ Link against dynamic libraries. This is only meaningful on ++ platforms for which shared libraries are supported. This option ++ is normally the default on such platforms. The different variants ++ of this option are for compatibility with various systems. You ++ may use this option multiple times on the command line: it affects ++ library searching for `-l' options which follow it. ++ ++`-Bgroup' ++ Set the `DF_1_GROUP' flag in the `DT_FLAGS_1' entry in the dynamic ++ section. This causes the runtime linker to handle lookups in this ++ object and its dependencies to be performed only inside the group. ++ `--unresolved-symbols=report-all' is implied. This option is only ++ meaningful on ELF platforms which support shared libraries. ++ ++`-Bstatic' ++`-dn' ++`-non_shared' ++`-static' ++ Do not link against shared libraries. This is only meaningful on ++ platforms for which shared libraries are supported. The different ++ variants of this option are for compatibility with various ++ systems. You may use this option multiple times on the command ++ line: it affects library searching for `-l' options which follow ++ it. This option also implies `--unresolved-symbols=report-all'. ++ This option can be used with `-shared'. Doing so means that a ++ shared library is being created but that all of the library's ++ external references must be resolved by pulling in entries from ++ static libraries. ++ ++`-Bsymbolic' ++ When creating a shared library, bind references to global symbols ++ to the definition within the shared library, if any. Normally, it ++ is possible for a program linked against a shared library to ++ override the definition within the shared library. This option is ++ only meaningful on ELF platforms which support shared libraries. ++ ++`--check-sections' ++`--no-check-sections' ++ Asks the linker _not_ to check section addresses after they have ++ been assigned to see if there are any overlaps. Normally the ++ linker will perform this check, and if it finds any overlaps it ++ will produce suitable error messages. The linker does know about, ++ and does make allowances for sections in overlays. The default ++ behaviour can be restored by using the command line switch ++ `--check-sections'. ++ ++`--cref' ++ Output a cross reference table. If a linker map file is being ++ generated, the cross reference table is printed to the map file. ++ Otherwise, it is printed on the standard output. ++ ++ The format of the table is intentionally simple, so that it may be ++ easily processed by a script if necessary. The symbols are ++ printed out, sorted by name. For each symbol, a list of file ++ names is given. If the symbol is defined, the first file listed ++ is the location of the definition. The remaining files contain ++ references to the symbol. ++ ++`--no-define-common' ++ This option inhibits the assignment of addresses to common symbols. ++ The script command `INHIBIT_COMMON_ALLOCATION' has the same effect. ++ *Note Miscellaneous Commands::. ++ ++ The `--no-define-common' option allows decoupling the decision to ++ assign addresses to Common symbols from the choice of the output ++ file type; otherwise a non-Relocatable output type forces ++ assigning addresses to Common symbols. Using `--no-define-common' ++ allows Common symbols that are referenced from a shared library to ++ be assigned addresses only in the main program. This eliminates ++ the unused duplicate space in the shared library, and also ++ prevents any possible confusion over resolving to the wrong ++ duplicate when there are many dynamic modules with specialized ++ search paths for runtime symbol resolution. ++ ++`--defsym SYMBOL=EXPRESSION' ++ Create a global symbol in the output file, containing the absolute ++ address given by EXPRESSION. You may use this option as many ++ times as necessary to define multiple symbols in the command line. ++ A limited form of arithmetic is supported for the EXPRESSION in ++ this context: you may give a hexadecimal constant or the name of ++ an existing symbol, or use `+' and `-' to add or subtract ++ hexadecimal constants or symbols. If you need more elaborate ++ expressions, consider using the linker command language from a ++ script (*note Assignment: Symbol Definitions: Assignments.). ++ _Note:_ there should be no white space between SYMBOL, the equals ++ sign ("<=>"), and EXPRESSION. ++ ++`--demangle[=STYLE]' ++`--no-demangle' ++ These options control whether to demangle symbol names in error ++ messages and other output. When the linker is told to demangle, ++ it tries to present symbol names in a readable fashion: it strips ++ leading underscores if they are used by the object file format, ++ and converts C++ mangled symbol names into user readable names. ++ Different compilers have different mangling styles. The optional ++ demangling style argument can be used to choose an appropriate ++ demangling style for your compiler. The linker will demangle by ++ default unless the environment variable `COLLECT_NO_DEMANGLE' is ++ set. These options may be used to override the default. ++ ++`--dynamic-linker FILE' ++ Set the name of the dynamic linker. This is only meaningful when ++ generating dynamically linked ELF executables. The default dynamic ++ linker is normally correct; don't use this unless you know what ++ you are doing. ++ ++`--fatal-warnings' ++ Treat all warnings as errors. ++ ++`--force-exe-suffix' ++ Make sure that an output file has a .exe suffix. ++ ++ If a successfully built fully linked output file does not have a ++ `.exe' or `.dll' suffix, this option forces the linker to copy the ++ output file to one of the same name with a `.exe' suffix. This ++ option is useful when using unmodified Unix makefiles on a ++ Microsoft Windows host, since some versions of Windows won't run ++ an image unless it ends in a `.exe' suffix. ++ ++`--no-gc-sections' ++`--gc-sections' ++ Enable garbage collection of unused input sections. It is ignored ++ on targets that do not support this option. This option is not ++ compatible with `-r'. The default behaviour (of not performing ++ this garbage collection) can be restored by specifying ++ `--no-gc-sections' on the command line. ++ ++`--help' ++ Print a summary of the command-line options on the standard output ++ and exit. ++ ++`--target-help' ++ Print a summary of all target specific options on the standard ++ output and exit. ++ ++`-Map MAPFILE' ++ Print a link map to the file MAPFILE. See the description of the ++ `-M' option, above. ++ ++`--no-keep-memory' ++ `ld' normally optimizes for speed over memory usage by caching the ++ symbol tables of input files in memory. This option tells `ld' to ++ instead optimize for memory usage, by rereading the symbol tables ++ as necessary. This may be required if `ld' runs out of memory ++ space while linking a large executable. ++ ++`--no-undefined' ++`-z defs' ++ Report unresolved symbol references from regular object files. ++ This is done even if the linker is creating a non-symbolic shared ++ library. The switch `--[no-]allow-shlib-undefined' controls the ++ behaviour for reporting unresolved references found in shared ++ libraries being linked in. ++ ++`--allow-multiple-definition' ++`-z muldefs' ++ Normally when a symbol is defined multiple times, the linker will ++ report a fatal error. These options allow multiple definitions and ++ the first definition will be used. ++ ++`--allow-shlib-undefined' ++`--no-allow-shlib-undefined' ++ Allows (the default) or disallows undefined symbols in shared ++ libraries. This switch is similar to `--no-undefined' except that ++ it determines the behaviour when the undefined symbols are in a ++ shared library rather than a regular object file. It does not ++ affect how undefined symbols in regular object files are handled. ++ ++ The reason that `--allow-shlib-undefined' is the default is that ++ the shared library being specified at link time may not be the ++ same as the one that is available at load time, so the symbols ++ might actually be resolvable at load time. Plus there are some ++ systems, (eg BeOS) where undefined symbols in shared libraries is ++ normal. (The kernel patches them at load time to select which ++ function is most appropriate for the current architecture. This ++ is used for example to dynamically select an appropriate memset ++ function). Apparently it is also normal for HPPA shared libraries ++ to have undefined symbols. ++ ++`--no-undefined-version' ++ Normally when a symbol has an undefined version, the linker will ++ ignore it. This option disallows symbols with undefined version ++ and a fatal error will be issued instead. ++ ++`--default-symver' ++ Create and use a default symbol version (the soname) for ++ unversioned exported symbols. ++ ++`--default-imported-symver' ++ Create and use a default symbol version (the soname) for ++ unversioned imported symbols. ++ ++`--no-warn-mismatch' ++ Normally `ld' will give an error if you try to link together input ++ files that are mismatched for some reason, perhaps because they ++ have been compiled for different processors or for different ++ endiannesses. This option tells `ld' that it should silently ++ permit such possible errors. This option should only be used with ++ care, in cases when you have taken some special action that ++ ensures that the linker errors are inappropriate. ++ ++`--no-whole-archive' ++ Turn off the effect of the `--whole-archive' option for subsequent ++ archive files. ++ ++`--noinhibit-exec' ++ Retain the executable output file whenever it is still usable. ++ Normally, the linker will not produce an output file if it ++ encounters errors during the link process; it exits without ++ writing an output file when it issues any error whatsoever. ++ ++`-nostdlib' ++ Only search library directories explicitly specified on the ++ command line. Library directories specified in linker scripts ++ (including linker scripts specified on the command line) are ++ ignored. ++ ++`--oformat OUTPUT-FORMAT' ++ `ld' may be configured to support more than one kind of object ++ file. If your `ld' is configured this way, you can use the ++ `--oformat' option to specify the binary format for the output ++ object file. Even when `ld' is configured to support alternative ++ object formats, you don't usually need to specify this, as `ld' ++ should be configured to produce as a default output format the most ++ usual format on each machine. OUTPUT-FORMAT is a text string, the ++ name of a particular format supported by the BFD libraries. (You ++ can list the available binary formats with `objdump -i'.) The ++ script command `OUTPUT_FORMAT' can also specify the output format, ++ but this option overrides it. *Note BFD::. ++ ++`-pie' ++`--pic-executable' ++ Create a position independent executable. This is currently only ++ supported on ELF platforms. Position independent executables are ++ similar to shared libraries in that they are relocated by the ++ dynamic linker to the virtual address the OS chooses for them ++ (which can vary between invocations). Like normal dynamically ++ linked executables they can be executed and symbols defined in the ++ executable cannot be overridden by shared libraries. ++ ++`-qmagic' ++ This option is ignored for Linux compatibility. ++ ++`-Qy' ++ This option is ignored for SVR4 compatibility. ++ ++`--relax' ++ An option with machine dependent effects. This option is only ++ supported on a few targets. *Note `ld' and the H8/300: H8/300. ++ *Note `ld' and the Intel 960 family: i960. *Note `ld' and Xtensa ++ Processors: Xtensa. *Note `ld' and PowerPC 32-bit ELF Support: ++ PowerPC ELF32. ++ ++ On some platforms, the `--relax' option performs global ++ optimizations that become possible when the linker resolves ++ addressing in the program, such as relaxing address modes and ++ synthesizing new instructions in the output object file. ++ ++ On some platforms these link time global optimizations may make ++ symbolic debugging of the resulting executable impossible. This ++ is known to be the case for the Matsushita MN10200 and MN10300 ++ family of processors. ++ ++ On platforms where this is not supported, `--relax' is accepted, ++ but ignored. ++ ++`--retain-symbols-file FILENAME' ++ Retain _only_ the symbols listed in the file FILENAME, discarding ++ all others. FILENAME is simply a flat file, with one symbol name ++ per line. This option is especially useful in environments (such ++ as VxWorks) where a large global symbol table is accumulated ++ gradually, to conserve run-time memory. ++ ++ `--retain-symbols-file' does _not_ discard undefined symbols, or ++ symbols needed for relocations. ++ ++ You may only specify `--retain-symbols-file' once in the command ++ line. It overrides `-s' and `-S'. ++ ++`-rpath DIR' ++ Add a directory to the runtime library search path. This is used ++ when linking an ELF executable with shared objects. All `-rpath' ++ arguments are concatenated and passed to the runtime linker, which ++ uses them to locate shared objects at runtime. The `-rpath' ++ option is also used when locating shared objects which are needed ++ by shared objects explicitly included in the link; see the ++ description of the `-rpath-link' option. If `-rpath' is not used ++ when linking an ELF executable, the contents of the environment ++ variable `LD_RUN_PATH' will be used if it is defined. ++ ++ The `-rpath' option may also be used on SunOS. By default, on ++ SunOS, the linker will form a runtime search patch out of all the ++ `-L' options it is given. If a `-rpath' option is used, the ++ runtime search path will be formed exclusively using the `-rpath' ++ options, ignoring the `-L' options. This can be useful when using ++ gcc, which adds many `-L' options which may be on NFS mounted ++ filesystems. ++ ++ For compatibility with other ELF linkers, if the `-R' option is ++ followed by a directory name, rather than a file name, it is ++ treated as the `-rpath' option. ++ ++`-rpath-link DIR' ++ When using ELF or SunOS, one shared library may require another. ++ This happens when an `ld -shared' link includes a shared library ++ as one of the input files. ++ ++ When the linker encounters such a dependency when doing a ++ non-shared, non-relocatable link, it will automatically try to ++ locate the required shared library and include it in the link, if ++ it is not included explicitly. In such a case, the `-rpath-link' ++ option specifies the first set of directories to search. The ++ `-rpath-link' option may specify a sequence of directory names ++ either by specifying a list of names separated by colons, or by ++ appearing multiple times. ++ ++ This option should be used with caution as it overrides the search ++ path that may have been hard compiled into a shared library. In ++ such a case it is possible to use unintentionally a different ++ search path than the runtime linker would do. ++ ++ The linker uses the following search paths to locate required ++ shared libraries. ++ 1. Any directories specified by `-rpath-link' options. ++ ++ 2. Any directories specified by `-rpath' options. The difference ++ between `-rpath' and `-rpath-link' is that directories ++ specified by `-rpath' options are included in the executable ++ and used at runtime, whereas the `-rpath-link' option is only ++ effective at link time. It is for the native linker only. ++ ++ 3. On an ELF system, if the `-rpath' and `rpath-link' options ++ were not used, search the contents of the environment variable ++ `LD_RUN_PATH'. It is for the native linker only. ++ ++ 4. On SunOS, if the `-rpath' option was not used, search any ++ directories specified using `-L' options. ++ ++ 5. For a native linker, the contents of the environment variable ++ `LD_LIBRARY_PATH'. ++ ++ 6. For a native ELF linker, the directories in `DT_RUNPATH' or ++ `DT_RPATH' of a shared library are searched for shared ++ libraries needed by it. The `DT_RPATH' entries are ignored if ++ `DT_RUNPATH' entries exist. ++ ++ 7. The default directories, normally `/lib' and `/usr/lib'. ++ ++ 8. For a native linker on an ELF system, if the file ++ `/etc/ld.so.conf' exists, the list of directories found in ++ that file. ++ ++ If the required shared library is not found, the linker will issue ++ a warning and continue with the link. ++ ++`-shared' ++`-Bshareable' ++ Create a shared library. This is currently only supported on ELF, ++ XCOFF and SunOS platforms. On SunOS, the linker will ++ automatically create a shared library if the `-e' option is not ++ used and there are undefined symbols in the link. ++ ++`--sort-common' ++ This option tells `ld' to sort the common symbols by size when it ++ places them in the appropriate output sections. First come all ++ the one byte symbols, then all the two byte, then all the four ++ byte, and then everything else. This is to prevent gaps between ++ symbols due to alignment constraints. ++ ++`--sort-section name' ++ This option will apply `SORT_BY_NAME' to all wildcard section ++ patterns in the linker script. ++ ++`--sort-section alignment' ++ This option will apply `SORT_BY_ALIGNMENT' to all wildcard section ++ patterns in the linker script. ++ ++`--split-by-file [SIZE]' ++ Similar to `--split-by-reloc' but creates a new output section for ++ each input file when SIZE is reached. SIZE defaults to a size of ++ 1 if not given. ++ ++`--split-by-reloc [COUNT]' ++ Tries to creates extra sections in the output file so that no ++ single output section in the file contains more than COUNT ++ relocations. This is useful when generating huge relocatable ++ files for downloading into certain real time kernels with the COFF ++ object file format; since COFF cannot represent more than 65535 ++ relocations in a single section. Note that this will fail to work ++ with object file formats which do not support arbitrary sections. ++ The linker will not split up individual input sections for ++ redistribution, so if a single input section contains more than ++ COUNT relocations one output section will contain that many ++ relocations. COUNT defaults to a value of 32768. ++ ++`--stats' ++ Compute and display statistics about the operation of the linker, ++ such as execution time and memory usage. ++ ++`--sysroot=DIRECTORY' ++ Use DIRECTORY as the location of the sysroot, overriding the ++ configure-time default. This option is only supported by linkers ++ that were configured using `--with-sysroot'. ++ ++`--traditional-format' ++ For some targets, the output of `ld' is different in some ways from ++ the output of some existing linker. This switch requests `ld' to ++ use the traditional format instead. ++ ++ For example, on SunOS, `ld' combines duplicate entries in the ++ symbol string table. This can reduce the size of an output file ++ with full debugging information by over 30 percent. ++ Unfortunately, the SunOS `dbx' program can not read the resulting ++ program (`gdb' has no trouble). The `--traditional-format' switch ++ tells `ld' to not combine duplicate entries. ++ ++`--section-start SECTIONNAME=ORG' ++ Locate a section in the output file at the absolute address given ++ by ORG. You may use this option as many times as necessary to ++ locate multiple sections in the command line. ORG must be a ++ single hexadecimal integer; for compatibility with other linkers, ++ you may omit the leading `0x' usually associated with hexadecimal ++ values. _Note:_ there should be no white space between ++ SECTIONNAME, the equals sign ("<=>"), and ORG. ++ ++`-Tbss ORG' ++`-Tdata ORG' ++`-Ttext ORG' ++ Same as -section-start, with `.bss', `.data' or `.text' as the ++ SECTIONNAME. ++ ++`--unresolved-symbols=METHOD' ++ Determine how to handle unresolved symbols. There are four ++ possible values for `method': ++ ++ `ignore-all' ++ Do not report any unresolved symbols. ++ ++ `report-all' ++ Report all unresolved symbols. This is the default. ++ ++ `ignore-in-object-files' ++ Report unresolved symbols that are contained in shared ++ libraries, but ignore them if they come from regular object ++ files. ++ ++ `ignore-in-shared-libs' ++ Report unresolved symbols that come from regular object ++ files, but ignore them if they come from shared libraries. ++ This can be useful when creating a dynamic binary and it is ++ known that all the shared libraries that it should be ++ referencing are included on the linker's command line. ++ ++ The behaviour for shared libraries on their own can also be ++ controlled by the `--[no-]allow-shlib-undefined' option. ++ ++ Normally the linker will generate an error message for each ++ reported unresolved symbol but the option ++ `--warn-unresolved-symbols' can change this to a warning. ++ ++`--dll-verbose' ++`--verbose' ++ Display the version number for `ld' and list the linker emulations ++ supported. Display which input files can and cannot be opened. ++ Display the linker script being used by the linker. ++ ++`--version-script=VERSION-SCRIPTFILE' ++ Specify the name of a version script to the linker. This is ++ typically used when creating shared libraries to specify ++ additional information about the version hierarchy for the library ++ being created. This option is only meaningful on ELF platforms ++ which support shared libraries. *Note VERSION::. ++ ++`--warn-common' ++ Warn when a common symbol is combined with another common symbol ++ or with a symbol definition. Unix linkers allow this somewhat ++ sloppy practise, but linkers on some other operating systems do ++ not. This option allows you to find potential problems from ++ combining global symbols. Unfortunately, some C libraries use ++ this practise, so you may get some warnings about symbols in the ++ libraries as well as in your programs. ++ ++ There are three kinds of global symbols, illustrated here by C ++ examples: ++ ++ `int i = 1;' ++ A definition, which goes in the initialized data section of ++ the output file. ++ ++ `extern int i;' ++ An undefined reference, which does not allocate space. There ++ must be either a definition or a common symbol for the ++ variable somewhere. ++ ++ `int i;' ++ A common symbol. If there are only (one or more) common ++ symbols for a variable, it goes in the uninitialized data ++ area of the output file. The linker merges multiple common ++ symbols for the same variable into a single symbol. If they ++ are of different sizes, it picks the largest size. The ++ linker turns a common symbol into a declaration, if there is ++ a definition of the same variable. ++ ++ The `--warn-common' option can produce five kinds of warnings. ++ Each warning consists of a pair of lines: the first describes the ++ symbol just encountered, and the second describes the previous ++ symbol encountered with the same name. One or both of the two ++ symbols will be a common symbol. ++ ++ 1. Turning a common symbol into a reference, because there is ++ already a definition for the symbol. ++ FILE(SECTION): warning: common of `SYMBOL' ++ overridden by definition ++ FILE(SECTION): warning: defined here ++ ++ 2. Turning a common symbol into a reference, because a later ++ definition for the symbol is encountered. This is the same ++ as the previous case, except that the symbols are encountered ++ in a different order. ++ FILE(SECTION): warning: definition of `SYMBOL' ++ overriding common ++ FILE(SECTION): warning: common is here ++ ++ 3. Merging a common symbol with a previous same-sized common ++ symbol. ++ FILE(SECTION): warning: multiple common ++ of `SYMBOL' ++ FILE(SECTION): warning: previous common is here ++ ++ 4. Merging a common symbol with a previous larger common symbol. ++ FILE(SECTION): warning: common of `SYMBOL' ++ overridden by larger common ++ FILE(SECTION): warning: larger common is here ++ ++ 5. Merging a common symbol with a previous smaller common ++ symbol. This is the same as the previous case, except that ++ the symbols are encountered in a different order. ++ FILE(SECTION): warning: common of `SYMBOL' ++ overriding smaller common ++ FILE(SECTION): warning: smaller common is here ++ ++`--warn-constructors' ++ Warn if any global constructors are used. This is only useful for ++ a few object file formats. For formats like COFF or ELF, the ++ linker can not detect the use of global constructors. ++ ++`--warn-multiple-gp' ++ Warn if multiple global pointer values are required in the output ++ file. This is only meaningful for certain processors, such as the ++ Alpha. Specifically, some processors put large-valued constants ++ in a special section. A special register (the global pointer) ++ points into the middle of this section, so that constants can be ++ loaded efficiently via a base-register relative addressing mode. ++ Since the offset in base-register relative mode is fixed and ++ relatively small (e.g., 16 bits), this limits the maximum size of ++ the constant pool. Thus, in large programs, it is often necessary ++ to use multiple global pointer values in order to be able to ++ address all possible constants. This option causes a warning to ++ be issued whenever this case occurs. ++ ++`--warn-once' ++ Only warn once for each undefined symbol, rather than once per ++ module which refers to it. ++ ++`--warn-section-align' ++ Warn if the address of an output section is changed because of ++ alignment. Typically, the alignment will be set by an input ++ section. The address will only be changed if it not explicitly ++ specified; that is, if the `SECTIONS' command does not specify a ++ start address for the section (*note SECTIONS::). ++ ++`--warn-shared-textrel' ++ Warn if the linker adds a DT_TEXTREL to a shared object. ++ ++`--warn-unresolved-symbols' ++ If the linker is going to report an unresolved symbol (see the ++ option `--unresolved-symbols') it will normally generate an error. ++ This option makes it generate a warning instead. ++ ++`--error-unresolved-symbols' ++ This restores the linker's default behaviour of generating errors ++ when it is reporting unresolved symbols. ++ ++`--whole-archive' ++ For each archive mentioned on the command line after the ++ `--whole-archive' option, include every object file in the archive ++ in the link, rather than searching the archive for the required ++ object files. This is normally used to turn an archive file into ++ a shared library, forcing every object to be included in the ++ resulting shared library. This option may be used more than once. ++ ++ Two notes when using this option from gcc: First, gcc doesn't know ++ about this option, so you have to use `-Wl,-whole-archive'. ++ Second, don't forget to use `-Wl,-no-whole-archive' after your ++ list of archives, because gcc will add its own list of archives to ++ your link and you may not want this flag to affect those as well. ++ ++`--wrap SYMBOL' ++ Use a wrapper function for SYMBOL. Any undefined reference to ++ SYMBOL will be resolved to `__wrap_SYMBOL'. Any undefined ++ reference to `__real_SYMBOL' will be resolved to SYMBOL. ++ ++ This can be used to provide a wrapper for a system function. The ++ wrapper function should be called `__wrap_SYMBOL'. If it wishes ++ to call the system function, it should call `__real_SYMBOL'. ++ ++ Here is a trivial example: ++ ++ void * ++ __wrap_malloc (size_t c) ++ { ++ printf ("malloc called with %zu\n", c); ++ return __real_malloc (c); ++ } ++ ++ If you link other code with this file using `--wrap malloc', then ++ all calls to `malloc' will call the function `__wrap_malloc' ++ instead. The call to `__real_malloc' in `__wrap_malloc' will call ++ the real `malloc' function. ++ ++ You may wish to provide a `__real_malloc' function as well, so that ++ links without the `--wrap' option will succeed. If you do this, ++ you should not put the definition of `__real_malloc' in the same ++ file as `__wrap_malloc'; if you do, the assembler may resolve the ++ call before the linker has a chance to wrap it to `malloc'. ++ ++`--eh-frame-hdr' ++ Request creation of `.eh_frame_hdr' section and ELF ++ `PT_GNU_EH_FRAME' segment header. ++ ++`--enable-new-dtags' ++`--disable-new-dtags' ++ This linker can create the new dynamic tags in ELF. But the older ++ ELF systems may not understand them. If you specify ++ `--enable-new-dtags', the dynamic tags will be created as needed. ++ If you specify `--disable-new-dtags', no new dynamic tags will be ++ created. By default, the new dynamic tags are not created. Note ++ that those options are only available for ELF systems. ++ ++`--hash-size=NUMBER' ++ Set the default size of the linker's hash tables to a prime number ++ close to NUMBER. Increasing this value can reduce the length of ++ time it takes the linker to perform its tasks, at the expense of ++ increasing the linker's memory requirements. Similarly reducing ++ this value can reduce the memory requirements at the expense of ++ speed. ++ ++`--reduce-memory-overheads' ++ This option reduces memory requirements at ld runtime, at the ++ expense of linking speed. This was introduced to select the old ++ O(n^2) algorithm for link map file generation, rather than the new ++ O(n) algorithm which uses about 40% more memory for symbol storage. ++ ++ Another effect of the switch is to set the default hash table size ++ to 1021, which again saves memory at the cost of lengthening the ++ linker's run time. This is not done however if the `--hash-size' ++ switch has been used. ++ ++ The `--reduce-memory-overheads' switch may be also be used to ++ enable other tradeoffs in future versions of the linker. ++ ++ ++2.1.1 Options Specific to i386 PE Targets ++----------------------------------------- ++ ++The i386 PE linker supports the `-shared' option, which causes the ++output to be a dynamically linked library (DLL) instead of a normal ++executable. You should name the output `*.dll' when you use this ++option. In addition, the linker fully supports the standard `*.def' ++files, which may be specified on the linker command line like an object ++file (in fact, it should precede archives it exports symbols from, to ++ensure that they get linked in, just like a normal object file). ++ ++ In addition to the options common to all targets, the i386 PE linker ++support additional command line options that are specific to the i386 ++PE target. Options that take values may be separated from their values ++by either a space or an equals sign. ++ ++`--add-stdcall-alias' ++ If given, symbols with a stdcall suffix (@NN) will be exported ++ as-is and also with the suffix stripped. [This option is specific ++ to the i386 PE targeted port of the linker] ++ ++`--base-file FILE' ++ Use FILE as the name of a file in which to save the base addresses ++ of all the relocations needed for generating DLLs with `dlltool'. ++ [This is an i386 PE specific option] ++ ++`--dll' ++ Create a DLL instead of a regular executable. You may also use ++ `-shared' or specify a `LIBRARY' in a given `.def' file. [This ++ option is specific to the i386 PE targeted port of the linker] ++ ++`--enable-stdcall-fixup' ++`--disable-stdcall-fixup' ++ If the link finds a symbol that it cannot resolve, it will attempt ++ to do "fuzzy linking" by looking for another defined symbol that ++ differs only in the format of the symbol name (cdecl vs stdcall) ++ and will resolve that symbol by linking to the match. For ++ example, the undefined symbol `_foo' might be linked to the ++ function `_foo@12', or the undefined symbol `_bar@16' might be ++ linked to the function `_bar'. When the linker does this, it ++ prints a warning, since it normally should have failed to link, ++ but sometimes import libraries generated from third-party dlls may ++ need this feature to be usable. If you specify ++ `--enable-stdcall-fixup', this feature is fully enabled and ++ warnings are not printed. If you specify ++ `--disable-stdcall-fixup', this feature is disabled and such ++ mismatches are considered to be errors. [This option is specific ++ to the i386 PE targeted port of the linker] ++ ++`--export-all-symbols' ++ If given, all global symbols in the objects used to build a DLL ++ will be exported by the DLL. Note that this is the default if ++ there otherwise wouldn't be any exported symbols. When symbols are ++ explicitly exported via DEF files or implicitly exported via ++ function attributes, the default is to not export anything else ++ unless this option is given. Note that the symbols `DllMain@12', ++ `DllEntryPoint@0', `DllMainCRTStartup@12', and `impure_ptr' will ++ not be automatically exported. Also, symbols imported from other ++ DLLs will not be re-exported, nor will symbols specifying the ++ DLL's internal layout such as those beginning with `_head_' or ++ ending with `_iname'. In addition, no symbols from `libgcc', ++ `libstd++', `libmingw32', or `crtX.o' will be exported. Symbols ++ whose names begin with `__rtti_' or `__builtin_' will not be ++ exported, to help with C++ DLLs. Finally, there is an extensive ++ list of cygwin-private symbols that are not exported (obviously, ++ this applies on when building DLLs for cygwin targets). These ++ cygwin-excludes are: `_cygwin_dll_entry@12', ++ `_cygwin_crt0_common@8', `_cygwin_noncygwin_dll_entry@12', ++ `_fmode', `_impure_ptr', `cygwin_attach_dll', `cygwin_premain0', ++ `cygwin_premain1', `cygwin_premain2', `cygwin_premain3', and ++ `environ'. [This option is specific to the i386 PE targeted port ++ of the linker] ++ ++`--exclude-symbols SYMBOL,SYMBOL,...' ++ Specifies a list of symbols which should not be automatically ++ exported. The symbol names may be delimited by commas or colons. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--file-alignment' ++ Specify the file alignment. Sections in the file will always ++ begin at file offsets which are multiples of this number. This ++ defaults to 512. [This option is specific to the i386 PE targeted ++ port of the linker] ++ ++`--heap RESERVE' ++`--heap RESERVE,COMMIT' ++ Specify the amount of memory to reserve (and optionally commit) to ++ be used as heap for this program. The default is 1Mb reserved, 4K ++ committed. [This option is specific to the i386 PE targeted port ++ of the linker] ++ ++`--image-base VALUE' ++ Use VALUE as the base address of your program or dll. This is the ++ lowest memory location that will be used when your program or dll ++ is loaded. To reduce the need to relocate and improve performance ++ of your dlls, each should have a unique base address and not ++ overlap any other dlls. The default is 0x400000 for executables, ++ and 0x10000000 for dlls. [This option is specific to the i386 PE ++ targeted port of the linker] ++ ++`--kill-at' ++ If given, the stdcall suffixes (@NN) will be stripped from symbols ++ before they are exported. [This option is specific to the i386 PE ++ targeted port of the linker] ++ ++`--large-address-aware' ++ If given, the appropriate bit in the "Charateristics" field of the ++ COFF header is set to indicate that this executable supports ++ virtual addresses greater than 2 gigabytes. This should be used ++ in conjuction with the /3GB or /USERVA=VALUE megabytes switch in ++ the "[operating systems]" section of the BOOT.INI. Otherwise, ++ this bit has no effect. [This option is specific to PE targeted ++ ports of the linker] ++ ++`--major-image-version VALUE' ++ Sets the major number of the "image version". Defaults to 1. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--major-os-version VALUE' ++ Sets the major number of the "os version". Defaults to 4. [This ++ option is specific to the i386 PE targeted port of the linker] ++ ++`--major-subsystem-version VALUE' ++ Sets the major number of the "subsystem version". Defaults to 4. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--minor-image-version VALUE' ++ Sets the minor number of the "image version". Defaults to 0. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--minor-os-version VALUE' ++ Sets the minor number of the "os version". Defaults to 0. [This ++ option is specific to the i386 PE targeted port of the linker] ++ ++`--minor-subsystem-version VALUE' ++ Sets the minor number of the "subsystem version". Defaults to 0. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--output-def FILE' ++ The linker will create the file FILE which will contain a DEF file ++ corresponding to the DLL the linker is generating. This DEF file ++ (which should be called `*.def') may be used to create an import ++ library with `dlltool' or may be used as a reference to ++ automatically or implicitly exported symbols. [This option is ++ specific to the i386 PE targeted port of the linker] ++ ++`--out-implib FILE' ++ The linker will create the file FILE which will contain an import ++ lib corresponding to the DLL the linker is generating. This import ++ lib (which should be called `*.dll.a' or `*.a' may be used to link ++ clients against the generated DLL; this behaviour makes it ++ possible to skip a separate `dlltool' import library creation step. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--enable-auto-image-base' ++ Automatically choose the image base for DLLs, unless one is ++ specified using the `--image-base' argument. By using a hash ++ generated from the dllname to create unique image bases for each ++ DLL, in-memory collisions and relocations which can delay program ++ execution are avoided. [This option is specific to the i386 PE ++ targeted port of the linker] ++ ++`--disable-auto-image-base' ++ Do not automatically generate a unique image base. If there is no ++ user-specified image base (`--image-base') then use the platform ++ default. [This option is specific to the i386 PE targeted port of ++ the linker] ++ ++`--dll-search-prefix STRING' ++ When linking dynamically to a dll without an import library, ++ search for `.dll' in preference to ++ `lib.dll'. This behaviour allows easy distinction ++ between DLLs built for the various "subplatforms": native, cygwin, ++ uwin, pw, etc. For instance, cygwin DLLs typically use ++ `--dll-search-prefix=cyg'. [This option is specific to the i386 ++ PE targeted port of the linker] ++ ++`--enable-auto-import' ++ Do sophisticated linking of `_symbol' to `__imp__symbol' for DATA ++ imports from DLLs, and create the necessary thunking symbols when ++ building the import libraries with those DATA exports. Note: Use ++ of the 'auto-import' extension will cause the text section of the ++ image file to be made writable. This does not conform to the ++ PE-COFF format specification published by Microsoft. ++ ++ Using 'auto-import' generally will 'just work' - but sometimes you ++ may see this message: ++ ++ "variable '' can't be auto-imported. Please read the ++ documentation for ld's `--enable-auto-import' for details." ++ ++ This message occurs when some (sub)expression accesses an address ++ ultimately given by the sum of two constants (Win32 import tables ++ only allow one). Instances where this may occur include accesses ++ to member fields of struct variables imported from a DLL, as well ++ as using a constant index into an array variable imported from a ++ DLL. Any multiword variable (arrays, structs, long long, etc) may ++ trigger this error condition. However, regardless of the exact ++ data type of the offending exported variable, ld will always ++ detect it, issue the warning, and exit. ++ ++ There are several ways to address this difficulty, regardless of ++ the data type of the exported variable: ++ ++ One way is to use -enable-runtime-pseudo-reloc switch. This leaves ++ the task of adjusting references in your client code for runtime ++ environment, so this method works only when runtime environment ++ supports this feature. ++ ++ A second solution is to force one of the 'constants' to be a ++ variable - that is, unknown and un-optimizable at compile time. ++ For arrays, there are two possibilities: a) make the indexee (the ++ array's address) a variable, or b) make the 'constant' index a ++ variable. Thus: ++ ++ extern type extern_array[]; ++ extern_array[1] --> ++ { volatile type *t=extern_array; t[1] } ++ ++ or ++ ++ extern type extern_array[]; ++ extern_array[1] --> ++ { volatile int t=1; extern_array[t] } ++ ++ For structs (and most other multiword data types) the only option ++ is to make the struct itself (or the long long, or the ...) ++ variable: ++ ++ extern struct s extern_struct; ++ extern_struct.field --> ++ { volatile struct s *t=&extern_struct; t->field } ++ ++ or ++ ++ extern long long extern_ll; ++ extern_ll --> ++ { volatile long long * local_ll=&extern_ll; *local_ll } ++ ++ A third method of dealing with this difficulty is to abandon ++ 'auto-import' for the offending symbol and mark it with ++ `__declspec(dllimport)'. However, in practise that requires using ++ compile-time #defines to indicate whether you are building a DLL, ++ building client code that will link to the DLL, or merely ++ building/linking to a static library. In making the choice ++ between the various methods of resolving the 'direct address with ++ constant offset' problem, you should consider typical real-world ++ usage: ++ ++ Original: ++ --foo.h ++ extern int arr[]; ++ --foo.c ++ #include "foo.h" ++ void main(int argc, char **argv){ ++ printf("%d\n",arr[1]); ++ } ++ ++ Solution 1: ++ --foo.h ++ extern int arr[]; ++ --foo.c ++ #include "foo.h" ++ void main(int argc, char **argv){ ++ /* This workaround is for win32 and cygwin; do not "optimize" */ ++ volatile int *parr = arr; ++ printf("%d\n",parr[1]); ++ } ++ ++ Solution 2: ++ --foo.h ++ /* Note: auto-export is assumed (no __declspec(dllexport)) */ ++ #if (defined(_WIN32) || defined(__CYGWIN__)) && \ ++ !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC)) ++ #define FOO_IMPORT __declspec(dllimport) ++ #else ++ #define FOO_IMPORT ++ #endif ++ extern FOO_IMPORT int arr[]; ++ --foo.c ++ #include "foo.h" ++ void main(int argc, char **argv){ ++ printf("%d\n",arr[1]); ++ } ++ ++ A fourth way to avoid this problem is to re-code your library to ++ use a functional interface rather than a data interface for the ++ offending variables (e.g. set_foo() and get_foo() accessor ++ functions). [This option is specific to the i386 PE targeted port ++ of the linker] ++ ++`--disable-auto-import' ++ Do not attempt to do sophisticated linking of `_symbol' to ++ `__imp__symbol' for DATA imports from DLLs. [This option is ++ specific to the i386 PE targeted port of the linker] ++ ++`--enable-runtime-pseudo-reloc' ++ If your code contains expressions described in -enable-auto-import ++ section, that is, DATA imports from DLL with non-zero offset, this ++ switch will create a vector of 'runtime pseudo relocations' which ++ can be used by runtime environment to adjust references to such ++ data in your client code. [This option is specific to the i386 PE ++ targeted port of the linker] ++ ++`--disable-runtime-pseudo-reloc' ++ Do not create pseudo relocations for non-zero offset DATA imports ++ from DLLs. This is the default. [This option is specific to the ++ i386 PE targeted port of the linker] ++ ++`--enable-extra-pe-debug' ++ Show additional debug info related to auto-import symbol thunking. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--section-alignment' ++ Sets the section alignment. Sections in memory will always begin ++ at addresses which are a multiple of this number. Defaults to ++ 0x1000. [This option is specific to the i386 PE targeted port of ++ the linker] ++ ++`--stack RESERVE' ++`--stack RESERVE,COMMIT' ++ Specify the amount of memory to reserve (and optionally commit) to ++ be used as stack for this program. The default is 2Mb reserved, 4K ++ committed. [This option is specific to the i386 PE targeted port ++ of the linker] ++ ++`--subsystem WHICH' ++`--subsystem WHICH:MAJOR' ++`--subsystem WHICH:MAJOR.MINOR' ++ Specifies the subsystem under which your program will execute. The ++ legal values for WHICH are `native', `windows', `console', ++ `posix', and `xbox'. You may optionally set the subsystem version ++ also. Numeric values are also accepted for WHICH. [This option ++ is specific to the i386 PE targeted port of the linker] ++ ++ ++ ++File: ld.info, Node: Environment, Prev: Options, Up: Invocation ++ ++2.2 Environment Variables ++========================= ++ ++You can change the behaviour of `ld' with the environment variables ++`GNUTARGET', `LDEMULATION' and `COLLECT_NO_DEMANGLE'. ++ ++ `GNUTARGET' determines the input-file object format if you don't use ++`-b' (or its synonym `--format'). Its value should be one of the BFD ++names for an input format (*note BFD::). If there is no `GNUTARGET' in ++the environment, `ld' uses the natural format of the target. If ++`GNUTARGET' is set to `default' then BFD attempts to discover the input ++format by examining binary input files; this method often succeeds, but ++there are potential ambiguities, since there is no method of ensuring ++that the magic number used to specify object-file formats is unique. ++However, the configuration procedure for BFD on each system places the ++conventional format for that system first in the search-list, so ++ambiguities are resolved in favor of convention. ++ ++ `LDEMULATION' determines the default emulation if you don't use the ++`-m' option. The emulation can affect various aspects of linker ++behaviour, particularly the default linker script. You can list the ++available emulations with the `--verbose' or `-V' options. If the `-m' ++option is not used, and the `LDEMULATION' environment variable is not ++defined, the default emulation depends upon how the linker was ++configured. ++ ++ Normally, the linker will default to demangling symbols. However, if ++`COLLECT_NO_DEMANGLE' is set in the environment, then it will default ++to not demangling symbols. This environment variable is used in a ++similar fashion by the `gcc' linker wrapper program. The default may ++be overridden by the `--demangle' and `--no-demangle' options. ++ ++ ++File: ld.info, Node: Scripts, Next: Machine Dependent, Prev: Invocation, Up: Top ++ ++3 Linker Scripts ++**************** ++ ++Every link is controlled by a "linker script". This script is written ++in the linker command language. ++ ++ The main purpose of the linker script is to describe how the ++sections in the input files should be mapped into the output file, and ++to control the memory layout of the output file. Most linker scripts ++do nothing more than this. However, when necessary, the linker script ++can also direct the linker to perform many other operations, using the ++commands described below. ++ ++ The linker always uses a linker script. If you do not supply one ++yourself, the linker will use a default script that is compiled into the ++linker executable. You can use the `--verbose' command line option to ++display the default linker script. Certain command line options, such ++as `-r' or `-N', will affect the default linker script. ++ ++ You may supply your own linker script by using the `-T' command line ++option. When you do this, your linker script will replace the default ++linker script. ++ ++ You may also use linker scripts implicitly by naming them as input ++files to the linker, as though they were files to be linked. *Note ++Implicit Linker Scripts::. ++ ++* Menu: ++ ++* Basic Script Concepts:: Basic Linker Script Concepts ++* Script Format:: Linker Script Format ++* Simple Example:: Simple Linker Script Example ++* Simple Commands:: Simple Linker Script Commands ++* Assignments:: Assigning Values to Symbols ++* SECTIONS:: SECTIONS Command ++* MEMORY:: MEMORY Command ++* PHDRS:: PHDRS Command ++* VERSION:: VERSION Command ++* Expressions:: Expressions in Linker Scripts ++* Implicit Linker Scripts:: Implicit Linker Scripts ++ ++ ++File: ld.info, Node: Basic Script Concepts, Next: Script Format, Up: Scripts ++ ++3.1 Basic Linker Script Concepts ++================================ ++ ++We need to define some basic concepts and vocabulary in order to ++describe the linker script language. ++ ++ The linker combines input files into a single output file. The ++output file and each input file are in a special data format known as an ++"object file format". Each file is called an "object file". The ++output file is often called an "executable", but for our purposes we ++will also call it an object file. Each object file has, among other ++things, a list of "sections". We sometimes refer to a section in an ++input file as an "input section"; similarly, a section in the output ++file is an "output section". ++ ++ Each section in an object file has a name and a size. Most sections ++also have an associated block of data, known as the "section contents". ++A section may be marked as "loadable", which mean that the contents ++should be loaded into memory when the output file is run. A section ++with no contents may be "allocatable", which means that an area in ++memory should be set aside, but nothing in particular should be loaded ++there (in some cases this memory must be zeroed out). A section which ++is neither loadable nor allocatable typically contains some sort of ++debugging information. ++ ++ Every loadable or allocatable output section has two addresses. The ++first is the "VMA", or virtual memory address. This is the address the ++section will have when the output file is run. The second is the ++"LMA", or load memory address. This is the address at which the ++section will be loaded. In most cases the two addresses will be the ++same. An example of when they might be different is when a data section ++is loaded into ROM, and then copied into RAM when the program starts up ++(this technique is often used to initialize global variables in a ROM ++based system). In this case the ROM address would be the LMA, and the ++RAM address would be the VMA. ++ ++ You can see the sections in an object file by using the `objdump' ++program with the `-h' option. ++ ++ Every object file also has a list of "symbols", known as the "symbol ++table". A symbol may be defined or undefined. Each symbol has a name, ++and each defined symbol has an address, among other information. If ++you compile a C or C++ program into an object file, you will get a ++defined symbol for every defined function and global or static ++variable. Every undefined function or global variable which is ++referenced in the input file will become an undefined symbol. ++ ++ You can see the symbols in an object file by using the `nm' program, ++or by using the `objdump' program with the `-t' option. ++ ++ ++File: ld.info, Node: Script Format, Next: Simple Example, Prev: Basic Script Concepts, Up: Scripts ++ ++3.2 Linker Script Format ++======================== ++ ++Linker scripts are text files. ++ ++ You write a linker script as a series of commands. Each command is ++either a keyword, possibly followed by arguments, or an assignment to a ++symbol. You may separate commands using semicolons. Whitespace is ++generally ignored. ++ ++ Strings such as file or format names can normally be entered ++directly. If the file name contains a character such as a comma which ++would otherwise serve to separate file names, you may put the file name ++in double quotes. There is no way to use a double quote character in a ++file name. ++ ++ You may include comments in linker scripts just as in C, delimited by ++`/*' and `*/'. As in C, comments are syntactically equivalent to ++whitespace. ++ ++ ++File: ld.info, Node: Simple Example, Next: Simple Commands, Prev: Script Format, Up: Scripts ++ ++3.3 Simple Linker Script Example ++================================ ++ ++Many linker scripts are fairly simple. ++ ++ The simplest possible linker script has just one command: ++`SECTIONS'. You use the `SECTIONS' command to describe the memory ++layout of the output file. ++ ++ The `SECTIONS' command is a powerful command. Here we will describe ++a simple use of it. Let's assume your program consists only of code, ++initialized data, and uninitialized data. These will be in the ++`.text', `.data', and `.bss' sections, respectively. Let's assume ++further that these are the only sections which appear in your input ++files. ++ ++ For this example, let's say that the code should be loaded at address ++0x10000, and that the data should start at address 0x8000000. Here is a ++linker script which will do that: ++ SECTIONS ++ { ++ . = 0x10000; ++ .text : { *(.text) } ++ . = 0x8000000; ++ .data : { *(.data) } ++ .bss : { *(.bss) } ++ } ++ ++ You write the `SECTIONS' command as the keyword `SECTIONS', followed ++by a series of symbol assignments and output section descriptions ++enclosed in curly braces. ++ ++ The first line inside the `SECTIONS' command of the above example ++sets the value of the special symbol `.', which is the location ++counter. If you do not specify the address of an output section in some ++other way (other ways are described later), the address is set from the ++current value of the location counter. The location counter is then ++incremented by the size of the output section. At the start of the ++`SECTIONS' command, the location counter has the value `0'. ++ ++ The second line defines an output section, `.text'. The colon is ++required syntax which may be ignored for now. Within the curly braces ++after the output section name, you list the names of the input sections ++which should be placed into this output section. The `*' is a wildcard ++which matches any file name. The expression `*(.text)' means all ++`.text' input sections in all input files. ++ ++ Since the location counter is `0x10000' when the output section ++`.text' is defined, the linker will set the address of the `.text' ++section in the output file to be `0x10000'. ++ ++ The remaining lines define the `.data' and `.bss' sections in the ++output file. The linker will place the `.data' output section at ++address `0x8000000'. After the linker places the `.data' output ++section, the value of the location counter will be `0x8000000' plus the ++size of the `.data' output section. The effect is that the linker will ++place the `.bss' output section immediately after the `.data' output ++section in memory. ++ ++ The linker will ensure that each output section has the required ++alignment, by increasing the location counter if necessary. In this ++example, the specified addresses for the `.text' and `.data' sections ++will probably satisfy any alignment constraints, but the linker may ++have to create a small gap between the `.data' and `.bss' sections. ++ ++ That's it! That's a simple and complete linker script. ++ ++ ++File: ld.info, Node: Simple Commands, Next: Assignments, Prev: Simple Example, Up: Scripts ++ ++3.4 Simple Linker Script Commands ++================================= ++ ++In this section we describe the simple linker script commands. ++ ++* Menu: ++ ++* Entry Point:: Setting the entry point ++* File Commands:: Commands dealing with files ++ ++* Format Commands:: Commands dealing with object file formats ++ ++* Miscellaneous Commands:: Other linker script commands ++ ++ ++File: ld.info, Node: Entry Point, Next: File Commands, Up: Simple Commands ++ ++3.4.1 Setting the Entry Point ++----------------------------- ++ ++The first instruction to execute in a program is called the "entry ++point". You can use the `ENTRY' linker script command to set the entry ++point. The argument is a symbol name: ++ ENTRY(SYMBOL) ++ ++ There are several ways to set the entry point. The linker will set ++the entry point by trying each of the following methods in order, and ++stopping when one of them succeeds: ++ * the `-e' ENTRY command-line option; ++ ++ * the `ENTRY(SYMBOL)' command in a linker script; ++ ++ * the value of the symbol `start', if defined; ++ ++ * the address of the first byte of the `.text' section, if present; ++ ++ * The address `0'. ++ ++ ++File: ld.info, Node: File Commands, Next: Format Commands, Prev: Entry Point, Up: Simple Commands ++ ++3.4.2 Commands Dealing with Files ++--------------------------------- ++ ++Several linker script commands deal with files. ++ ++`INCLUDE FILENAME' ++ Include the linker script FILENAME at this point. The file will ++ be searched for in the current directory, and in any directory ++ specified with the `-L' option. You can nest calls to `INCLUDE' ++ up to 10 levels deep. ++ ++`INPUT(FILE, FILE, ...)' ++`INPUT(FILE FILE ...)' ++ The `INPUT' command directs the linker to include the named files ++ in the link, as though they were named on the command line. ++ ++ For example, if you always want to include `subr.o' any time you do ++ a link, but you can't be bothered to put it on every link command ++ line, then you can put `INPUT (subr.o)' in your linker script. ++ ++ In fact, if you like, you can list all of your input files in the ++ linker script, and then invoke the linker with nothing but a `-T' ++ option. ++ ++ In case a "sysroot prefix" is configured, and the filename starts ++ with the `/' character, and the script being processed was located ++ inside the "sysroot prefix", the filename will be looked for in ++ the "sysroot prefix". Otherwise, the linker will try to open the ++ file in the current directory. If it is not found, the linker ++ will search through the archive library search path. See the ++ description of `-L' in *Note Command Line Options: Options. ++ ++ If you use `INPUT (-lFILE)', `ld' will transform the name to ++ `libFILE.a', as with the command line argument `-l'. ++ ++ When you use the `INPUT' command in an implicit linker script, the ++ files will be included in the link at the point at which the linker ++ script file is included. This can affect archive searching. ++ ++`GROUP(FILE, FILE, ...)' ++`GROUP(FILE FILE ...)' ++ The `GROUP' command is like `INPUT', except that the named files ++ should all be archives, and they are searched repeatedly until no ++ new undefined references are created. See the description of `-(' ++ in *Note Command Line Options: Options. ++ ++`AS_NEEDED(FILE, FILE, ...)' ++`AS_NEEDED(FILE FILE ...)' ++ This construct can appear only inside of the `INPUT' or `GROUP' ++ commands, among other filenames. The files listed will be handled ++ as if they appear directly in the `INPUT' or `GROUP' commands, ++ with the exception of ELF shared libraries, that will be added only ++ when they are actually needed. This construct essentially enables ++ `--as-needed' option for all the files listed inside of it and ++ restores previous `--as-needed' resp. `--no-as-needed' setting ++ afterwards. ++ ++`OUTPUT(FILENAME)' ++ The `OUTPUT' command names the output file. Using ++ `OUTPUT(FILENAME)' in the linker script is exactly like using `-o ++ FILENAME' on the command line (*note Command Line Options: ++ Options.). If both are used, the command line option takes ++ precedence. ++ ++ You can use the `OUTPUT' command to define a default name for the ++ output file other than the usual default of `a.out'. ++ ++`SEARCH_DIR(PATH)' ++ The `SEARCH_DIR' command adds PATH to the list of paths where `ld' ++ looks for archive libraries. Using `SEARCH_DIR(PATH)' is exactly ++ like using `-L PATH' on the command line (*note Command Line ++ Options: Options.). If both are used, then the linker will search ++ both paths. Paths specified using the command line option are ++ searched first. ++ ++`STARTUP(FILENAME)' ++ The `STARTUP' command is just like the `INPUT' command, except ++ that FILENAME will become the first input file to be linked, as ++ though it were specified first on the command line. This may be ++ useful when using a system in which the entry point is always the ++ start of the first file. ++ ++ ++File: ld.info, Node: Format Commands, Next: Miscellaneous Commands, Prev: File Commands, Up: Simple Commands ++ ++3.4.3 Commands Dealing with Object File Formats ++----------------------------------------------- ++ ++A couple of linker script commands deal with object file formats. ++ ++`OUTPUT_FORMAT(BFDNAME)' ++`OUTPUT_FORMAT(DEFAULT, BIG, LITTLE)' ++ The `OUTPUT_FORMAT' command names the BFD format to use for the ++ output file (*note BFD::). Using `OUTPUT_FORMAT(BFDNAME)' is ++ exactly like using `--oformat BFDNAME' on the command line (*note ++ Command Line Options: Options.). If both are used, the command ++ line option takes precedence. ++ ++ You can use `OUTPUT_FORMAT' with three arguments to use different ++ formats based on the `-EB' and `-EL' command line options. This ++ permits the linker script to set the output format based on the ++ desired endianness. ++ ++ If neither `-EB' nor `-EL' are used, then the output format will ++ be the first argument, DEFAULT. If `-EB' is used, the output ++ format will be the second argument, BIG. If `-EL' is used, the ++ output format will be the third argument, LITTLE. ++ ++ For example, the default linker script for the MIPS ELF target ++ uses this command: ++ OUTPUT_FORMAT(elf32-bigmips, elf32-bigmips, elf32-littlemips) ++ This says that the default format for the output file is ++ `elf32-bigmips', but if the user uses the `-EL' command line ++ option, the output file will be created in the `elf32-littlemips' ++ format. ++ ++`TARGET(BFDNAME)' ++ The `TARGET' command names the BFD format to use when reading input ++ files. It affects subsequent `INPUT' and `GROUP' commands. This ++ command is like using `-b BFDNAME' on the command line (*note ++ Command Line Options: Options.). If the `TARGET' command is used ++ but `OUTPUT_FORMAT' is not, then the last `TARGET' command is also ++ used to set the format for the output file. *Note BFD::. ++ ++ ++File: ld.info, Node: Miscellaneous Commands, Prev: Format Commands, Up: Simple Commands ++ ++3.4.4 Other Linker Script Commands ++---------------------------------- ++ ++There are a few other linker scripts commands. ++ ++`ASSERT(EXP, MESSAGE)' ++ Ensure that EXP is non-zero. If it is zero, then exit the linker ++ with an error code, and print MESSAGE. ++ ++`EXTERN(SYMBOL SYMBOL ...)' ++ Force SYMBOL to be entered in the output file as an undefined ++ symbol. Doing this may, for example, trigger linking of additional ++ modules from standard libraries. You may list several SYMBOLs for ++ each `EXTERN', and you may use `EXTERN' multiple times. This ++ command has the same effect as the `-u' command-line option. ++ ++`FORCE_COMMON_ALLOCATION' ++ This command has the same effect as the `-d' command-line option: ++ to make `ld' assign space to common symbols even if a relocatable ++ output file is specified (`-r'). ++ ++`INHIBIT_COMMON_ALLOCATION' ++ This command has the same effect as the `--no-define-common' ++ command-line option: to make `ld' omit the assignment of addresses ++ to common symbols even for a non-relocatable output file. ++ ++`NOCROSSREFS(SECTION SECTION ...)' ++ This command may be used to tell `ld' to issue an error about any ++ references among certain output sections. ++ ++ In certain types of programs, particularly on embedded systems when ++ using overlays, when one section is loaded into memory, another ++ section will not be. Any direct references between the two ++ sections would be errors. For example, it would be an error if ++ code in one section called a function defined in the other section. ++ ++ The `NOCROSSREFS' command takes a list of output section names. If ++ `ld' detects any cross references between the sections, it reports ++ an error and returns a non-zero exit status. Note that the ++ `NOCROSSREFS' command uses output section names, not input section ++ names. ++ ++`OUTPUT_ARCH(BFDARCH)' ++ Specify a particular output machine architecture. The argument is ++ one of the names used by the BFD library (*note BFD::). You can ++ see the architecture of an object file by using the `objdump' ++ program with the `-f' option. ++ ++ ++File: ld.info, Node: Assignments, Next: SECTIONS, Prev: Simple Commands, Up: Scripts ++ ++3.5 Assigning Values to Symbols ++=============================== ++ ++You may assign a value to a symbol in a linker script. This will define ++the symbol and place it into the symbol table with a global scope. ++ ++* Menu: ++ ++* Simple Assignments:: Simple Assignments ++* PROVIDE:: PROVIDE ++* PROVIDE_HIDDEN:: PROVIDE_HIDDEN ++* Source Code Reference:: How to use a linker script defined symbol in source code ++ ++ ++File: ld.info, Node: Simple Assignments, Next: PROVIDE, Up: Assignments ++ ++3.5.1 Simple Assignments ++------------------------ ++ ++You may assign to a symbol using any of the C assignment operators: ++ ++`SYMBOL = EXPRESSION ;' ++`SYMBOL += EXPRESSION ;' ++`SYMBOL -= EXPRESSION ;' ++`SYMBOL *= EXPRESSION ;' ++`SYMBOL /= EXPRESSION ;' ++`SYMBOL <<= EXPRESSION ;' ++`SYMBOL >>= EXPRESSION ;' ++`SYMBOL &= EXPRESSION ;' ++`SYMBOL |= EXPRESSION ;' ++ ++ The first case will define SYMBOL to the value of EXPRESSION. In ++the other cases, SYMBOL must already be defined, and the value will be ++adjusted accordingly. ++ ++ The special symbol name `.' indicates the location counter. You may ++only use this within a `SECTIONS' command. *Note Location Counter::. ++ ++ The semicolon after EXPRESSION is required. ++ ++ Expressions are defined below; see *Note Expressions::. ++ ++ You may write symbol assignments as commands in their own right, or ++as statements within a `SECTIONS' command, or as part of an output ++section description in a `SECTIONS' command. ++ ++ The section of the symbol will be set from the section of the ++expression; for more information, see *Note Expression Section::. ++ ++ Here is an example showing the three different places that symbol ++assignments may be used: ++ ++ floating_point = 0; ++ SECTIONS ++ { ++ .text : ++ { ++ *(.text) ++ _etext = .; ++ } ++ _bdata = (. + 3) & ~ 3; ++ .data : { *(.data) } ++ } ++ In this example, the symbol `floating_point' will be defined as ++zero. The symbol `_etext' will be defined as the address following the ++last `.text' input section. The symbol `_bdata' will be defined as the ++address following the `.text' output section aligned upward to a 4 byte ++boundary. ++ ++ ++File: ld.info, Node: PROVIDE, Next: PROVIDE_HIDDEN, Prev: Simple Assignments, Up: Assignments ++ ++3.5.2 PROVIDE ++------------- ++ ++In some cases, it is desirable for a linker script to define a symbol ++only if it is referenced and is not defined by any object included in ++the link. For example, traditional linkers defined the symbol `etext'. ++However, ANSI C requires that the user be able to use `etext' as a ++function name without encountering an error. The `PROVIDE' keyword may ++be used to define a symbol, such as `etext', only if it is referenced ++but not defined. The syntax is `PROVIDE(SYMBOL = EXPRESSION)'. ++ ++ Here is an example of using `PROVIDE' to define `etext': ++ SECTIONS ++ { ++ .text : ++ { ++ *(.text) ++ _etext = .; ++ PROVIDE(etext = .); ++ } ++ } ++ ++ In this example, if the program defines `_etext' (with a leading ++underscore), the linker will give a multiple definition error. If, on ++the other hand, the program defines `etext' (with no leading ++underscore), the linker will silently use the definition in the program. ++If the program references `etext' but does not define it, the linker ++will use the definition in the linker script. ++ ++ ++File: ld.info, Node: PROVIDE_HIDDEN, Next: Source Code Reference, Prev: PROVIDE, Up: Assignments ++ ++3.5.3 PROVIDE_HIDDEN ++-------------------- ++ ++Similar to `PROVIDE'. For ELF targeted ports, the symbol will be ++hidden and won't be exported. ++ ++ ++File: ld.info, Node: Source Code Reference, Prev: PROVIDE_HIDDEN, Up: Assignments ++ ++3.5.4 Source Code Reference ++--------------------------- ++ ++Accessing a linker script defined variable from source code is not ++intuitive. In particular a linker script symbol is not equivalent to a ++variable declaration in a high level language, it is instead a symbol ++that does not have a value. ++ ++ Before going further, it is important to note that compilers often ++transform names in the source code into different names when they are ++stored in the symbol table. For example, Fortran compilers commonly ++prepend or append an underscore, and C++ performs extensive `name ++mangling'. Therefore there might be a discrepancy between the name of ++a variable as it is used in source code and the name of the same ++variable as it is defined in a linker script. For example in C a ++linker script variable might be referred to as: ++ ++ extern int foo; ++ ++ But in the linker script it might be defined as: ++ ++ _foo = 1000; ++ ++ In the remaining examples however it is assumed that no name ++transformation has taken place. ++ ++ When a symbol is declared in a high level language such as C, two ++things happen. The first is that the compiler reserves enough space in ++the program's memory to hold the _value_ of the symbol. The second is ++that the compiler creates an entry in the program's symbol table which ++holds the symbol's _address_. ie the symbol table contains the address ++of the block of memory holding the symbol's value. So for example the ++following C declaration, at file scope: ++ ++ int foo = 1000; ++ ++ creates a entry called `foo' in the symbol table. This entry holds ++the address of an `int' sized block of memory where the number 1000 is ++initially stored. ++ ++ When a program references a symbol the compiler generates code that ++first accesses the symbol table to find the address of the symbol's ++memory block and then code to read the value from that memory block. ++So: ++ ++ foo = 1; ++ ++ looks up the symbol `foo' in the symbol table, gets the address ++associated with this symbol and then writes the value 1 into that ++address. Whereas: ++ ++ int * a = & foo; ++ ++ looks up the symbol `foo' in the symbol table, gets it address and ++then copies this address into the block of memory associated with the ++variable `a'. ++ ++ Linker scripts symbol declarations, by contrast, create an entry in ++the symbol table but do not assign any memory to them. Thus they are ++an address without a value. So for example the linker script ++definition: ++ ++ foo = 1000; ++ ++ creates an entry in the symbol table called `foo' which holds the ++address of memory location 1000, but nothing special is stored at ++address 1000. This means that you cannot access the _value_ of a ++linker script defined symbol - it has no value - all you can do is ++access the _address_ of a linker script defined symbol. ++ ++ Hence when you are using a linker script defined symbol in source ++code you should always take the address of the symbol, and never ++attempt to use its value. For example suppose you want to copy the ++contents of a section of memory called .ROM into a section called ++.FLASH and the linker script contains these declarations: ++ ++ start_of_ROM = .ROM; ++ end_of_ROM = .ROM + sizeof (.ROM) - 1; ++ start_of_FLASH = .FLASH; ++ ++ Then the C source code to perform the copy would be: ++ ++ extern char start_of_ROM, end_of_ROM, start_of_FLASH; ++ ++ memcpy (& start_of_FLASH, & start_of_ROM, & end_of_ROM - & start_of_ROM); ++ ++ Note the use of the `&' operators. These are correct. ++ ++ ++File: ld.info, Node: SECTIONS, Next: MEMORY, Prev: Assignments, Up: Scripts ++ ++3.6 SECTIONS Command ++==================== ++ ++The `SECTIONS' command tells the linker how to map input sections into ++output sections, and how to place the output sections in memory. ++ ++ The format of the `SECTIONS' command is: ++ SECTIONS ++ { ++ SECTIONS-COMMAND ++ SECTIONS-COMMAND ++ ... ++ } ++ ++ Each SECTIONS-COMMAND may of be one of the following: ++ ++ * an `ENTRY' command (*note Entry command: Entry Point.) ++ ++ * a symbol assignment (*note Assignments::) ++ ++ * an output section description ++ ++ * an overlay description ++ ++ The `ENTRY' command and symbol assignments are permitted inside the ++`SECTIONS' command for convenience in using the location counter in ++those commands. This can also make the linker script easier to ++understand because you can use those commands at meaningful points in ++the layout of the output file. ++ ++ Output section descriptions and overlay descriptions are described ++below. ++ ++ If you do not use a `SECTIONS' command in your linker script, the ++linker will place each input section into an identically named output ++section in the order that the sections are first encountered in the ++input files. If all input sections are present in the first file, for ++example, the order of sections in the output file will match the order ++in the first input file. The first section will be at address zero. ++ ++* Menu: ++ ++* Output Section Description:: Output section description ++* Output Section Name:: Output section name ++* Output Section Address:: Output section address ++* Input Section:: Input section description ++* Output Section Data:: Output section data ++* Output Section Keywords:: Output section keywords ++* Output Section Discarding:: Output section discarding ++* Output Section Attributes:: Output section attributes ++* Overlay Description:: Overlay description ++ ++ ++File: ld.info, Node: Output Section Description, Next: Output Section Name, Up: SECTIONS ++ ++3.6.1 Output Section Description ++-------------------------------- ++ ++The full description of an output section looks like this: ++ SECTION [ADDRESS] [(TYPE)] : ++ [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)] ++ { ++ OUTPUT-SECTION-COMMAND ++ OUTPUT-SECTION-COMMAND ++ ... ++ } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP] ++ ++ Most output sections do not use most of the optional section ++attributes. ++ ++ The whitespace around SECTION is required, so that the section name ++is unambiguous. The colon and the curly braces are also required. The ++line breaks and other white space are optional. ++ ++ Each OUTPUT-SECTION-COMMAND may be one of the following: ++ ++ * a symbol assignment (*note Assignments::) ++ ++ * an input section description (*note Input Section::) ++ ++ * data values to include directly (*note Output Section Data::) ++ ++ * a special output section keyword (*note Output Section Keywords::) ++ ++ ++File: ld.info, Node: Output Section Name, Next: Output Section Address, Prev: Output Section Description, Up: SECTIONS ++ ++3.6.2 Output Section Name ++------------------------- ++ ++The name of the output section is SECTION. SECTION must meet the ++constraints of your output format. In formats which only support a ++limited number of sections, such as `a.out', the name must be one of ++the names supported by the format (`a.out', for example, allows only ++`.text', `.data' or `.bss'). If the output format supports any number ++of sections, but with numbers and not names (as is the case for Oasys), ++the name should be supplied as a quoted numeric string. A section name ++may consist of any sequence of characters, but a name which contains ++any unusual characters such as commas must be quoted. ++ ++ The output section name `/DISCARD/' is special; *Note Output Section ++Discarding::. ++ ++ ++File: ld.info, Node: Output Section Address, Next: Input Section, Prev: Output Section Name, Up: SECTIONS ++ ++3.6.3 Output Section Address ++---------------------------- ++ ++The ADDRESS is an expression for the VMA (the virtual memory address) ++of the output section. If you do not provide ADDRESS, the linker will ++set it based on REGION if present, or otherwise based on the current ++value of the location counter. ++ ++ If you provide ADDRESS, the address of the output section will be ++set to precisely that. If you provide neither ADDRESS nor REGION, then ++the address of the output section will be set to the current value of ++the location counter aligned to the alignment requirements of the ++output section. The alignment requirement of the output section is the ++strictest alignment of any input section contained within the output ++section. ++ ++ For example, ++ .text . : { *(.text) } ++ and ++ .text : { *(.text) } ++ are subtly different. The first will set the address of the `.text' ++output section to the current value of the location counter. The ++second will set it to the current value of the location counter aligned ++to the strictest alignment of a `.text' input section. ++ ++ The ADDRESS may be an arbitrary expression; *Note Expressions::. ++For example, if you want to align the section on a 0x10 byte boundary, ++so that the lowest four bits of the section address are zero, you could ++do something like this: ++ .text ALIGN(0x10) : { *(.text) } ++ This works because `ALIGN' returns the current location counter ++aligned upward to the specified value. ++ ++ Specifying ADDRESS for a section will change the value of the ++location counter. ++ ++ ++File: ld.info, Node: Input Section, Next: Output Section Data, Prev: Output Section Address, Up: SECTIONS ++ ++3.6.4 Input Section Description ++------------------------------- ++ ++The most common output section command is an input section description. ++ ++ The input section description is the most basic linker script ++operation. You use output sections to tell the linker how to lay out ++your program in memory. You use input section descriptions to tell the ++linker how to map the input files into your memory layout. ++ ++* Menu: ++ ++* Input Section Basics:: Input section basics ++* Input Section Wildcards:: Input section wildcard patterns ++* Input Section Common:: Input section for common symbols ++* Input Section Keep:: Input section and garbage collection ++* Input Section Example:: Input section example ++ ++ ++File: ld.info, Node: Input Section Basics, Next: Input Section Wildcards, Up: Input Section ++ ++3.6.4.1 Input Section Basics ++............................ ++ ++An input section description consists of a file name optionally followed ++by a list of section names in parentheses. ++ ++ The file name and the section name may be wildcard patterns, which we ++describe further below (*note Input Section Wildcards::). ++ ++ The most common input section description is to include all input ++sections with a particular name in the output section. For example, to ++include all input `.text' sections, you would write: ++ *(.text) ++ Here the `*' is a wildcard which matches any file name. To exclude ++a list of files from matching the file name wildcard, EXCLUDE_FILE may ++be used to match all files except the ones specified in the ++EXCLUDE_FILE list. For example: ++ (*(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors)) ++ will cause all .ctors sections from all files except `crtend.o' and ++`otherfile.o' to be included. ++ ++ There are two ways to include more than one section: ++ *(.text .rdata) ++ *(.text) *(.rdata) ++ The difference between these is the order in which the `.text' and ++`.rdata' input sections will appear in the output section. In the ++first example, they will be intermingled, appearing in the same order as ++they are found in the linker input. In the second example, all `.text' ++input sections will appear first, followed by all `.rdata' input ++sections. ++ ++ You can specify a file name to include sections from a particular ++file. You would do this if one or more of your files contain special ++data that needs to be at a particular location in memory. For example: ++ data.o(.data) ++ ++ If you use a file name without a list of sections, then all sections ++in the input file will be included in the output section. This is not ++commonly done, but it may by useful on occasion. For example: ++ data.o ++ ++ When you use a file name which does not contain any wild card ++characters, the linker will first see if you also specified the file ++name on the linker command line or in an `INPUT' command. If you did ++not, the linker will attempt to open the file as an input file, as ++though it appeared on the command line. Note that this differs from an ++`INPUT' command, because the linker will not search for the file in the ++archive search path. ++ ++ ++File: ld.info, Node: Input Section Wildcards, Next: Input Section Common, Prev: Input Section Basics, Up: Input Section ++ ++3.6.4.2 Input Section Wildcard Patterns ++....................................... ++ ++In an input section description, either the file name or the section ++name or both may be wildcard patterns. ++ ++ The file name of `*' seen in many examples is a simple wildcard ++pattern for the file name. ++ ++ The wildcard patterns are like those used by the Unix shell. ++ ++`*' ++ matches any number of characters ++ ++`?' ++ matches any single character ++ ++`[CHARS]' ++ matches a single instance of any of the CHARS; the `-' character ++ may be used to specify a range of characters, as in `[a-z]' to ++ match any lower case letter ++ ++`\' ++ quotes the following character ++ ++ When a file name is matched with a wildcard, the wildcard characters ++will not match a `/' character (used to separate directory names on ++Unix). A pattern consisting of a single `*' character is an exception; ++it will always match any file name, whether it contains a `/' or not. ++In a section name, the wildcard characters will match a `/' character. ++ ++ File name wildcard patterns only match files which are explicitly ++specified on the command line or in an `INPUT' command. The linker ++does not search directories to expand wildcards. ++ ++ If a file name matches more than one wildcard pattern, or if a file ++name appears explicitly and is also matched by a wildcard pattern, the ++linker will use the first match in the linker script. For example, this ++sequence of input section descriptions is probably in error, because the ++`data.o' rule will not be used: ++ .data : { *(.data) } ++ .data1 : { data.o(.data) } ++ ++ Normally, the linker will place files and sections matched by ++wildcards in the order in which they are seen during the link. You can ++change this by using the `SORT_BY_NAME' keyword, which appears before a ++wildcard pattern in parentheses (e.g., `SORT_BY_NAME(.text*)'). When ++the `SORT_BY_NAME' keyword is used, the linker will sort the files or ++sections into ascending order by name before placing them in the output ++file. ++ ++ `SORT_BY_ALIGNMENT' is very similar to `SORT_BY_NAME'. The ++difference is `SORT_BY_ALIGNMENT' will sort sections into ascending ++order by alignment before placing them in the output file. ++ ++ `SORT' is an alias for `SORT_BY_NAME'. ++ ++ When there are nested section sorting commands in linker script, ++there can be at most 1 level of nesting for section sorting commands. ++ ++ 1. `SORT_BY_NAME' (`SORT_BY_ALIGNMENT' (wildcard section pattern)). ++ It will sort the input sections by name first, then by alignment ++ if 2 sections have the same name. ++ ++ 2. `SORT_BY_ALIGNMENT' (`SORT_BY_NAME' (wildcard section pattern)). ++ It will sort the input sections by alignment first, then by name ++ if 2 sections have the same alignment. ++ ++ 3. `SORT_BY_NAME' (`SORT_BY_NAME' (wildcard section pattern)) is ++ treated the same as `SORT_BY_NAME' (wildcard section pattern). ++ ++ 4. `SORT_BY_ALIGNMENT' (`SORT_BY_ALIGNMENT' (wildcard section ++ pattern)) is treated the same as `SORT_BY_ALIGNMENT' (wildcard ++ section pattern). ++ ++ 5. All other nested section sorting commands are invalid. ++ ++ When both command line section sorting option and linker script ++section sorting command are used, section sorting command always takes ++precedence over the command line option. ++ ++ If the section sorting command in linker script isn't nested, the ++command line option will make the section sorting command to be treated ++as nested sorting command. ++ ++ 1. `SORT_BY_NAME' (wildcard section pattern ) with `--sort-sections ++ alignment' is equivalent to `SORT_BY_NAME' (`SORT_BY_ALIGNMENT' ++ (wildcard section pattern)). ++ ++ 2. `SORT_BY_ALIGNMENT' (wildcard section pattern) with ++ `--sort-section name' is equivalent to `SORT_BY_ALIGNMENT' ++ (`SORT_BY_NAME' (wildcard section pattern)). ++ ++ If the section sorting command in linker script is nested, the ++command line option will be ignored. ++ ++ If you ever get confused about where input sections are going, use ++the `-M' linker option to generate a map file. The map file shows ++precisely how input sections are mapped to output sections. ++ ++ This example shows how wildcard patterns might be used to partition ++files. This linker script directs the linker to place all `.text' ++sections in `.text' and all `.bss' sections in `.bss'. The linker will ++place the `.data' section from all files beginning with an upper case ++character in `.DATA'; for all other files, the linker will place the ++`.data' section in `.data'. ++ SECTIONS { ++ .text : { *(.text) } ++ .DATA : { [A-Z]*(.data) } ++ .data : { *(.data) } ++ .bss : { *(.bss) } ++ } ++ ++ ++File: ld.info, Node: Input Section Common, Next: Input Section Keep, Prev: Input Section Wildcards, Up: Input Section ++ ++3.6.4.3 Input Section for Common Symbols ++........................................ ++ ++A special notation is needed for common symbols, because in many object ++file formats common symbols do not have a particular input section. The ++linker treats common symbols as though they are in an input section ++named `COMMON'. ++ ++ You may use file names with the `COMMON' section just as with any ++other input sections. You can use this to place common symbols from a ++particular input file in one section while common symbols from other ++input files are placed in another section. ++ ++ In most cases, common symbols in input files will be placed in the ++`.bss' section in the output file. For example: ++ .bss { *(.bss) *(COMMON) } ++ ++ Some object file formats have more than one type of common symbol. ++For example, the MIPS ELF object file format distinguishes standard ++common symbols and small common symbols. In this case, the linker will ++use a different special section name for other types of common symbols. ++In the case of MIPS ELF, the linker uses `COMMON' for standard common ++symbols and `.scommon' for small common symbols. This permits you to ++map the different types of common symbols into memory at different ++locations. ++ ++ You will sometimes see `[COMMON]' in old linker scripts. This ++notation is now considered obsolete. It is equivalent to `*(COMMON)'. ++ ++ ++File: ld.info, Node: Input Section Keep, Next: Input Section Example, Prev: Input Section Common, Up: Input Section ++ ++3.6.4.4 Input Section and Garbage Collection ++............................................ ++ ++When link-time garbage collection is in use (`--gc-sections'), it is ++often useful to mark sections that should not be eliminated. This is ++accomplished by surrounding an input section's wildcard entry with ++`KEEP()', as in `KEEP(*(.init))' or `KEEP(SORT_BY_NAME(*)(.ctors))'. ++ ++ ++File: ld.info, Node: Input Section Example, Prev: Input Section Keep, Up: Input Section ++ ++3.6.4.5 Input Section Example ++............................. ++ ++The following example is a complete linker script. It tells the linker ++to read all of the sections from file `all.o' and place them at the ++start of output section `outputa' which starts at location `0x10000'. ++All of section `.input1' from file `foo.o' follows immediately, in the ++same output section. All of section `.input2' from `foo.o' goes into ++output section `outputb', followed by section `.input1' from `foo1.o'. ++All of the remaining `.input1' and `.input2' sections from any files ++are written to output section `outputc'. ++ ++ SECTIONS { ++ outputa 0x10000 : ++ { ++ all.o ++ foo.o (.input1) ++ } ++ outputb : ++ { ++ foo.o (.input2) ++ foo1.o (.input1) ++ } ++ outputc : ++ { ++ *(.input1) ++ *(.input2) ++ } ++ } ++ ++ ++File: ld.info, Node: Output Section Data, Next: Output Section Keywords, Prev: Input Section, Up: SECTIONS ++ ++3.6.5 Output Section Data ++------------------------- ++ ++You can include explicit bytes of data in an output section by using ++`BYTE', `SHORT', `LONG', `QUAD', or `SQUAD' as an output section ++command. Each keyword is followed by an expression in parentheses ++providing the value to store (*note Expressions::). The value of the ++expression is stored at the current value of the location counter. ++ ++ The `BYTE', `SHORT', `LONG', and `QUAD' commands store one, two, ++four, and eight bytes (respectively). After storing the bytes, the ++location counter is incremented by the number of bytes stored. ++ ++ For example, this will store the byte 1 followed by the four byte ++value of the symbol `addr': ++ BYTE(1) ++ LONG(addr) ++ ++ When using a 64 bit host or target, `QUAD' and `SQUAD' are the same; ++they both store an 8 byte, or 64 bit, value. When both host and target ++are 32 bits, an expression is computed as 32 bits. In this case `QUAD' ++stores a 32 bit value zero extended to 64 bits, and `SQUAD' stores a 32 ++bit value sign extended to 64 bits. ++ ++ If the object file format of the output file has an explicit ++endianness, which is the normal case, the value will be stored in that ++endianness. When the object file format does not have an explicit ++endianness, as is true of, for example, S-records, the value will be ++stored in the endianness of the first input object file. ++ ++ Note--these commands only work inside a section description and not ++between them, so the following will produce an error from the linker: ++ SECTIONS { .text : { *(.text) } LONG(1) .data : { *(.data) } } ++ whereas this will work: ++ SECTIONS { .text : { *(.text) ; LONG(1) } .data : { *(.data) } } ++ ++ You may use the `FILL' command to set the fill pattern for the ++current section. It is followed by an expression in parentheses. Any ++otherwise unspecified regions of memory within the section (for example, ++gaps left due to the required alignment of input sections) are filled ++with the value of the expression, repeated as necessary. A `FILL' ++statement covers memory locations after the point at which it occurs in ++the section definition; by including more than one `FILL' statement, ++you can have different fill patterns in different parts of an output ++section. ++ ++ This example shows how to fill unspecified regions of memory with the ++value `0x90': ++ FILL(0x90909090) ++ ++ The `FILL' command is similar to the `=FILLEXP' output section ++attribute, but it only affects the part of the section following the ++`FILL' command, rather than the entire section. If both are used, the ++`FILL' command takes precedence. *Note Output Section Fill::, for ++details on the fill expression. ++ ++ ++File: ld.info, Node: Output Section Keywords, Next: Output Section Discarding, Prev: Output Section Data, Up: SECTIONS ++ ++3.6.6 Output Section Keywords ++----------------------------- ++ ++There are a couple of keywords which can appear as output section ++commands. ++ ++`CREATE_OBJECT_SYMBOLS' ++ The command tells the linker to create a symbol for each input ++ file. The name of each symbol will be the name of the ++ corresponding input file. The section of each symbol will be the ++ output section in which the `CREATE_OBJECT_SYMBOLS' command ++ appears. ++ ++ This is conventional for the a.out object file format. It is not ++ normally used for any other object file format. ++ ++`CONSTRUCTORS' ++ When linking using the a.out object file format, the linker uses an ++ unusual set construct to support C++ global constructors and ++ destructors. When linking object file formats which do not support ++ arbitrary sections, such as ECOFF and XCOFF, the linker will ++ automatically recognize C++ global constructors and destructors by ++ name. For these object file formats, the `CONSTRUCTORS' command ++ tells the linker to place constructor information in the output ++ section where the `CONSTRUCTORS' command appears. The ++ `CONSTRUCTORS' command is ignored for other object file formats. ++ ++ The symbol `__CTOR_LIST__' marks the start of the global ++ constructors, and the symbol `__CTOR_END__' marks the end. ++ Similarly, `__DTOR_LIST__' and `__DTOR_END__' mark the start and ++ end of the global destructors. The first word in the list is the ++ number of entries, followed by the address of each constructor or ++ destructor, followed by a zero word. The compiler must arrange to ++ actually run the code. For these object file formats GNU C++ ++ normally calls constructors from a subroutine `__main'; a call to ++ `__main' is automatically inserted into the startup code for ++ `main'. GNU C++ normally runs destructors either by using ++ `atexit', or directly from the function `exit'. ++ ++ For object file formats such as `COFF' or `ELF' which support ++ arbitrary section names, GNU C++ will normally arrange to put the ++ addresses of global constructors and destructors into the `.ctors' ++ and `.dtors' sections. Placing the following sequence into your ++ linker script will build the sort of table which the GNU C++ ++ runtime code expects to see. ++ ++ __CTOR_LIST__ = .; ++ LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) ++ *(.ctors) ++ LONG(0) ++ __CTOR_END__ = .; ++ __DTOR_LIST__ = .; ++ LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) ++ *(.dtors) ++ LONG(0) ++ __DTOR_END__ = .; ++ ++ If you are using the GNU C++ support for initialization priority, ++ which provides some control over the order in which global ++ constructors are run, you must sort the constructors at link time ++ to ensure that they are executed in the correct order. When using ++ the `CONSTRUCTORS' command, use `SORT_BY_NAME(CONSTRUCTORS)' ++ instead. When using the `.ctors' and `.dtors' sections, use ++ `*(SORT_BY_NAME(.ctors))' and `*(SORT_BY_NAME(.dtors))' instead of ++ just `*(.ctors)' and `*(.dtors)'. ++ ++ Normally the compiler and linker will handle these issues ++ automatically, and you will not need to concern yourself with ++ them. However, you may need to consider this if you are using C++ ++ and writing your own linker scripts. ++ ++ ++ ++File: ld.info, Node: Output Section Discarding, Next: Output Section Attributes, Prev: Output Section Keywords, Up: SECTIONS ++ ++3.6.7 Output Section Discarding ++------------------------------- ++ ++The linker will not create output section which do not have any ++contents. This is for convenience when referring to input sections that ++may or may not be present in any of the input files. For example: ++ .foo { *(.foo) } ++ will only create a `.foo' section in the output file if there is a ++`.foo' section in at least one input file. ++ ++ If you use anything other than an input section description as an ++output section command, such as a symbol assignment, then the output ++section will always be created, even if there are no matching input ++sections. ++ ++ The special output section name `/DISCARD/' may be used to discard ++input sections. Any input sections which are assigned to an output ++section named `/DISCARD/' are not included in the output file. ++ ++ ++File: ld.info, Node: Output Section Attributes, Next: Overlay Description, Prev: Output Section Discarding, Up: SECTIONS ++ ++3.6.8 Output Section Attributes ++------------------------------- ++ ++We showed above that the full description of an output section looked ++like this: ++ SECTION [ADDRESS] [(TYPE)] : ++ [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)] ++ { ++ OUTPUT-SECTION-COMMAND ++ OUTPUT-SECTION-COMMAND ++ ... ++ } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP] ++We've already described SECTION, ADDRESS, and ++OUTPUT-SECTION-COMMAND. In this section we will describe the remaining ++section attributes. ++ ++* Menu: ++ ++* Output Section Type:: Output section type ++* Output Section LMA:: Output section LMA ++* Forced Output Alignment:: Forced Output Alignment ++* Forced Input Alignment:: Forced Input Alignment ++* Output Section Region:: Output section region ++* Output Section Phdr:: Output section phdr ++* Output Section Fill:: Output section fill ++ ++ ++File: ld.info, Node: Output Section Type, Next: Output Section LMA, Up: Output Section Attributes ++ ++3.6.8.1 Output Section Type ++........................... ++ ++Each output section may have a type. The type is a keyword in ++parentheses. The following types are defined: ++ ++`NOLOAD' ++ The section should be marked as not loadable, so that it will not ++ be loaded into memory when the program is run. ++ ++`DSECT' ++`COPY' ++`INFO' ++`OVERLAY' ++ These type names are supported for backward compatibility, and are ++ rarely used. They all have the same effect: the section should be ++ marked as not allocatable, so that no memory is allocated for the ++ section when the program is run. ++ ++ The linker normally sets the attributes of an output section based on ++the input sections which map into it. You can override this by using ++the section type. For example, in the script sample below, the `ROM' ++section is addressed at memory location `0' and does not need to be ++loaded when the program is run. The contents of the `ROM' section will ++appear in the linker output file as usual. ++ SECTIONS { ++ ROM 0 (NOLOAD) : { ... } ++ ... ++ } ++ ++ ++File: ld.info, Node: Output Section LMA, Next: Forced Output Alignment, Prev: Output Section Type, Up: Output Section Attributes ++ ++3.6.8.2 Output Section LMA ++.......................... ++ ++Every section has a virtual address (VMA) and a load address (LMA); see ++*Note Basic Script Concepts::. The address expression which may appear ++in an output section description sets the VMA (*note Output Section ++Address::). ++ ++ The linker will normally set the LMA equal to the VMA. You can ++change that by using the `AT' keyword. The expression LMA that follows ++the `AT' keyword specifies the load address of the section. ++ ++ Alternatively, with `AT>LMA_REGION' expression, you may specify a ++memory region for the section's load address. *Note MEMORY::. Note ++that if the section has not had a VMA assigned to it then the linker ++will use the LMA_REGION as the VMA region as well. *Note Output ++Section Region::. ++ ++ This feature is designed to make it easy to build a ROM image. For ++example, the following linker script creates three output sections: one ++called `.text', which starts at `0x1000', one called `.mdata', which is ++loaded at the end of the `.text' section even though its VMA is ++`0x2000', and one called `.bss' to hold uninitialized data at address ++`0x3000'. The symbol `_data' is defined with the value `0x2000', which ++shows that the location counter holds the VMA value, not the LMA value. ++ ++ SECTIONS ++ { ++ .text 0x1000 : { *(.text) _etext = . ; } ++ .mdata 0x2000 : ++ AT ( ADDR (.text) + SIZEOF (.text) ) ++ { _data = . ; *(.data); _edata = . ; } ++ .bss 0x3000 : ++ { _bstart = . ; *(.bss) *(COMMON) ; _bend = . ;} ++ } ++ ++ The run-time initialization code for use with a program generated ++with this linker script would include something like the following, to ++copy the initialized data from the ROM image to its runtime address. ++Notice how this code takes advantage of the symbols defined by the ++linker script. ++ ++ extern char _etext, _data, _edata, _bstart, _bend; ++ char *src = &_etext; ++ char *dst = &_data; ++ ++ /* ROM has data at end of text; copy it. */ ++ while (dst < &_edata) { ++ *dst++ = *src++; ++ } ++ ++ /* Zero bss */ ++ for (dst = &_bstart; dst< &_bend; dst++) ++ *dst = 0; ++ ++ ++File: ld.info, Node: Forced Output Alignment, Next: Forced Input Alignment, Prev: Output Section LMA, Up: Output Section Attributes ++ ++3.6.8.3 Forced Output Alignment ++............................... ++ ++You can increase an output section's alignment by using ALIGN. ++ ++ ++File: ld.info, Node: Forced Input Alignment, Next: Output Section Region, Prev: Forced Output Alignment, Up: Output Section Attributes ++ ++3.6.8.4 Forced Input Alignment ++.............................. ++ ++You can force input section alignment within an output section by using ++SUBALIGN. The value specified overrides any alignment given by input ++sections, whether larger or smaller. ++ ++ ++File: ld.info, Node: Output Section Region, Next: Output Section Phdr, Prev: Forced Input Alignment, Up: Output Section Attributes ++ ++3.6.8.5 Output Section Region ++............................. ++ ++You can assign a section to a previously defined region of memory by ++using `>REGION'. *Note MEMORY::. ++ ++ Here is a simple example: ++ MEMORY { rom : ORIGIN = 0x1000, LENGTH = 0x1000 } ++ SECTIONS { ROM : { *(.text) } >rom } ++ ++ ++File: ld.info, Node: Output Section Phdr, Next: Output Section Fill, Prev: Output Section Region, Up: Output Section Attributes ++ ++3.6.8.6 Output Section Phdr ++........................... ++ ++You can assign a section to a previously defined program segment by ++using `:PHDR'. *Note PHDRS::. If a section is assigned to one or more ++segments, then all subsequent allocated sections will be assigned to ++those segments as well, unless they use an explicitly `:PHDR' modifier. ++You can use `:NONE' to tell the linker to not put the section in any ++segment at all. ++ ++ Here is a simple example: ++ PHDRS { text PT_LOAD ; } ++ SECTIONS { .text : { *(.text) } :text } ++ ++ ++File: ld.info, Node: Output Section Fill, Prev: Output Section Phdr, Up: Output Section Attributes ++ ++3.6.8.7 Output Section Fill ++........................... ++ ++You can set the fill pattern for an entire section by using `=FILLEXP'. ++FILLEXP is an expression (*note Expressions::). Any otherwise ++unspecified regions of memory within the output section (for example, ++gaps left due to the required alignment of input sections) will be ++filled with the value, repeated as necessary. If the fill expression ++is a simple hex number, ie. a string of hex digit starting with `0x' ++and without a trailing `k' or `M', then an arbitrarily long sequence of ++hex digits can be used to specify the fill pattern; Leading zeros ++become part of the pattern too. For all other cases, including extra ++parentheses or a unary `+', the fill pattern is the four least ++significant bytes of the value of the expression. In all cases, the ++number is big-endian. ++ ++ You can also change the fill value with a `FILL' command in the ++output section commands; (*note Output Section Data::). ++ ++ Here is a simple example: ++ SECTIONS { .text : { *(.text) } =0x90909090 } ++ ++ ++File: ld.info, Node: Overlay Description, Prev: Output Section Attributes, Up: SECTIONS ++ ++3.6.9 Overlay Description ++------------------------- ++ ++An overlay description provides an easy way to describe sections which ++are to be loaded as part of a single memory image but are to be run at ++the same memory address. At run time, some sort of overlay manager will ++copy the overlaid sections in and out of the runtime memory address as ++required, perhaps by simply manipulating addressing bits. This approach ++can be useful, for example, when a certain region of memory is faster ++than another. ++ ++ Overlays are described using the `OVERLAY' command. The `OVERLAY' ++command is used within a `SECTIONS' command, like an output section ++description. The full syntax of the `OVERLAY' command is as follows: ++ OVERLAY [START] : [NOCROSSREFS] [AT ( LDADDR )] ++ { ++ SECNAME1 ++ { ++ OUTPUT-SECTION-COMMAND ++ OUTPUT-SECTION-COMMAND ++ ... ++ } [:PHDR...] [=FILL] ++ SECNAME2 ++ { ++ OUTPUT-SECTION-COMMAND ++ OUTPUT-SECTION-COMMAND ++ ... ++ } [:PHDR...] [=FILL] ++ ... ++ } [>REGION] [:PHDR...] [=FILL] ++ ++ Everything is optional except `OVERLAY' (a keyword), and each ++section must have a name (SECNAME1 and SECNAME2 above). The section ++definitions within the `OVERLAY' construct are identical to those ++within the general `SECTIONS' contruct (*note SECTIONS::), except that ++no addresses and no memory regions may be defined for sections within ++an `OVERLAY'. ++ ++ The sections are all defined with the same starting address. The ++load addresses of the sections are arranged such that they are ++consecutive in memory starting at the load address used for the ++`OVERLAY' as a whole (as with normal section definitions, the load ++address is optional, and defaults to the start address; the start ++address is also optional, and defaults to the current value of the ++location counter). ++ ++ If the `NOCROSSREFS' keyword is used, and there any references among ++the sections, the linker will report an error. Since the sections all ++run at the same address, it normally does not make sense for one ++section to refer directly to another. *Note NOCROSSREFS: Miscellaneous ++Commands. ++ ++ For each section within the `OVERLAY', the linker automatically ++defines two symbols. The symbol `__load_start_SECNAME' is defined as ++the starting load address of the section. The symbol ++`__load_stop_SECNAME' is defined as the final load address of the ++section. Any characters within SECNAME which are not legal within C ++identifiers are removed. C (or assembler) code may use these symbols ++to move the overlaid sections around as necessary. ++ ++ At the end of the overlay, the value of the location counter is set ++to the start address of the overlay plus the size of the largest ++section. ++ ++ Here is an example. Remember that this would appear inside a ++`SECTIONS' construct. ++ OVERLAY 0x1000 : AT (0x4000) ++ { ++ .text0 { o1/*.o(.text) } ++ .text1 { o2/*.o(.text) } ++ } ++This will define both `.text0' and `.text1' to start at address ++0x1000. `.text0' will be loaded at address 0x4000, and `.text1' will ++be loaded immediately after `.text0'. The following symbols will be ++defined: `__load_start_text0', `__load_stop_text0', ++`__load_start_text1', `__load_stop_text1'. ++ ++ C code to copy overlay `.text1' into the overlay area might look ++like the following. ++ ++ extern char __load_start_text1, __load_stop_text1; ++ memcpy ((char *) 0x1000, &__load_start_text1, ++ &__load_stop_text1 - &__load_start_text1); ++ ++ Note that the `OVERLAY' command is just syntactic sugar, since ++everything it does can be done using the more basic commands. The above ++example could have been written identically as follows. ++ ++ .text0 0x1000 : AT (0x4000) { o1/*.o(.text) } ++ __load_start_text0 = LOADADDR (.text0); ++ __load_stop_text0 = LOADADDR (.text0) + SIZEOF (.text0); ++ .text1 0x1000 : AT (0x4000 + SIZEOF (.text0)) { o2/*.o(.text) } ++ __load_start_text1 = LOADADDR (.text1); ++ __load_stop_text1 = LOADADDR (.text1) + SIZEOF (.text1); ++ . = 0x1000 + MAX (SIZEOF (.text0), SIZEOF (.text1)); ++ ++ ++File: ld.info, Node: MEMORY, Next: PHDRS, Prev: SECTIONS, Up: Scripts ++ ++3.7 MEMORY Command ++================== ++ ++The linker's default configuration permits allocation of all available ++memory. You can override this by using the `MEMORY' command. ++ ++ The `MEMORY' command describes the location and size of blocks of ++memory in the target. You can use it to describe which memory regions ++may be used by the linker, and which memory regions it must avoid. You ++can then assign sections to particular memory regions. The linker will ++set section addresses based on the memory regions, and will warn about ++regions that become too full. The linker will not shuffle sections ++around to fit into the available regions. ++ ++ A linker script may contain at most one use of the `MEMORY' command. ++However, you can define as many blocks of memory within it as you ++wish. The syntax is: ++ MEMORY ++ { ++ NAME [(ATTR)] : ORIGIN = ORIGIN, LENGTH = LEN ++ ... ++ } ++ ++ The NAME is a name used in the linker script to refer to the region. ++The region name has no meaning outside of the linker script. Region ++names are stored in a separate name space, and will not conflict with ++symbol names, file names, or section names. Each memory region must ++have a distinct name. ++ ++ The ATTR string is an optional list of attributes that specify ++whether to use a particular memory region for an input section which is ++not explicitly mapped in the linker script. As described in *Note ++SECTIONS::, if you do not specify an output section for some input ++section, the linker will create an output section with the same name as ++the input section. If you define region attributes, the linker will use ++them to select the memory region for the output section that it creates. ++ ++ The ATTR string must consist only of the following characters: ++`R' ++ Read-only section ++ ++`W' ++ Read/write section ++ ++`X' ++ Executable section ++ ++`A' ++ Allocatable section ++ ++`I' ++ Initialized section ++ ++`L' ++ Same as `I' ++ ++`!' ++ Invert the sense of any of the preceding attributes ++ ++ If a unmapped section matches any of the listed attributes other than ++`!', it will be placed in the memory region. The `!' attribute ++reverses this test, so that an unmapped section will be placed in the ++memory region only if it does not match any of the listed attributes. ++ ++ The ORIGIN is an numerical expression for the start address of the ++memory region. The expression must evaluate to a constant and it ++cannot involve any symbols. The keyword `ORIGIN' may be abbreviated to ++`org' or `o' (but not, for example, `ORG'). ++ ++ The LEN is an expression for the size in bytes of the memory region. ++As with the ORIGIN expression, the expression must be numerical only ++and must evaluate to a constant. The keyword `LENGTH' may be ++abbreviated to `len' or `l'. ++ ++ In the following example, we specify that there are two memory ++regions available for allocation: one starting at `0' for 256 kilobytes, ++and the other starting at `0x40000000' for four megabytes. The linker ++will place into the `rom' memory region every section which is not ++explicitly mapped into a memory region, and is either read-only or ++executable. The linker will place other sections which are not ++explicitly mapped into a memory region into the `ram' memory region. ++ ++ MEMORY ++ { ++ rom (rx) : ORIGIN = 0, LENGTH = 256K ++ ram (!rx) : org = 0x40000000, l = 4M ++ } ++ ++ Once you define a memory region, you can direct the linker to place ++specific output sections into that memory region by using the `>REGION' ++output section attribute. For example, if you have a memory region ++named `mem', you would use `>mem' in the output section definition. ++*Note Output Section Region::. If no address was specified for the ++output section, the linker will set the address to the next available ++address within the memory region. If the combined output sections ++directed to a memory region are too large for the region, the linker ++will issue an error message. ++ ++ It is possible to access the origin and length of a memory in an ++expression via the `ORIGIN(MEMORY)' and `LENGTH(MEMORY)' functions: ++ ++ _fstack = ORIGIN(ram) + LENGTH(ram) - 4; ++ ++ ++File: ld.info, Node: PHDRS, Next: VERSION, Prev: MEMORY, Up: Scripts ++ ++3.8 PHDRS Command ++================= ++ ++The ELF object file format uses "program headers", also knows as ++"segments". The program headers describe how the program should be ++loaded into memory. You can print them out by using the `objdump' ++program with the `-p' option. ++ ++ When you run an ELF program on a native ELF system, the system loader ++reads the program headers in order to figure out how to load the ++program. This will only work if the program headers are set correctly. ++This manual does not describe the details of how the system loader ++interprets program headers; for more information, see the ELF ABI. ++ ++ The linker will create reasonable program headers by default. ++However, in some cases, you may need to specify the program headers more ++precisely. You may use the `PHDRS' command for this purpose. When the ++linker sees the `PHDRS' command in the linker script, it will not ++create any program headers other than the ones specified. ++ ++ The linker only pays attention to the `PHDRS' command when ++generating an ELF output file. In other cases, the linker will simply ++ignore `PHDRS'. ++ ++ This is the syntax of the `PHDRS' command. The words `PHDRS', ++`FILEHDR', `AT', and `FLAGS' are keywords. ++ ++ PHDRS ++ { ++ NAME TYPE [ FILEHDR ] [ PHDRS ] [ AT ( ADDRESS ) ] ++ [ FLAGS ( FLAGS ) ] ; ++ } ++ ++ The NAME is used only for reference in the `SECTIONS' command of the ++linker script. It is not put into the output file. Program header ++names are stored in a separate name space, and will not conflict with ++symbol names, file names, or section names. Each program header must ++have a distinct name. ++ ++ Certain program header types describe segments of memory which the ++system loader will load from the file. In the linker script, you ++specify the contents of these segments by placing allocatable output ++sections in the segments. You use the `:PHDR' output section attribute ++to place a section in a particular segment. *Note Output Section ++Phdr::. ++ ++ It is normal to put certain sections in more than one segment. This ++merely implies that one segment of memory contains another. You may ++repeat `:PHDR', using it once for each segment which should contain the ++section. ++ ++ If you place a section in one or more segments using `:PHDR', then ++the linker will place all subsequent allocatable sections which do not ++specify `:PHDR' in the same segments. This is for convenience, since ++generally a whole set of contiguous sections will be placed in a single ++segment. You can use `:NONE' to override the default segment and tell ++the linker to not put the section in any segment at all. ++ ++ You may use the `FILEHDR' and `PHDRS' keywords appear after the ++program header type to further describe the contents of the segment. ++The `FILEHDR' keyword means that the segment should include the ELF ++file header. The `PHDRS' keyword means that the segment should include ++the ELF program headers themselves. ++ ++ The TYPE may be one of the following. The numbers indicate the ++value of the keyword. ++ ++`PT_NULL' (0) ++ Indicates an unused program header. ++ ++`PT_LOAD' (1) ++ Indicates that this program header describes a segment to be ++ loaded from the file. ++ ++`PT_DYNAMIC' (2) ++ Indicates a segment where dynamic linking information can be found. ++ ++`PT_INTERP' (3) ++ Indicates a segment where the name of the program interpreter may ++ be found. ++ ++`PT_NOTE' (4) ++ Indicates a segment holding note information. ++ ++`PT_SHLIB' (5) ++ A reserved program header type, defined but not specified by the ++ ELF ABI. ++ ++`PT_PHDR' (6) ++ Indicates a segment where the program headers may be found. ++ ++EXPRESSION ++ An expression giving the numeric type of the program header. This ++ may be used for types not defined above. ++ ++ You can specify that a segment should be loaded at a particular ++address in memory by using an `AT' expression. This is identical to the ++`AT' command used as an output section attribute (*note Output Section ++LMA::). The `AT' command for a program header overrides the output ++section attribute. ++ ++ The linker will normally set the segment flags based on the sections ++which comprise the segment. You may use the `FLAGS' keyword to ++explicitly specify the segment flags. The value of FLAGS must be an ++integer. It is used to set the `p_flags' field of the program header. ++ ++ Here is an example of `PHDRS'. This shows a typical set of program ++headers used on a native ELF system. ++ ++ PHDRS ++ { ++ headers PT_PHDR PHDRS ; ++ interp PT_INTERP ; ++ text PT_LOAD FILEHDR PHDRS ; ++ data PT_LOAD ; ++ dynamic PT_DYNAMIC ; ++ } ++ ++ SECTIONS ++ { ++ . = SIZEOF_HEADERS; ++ .interp : { *(.interp) } :text :interp ++ .text : { *(.text) } :text ++ .rodata : { *(.rodata) } /* defaults to :text */ ++ ... ++ . = . + 0x1000; /* move to a new page in memory */ ++ .data : { *(.data) } :data ++ .dynamic : { *(.dynamic) } :data :dynamic ++ ... ++ } ++ ++ ++File: ld.info, Node: VERSION, Next: Expressions, Prev: PHDRS, Up: Scripts ++ ++3.9 VERSION Command ++=================== ++ ++The linker supports symbol versions when using ELF. Symbol versions are ++only useful when using shared libraries. The dynamic linker can use ++symbol versions to select a specific version of a function when it runs ++a program that may have been linked against an earlier version of the ++shared library. ++ ++ You can include a version script directly in the main linker script, ++or you can supply the version script as an implicit linker script. You ++can also use the `--version-script' linker option. ++ ++ The syntax of the `VERSION' command is simply ++ VERSION { version-script-commands } ++ ++ The format of the version script commands is identical to that used ++by Sun's linker in Solaris 2.5. The version script defines a tree of ++version nodes. You specify the node names and interdependencies in the ++version script. You can specify which symbols are bound to which ++version nodes, and you can reduce a specified set of symbols to local ++scope so that they are not globally visible outside of the shared ++library. ++ ++ The easiest way to demonstrate the version script language is with a ++few examples. ++ ++ VERS_1.1 { ++ global: ++ foo1; ++ local: ++ old*; ++ original*; ++ new*; ++ }; ++ ++ VERS_1.2 { ++ foo2; ++ } VERS_1.1; ++ ++ VERS_2.0 { ++ bar1; bar2; ++ extern "C++" { ++ ns::*; ++ "int f(int, double)"; ++ } ++ } VERS_1.2; ++ ++ This example version script defines three version nodes. The first ++version node defined is `VERS_1.1'; it has no other dependencies. The ++script binds the symbol `foo1' to `VERS_1.1'. It reduces a number of ++symbols to local scope so that they are not visible outside of the ++shared library; this is done using wildcard patterns, so that any ++symbol whose name begins with `old', `original', or `new' is matched. ++The wildcard patterns available are the same as those used in the shell ++when matching filenames (also known as "globbing"). However, if you ++specify the symbol name inside double quotes, then the name is treated ++as literal, rather than as a glob pattern. ++ ++ Next, the version script defines node `VERS_1.2'. This node depends ++upon `VERS_1.1'. The script binds the symbol `foo2' to the version ++node `VERS_1.2'. ++ ++ Finally, the version script defines node `VERS_2.0'. This node ++depends upon `VERS_1.2'. The scripts binds the symbols `bar1' and ++`bar2' are bound to the version node `VERS_2.0'. ++ ++ When the linker finds a symbol defined in a library which is not ++specifically bound to a version node, it will effectively bind it to an ++unspecified base version of the library. You can bind all otherwise ++unspecified symbols to a given version node by using `global: *;' ++somewhere in the version script. ++ ++ The names of the version nodes have no specific meaning other than ++what they might suggest to the person reading them. The `2.0' version ++could just as well have appeared in between `1.1' and `1.2'. However, ++this would be a confusing way to write a version script. ++ ++ Node name can be omited, provided it is the only version node in the ++version script. Such version script doesn't assign any versions to ++symbols, only selects which symbols will be globally visible out and ++which won't. ++ ++ { global: foo; bar; local: *; }; ++ ++ When you link an application against a shared library that has ++versioned symbols, the application itself knows which version of each ++symbol it requires, and it also knows which version nodes it needs from ++each shared library it is linked against. Thus at runtime, the dynamic ++loader can make a quick check to make sure that the libraries you have ++linked against do in fact supply all of the version nodes that the ++application will need to resolve all of the dynamic symbols. In this ++way it is possible for the dynamic linker to know with certainty that ++all external symbols that it needs will be resolvable without having to ++search for each symbol reference. ++ ++ The symbol versioning is in effect a much more sophisticated way of ++doing minor version checking that SunOS does. The fundamental problem ++that is being addressed here is that typically references to external ++functions are bound on an as-needed basis, and are not all bound when ++the application starts up. If a shared library is out of date, a ++required interface may be missing; when the application tries to use ++that interface, it may suddenly and unexpectedly fail. With symbol ++versioning, the user will get a warning when they start their program if ++the libraries being used with the application are too old. ++ ++ There are several GNU extensions to Sun's versioning approach. The ++first of these is the ability to bind a symbol to a version node in the ++source file where the symbol is defined instead of in the versioning ++script. This was done mainly to reduce the burden on the library ++maintainer. You can do this by putting something like: ++ __asm__(".symver original_foo,foo@VERS_1.1"); ++ in the C source file. This renames the function `original_foo' to ++be an alias for `foo' bound to the version node `VERS_1.1'. The ++`local:' directive can be used to prevent the symbol `original_foo' ++from being exported. A `.symver' directive takes precedence over a ++version script. ++ ++ The second GNU extension is to allow multiple versions of the same ++function to appear in a given shared library. In this way you can make ++an incompatible change to an interface without increasing the major ++version number of the shared library, while still allowing applications ++linked against the old interface to continue to function. ++ ++ To do this, you must use multiple `.symver' directives in the source ++file. Here is an example: ++ ++ __asm__(".symver original_foo,foo@"); ++ __asm__(".symver old_foo,foo@VERS_1.1"); ++ __asm__(".symver old_foo1,foo@VERS_1.2"); ++ __asm__(".symver new_foo,foo@@VERS_2.0"); ++ ++ In this example, `foo@' represents the symbol `foo' bound to the ++unspecified base version of the symbol. The source file that contains ++this example would define 4 C functions: `original_foo', `old_foo', ++`old_foo1', and `new_foo'. ++ ++ When you have multiple definitions of a given symbol, there needs to ++be some way to specify a default version to which external references to ++this symbol will be bound. You can do this with the `foo@@VERS_2.0' ++type of `.symver' directive. You can only declare one version of a ++symbol as the default in this manner; otherwise you would effectively ++have multiple definitions of the same symbol. ++ ++ If you wish to bind a reference to a specific version of the symbol ++within the shared library, you can use the aliases of convenience ++(i.e., `old_foo'), or you can use the `.symver' directive to ++specifically bind to an external version of the function in question. ++ ++ You can also specify the language in the version script: ++ ++ VERSION extern "lang" { version-script-commands } ++ ++ The supported `lang's are `C', `C++', and `Java'. The linker will ++iterate over the list of symbols at the link time and demangle them ++according to `lang' before matching them to the patterns specified in ++`version-script-commands'. ++ ++ Demangled names may contains spaces and other special characters. As ++described above, you can use a glob pattern to match demangled names, ++or you can use a double-quoted string to match the string exactly. In ++the latter case, be aware that minor differences (such as differing ++whitespace) between the version script and the demangler output will ++cause a mismatch. As the exact string generated by the demangler might ++change in the future, even if the mangled name does not, you should ++check that all of your version directives are behaving as you expect ++when you upgrade. ++ ++ ++File: ld.info, Node: Expressions, Next: Implicit Linker Scripts, Prev: VERSION, Up: Scripts ++ ++3.10 Expressions in Linker Scripts ++================================== ++ ++The syntax for expressions in the linker script language is identical to ++that of C expressions. All expressions are evaluated as integers. All ++expressions are evaluated in the same size, which is 32 bits if both the ++host and target are 32 bits, and is otherwise 64 bits. ++ ++ You can use and set symbol values in expressions. ++ ++ The linker defines several special purpose builtin functions for use ++in expressions. ++ ++* Menu: ++ ++* Constants:: Constants ++* Symbols:: Symbol Names ++* Orphan Sections:: Orphan Sections ++* Location Counter:: The Location Counter ++* Operators:: Operators ++* Evaluation:: Evaluation ++* Expression Section:: The Section of an Expression ++* Builtin Functions:: Builtin Functions ++ ++ ++File: ld.info, Node: Constants, Next: Symbols, Up: Expressions ++ ++3.10.1 Constants ++---------------- ++ ++All constants are integers. ++ ++ As in C, the linker considers an integer beginning with `0' to be ++octal, and an integer beginning with `0x' or `0X' to be hexadecimal. ++The linker considers other integers to be decimal. ++ ++ In addition, you can use the suffixes `K' and `M' to scale a ++constant by `1024' or `1024*1024' respectively. For example, the ++following all refer to the same quantity: ++ _fourk_1 = 4K; ++ _fourk_2 = 4096; ++ _fourk_3 = 0x1000; ++ ++ ++File: ld.info, Node: Symbols, Next: Orphan Sections, Prev: Constants, Up: Expressions ++ ++3.10.2 Symbol Names ++------------------- ++ ++Unless quoted, symbol names start with a letter, underscore, or period ++and may include letters, digits, underscores, periods, and hyphens. ++Unquoted symbol names must not conflict with any keywords. You can ++specify a symbol which contains odd characters or has the same name as a ++keyword by surrounding the symbol name in double quotes: ++ "SECTION" = 9; ++ "with a space" = "also with a space" + 10; ++ ++ Since symbols can contain many non-alphabetic characters, it is ++safest to delimit symbols with spaces. For example, `A-B' is one ++symbol, whereas `A - B' is an expression involving subtraction. ++ ++ ++File: ld.info, Node: Orphan Sections, Next: Location Counter, Prev: Symbols, Up: Expressions ++ ++3.10.3 Orphan Sections ++---------------------- ++ ++Orphan sections are sections present in the input files which are not ++explicitly placed into the output file by the linker script. The ++linker will still copy these sections into the output file, but it has ++to guess as to where they should be placed. The linker uses a simple ++heuristic to do this. It attempts to place orphan sections after ++non-orphan sections of the same attribute, such as code vs data, ++loadable vs non-loadable, etc. If there is not enough room to do this ++then it places at the end of the file. ++ ++ For ELF targets, the attribute of the section includes section type ++as well as section flag. ++ ++ ++File: ld.info, Node: Location Counter, Next: Operators, Prev: Orphan Sections, Up: Expressions ++ ++3.10.4 The Location Counter ++--------------------------- ++ ++The special linker variable "dot" `.' always contains the current ++output location counter. Since the `.' always refers to a location in ++an output section, it may only appear in an expression within a ++`SECTIONS' command. The `.' symbol may appear anywhere that an ++ordinary symbol is allowed in an expression. ++ ++ Assigning a value to `.' will cause the location counter to be ++moved. This may be used to create holes in the output section. The ++location counter may never be moved backwards. ++ ++ SECTIONS ++ { ++ output : ++ { ++ file1(.text) ++ . = . + 1000; ++ file2(.text) ++ . += 1000; ++ file3(.text) ++ } = 0x12345678; ++ } ++ In the previous example, the `.text' section from `file1' is located ++at the beginning of the output section `output'. It is followed by a ++1000 byte gap. Then the `.text' section from `file2' appears, also ++with a 1000 byte gap following before the `.text' section from `file3'. ++The notation `= 0x12345678' specifies what data to write in the gaps ++(*note Output Section Fill::). ++ ++ Note: `.' actually refers to the byte offset from the start of the ++current containing object. Normally this is the `SECTIONS' statement, ++whose start address is 0, hence `.' can be used as an absolute address. ++If `.' is used inside a section description however, it refers to the ++byte offset from the start of that section, not an absolute address. ++Thus in a script like this: ++ ++ SECTIONS ++ { ++ . = 0x100 ++ .text: { ++ *(.text) ++ . = 0x200 ++ } ++ . = 0x500 ++ .data: { ++ *(.data) ++ . += 0x600 ++ } ++ } ++ ++ The `.text' section will be assigned a starting address of 0x100 and ++a size of exactly 0x200 bytes, even if there is not enough data in the ++`.text' input sections to fill this area. (If there is too much data, ++an error will be produced because this would be an attempt to move `.' ++backwards). The `.data' section will start at 0x500 and it will have ++an extra 0x600 bytes worth of space after the end of the values from ++the `.data' input sections and before the end of the `.data' output ++section itself. ++ ++ Setting symbols to the value of the location counter outside of an ++output section statement can result in unexpected values if the linker ++needs to place orphan sections. For example, given the following: ++ ++ SECTIONS ++ { ++ start_of_text = . ; ++ .text: { *(.text) } ++ end_of_text = . ; ++ ++ start_of_data = . ; ++ .data: { *(.data) } ++ end_of_data = . ; ++ } ++ ++ If the linker needs to place some input section, e.g. `.rodata', not ++mentioned in the script, it might choose to place that section between ++`.text' and `.data'. You might think the linker should place `.rodata' ++on the blank line in the above script, but blank lines are of no ++particular significance to the linker. As well, the linker doesn't ++associate the above symbol names with their sections. Instead, it ++assumes that all assignments or other statements belong to the previous ++output section, except for the special case of an assignment to `.'. ++I.e., the linker will place the orphan `.rodata' section as if the ++script was written as follows: ++ ++ SECTIONS ++ { ++ start_of_text = . ; ++ .text: { *(.text) } ++ end_of_text = . ; ++ ++ start_of_data = . ; ++ .rodata: { *(.rodata) } ++ .data: { *(.data) } ++ end_of_data = . ; ++ } ++ ++ This may or may not be the script author's intention for the value of ++`start_of_data'. One way to influence the orphan section placement is ++to assign the location counter to itself, as the linker assumes that an ++assignment to `.' is setting the start address of a following output ++section and thus should be grouped with that section. So you could ++write: ++ ++ SECTIONS ++ { ++ start_of_text = . ; ++ .text: { *(.text) } ++ end_of_text = . ; ++ ++ . = . ; ++ start_of_data = . ; ++ .data: { *(.data) } ++ end_of_data = . ; ++ } ++ ++ Now, the orphan `.rodata' section will be placed between ++`end_of_text' and `start_of_data'. ++ ++ ++File: ld.info, Node: Operators, Next: Evaluation, Prev: Location Counter, Up: Expressions ++ ++3.10.5 Operators ++---------------- ++ ++The linker recognizes the standard C set of arithmetic operators, with ++the standard bindings and precedence levels: ++ precedence associativity Operators Notes ++ (highest) ++ 1 left ! - ~ (1) ++ 2 left * / % ++ 3 left + - ++ 4 left >> << ++ 5 left == != > < <= >= ++ 6 left & ++ 7 left | ++ 8 left && ++ 9 left || ++ 10 right ? : ++ 11 right &= += -= *= /= (2) ++ (lowest) ++ Notes: (1) Prefix operators (2) *Note Assignments::. ++ ++ ++File: ld.info, Node: Evaluation, Next: Expression Section, Prev: Operators, Up: Expressions ++ ++3.10.6 Evaluation ++----------------- ++ ++The linker evaluates expressions lazily. It only computes the value of ++an expression when absolutely necessary. ++ ++ The linker needs some information, such as the value of the start ++address of the first section, and the origins and lengths of memory ++regions, in order to do any linking at all. These values are computed ++as soon as possible when the linker reads in the linker script. ++ ++ However, other values (such as symbol values) are not known or needed ++until after storage allocation. Such values are evaluated later, when ++other information (such as the sizes of output sections) is available ++for use in the symbol assignment expression. ++ ++ The sizes of sections cannot be known until after allocation, so ++assignments dependent upon these are not performed until after ++allocation. ++ ++ Some expressions, such as those depending upon the location counter ++`.', must be evaluated during section allocation. ++ ++ If the result of an expression is required, but the value is not ++available, then an error results. For example, a script like the ++following ++ SECTIONS ++ { ++ .text 9+this_isnt_constant : ++ { *(.text) } ++ } ++will cause the error message `non constant expression for initial ++address'. ++ ++ ++File: ld.info, Node: Expression Section, Next: Builtin Functions, Prev: Evaluation, Up: Expressions ++ ++3.10.7 The Section of an Expression ++----------------------------------- ++ ++When the linker evaluates an expression, the result is either absolute ++or relative to some section. A relative expression is expressed as a ++fixed offset from the base of a section. ++ ++ The position of the expression within the linker script determines ++whether it is absolute or relative. An expression which appears within ++an output section definition is relative to the base of the output ++section. An expression which appears elsewhere will be absolute. ++ ++ A symbol set to a relative expression will be relocatable if you ++request relocatable output using the `-r' option. That means that a ++further link operation may change the value of the symbol. The symbol's ++section will be the section of the relative expression. ++ ++ A symbol set to an absolute expression will retain the same value ++through any further link operation. The symbol will be absolute, and ++will not have any particular associated section. ++ ++ You can use the builtin function `ABSOLUTE' to force an expression ++to be absolute when it would otherwise be relative. For example, to ++create an absolute symbol set to the address of the end of the output ++section `.data': ++ SECTIONS ++ { ++ .data : { *(.data) _edata = ABSOLUTE(.); } ++ } ++ If `ABSOLUTE' were not used, `_edata' would be relative to the ++`.data' section. ++ ++ ++File: ld.info, Node: Builtin Functions, Prev: Expression Section, Up: Expressions ++ ++3.10.8 Builtin Functions ++------------------------ ++ ++The linker script language includes a number of builtin functions for ++use in linker script expressions. ++ ++`ABSOLUTE(EXP)' ++ Return the absolute (non-relocatable, as opposed to non-negative) ++ value of the expression EXP. Primarily useful to assign an ++ absolute value to a symbol within a section definition, where ++ symbol values are normally section relative. *Note Expression ++ Section::. ++ ++`ADDR(SECTION)' ++ Return the absolute address (the VMA) of the named SECTION. Your ++ script must previously have defined the location of that section. ++ In the following example, `symbol_1' and `symbol_2' are assigned ++ identical values: ++ SECTIONS { ... ++ .output1 : ++ { ++ start_of_output_1 = ABSOLUTE(.); ++ ... ++ } ++ .output : ++ { ++ symbol_1 = ADDR(.output1); ++ symbol_2 = start_of_output_1; ++ } ++ ... } ++ ++`ALIGN(ALIGN)' ++`ALIGN(EXP,ALIGN)' ++ Return the location counter (`.') or arbitrary expression aligned ++ to the next ALIGN boundary. The single operand `ALIGN' doesn't ++ change the value of the location counter--it just does arithmetic ++ on it. The two operand `ALIGN' allows an arbitrary expression to ++ be aligned upwards (`ALIGN(ALIGN)' is equivalent to `ALIGN(., ++ ALIGN)'). ++ ++ Here is an example which aligns the output `.data' section to the ++ next `0x2000' byte boundary after the preceding section and sets a ++ variable within the section to the next `0x8000' boundary after the ++ input sections: ++ SECTIONS { ... ++ .data ALIGN(0x2000): { ++ *(.data) ++ variable = ALIGN(0x8000); ++ } ++ ... } ++ The first use of `ALIGN' in this example specifies the ++ location of a section because it is used as the optional ADDRESS ++ attribute of a section definition (*note Output Section ++ Address::). The second use of `ALIGN' is used to defines the ++ value of a symbol. ++ ++ The builtin function `NEXT' is closely related to `ALIGN'. ++ ++`BLOCK(EXP)' ++ This is a synonym for `ALIGN', for compatibility with older linker ++ scripts. It is most often seen when setting the address of an ++ output section. ++ ++`DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE)' ++ This is equivalent to either ++ (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - 1))) ++ or ++ (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - COMMONPAGESIZE))) ++ depending on whether the latter uses fewer COMMONPAGESIZE sized ++ pages for the data segment (area between the result of this ++ expression and `DATA_SEGMENT_END') than the former or not. If the ++ latter form is used, it means COMMONPAGESIZE bytes of runtime ++ memory will be saved at the expense of up to COMMONPAGESIZE wasted ++ bytes in the on-disk file. ++ ++ This expression can only be used directly in `SECTIONS' commands, ++ not in any output section descriptions and only once in the linker ++ script. COMMONPAGESIZE should be less or equal to MAXPAGESIZE and ++ should be the system page size the object wants to be optimized ++ for (while still working on system page sizes up to MAXPAGESIZE). ++ ++ Example: ++ . = DATA_SEGMENT_ALIGN(0x10000, 0x2000); ++ ++`DATA_SEGMENT_END(EXP)' ++ This defines the end of data segment for `DATA_SEGMENT_ALIGN' ++ evaluation purposes. ++ ++ . = DATA_SEGMENT_END(.); ++ ++`DATA_SEGMENT_RELRO_END(OFFSET, EXP)' ++ This defines the end of the `PT_GNU_RELRO' segment when `-z relro' ++ option is used. Second argument is returned. When `-z relro' ++ option is not present, `DATA_SEGMENT_RELRO_END' does nothing, ++ otherwise `DATA_SEGMENT_ALIGN' is padded so that EXP + OFFSET is ++ aligned to the most commonly used page boundary for particular ++ target. If present in the linker script, it must always come in ++ between `DATA_SEGMENT_ALIGN' and `DATA_SEGMENT_END'. ++ ++ . = DATA_SEGMENT_RELRO_END(24, .); ++ ++`DEFINED(SYMBOL)' ++ Return 1 if SYMBOL is in the linker global symbol table and is ++ defined before the statement using DEFINED in the script, otherwise ++ return 0. You can use this function to provide default values for ++ symbols. For example, the following script fragment shows how to ++ set a global symbol `begin' to the first location in the `.text' ++ section--but if a symbol called `begin' already existed, its value ++ is preserved: ++ ++ SECTIONS { ... ++ .text : { ++ begin = DEFINED(begin) ? begin : . ; ++ ... ++ } ++ ... ++ } ++ ++`LENGTH(MEMORY)' ++ Return the length of the memory region named MEMORY. ++ ++`LOADADDR(SECTION)' ++ Return the absolute LMA of the named SECTION. This is normally ++ the same as `ADDR', but it may be different if the `AT' attribute ++ is used in the output section definition (*note Output Section ++ LMA::). ++ ++`MAX(EXP1, EXP2)' ++ Returns the maximum of EXP1 and EXP2. ++ ++`MIN(EXP1, EXP2)' ++ Returns the minimum of EXP1 and EXP2. ++ ++`NEXT(EXP)' ++ Return the next unallocated address that is a multiple of EXP. ++ This function is closely related to `ALIGN(EXP)'; unless you use ++ the `MEMORY' command to define discontinuous memory for the output ++ file, the two functions are equivalent. ++ ++`ORIGIN(MEMORY)' ++ Return the origin of the memory region named MEMORY. ++ ++`SEGMENT_START(SEGMENT, DEFAULT)' ++ Return the base address of the named SEGMENT. If an explicit ++ value has been given for this segment (with a command-line `-T' ++ option) that value will be returned; otherwise the value will be ++ DEFAULT. At present, the `-T' command-line option can only be ++ used to set the base address for the "text", "data", and "bss" ++ sections, but you use `SEGMENT_START' with any segment name. ++ ++`SIZEOF(SECTION)' ++ Return the size in bytes of the named SECTION, if that section has ++ been allocated. If the section has not been allocated when this is ++ evaluated, the linker will report an error. In the following ++ example, `symbol_1' and `symbol_2' are assigned identical values: ++ SECTIONS{ ... ++ .output { ++ .start = . ; ++ ... ++ .end = . ; ++ } ++ symbol_1 = .end - .start ; ++ symbol_2 = SIZEOF(.output); ++ ... } ++ ++`SIZEOF_HEADERS' ++`sizeof_headers' ++ Return the size in bytes of the output file's headers. This is ++ information which appears at the start of the output file. You ++ can use this number when setting the start address of the first ++ section, if you choose, to facilitate paging. ++ ++ When producing an ELF output file, if the linker script uses the ++ `SIZEOF_HEADERS' builtin function, the linker must compute the ++ number of program headers before it has determined all the section ++ addresses and sizes. If the linker later discovers that it needs ++ additional program headers, it will report an error `not enough ++ room for program headers'. To avoid this error, you must avoid ++ using the `SIZEOF_HEADERS' function, or you must rework your linker ++ script to avoid forcing the linker to use additional program ++ headers, or you must define the program headers yourself using the ++ `PHDRS' command (*note PHDRS::). ++ ++ ++File: ld.info, Node: Implicit Linker Scripts, Prev: Expressions, Up: Scripts ++ ++3.11 Implicit Linker Scripts ++============================ ++ ++If you specify a linker input file which the linker can not recognize as ++an object file or an archive file, it will try to read the file as a ++linker script. If the file can not be parsed as a linker script, the ++linker will report an error. ++ ++ An implicit linker script will not replace the default linker script. ++ ++ Typically an implicit linker script would contain only symbol ++assignments, or the `INPUT', `GROUP', or `VERSION' commands. ++ ++ Any input files read because of an implicit linker script will be ++read at the position in the command line where the implicit linker ++script was read. This can affect archive searching. ++ ++ ++File: ld.info, Node: Machine Dependent, Next: BFD, Prev: Scripts, Up: Top ++ ++4 Machine Dependent Features ++**************************** ++ ++`ld' has additional features on some platforms; the following sections ++describe them. Machines where `ld' has no additional functionality are ++not listed. ++ ++* Menu: ++ ++ ++* H8/300:: `ld' and the H8/300 ++ ++* i960:: `ld' and the Intel 960 family ++ ++* ARM:: `ld' and the ARM family ++ ++* HPPA ELF32:: `ld' and HPPA 32-bit ELF ++ ++* MMIX:: `ld' and MMIX ++ ++* MSP430:: `ld' and MSP430 ++ ++* PowerPC ELF32:: `ld' and PowerPC 32-bit ELF Support ++ ++* PowerPC64 ELF64:: `ld' and PowerPC64 64-bit ELF Support ++ ++* TI COFF:: `ld' and TI COFF ++ ++* WIN32:: `ld' and WIN32 (cygwin/mingw) ++ ++* Xtensa:: `ld' and Xtensa Processors ++ ++ ++File: ld.info, Node: H8/300, Next: i960, Up: Machine Dependent ++ ++4.1 `ld' and the H8/300 ++======================= ++ ++For the H8/300, `ld' can perform these global optimizations when you ++specify the `--relax' command-line option. ++ ++_relaxing address modes_ ++ `ld' finds all `jsr' and `jmp' instructions whose targets are ++ within eight bits, and turns them into eight-bit program-counter ++ relative `bsr' and `bra' instructions, respectively. ++ ++_synthesizing instructions_ ++ `ld' finds all `mov.b' instructions which use the sixteen-bit ++ absolute address form, but refer to the top page of memory, and ++ changes them to use the eight-bit address form. (That is: the ++ linker turns `mov.b `@'AA:16' into `mov.b `@'AA:8' whenever the ++ address AA is in the top page of memory). ++ ++_bit manipulation instructions_ ++ `ld' finds all bit manipulation instructions like `band, bclr, ++ biand, bild, bior, bist, bixor, bld, bnot, bor, bset, bst, btst, ++ bxor' which use 32 bit and 16 bit absolute address form, but refer ++ to the top page of memory, and changes them to use the 8 bit ++ address form. (That is: the linker turns `bset #xx:3,`@'AA:32' ++ into `bset #xx:3,`@'AA:8' whenever the address AA is in the top ++ page of memory). ++ ++_system control instructions_ ++ `ld' finds all `ldc.w, stc.w' instrcutions which use the 32 bit ++ absolute address form, but refer to the top page of memory, and ++ changes them to use 16 bit address form. (That is: the linker ++ turns `ldc.w `@'AA:32,ccr' into `ldc.w `@'AA:16,ccr' whenever the ++ address AA is in the top page of memory). ++ ++ ++File: ld.info, Node: i960, Next: ARM, Prev: H8/300, Up: Machine Dependent ++ ++4.2 `ld' and the Intel 960 Family ++================================= ++ ++You can use the `-AARCHITECTURE' command line option to specify one of ++the two-letter names identifying members of the 960 family; the option ++specifies the desired output target, and warns of any incompatible ++instructions in the input files. It also modifies the linker's search ++strategy for archive libraries, to support the use of libraries ++specific to each particular architecture, by including in the search ++loop names suffixed with the string identifying the architecture. ++ ++ For example, if your `ld' command line included `-ACA' as well as ++`-ltry', the linker would look (in its built-in search paths, and in ++any paths you specify with `-L') for a library with the names ++ ++ try ++ libtry.a ++ tryca ++ libtryca.a ++ ++The first two possibilities would be considered in any event; the last ++two are due to the use of `-ACA'. ++ ++ You can meaningfully use `-A' more than once on a command line, since ++the 960 architecture family allows combination of target architectures; ++each use will add another pair of name variants to search for when `-l' ++specifies a library. ++ ++ `ld' supports the `--relax' option for the i960 family. If you ++specify `--relax', `ld' finds all `balx' and `calx' instructions whose ++targets are within 24 bits, and turns them into 24-bit program-counter ++relative `bal' and `cal' instructions, respectively. `ld' also turns ++`cal' instructions into `bal' instructions when it determines that the ++target subroutine is a leaf routine (that is, the target subroutine does ++not itself call any subroutines). ++ ++ ++File: ld.info, Node: ARM, Next: HPPA ELF32, Prev: i960, Up: Machine Dependent ++ ++4.3 `ld' and the ARM family ++=========================== ++ ++For the ARM, `ld' will generate code stubs to allow functions calls ++betweem ARM and Thumb code. These stubs only work with code that has ++been compiled and assembled with the `-mthumb-interwork' command line ++option. If it is necessary to link with old ARM object files or ++libraries, which have not been compiled with the -mthumb-interwork ++option then the `--support-old-code' command line switch should be ++given to the linker. This will make it generate larger stub functions ++which will work with non-interworking aware ARM code. Note, however, ++the linker does not support generating stubs for function calls to ++non-interworking aware Thumb code. ++ ++ The `--thumb-entry' switch is a duplicate of the generic `--entry' ++switch, in that it sets the program's starting address. But it also ++sets the bottom bit of the address, so that it can be branched to using ++a BX instruction, and the program will start executing in Thumb mode ++straight away. ++ ++ The `--be8' switch instructs `ld' to generate BE8 format ++executables. This option is only valid when linking big-endian objects. ++The resulting image will contain big-endian data and little-endian code. ++ ++ The `R_ARM_TARGET1' relocation is typically used for entries in the ++`.init_array' section. It is interpreted as either `R_ARM_REL32' or ++`R_ARM_ABS32', depending on the target. The `--target1-rel' and ++`--target1-abs' switches override the default. ++ ++ The `--target2=type' switch overrides the default definition of the ++`R_ARM_TARGET2' relocation. Valid values for `type', their meanings, ++and target defaults are as follows: ++`rel' ++ `R_ARM_REL32' (arm*-*-elf, arm*-*-eabi) ++ ++`abs' ++ `R_ARM_ABS32' (arm*-*-symbianelf) ++ ++`got-rel' ++ `R_ARM_GOT_PREL' (arm*-*-linux, arm*-*-*bsd) ++ ++ The `R_ARM_V4BX' relocation (defined by the ARM AAELF specification) ++enables objects compiled for the ARMv4 architecture to be ++interworking-safe when linked with other objects compiled for ARMv4t, ++but also allows pure ARMv4 binaries to be built from the same ARMv4 ++objects. ++ ++ In the latter case, the switch `--fix-v4bx' must be passed to the ++linker, which causes v4t `BX rM' instructions to be rewritten as `MOV ++PC,rM', since v4 processors do not have a `BX' instruction. ++ ++ In the former case, the switch should not be used, and `R_ARM_V4BX' ++relocations are ignored. ++ ++ The `--use-blx' switch enables the linker to use ARM/Thumb BLX ++instructions (available on ARMv5t and above) in various situations. ++Currently it is used to perform calls via the PLT from Thumb code using ++BLX rather than using BX and a mode-switching stub before each PLT ++entry. This should lead to such calls executing slightly faster. ++ ++ This option is enabled implicitly for SymbianOS, so there is no need ++to specify it if you are using that target. ++ ++ ++File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: ARM, Up: Machine Dependent ++ ++4.4 `ld' and HPPA 32-bit ELF Support ++==================================== ++ ++When generating a shared library, `ld' will by default generate import ++stubs suitable for use with a single sub-space application. The ++`--multi-subspace' switch causes `ld' to generate export stubs, and ++different (larger) import stubs suitable for use with multiple ++sub-spaces. ++ ++ Long branch stubs and import/export stubs are placed by `ld' in stub ++sections located between groups of input sections. `--stub-group-size' ++specifies the maximum size of a group of input sections handled by one ++stub section. Since branch offsets are signed, a stub section may ++serve two groups of input sections, one group before the stub section, ++and one group after it. However, when using conditional branches that ++require stubs, it may be better (for branch prediction) that stub ++sections only serve one group of input sections. A negative value for ++`N' chooses this scheme, ensuring that branches to stubs always use a ++negative offset. Two special values of `N' are recognized, `1' and ++`-1'. These both instruct `ld' to automatically size input section ++groups for the branch types detected, with the same behaviour regarding ++stub placement as other positive or negative values of `N' respectively. ++ ++ Note that `--stub-group-size' does not split input sections. A ++single input section larger than the group size specified will of course ++create a larger group (of one section). If input sections are too ++large, it may not be possible for a branch to reach its stub. ++ ++ ++File: ld.info, Node: MMIX, Next: MSP430, Prev: HPPA ELF32, Up: Machine Dependent ++ ++4.5 `ld' and MMIX ++================= ++ ++For MMIX, there is a choice of generating `ELF' object files or `mmo' ++object files when linking. The simulator `mmix' understands the `mmo' ++format. The binutils `objcopy' utility can translate between the two ++formats. ++ ++ There is one special section, the `.MMIX.reg_contents' section. ++Contents in this section is assumed to correspond to that of global ++registers, and symbols referring to it are translated to special ++symbols, equal to registers. In a final link, the start address of the ++`.MMIX.reg_contents' section corresponds to the first allocated global ++register multiplied by 8. Register `$255' is not included in this ++section; it is always set to the program entry, which is at the symbol ++`Main' for `mmo' files. ++ ++ Symbols with the prefix `__.MMIX.start.', for example ++`__.MMIX.start..text' and `__.MMIX.start..data' are special; there must ++be only one each, even if they are local. The default linker script ++uses these to set the default start address of a section. ++ ++ Initial and trailing multiples of zero-valued 32-bit words in a ++section, are left out from an mmo file. ++ ++ ++File: ld.info, Node: MSP430, Next: PowerPC ELF32, Prev: MMIX, Up: Machine Dependent ++ ++4.6 `ld' and MSP430 ++=================== ++ ++For the MSP430 it is possible to select the MPU architecture. The flag ++`-m [mpu type]' will select an appropriate linker script for selected ++MPU type. (To get a list of known MPUs just pass `-m help' option to ++the linker). ++ ++ The linker will recognize some extra sections which are MSP430 ++specific: ++ ++``.vectors'' ++ Defines a portion of ROM where interrupt vectors located. ++ ++``.bootloader'' ++ Defines the bootloader portion of the ROM (if applicable). Any ++ code in this section will be uploaded to the MPU. ++ ++``.infomem'' ++ Defines an information memory section (if applicable). Any code in ++ this section will be uploaded to the MPU. ++ ++``.infomemnobits'' ++ This is the same as the `.infomem' section except that any code in ++ this section will not be uploaded to the MPU. ++ ++``.noinit'' ++ Denotes a portion of RAM located above `.bss' section. ++ ++ The last two sections are used by gcc. ++ ++ ++File: ld.info, Node: PowerPC ELF32, Next: PowerPC64 ELF64, Prev: MSP430, Up: Machine Dependent ++ ++4.7 `ld' and PowerPC 32-bit ELF Support ++======================================= ++ ++Branches on PowerPC processors are limited to a signed 26-bit ++displacement, which may result in `ld' giving `relocation truncated to ++fit' errors with very large programs. `--relax' enables the generation ++of trampolines that can access the entire 32-bit address space. These ++trampolines are inserted at section boundaries, so may not themselves ++be reachable if an input section exceeds 33M in size. ++ ++`--bss-plt' ++ Current PowerPC GCC accepts a `-msecure-plt' option that generates ++ code capable of using a newer PLT and GOT layout that has the ++ security advantage of no executable section ever needing to be ++ writable and no writable section ever being executable. PowerPC ++ `ld' will generate this layout, including stubs to access the PLT, ++ if all input files (including startup and static libraries) were ++ compiled with `-msecure-plt'. `--bss-plt' forces the old BSS PLT ++ (and GOT layout) which can give slightly better performance. ++ ++`--sdata-got' ++ The new secure PLT and GOT are placed differently relative to other ++ sections compared to older BSS PLT and GOT placement. The ++ location of `.plt' must change because the new secure PLT is an ++ initialized section while the old PLT is uninitialized. The ++ reason for the `.got' change is more subtle: The new placement ++ allows `.got' to be read-only in applications linked with `-z ++ relro -z now'. However, this placement means that `.sdata' cannot ++ always be used in shared libraries, because the PowerPC ABI ++ accesses `.sdata' in shared libraries from the GOT pointer. ++ `--sdata-got' forces the old GOT placement. PowerPC GCC doesn't ++ use `.sdata' in shared libraries, so this option is really only ++ useful for other compilers that may do so. ++ ++`--emit-stub-syms' ++ This option causes `ld' to label linker stubs with a local symbol ++ that encodes the stub type and destination. ++ ++`--no-tls-optimize' ++ PowerPC `ld' normally performs some optimization of code sequences ++ used to access Thread-Local Storage. Use this option to disable ++ the optimization. ++ ++ ++File: ld.info, Node: PowerPC64 ELF64, Next: TI COFF, Prev: PowerPC ELF32, Up: Machine Dependent ++ ++4.8 `ld' and PowerPC64 64-bit ELF Support ++========================================= ++ ++`--stub-group-size' ++ Long branch stubs, PLT call stubs and TOC adjusting stubs are ++ placed by `ld' in stub sections located between groups of input ++ sections. `--stub-group-size' specifies the maximum size of a ++ group of input sections handled by one stub section. Since branch ++ offsets are signed, a stub section may serve two groups of input ++ sections, one group before the stub section, and one group after ++ it. However, when using conditional branches that require stubs, ++ it may be better (for branch prediction) that stub sections only ++ serve one group of input sections. A negative value for `N' ++ chooses this scheme, ensuring that branches to stubs always use a ++ negative offset. Two special values of `N' are recognized, `1' ++ and `-1'. These both instruct `ld' to automatically size input ++ section groups for the branch types detected, with the same ++ behaviour regarding stub placement as other positive or negative ++ values of `N' respectively. ++ ++ Note that `--stub-group-size' does not split input sections. A ++ single input section larger than the group size specified will of ++ course create a larger group (of one section). If input sections ++ are too large, it may not be possible for a branch to reach its ++ stub. ++ ++`--emit-stub-syms' ++ This option causes `ld' to label linker stubs with a local symbol ++ that encodes the stub type and destination. ++ ++`--dotsyms, --no-dotsyms' ++ These two options control how `ld' interprets version patterns in ++ a version script. Older PowerPC64 compilers emitted both a ++ function descriptor symbol with the same name as the function, and ++ a code entry symbol with the name prefixed by a dot (`.'). To ++ properly version a function `foo', the version script thus needs ++ to control both `foo' and `.foo'. The option `--dotsyms', on by ++ default, automatically adds the required dot-prefixed patterns. ++ Use `--no-dotsyms' to disable this feature. ++ ++`--no-tls-optimize' ++ PowerPC64 `ld' normally performs some optimization of code ++ sequences used to access Thread-Local Storage. Use this option to ++ disable the optimization. ++ ++`--no-opd-optimize' ++ PowerPC64 `ld' normally removes `.opd' section entries ++ corresponding to deleted link-once functions, or functions removed ++ by the action of `--gc-sections' or linker scrip `/DISCARD/'. Use ++ this option to disable `.opd' optimization. ++ ++`--non-overlapping-opd' ++ Some PowerPC64 compilers have an option to generate compressed ++ `.opd' entries spaced 16 bytes apart, overlapping the third word, ++ the static chain pointer (unused in C) with the first word of the ++ next entry. This option expands such entries to the full 24 bytes. ++ ++`--no-toc-optimize' ++ PowerPC64 `ld' normally removes unused `.toc' section entries. ++ Such entries are detected by examining relocations that reference ++ the TOC in code sections. A reloc in a deleted code section marks ++ a TOC word as unneeded, while a reloc in a kept code section marks ++ a TOC word as needed. Since the TOC may reference itself, TOC ++ relocs are also examined. TOC words marked as both needed and ++ unneeded will of course be kept. TOC words without any referencing ++ reloc are assumed to be part of a multi-word entry, and are kept or ++ discarded as per the nearest marked preceding word. This works ++ reliably for compiler generated code, but may be incorrect if ++ assembly code is used to insert TOC entries. Use this option to ++ disable the optimization. ++ ++`--no-multi-toc' ++ By default, PowerPC64 GCC generates code for a TOC model where TOC ++ entries are accessed with a 16-bit offset from r2. This limits the ++ total TOC size to 64K. PowerPC64 `ld' extends this limit by ++ grouping code sections such that each group uses less than 64K for ++ its TOC entries, then inserts r2 adjusting stubs between ++ inter-group calls. `ld' does not split apart input sections, so ++ cannot help if a single input file has a `.toc' section that ++ exceeds 64K, most likely from linking multiple files with `ld -r'. ++ Use this option to turn off this feature. ++ ++ ++File: ld.info, Node: TI COFF, Next: WIN32, Prev: PowerPC64 ELF64, Up: Machine Dependent ++ ++4.9 `ld''s Support for Various TI COFF Versions ++=============================================== ++ ++The `--format' switch allows selection of one of the various TI COFF ++versions. The latest of this writing is 2; versions 0 and 1 are also ++supported. The TI COFF versions also vary in header byte-order format; ++`ld' will read any version or byte order, but the output header format ++depends on the default specified by the specific target. ++ ++ ++File: ld.info, Node: WIN32, Next: Xtensa, Prev: TI COFF, Up: Machine Dependent ++ ++4.10 `ld' and WIN32 (cygwin/mingw) ++================================== ++ ++This section describes some of the win32 specific `ld' issues. See ++*Note Command Line Options: Options. for detailed decription of the ++command line options mentioned here. ++ ++_import libraries_ ++ The standard Windows linker creates and uses so-called import ++ libraries, which contains information for linking to dll's. They ++ are regular static archives and are handled as any other static ++ archive. The cygwin and mingw ports of `ld' have specific support ++ for creating such libraries provided with the `--out-implib' ++ command line option. ++ ++_exporting DLL symbols_ ++ The cygwin/mingw `ld' has several ways to export symbols for dll's. ++ ++ _using auto-export functionality_ ++ By default `ld' exports symbols with the auto-export ++ functionality, which is controlled by the following command ++ line options: ++ ++ * -export-all-symbols [This is the default] ++ ++ * -exclude-symbols ++ ++ * -exclude-libs ++ ++ If, however, `--export-all-symbols' is not given explicitly ++ on the command line, then the default auto-export behavior ++ will be _disabled_ if either of the following are true: ++ ++ * A DEF file is used. ++ ++ * Any symbol in any object file was marked with the ++ __declspec(dllexport) attribute. ++ ++ _using a DEF file_ ++ Another way of exporting symbols is using a DEF file. A DEF ++ file is an ASCII file containing definitions of symbols which ++ should be exported when a dll is created. Usually it is ++ named `.def' and is added as any other object file ++ to the linker's command line. The file's name must end in ++ `.def' or `.DEF'. ++ ++ gcc -o .def ++ ++ Using a DEF file turns off the normal auto-export behavior, ++ unless the `--export-all-symbols' option is also used. ++ ++ Here is an example of a DEF file for a shared library called ++ `xyz.dll': ++ ++ LIBRARY "xyz.dll" BASE=0x20000000 ++ ++ EXPORTS ++ foo ++ bar ++ _bar = bar ++ another_foo = abc.dll.afoo ++ var1 DATA ++ ++ This example defines a DLL with a non-default base address ++ and five symbols in the export table. The third exported ++ symbol `_bar' is an alias for the second. The fourth symbol, ++ `another_foo' is resolved by "forwarding" to another module ++ and treating it as an alias for `afoo' exported from the DLL ++ `abc.dll'. The final symbol `var1' is declared to be a data ++ object. ++ ++ The optional `LIBRARY ' command indicates the _internal_ ++ name of the output DLL. If `' does not include a suffix, ++ the default library suffix, `.DLL' is appended. ++ ++ When the .DEF file is used to build an application. rather ++ than a library, the `NAME ' command shoud be used ++ instead of `LIBRARY'. If `' does not include a suffix, ++ the default executable suffix, `.EXE' is appended. ++ ++ With either `LIBRARY ' or `NAME ' the optional ++ specification `BASE = ' may be used to specify a ++ non-default base address for the image. ++ ++ If neither `LIBRARY ' nor `NAME ' is specified, ++ or they specify an empty string, the internal name is the ++ same as the filename specified on the command line. ++ ++ The complete specification of an export symbol is: ++ ++ EXPORTS ++ ( ( ( [ = ] ) ++ | ( = . )) ++ [ @ ] [NONAME] [DATA] [CONSTANT] [PRIVATE] ) * ++ ++ Declares `' as an exported symbol from the DLL, or ++ declares `' as an exported alias for `'; or ++ declares `' as a "forward" alias for the symbol ++ `' in the DLL `'. Optionally, ++ the symbol may be exported by the specified ordinal ++ `' alias. ++ ++ The optional keywords that follow the declaration indicate: ++ ++ `NONAME': Do not put the symbol name in the DLL's export ++ table. It will still be exported by its ordinal alias ++ (either the value specified by the .def specification or, ++ otherwise, the value assigned by the linker). The symbol ++ name, however, does remain visible in the import library (if ++ any), unless `PRIVATE' is also specified. ++ ++ `DATA': The symbol is a variable or object, rather than a ++ function. The import lib will export only an indirect ++ reference to `foo' as the symbol `_imp__foo' (ie, `foo' must ++ be resolved as `*_imp__foo'). ++ ++ `CONSTANT': Like `DATA', but put the undecorated `foo' as ++ well as `_imp__foo' into the import library. Both refer to the ++ read-only import address table's pointer to the variable, not ++ to the variable itself. This can be dangerous. If the user ++ code fails to add the `dllimport' attribute and also fails to ++ explicitly add the extra indirection that the use of the ++ attribute enforces, the application will behave unexpectedly. ++ ++ `PRIVATE': Put the symbol in the DLL's export table, but do ++ not put it into the static import library used to resolve ++ imports at link time. The symbol can still be imported using ++ the `LoadLibrary/GetProcAddress' API at runtime or by by ++ using the GNU ld extension of linking directly to the DLL ++ without an import library. ++ ++ See ld/deffilep.y in the binutils sources for the full ++ specification of other DEF file statements ++ ++ While linking a shared dll, `ld' is able to create a DEF file ++ with the `--output-def ' command line option. ++ ++ _Using decorations_ ++ Another way of marking symbols for export is to modify the ++ source code itself, so that when building the DLL each symbol ++ to be exported is declared as: ++ ++ __declspec(dllexport) int a_variable ++ __declspec(dllexport) void a_function(int with_args) ++ ++ All such symbols will be exported from the DLL. If, however, ++ any of the object files in the DLL contain symbols decorated ++ in this way, then the normal auto-export behavior is ++ disabled, unless the `--export-all-symbols' option is also ++ used. ++ ++ Note that object files that wish to access these symbols must ++ _not_ decorate them with dllexport. Instead, they should use ++ dllimport, instead: ++ ++ __declspec(dllimport) int a_variable ++ __declspec(dllimport) void a_function(int with_args) ++ ++ This complicates the structure of library header files, ++ because when included by the library itself the header must ++ declare the variables and functions as dllexport, but when ++ included by client code the header must declare them as ++ dllimport. There are a number of idioms that are typically ++ used to do this; often client code can omit the __declspec() ++ declaration completely. See `--enable-auto-import' and ++ `automatic data imports' for more imformation. ++ ++_automatic data imports_ ++ The standard Windows dll format supports data imports from dlls ++ only by adding special decorations (dllimport/dllexport), which ++ let the compiler produce specific assembler instructions to deal ++ with this issue. This increases the effort necessary to port ++ existing Un*x code to these platforms, especially for large c++ ++ libraries and applications. The auto-import feature, which was ++ initially provided by Paul Sokolovsky, allows one to omit the ++ decorations to archieve a behavior that conforms to that on ++ POSIX/Un*x platforms. This feature is enabled with the ++ `--enable-auto-import' command-line option, although it is enabled ++ by default on cygwin/mingw. The `--enable-auto-import' option ++ itself now serves mainly to suppress any warnings that are ++ ordinarily emitted when linked objects trigger the feature's use. ++ ++ auto-import of variables does not always work flawlessly without ++ additional assistance. Sometimes, you will see this message ++ ++ "variable '' can't be auto-imported. Please read the ++ documentation for ld's `--enable-auto-import' for details." ++ ++ The `--enable-auto-import' documentation explains why this error ++ occurs, and several methods that can be used to overcome this ++ difficulty. One of these methods is the _runtime pseudo-relocs_ ++ feature, described below. ++ ++ For complex variables imported from DLLs (such as structs or ++ classes), object files typically contain a base address for the ++ variable and an offset (_addend_) within the variable-to specify a ++ particular field or public member, for instance. Unfortunately, ++ the runtime loader used in win32 environments is incapable of ++ fixing these references at runtime without the additional ++ information supplied by dllimport/dllexport decorations. The ++ standard auto-import feature described above is unable to resolve ++ these references. ++ ++ The `--enable-runtime-pseudo-relocs' switch allows these ++ references to be resolved without error, while leaving the task of ++ adjusting the references themselves (with their non-zero addends) ++ to specialized code provided by the runtime environment. Recent ++ versions of the cygwin and mingw environments and compilers ++ provide this runtime support; older versions do not. However, the ++ support is only necessary on the developer's platform; the ++ compiled result will run without error on an older system. ++ ++ `--enable-runtime-pseudo-relocs' is not the default; it must be ++ explicitly enabled as needed. ++ ++_direct linking to a dll_ ++ The cygwin/mingw ports of `ld' support the direct linking, ++ including data symbols, to a dll without the usage of any import ++ libraries. This is much faster and uses much less memory than ++ does the traditional import library method, expecially when ++ linking large libraries or applications. When `ld' creates an ++ import lib, each function or variable exported from the dll is ++ stored in its own bfd, even though a single bfd could contain many ++ exports. The overhead involved in storing, loading, and ++ processing so many bfd's is quite large, and explains the ++ tremendous time, memory, and storage needed to link against ++ particularly large or complex libraries when using import libs. ++ ++ Linking directly to a dll uses no extra command-line switches ++ other than `-L' and `-l', because `ld' already searches for a ++ number of names to match each library. All that is needed from ++ the developer's perspective is an understanding of this search, in ++ order to force ld to select the dll instead of an import library. ++ ++ For instance, when ld is called with the argument `-lxxx' it will ++ attempt to find, in the first directory of its search path, ++ ++ libxxx.dll.a ++ xxx.dll.a ++ libxxx.a ++ cygxxx.dll (*) ++ libxxx.dll ++ xxx.dll ++ ++ before moving on to the next directory in the search path. ++ ++ (*) Actually, this is not `cygxxx.dll' but in fact is ++ `xxx.dll', where `' is set by the `ld' option ++ `--dll-search-prefix='. In the case of cygwin, the ++ standard gcc spec file includes `--dll-search-prefix=cyg', so in ++ effect we actually search for `cygxxx.dll'. ++ ++ Other win32-based unix environments, such as mingw or pw32, may ++ use other `'es, although at present only cygwin makes use ++ of this feature. It was originally intended to help avoid name ++ conflicts among dll's built for the various win32/un*x ++ environments, so that (for example) two versions of a zlib dll ++ could coexist on the same machine. ++ ++ The generic cygwin/mingw path layout uses a `bin' directory for ++ applications and dll's and a `lib' directory for the import ++ libraries (using cygwin nomenclature): ++ ++ bin/ ++ cygxxx.dll ++ lib/ ++ libxxx.dll.a (in case of dll's) ++ libxxx.a (in case of static archive) ++ ++ Linking directly to a dll without using the import library can be ++ done two ways: ++ ++ 1. Use the dll directly by adding the `bin' path to the link line ++ gcc -Wl,-verbose -o a.exe -L../bin/ -lxxx ++ ++ However, as the dll's often have version numbers appended to their ++ names (`cygncurses-5.dll') this will often fail, unless one ++ specifies `-L../bin -lncurses-5' to include the version. Import ++ libs are generally not versioned, and do not have this difficulty. ++ ++ 2. Create a symbolic link from the dll to a file in the `lib' ++ directory according to the above mentioned search pattern. This ++ should be used to avoid unwanted changes in the tools needed for ++ making the app/dll. ++ ++ ln -s bin/cygxxx.dll lib/[cyg|lib|]xxx.dll[.a] ++ ++ Then you can link without any make environment changes. ++ ++ gcc -Wl,-verbose -o a.exe -L../lib/ -lxxx ++ ++ This technique also avoids the version number problems, because ++ the following is perfectly legal ++ ++ bin/ ++ cygxxx-5.dll ++ lib/ ++ libxxx.dll.a -> ../bin/cygxxx-5.dll ++ ++ Linking directly to a dll without using an import lib will work ++ even when auto-import features are exercised, and even when ++ `--enable-runtime-pseudo-relocs' is used. ++ ++ Given the improvements in speed and memory usage, one might ++ justifiably wonder why import libraries are used at all. There ++ are two reasons: ++ ++ 1. Until recently, the link-directly-to-dll functionality did _not_ ++ work with auto-imported data. ++ ++ 2. Sometimes it is necessary to include pure static objects within ++ the import library (which otherwise contains only bfd's for ++ indirection symbols that point to the exports of a dll). Again, ++ the import lib for the cygwin kernel makes use of this ability, ++ and it is not possible to do this without an import lib. ++ ++ So, import libs are not going away. But the ability to replace ++ true import libs with a simple symbolic link to (or a copy of) a ++ dll, in most cases, is a useful addition to the suite of tools ++ binutils makes available to the win32 developer. Given the ++ massive improvements in memory requirements during linking, storage ++ requirements, and linking speed, we expect that many developers ++ will soon begin to use this feature whenever possible. ++ ++_symbol aliasing_ ++ ++ _adding additional names_ ++ Sometimes, it is useful to export symbols with additional ++ names. A symbol `foo' will be exported as `foo', but it can ++ also be exported as `_foo' by using special directives in the ++ DEF file when creating the dll. This will affect also the ++ optional created import library. Consider the following DEF ++ file: ++ ++ LIBRARY "xyz.dll" BASE=0x61000000 ++ ++ EXPORTS ++ foo ++ _foo = foo ++ ++ The line `_foo = foo' maps the symbol `foo' to `_foo'. ++ ++ Another method for creating a symbol alias is to create it in ++ the source code using the "weak" attribute: ++ ++ void foo () { /* Do something. */; } ++ void _foo () __attribute__ ((weak, alias ("foo"))); ++ ++ See the gcc manual for more information about attributes and ++ weak symbols. ++ ++ _renaming symbols_ ++ Sometimes it is useful to rename exports. For instance, the ++ cygwin kernel does this regularly. A symbol `_foo' can be ++ exported as `foo' but not as `_foo' by using special ++ directives in the DEF file. (This will also affect the import ++ library, if it is created). In the following example: ++ ++ LIBRARY "xyz.dll" BASE=0x61000000 ++ ++ EXPORTS ++ _foo = foo ++ ++ The line `_foo = foo' maps the exported symbol `foo' to ++ `_foo'. ++ ++ Note: using a DEF file disables the default auto-export behavior, ++ unless the `--export-all-symbols' command line option is used. ++ If, however, you are trying to rename symbols, then you should list ++ _all_ desired exports in the DEF file, including the symbols that ++ are not being renamed, and do _not_ use the `--export-all-symbols' ++ option. If you list only the renamed symbols in the DEF file, and ++ use `--export-all-symbols' to handle the other symbols, then the ++ both the new names _and_ the original names for the renamed ++ symbols will be exported. In effect, you'd be aliasing those ++ symbols, not renaming them, which is probably not what you wanted. ++ ++_weak externals_ ++ The Windows object format, PE, specifies a form of weak symbols ++ called weak externals. When a weak symbol is linked and the ++ symbol is not defined, the weak symbol becomes an alias for some ++ other symbol. There are three variants of weak externals: ++ * Definition is searched for in objects and libraries, ++ historically called lazy externals. ++ ++ * Definition is searched for only in other objects, not in ++ libraries. This form is not presently implemented. ++ ++ * No search; the symbol is an alias. This form is not presently ++ implemented. ++ As a GNU extension, weak symbols that do not specify an alternate ++ symbol are supported. If the symbol is undefined when linking, ++ the symbol uses a default value. ++ ++ ++File: ld.info, Node: Xtensa, Prev: WIN32, Up: Machine Dependent ++ ++4.11 `ld' and Xtensa Processors ++=============================== ++ ++The default `ld' behavior for Xtensa processors is to interpret ++`SECTIONS' commands so that lists of explicitly named sections in a ++specification with a wildcard file will be interleaved when necessary to ++keep literal pools within the range of PC-relative load offsets. For ++example, with the command: ++ ++ SECTIONS ++ { ++ .text : { ++ *(.literal .text) ++ } ++ } ++ ++`ld' may interleave some of the `.literal' and `.text' sections from ++different object files to ensure that the literal pools are within the ++range of PC-relative load offsets. A valid interleaving might place ++the `.literal' sections from an initial group of files followed by the ++`.text' sections of that group of files. Then, the `.literal' sections ++from the rest of the files and the `.text' sections from the rest of ++the files would follow. ++ ++ Relaxation is enabled by default for the Xtensa version of `ld' and ++provides two important link-time optimizations. The first optimization ++is to combine identical literal values to reduce code size. A redundant ++literal will be removed and all the `L32R' instructions that use it ++will be changed to reference an identical literal, as long as the ++location of the replacement literal is within the offset range of all ++the `L32R' instructions. The second optimization is to remove ++unnecessary overhead from assembler-generated "longcall" sequences of ++`L32R'/`CALLXN' when the target functions are within range of direct ++`CALLN' instructions. ++ ++ For each of these cases where an indirect call sequence can be ++optimized to a direct call, the linker will change the `CALLXN' ++instruction to a `CALLN' instruction, remove the `L32R' instruction, ++and remove the literal referenced by the `L32R' instruction if it is ++not used for anything else. Removing the `L32R' instruction always ++reduces code size but can potentially hurt performance by changing the ++alignment of subsequent branch targets. By default, the linker will ++always preserve alignments, either by switching some instructions ++between 24-bit encodings and the equivalent density instructions or by ++inserting a no-op in place of the `L32R' instruction that was removed. ++If code size is more important than performance, the `--size-opt' ++option can be used to prevent the linker from widening density ++instructions or inserting no-ops, except in a few cases where no-ops ++are required for correctness. ++ ++ The following Xtensa-specific command-line options can be used to ++control the linker: ++ ++`--no-relax' ++ Since the Xtensa version of `ld' enables the `--relax' option by ++ default, the `--no-relax' option is provided to disable relaxation. ++ ++`--size-opt' ++ When optimizing indirect calls to direct calls, optimize for code ++ size more than performance. With this option, the linker will not ++ insert no-ops or widen density instructions to preserve branch ++ target alignment. There may still be some cases where no-ops are ++ required to preserve the correctness of the code. ++ ++ ++File: ld.info, Node: BFD, Next: Reporting Bugs, Prev: Machine Dependent, Up: Top ++ ++5 BFD ++***** ++ ++The linker accesses object and archive files using the BFD libraries. ++These libraries allow the linker to use the same routines to operate on ++object files whatever the object file format. A different object file ++format can be supported simply by creating a new BFD back end and adding ++it to the library. To conserve runtime memory, however, the linker and ++associated tools are usually configured to support only a subset of the ++object file formats available. You can use `objdump -i' (*note ++objdump: (binutils.info)objdump.) to list all the formats available for ++your configuration. ++ ++ As with most implementations, BFD is a compromise between several ++conflicting requirements. The major factor influencing BFD design was ++efficiency: any time used converting between formats is time which ++would not have been spent had BFD not been involved. This is partly ++offset by abstraction payback; since BFD simplifies applications and ++back ends, more time and care may be spent optimizing algorithms for a ++greater speed. ++ ++ One minor artifact of the BFD solution which you should bear in mind ++is the potential for information loss. There are two places where ++useful information can be lost using the BFD mechanism: during ++conversion and during output. *Note BFD information loss::. ++ ++* Menu: ++ ++* BFD outline:: How it works: an outline of BFD ++ ++ ++File: ld.info, Node: BFD outline, Up: BFD ++ ++5.1 How It Works: An Outline of BFD ++=================================== ++ ++When an object file is opened, BFD subroutines automatically determine ++the format of the input object file. They then build a descriptor in ++memory with pointers to routines that will be used to access elements of ++the object file's data structures. ++ ++ As different information from the object files is required, BFD ++reads from different sections of the file and processes them. For ++example, a very common operation for the linker is processing symbol ++tables. Each BFD back end provides a routine for converting between ++the object file's representation of symbols and an internal canonical ++format. When the linker asks for the symbol table of an object file, it ++calls through a memory pointer to the routine from the relevant BFD ++back end which reads and converts the table into a canonical form. The ++linker then operates upon the canonical form. When the link is finished ++and the linker writes the output file's symbol table, another BFD back ++end routine is called to take the newly created symbol table and ++convert it into the chosen output format. ++ ++* Menu: ++ ++* BFD information loss:: Information Loss ++* Canonical format:: The BFD canonical object-file format ++ ++ ++File: ld.info, Node: BFD information loss, Next: Canonical format, Up: BFD outline ++ ++5.1.1 Information Loss ++---------------------- ++ ++_Information can be lost during output._ The output formats supported ++by BFD do not provide identical facilities, and information which can ++be described in one form has nowhere to go in another format. One ++example of this is alignment information in `b.out'. There is nowhere ++in an `a.out' format file to store alignment information on the ++contained data, so when a file is linked from `b.out' and an `a.out' ++image is produced, alignment information will not propagate to the ++output file. (The linker will still use the alignment information ++internally, so the link is performed correctly). ++ ++ Another example is COFF section names. COFF files may contain an ++unlimited number of sections, each one with a textual section name. If ++the target of the link is a format which does not have many sections ++(e.g., `a.out') or has sections without names (e.g., the Oasys format), ++the link cannot be done simply. You can circumvent this problem by ++describing the desired input-to-output section mapping with the linker ++command language. ++ ++ _Information can be lost during canonicalization._ The BFD internal ++canonical form of the external formats is not exhaustive; there are ++structures in input formats for which there is no direct representation ++internally. This means that the BFD back ends cannot maintain all ++possible data richness through the transformation between external to ++internal and back to external formats. ++ ++ This limitation is only a problem when an application reads one ++format and writes another. Each BFD back end is responsible for ++maintaining as much data as possible, and the internal BFD canonical ++form has structures which are opaque to the BFD core, and exported only ++to the back ends. When a file is read in one format, the canonical form ++is generated for BFD and the application. At the same time, the back ++end saves away any information which may otherwise be lost. If the data ++is then written back in the same format, the back end routine will be ++able to use the canonical form provided by the BFD core as well as the ++information it prepared earlier. Since there is a great deal of ++commonality between back ends, there is no information lost when ++linking or copying big endian COFF to little endian COFF, or `a.out' to ++`b.out'. When a mixture of formats is linked, the information is only ++lost from the files whose format differs from the destination. ++ ++ ++File: ld.info, Node: Canonical format, Prev: BFD information loss, Up: BFD outline ++ ++5.1.2 The BFD canonical object-file format ++------------------------------------------ ++ ++The greatest potential for loss of information occurs when there is the ++least overlap between the information provided by the source format, ++that stored by the canonical format, and that needed by the destination ++format. A brief description of the canonical form may help you ++understand which kinds of data you can count on preserving across ++conversions. ++ ++_files_ ++ Information stored on a per-file basis includes target machine ++ architecture, particular implementation format type, a demand ++ pageable bit, and a write protected bit. Information like Unix ++ magic numbers is not stored here--only the magic numbers' meaning, ++ so a `ZMAGIC' file would have both the demand pageable bit and the ++ write protected text bit set. The byte order of the target is ++ stored on a per-file basis, so that big- and little-endian object ++ files may be used with one another. ++ ++_sections_ ++ Each section in the input file contains the name of the section, ++ the section's original address in the object file, size and ++ alignment information, various flags, and pointers into other BFD ++ data structures. ++ ++_symbols_ ++ Each symbol contains a pointer to the information for the object ++ file which originally defined it, its name, its value, and various ++ flag bits. When a BFD back end reads in a symbol table, it ++ relocates all symbols to make them relative to the base of the ++ section where they were defined. Doing this ensures that each ++ symbol points to its containing section. Each symbol also has a ++ varying amount of hidden private data for the BFD back end. Since ++ the symbol points to the original file, the private data format ++ for that symbol is accessible. `ld' can operate on a collection ++ of symbols of wildly different formats without problems. ++ ++ Normal global and simple local symbols are maintained on output, ++ so an output file (no matter its format) will retain symbols ++ pointing to functions and to global, static, and common variables. ++ Some symbol information is not worth retaining; in `a.out', type ++ information is stored in the symbol table as long symbol names. ++ This information would be useless to most COFF debuggers; the ++ linker has command line switches to allow users to throw it away. ++ ++ There is one word of type information within the symbol, so if the ++ format supports symbol type information within symbols (for ++ example, COFF, IEEE, Oasys) and the type is simple enough to fit ++ within one word (nearly everything but aggregates), the ++ information will be preserved. ++ ++_relocation level_ ++ Each canonical BFD relocation record contains a pointer to the ++ symbol to relocate to, the offset of the data to relocate, the ++ section the data is in, and a pointer to a relocation type ++ descriptor. Relocation is performed by passing messages through ++ the relocation type descriptor and the symbol pointer. Therefore, ++ relocations can be performed on output data using a relocation ++ method that is only available in one of the input formats. For ++ instance, Oasys provides a byte relocation format. A relocation ++ record requesting this relocation type would point indirectly to a ++ routine to perform this, so the relocation may be performed on a ++ byte being written to a 68k COFF file, even though 68k COFF has no ++ such relocation type. ++ ++_line numbers_ ++ Object formats can contain, for debugging purposes, some form of ++ mapping between symbols, source line numbers, and addresses in the ++ output file. These addresses have to be relocated along with the ++ symbol information. Each symbol with an associated list of line ++ number records points to the first record of the list. The head ++ of a line number list consists of a pointer to the symbol, which ++ allows finding out the address of the function whose line number ++ is being described. The rest of the list is made up of pairs: ++ offsets into the section and line numbers. Any format which can ++ simply derive this information can pass it successfully between ++ formats (COFF, IEEE and Oasys). ++ ++ ++File: ld.info, Node: Reporting Bugs, Next: MRI, Prev: BFD, Up: Top ++ ++6 Reporting Bugs ++**************** ++ ++Your bug reports play an essential role in making `ld' reliable. ++ ++ Reporting a bug may help you by bringing a solution to your problem, ++or it may not. But in any case the principal function of a bug report ++is to help the entire community by making the next version of `ld' work ++better. Bug reports are your contribution to the maintenance of `ld'. ++ ++ In order for a bug report to serve its purpose, you must include the ++information that enables us to fix the bug. ++ ++* Menu: ++ ++* Bug Criteria:: Have you found a bug? ++* Bug Reporting:: How to report bugs ++ ++ ++File: ld.info, Node: Bug Criteria, Next: Bug Reporting, Up: Reporting Bugs ++ ++6.1 Have You Found a Bug? ++========================= ++ ++If you are not sure whether you have found a bug, here are some ++guidelines: ++ ++ * If the linker gets a fatal signal, for any input whatever, that is ++ a `ld' bug. Reliable linkers never crash. ++ ++ * If `ld' produces an error message for valid input, that is a bug. ++ ++ * If `ld' does not produce an error message for invalid input, that ++ may be a bug. In the general case, the linker can not verify that ++ object files are correct. ++ ++ * If you are an experienced user of linkers, your suggestions for ++ improvement of `ld' are welcome in any case. ++ ++ ++File: ld.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Reporting Bugs ++ ++6.2 How to Report Bugs ++====================== ++ ++A number of companies and individuals offer support for GNU products. ++If you obtained `ld' from a support organization, we recommend you ++contact that organization first. ++ ++ You can find contact information for many support companies and ++individuals in the file `etc/SERVICE' in the GNU Emacs distribution. ++ ++ Otherwise, send bug reports for `ld' to `bug-binutils@gnu.org'. ++ ++ The fundamental principle of reporting bugs usefully is this: ++*report all the facts*. If you are not sure whether to state a fact or ++leave it out, state it! ++ ++ Often people omit facts because they think they know what causes the ++problem and assume that some details do not matter. Thus, you might ++assume that the name of a symbol you use in an example does not matter. ++Well, probably it does not, but one cannot be sure. Perhaps the bug ++is a stray memory reference which happens to fetch from the location ++where that name is stored in memory; perhaps, if the name were ++different, the contents of that location would fool the linker into ++doing the right thing despite the bug. Play it safe and give a ++specific, complete example. That is the easiest thing for you to do, ++and the most helpful. ++ ++ Keep in mind that the purpose of a bug report is to enable us to fix ++the bug if it is new to us. Therefore, always write your bug reports ++on the assumption that the bug has not been reported previously. ++ ++ Sometimes people give a few sketchy facts and ask, "Does this ring a ++bell?" This cannot help us fix a bug, so it is basically useless. We ++respond by asking for enough details to enable us to investigate. You ++might as well expedite matters by sending them to begin with. ++ ++ To enable us to fix the bug, you should include all these things: ++ ++ * The version of `ld'. `ld' announces it if you start it with the ++ `--version' argument. ++ ++ Without this, we will not know whether there is any point in ++ looking for the bug in the current version of `ld'. ++ ++ * Any patches you may have applied to the `ld' source, including any ++ patches made to the `BFD' library. ++ ++ * The type of machine you are using, and the operating system name ++ and version number. ++ ++ * What compiler (and its version) was used to compile `ld'--e.g. ++ "`gcc-2.7'". ++ ++ * The command arguments you gave the linker to link your example and ++ observe the bug. To guarantee you will not omit something ++ important, list them all. A copy of the Makefile (or the output ++ from make) is sufficient. ++ ++ If we were to try to guess the arguments, we would probably guess ++ wrong and then we might not encounter the bug. ++ ++ * A complete input file, or set of input files, that will reproduce ++ the bug. It is generally most helpful to send the actual object ++ files provided that they are reasonably small. Say no more than ++ 10K. For bigger files you can either make them available by FTP ++ or HTTP or else state that you are willing to send the object ++ file(s) to whomever requests them. (Note - your email will be ++ going to a mailing list, so we do not want to clog it up with ++ large attachments). But small attachments are best. ++ ++ If the source files were assembled using `gas' or compiled using ++ `gcc', then it may be OK to send the source files rather than the ++ object files. In this case, be sure to say exactly what version of ++ `gas' or `gcc' was used to produce the object files. Also say how ++ `gas' or `gcc' were configured. ++ ++ * A description of what behavior you observe that you believe is ++ incorrect. For example, "It gets a fatal signal." ++ ++ Of course, if the bug is that `ld' gets a fatal signal, then we ++ will certainly notice it. But if the bug is incorrect output, we ++ might not notice unless it is glaringly wrong. You might as well ++ not give us a chance to make a mistake. ++ ++ Even if the problem you experience is a fatal signal, you should ++ still say so explicitly. Suppose something strange is going on, ++ such as, your copy of `ld' is out of synch, or you have ++ encountered a bug in the C library on your system. (This has ++ happened!) Your copy might crash and ours would not. If you told ++ us to expect a crash, then when ours fails to crash, we would know ++ that the bug was not happening for us. If you had not told us to ++ expect a crash, then we would not be able to draw any conclusion ++ from our observations. ++ ++ * If you wish to suggest changes to the `ld' source, send us context ++ diffs, as generated by `diff' with the `-u', `-c', or `-p' option. ++ Always send diffs from the old file to the new file. If you even ++ discuss something in the `ld' source, refer to it by context, not ++ by line number. ++ ++ The line numbers in our development sources will not match those ++ in your sources. Your line numbers would convey no useful ++ information to us. ++ ++ Here are some things that are not necessary: ++ ++ * A description of the envelope of the bug. ++ ++ Often people who encounter a bug spend a lot of time investigating ++ which changes to the input file will make the bug go away and which ++ changes will not affect it. ++ ++ This is often time consuming and not very useful, because the way ++ we will find the bug is by running a single example under the ++ debugger with breakpoints, not by pure deduction from a series of ++ examples. We recommend that you save your time for something else. ++ ++ Of course, if you can find a simpler example to report _instead_ ++ of the original one, that is a convenience for us. Errors in the ++ output will be easier to spot, running under the debugger will take ++ less time, and so on. ++ ++ However, simplification is not vital; if you do not want to do ++ this, report the bug anyway and send us the entire test case you ++ used. ++ ++ * A patch for the bug. ++ ++ A patch for the bug does help us if it is a good one. But do not ++ omit the necessary information, such as the test case, on the ++ assumption that a patch is all we need. We might see problems ++ with your patch and decide to fix the problem another way, or we ++ might not understand it at all. ++ ++ Sometimes with a program as complicated as `ld' it is very hard to ++ construct an example that will make the program follow a certain ++ path through the code. If you do not send us the example, we will ++ not be able to construct one, so we will not be able to verify ++ that the bug is fixed. ++ ++ And if we cannot understand what bug you are trying to fix, or why ++ your patch should be an improvement, we will not install it. A ++ test case will help us to understand. ++ ++ * A guess about what the bug is or what it depends on. ++ ++ Such guesses are usually wrong. Even we cannot guess right about ++ such things without first using the debugger to find the facts. ++ ++ ++File: ld.info, Node: MRI, Next: GNU Free Documentation License, Prev: Reporting Bugs, Up: Top ++ ++Appendix A MRI Compatible Script Files ++************************************** ++ ++To aid users making the transition to GNU `ld' from the MRI linker, ++`ld' can use MRI compatible linker scripts as an alternative to the ++more general-purpose linker scripting language described in *Note ++Scripts::. MRI compatible linker scripts have a much simpler command ++set than the scripting language otherwise used with `ld'. GNU `ld' ++supports the most commonly used MRI linker commands; these commands are ++described here. ++ ++ In general, MRI scripts aren't of much use with the `a.out' object ++file format, since it only has three sections and MRI scripts lack some ++features to make use of them. ++ ++ You can specify a file containing an MRI-compatible script using the ++`-c' command-line option. ++ ++ Each command in an MRI-compatible script occupies its own line; each ++command line starts with the keyword that identifies the command (though ++blank lines are also allowed for punctuation). If a line of an ++MRI-compatible script begins with an unrecognized keyword, `ld' issues ++a warning message, but continues processing the script. ++ ++ Lines beginning with `*' are comments. ++ ++ You can write these commands using all upper-case letters, or all ++lower case; for example, `chip' is the same as `CHIP'. The following ++list shows only the upper-case form of each command. ++ ++`ABSOLUTE SECNAME' ++`ABSOLUTE SECNAME, SECNAME, ... SECNAME' ++ Normally, `ld' includes in the output file all sections from all ++ the input files. However, in an MRI-compatible script, you can ++ use the `ABSOLUTE' command to restrict the sections that will be ++ present in your output program. If the `ABSOLUTE' command is used ++ at all in a script, then only the sections named explicitly in ++ `ABSOLUTE' commands will appear in the linker output. You can ++ still use other input sections (whatever you select on the command ++ line, or using `LOAD') to resolve addresses in the output file. ++ ++`ALIAS OUT-SECNAME, IN-SECNAME' ++ Use this command to place the data from input section IN-SECNAME ++ in a section called OUT-SECNAME in the linker output file. ++ ++ IN-SECNAME may be an integer. ++ ++`ALIGN SECNAME = EXPRESSION' ++ Align the section called SECNAME to EXPRESSION. The EXPRESSION ++ should be a power of two. ++ ++`BASE EXPRESSION' ++ Use the value of EXPRESSION as the lowest address (other than ++ absolute addresses) in the output file. ++ ++`CHIP EXPRESSION' ++`CHIP EXPRESSION, EXPRESSION' ++ This command does nothing; it is accepted only for compatibility. ++ ++`END' ++ This command does nothing whatever; it's only accepted for ++ compatibility. ++ ++`FORMAT OUTPUT-FORMAT' ++ Similar to the `OUTPUT_FORMAT' command in the more general linker ++ language, but restricted to one of these output formats: ++ ++ 1. S-records, if OUTPUT-FORMAT is `S' ++ ++ 2. IEEE, if OUTPUT-FORMAT is `IEEE' ++ ++ 3. COFF (the `coff-m68k' variant in BFD), if OUTPUT-FORMAT is ++ `COFF' ++ ++`LIST ANYTHING...' ++ Print (to the standard output file) a link map, as produced by the ++ `ld' command-line option `-M'. ++ ++ The keyword `LIST' may be followed by anything on the same line, ++ with no change in its effect. ++ ++`LOAD FILENAME' ++`LOAD FILENAME, FILENAME, ... FILENAME' ++ Include one or more object file FILENAME in the link; this has the ++ same effect as specifying FILENAME directly on the `ld' command ++ line. ++ ++`NAME OUTPUT-NAME' ++ OUTPUT-NAME is the name for the program produced by `ld'; the ++ MRI-compatible command `NAME' is equivalent to the command-line ++ option `-o' or the general script language command `OUTPUT'. ++ ++`ORDER SECNAME, SECNAME, ... SECNAME' ++`ORDER SECNAME SECNAME SECNAME' ++ Normally, `ld' orders the sections in its output file in the order ++ in which they first appear in the input files. In an ++ MRI-compatible script, you can override this ordering with the ++ `ORDER' command. The sections you list with `ORDER' will appear ++ first in your output file, in the order specified. ++ ++`PUBLIC NAME=EXPRESSION' ++`PUBLIC NAME,EXPRESSION' ++`PUBLIC NAME EXPRESSION' ++ Supply a value (EXPRESSION) for external symbol NAME used in the ++ linker input files. ++ ++`SECT SECNAME, EXPRESSION' ++`SECT SECNAME=EXPRESSION' ++`SECT SECNAME EXPRESSION' ++ You can use any of these three forms of the `SECT' command to ++ specify the start address (EXPRESSION) for section SECNAME. If ++ you have more than one `SECT' statement for the same SECNAME, only ++ the _first_ sets the start address. ++ ++ ++File: ld.info, Node: GNU Free Documentation License, Next: Index, Prev: MRI, Up: Top ++ ++Appendix B GNU Free Documentation License ++***************************************** ++ ++ Version 1.1, March 2000 ++ ++ Copyright (C) 2000, 2003 Free Software Foundation, Inc. ++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Everyone is permitted to copy and distribute verbatim copies ++ of this license document, but changing it is not allowed. ++ ++ ++ 0. PREAMBLE ++ ++ The purpose of this License is to make a manual, textbook, or other ++ written document "free" in the sense of freedom: to assure everyone ++ the effective freedom to copy and redistribute it, with or without ++ modifying it, either commercially or noncommercially. Secondarily, ++ this License preserves for the author and publisher a way to get ++ credit for their work, while not being considered responsible for ++ modifications made by others. ++ ++ This License is a kind of "copyleft", which means that derivative ++ works of the document must themselves be free in the same sense. ++ It complements the GNU General Public License, which is a copyleft ++ license designed for free software. ++ ++ We have designed this License in order to use it for manuals for ++ free software, because free software needs free documentation: a ++ free program should come with manuals providing the same freedoms ++ that the software does. But this License is not limited to ++ software manuals; it can be used for any textual work, regardless ++ of subject matter or whether it is published as a printed book. ++ We recommend this License principally for works whose purpose is ++ instruction or reference. ++ ++ ++ 1. APPLICABILITY AND DEFINITIONS ++ ++ This License applies to any manual or other work that contains a ++ notice placed by the copyright holder saying it can be distributed ++ under the terms of this License. The "Document", below, refers to ++ any such manual or work. Any member of the public is a licensee, ++ and is addressed as "you." ++ ++ A "Modified Version" of the Document means any work containing the ++ Document or a portion of it, either copied verbatim, or with ++ modifications and/or translated into another language. ++ ++ A "Secondary Section" is a named appendix or a front-matter ++ section of the Document that deals exclusively with the ++ relationship of the publishers or authors of the Document to the ++ Document's overall subject (or to related matters) and contains ++ nothing that could fall directly within that overall subject. ++ (For example, if the Document is in part a textbook of ++ mathematics, a Secondary Section may not explain any mathematics.) ++ The relationship could be a matter of historical connection with ++ the subject or with related matters, or of legal, commercial, ++ philosophical, ethical or political position regarding them. ++ ++ The "Invariant Sections" are certain Secondary Sections whose ++ titles are designated, as being those of Invariant Sections, in ++ the notice that says that the Document is released under this ++ License. ++ ++ The "Cover Texts" are certain short passages of text that are ++ listed, as Front-Cover Texts or Back-Cover Texts, in the notice ++ that says that the Document is released under this License. ++ ++ A "Transparent" copy of the Document means a machine-readable copy, ++ represented in a format whose specification is available to the ++ general public, whose contents can be viewed and edited directly ++ and straightforwardly with generic text editors or (for images ++ composed of pixels) generic paint programs or (for drawings) some ++ widely available drawing editor, and that is suitable for input to ++ text formatters or for automatic translation to a variety of ++ formats suitable for input to text formatters. A copy made in an ++ otherwise Transparent file format whose markup has been designed ++ to thwart or discourage subsequent modification by readers is not ++ Transparent. A copy that is not "Transparent" is called "Opaque." ++ ++ Examples of suitable formats for Transparent copies include plain ++ ASCII without markup, Texinfo input format, LaTeX input format, ++ SGML or XML using a publicly available DTD, and ++ standard-conforming simple HTML designed for human modification. ++ Opaque formats include PostScript, PDF, proprietary formats that ++ can be read and edited only by proprietary word processors, SGML ++ or XML for which the DTD and/or processing tools are not generally ++ available, and the machine-generated HTML produced by some word ++ processors for output purposes only. ++ ++ The "Title Page" means, for a printed book, the title page itself, ++ plus such following pages as are needed to hold, legibly, the ++ material this License requires to appear in the title page. For ++ works in formats which do not have any title page as such, "Title ++ Page" means the text near the most prominent appearance of the ++ work's title, preceding the beginning of the body of the text. ++ ++ 2. VERBATIM COPYING ++ ++ You may copy and distribute the Document in any medium, either ++ commercially or noncommercially, provided that this License, the ++ copyright notices, and the license notice saying this License ++ applies to the Document are reproduced in all copies, and that you ++ add no other conditions whatsoever to those of this License. You ++ may not use technical measures to obstruct or control the reading ++ or further copying of the copies you make or distribute. However, ++ you may accept compensation in exchange for copies. If you ++ distribute a large enough number of copies you must also follow ++ the conditions in section 3. ++ ++ You may also lend copies, under the same conditions stated above, ++ and you may publicly display copies. ++ ++ 3. COPYING IN QUANTITY ++ ++ If you publish printed copies of the Document numbering more than ++ 100, and the Document's license notice requires Cover Texts, you ++ must enclose the copies in covers that carry, clearly and legibly, ++ all these Cover Texts: Front-Cover Texts on the front cover, and ++ Back-Cover Texts on the back cover. Both covers must also clearly ++ and legibly identify you as the publisher of these copies. The ++ front cover must present the full title with all words of the ++ title equally prominent and visible. You may add other material ++ on the covers in addition. Copying with changes limited to the ++ covers, as long as they preserve the title of the Document and ++ satisfy these conditions, can be treated as verbatim copying in ++ other respects. ++ ++ If the required texts for either cover are too voluminous to fit ++ legibly, you should put the first ones listed (as many as fit ++ reasonably) on the actual cover, and continue the rest onto ++ adjacent pages. ++ ++ If you publish or distribute Opaque copies of the Document ++ numbering more than 100, you must either include a ++ machine-readable Transparent copy along with each Opaque copy, or ++ state in or with each Opaque copy a publicly-accessible ++ computer-network location containing a complete Transparent copy ++ of the Document, free of added material, which the general ++ network-using public has access to download anonymously at no ++ charge using public-standard network protocols. If you use the ++ latter option, you must take reasonably prudent steps, when you ++ begin distribution of Opaque copies in quantity, to ensure that ++ this Transparent copy will remain thus accessible at the stated ++ location until at least one year after the last time you ++ distribute an Opaque copy (directly or through your agents or ++ retailers) of that edition to the public. ++ ++ It is requested, but not required, that you contact the authors of ++ the Document well before redistributing any large number of ++ copies, to give them a chance to provide you with an updated ++ version of the Document. ++ ++ 4. MODIFICATIONS ++ ++ You may copy and distribute a Modified Version of the Document ++ under the conditions of sections 2 and 3 above, provided that you ++ release the Modified Version under precisely this License, with ++ the Modified Version filling the role of the Document, thus ++ licensing distribution and modification of the Modified Version to ++ whoever possesses a copy of it. In addition, you must do these ++ things in the Modified Version: ++ ++ A. Use in the Title Page (and on the covers, if any) a title ++ distinct from that of the Document, and from those of previous ++ versions (which should, if there were any, be listed in the ++ History section of the Document). You may use the same title ++ as a previous version if the original publisher of that version ++ gives permission. ++ B. List on the Title Page, as authors, one or more persons or ++ entities responsible for authorship of the modifications in the ++ Modified Version, together with at least five of the principal ++ authors of the Document (all of its principal authors, if it ++ has less than five). ++ C. State on the Title page the name of the publisher of the ++ Modified Version, as the publisher. ++ D. Preserve all the copyright notices of the Document. ++ E. Add an appropriate copyright notice for your modifications ++ adjacent to the other copyright notices. ++ F. Include, immediately after the copyright notices, a license ++ notice giving the public permission to use the Modified Version ++ under the terms of this License, in the form shown in the ++ Addendum below. ++ G. Preserve in that license notice the full lists of Invariant ++ Sections and required Cover Texts given in the Document's ++ license notice. ++ H. Include an unaltered copy of this License. ++ I. Preserve the section entitled "History", and its title, and add ++ to it an item stating at least the title, year, new authors, and ++ publisher of the Modified Version as given on the Title Page. ++ If there is no section entitled "History" in the Document, ++ create one stating the title, year, authors, and publisher of ++ the Document as given on its Title Page, then add an item ++ describing the Modified Version as stated in the previous ++ sentence. ++ J. Preserve the network location, if any, given in the Document for ++ public access to a Transparent copy of the Document, and ++ likewise the network locations given in the Document for ++ previous versions it was based on. These may be placed in the ++ "History" section. You may omit a network location for a work ++ that was published at least four years before the Document ++ itself, or if the original publisher of the version it refers ++ to gives permission. ++ K. In any section entitled "Acknowledgements" or "Dedications", ++ preserve the section's title, and preserve in the section all the ++ substance and tone of each of the contributor acknowledgements ++ and/or dedications given therein. ++ L. Preserve all the Invariant Sections of the Document, ++ unaltered in their text and in their titles. Section numbers ++ or the equivalent are not considered part of the section titles. ++ M. Delete any section entitled "Endorsements." Such a section ++ may not be included in the Modified Version. ++ N. Do not retitle any existing section as "Endorsements" or to ++ conflict in title with any Invariant Section. ++ ++ If the Modified Version includes new front-matter sections or ++ appendices that qualify as Secondary Sections and contain no ++ material copied from the Document, you may at your option ++ designate some or all of these sections as invariant. To do this, ++ add their titles to the list of Invariant Sections in the Modified ++ Version's license notice. These titles must be distinct from any ++ other section titles. ++ ++ You may add a section entitled "Endorsements", provided it contains ++ nothing but endorsements of your Modified Version by various ++ parties-for example, statements of peer review or that the text has ++ been approved by an organization as the authoritative definition ++ of a standard. ++ ++ You may add a passage of up to five words as a Front-Cover Text, ++ and a passage of up to 25 words as a Back-Cover Text, to the end ++ of the list of Cover Texts in the Modified Version. Only one ++ passage of Front-Cover Text and one of Back-Cover Text may be ++ added by (or through arrangements made by) any one entity. If the ++ Document already includes a cover text for the same cover, ++ previously added by you or by arrangement made by the same entity ++ you are acting on behalf of, you may not add another; but you may ++ replace the old one, on explicit permission from the previous ++ publisher that added the old one. ++ ++ The author(s) and publisher(s) of the Document do not by this ++ License give permission to use their names for publicity for or to ++ assert or imply endorsement of any Modified Version. ++ ++ 5. COMBINING DOCUMENTS ++ ++ You may combine the Document with other documents released under ++ this License, under the terms defined in section 4 above for ++ modified versions, provided that you include in the combination ++ all of the Invariant Sections of all of the original documents, ++ unmodified, and list them all as Invariant Sections of your ++ combined work in its license notice. ++ ++ The combined work need only contain one copy of this License, and ++ multiple identical Invariant Sections may be replaced with a single ++ copy. If there are multiple Invariant Sections with the same name ++ but different contents, make the title of each such section unique ++ by adding at the end of it, in parentheses, the name of the ++ original author or publisher of that section if known, or else a ++ unique number. Make the same adjustment to the section titles in ++ the list of Invariant Sections in the license notice of the ++ combined work. ++ ++ In the combination, you must combine any sections entitled ++ "History" in the various original documents, forming one section ++ entitled "History"; likewise combine any sections entitled ++ "Acknowledgements", and any sections entitled "Dedications." You ++ must delete all sections entitled "Endorsements." ++ ++ 6. COLLECTIONS OF DOCUMENTS ++ ++ You may make a collection consisting of the Document and other ++ documents released under this License, and replace the individual ++ copies of this License in the various documents with a single copy ++ that is included in the collection, provided that you follow the ++ rules of this License for verbatim copying of each of the ++ documents in all other respects. ++ ++ You may extract a single document from such a collection, and ++ distribute it individually under this License, provided you insert ++ a copy of this License into the extracted document, and follow ++ this License in all other respects regarding verbatim copying of ++ that document. ++ ++ 7. AGGREGATION WITH INDEPENDENT WORKS ++ ++ A compilation of the Document or its derivatives with other ++ separate and independent documents or works, in or on a volume of ++ a storage or distribution medium, does not as a whole count as a ++ Modified Version of the Document, provided no compilation ++ copyright is claimed for the compilation. Such a compilation is ++ called an "aggregate", and this License does not apply to the ++ other self-contained works thus compiled with the Document, on ++ account of their being thus compiled, if they are not themselves ++ derivative works of the Document. ++ ++ If the Cover Text requirement of section 3 is applicable to these ++ copies of the Document, then if the Document is less than one ++ quarter of the entire aggregate, the Document's Cover Texts may be ++ placed on covers that surround only the Document within the ++ aggregate. Otherwise they must appear on covers around the whole ++ aggregate. ++ ++ 8. TRANSLATION ++ ++ Translation is considered a kind of modification, so you may ++ distribute translations of the Document under the terms of section ++ 4. Replacing Invariant Sections with translations requires special ++ permission from their copyright holders, but you may include ++ translations of some or all Invariant Sections in addition to the ++ original versions of these Invariant Sections. You may include a ++ translation of this License provided that you also include the ++ original English version of this License. In case of a ++ disagreement between the translation and the original English ++ version of this License, the original English version will prevail. ++ ++ 9. TERMINATION ++ ++ You may not copy, modify, sublicense, or distribute the Document ++ except as expressly provided for under this License. Any other ++ attempt to copy, modify, sublicense or distribute the Document is ++ void, and will automatically terminate your rights under this ++ License. However, parties who have received copies, or rights, ++ from you under this License will not have their licenses ++ terminated so long as such parties remain in full compliance. ++ ++ 10. FUTURE REVISIONS OF THIS LICENSE ++ ++ The Free Software Foundation may publish new, revised versions of ++ the GNU Free Documentation License from time to time. Such new ++ versions will be similar in spirit to the present version, but may ++ differ in detail to address new problems or concerns. See ++ http://www.gnu.org/copyleft/. ++ ++ Each version of the License is given a distinguishing version ++ number. If the Document specifies that a particular numbered ++ version of this License "or any later version" applies to it, you ++ have the option of following the terms and conditions either of ++ that specified version or of any later version that has been ++ published (not as a draft) by the Free Software Foundation. If ++ the Document does not specify a version number of this License, ++ you may choose any version ever published (not as a draft) by the ++ Free Software Foundation. ++ ++ ++ADDENDUM: How to use this License for your documents ++==================================================== ++ ++To use this License in a document you have written, include a copy of ++the License in the document and put the following copyright and license ++notices just after the title page: ++ ++ Copyright (C) YEAR YOUR NAME. ++ Permission is granted to copy, distribute and/or modify this document ++ under the terms of the GNU Free Documentation License, Version 1.1 ++ or any later version published by the Free Software Foundation; ++ with the Invariant Sections being LIST THEIR TITLES, with the ++ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. ++ A copy of the license is included in the section entitled "GNU ++ Free Documentation License." ++ ++ If you have no Invariant Sections, write "with no Invariant Sections" ++instead of saying which ones are invariant. If you have no Front-Cover ++Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being ++LIST"; likewise for Back-Cover Texts. ++ ++ If your document contains nontrivial examples of program code, we ++recommend releasing these examples in parallel under your choice of ++free software license, such as the GNU General Public License, to ++permit their use in free software. ++ ++ ++File: ld.info, Node: Index, Prev: GNU Free Documentation License, Up: Top ++ ++Index ++***** ++ ++[index] ++* Menu: ++ ++* ": Symbols. (line 6) ++* -(: Options. (line 609) ++* --accept-unknown-input-arch: Options. (line 627) ++* --add-needed: Options. (line 649) ++* --add-stdcall-alias: Options. (line 1343) ++* --allow-multiple-definition: Options. (line 819) ++* --allow-shlib-undefined: Options. (line 825) ++* --architecture=ARCH: Options. (line 104) ++* --as-needed: Options. (line 637) ++* --auxiliary: Options. (line 205) ++* --base-file: Options. (line 1348) ++* --be8: ARM. (line 23) ++* --bss-plt: PowerPC ELF32. (line 13) ++* --check-sections: Options. (line 701) ++* --cref: Options. (line 711) ++* --default-imported-symver: Options. (line 853) ++* --default-symver: Options. (line 849) ++* --defsym SYMBOL=EXP: Options. (line 739) ++* --demangle[=STYLE]: Options. (line 752) ++* --disable-auto-image-base: Options. (line 1495) ++* --disable-auto-import: Options. (line 1624) ++* --disable-new-dtags: Options. (line 1295) ++* --disable-runtime-pseudo-reloc: Options. (line 1637) ++* --disable-stdcall-fixup: Options. (line 1358) ++* --discard-all: Options. (line 513) ++* --discard-locals: Options. (line 517) ++* --dll: Options. (line 1353) ++* --dll-search-prefix: Options. (line 1501) ++* --dotsyms: PowerPC64 ELF64. (line 33) ++* --dynamic-linker FILE: Options. (line 765) ++* --eh-frame-hdr: Options. (line 1291) ++* --emit-relocs: Options. (line 415) ++* --emit-stub-syms <1>: PowerPC64 ELF64. (line 29) ++* --emit-stub-syms: PowerPC ELF32. (line 37) ++* --enable-auto-image-base: Options. (line 1487) ++* --enable-auto-import: Options. (line 1510) ++* --enable-extra-pe-debug: Options. (line 1642) ++* --enable-new-dtags: Options. (line 1295) ++* --enable-runtime-pseudo-reloc: Options. (line 1629) ++* --enable-stdcall-fixup: Options. (line 1358) ++* --entry=ENTRY: Options. (line 158) ++* --error-unresolved-symbols: Options. (line 1244) ++* --exclude-libs: Options. (line 168) ++* --exclude-symbols: Options. (line 1400) ++* --export-all-symbols: Options. (line 1376) ++* --export-dynamic: Options. (line 179) ++* --fatal-warnings: Options. (line 771) ++* --file-alignment: Options. (line 1406) ++* --filter: Options. (line 226) ++* --fix-v4bx: ARM. (line 44) ++* --force-dynamic: Options. (line 424) ++* --force-exe-suffix: Options. (line 774) ++* --format=FORMAT: Options. (line 115) ++* --format=VERSION: TI COFF. (line 6) ++* --gc-sections: Options. (line 784) ++* --gpsize: Options. (line 259) ++* --hash-size=NUMBER: Options. (line 1304) ++* --heap: Options. (line 1412) ++* --help: Options. (line 792) ++* --image-base: Options. (line 1419) ++* --just-symbols=FILE: Options. (line 447) ++* --kill-at: Options. (line 1428) ++* --large-address-aware: Options. (line 1433) ++* --library-path=DIR: Options. (line 315) ++* --library=ARCHIVE: Options. (line 285) ++* --major-image-version: Options. (line 1442) ++* --major-os-version: Options. (line 1447) ++* --major-subsystem-version: Options. (line 1451) ++* --minor-image-version: Options. (line 1456) ++* --minor-os-version: Options. (line 1461) ++* --minor-subsystem-version: Options. (line 1465) ++* --mri-script=MRI-CMDFILE: Options. (line 139) ++* --multi-subspace: HPPA ELF32. (line 6) ++* --nmagic: Options. (line 384) ++* --no-accept-unknown-input-arch: Options. (line 627) ++* --no-add-needed: Options. (line 649) ++* --no-allow-shlib-undefined: Options. (line 825) ++* --no-as-needed: Options. (line 637) ++* --no-check-sections: Options. (line 701) ++* --no-define-common: Options. (line 723) ++* --no-demangle: Options. (line 752) ++* --no-dotsyms: PowerPC64 ELF64. (line 33) ++* --no-gc-sections: Options. (line 784) ++* --no-keep-memory: Options. (line 804) ++* --no-multi-toc: PowerPC64 ELF64. (line 74) ++* --no-omagic: Options. (line 398) ++* --no-opd-optimize: PowerPC64 ELF64. (line 48) ++* --no-relax: Xtensa. (line 56) ++* --no-tls-optimize <1>: PowerPC64 ELF64. (line 43) ++* --no-tls-optimize: PowerPC ELF32. (line 41) ++* --no-toc-optimize: PowerPC64 ELF64. (line 60) ++* --no-undefined: Options. (line 811) ++* --no-undefined-version: Options. (line 844) ++* --no-warn-mismatch: Options. (line 857) ++* --no-whole-archive: Options. (line 866) ++* --noinhibit-exec: Options. (line 870) ++* --non-overlapping-opd: PowerPC64 ELF64. (line 54) ++* --oformat: Options. (line 882) ++* --omagic: Options. (line 389) ++* --out-implib: Options. (line 1478) ++* --output-def: Options. (line 1470) ++* --output=OUTPUT: Options. (line 404) ++* --pic-executable: Options. (line 895) ++* --print-map: Options. (line 347) ++* --reduce-memory-overheads: Options. (line 1312) ++* --relax: Options. (line 911) ++* --relax on i960: i960. (line 31) ++* --relax on PowerPC: PowerPC ELF32. (line 6) ++* --relax on Xtensa: Xtensa. (line 27) ++* --relocatable: Options. (line 428) ++* --script=SCRIPT: Options. (line 471) ++* --sdata-got: PowerPC ELF32. (line 23) ++* --section-alignment: Options. (line 1647) ++* --section-start SECTIONNAME=ORG: Options. (line 1081) ++* --sort-common: Options. (line 1028) ++* --sort-section alignment: Options. (line 1038) ++* --sort-section name: Options. (line 1034) ++* --split-by-file: Options. (line 1042) ++* --split-by-reloc: Options. (line 1047) ++* --stack: Options. (line 1653) ++* --stats: Options. (line 1060) ++* --strip-all: Options. (line 458) ++* --strip-debug: Options. (line 462) ++* --stub-group-size: PowerPC64 ELF64. (line 6) ++* --stub-group-size=N: HPPA ELF32. (line 12) ++* --subsystem: Options. (line 1660) ++* --support-old-code: ARM. (line 6) ++* --sysroot: Options. (line 1064) ++* --target-help: Options. (line 796) ++* --target1-abs: ARM. (line 27) ++* --target1-rel: ARM. (line 27) ++* --target2=TYPE: ARM. (line 32) ++* --thumb-entry=ENTRY: ARM. (line 17) ++* --trace: Options. (line 467) ++* --trace-symbol=SYMBOL: Options. (line 522) ++* --traditional-format: Options. (line 1069) ++* --undefined=SYMBOL: Options. (line 480) ++* --unique[=SECTION]: Options. (line 498) ++* --unresolved-symbols: Options. (line 1096) ++* --use-blx: ARM. (line 57) ++* --verbose: Options. (line 1125) ++* --version: Options. (line 507) ++* --version-script=VERSION-SCRIPTFILE: Options. (line 1131) ++* --warn-common: Options. (line 1138) ++* --warn-constructors: Options. (line 1206) ++* --warn-multiple-gp: Options. (line 1211) ++* --warn-once: Options. (line 1225) ++* --warn-section-align: Options. (line 1229) ++* --warn-shared-textrel: Options. (line 1236) ++* --warn-unresolved-symbols: Options. (line 1239) ++* --whole-archive: Options. (line 1248) ++* --wrap: Options. (line 1262) ++* -AARCH: Options. (line 103) ++* -aKEYWORD: Options. (line 96) ++* -assert KEYWORD: Options. (line 659) ++* -b FORMAT: Options. (line 115) ++* -Bdynamic: Options. (line 662) ++* -Bgroup: Options. (line 672) ++* -Bshareable: Options. (line 1020) ++* -Bstatic: Options. (line 679) ++* -Bsymbolic: Options. (line 694) ++* -c MRI-CMDFILE: Options. (line 139) ++* -call_shared: Options. (line 662) ++* -d: Options. (line 149) ++* -dc: Options. (line 149) ++* -dn: Options. (line 679) ++* -dp: Options. (line 149) ++* -dy: Options. (line 662) ++* -E: Options. (line 179) ++* -e ENTRY: Options. (line 158) ++* -EB: Options. (line 198) ++* -EL: Options. (line 201) ++* -F: Options. (line 226) ++* -f: Options. (line 205) ++* -fini: Options. (line 250) ++* -G: Options. (line 259) ++* -g: Options. (line 256) ++* -hNAME: Options. (line 267) ++* -i: Options. (line 276) ++* -IFILE: Options. (line 765) ++* -init: Options. (line 279) ++* -lARCHIVE: Options. (line 285) ++* -LDIR: Options. (line 315) ++* -M: Options. (line 347) ++* -m EMULATION: Options. (line 337) ++* -Map: Options. (line 800) ++* -N: Options. (line 389) ++* -n: Options. (line 384) ++* -non_shared: Options. (line 679) ++* -nostdlib: Options. (line 876) ++* -O LEVEL: Options. (line 410) ++* -o OUTPUT: Options. (line 404) ++* -pie: Options. (line 895) ++* -q: Options. (line 415) ++* -qmagic: Options. (line 905) ++* -Qy: Options. (line 908) ++* -r: Options. (line 428) ++* -R FILE: Options. (line 447) ++* -rpath: Options. (line 945) ++* -rpath-link: Options. (line 967) ++* -S: Options. (line 462) ++* -s: Options. (line 458) ++* -shared: Options. (line 1020) ++* -soname=NAME: Options. (line 267) ++* -static: Options. (line 679) ++* -t: Options. (line 467) ++* -T SCRIPT: Options. (line 471) ++* -Tbss ORG: Options. (line 1090) ++* -Tdata ORG: Options. (line 1090) ++* -Ttext ORG: Options. (line 1090) ++* -u SYMBOL: Options. (line 480) ++* -Ur: Options. (line 488) ++* -V: Options. (line 507) ++* -v: Options. (line 507) ++* -X: Options. (line 517) ++* -x: Options. (line 513) ++* -Y PATH: Options. (line 531) ++* -y SYMBOL: Options. (line 522) ++* -z defs: Options. (line 811) ++* -z KEYWORD: Options. (line 535) ++* -z muldefs: Options. (line 819) ++* .: Location Counter. (line 6) ++* /DISCARD/: Output Section Discarding. ++ (line 18) ++* :PHDR: Output Section Phdr. ++ (line 6) ++* =FILLEXP: Output Section Fill. ++ (line 6) ++* >REGION: Output Section Region. ++ (line 6) ++* [COMMON]: Input Section Common. ++ (line 29) ++* ABSOLUTE (MRI): MRI. (line 33) ++* absolute and relocatable symbols: Expression Section. (line 6) ++* absolute expressions: Expression Section. (line 6) ++* ABSOLUTE(EXP): Builtin Functions. (line 10) ++* ADDR(SECTION): Builtin Functions. (line 17) ++* address, section: Output Section Address. ++ (line 6) ++* ALIAS (MRI): MRI. (line 44) ++* ALIGN (MRI): MRI. (line 50) ++* align expression: Builtin Functions. (line 36) ++* align location counter: Builtin Functions. (line 36) ++* ALIGN(ALIGN): Builtin Functions. (line 36) ++* ALIGN(EXP,ALIGN): Builtin Functions. (line 36) ++* ALIGN(SECTION_ALIGN): Forced Output Alignment. ++ (line 6) ++* allocating memory: MEMORY. (line 6) ++* architecture: Miscellaneous Commands. ++ (line 46) ++* architectures: Options. (line 103) ++* archive files, from cmd line: Options. (line 285) ++* archive search path in linker script: File Commands. (line 71) ++* arithmetic: Expressions. (line 6) ++* arithmetic operators: Operators. (line 6) ++* ARM interworking support: ARM. (line 6) ++* AS_NEEDED(FILES): File Commands. (line 51) ++* ASSERT: Miscellaneous Commands. ++ (line 9) ++* assertion in linker script: Miscellaneous Commands. ++ (line 9) ++* assignment in scripts: Assignments. (line 6) ++* AT(LMA): Output Section LMA. (line 6) ++* AT>LMA_REGION: Output Section LMA. (line 6) ++* automatic data imports: WIN32. (line 170) ++* back end: BFD. (line 6) ++* BASE (MRI): MRI. (line 54) ++* BE8: ARM. (line 23) ++* BFD canonical format: Canonical format. (line 11) ++* BFD requirements: BFD. (line 16) ++* big-endian objects: Options. (line 198) ++* binary input format: Options. (line 115) ++* BLOCK(EXP): Builtin Functions. (line 62) ++* bug criteria: Bug Criteria. (line 6) ++* bug reports: Bug Reporting. (line 6) ++* bugs in ld: Reporting Bugs. (line 6) ++* BYTE(EXPRESSION): Output Section Data. ++ (line 6) ++* C++ constructors, arranging in link: Output Section Keywords. ++ (line 19) ++* CHIP (MRI): MRI. (line 58) ++* COLLECT_NO_DEMANGLE: Environment. (line 29) ++* combining symbols, warnings on: Options. (line 1138) ++* command files: Scripts. (line 6) ++* command line: Options. (line 6) ++* common allocation: Options. (line 149) ++* common allocation in linker script: Miscellaneous Commands. ++ (line 20) ++* common symbol placement: Input Section Common. ++ (line 6) ++* compatibility, MRI: Options. (line 139) ++* constants in linker scripts: Constants. (line 6) ++* CONSTRUCTORS: Output Section Keywords. ++ (line 19) ++* constructors: Options. (line 488) ++* constructors, arranging in link: Output Section Keywords. ++ (line 19) ++* crash of linker: Bug Criteria. (line 9) ++* CREATE_OBJECT_SYMBOLS: Output Section Keywords. ++ (line 9) ++* creating a DEF file: WIN32. (line 137) ++* cross reference table: Options. (line 711) ++* cross references: Miscellaneous Commands. ++ (line 30) ++* current output location: Location Counter. (line 6) ++* data: Output Section Data. ++ (line 6) ++* DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE): Builtin Functions. ++ (line 67) ++* DATA_SEGMENT_END(EXP): Builtin Functions. (line 88) ++* DATA_SEGMENT_RELRO_END(OFFSET, EXP): Builtin Functions. (line 94) ++* dbx: Options. (line 1074) ++* DEF files, creating: Options. (line 1470) ++* default emulation: Environment. (line 21) ++* default input format: Environment. (line 9) ++* DEFINED(SYMBOL): Builtin Functions. (line 105) ++* deleting local symbols: Options. (line 513) ++* demangling, default: Environment. (line 29) ++* demangling, from command line: Options. (line 752) ++* direct linking to a dll: WIN32. (line 218) ++* discarding sections: Output Section Discarding. ++ (line 6) ++* discontinuous memory: MEMORY. (line 6) ++* DLLs, creating: Options. (line 1376) ++* DLLs, linking to: Options. (line 1501) ++* dot: Location Counter. (line 6) ++* dot inside sections: Location Counter. (line 34) ++* dot outside sections: Location Counter. (line 64) ++* dynamic linker, from command line: Options. (line 765) ++* dynamic symbol table: Options. (line 179) ++* ELF program headers: PHDRS. (line 6) ++* emulation: Options. (line 337) ++* emulation, default: Environment. (line 21) ++* END (MRI): MRI. (line 62) ++* endianness: Options. (line 198) ++* entry point: Entry Point. (line 6) ++* entry point, from command line: Options. (line 158) ++* entry point, thumb: ARM. (line 17) ++* ENTRY(SYMBOL): Entry Point. (line 6) ++* error on valid input: Bug Criteria. (line 12) ++* example of linker script: Simple Example. (line 6) ++* exporting DLL symbols: WIN32. (line 19) ++* expression evaluation order: Evaluation. (line 6) ++* expression sections: Expression Section. (line 6) ++* expression, absolute: Builtin Functions. (line 10) ++* expressions: Expressions. (line 6) ++* EXTERN: Miscellaneous Commands. ++ (line 13) ++* fatal signal: Bug Criteria. (line 9) ++* file name wildcard patterns: Input Section Wildcards. ++ (line 6) ++* FILEHDR: PHDRS. (line 61) ++* filename symbols: Output Section Keywords. ++ (line 9) ++* fill pattern, entire section: Output Section Fill. ++ (line 6) ++* FILL(EXPRESSION): Output Section Data. ++ (line 39) ++* finalization function: Options. (line 250) ++* first input file: File Commands. (line 79) ++* first instruction: Entry Point. (line 6) ++* FIX_V4BX: ARM. (line 44) ++* FORCE_COMMON_ALLOCATION: Miscellaneous Commands. ++ (line 20) ++* forcing input section alignment: Forced Input Alignment. ++ (line 6) ++* forcing output section alignment: Forced Output Alignment. ++ (line 6) ++* forcing the creation of dynamic sections: Options. (line 424) ++* FORMAT (MRI): MRI. (line 66) ++* functions in expressions: Builtin Functions. (line 6) ++* garbage collection <1>: Input Section Keep. (line 6) ++* garbage collection: Options. (line 784) ++* generating optimized output: Options. (line 410) ++* GNU linker: Overview. (line 6) ++* GNUTARGET: Environment. (line 9) ++* GROUP(FILES): File Commands. (line 44) ++* grouping input files: File Commands. (line 44) ++* groups of archives: Options. (line 609) ++* H8/300 support: H8/300. (line 6) ++* header size: Builtin Functions. (line 170) ++* heap size: Options. (line 1412) ++* help: Options. (line 792) ++* holes: Location Counter. (line 12) ++* holes, filling: Output Section Data. ++ (line 39) ++* HPPA multiple sub-space stubs: HPPA ELF32. (line 6) ++* HPPA stub grouping: HPPA ELF32. (line 12) ++* i960 support: i960. (line 6) ++* image base: Options. (line 1419) ++* implicit linker scripts: Implicit Linker Scripts. ++ (line 6) ++* import libraries: WIN32. (line 10) ++* INCLUDE FILENAME: File Commands. (line 9) ++* including a linker script: File Commands. (line 9) ++* including an entire archive: Options. (line 1248) ++* incremental link: Options. (line 276) ++* INHIBIT_COMMON_ALLOCATION: Miscellaneous Commands. ++ (line 25) ++* initialization function: Options. (line 279) ++* initialized data in ROM: Output Section LMA. (line 21) ++* input file format in linker script: Format Commands. (line 35) ++* input filename symbols: Output Section Keywords. ++ (line 9) ++* input files in linker scripts: File Commands. (line 16) ++* input files, displaying: Options. (line 467) ++* input format: Options. (line 115) ++* input object files in linker scripts: File Commands. (line 16) ++* input section alignment: Forced Input Alignment. ++ (line 6) ++* input section basics: Input Section Basics. ++ (line 6) ++* input section wildcards: Input Section Wildcards. ++ (line 6) ++* input sections: Input Section. (line 6) ++* INPUT(FILES): File Commands. (line 16) ++* integer notation: Constants. (line 6) ++* integer suffixes: Constants. (line 12) ++* internal object-file format: Canonical format. (line 11) ++* invalid input: Bug Criteria. (line 14) ++* K and M integer suffixes: Constants. (line 12) ++* KEEP: Input Section Keep. (line 6) ++* l =: MEMORY. (line 72) ++* L, deleting symbols beginning: Options. (line 517) ++* lazy evaluation: Evaluation. (line 6) ++* ld bugs, reporting: Bug Reporting. (line 6) ++* LDEMULATION: Environment. (line 21) ++* len =: MEMORY. (line 72) ++* LENGTH =: MEMORY. (line 72) ++* LENGTH(MEMORY): Builtin Functions. (line 122) ++* library search path in linker script: File Commands. (line 71) ++* link map: Options. (line 347) ++* link-time runtime library search path: Options. (line 967) ++* linker crash: Bug Criteria. (line 9) ++* linker script concepts: Basic Script Concepts. ++ (line 6) ++* linker script example: Simple Example. (line 6) ++* linker script file commands: File Commands. (line 6) ++* linker script format: Script Format. (line 6) ++* linker script input object files: File Commands. (line 16) ++* linker script simple commands: Simple Commands. (line 6) ++* linker scripts: Scripts. (line 6) ++* LIST (MRI): MRI. (line 77) ++* little-endian objects: Options. (line 201) ++* LOAD (MRI): MRI. (line 84) ++* load address: Output Section LMA. (line 6) ++* LOADADDR(SECTION): Builtin Functions. (line 125) ++* loading, preventing: Output Section Type. ++ (line 22) ++* local symbols, deleting: Options. (line 517) ++* location counter: Location Counter. (line 6) ++* LONG(EXPRESSION): Output Section Data. ++ (line 6) ++* M and K integer suffixes: Constants. (line 12) ++* machine architecture: Miscellaneous Commands. ++ (line 46) ++* machine dependencies: Machine Dependent. (line 6) ++* mapping input sections to output sections: Input Section. (line 6) ++* MAX: Builtin Functions. (line 130) ++* MEMORY: MEMORY. (line 6) ++* memory region attributes: MEMORY. (line 32) ++* memory regions: MEMORY. (line 6) ++* memory regions and sections: Output Section Region. ++ (line 6) ++* memory usage: Options. (line 804) ++* MIN: Builtin Functions. (line 133) ++* MRI compatibility: MRI. (line 6) ++* MSP430 extra sections: MSP430. (line 11) ++* NAME (MRI): MRI. (line 90) ++* name, section: Output Section Name. ++ (line 6) ++* names: Symbols. (line 6) ++* naming the output file: Options. (line 404) ++* NEXT(EXP): Builtin Functions. (line 137) ++* NMAGIC: Options. (line 384) ++* NOCROSSREFS(SECTIONS): Miscellaneous Commands. ++ (line 30) ++* NOLOAD: Output Section Type. ++ (line 22) ++* not enough room for program headers: Builtin Functions. (line 175) ++* o =: MEMORY. (line 67) ++* objdump -i: BFD. (line 6) ++* object file management: BFD. (line 6) ++* object files: Options. (line 29) ++* object formats available: BFD. (line 6) ++* object size: Options. (line 259) ++* OMAGIC: Options. (line 389) ++* opening object files: BFD outline. (line 6) ++* operators for arithmetic: Operators. (line 6) ++* options: Options. (line 6) ++* ORDER (MRI): MRI. (line 95) ++* org =: MEMORY. (line 67) ++* ORIGIN =: MEMORY. (line 67) ++* ORIGIN(MEMORY): Builtin Functions. (line 143) ++* orphan: Orphan Sections. (line 6) ++* output file after errors: Options. (line 870) ++* output file format in linker script: Format Commands. (line 10) ++* output file name in linker scripot: File Commands. (line 61) ++* output section alignment: Forced Output Alignment. ++ (line 6) ++* output section attributes: Output Section Attributes. ++ (line 6) ++* output section data: Output Section Data. ++ (line 6) ++* OUTPUT(FILENAME): File Commands. (line 61) ++* OUTPUT_ARCH(BFDARCH): Miscellaneous Commands. ++ (line 46) ++* OUTPUT_FORMAT(BFDNAME): Format Commands. (line 10) ++* OVERLAY: Overlay Description. ++ (line 6) ++* overlays: Overlay Description. ++ (line 6) ++* partial link: Options. (line 428) ++* PHDRS: PHDRS. (line 6) ++* position independent executables: Options. (line 897) ++* PowerPC ELF32 options: PowerPC ELF32. (line 13) ++* PowerPC GOT: PowerPC ELF32. (line 23) ++* PowerPC long branches: PowerPC ELF32. (line 6) ++* PowerPC PLT: PowerPC ELF32. (line 13) ++* PowerPC stub symbols: PowerPC ELF32. (line 37) ++* PowerPC TLS optimization: PowerPC ELF32. (line 41) ++* PowerPC64 dot symbols: PowerPC64 ELF64. (line 33) ++* PowerPC64 ELF64 options: PowerPC64 ELF64. (line 6) ++* PowerPC64 multi-TOC: PowerPC64 ELF64. (line 74) ++* PowerPC64 OPD optimization: PowerPC64 ELF64. (line 48) ++* PowerPC64 OPD spacing: PowerPC64 ELF64. (line 54) ++* PowerPC64 stub grouping: PowerPC64 ELF64. (line 6) ++* PowerPC64 stub symbols: PowerPC64 ELF64. (line 29) ++* PowerPC64 TLS optimization: PowerPC64 ELF64. (line 43) ++* PowerPC64 TOC optimization: PowerPC64 ELF64. (line 60) ++* precedence in expressions: Operators. (line 6) ++* prevent unnecessary loading: Output Section Type. ++ (line 22) ++* program headers: PHDRS. (line 6) ++* program headers and sections: Output Section Phdr. ++ (line 6) ++* program headers, not enough room: Builtin Functions. (line 175) ++* program segments: PHDRS. (line 6) ++* PROVIDE: PROVIDE. (line 6) ++* PROVIDE_HIDDEN: PROVIDE_HIDDEN. (line 6) ++* PUBLIC (MRI): MRI. (line 103) ++* QUAD(EXPRESSION): Output Section Data. ++ (line 6) ++* quoted symbol names: Symbols. (line 6) ++* read-only text: Options. (line 384) ++* read/write from cmd line: Options. (line 389) ++* regions of memory: MEMORY. (line 6) ++* relative expressions: Expression Section. (line 6) ++* relaxing addressing modes: Options. (line 911) ++* relaxing on H8/300: H8/300. (line 9) ++* relaxing on i960: i960. (line 31) ++* relaxing on Xtensa: Xtensa. (line 27) ++* relocatable and absolute symbols: Expression Section. (line 6) ++* relocatable output: Options. (line 428) ++* removing sections: Output Section Discarding. ++ (line 6) ++* reporting bugs in ld: Reporting Bugs. (line 6) ++* requirements for BFD: BFD. (line 16) ++* retain relocations in final executable: Options. (line 415) ++* retaining specified symbols: Options. (line 931) ++* ROM initialized data: Output Section LMA. (line 21) ++* round up expression: Builtin Functions. (line 36) ++* round up location counter: Builtin Functions. (line 36) ++* runtime library name: Options. (line 267) ++* runtime library search path: Options. (line 945) ++* runtime pseudo-relocation: WIN32. (line 196) ++* scaled integers: Constants. (line 12) ++* scommon section: Input Section Common. ++ (line 20) ++* script files: Options. (line 471) ++* scripts: Scripts. (line 6) ++* search directory, from cmd line: Options. (line 315) ++* search path in linker script: File Commands. (line 71) ++* SEARCH_DIR(PATH): File Commands. (line 71) ++* SECT (MRI): MRI. (line 109) ++* section address: Output Section Address. ++ (line 6) ++* section address in expression: Builtin Functions. (line 17) ++* section alignment, warnings on: Options. (line 1229) ++* section data: Output Section Data. ++ (line 6) ++* section fill pattern: Output Section Fill. ++ (line 6) ++* section load address: Output Section LMA. (line 6) ++* section load address in expression: Builtin Functions. (line 125) ++* section name: Output Section Name. ++ (line 6) ++* section name wildcard patterns: Input Section Wildcards. ++ (line 6) ++* section size: Builtin Functions. (line 154) ++* section, assigning to memory region: Output Section Region. ++ (line 6) ++* section, assigning to program header: Output Section Phdr. ++ (line 6) ++* SECTIONS: SECTIONS. (line 6) ++* sections, discarding: Output Section Discarding. ++ (line 6) ++* segment origins, cmd line: Options. (line 1090) ++* SEGMENT_START(SEGMENT, DEFAULT): Builtin Functions. (line 146) ++* segments, ELF: PHDRS. (line 6) ++* shared libraries: Options. (line 1022) ++* SHORT(EXPRESSION): Output Section Data. ++ (line 6) ++* SIZEOF(SECTION): Builtin Functions. (line 154) ++* SIZEOF_HEADERS: Builtin Functions. (line 170) ++* small common symbols: Input Section Common. ++ (line 20) ++* SORT: Input Section Wildcards. ++ (line 58) ++* SORT_BY_ALIGNMENT: Input Section Wildcards. ++ (line 54) ++* SORT_BY_NAME: Input Section Wildcards. ++ (line 46) ++* SQUAD(EXPRESSION): Output Section Data. ++ (line 6) ++* stack size: Options. (line 1653) ++* standard Unix system: Options. (line 7) ++* start of execution: Entry Point. (line 6) ++* STARTUP(FILENAME): File Commands. (line 79) ++* strip all symbols: Options. (line 458) ++* strip debugger symbols: Options. (line 462) ++* stripping all but some symbols: Options. (line 931) ++* SUBALIGN(SUBSECTION_ALIGN): Forced Input Alignment. ++ (line 6) ++* suffixes for integers: Constants. (line 12) ++* symbol defaults: Builtin Functions. (line 105) ++* symbol definition, scripts: Assignments. (line 6) ++* symbol names: Symbols. (line 6) ++* symbol tracing: Options. (line 522) ++* symbol versions: VERSION. (line 6) ++* symbol-only input: Options. (line 447) ++* symbols, from command line: Options. (line 739) ++* symbols, relocatable and absolute: Expression Section. (line 6) ++* symbols, retaining selectively: Options. (line 931) ++* synthesizing linker: Options. (line 911) ++* synthesizing on H8/300: H8/300. (line 14) ++* TARGET(BFDNAME): Format Commands. (line 35) ++* TARGET1: ARM. (line 27) ++* TARGET2: ARM. (line 32) ++* thumb entry point: ARM. (line 17) ++* TI COFF versions: TI COFF. (line 6) ++* traditional format: Options. (line 1069) ++* unallocated address, next: Builtin Functions. (line 137) ++* undefined symbol: Options. (line 480) ++* undefined symbol in linker script: Miscellaneous Commands. ++ (line 13) ++* undefined symbols, warnings on: Options. (line 1225) ++* uninitialized data placement: Input Section Common. ++ (line 6) ++* unspecified memory: Output Section Data. ++ (line 39) ++* usage: Options. (line 792) ++* USE_BLX: ARM. (line 57) ++* using a DEF file: WIN32. (line 42) ++* using auto-export functionality: WIN32. (line 22) ++* Using decorations: WIN32. (line 141) ++* variables, defining: Assignments. (line 6) ++* verbose: Options. (line 1125) ++* version: Options. (line 507) ++* version script: VERSION. (line 6) ++* version script, symbol versions: Options. (line 1131) ++* VERSION {script text}: VERSION. (line 6) ++* versions of symbols: VERSION. (line 6) ++* warnings, on combining symbols: Options. (line 1138) ++* warnings, on section alignment: Options. (line 1229) ++* warnings, on undefined symbols: Options. (line 1225) ++* weak externals: WIN32. (line 380) ++* what is this?: Overview. (line 6) ++* wildcard file name patterns: Input Section Wildcards. ++ (line 6) ++* Xtensa options: Xtensa. (line 56) ++* Xtensa processors: Xtensa. (line 6) ++ ++ ++ ++Tag Table: ++Node: Top347 ++Node: Overview1109 ++Node: Invocation2223 ++Node: Options2631 ++Node: Environment77286 ++Node: Scripts79046 ++Node: Basic Script Concepts80780 ++Node: Script Format83487 ++Node: Simple Example84350 ++Node: Simple Commands87446 ++Node: Entry Point87897 ++Node: File Commands88656 ++Node: Format Commands92522 ++Node: Miscellaneous Commands94488 ++Node: Assignments96718 ++Node: Simple Assignments97209 ++Node: PROVIDE98945 ++Node: PROVIDE_HIDDEN100150 ++Node: Source Code Reference100394 ++Node: SECTIONS103974 ++Node: Output Section Description105865 ++Node: Output Section Name106918 ++Node: Output Section Address107794 ++Node: Input Section109443 ++Node: Input Section Basics110244 ++Node: Input Section Wildcards112596 ++Node: Input Section Common117329 ++Node: Input Section Keep118811 ++Node: Input Section Example119301 ++Node: Output Section Data120269 ++Node: Output Section Keywords123046 ++Node: Output Section Discarding126615 ++Node: Output Section Attributes127571 ++Node: Output Section Type128575 ++Node: Output Section LMA129729 ++Node: Forced Output Alignment132000 ++Node: Forced Input Alignment132268 ++Node: Output Section Region132653 ++Node: Output Section Phdr133083 ++Node: Output Section Fill133747 ++Node: Overlay Description134889 ++Node: MEMORY139137 ++Node: PHDRS143337 ++Node: VERSION148376 ++Node: Expressions156167 ++Node: Constants157045 ++Node: Symbols157606 ++Node: Orphan Sections158344 ++Node: Location Counter159107 ++Node: Operators163411 ++Node: Evaluation164333 ++Node: Expression Section165697 ++Node: Builtin Functions167186 ++Node: Implicit Linker Scripts174678 ++Node: Machine Dependent175453 ++Node: H8/300176314 ++Node: i960177939 ++Node: ARM179624 ++Node: HPPA ELF32182540 ++Node: MMIX184163 ++Node: MSP430185380 ++Node: PowerPC ELF32186428 ++Node: PowerPC64 ELF64188719 ++Node: TI COFF193133 ++Node: WIN32193665 ++Node: Xtensa211739 ++Node: BFD214861 ++Node: BFD outline216316 ++Node: BFD information loss217602 ++Node: Canonical format220119 ++Node: Reporting Bugs224476 ++Node: Bug Criteria225170 ++Node: Bug Reporting225869 ++Node: MRI232894 ++Node: GNU Free Documentation License237537 ++Node: Index257251 ++ ++End Tag Table +diff -Nrup binutils-2.17/ld/ld.info.r31496 binutils-2.17.atmel.1.3.0/ld/ld.info.r31496 +--- binutils-2.17/ld/ld.info.r31496 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/ld.info.r31496 2007-09-28 10:30:45.000000000 +0200 +@@ -0,0 +1,6721 @@ ++This is .././ld/ld.info, produced by makeinfo version 4.8 from ++.././ld/ld.texinfo. ++ ++START-INFO-DIR-ENTRY ++* Ld: (ld). The GNU linker. ++END-INFO-DIR-ENTRY ++ ++ This file documents the GNU linker LD version 2.17. ++ ++ Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, ++2002, 2003, 2004 Free Software Foundation, Inc. ++ ++ ++File: ld.info, Node: Top, Next: Overview, Up: (dir) ++ ++Using ld ++******** ++ ++This file documents the GNU linker ld version 2.17. ++ ++ This document is distributed under the terms of the GNU Free ++Documentation License. A copy of the license is included in the ++section entitled "GNU Free Documentation License". ++ ++* Menu: ++ ++* Overview:: Overview ++* Invocation:: Invocation ++* Scripts:: Linker Scripts ++ ++* Machine Dependent:: Machine Dependent Features ++ ++* BFD:: BFD ++ ++* Reporting Bugs:: Reporting Bugs ++* MRI:: MRI Compatible Script Files ++* GNU Free Documentation License:: GNU Free Documentation License ++* Index:: Index ++ ++ ++File: ld.info, Node: Overview, Next: Invocation, Prev: Top, Up: Top ++ ++1 Overview ++********** ++ ++`ld' combines a number of object and archive files, relocates their ++data and ties up symbol references. Usually the last step in compiling ++a program is to run `ld'. ++ ++ `ld' accepts Linker Command Language files written in a superset of ++AT&T's Link Editor Command Language syntax, to provide explicit and ++total control over the linking process. ++ ++ This version of `ld' uses the general purpose BFD libraries to ++operate on object files. This allows `ld' to read, combine, and write ++object files in many different formats--for example, COFF or `a.out'. ++Different formats may be linked together to produce any available kind ++of object file. *Note BFD::, for more information. ++ ++ Aside from its flexibility, the GNU linker is more helpful than other ++linkers in providing diagnostic information. Many linkers abandon ++execution immediately upon encountering an error; whenever possible, ++`ld' continues executing, allowing you to identify other errors (or, in ++some cases, to get an output file in spite of the error). ++ ++ ++File: ld.info, Node: Invocation, Next: Scripts, Prev: Overview, Up: Top ++ ++2 Invocation ++************ ++ ++The GNU linker `ld' is meant to cover a broad range of situations, and ++to be as compatible as possible with other linkers. As a result, you ++have many choices to control its behavior. ++ ++* Menu: ++ ++* Options:: Command Line Options ++* Environment:: Environment Variables ++ ++ ++File: ld.info, Node: Options, Next: Environment, Up: Invocation ++ ++2.1 Command Line Options ++======================== ++ ++ The linker supports a plethora of command-line options, but in actual ++practice few of them are used in any particular context. For instance, ++a frequent use of `ld' is to link standard Unix object files on a ++standard, supported Unix system. On such a system, to link a file ++`hello.o': ++ ++ ld -o OUTPUT /lib/crt0.o hello.o -lc ++ ++ This tells `ld' to produce a file called OUTPUT as the result of ++linking the file `/lib/crt0.o' with `hello.o' and the library `libc.a', ++which will come from the standard search directories. (See the ++discussion of the `-l' option below.) ++ ++ Some of the command-line options to `ld' may be specified at any ++point in the command line. However, options which refer to files, such ++as `-l' or `-T', cause the file to be read at the point at which the ++option appears in the command line, relative to the object files and ++other file options. Repeating non-file options with a different ++argument will either have no further effect, or override prior ++occurrences (those further to the left on the command line) of that ++option. Options which may be meaningfully specified more than once are ++noted in the descriptions below. ++ ++ Non-option arguments are object files or archives which are to be ++linked together. They may follow, precede, or be mixed in with ++command-line options, except that an object file argument may not be ++placed between an option and its argument. ++ ++ Usually the linker is invoked with at least one object file, but you ++can specify other forms of binary input files using `-l', `-R', and the ++script command language. If _no_ binary input files at all are ++specified, the linker does not produce any output, and issues the ++message `No input files'. ++ ++ If the linker cannot recognize the format of an object file, it will ++assume that it is a linker script. A script specified in this way ++augments the main linker script used for the link (either the default ++linker script or the one specified by using `-T'). This feature ++permits the linker to link against a file which appears to be an object ++or an archive, but actually merely defines some symbol values, or uses ++`INPUT' or `GROUP' to load other objects. Note that specifying a ++script in this way merely augments the main linker script; use the `-T' ++option to replace the default linker script entirely. *Note Scripts::. ++ ++ For options whose names are a single letter, option arguments must ++either follow the option letter without intervening whitespace, or be ++given as separate arguments immediately following the option that ++requires them. ++ ++ For options whose names are multiple letters, either one dash or two ++can precede the option name; for example, `-trace-symbol' and ++`--trace-symbol' are equivalent. Note--there is one exception to this ++rule. Multiple letter options that start with a lower case 'o' can ++only be preceeded by two dashes. This is to reduce confusion with the ++`-o' option. So for example `-omagic' sets the output file name to ++`magic' whereas `--omagic' sets the NMAGIC flag on the output. ++ ++ Arguments to multiple-letter options must either be separated from ++the option name by an equals sign, or be given as separate arguments ++immediately following the option that requires them. For example, ++`--trace-symbol foo' and `--trace-symbol=foo' are equivalent. Unique ++abbreviations of the names of multiple-letter options are accepted. ++ ++ Note--if the linker is being invoked indirectly, via a compiler ++driver (e.g. `gcc') then all the linker command line options should be ++prefixed by `-Wl,' (or whatever is appropriate for the particular ++compiler driver) like this: ++ ++ gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup ++ ++ This is important, because otherwise the compiler driver program may ++silently drop the linker options, resulting in a bad link. ++ ++ Here is a table of the generic command line switches accepted by the ++GNU linker: ++ ++`@FILE' ++ Read command-line options from FILE. The options read are ++ inserted in place of the original @FILE option. If FILE does not ++ exist, or cannot be read, then the option will be treated ++ literally, and not removed. ++ ++ Options in FILE are separated by whitespace. A whitespace ++ character may be included in an option by surrounding the entire ++ option in either single or double quotes. Any character ++ (including a backslash) may be included by prefixing the character ++ to be included with a backslash. The FILE may itself contain ++ additional @FILE options; any such options will be processed ++ recursively. ++ ++`-aKEYWORD' ++ This option is supported for HP/UX compatibility. The KEYWORD ++ argument must be one of the strings `archive', `shared', or ++ `default'. `-aarchive' is functionally equivalent to `-Bstatic', ++ and the other two keywords are functionally equivalent to ++ `-Bdynamic'. This option may be used any number of times. ++ ++`-AARCHITECTURE' ++`--architecture=ARCHITECTURE' ++ In the current release of `ld', this option is useful only for the ++ Intel 960 family of architectures. In that `ld' configuration, the ++ ARCHITECTURE argument identifies the particular architecture in ++ the 960 family, enabling some safeguards and modifying the ++ archive-library search path. *Note `ld' and the Intel 960 family: ++ i960, for details. ++ ++ Future releases of `ld' may support similar functionality for ++ other architecture families. ++ ++`-b INPUT-FORMAT' ++`--format=INPUT-FORMAT' ++ `ld' may be configured to support more than one kind of object ++ file. If your `ld' is configured this way, you can use the `-b' ++ option to specify the binary format for input object files that ++ follow this option on the command line. Even when `ld' is ++ configured to support alternative object formats, you don't ++ usually need to specify this, as `ld' should be configured to ++ expect as a default input format the most usual format on each ++ machine. INPUT-FORMAT is a text string, the name of a particular ++ format supported by the BFD libraries. (You can list the ++ available binary formats with `objdump -i'.) *Note BFD::. ++ ++ You may want to use this option if you are linking files with an ++ unusual binary format. You can also use `-b' to switch formats ++ explicitly (when linking object files of different formats), by ++ including `-b INPUT-FORMAT' before each group of object files in a ++ particular format. ++ ++ The default format is taken from the environment variable ++ `GNUTARGET'. *Note Environment::. You can also define the input ++ format from a script, using the command `TARGET'; see *Note Format ++ Commands::. ++ ++`-c MRI-COMMANDFILE' ++`--mri-script=MRI-COMMANDFILE' ++ For compatibility with linkers produced by MRI, `ld' accepts script ++ files written in an alternate, restricted command language, ++ described in *Note MRI Compatible Script Files: MRI. Introduce ++ MRI script files with the option `-c'; use the `-T' option to run ++ linker scripts written in the general-purpose `ld' scripting ++ language. If MRI-CMDFILE does not exist, `ld' looks for it in the ++ directories specified by any `-L' options. ++ ++`-d' ++`-dc' ++`-dp' ++ These three options are equivalent; multiple forms are supported ++ for compatibility with other linkers. They assign space to common ++ symbols even if a relocatable output file is specified (with ++ `-r'). The script command `FORCE_COMMON_ALLOCATION' has the same ++ effect. *Note Miscellaneous Commands::. ++ ++`-e ENTRY' ++`--entry=ENTRY' ++ Use ENTRY as the explicit symbol for beginning execution of your ++ program, rather than the default entry point. If there is no ++ symbol named ENTRY, the linker will try to parse ENTRY as a number, ++ and use that as the entry address (the number will be interpreted ++ in base 10; you may use a leading `0x' for base 16, or a leading ++ `0' for base 8). *Note Entry Point::, for a discussion of defaults ++ and other ways of specifying the entry point. ++ ++`--exclude-libs LIB,LIB,...' ++ Specifies a list of archive libraries from which symbols should ++ not be automatically exported. The library names may be delimited ++ by commas or colons. Specifying `--exclude-libs ALL' excludes ++ symbols in all archive libraries from automatic export. This ++ option is available only for the i386 PE targeted port of the ++ linker and for ELF targeted ports. For i386 PE, symbols ++ explicitly listed in a .def file are still exported, regardless of ++ this option. For ELF targeted ports, symbols affected by this ++ option will be treated as hidden. ++ ++`-E' ++`--export-dynamic' ++ When creating a dynamically linked executable, add all symbols to ++ the dynamic symbol table. The dynamic symbol table is the set of ++ symbols which are visible from dynamic objects at run time. ++ ++ If you do not use this option, the dynamic symbol table will ++ normally contain only those symbols which are referenced by some ++ dynamic object mentioned in the link. ++ ++ If you use `dlopen' to load a dynamic object which needs to refer ++ back to the symbols defined by the program, rather than some other ++ dynamic object, then you will probably need to use this option when ++ linking the program itself. ++ ++ You can also use the version script to control what symbols should ++ be added to the dynamic symbol table if the output format supports ++ it. See the description of `--version-script' in *Note VERSION::. ++ ++`-EB' ++ Link big-endian objects. This affects the default output format. ++ ++`-EL' ++ Link little-endian objects. This affects the default output ++ format. ++ ++`-f' ++`--auxiliary NAME' ++ When creating an ELF shared object, set the internal DT_AUXILIARY ++ field to the specified name. This tells the dynamic linker that ++ the symbol table of the shared object should be used as an ++ auxiliary filter on the symbol table of the shared object NAME. ++ ++ If you later link a program against this filter object, then, when ++ you run the program, the dynamic linker will see the DT_AUXILIARY ++ field. If the dynamic linker resolves any symbols from the filter ++ object, it will first check whether there is a definition in the ++ shared object NAME. If there is one, it will be used instead of ++ the definition in the filter object. The shared object NAME need ++ not exist. Thus the shared object NAME may be used to provide an ++ alternative implementation of certain functions, perhaps for ++ debugging or for machine specific performance. ++ ++ This option may be specified more than once. The DT_AUXILIARY ++ entries will be created in the order in which they appear on the ++ command line. ++ ++`-F NAME' ++`--filter NAME' ++ When creating an ELF shared object, set the internal DT_FILTER ++ field to the specified name. This tells the dynamic linker that ++ the symbol table of the shared object which is being created ++ should be used as a filter on the symbol table of the shared ++ object NAME. ++ ++ If you later link a program against this filter object, then, when ++ you run the program, the dynamic linker will see the DT_FILTER ++ field. The dynamic linker will resolve symbols according to the ++ symbol table of the filter object as usual, but it will actually ++ link to the definitions found in the shared object NAME. Thus the ++ filter object can be used to select a subset of the symbols ++ provided by the object NAME. ++ ++ Some older linkers used the `-F' option throughout a compilation ++ toolchain for specifying object-file format for both input and ++ output object files. The GNU linker uses other mechanisms for ++ this purpose: the `-b', `--format', `--oformat' options, the ++ `TARGET' command in linker scripts, and the `GNUTARGET' ++ environment variable. The GNU linker will ignore the `-F' option ++ when not creating an ELF shared object. ++ ++`-fini NAME' ++ When creating an ELF executable or shared object, call NAME when ++ the executable or shared object is unloaded, by setting DT_FINI to ++ the address of the function. By default, the linker uses `_fini' ++ as the function to call. ++ ++`-g' ++ Ignored. Provided for compatibility with other tools. ++ ++`-GVALUE' ++`--gpsize=VALUE' ++ Set the maximum size of objects to be optimized using the GP ++ register to SIZE. This is only meaningful for object file formats ++ such as MIPS ECOFF which supports putting large and small objects ++ into different sections. This is ignored for other object file ++ formats. ++ ++`-hNAME' ++`-soname=NAME' ++ When creating an ELF shared object, set the internal DT_SONAME ++ field to the specified name. When an executable is linked with a ++ shared object which has a DT_SONAME field, then when the ++ executable is run the dynamic linker will attempt to load the ++ shared object specified by the DT_SONAME field rather than the ++ using the file name given to the linker. ++ ++`-i' ++ Perform an incremental link (same as option `-r'). ++ ++`-init NAME' ++ When creating an ELF executable or shared object, call NAME when ++ the executable or shared object is loaded, by setting DT_INIT to ++ the address of the function. By default, the linker uses `_init' ++ as the function to call. ++ ++`-lARCHIVE' ++`--library=ARCHIVE' ++ Add archive file ARCHIVE to the list of files to link. This ++ option may be used any number of times. `ld' will search its ++ path-list for occurrences of `libARCHIVE.a' for every ARCHIVE ++ specified. ++ ++ On systems which support shared libraries, `ld' may also search for ++ libraries with extensions other than `.a'. Specifically, on ELF ++ and SunOS systems, `ld' will search a directory for a library with ++ an extension of `.so' before searching for one with an extension of ++ `.a'. By convention, a `.so' extension indicates a shared library. ++ ++ The linker will search an archive only once, at the location where ++ it is specified on the command line. If the archive defines a ++ symbol which was undefined in some object which appeared before ++ the archive on the command line, the linker will include the ++ appropriate file(s) from the archive. However, an undefined ++ symbol in an object appearing later on the command line will not ++ cause the linker to search the archive again. ++ ++ See the `-(' option for a way to force the linker to search ++ archives multiple times. ++ ++ You may list the same archive multiple times on the command line. ++ ++ This type of archive searching is standard for Unix linkers. ++ However, if you are using `ld' on AIX, note that it is different ++ from the behaviour of the AIX linker. ++ ++`-LSEARCHDIR' ++`--library-path=SEARCHDIR' ++ Add path SEARCHDIR to the list of paths that `ld' will search for ++ archive libraries and `ld' control scripts. You may use this ++ option any number of times. The directories are searched in the ++ order in which they are specified on the command line. ++ Directories specified on the command line are searched before the ++ default directories. All `-L' options apply to all `-l' options, ++ regardless of the order in which the options appear. ++ ++ If SEARCHDIR begins with `=', then the `=' will be replaced by the ++ "sysroot prefix", a path specified when the linker is configured. ++ ++ The default set of paths searched (without being specified with ++ `-L') depends on which emulation mode `ld' is using, and in some ++ cases also on how it was configured. *Note Environment::. ++ ++ The paths can also be specified in a link script with the ++ `SEARCH_DIR' command. Directories specified this way are searched ++ at the point in which the linker script appears in the command ++ line. ++ ++`-mEMULATION' ++ Emulate the EMULATION linker. You can list the available ++ emulations with the `--verbose' or `-V' options. ++ ++ If the `-m' option is not used, the emulation is taken from the ++ `LDEMULATION' environment variable, if that is defined. ++ ++ Otherwise, the default emulation depends upon how the linker was ++ configured. ++ ++`-M' ++`--print-map' ++ Print a link map to the standard output. A link map provides ++ information about the link, including the following: ++ ++ * Where object files are mapped into memory. ++ ++ * How common symbols are allocated. ++ ++ * All archive members included in the link, with a mention of ++ the symbol which caused the archive member to be brought in. ++ ++ * The values assigned to symbols. ++ ++ Note - symbols whose values are computed by an expression ++ which involves a reference to a previous value of the same ++ symbol may not have correct result displayed in the link map. ++ This is because the linker discards intermediate results and ++ only retains the final value of an expression. Under such ++ circumstances the linker will display the final value ++ enclosed by square brackets. Thus for example a linker ++ script containing: ++ ++ foo = 1 ++ foo = foo * 4 ++ foo = foo + 8 ++ ++ will produce the following output in the link map if the `-M' ++ option is used: ++ ++ 0x00000001 foo = 0x1 ++ [0x0000000c] foo = (foo * 0x4) ++ [0x0000000c] foo = (foo + 0x8) ++ ++ See *Note Expressions:: for more information about ++ expressions in linker scripts. ++ ++`-n' ++`--nmagic' ++ Turn off page alignment of sections, and mark the output as ++ `NMAGIC' if possible. ++ ++`-N' ++`--omagic' ++ Set the text and data sections to be readable and writable. Also, ++ do not page-align the data segment, and disable linking against ++ shared libraries. If the output format supports Unix style magic ++ numbers, mark the output as `OMAGIC'. Note: Although a writable ++ text section is allowed for PE-COFF targets, it does not conform ++ to the format specification published by Microsoft. ++ ++`--no-omagic' ++ This option negates most of the effects of the `-N' option. It ++ sets the text section to be read-only, and forces the data segment ++ to be page-aligned. Note - this option does not enable linking ++ against shared libraries. Use `-Bdynamic' for this. ++ ++`-o OUTPUT' ++`--output=OUTPUT' ++ Use OUTPUT as the name for the program produced by `ld'; if this ++ option is not specified, the name `a.out' is used by default. The ++ script command `OUTPUT' can also specify the output file name. ++ ++`-O LEVEL' ++ If LEVEL is a numeric values greater than zero `ld' optimizes the ++ output. This might take significantly longer and therefore ++ probably should only be enabled for the final binary. ++ ++`-q' ++`--emit-relocs' ++ Leave relocation sections and contents in fully linked ++ exececutables. Post link analysis and optimization tools may need ++ this information in order to perform correct modifications of ++ executables. This results in larger executables. ++ ++ This option is currently only supported on ELF platforms. ++ ++`--force-dynamic' ++ Force the output file to have dynamic sections. This option is ++ specific to VxWorks targets. ++ ++`-r' ++`--relocatable' ++ Generate relocatable output--i.e., generate an output file that ++ can in turn serve as input to `ld'. This is often called "partial ++ linking". As a side effect, in environments that support standard ++ Unix magic numbers, this option also sets the output file's magic ++ number to `OMAGIC'. If this option is not specified, an absolute ++ file is produced. When linking C++ programs, this option _will ++ not_ resolve references to constructors; to do that, use `-Ur'. ++ ++ When an input file does not have the same format as the output ++ file, partial linking is only supported if that input file does ++ not contain any relocations. Different output formats can have ++ further restrictions; for example some `a.out'-based formats do ++ not support partial linking with input files in other formats at ++ all. ++ ++ This option does the same thing as `-i'. ++ ++`-R FILENAME' ++`--just-symbols=FILENAME' ++ Read symbol names and their addresses from FILENAME, but do not ++ relocate it or include it in the output. This allows your output ++ file to refer symbolically to absolute locations of memory defined ++ in other programs. You may use this option more than once. ++ ++ For compatibility with other ELF linkers, if the `-R' option is ++ followed by a directory name, rather than a file name, it is ++ treated as the `-rpath' option. ++ ++`-s' ++`--strip-all' ++ Omit all symbol information from the output file. ++ ++`-S' ++`--strip-debug' ++ Omit debugger symbol information (but not all symbols) from the ++ output file. ++ ++`-t' ++`--trace' ++ Print the names of the input files as `ld' processes them. ++ ++`-T SCRIPTFILE' ++`--script=SCRIPTFILE' ++ Use SCRIPTFILE as the linker script. This script replaces `ld''s ++ default linker script (rather than adding to it), so COMMANDFILE ++ must specify everything necessary to describe the output file. ++ *Note Scripts::. If SCRIPTFILE does not exist in the current ++ directory, `ld' looks for it in the directories specified by any ++ preceding `-L' options. Multiple `-T' options accumulate. ++ ++`-u SYMBOL' ++`--undefined=SYMBOL' ++ Force SYMBOL to be entered in the output file as an undefined ++ symbol. Doing this may, for example, trigger linking of additional ++ modules from standard libraries. `-u' may be repeated with ++ different option arguments to enter additional undefined symbols. ++ This option is equivalent to the `EXTERN' linker script command. ++ ++`-Ur' ++ For anything other than C++ programs, this option is equivalent to ++ `-r': it generates relocatable output--i.e., an output file that ++ can in turn serve as input to `ld'. When linking C++ programs, ++ `-Ur' _does_ resolve references to constructors, unlike `-r'. It ++ does not work to use `-Ur' on files that were themselves linked ++ with `-Ur'; once the constructor table has been built, it cannot ++ be added to. Use `-Ur' only for the last partial link, and `-r' ++ for the others. ++ ++`--unique[=SECTION]' ++ Creates a separate output section for every input section matching ++ SECTION, or if the optional wildcard SECTION argument is missing, ++ for every orphan input section. An orphan section is one not ++ specifically mentioned in a linker script. You may use this option ++ multiple times on the command line; It prevents the normal ++ merging of input sections with the same name, overriding output ++ section assignments in a linker script. ++ ++`-v' ++`--version' ++`-V' ++ Display the version number for `ld'. The `-V' option also lists ++ the supported emulations. ++ ++`-x' ++`--discard-all' ++ Delete all local symbols. ++ ++`-X' ++`--discard-locals' ++ Delete all temporary local symbols. For most targets, this is all ++ local symbols whose names begin with `L'. ++ ++`-y SYMBOL' ++`--trace-symbol=SYMBOL' ++ Print the name of each linked file in which SYMBOL appears. This ++ option may be given any number of times. On many systems it is ++ necessary to prepend an underscore. ++ ++ This option is useful when you have an undefined symbol in your ++ link but don't know where the reference is coming from. ++ ++`-Y PATH' ++ Add PATH to the default library search path. This option exists ++ for Solaris compatibility. ++ ++`-z KEYWORD' ++ The recognized keywords are: ++ `combreloc' ++ Combines multiple reloc sections and sorts them to make ++ dynamic symbol lookup caching possible. ++ ++ `defs' ++ Disallows undefined symbols in object files. Undefined ++ symbols in shared libraries are still allowed. ++ ++ `execstack' ++ Marks the object as requiring executable stack. ++ ++ `initfirst' ++ This option is only meaningful when building a shared object. ++ It marks the object so that its runtime initialization will ++ occur before the runtime initialization of any other objects ++ brought into the process at the same time. Similarly the ++ runtime finalization of the object will occur after the ++ runtime finalization of any other objects. ++ ++ `interpose' ++ Marks the object that its symbol table interposes before all ++ symbols but the primary executable. ++ ++ `loadfltr' ++ Marks the object that its filters be processed immediately at ++ runtime. ++ ++ `muldefs' ++ Allows multiple definitions. ++ ++ `nocombreloc' ++ Disables multiple reloc sections combining. ++ ++ `nocopyreloc' ++ Disables production of copy relocs. ++ ++ `nodefaultlib' ++ Marks the object that the search for dependencies of this ++ object will ignore any default library search paths. ++ ++ `nodelete' ++ Marks the object shouldn't be unloaded at runtime. ++ ++ `nodlopen' ++ Marks the object not available to `dlopen'. ++ ++ `nodump' ++ Marks the object can not be dumped by `dldump'. ++ ++ `noexecstack' ++ Marks the object as not requiring executable stack. ++ ++ `norelro' ++ Don't create an ELF `PT_GNU_RELRO' segment header in the ++ object. ++ ++ `now' ++ When generating an executable or shared library, mark it to ++ tell the dynamic linker to resolve all symbols when the ++ program is started, or when the shared library is linked to ++ using dlopen, instead of deferring function call resolution ++ to the point when the function is first called. ++ ++ `origin' ++ Marks the object may contain $ORIGIN. ++ ++ `relro' ++ Create an ELF `PT_GNU_RELRO' segment header in the object. ++ ++ ++ Other keywords are ignored for Solaris compatibility. ++ ++`-( ARCHIVES -)' ++`--start-group ARCHIVES --end-group' ++ The ARCHIVES should be a list of archive files. They may be ++ either explicit file names, or `-l' options. ++ ++ The specified archives are searched repeatedly until no new ++ undefined references are created. Normally, an archive is ++ searched only once in the order that it is specified on the ++ command line. If a symbol in that archive is needed to resolve an ++ undefined symbol referred to by an object in an archive that ++ appears later on the command line, the linker would not be able to ++ resolve that reference. By grouping the archives, they all be ++ searched repeatedly until all possible references are resolved. ++ ++ Using this option has a significant performance cost. It is best ++ to use it only when there are unavoidable circular references ++ between two or more archives. ++ ++`--accept-unknown-input-arch' ++`--no-accept-unknown-input-arch' ++ Tells the linker to accept input files whose architecture cannot be ++ recognised. The assumption is that the user knows what they are ++ doing and deliberately wants to link in these unknown input files. ++ This was the default behaviour of the linker, before release ++ 2.14. The default behaviour from release 2.14 onwards is to ++ reject such input files, and so the `--accept-unknown-input-arch' ++ option has been added to restore the old behaviour. ++ ++`--as-needed' ++`--no-as-needed' ++ This option affects ELF DT_NEEDED tags for dynamic libraries ++ mentioned on the command line after the `--as-needed' option. ++ Normally, the linker will add a DT_NEEDED tag for each dynamic ++ library mentioned on the command line, regardless of whether the ++ library is actually needed. `--as-needed' causes DT_NEEDED tags ++ to only be emitted for libraries that satisfy some symbol ++ reference from regular objects which is undefined at the point ++ that the library was linked. `--no-as-needed' restores the ++ default behaviour. ++ ++`--add-needed' ++`--no-add-needed' ++ This option affects the treatment of dynamic libraries from ELF ++ DT_NEEDED tags in dynamic libraries mentioned on the command line ++ after the `--no-add-needed' option. Normally, the linker will add ++ a DT_NEEDED tag for each dynamic library from DT_NEEDED tags. ++ `--no-add-needed' causes DT_NEEDED tags will never be emitted for ++ those libraries from DT_NEEDED tags. `--add-needed' restores the ++ default behaviour. ++ ++`-assert KEYWORD' ++ This option is ignored for SunOS compatibility. ++ ++`-Bdynamic' ++`-dy' ++`-call_shared' ++ Link against dynamic libraries. This is only meaningful on ++ platforms for which shared libraries are supported. This option ++ is normally the default on such platforms. The different variants ++ of this option are for compatibility with various systems. You ++ may use this option multiple times on the command line: it affects ++ library searching for `-l' options which follow it. ++ ++`-Bgroup' ++ Set the `DF_1_GROUP' flag in the `DT_FLAGS_1' entry in the dynamic ++ section. This causes the runtime linker to handle lookups in this ++ object and its dependencies to be performed only inside the group. ++ `--unresolved-symbols=report-all' is implied. This option is only ++ meaningful on ELF platforms which support shared libraries. ++ ++`-Bstatic' ++`-dn' ++`-non_shared' ++`-static' ++ Do not link against shared libraries. This is only meaningful on ++ platforms for which shared libraries are supported. The different ++ variants of this option are for compatibility with various ++ systems. You may use this option multiple times on the command ++ line: it affects library searching for `-l' options which follow ++ it. This option also implies `--unresolved-symbols=report-all'. ++ This option can be used with `-shared'. Doing so means that a ++ shared library is being created but that all of the library's ++ external references must be resolved by pulling in entries from ++ static libraries. ++ ++`-Bsymbolic' ++ When creating a shared library, bind references to global symbols ++ to the definition within the shared library, if any. Normally, it ++ is possible for a program linked against a shared library to ++ override the definition within the shared library. This option is ++ only meaningful on ELF platforms which support shared libraries. ++ ++`--check-sections' ++`--no-check-sections' ++ Asks the linker _not_ to check section addresses after they have ++ been assigned to see if there are any overlaps. Normally the ++ linker will perform this check, and if it finds any overlaps it ++ will produce suitable error messages. The linker does know about, ++ and does make allowances for sections in overlays. The default ++ behaviour can be restored by using the command line switch ++ `--check-sections'. ++ ++`--cref' ++ Output a cross reference table. If a linker map file is being ++ generated, the cross reference table is printed to the map file. ++ Otherwise, it is printed on the standard output. ++ ++ The format of the table is intentionally simple, so that it may be ++ easily processed by a script if necessary. The symbols are ++ printed out, sorted by name. For each symbol, a list of file ++ names is given. If the symbol is defined, the first file listed ++ is the location of the definition. The remaining files contain ++ references to the symbol. ++ ++`--no-define-common' ++ This option inhibits the assignment of addresses to common symbols. ++ The script command `INHIBIT_COMMON_ALLOCATION' has the same effect. ++ *Note Miscellaneous Commands::. ++ ++ The `--no-define-common' option allows decoupling the decision to ++ assign addresses to Common symbols from the choice of the output ++ file type; otherwise a non-Relocatable output type forces ++ assigning addresses to Common symbols. Using `--no-define-common' ++ allows Common symbols that are referenced from a shared library to ++ be assigned addresses only in the main program. This eliminates ++ the unused duplicate space in the shared library, and also ++ prevents any possible confusion over resolving to the wrong ++ duplicate when there are many dynamic modules with specialized ++ search paths for runtime symbol resolution. ++ ++`--defsym SYMBOL=EXPRESSION' ++ Create a global symbol in the output file, containing the absolute ++ address given by EXPRESSION. You may use this option as many ++ times as necessary to define multiple symbols in the command line. ++ A limited form of arithmetic is supported for the EXPRESSION in ++ this context: you may give a hexadecimal constant or the name of ++ an existing symbol, or use `+' and `-' to add or subtract ++ hexadecimal constants or symbols. If you need more elaborate ++ expressions, consider using the linker command language from a ++ script (*note Assignment: Symbol Definitions: Assignments.). ++ _Note:_ there should be no white space between SYMBOL, the equals ++ sign ("<=>"), and EXPRESSION. ++ ++`--demangle[=STYLE]' ++`--no-demangle' ++ These options control whether to demangle symbol names in error ++ messages and other output. When the linker is told to demangle, ++ it tries to present symbol names in a readable fashion: it strips ++ leading underscores if they are used by the object file format, ++ and converts C++ mangled symbol names into user readable names. ++ Different compilers have different mangling styles. The optional ++ demangling style argument can be used to choose an appropriate ++ demangling style for your compiler. The linker will demangle by ++ default unless the environment variable `COLLECT_NO_DEMANGLE' is ++ set. These options may be used to override the default. ++ ++`--dynamic-linker FILE' ++ Set the name of the dynamic linker. This is only meaningful when ++ generating dynamically linked ELF executables. The default dynamic ++ linker is normally correct; don't use this unless you know what ++ you are doing. ++ ++`--fatal-warnings' ++ Treat all warnings as errors. ++ ++`--force-exe-suffix' ++ Make sure that an output file has a .exe suffix. ++ ++ If a successfully built fully linked output file does not have a ++ `.exe' or `.dll' suffix, this option forces the linker to copy the ++ output file to one of the same name with a `.exe' suffix. This ++ option is useful when using unmodified Unix makefiles on a ++ Microsoft Windows host, since some versions of Windows won't run ++ an image unless it ends in a `.exe' suffix. ++ ++`--no-gc-sections' ++`--gc-sections' ++ Enable garbage collection of unused input sections. It is ignored ++ on targets that do not support this option. This option is not ++ compatible with `-r'. The default behaviour (of not performing ++ this garbage collection) can be restored by specifying ++ `--no-gc-sections' on the command line. ++ ++`--help' ++ Print a summary of the command-line options on the standard output ++ and exit. ++ ++`--target-help' ++ Print a summary of all target specific options on the standard ++ output and exit. ++ ++`-Map MAPFILE' ++ Print a link map to the file MAPFILE. See the description of the ++ `-M' option, above. ++ ++`--no-keep-memory' ++ `ld' normally optimizes for speed over memory usage by caching the ++ symbol tables of input files in memory. This option tells `ld' to ++ instead optimize for memory usage, by rereading the symbol tables ++ as necessary. This may be required if `ld' runs out of memory ++ space while linking a large executable. ++ ++`--no-undefined' ++`-z defs' ++ Report unresolved symbol references from regular object files. ++ This is done even if the linker is creating a non-symbolic shared ++ library. The switch `--[no-]allow-shlib-undefined' controls the ++ behaviour for reporting unresolved references found in shared ++ libraries being linked in. ++ ++`--allow-multiple-definition' ++`-z muldefs' ++ Normally when a symbol is defined multiple times, the linker will ++ report a fatal error. These options allow multiple definitions and ++ the first definition will be used. ++ ++`--allow-shlib-undefined' ++`--no-allow-shlib-undefined' ++ Allows (the default) or disallows undefined symbols in shared ++ libraries. This switch is similar to `--no-undefined' except that ++ it determines the behaviour when the undefined symbols are in a ++ shared library rather than a regular object file. It does not ++ affect how undefined symbols in regular object files are handled. ++ ++ The reason that `--allow-shlib-undefined' is the default is that ++ the shared library being specified at link time may not be the ++ same as the one that is available at load time, so the symbols ++ might actually be resolvable at load time. Plus there are some ++ systems, (eg BeOS) where undefined symbols in shared libraries is ++ normal. (The kernel patches them at load time to select which ++ function is most appropriate for the current architecture. This ++ is used for example to dynamically select an appropriate memset ++ function). Apparently it is also normal for HPPA shared libraries ++ to have undefined symbols. ++ ++`--no-undefined-version' ++ Normally when a symbol has an undefined version, the linker will ++ ignore it. This option disallows symbols with undefined version ++ and a fatal error will be issued instead. ++ ++`--default-symver' ++ Create and use a default symbol version (the soname) for ++ unversioned exported symbols. ++ ++`--default-imported-symver' ++ Create and use a default symbol version (the soname) for ++ unversioned imported symbols. ++ ++`--no-warn-mismatch' ++ Normally `ld' will give an error if you try to link together input ++ files that are mismatched for some reason, perhaps because they ++ have been compiled for different processors or for different ++ endiannesses. This option tells `ld' that it should silently ++ permit such possible errors. This option should only be used with ++ care, in cases when you have taken some special action that ++ ensures that the linker errors are inappropriate. ++ ++`--no-whole-archive' ++ Turn off the effect of the `--whole-archive' option for subsequent ++ archive files. ++ ++`--noinhibit-exec' ++ Retain the executable output file whenever it is still usable. ++ Normally, the linker will not produce an output file if it ++ encounters errors during the link process; it exits without ++ writing an output file when it issues any error whatsoever. ++ ++`-nostdlib' ++ Only search library directories explicitly specified on the ++ command line. Library directories specified in linker scripts ++ (including linker scripts specified on the command line) are ++ ignored. ++ ++`--oformat OUTPUT-FORMAT' ++ `ld' may be configured to support more than one kind of object ++ file. If your `ld' is configured this way, you can use the ++ `--oformat' option to specify the binary format for the output ++ object file. Even when `ld' is configured to support alternative ++ object formats, you don't usually need to specify this, as `ld' ++ should be configured to produce as a default output format the most ++ usual format on each machine. OUTPUT-FORMAT is a text string, the ++ name of a particular format supported by the BFD libraries. (You ++ can list the available binary formats with `objdump -i'.) The ++ script command `OUTPUT_FORMAT' can also specify the output format, ++ but this option overrides it. *Note BFD::. ++ ++`-pie' ++`--pic-executable' ++ Create a position independent executable. This is currently only ++ supported on ELF platforms. Position independent executables are ++ similar to shared libraries in that they are relocated by the ++ dynamic linker to the virtual address the OS chooses for them ++ (which can vary between invocations). Like normal dynamically ++ linked executables they can be executed and symbols defined in the ++ executable cannot be overridden by shared libraries. ++ ++`-qmagic' ++ This option is ignored for Linux compatibility. ++ ++`-Qy' ++ This option is ignored for SVR4 compatibility. ++ ++`--relax' ++ An option with machine dependent effects. This option is only ++ supported on a few targets. *Note `ld' and the H8/300: H8/300. ++ *Note `ld' and the Intel 960 family: i960. *Note `ld' and Xtensa ++ Processors: Xtensa. *Note `ld' and PowerPC 32-bit ELF Support: ++ PowerPC ELF32. ++ ++ On some platforms, the `--relax' option performs global ++ optimizations that become possible when the linker resolves ++ addressing in the program, such as relaxing address modes and ++ synthesizing new instructions in the output object file. ++ ++ On some platforms these link time global optimizations may make ++ symbolic debugging of the resulting executable impossible. This ++ is known to be the case for the Matsushita MN10200 and MN10300 ++ family of processors. ++ ++ On platforms where this is not supported, `--relax' is accepted, ++ but ignored. ++ ++`--retain-symbols-file FILENAME' ++ Retain _only_ the symbols listed in the file FILENAME, discarding ++ all others. FILENAME is simply a flat file, with one symbol name ++ per line. This option is especially useful in environments (such ++ as VxWorks) where a large global symbol table is accumulated ++ gradually, to conserve run-time memory. ++ ++ `--retain-symbols-file' does _not_ discard undefined symbols, or ++ symbols needed for relocations. ++ ++ You may only specify `--retain-symbols-file' once in the command ++ line. It overrides `-s' and `-S'. ++ ++`-rpath DIR' ++ Add a directory to the runtime library search path. This is used ++ when linking an ELF executable with shared objects. All `-rpath' ++ arguments are concatenated and passed to the runtime linker, which ++ uses them to locate shared objects at runtime. The `-rpath' ++ option is also used when locating shared objects which are needed ++ by shared objects explicitly included in the link; see the ++ description of the `-rpath-link' option. If `-rpath' is not used ++ when linking an ELF executable, the contents of the environment ++ variable `LD_RUN_PATH' will be used if it is defined. ++ ++ The `-rpath' option may also be used on SunOS. By default, on ++ SunOS, the linker will form a runtime search patch out of all the ++ `-L' options it is given. If a `-rpath' option is used, the ++ runtime search path will be formed exclusively using the `-rpath' ++ options, ignoring the `-L' options. This can be useful when using ++ gcc, which adds many `-L' options which may be on NFS mounted ++ filesystems. ++ ++ For compatibility with other ELF linkers, if the `-R' option is ++ followed by a directory name, rather than a file name, it is ++ treated as the `-rpath' option. ++ ++`-rpath-link DIR' ++ When using ELF or SunOS, one shared library may require another. ++ This happens when an `ld -shared' link includes a shared library ++ as one of the input files. ++ ++ When the linker encounters such a dependency when doing a ++ non-shared, non-relocatable link, it will automatically try to ++ locate the required shared library and include it in the link, if ++ it is not included explicitly. In such a case, the `-rpath-link' ++ option specifies the first set of directories to search. The ++ `-rpath-link' option may specify a sequence of directory names ++ either by specifying a list of names separated by colons, or by ++ appearing multiple times. ++ ++ This option should be used with caution as it overrides the search ++ path that may have been hard compiled into a shared library. In ++ such a case it is possible to use unintentionally a different ++ search path than the runtime linker would do. ++ ++ The linker uses the following search paths to locate required ++ shared libraries. ++ 1. Any directories specified by `-rpath-link' options. ++ ++ 2. Any directories specified by `-rpath' options. The difference ++ between `-rpath' and `-rpath-link' is that directories ++ specified by `-rpath' options are included in the executable ++ and used at runtime, whereas the `-rpath-link' option is only ++ effective at link time. It is for the native linker only. ++ ++ 3. On an ELF system, if the `-rpath' and `rpath-link' options ++ were not used, search the contents of the environment variable ++ `LD_RUN_PATH'. It is for the native linker only. ++ ++ 4. On SunOS, if the `-rpath' option was not used, search any ++ directories specified using `-L' options. ++ ++ 5. For a native linker, the contents of the environment variable ++ `LD_LIBRARY_PATH'. ++ ++ 6. For a native ELF linker, the directories in `DT_RUNPATH' or ++ `DT_RPATH' of a shared library are searched for shared ++ libraries needed by it. The `DT_RPATH' entries are ignored if ++ `DT_RUNPATH' entries exist. ++ ++ 7. The default directories, normally `/lib' and `/usr/lib'. ++ ++ 8. For a native linker on an ELF system, if the file ++ `/etc/ld.so.conf' exists, the list of directories found in ++ that file. ++ ++ If the required shared library is not found, the linker will issue ++ a warning and continue with the link. ++ ++`-shared' ++`-Bshareable' ++ Create a shared library. This is currently only supported on ELF, ++ XCOFF and SunOS platforms. On SunOS, the linker will ++ automatically create a shared library if the `-e' option is not ++ used and there are undefined symbols in the link. ++ ++`--sort-common' ++ This option tells `ld' to sort the common symbols by size when it ++ places them in the appropriate output sections. First come all ++ the one byte symbols, then all the two byte, then all the four ++ byte, and then everything else. This is to prevent gaps between ++ symbols due to alignment constraints. ++ ++`--sort-section name' ++ This option will apply `SORT_BY_NAME' to all wildcard section ++ patterns in the linker script. ++ ++`--sort-section alignment' ++ This option will apply `SORT_BY_ALIGNMENT' to all wildcard section ++ patterns in the linker script. ++ ++`--split-by-file [SIZE]' ++ Similar to `--split-by-reloc' but creates a new output section for ++ each input file when SIZE is reached. SIZE defaults to a size of ++ 1 if not given. ++ ++`--split-by-reloc [COUNT]' ++ Tries to creates extra sections in the output file so that no ++ single output section in the file contains more than COUNT ++ relocations. This is useful when generating huge relocatable ++ files for downloading into certain real time kernels with the COFF ++ object file format; since COFF cannot represent more than 65535 ++ relocations in a single section. Note that this will fail to work ++ with object file formats which do not support arbitrary sections. ++ The linker will not split up individual input sections for ++ redistribution, so if a single input section contains more than ++ COUNT relocations one output section will contain that many ++ relocations. COUNT defaults to a value of 32768. ++ ++`--stats' ++ Compute and display statistics about the operation of the linker, ++ such as execution time and memory usage. ++ ++`--sysroot=DIRECTORY' ++ Use DIRECTORY as the location of the sysroot, overriding the ++ configure-time default. This option is only supported by linkers ++ that were configured using `--with-sysroot'. ++ ++`--traditional-format' ++ For some targets, the output of `ld' is different in some ways from ++ the output of some existing linker. This switch requests `ld' to ++ use the traditional format instead. ++ ++ For example, on SunOS, `ld' combines duplicate entries in the ++ symbol string table. This can reduce the size of an output file ++ with full debugging information by over 30 percent. ++ Unfortunately, the SunOS `dbx' program can not read the resulting ++ program (`gdb' has no trouble). The `--traditional-format' switch ++ tells `ld' to not combine duplicate entries. ++ ++`--section-start SECTIONNAME=ORG' ++ Locate a section in the output file at the absolute address given ++ by ORG. You may use this option as many times as necessary to ++ locate multiple sections in the command line. ORG must be a ++ single hexadecimal integer; for compatibility with other linkers, ++ you may omit the leading `0x' usually associated with hexadecimal ++ values. _Note:_ there should be no white space between ++ SECTIONNAME, the equals sign ("<=>"), and ORG. ++ ++`-Tbss ORG' ++`-Tdata ORG' ++`-Ttext ORG' ++ Same as -section-start, with `.bss', `.data' or `.text' as the ++ SECTIONNAME. ++ ++`--unresolved-symbols=METHOD' ++ Determine how to handle unresolved symbols. There are four ++ possible values for `method': ++ ++ `ignore-all' ++ Do not report any unresolved symbols. ++ ++ `report-all' ++ Report all unresolved symbols. This is the default. ++ ++ `ignore-in-object-files' ++ Report unresolved symbols that are contained in shared ++ libraries, but ignore them if they come from regular object ++ files. ++ ++ `ignore-in-shared-libs' ++ Report unresolved symbols that come from regular object ++ files, but ignore them if they come from shared libraries. ++ This can be useful when creating a dynamic binary and it is ++ known that all the shared libraries that it should be ++ referencing are included on the linker's command line. ++ ++ The behaviour for shared libraries on their own can also be ++ controlled by the `--[no-]allow-shlib-undefined' option. ++ ++ Normally the linker will generate an error message for each ++ reported unresolved symbol but the option ++ `--warn-unresolved-symbols' can change this to a warning. ++ ++`--dll-verbose' ++`--verbose' ++ Display the version number for `ld' and list the linker emulations ++ supported. Display which input files can and cannot be opened. ++ Display the linker script being used by the linker. ++ ++`--version-script=VERSION-SCRIPTFILE' ++ Specify the name of a version script to the linker. This is ++ typically used when creating shared libraries to specify ++ additional information about the version hierarchy for the library ++ being created. This option is only meaningful on ELF platforms ++ which support shared libraries. *Note VERSION::. ++ ++`--warn-common' ++ Warn when a common symbol is combined with another common symbol ++ or with a symbol definition. Unix linkers allow this somewhat ++ sloppy practise, but linkers on some other operating systems do ++ not. This option allows you to find potential problems from ++ combining global symbols. Unfortunately, some C libraries use ++ this practise, so you may get some warnings about symbols in the ++ libraries as well as in your programs. ++ ++ There are three kinds of global symbols, illustrated here by C ++ examples: ++ ++ `int i = 1;' ++ A definition, which goes in the initialized data section of ++ the output file. ++ ++ `extern int i;' ++ An undefined reference, which does not allocate space. There ++ must be either a definition or a common symbol for the ++ variable somewhere. ++ ++ `int i;' ++ A common symbol. If there are only (one or more) common ++ symbols for a variable, it goes in the uninitialized data ++ area of the output file. The linker merges multiple common ++ symbols for the same variable into a single symbol. If they ++ are of different sizes, it picks the largest size. The ++ linker turns a common symbol into a declaration, if there is ++ a definition of the same variable. ++ ++ The `--warn-common' option can produce five kinds of warnings. ++ Each warning consists of a pair of lines: the first describes the ++ symbol just encountered, and the second describes the previous ++ symbol encountered with the same name. One or both of the two ++ symbols will be a common symbol. ++ ++ 1. Turning a common symbol into a reference, because there is ++ already a definition for the symbol. ++ FILE(SECTION): warning: common of `SYMBOL' ++ overridden by definition ++ FILE(SECTION): warning: defined here ++ ++ 2. Turning a common symbol into a reference, because a later ++ definition for the symbol is encountered. This is the same ++ as the previous case, except that the symbols are encountered ++ in a different order. ++ FILE(SECTION): warning: definition of `SYMBOL' ++ overriding common ++ FILE(SECTION): warning: common is here ++ ++ 3. Merging a common symbol with a previous same-sized common ++ symbol. ++ FILE(SECTION): warning: multiple common ++ of `SYMBOL' ++ FILE(SECTION): warning: previous common is here ++ ++ 4. Merging a common symbol with a previous larger common symbol. ++ FILE(SECTION): warning: common of `SYMBOL' ++ overridden by larger common ++ FILE(SECTION): warning: larger common is here ++ ++ 5. Merging a common symbol with a previous smaller common ++ symbol. This is the same as the previous case, except that ++ the symbols are encountered in a different order. ++ FILE(SECTION): warning: common of `SYMBOL' ++ overriding smaller common ++ FILE(SECTION): warning: smaller common is here ++ ++`--warn-constructors' ++ Warn if any global constructors are used. This is only useful for ++ a few object file formats. For formats like COFF or ELF, the ++ linker can not detect the use of global constructors. ++ ++`--warn-multiple-gp' ++ Warn if multiple global pointer values are required in the output ++ file. This is only meaningful for certain processors, such as the ++ Alpha. Specifically, some processors put large-valued constants ++ in a special section. A special register (the global pointer) ++ points into the middle of this section, so that constants can be ++ loaded efficiently via a base-register relative addressing mode. ++ Since the offset in base-register relative mode is fixed and ++ relatively small (e.g., 16 bits), this limits the maximum size of ++ the constant pool. Thus, in large programs, it is often necessary ++ to use multiple global pointer values in order to be able to ++ address all possible constants. This option causes a warning to ++ be issued whenever this case occurs. ++ ++`--warn-once' ++ Only warn once for each undefined symbol, rather than once per ++ module which refers to it. ++ ++`--warn-section-align' ++ Warn if the address of an output section is changed because of ++ alignment. Typically, the alignment will be set by an input ++ section. The address will only be changed if it not explicitly ++ specified; that is, if the `SECTIONS' command does not specify a ++ start address for the section (*note SECTIONS::). ++ ++`--warn-shared-textrel' ++ Warn if the linker adds a DT_TEXTREL to a shared object. ++ ++`--warn-unresolved-symbols' ++ If the linker is going to report an unresolved symbol (see the ++ option `--unresolved-symbols') it will normally generate an error. ++ This option makes it generate a warning instead. ++ ++`--error-unresolved-symbols' ++ This restores the linker's default behaviour of generating errors ++ when it is reporting unresolved symbols. ++ ++`--whole-archive' ++ For each archive mentioned on the command line after the ++ `--whole-archive' option, include every object file in the archive ++ in the link, rather than searching the archive for the required ++ object files. This is normally used to turn an archive file into ++ a shared library, forcing every object to be included in the ++ resulting shared library. This option may be used more than once. ++ ++ Two notes when using this option from gcc: First, gcc doesn't know ++ about this option, so you have to use `-Wl,-whole-archive'. ++ Second, don't forget to use `-Wl,-no-whole-archive' after your ++ list of archives, because gcc will add its own list of archives to ++ your link and you may not want this flag to affect those as well. ++ ++`--wrap SYMBOL' ++ Use a wrapper function for SYMBOL. Any undefined reference to ++ SYMBOL will be resolved to `__wrap_SYMBOL'. Any undefined ++ reference to `__real_SYMBOL' will be resolved to SYMBOL. ++ ++ This can be used to provide a wrapper for a system function. The ++ wrapper function should be called `__wrap_SYMBOL'. If it wishes ++ to call the system function, it should call `__real_SYMBOL'. ++ ++ Here is a trivial example: ++ ++ void * ++ __wrap_malloc (size_t c) ++ { ++ printf ("malloc called with %zu\n", c); ++ return __real_malloc (c); ++ } ++ ++ If you link other code with this file using `--wrap malloc', then ++ all calls to `malloc' will call the function `__wrap_malloc' ++ instead. The call to `__real_malloc' in `__wrap_malloc' will call ++ the real `malloc' function. ++ ++ You may wish to provide a `__real_malloc' function as well, so that ++ links without the `--wrap' option will succeed. If you do this, ++ you should not put the definition of `__real_malloc' in the same ++ file as `__wrap_malloc'; if you do, the assembler may resolve the ++ call before the linker has a chance to wrap it to `malloc'. ++ ++`--eh-frame-hdr' ++ Request creation of `.eh_frame_hdr' section and ELF ++ `PT_GNU_EH_FRAME' segment header. ++ ++`--enable-new-dtags' ++`--disable-new-dtags' ++ This linker can create the new dynamic tags in ELF. But the older ++ ELF systems may not understand them. If you specify ++ `--enable-new-dtags', the dynamic tags will be created as needed. ++ If you specify `--disable-new-dtags', no new dynamic tags will be ++ created. By default, the new dynamic tags are not created. Note ++ that those options are only available for ELF systems. ++ ++`--hash-size=NUMBER' ++ Set the default size of the linker's hash tables to a prime number ++ close to NUMBER. Increasing this value can reduce the length of ++ time it takes the linker to perform its tasks, at the expense of ++ increasing the linker's memory requirements. Similarly reducing ++ this value can reduce the memory requirements at the expense of ++ speed. ++ ++`--reduce-memory-overheads' ++ This option reduces memory requirements at ld runtime, at the ++ expense of linking speed. This was introduced to select the old ++ O(n^2) algorithm for link map file generation, rather than the new ++ O(n) algorithm which uses about 40% more memory for symbol storage. ++ ++ Another effect of the switch is to set the default hash table size ++ to 1021, which again saves memory at the cost of lengthening the ++ linker's run time. This is not done however if the `--hash-size' ++ switch has been used. ++ ++ The `--reduce-memory-overheads' switch may be also be used to ++ enable other tradeoffs in future versions of the linker. ++ ++ ++2.1.1 Options Specific to i386 PE Targets ++----------------------------------------- ++ ++The i386 PE linker supports the `-shared' option, which causes the ++output to be a dynamically linked library (DLL) instead of a normal ++executable. You should name the output `*.dll' when you use this ++option. In addition, the linker fully supports the standard `*.def' ++files, which may be specified on the linker command line like an object ++file (in fact, it should precede archives it exports symbols from, to ++ensure that they get linked in, just like a normal object file). ++ ++ In addition to the options common to all targets, the i386 PE linker ++support additional command line options that are specific to the i386 ++PE target. Options that take values may be separated from their values ++by either a space or an equals sign. ++ ++`--add-stdcall-alias' ++ If given, symbols with a stdcall suffix (@NN) will be exported ++ as-is and also with the suffix stripped. [This option is specific ++ to the i386 PE targeted port of the linker] ++ ++`--base-file FILE' ++ Use FILE as the name of a file in which to save the base addresses ++ of all the relocations needed for generating DLLs with `dlltool'. ++ [This is an i386 PE specific option] ++ ++`--dll' ++ Create a DLL instead of a regular executable. You may also use ++ `-shared' or specify a `LIBRARY' in a given `.def' file. [This ++ option is specific to the i386 PE targeted port of the linker] ++ ++`--enable-stdcall-fixup' ++`--disable-stdcall-fixup' ++ If the link finds a symbol that it cannot resolve, it will attempt ++ to do "fuzzy linking" by looking for another defined symbol that ++ differs only in the format of the symbol name (cdecl vs stdcall) ++ and will resolve that symbol by linking to the match. For ++ example, the undefined symbol `_foo' might be linked to the ++ function `_foo@12', or the undefined symbol `_bar@16' might be ++ linked to the function `_bar'. When the linker does this, it ++ prints a warning, since it normally should have failed to link, ++ but sometimes import libraries generated from third-party dlls may ++ need this feature to be usable. If you specify ++ `--enable-stdcall-fixup', this feature is fully enabled and ++ warnings are not printed. If you specify ++ `--disable-stdcall-fixup', this feature is disabled and such ++ mismatches are considered to be errors. [This option is specific ++ to the i386 PE targeted port of the linker] ++ ++`--export-all-symbols' ++ If given, all global symbols in the objects used to build a DLL ++ will be exported by the DLL. Note that this is the default if ++ there otherwise wouldn't be any exported symbols. When symbols are ++ explicitly exported via DEF files or implicitly exported via ++ function attributes, the default is to not export anything else ++ unless this option is given. Note that the symbols `DllMain@12', ++ `DllEntryPoint@0', `DllMainCRTStartup@12', and `impure_ptr' will ++ not be automatically exported. Also, symbols imported from other ++ DLLs will not be re-exported, nor will symbols specifying the ++ DLL's internal layout such as those beginning with `_head_' or ++ ending with `_iname'. In addition, no symbols from `libgcc', ++ `libstd++', `libmingw32', or `crtX.o' will be exported. Symbols ++ whose names begin with `__rtti_' or `__builtin_' will not be ++ exported, to help with C++ DLLs. Finally, there is an extensive ++ list of cygwin-private symbols that are not exported (obviously, ++ this applies on when building DLLs for cygwin targets). These ++ cygwin-excludes are: `_cygwin_dll_entry@12', ++ `_cygwin_crt0_common@8', `_cygwin_noncygwin_dll_entry@12', ++ `_fmode', `_impure_ptr', `cygwin_attach_dll', `cygwin_premain0', ++ `cygwin_premain1', `cygwin_premain2', `cygwin_premain3', and ++ `environ'. [This option is specific to the i386 PE targeted port ++ of the linker] ++ ++`--exclude-symbols SYMBOL,SYMBOL,...' ++ Specifies a list of symbols which should not be automatically ++ exported. The symbol names may be delimited by commas or colons. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--file-alignment' ++ Specify the file alignment. Sections in the file will always ++ begin at file offsets which are multiples of this number. This ++ defaults to 512. [This option is specific to the i386 PE targeted ++ port of the linker] ++ ++`--heap RESERVE' ++`--heap RESERVE,COMMIT' ++ Specify the amount of memory to reserve (and optionally commit) to ++ be used as heap for this program. The default is 1Mb reserved, 4K ++ committed. [This option is specific to the i386 PE targeted port ++ of the linker] ++ ++`--image-base VALUE' ++ Use VALUE as the base address of your program or dll. This is the ++ lowest memory location that will be used when your program or dll ++ is loaded. To reduce the need to relocate and improve performance ++ of your dlls, each should have a unique base address and not ++ overlap any other dlls. The default is 0x400000 for executables, ++ and 0x10000000 for dlls. [This option is specific to the i386 PE ++ targeted port of the linker] ++ ++`--kill-at' ++ If given, the stdcall suffixes (@NN) will be stripped from symbols ++ before they are exported. [This option is specific to the i386 PE ++ targeted port of the linker] ++ ++`--large-address-aware' ++ If given, the appropriate bit in the "Charateristics" field of the ++ COFF header is set to indicate that this executable supports ++ virtual addresses greater than 2 gigabytes. This should be used ++ in conjuction with the /3GB or /USERVA=VALUE megabytes switch in ++ the "[operating systems]" section of the BOOT.INI. Otherwise, ++ this bit has no effect. [This option is specific to PE targeted ++ ports of the linker] ++ ++`--major-image-version VALUE' ++ Sets the major number of the "image version". Defaults to 1. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--major-os-version VALUE' ++ Sets the major number of the "os version". Defaults to 4. [This ++ option is specific to the i386 PE targeted port of the linker] ++ ++`--major-subsystem-version VALUE' ++ Sets the major number of the "subsystem version". Defaults to 4. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--minor-image-version VALUE' ++ Sets the minor number of the "image version". Defaults to 0. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--minor-os-version VALUE' ++ Sets the minor number of the "os version". Defaults to 0. [This ++ option is specific to the i386 PE targeted port of the linker] ++ ++`--minor-subsystem-version VALUE' ++ Sets the minor number of the "subsystem version". Defaults to 0. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--output-def FILE' ++ The linker will create the file FILE which will contain a DEF file ++ corresponding to the DLL the linker is generating. This DEF file ++ (which should be called `*.def') may be used to create an import ++ library with `dlltool' or may be used as a reference to ++ automatically or implicitly exported symbols. [This option is ++ specific to the i386 PE targeted port of the linker] ++ ++`--out-implib FILE' ++ The linker will create the file FILE which will contain an import ++ lib corresponding to the DLL the linker is generating. This import ++ lib (which should be called `*.dll.a' or `*.a' may be used to link ++ clients against the generated DLL; this behaviour makes it ++ possible to skip a separate `dlltool' import library creation step. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--enable-auto-image-base' ++ Automatically choose the image base for DLLs, unless one is ++ specified using the `--image-base' argument. By using a hash ++ generated from the dllname to create unique image bases for each ++ DLL, in-memory collisions and relocations which can delay program ++ execution are avoided. [This option is specific to the i386 PE ++ targeted port of the linker] ++ ++`--disable-auto-image-base' ++ Do not automatically generate a unique image base. If there is no ++ user-specified image base (`--image-base') then use the platform ++ default. [This option is specific to the i386 PE targeted port of ++ the linker] ++ ++`--dll-search-prefix STRING' ++ When linking dynamically to a dll without an import library, ++ search for `.dll' in preference to ++ `lib.dll'. This behaviour allows easy distinction ++ between DLLs built for the various "subplatforms": native, cygwin, ++ uwin, pw, etc. For instance, cygwin DLLs typically use ++ `--dll-search-prefix=cyg'. [This option is specific to the i386 ++ PE targeted port of the linker] ++ ++`--enable-auto-import' ++ Do sophisticated linking of `_symbol' to `__imp__symbol' for DATA ++ imports from DLLs, and create the necessary thunking symbols when ++ building the import libraries with those DATA exports. Note: Use ++ of the 'auto-import' extension will cause the text section of the ++ image file to be made writable. This does not conform to the ++ PE-COFF format specification published by Microsoft. ++ ++ Using 'auto-import' generally will 'just work' - but sometimes you ++ may see this message: ++ ++ "variable '' can't be auto-imported. Please read the ++ documentation for ld's `--enable-auto-import' for details." ++ ++ This message occurs when some (sub)expression accesses an address ++ ultimately given by the sum of two constants (Win32 import tables ++ only allow one). Instances where this may occur include accesses ++ to member fields of struct variables imported from a DLL, as well ++ as using a constant index into an array variable imported from a ++ DLL. Any multiword variable (arrays, structs, long long, etc) may ++ trigger this error condition. However, regardless of the exact ++ data type of the offending exported variable, ld will always ++ detect it, issue the warning, and exit. ++ ++ There are several ways to address this difficulty, regardless of ++ the data type of the exported variable: ++ ++ One way is to use -enable-runtime-pseudo-reloc switch. This leaves ++ the task of adjusting references in your client code for runtime ++ environment, so this method works only when runtime environment ++ supports this feature. ++ ++ A second solution is to force one of the 'constants' to be a ++ variable - that is, unknown and un-optimizable at compile time. ++ For arrays, there are two possibilities: a) make the indexee (the ++ array's address) a variable, or b) make the 'constant' index a ++ variable. Thus: ++ ++ extern type extern_array[]; ++ extern_array[1] --> ++ { volatile type *t=extern_array; t[1] } ++ ++ or ++ ++ extern type extern_array[]; ++ extern_array[1] --> ++ { volatile int t=1; extern_array[t] } ++ ++ For structs (and most other multiword data types) the only option ++ is to make the struct itself (or the long long, or the ...) ++ variable: ++ ++ extern struct s extern_struct; ++ extern_struct.field --> ++ { volatile struct s *t=&extern_struct; t->field } ++ ++ or ++ ++ extern long long extern_ll; ++ extern_ll --> ++ { volatile long long * local_ll=&extern_ll; *local_ll } ++ ++ A third method of dealing with this difficulty is to abandon ++ 'auto-import' for the offending symbol and mark it with ++ `__declspec(dllimport)'. However, in practise that requires using ++ compile-time #defines to indicate whether you are building a DLL, ++ building client code that will link to the DLL, or merely ++ building/linking to a static library. In making the choice ++ between the various methods of resolving the 'direct address with ++ constant offset' problem, you should consider typical real-world ++ usage: ++ ++ Original: ++ --foo.h ++ extern int arr[]; ++ --foo.c ++ #include "foo.h" ++ void main(int argc, char **argv){ ++ printf("%d\n",arr[1]); ++ } ++ ++ Solution 1: ++ --foo.h ++ extern int arr[]; ++ --foo.c ++ #include "foo.h" ++ void main(int argc, char **argv){ ++ /* This workaround is for win32 and cygwin; do not "optimize" */ ++ volatile int *parr = arr; ++ printf("%d\n",parr[1]); ++ } ++ ++ Solution 2: ++ --foo.h ++ /* Note: auto-export is assumed (no __declspec(dllexport)) */ ++ #if (defined(_WIN32) || defined(__CYGWIN__)) && \ ++ !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC)) ++ #define FOO_IMPORT __declspec(dllimport) ++ #else ++ #define FOO_IMPORT ++ #endif ++ extern FOO_IMPORT int arr[]; ++ --foo.c ++ #include "foo.h" ++ void main(int argc, char **argv){ ++ printf("%d\n",arr[1]); ++ } ++ ++ A fourth way to avoid this problem is to re-code your library to ++ use a functional interface rather than a data interface for the ++ offending variables (e.g. set_foo() and get_foo() accessor ++ functions). [This option is specific to the i386 PE targeted port ++ of the linker] ++ ++`--disable-auto-import' ++ Do not attempt to do sophisticated linking of `_symbol' to ++ `__imp__symbol' for DATA imports from DLLs. [This option is ++ specific to the i386 PE targeted port of the linker] ++ ++`--enable-runtime-pseudo-reloc' ++ If your code contains expressions described in -enable-auto-import ++ section, that is, DATA imports from DLL with non-zero offset, this ++ switch will create a vector of 'runtime pseudo relocations' which ++ can be used by runtime environment to adjust references to such ++ data in your client code. [This option is specific to the i386 PE ++ targeted port of the linker] ++ ++`--disable-runtime-pseudo-reloc' ++ Do not create pseudo relocations for non-zero offset DATA imports ++ from DLLs. This is the default. [This option is specific to the ++ i386 PE targeted port of the linker] ++ ++`--enable-extra-pe-debug' ++ Show additional debug info related to auto-import symbol thunking. ++ [This option is specific to the i386 PE targeted port of the ++ linker] ++ ++`--section-alignment' ++ Sets the section alignment. Sections in memory will always begin ++ at addresses which are a multiple of this number. Defaults to ++ 0x1000. [This option is specific to the i386 PE targeted port of ++ the linker] ++ ++`--stack RESERVE' ++`--stack RESERVE,COMMIT' ++ Specify the amount of memory to reserve (and optionally commit) to ++ be used as stack for this program. The default is 2Mb reserved, 4K ++ committed. [This option is specific to the i386 PE targeted port ++ of the linker] ++ ++`--subsystem WHICH' ++`--subsystem WHICH:MAJOR' ++`--subsystem WHICH:MAJOR.MINOR' ++ Specifies the subsystem under which your program will execute. The ++ legal values for WHICH are `native', `windows', `console', ++ `posix', and `xbox'. You may optionally set the subsystem version ++ also. Numeric values are also accepted for WHICH. [This option ++ is specific to the i386 PE targeted port of the linker] ++ ++ ++ ++File: ld.info, Node: Environment, Prev: Options, Up: Invocation ++ ++2.2 Environment Variables ++========================= ++ ++You can change the behaviour of `ld' with the environment variables ++`GNUTARGET', `LDEMULATION' and `COLLECT_NO_DEMANGLE'. ++ ++ `GNUTARGET' determines the input-file object format if you don't use ++`-b' (or its synonym `--format'). Its value should be one of the BFD ++names for an input format (*note BFD::). If there is no `GNUTARGET' in ++the environment, `ld' uses the natural format of the target. If ++`GNUTARGET' is set to `default' then BFD attempts to discover the input ++format by examining binary input files; this method often succeeds, but ++there are potential ambiguities, since there is no method of ensuring ++that the magic number used to specify object-file formats is unique. ++However, the configuration procedure for BFD on each system places the ++conventional format for that system first in the search-list, so ++ambiguities are resolved in favor of convention. ++ ++ `LDEMULATION' determines the default emulation if you don't use the ++`-m' option. The emulation can affect various aspects of linker ++behaviour, particularly the default linker script. You can list the ++available emulations with the `--verbose' or `-V' options. If the `-m' ++option is not used, and the `LDEMULATION' environment variable is not ++defined, the default emulation depends upon how the linker was ++configured. ++ ++ Normally, the linker will default to demangling symbols. However, if ++`COLLECT_NO_DEMANGLE' is set in the environment, then it will default ++to not demangling symbols. This environment variable is used in a ++similar fashion by the `gcc' linker wrapper program. The default may ++be overridden by the `--demangle' and `--no-demangle' options. ++ ++ ++File: ld.info, Node: Scripts, Next: Machine Dependent, Prev: Invocation, Up: Top ++ ++3 Linker Scripts ++**************** ++ ++Every link is controlled by a "linker script". This script is written ++in the linker command language. ++ ++ The main purpose of the linker script is to describe how the ++sections in the input files should be mapped into the output file, and ++to control the memory layout of the output file. Most linker scripts ++do nothing more than this. However, when necessary, the linker script ++can also direct the linker to perform many other operations, using the ++commands described below. ++ ++ The linker always uses a linker script. If you do not supply one ++yourself, the linker will use a default script that is compiled into the ++linker executable. You can use the `--verbose' command line option to ++display the default linker script. Certain command line options, such ++as `-r' or `-N', will affect the default linker script. ++ ++ You may supply your own linker script by using the `-T' command line ++option. When you do this, your linker script will replace the default ++linker script. ++ ++ You may also use linker scripts implicitly by naming them as input ++files to the linker, as though they were files to be linked. *Note ++Implicit Linker Scripts::. ++ ++* Menu: ++ ++* Basic Script Concepts:: Basic Linker Script Concepts ++* Script Format:: Linker Script Format ++* Simple Example:: Simple Linker Script Example ++* Simple Commands:: Simple Linker Script Commands ++* Assignments:: Assigning Values to Symbols ++* SECTIONS:: SECTIONS Command ++* MEMORY:: MEMORY Command ++* PHDRS:: PHDRS Command ++* VERSION:: VERSION Command ++* Expressions:: Expressions in Linker Scripts ++* Implicit Linker Scripts:: Implicit Linker Scripts ++ ++ ++File: ld.info, Node: Basic Script Concepts, Next: Script Format, Up: Scripts ++ ++3.1 Basic Linker Script Concepts ++================================ ++ ++We need to define some basic concepts and vocabulary in order to ++describe the linker script language. ++ ++ The linker combines input files into a single output file. The ++output file and each input file are in a special data format known as an ++"object file format". Each file is called an "object file". The ++output file is often called an "executable", but for our purposes we ++will also call it an object file. Each object file has, among other ++things, a list of "sections". We sometimes refer to a section in an ++input file as an "input section"; similarly, a section in the output ++file is an "output section". ++ ++ Each section in an object file has a name and a size. Most sections ++also have an associated block of data, known as the "section contents". ++A section may be marked as "loadable", which mean that the contents ++should be loaded into memory when the output file is run. A section ++with no contents may be "allocatable", which means that an area in ++memory should be set aside, but nothing in particular should be loaded ++there (in some cases this memory must be zeroed out). A section which ++is neither loadable nor allocatable typically contains some sort of ++debugging information. ++ ++ Every loadable or allocatable output section has two addresses. The ++first is the "VMA", or virtual memory address. This is the address the ++section will have when the output file is run. The second is the ++"LMA", or load memory address. This is the address at which the ++section will be loaded. In most cases the two addresses will be the ++same. An example of when they might be different is when a data section ++is loaded into ROM, and then copied into RAM when the program starts up ++(this technique is often used to initialize global variables in a ROM ++based system). In this case the ROM address would be the LMA, and the ++RAM address would be the VMA. ++ ++ You can see the sections in an object file by using the `objdump' ++program with the `-h' option. ++ ++ Every object file also has a list of "symbols", known as the "symbol ++table". A symbol may be defined or undefined. Each symbol has a name, ++and each defined symbol has an address, among other information. If ++you compile a C or C++ program into an object file, you will get a ++defined symbol for every defined function and global or static ++variable. Every undefined function or global variable which is ++referenced in the input file will become an undefined symbol. ++ ++ You can see the symbols in an object file by using the `nm' program, ++or by using the `objdump' program with the `-t' option. ++ ++ ++File: ld.info, Node: Script Format, Next: Simple Example, Prev: Basic Script Concepts, Up: Scripts ++ ++3.2 Linker Script Format ++======================== ++ ++Linker scripts are text files. ++ ++ You write a linker script as a series of commands. Each command is ++either a keyword, possibly followed by arguments, or an assignment to a ++symbol. You may separate commands using semicolons. Whitespace is ++generally ignored. ++ ++ Strings such as file or format names can normally be entered ++directly. If the file name contains a character such as a comma which ++would otherwise serve to separate file names, you may put the file name ++in double quotes. There is no way to use a double quote character in a ++file name. ++ ++ You may include comments in linker scripts just as in C, delimited by ++`/*' and `*/'. As in C, comments are syntactically equivalent to ++whitespace. ++ ++ ++File: ld.info, Node: Simple Example, Next: Simple Commands, Prev: Script Format, Up: Scripts ++ ++3.3 Simple Linker Script Example ++================================ ++ ++Many linker scripts are fairly simple. ++ ++ The simplest possible linker script has just one command: ++`SECTIONS'. You use the `SECTIONS' command to describe the memory ++layout of the output file. ++ ++ The `SECTIONS' command is a powerful command. Here we will describe ++a simple use of it. Let's assume your program consists only of code, ++initialized data, and uninitialized data. These will be in the ++`.text', `.data', and `.bss' sections, respectively. Let's assume ++further that these are the only sections which appear in your input ++files. ++ ++ For this example, let's say that the code should be loaded at address ++0x10000, and that the data should start at address 0x8000000. Here is a ++linker script which will do that: ++ SECTIONS ++ { ++ . = 0x10000; ++ .text : { *(.text) } ++ . = 0x8000000; ++ .data : { *(.data) } ++ .bss : { *(.bss) } ++ } ++ ++ You write the `SECTIONS' command as the keyword `SECTIONS', followed ++by a series of symbol assignments and output section descriptions ++enclosed in curly braces. ++ ++ The first line inside the `SECTIONS' command of the above example ++sets the value of the special symbol `.', which is the location ++counter. If you do not specify the address of an output section in some ++other way (other ways are described later), the address is set from the ++current value of the location counter. The location counter is then ++incremented by the size of the output section. At the start of the ++`SECTIONS' command, the location counter has the value `0'. ++ ++ The second line defines an output section, `.text'. The colon is ++required syntax which may be ignored for now. Within the curly braces ++after the output section name, you list the names of the input sections ++which should be placed into this output section. The `*' is a wildcard ++which matches any file name. The expression `*(.text)' means all ++`.text' input sections in all input files. ++ ++ Since the location counter is `0x10000' when the output section ++`.text' is defined, the linker will set the address of the `.text' ++section in the output file to be `0x10000'. ++ ++ The remaining lines define the `.data' and `.bss' sections in the ++output file. The linker will place the `.data' output section at ++address `0x8000000'. After the linker places the `.data' output ++section, the value of the location counter will be `0x8000000' plus the ++size of the `.data' output section. The effect is that the linker will ++place the `.bss' output section immediately after the `.data' output ++section in memory. ++ ++ The linker will ensure that each output section has the required ++alignment, by increasing the location counter if necessary. In this ++example, the specified addresses for the `.text' and `.data' sections ++will probably satisfy any alignment constraints, but the linker may ++have to create a small gap between the `.data' and `.bss' sections. ++ ++ That's it! That's a simple and complete linker script. ++ ++ ++File: ld.info, Node: Simple Commands, Next: Assignments, Prev: Simple Example, Up: Scripts ++ ++3.4 Simple Linker Script Commands ++================================= ++ ++In this section we describe the simple linker script commands. ++ ++* Menu: ++ ++* Entry Point:: Setting the entry point ++* File Commands:: Commands dealing with files ++ ++* Format Commands:: Commands dealing with object file formats ++ ++* Miscellaneous Commands:: Other linker script commands ++ ++ ++File: ld.info, Node: Entry Point, Next: File Commands, Up: Simple Commands ++ ++3.4.1 Setting the Entry Point ++----------------------------- ++ ++The first instruction to execute in a program is called the "entry ++point". You can use the `ENTRY' linker script command to set the entry ++point. The argument is a symbol name: ++ ENTRY(SYMBOL) ++ ++ There are several ways to set the entry point. The linker will set ++the entry point by trying each of the following methods in order, and ++stopping when one of them succeeds: ++ * the `-e' ENTRY command-line option; ++ ++ * the `ENTRY(SYMBOL)' command in a linker script; ++ ++ * the value of the symbol `start', if defined; ++ ++ * the address of the first byte of the `.text' section, if present; ++ ++ * The address `0'. ++ ++ ++File: ld.info, Node: File Commands, Next: Format Commands, Prev: Entry Point, Up: Simple Commands ++ ++3.4.2 Commands Dealing with Files ++--------------------------------- ++ ++Several linker script commands deal with files. ++ ++`INCLUDE FILENAME' ++ Include the linker script FILENAME at this point. The file will ++ be searched for in the current directory, and in any directory ++ specified with the `-L' option. You can nest calls to `INCLUDE' ++ up to 10 levels deep. ++ ++`INPUT(FILE, FILE, ...)' ++`INPUT(FILE FILE ...)' ++ The `INPUT' command directs the linker to include the named files ++ in the link, as though they were named on the command line. ++ ++ For example, if you always want to include `subr.o' any time you do ++ a link, but you can't be bothered to put it on every link command ++ line, then you can put `INPUT (subr.o)' in your linker script. ++ ++ In fact, if you like, you can list all of your input files in the ++ linker script, and then invoke the linker with nothing but a `-T' ++ option. ++ ++ In case a "sysroot prefix" is configured, and the filename starts ++ with the `/' character, and the script being processed was located ++ inside the "sysroot prefix", the filename will be looked for in ++ the "sysroot prefix". Otherwise, the linker will try to open the ++ file in the current directory. If it is not found, the linker ++ will search through the archive library search path. See the ++ description of `-L' in *Note Command Line Options: Options. ++ ++ If you use `INPUT (-lFILE)', `ld' will transform the name to ++ `libFILE.a', as with the command line argument `-l'. ++ ++ When you use the `INPUT' command in an implicit linker script, the ++ files will be included in the link at the point at which the linker ++ script file is included. This can affect archive searching. ++ ++`GROUP(FILE, FILE, ...)' ++`GROUP(FILE FILE ...)' ++ The `GROUP' command is like `INPUT', except that the named files ++ should all be archives, and they are searched repeatedly until no ++ new undefined references are created. See the description of `-(' ++ in *Note Command Line Options: Options. ++ ++`AS_NEEDED(FILE, FILE, ...)' ++`AS_NEEDED(FILE FILE ...)' ++ This construct can appear only inside of the `INPUT' or `GROUP' ++ commands, among other filenames. The files listed will be handled ++ as if they appear directly in the `INPUT' or `GROUP' commands, ++ with the exception of ELF shared libraries, that will be added only ++ when they are actually needed. This construct essentially enables ++ `--as-needed' option for all the files listed inside of it and ++ restores previous `--as-needed' resp. `--no-as-needed' setting ++ afterwards. ++ ++`OUTPUT(FILENAME)' ++ The `OUTPUT' command names the output file. Using ++ `OUTPUT(FILENAME)' in the linker script is exactly like using `-o ++ FILENAME' on the command line (*note Command Line Options: ++ Options.). If both are used, the command line option takes ++ precedence. ++ ++ You can use the `OUTPUT' command to define a default name for the ++ output file other than the usual default of `a.out'. ++ ++`SEARCH_DIR(PATH)' ++ The `SEARCH_DIR' command adds PATH to the list of paths where `ld' ++ looks for archive libraries. Using `SEARCH_DIR(PATH)' is exactly ++ like using `-L PATH' on the command line (*note Command Line ++ Options: Options.). If both are used, then the linker will search ++ both paths. Paths specified using the command line option are ++ searched first. ++ ++`STARTUP(FILENAME)' ++ The `STARTUP' command is just like the `INPUT' command, except ++ that FILENAME will become the first input file to be linked, as ++ though it were specified first on the command line. This may be ++ useful when using a system in which the entry point is always the ++ start of the first file. ++ ++ ++File: ld.info, Node: Format Commands, Next: Miscellaneous Commands, Prev: File Commands, Up: Simple Commands ++ ++3.4.3 Commands Dealing with Object File Formats ++----------------------------------------------- ++ ++A couple of linker script commands deal with object file formats. ++ ++`OUTPUT_FORMAT(BFDNAME)' ++`OUTPUT_FORMAT(DEFAULT, BIG, LITTLE)' ++ The `OUTPUT_FORMAT' command names the BFD format to use for the ++ output file (*note BFD::). Using `OUTPUT_FORMAT(BFDNAME)' is ++ exactly like using `--oformat BFDNAME' on the command line (*note ++ Command Line Options: Options.). If both are used, the command ++ line option takes precedence. ++ ++ You can use `OUTPUT_FORMAT' with three arguments to use different ++ formats based on the `-EB' and `-EL' command line options. This ++ permits the linker script to set the output format based on the ++ desired endianness. ++ ++ If neither `-EB' nor `-EL' are used, then the output format will ++ be the first argument, DEFAULT. If `-EB' is used, the output ++ format will be the second argument, BIG. If `-EL' is used, the ++ output format will be the third argument, LITTLE. ++ ++ For example, the default linker script for the MIPS ELF target ++ uses this command: ++ OUTPUT_FORMAT(elf32-bigmips, elf32-bigmips, elf32-littlemips) ++ This says that the default format for the output file is ++ `elf32-bigmips', but if the user uses the `-EL' command line ++ option, the output file will be created in the `elf32-littlemips' ++ format. ++ ++`TARGET(BFDNAME)' ++ The `TARGET' command names the BFD format to use when reading input ++ files. It affects subsequent `INPUT' and `GROUP' commands. This ++ command is like using `-b BFDNAME' on the command line (*note ++ Command Line Options: Options.). If the `TARGET' command is used ++ but `OUTPUT_FORMAT' is not, then the last `TARGET' command is also ++ used to set the format for the output file. *Note BFD::. ++ ++ ++File: ld.info, Node: Miscellaneous Commands, Prev: Format Commands, Up: Simple Commands ++ ++3.4.4 Other Linker Script Commands ++---------------------------------- ++ ++There are a few other linker scripts commands. ++ ++`ASSERT(EXP, MESSAGE)' ++ Ensure that EXP is non-zero. If it is zero, then exit the linker ++ with an error code, and print MESSAGE. ++ ++`EXTERN(SYMBOL SYMBOL ...)' ++ Force SYMBOL to be entered in the output file as an undefined ++ symbol. Doing this may, for example, trigger linking of additional ++ modules from standard libraries. You may list several SYMBOLs for ++ each `EXTERN', and you may use `EXTERN' multiple times. This ++ command has the same effect as the `-u' command-line option. ++ ++`FORCE_COMMON_ALLOCATION' ++ This command has the same effect as the `-d' command-line option: ++ to make `ld' assign space to common symbols even if a relocatable ++ output file is specified (`-r'). ++ ++`INHIBIT_COMMON_ALLOCATION' ++ This command has the same effect as the `--no-define-common' ++ command-line option: to make `ld' omit the assignment of addresses ++ to common symbols even for a non-relocatable output file. ++ ++`NOCROSSREFS(SECTION SECTION ...)' ++ This command may be used to tell `ld' to issue an error about any ++ references among certain output sections. ++ ++ In certain types of programs, particularly on embedded systems when ++ using overlays, when one section is loaded into memory, another ++ section will not be. Any direct references between the two ++ sections would be errors. For example, it would be an error if ++ code in one section called a function defined in the other section. ++ ++ The `NOCROSSREFS' command takes a list of output section names. If ++ `ld' detects any cross references between the sections, it reports ++ an error and returns a non-zero exit status. Note that the ++ `NOCROSSREFS' command uses output section names, not input section ++ names. ++ ++`OUTPUT_ARCH(BFDARCH)' ++ Specify a particular output machine architecture. The argument is ++ one of the names used by the BFD library (*note BFD::). You can ++ see the architecture of an object file by using the `objdump' ++ program with the `-f' option. ++ ++ ++File: ld.info, Node: Assignments, Next: SECTIONS, Prev: Simple Commands, Up: Scripts ++ ++3.5 Assigning Values to Symbols ++=============================== ++ ++You may assign a value to a symbol in a linker script. This will define ++the symbol and place it into the symbol table with a global scope. ++ ++* Menu: ++ ++* Simple Assignments:: Simple Assignments ++* PROVIDE:: PROVIDE ++* PROVIDE_HIDDEN:: PROVIDE_HIDDEN ++* Source Code Reference:: How to use a linker script defined symbol in source code ++ ++ ++File: ld.info, Node: Simple Assignments, Next: PROVIDE, Up: Assignments ++ ++3.5.1 Simple Assignments ++------------------------ ++ ++You may assign to a symbol using any of the C assignment operators: ++ ++`SYMBOL = EXPRESSION ;' ++`SYMBOL += EXPRESSION ;' ++`SYMBOL -= EXPRESSION ;' ++`SYMBOL *= EXPRESSION ;' ++`SYMBOL /= EXPRESSION ;' ++`SYMBOL <<= EXPRESSION ;' ++`SYMBOL >>= EXPRESSION ;' ++`SYMBOL &= EXPRESSION ;' ++`SYMBOL |= EXPRESSION ;' ++ ++ The first case will define SYMBOL to the value of EXPRESSION. In ++the other cases, SYMBOL must already be defined, and the value will be ++adjusted accordingly. ++ ++ The special symbol name `.' indicates the location counter. You may ++only use this within a `SECTIONS' command. *Note Location Counter::. ++ ++ The semicolon after EXPRESSION is required. ++ ++ Expressions are defined below; see *Note Expressions::. ++ ++ You may write symbol assignments as commands in their own right, or ++as statements within a `SECTIONS' command, or as part of an output ++section description in a `SECTIONS' command. ++ ++ The section of the symbol will be set from the section of the ++expression; for more information, see *Note Expression Section::. ++ ++ Here is an example showing the three different places that symbol ++assignments may be used: ++ ++ floating_point = 0; ++ SECTIONS ++ { ++ .text : ++ { ++ *(.text) ++ _etext = .; ++ } ++ _bdata = (. + 3) & ~ 3; ++ .data : { *(.data) } ++ } ++ In this example, the symbol `floating_point' will be defined as ++zero. The symbol `_etext' will be defined as the address following the ++last `.text' input section. The symbol `_bdata' will be defined as the ++address following the `.text' output section aligned upward to a 4 byte ++boundary. ++ ++ ++File: ld.info, Node: PROVIDE, Next: PROVIDE_HIDDEN, Prev: Simple Assignments, Up: Assignments ++ ++3.5.2 PROVIDE ++------------- ++ ++In some cases, it is desirable for a linker script to define a symbol ++only if it is referenced and is not defined by any object included in ++the link. For example, traditional linkers defined the symbol `etext'. ++However, ANSI C requires that the user be able to use `etext' as a ++function name without encountering an error. The `PROVIDE' keyword may ++be used to define a symbol, such as `etext', only if it is referenced ++but not defined. The syntax is `PROVIDE(SYMBOL = EXPRESSION)'. ++ ++ Here is an example of using `PROVIDE' to define `etext': ++ SECTIONS ++ { ++ .text : ++ { ++ *(.text) ++ _etext = .; ++ PROVIDE(etext = .); ++ } ++ } ++ ++ In this example, if the program defines `_etext' (with a leading ++underscore), the linker will give a multiple definition error. If, on ++the other hand, the program defines `etext' (with no leading ++underscore), the linker will silently use the definition in the program. ++If the program references `etext' but does not define it, the linker ++will use the definition in the linker script. ++ ++ ++File: ld.info, Node: PROVIDE_HIDDEN, Next: Source Code Reference, Prev: PROVIDE, Up: Assignments ++ ++3.5.3 PROVIDE_HIDDEN ++-------------------- ++ ++Similar to `PROVIDE'. For ELF targeted ports, the symbol will be ++hidden and won't be exported. ++ ++ ++File: ld.info, Node: Source Code Reference, Prev: PROVIDE_HIDDEN, Up: Assignments ++ ++3.5.4 Source Code Reference ++--------------------------- ++ ++Accessing a linker script defined variable from source code is not ++intuitive. In particular a linker script symbol is not equivalent to a ++variable declaration in a high level language, it is instead a symbol ++that does not have a value. ++ ++ Before going further, it is important to note that compilers often ++transform names in the source code into different names when they are ++stored in the symbol table. For example, Fortran compilers commonly ++prepend or append an underscore, and C++ performs extensive `name ++mangling'. Therefore there might be a discrepancy between the name of ++a variable as it is used in source code and the name of the same ++variable as it is defined in a linker script. For example in C a ++linker script variable might be referred to as: ++ ++ extern int foo; ++ ++ But in the linker script it might be defined as: ++ ++ _foo = 1000; ++ ++ In the remaining examples however it is assumed that no name ++transformation has taken place. ++ ++ When a symbol is declared in a high level language such as C, two ++things happen. The first is that the compiler reserves enough space in ++the program's memory to hold the _value_ of the symbol. The second is ++that the compiler creates an entry in the program's symbol table which ++holds the symbol's _address_. ie the symbol table contains the address ++of the block of memory holding the symbol's value. So for example the ++following C declaration, at file scope: ++ ++ int foo = 1000; ++ ++ creates a entry called `foo' in the symbol table. This entry holds ++the address of an `int' sized block of memory where the number 1000 is ++initially stored. ++ ++ When a program references a symbol the compiler generates code that ++first accesses the symbol table to find the address of the symbol's ++memory block and then code to read the value from that memory block. ++So: ++ ++ foo = 1; ++ ++ looks up the symbol `foo' in the symbol table, gets the address ++associated with this symbol and then writes the value 1 into that ++address. Whereas: ++ ++ int * a = & foo; ++ ++ looks up the symbol `foo' in the symbol table, gets it address and ++then copies this address into the block of memory associated with the ++variable `a'. ++ ++ Linker scripts symbol declarations, by contrast, create an entry in ++the symbol table but do not assign any memory to them. Thus they are ++an address without a value. So for example the linker script ++definition: ++ ++ foo = 1000; ++ ++ creates an entry in the symbol table called `foo' which holds the ++address of memory location 1000, but nothing special is stored at ++address 1000. This means that you cannot access the _value_ of a ++linker script defined symbol - it has no value - all you can do is ++access the _address_ of a linker script defined symbol. ++ ++ Hence when you are using a linker script defined symbol in source ++code you should always take the address of the symbol, and never ++attempt to use its value. For example suppose you want to copy the ++contents of a section of memory called .ROM into a section called ++.FLASH and the linker script contains these declarations: ++ ++ start_of_ROM = .ROM; ++ end_of_ROM = .ROM + sizeof (.ROM) - 1; ++ start_of_FLASH = .FLASH; ++ ++ Then the C source code to perform the copy would be: ++ ++ extern char start_of_ROM, end_of_ROM, start_of_FLASH; ++ ++ memcpy (& start_of_FLASH, & start_of_ROM, & end_of_ROM - & start_of_ROM); ++ ++ Note the use of the `&' operators. These are correct. ++ ++ ++File: ld.info, Node: SECTIONS, Next: MEMORY, Prev: Assignments, Up: Scripts ++ ++3.6 SECTIONS Command ++==================== ++ ++The `SECTIONS' command tells the linker how to map input sections into ++output sections, and how to place the output sections in memory. ++ ++ The format of the `SECTIONS' command is: ++ SECTIONS ++ { ++ SECTIONS-COMMAND ++ SECTIONS-COMMAND ++ ... ++ } ++ ++ Each SECTIONS-COMMAND may of be one of the following: ++ ++ * an `ENTRY' command (*note Entry command: Entry Point.) ++ ++ * a symbol assignment (*note Assignments::) ++ ++ * an output section description ++ ++ * an overlay description ++ ++ The `ENTRY' command and symbol assignments are permitted inside the ++`SECTIONS' command for convenience in using the location counter in ++those commands. This can also make the linker script easier to ++understand because you can use those commands at meaningful points in ++the layout of the output file. ++ ++ Output section descriptions and overlay descriptions are described ++below. ++ ++ If you do not use a `SECTIONS' command in your linker script, the ++linker will place each input section into an identically named output ++section in the order that the sections are first encountered in the ++input files. If all input sections are present in the first file, for ++example, the order of sections in the output file will match the order ++in the first input file. The first section will be at address zero. ++ ++* Menu: ++ ++* Output Section Description:: Output section description ++* Output Section Name:: Output section name ++* Output Section Address:: Output section address ++* Input Section:: Input section description ++* Output Section Data:: Output section data ++* Output Section Keywords:: Output section keywords ++* Output Section Discarding:: Output section discarding ++* Output Section Attributes:: Output section attributes ++* Overlay Description:: Overlay description ++ ++ ++File: ld.info, Node: Output Section Description, Next: Output Section Name, Up: SECTIONS ++ ++3.6.1 Output Section Description ++-------------------------------- ++ ++The full description of an output section looks like this: ++ SECTION [ADDRESS] [(TYPE)] : ++ [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)] ++ { ++ OUTPUT-SECTION-COMMAND ++ OUTPUT-SECTION-COMMAND ++ ... ++ } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP] ++ ++ Most output sections do not use most of the optional section ++attributes. ++ ++ The whitespace around SECTION is required, so that the section name ++is unambiguous. The colon and the curly braces are also required. The ++line breaks and other white space are optional. ++ ++ Each OUTPUT-SECTION-COMMAND may be one of the following: ++ ++ * a symbol assignment (*note Assignments::) ++ ++ * an input section description (*note Input Section::) ++ ++ * data values to include directly (*note Output Section Data::) ++ ++ * a special output section keyword (*note Output Section Keywords::) ++ ++ ++File: ld.info, Node: Output Section Name, Next: Output Section Address, Prev: Output Section Description, Up: SECTIONS ++ ++3.6.2 Output Section Name ++------------------------- ++ ++The name of the output section is SECTION. SECTION must meet the ++constraints of your output format. In formats which only support a ++limited number of sections, such as `a.out', the name must be one of ++the names supported by the format (`a.out', for example, allows only ++`.text', `.data' or `.bss'). If the output format supports any number ++of sections, but with numbers and not names (as is the case for Oasys), ++the name should be supplied as a quoted numeric string. A section name ++may consist of any sequence of characters, but a name which contains ++any unusual characters such as commas must be quoted. ++ ++ The output section name `/DISCARD/' is special; *Note Output Section ++Discarding::. ++ ++ ++File: ld.info, Node: Output Section Address, Next: Input Section, Prev: Output Section Name, Up: SECTIONS ++ ++3.6.3 Output Section Address ++---------------------------- ++ ++The ADDRESS is an expression for the VMA (the virtual memory address) ++of the output section. If you do not provide ADDRESS, the linker will ++set it based on REGION if present, or otherwise based on the current ++value of the location counter. ++ ++ If you provide ADDRESS, the address of the output section will be ++set to precisely that. If you provide neither ADDRESS nor REGION, then ++the address of the output section will be set to the current value of ++the location counter aligned to the alignment requirements of the ++output section. The alignment requirement of the output section is the ++strictest alignment of any input section contained within the output ++section. ++ ++ For example, ++ .text . : { *(.text) } ++ and ++ .text : { *(.text) } ++ are subtly different. The first will set the address of the `.text' ++output section to the current value of the location counter. The ++second will set it to the current value of the location counter aligned ++to the strictest alignment of a `.text' input section. ++ ++ The ADDRESS may be an arbitrary expression; *Note Expressions::. ++For example, if you want to align the section on a 0x10 byte boundary, ++so that the lowest four bits of the section address are zero, you could ++do something like this: ++ .text ALIGN(0x10) : { *(.text) } ++ This works because `ALIGN' returns the current location counter ++aligned upward to the specified value. ++ ++ Specifying ADDRESS for a section will change the value of the ++location counter. ++ ++ ++File: ld.info, Node: Input Section, Next: Output Section Data, Prev: Output Section Address, Up: SECTIONS ++ ++3.6.4 Input Section Description ++------------------------------- ++ ++The most common output section command is an input section description. ++ ++ The input section description is the most basic linker script ++operation. You use output sections to tell the linker how to lay out ++your program in memory. You use input section descriptions to tell the ++linker how to map the input files into your memory layout. ++ ++* Menu: ++ ++* Input Section Basics:: Input section basics ++* Input Section Wildcards:: Input section wildcard patterns ++* Input Section Common:: Input section for common symbols ++* Input Section Keep:: Input section and garbage collection ++* Input Section Example:: Input section example ++ ++ ++File: ld.info, Node: Input Section Basics, Next: Input Section Wildcards, Up: Input Section ++ ++3.6.4.1 Input Section Basics ++............................ ++ ++An input section description consists of a file name optionally followed ++by a list of section names in parentheses. ++ ++ The file name and the section name may be wildcard patterns, which we ++describe further below (*note Input Section Wildcards::). ++ ++ The most common input section description is to include all input ++sections with a particular name in the output section. For example, to ++include all input `.text' sections, you would write: ++ *(.text) ++ Here the `*' is a wildcard which matches any file name. To exclude ++a list of files from matching the file name wildcard, EXCLUDE_FILE may ++be used to match all files except the ones specified in the ++EXCLUDE_FILE list. For example: ++ (*(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors)) ++ will cause all .ctors sections from all files except `crtend.o' and ++`otherfile.o' to be included. ++ ++ There are two ways to include more than one section: ++ *(.text .rdata) ++ *(.text) *(.rdata) ++ The difference between these is the order in which the `.text' and ++`.rdata' input sections will appear in the output section. In the ++first example, they will be intermingled, appearing in the same order as ++they are found in the linker input. In the second example, all `.text' ++input sections will appear first, followed by all `.rdata' input ++sections. ++ ++ You can specify a file name to include sections from a particular ++file. You would do this if one or more of your files contain special ++data that needs to be at a particular location in memory. For example: ++ data.o(.data) ++ ++ If you use a file name without a list of sections, then all sections ++in the input file will be included in the output section. This is not ++commonly done, but it may by useful on occasion. For example: ++ data.o ++ ++ When you use a file name which does not contain any wild card ++characters, the linker will first see if you also specified the file ++name on the linker command line or in an `INPUT' command. If you did ++not, the linker will attempt to open the file as an input file, as ++though it appeared on the command line. Note that this differs from an ++`INPUT' command, because the linker will not search for the file in the ++archive search path. ++ ++ ++File: ld.info, Node: Input Section Wildcards, Next: Input Section Common, Prev: Input Section Basics, Up: Input Section ++ ++3.6.4.2 Input Section Wildcard Patterns ++....................................... ++ ++In an input section description, either the file name or the section ++name or both may be wildcard patterns. ++ ++ The file name of `*' seen in many examples is a simple wildcard ++pattern for the file name. ++ ++ The wildcard patterns are like those used by the Unix shell. ++ ++`*' ++ matches any number of characters ++ ++`?' ++ matches any single character ++ ++`[CHARS]' ++ matches a single instance of any of the CHARS; the `-' character ++ may be used to specify a range of characters, as in `[a-z]' to ++ match any lower case letter ++ ++`\' ++ quotes the following character ++ ++ When a file name is matched with a wildcard, the wildcard characters ++will not match a `/' character (used to separate directory names on ++Unix). A pattern consisting of a single `*' character is an exception; ++it will always match any file name, whether it contains a `/' or not. ++In a section name, the wildcard characters will match a `/' character. ++ ++ File name wildcard patterns only match files which are explicitly ++specified on the command line or in an `INPUT' command. The linker ++does not search directories to expand wildcards. ++ ++ If a file name matches more than one wildcard pattern, or if a file ++name appears explicitly and is also matched by a wildcard pattern, the ++linker will use the first match in the linker script. For example, this ++sequence of input section descriptions is probably in error, because the ++`data.o' rule will not be used: ++ .data : { *(.data) } ++ .data1 : { data.o(.data) } ++ ++ Normally, the linker will place files and sections matched by ++wildcards in the order in which they are seen during the link. You can ++change this by using the `SORT_BY_NAME' keyword, which appears before a ++wildcard pattern in parentheses (e.g., `SORT_BY_NAME(.text*)'). When ++the `SORT_BY_NAME' keyword is used, the linker will sort the files or ++sections into ascending order by name before placing them in the output ++file. ++ ++ `SORT_BY_ALIGNMENT' is very similar to `SORT_BY_NAME'. The ++difference is `SORT_BY_ALIGNMENT' will sort sections into ascending ++order by alignment before placing them in the output file. ++ ++ `SORT' is an alias for `SORT_BY_NAME'. ++ ++ When there are nested section sorting commands in linker script, ++there can be at most 1 level of nesting for section sorting commands. ++ ++ 1. `SORT_BY_NAME' (`SORT_BY_ALIGNMENT' (wildcard section pattern)). ++ It will sort the input sections by name first, then by alignment ++ if 2 sections have the same name. ++ ++ 2. `SORT_BY_ALIGNMENT' (`SORT_BY_NAME' (wildcard section pattern)). ++ It will sort the input sections by alignment first, then by name ++ if 2 sections have the same alignment. ++ ++ 3. `SORT_BY_NAME' (`SORT_BY_NAME' (wildcard section pattern)) is ++ treated the same as `SORT_BY_NAME' (wildcard section pattern). ++ ++ 4. `SORT_BY_ALIGNMENT' (`SORT_BY_ALIGNMENT' (wildcard section ++ pattern)) is treated the same as `SORT_BY_ALIGNMENT' (wildcard ++ section pattern). ++ ++ 5. All other nested section sorting commands are invalid. ++ ++ When both command line section sorting option and linker script ++section sorting command are used, section sorting command always takes ++precedence over the command line option. ++ ++ If the section sorting command in linker script isn't nested, the ++command line option will make the section sorting command to be treated ++as nested sorting command. ++ ++ 1. `SORT_BY_NAME' (wildcard section pattern ) with `--sort-sections ++ alignment' is equivalent to `SORT_BY_NAME' (`SORT_BY_ALIGNMENT' ++ (wildcard section pattern)). ++ ++ 2. `SORT_BY_ALIGNMENT' (wildcard section pattern) with ++ `--sort-section name' is equivalent to `SORT_BY_ALIGNMENT' ++ (`SORT_BY_NAME' (wildcard section pattern)). ++ ++ If the section sorting command in linker script is nested, the ++command line option will be ignored. ++ ++ If you ever get confused about where input sections are going, use ++the `-M' linker option to generate a map file. The map file shows ++precisely how input sections are mapped to output sections. ++ ++ This example shows how wildcard patterns might be used to partition ++files. This linker script directs the linker to place all `.text' ++sections in `.text' and all `.bss' sections in `.bss'. The linker will ++place the `.data' section from all files beginning with an upper case ++character in `.DATA'; for all other files, the linker will place the ++`.data' section in `.data'. ++ SECTIONS { ++ .text : { *(.text) } ++ .DATA : { [A-Z]*(.data) } ++ .data : { *(.data) } ++ .bss : { *(.bss) } ++ } ++ ++ ++File: ld.info, Node: Input Section Common, Next: Input Section Keep, Prev: Input Section Wildcards, Up: Input Section ++ ++3.6.4.3 Input Section for Common Symbols ++........................................ ++ ++A special notation is needed for common symbols, because in many object ++file formats common symbols do not have a particular input section. The ++linker treats common symbols as though they are in an input section ++named `COMMON'. ++ ++ You may use file names with the `COMMON' section just as with any ++other input sections. You can use this to place common symbols from a ++particular input file in one section while common symbols from other ++input files are placed in another section. ++ ++ In most cases, common symbols in input files will be placed in the ++`.bss' section in the output file. For example: ++ .bss { *(.bss) *(COMMON) } ++ ++ Some object file formats have more than one type of common symbol. ++For example, the MIPS ELF object file format distinguishes standard ++common symbols and small common symbols. In this case, the linker will ++use a different special section name for other types of common symbols. ++In the case of MIPS ELF, the linker uses `COMMON' for standard common ++symbols and `.scommon' for small common symbols. This permits you to ++map the different types of common symbols into memory at different ++locations. ++ ++ You will sometimes see `[COMMON]' in old linker scripts. This ++notation is now considered obsolete. It is equivalent to `*(COMMON)'. ++ ++ ++File: ld.info, Node: Input Section Keep, Next: Input Section Example, Prev: Input Section Common, Up: Input Section ++ ++3.6.4.4 Input Section and Garbage Collection ++............................................ ++ ++When link-time garbage collection is in use (`--gc-sections'), it is ++often useful to mark sections that should not be eliminated. This is ++accomplished by surrounding an input section's wildcard entry with ++`KEEP()', as in `KEEP(*(.init))' or `KEEP(SORT_BY_NAME(*)(.ctors))'. ++ ++ ++File: ld.info, Node: Input Section Example, Prev: Input Section Keep, Up: Input Section ++ ++3.6.4.5 Input Section Example ++............................. ++ ++The following example is a complete linker script. It tells the linker ++to read all of the sections from file `all.o' and place them at the ++start of output section `outputa' which starts at location `0x10000'. ++All of section `.input1' from file `foo.o' follows immediately, in the ++same output section. All of section `.input2' from `foo.o' goes into ++output section `outputb', followed by section `.input1' from `foo1.o'. ++All of the remaining `.input1' and `.input2' sections from any files ++are written to output section `outputc'. ++ ++ SECTIONS { ++ outputa 0x10000 : ++ { ++ all.o ++ foo.o (.input1) ++ } ++ outputb : ++ { ++ foo.o (.input2) ++ foo1.o (.input1) ++ } ++ outputc : ++ { ++ *(.input1) ++ *(.input2) ++ } ++ } ++ ++ ++File: ld.info, Node: Output Section Data, Next: Output Section Keywords, Prev: Input Section, Up: SECTIONS ++ ++3.6.5 Output Section Data ++------------------------- ++ ++You can include explicit bytes of data in an output section by using ++`BYTE', `SHORT', `LONG', `QUAD', or `SQUAD' as an output section ++command. Each keyword is followed by an expression in parentheses ++providing the value to store (*note Expressions::). The value of the ++expression is stored at the current value of the location counter. ++ ++ The `BYTE', `SHORT', `LONG', and `QUAD' commands store one, two, ++four, and eight bytes (respectively). After storing the bytes, the ++location counter is incremented by the number of bytes stored. ++ ++ For example, this will store the byte 1 followed by the four byte ++value of the symbol `addr': ++ BYTE(1) ++ LONG(addr) ++ ++ When using a 64 bit host or target, `QUAD' and `SQUAD' are the same; ++they both store an 8 byte, or 64 bit, value. When both host and target ++are 32 bits, an expression is computed as 32 bits. In this case `QUAD' ++stores a 32 bit value zero extended to 64 bits, and `SQUAD' stores a 32 ++bit value sign extended to 64 bits. ++ ++ If the object file format of the output file has an explicit ++endianness, which is the normal case, the value will be stored in that ++endianness. When the object file format does not have an explicit ++endianness, as is true of, for example, S-records, the value will be ++stored in the endianness of the first input object file. ++ ++ Note--these commands only work inside a section description and not ++between them, so the following will produce an error from the linker: ++ SECTIONS { .text : { *(.text) } LONG(1) .data : { *(.data) } } ++ whereas this will work: ++ SECTIONS { .text : { *(.text) ; LONG(1) } .data : { *(.data) } } ++ ++ You may use the `FILL' command to set the fill pattern for the ++current section. It is followed by an expression in parentheses. Any ++otherwise unspecified regions of memory within the section (for example, ++gaps left due to the required alignment of input sections) are filled ++with the value of the expression, repeated as necessary. A `FILL' ++statement covers memory locations after the point at which it occurs in ++the section definition; by including more than one `FILL' statement, ++you can have different fill patterns in different parts of an output ++section. ++ ++ This example shows how to fill unspecified regions of memory with the ++value `0x90': ++ FILL(0x90909090) ++ ++ The `FILL' command is similar to the `=FILLEXP' output section ++attribute, but it only affects the part of the section following the ++`FILL' command, rather than the entire section. If both are used, the ++`FILL' command takes precedence. *Note Output Section Fill::, for ++details on the fill expression. ++ ++ ++File: ld.info, Node: Output Section Keywords, Next: Output Section Discarding, Prev: Output Section Data, Up: SECTIONS ++ ++3.6.6 Output Section Keywords ++----------------------------- ++ ++There are a couple of keywords which can appear as output section ++commands. ++ ++`CREATE_OBJECT_SYMBOLS' ++ The command tells the linker to create a symbol for each input ++ file. The name of each symbol will be the name of the ++ corresponding input file. The section of each symbol will be the ++ output section in which the `CREATE_OBJECT_SYMBOLS' command ++ appears. ++ ++ This is conventional for the a.out object file format. It is not ++ normally used for any other object file format. ++ ++`CONSTRUCTORS' ++ When linking using the a.out object file format, the linker uses an ++ unusual set construct to support C++ global constructors and ++ destructors. When linking object file formats which do not support ++ arbitrary sections, such as ECOFF and XCOFF, the linker will ++ automatically recognize C++ global constructors and destructors by ++ name. For these object file formats, the `CONSTRUCTORS' command ++ tells the linker to place constructor information in the output ++ section where the `CONSTRUCTORS' command appears. The ++ `CONSTRUCTORS' command is ignored for other object file formats. ++ ++ The symbol `__CTOR_LIST__' marks the start of the global ++ constructors, and the symbol `__CTOR_END__' marks the end. ++ Similarly, `__DTOR_LIST__' and `__DTOR_END__' mark the start and ++ end of the global destructors. The first word in the list is the ++ number of entries, followed by the address of each constructor or ++ destructor, followed by a zero word. The compiler must arrange to ++ actually run the code. For these object file formats GNU C++ ++ normally calls constructors from a subroutine `__main'; a call to ++ `__main' is automatically inserted into the startup code for ++ `main'. GNU C++ normally runs destructors either by using ++ `atexit', or directly from the function `exit'. ++ ++ For object file formats such as `COFF' or `ELF' which support ++ arbitrary section names, GNU C++ will normally arrange to put the ++ addresses of global constructors and destructors into the `.ctors' ++ and `.dtors' sections. Placing the following sequence into your ++ linker script will build the sort of table which the GNU C++ ++ runtime code expects to see. ++ ++ __CTOR_LIST__ = .; ++ LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) ++ *(.ctors) ++ LONG(0) ++ __CTOR_END__ = .; ++ __DTOR_LIST__ = .; ++ LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) ++ *(.dtors) ++ LONG(0) ++ __DTOR_END__ = .; ++ ++ If you are using the GNU C++ support for initialization priority, ++ which provides some control over the order in which global ++ constructors are run, you must sort the constructors at link time ++ to ensure that they are executed in the correct order. When using ++ the `CONSTRUCTORS' command, use `SORT_BY_NAME(CONSTRUCTORS)' ++ instead. When using the `.ctors' and `.dtors' sections, use ++ `*(SORT_BY_NAME(.ctors))' and `*(SORT_BY_NAME(.dtors))' instead of ++ just `*(.ctors)' and `*(.dtors)'. ++ ++ Normally the compiler and linker will handle these issues ++ automatically, and you will not need to concern yourself with ++ them. However, you may need to consider this if you are using C++ ++ and writing your own linker scripts. ++ ++ ++ ++File: ld.info, Node: Output Section Discarding, Next: Output Section Attributes, Prev: Output Section Keywords, Up: SECTIONS ++ ++3.6.7 Output Section Discarding ++------------------------------- ++ ++The linker will not create output section which do not have any ++contents. This is for convenience when referring to input sections that ++may or may not be present in any of the input files. For example: ++ .foo { *(.foo) } ++ will only create a `.foo' section in the output file if there is a ++`.foo' section in at least one input file. ++ ++ If you use anything other than an input section description as an ++output section command, such as a symbol assignment, then the output ++section will always be created, even if there are no matching input ++sections. ++ ++ The special output section name `/DISCARD/' may be used to discard ++input sections. Any input sections which are assigned to an output ++section named `/DISCARD/' are not included in the output file. ++ ++ ++File: ld.info, Node: Output Section Attributes, Next: Overlay Description, Prev: Output Section Discarding, Up: SECTIONS ++ ++3.6.8 Output Section Attributes ++------------------------------- ++ ++We showed above that the full description of an output section looked ++like this: ++ SECTION [ADDRESS] [(TYPE)] : ++ [AT(LMA)] [ALIGN(SECTION_ALIGN)] [SUBALIGN(SUBSECTION_ALIGN)] ++ { ++ OUTPUT-SECTION-COMMAND ++ OUTPUT-SECTION-COMMAND ++ ... ++ } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP] ++We've already described SECTION, ADDRESS, and ++OUTPUT-SECTION-COMMAND. In this section we will describe the remaining ++section attributes. ++ ++* Menu: ++ ++* Output Section Type:: Output section type ++* Output Section LMA:: Output section LMA ++* Forced Output Alignment:: Forced Output Alignment ++* Forced Input Alignment:: Forced Input Alignment ++* Output Section Region:: Output section region ++* Output Section Phdr:: Output section phdr ++* Output Section Fill:: Output section fill ++ ++ ++File: ld.info, Node: Output Section Type, Next: Output Section LMA, Up: Output Section Attributes ++ ++3.6.8.1 Output Section Type ++........................... ++ ++Each output section may have a type. The type is a keyword in ++parentheses. The following types are defined: ++ ++`NOLOAD' ++ The section should be marked as not loadable, so that it will not ++ be loaded into memory when the program is run. ++ ++`DSECT' ++`COPY' ++`INFO' ++`OVERLAY' ++ These type names are supported for backward compatibility, and are ++ rarely used. They all have the same effect: the section should be ++ marked as not allocatable, so that no memory is allocated for the ++ section when the program is run. ++ ++ The linker normally sets the attributes of an output section based on ++the input sections which map into it. You can override this by using ++the section type. For example, in the script sample below, the `ROM' ++section is addressed at memory location `0' and does not need to be ++loaded when the program is run. The contents of the `ROM' section will ++appear in the linker output file as usual. ++ SECTIONS { ++ ROM 0 (NOLOAD) : { ... } ++ ... ++ } ++ ++ ++File: ld.info, Node: Output Section LMA, Next: Forced Output Alignment, Prev: Output Section Type, Up: Output Section Attributes ++ ++3.6.8.2 Output Section LMA ++.......................... ++ ++Every section has a virtual address (VMA) and a load address (LMA); see ++*Note Basic Script Concepts::. The address expression which may appear ++in an output section description sets the VMA (*note Output Section ++Address::). ++ ++ The linker will normally set the LMA equal to the VMA. You can ++change that by using the `AT' keyword. The expression LMA that follows ++the `AT' keyword specifies the load address of the section. ++ ++ Alternatively, with `AT>LMA_REGION' expression, you may specify a ++memory region for the section's load address. *Note MEMORY::. Note ++that if the section has not had a VMA assigned to it then the linker ++will use the LMA_REGION as the VMA region as well. *Note Output ++Section Region::. ++ ++ This feature is designed to make it easy to build a ROM image. For ++example, the following linker script creates three output sections: one ++called `.text', which starts at `0x1000', one called `.mdata', which is ++loaded at the end of the `.text' section even though its VMA is ++`0x2000', and one called `.bss' to hold uninitialized data at address ++`0x3000'. The symbol `_data' is defined with the value `0x2000', which ++shows that the location counter holds the VMA value, not the LMA value. ++ ++ SECTIONS ++ { ++ .text 0x1000 : { *(.text) _etext = . ; } ++ .mdata 0x2000 : ++ AT ( ADDR (.text) + SIZEOF (.text) ) ++ { _data = . ; *(.data); _edata = . ; } ++ .bss 0x3000 : ++ { _bstart = . ; *(.bss) *(COMMON) ; _bend = . ;} ++ } ++ ++ The run-time initialization code for use with a program generated ++with this linker script would include something like the following, to ++copy the initialized data from the ROM image to its runtime address. ++Notice how this code takes advantage of the symbols defined by the ++linker script. ++ ++ extern char _etext, _data, _edata, _bstart, _bend; ++ char *src = &_etext; ++ char *dst = &_data; ++ ++ /* ROM has data at end of text; copy it. */ ++ while (dst < &_edata) { ++ *dst++ = *src++; ++ } ++ ++ /* Zero bss */ ++ for (dst = &_bstart; dst< &_bend; dst++) ++ *dst = 0; ++ ++ ++File: ld.info, Node: Forced Output Alignment, Next: Forced Input Alignment, Prev: Output Section LMA, Up: Output Section Attributes ++ ++3.6.8.3 Forced Output Alignment ++............................... ++ ++You can increase an output section's alignment by using ALIGN. ++ ++ ++File: ld.info, Node: Forced Input Alignment, Next: Output Section Region, Prev: Forced Output Alignment, Up: Output Section Attributes ++ ++3.6.8.4 Forced Input Alignment ++.............................. ++ ++You can force input section alignment within an output section by using ++SUBALIGN. The value specified overrides any alignment given by input ++sections, whether larger or smaller. ++ ++ ++File: ld.info, Node: Output Section Region, Next: Output Section Phdr, Prev: Forced Input Alignment, Up: Output Section Attributes ++ ++3.6.8.5 Output Section Region ++............................. ++ ++You can assign a section to a previously defined region of memory by ++using `>REGION'. *Note MEMORY::. ++ ++ Here is a simple example: ++ MEMORY { rom : ORIGIN = 0x1000, LENGTH = 0x1000 } ++ SECTIONS { ROM : { *(.text) } >rom } ++ ++ ++File: ld.info, Node: Output Section Phdr, Next: Output Section Fill, Prev: Output Section Region, Up: Output Section Attributes ++ ++3.6.8.6 Output Section Phdr ++........................... ++ ++You can assign a section to a previously defined program segment by ++using `:PHDR'. *Note PHDRS::. If a section is assigned to one or more ++segments, then all subsequent allocated sections will be assigned to ++those segments as well, unless they use an explicitly `:PHDR' modifier. ++You can use `:NONE' to tell the linker to not put the section in any ++segment at all. ++ ++ Here is a simple example: ++ PHDRS { text PT_LOAD ; } ++ SECTIONS { .text : { *(.text) } :text } ++ ++ ++File: ld.info, Node: Output Section Fill, Prev: Output Section Phdr, Up: Output Section Attributes ++ ++3.6.8.7 Output Section Fill ++........................... ++ ++You can set the fill pattern for an entire section by using `=FILLEXP'. ++FILLEXP is an expression (*note Expressions::). Any otherwise ++unspecified regions of memory within the output section (for example, ++gaps left due to the required alignment of input sections) will be ++filled with the value, repeated as necessary. If the fill expression ++is a simple hex number, ie. a string of hex digit starting with `0x' ++and without a trailing `k' or `M', then an arbitrarily long sequence of ++hex digits can be used to specify the fill pattern; Leading zeros ++become part of the pattern too. For all other cases, including extra ++parentheses or a unary `+', the fill pattern is the four least ++significant bytes of the value of the expression. In all cases, the ++number is big-endian. ++ ++ You can also change the fill value with a `FILL' command in the ++output section commands; (*note Output Section Data::). ++ ++ Here is a simple example: ++ SECTIONS { .text : { *(.text) } =0x90909090 } ++ ++ ++File: ld.info, Node: Overlay Description, Prev: Output Section Attributes, Up: SECTIONS ++ ++3.6.9 Overlay Description ++------------------------- ++ ++An overlay description provides an easy way to describe sections which ++are to be loaded as part of a single memory image but are to be run at ++the same memory address. At run time, some sort of overlay manager will ++copy the overlaid sections in and out of the runtime memory address as ++required, perhaps by simply manipulating addressing bits. This approach ++can be useful, for example, when a certain region of memory is faster ++than another. ++ ++ Overlays are described using the `OVERLAY' command. The `OVERLAY' ++command is used within a `SECTIONS' command, like an output section ++description. The full syntax of the `OVERLAY' command is as follows: ++ OVERLAY [START] : [NOCROSSREFS] [AT ( LDADDR )] ++ { ++ SECNAME1 ++ { ++ OUTPUT-SECTION-COMMAND ++ OUTPUT-SECTION-COMMAND ++ ... ++ } [:PHDR...] [=FILL] ++ SECNAME2 ++ { ++ OUTPUT-SECTION-COMMAND ++ OUTPUT-SECTION-COMMAND ++ ... ++ } [:PHDR...] [=FILL] ++ ... ++ } [>REGION] [:PHDR...] [=FILL] ++ ++ Everything is optional except `OVERLAY' (a keyword), and each ++section must have a name (SECNAME1 and SECNAME2 above). The section ++definitions within the `OVERLAY' construct are identical to those ++within the general `SECTIONS' contruct (*note SECTIONS::), except that ++no addresses and no memory regions may be defined for sections within ++an `OVERLAY'. ++ ++ The sections are all defined with the same starting address. The ++load addresses of the sections are arranged such that they are ++consecutive in memory starting at the load address used for the ++`OVERLAY' as a whole (as with normal section definitions, the load ++address is optional, and defaults to the start address; the start ++address is also optional, and defaults to the current value of the ++location counter). ++ ++ If the `NOCROSSREFS' keyword is used, and there any references among ++the sections, the linker will report an error. Since the sections all ++run at the same address, it normally does not make sense for one ++section to refer directly to another. *Note NOCROSSREFS: Miscellaneous ++Commands. ++ ++ For each section within the `OVERLAY', the linker automatically ++defines two symbols. The symbol `__load_start_SECNAME' is defined as ++the starting load address of the section. The symbol ++`__load_stop_SECNAME' is defined as the final load address of the ++section. Any characters within SECNAME which are not legal within C ++identifiers are removed. C (or assembler) code may use these symbols ++to move the overlaid sections around as necessary. ++ ++ At the end of the overlay, the value of the location counter is set ++to the start address of the overlay plus the size of the largest ++section. ++ ++ Here is an example. Remember that this would appear inside a ++`SECTIONS' construct. ++ OVERLAY 0x1000 : AT (0x4000) ++ { ++ .text0 { o1/*.o(.text) } ++ .text1 { o2/*.o(.text) } ++ } ++This will define both `.text0' and `.text1' to start at address ++0x1000. `.text0' will be loaded at address 0x4000, and `.text1' will ++be loaded immediately after `.text0'. The following symbols will be ++defined: `__load_start_text0', `__load_stop_text0', ++`__load_start_text1', `__load_stop_text1'. ++ ++ C code to copy overlay `.text1' into the overlay area might look ++like the following. ++ ++ extern char __load_start_text1, __load_stop_text1; ++ memcpy ((char *) 0x1000, &__load_start_text1, ++ &__load_stop_text1 - &__load_start_text1); ++ ++ Note that the `OVERLAY' command is just syntactic sugar, since ++everything it does can be done using the more basic commands. The above ++example could have been written identically as follows. ++ ++ .text0 0x1000 : AT (0x4000) { o1/*.o(.text) } ++ __load_start_text0 = LOADADDR (.text0); ++ __load_stop_text0 = LOADADDR (.text0) + SIZEOF (.text0); ++ .text1 0x1000 : AT (0x4000 + SIZEOF (.text0)) { o2/*.o(.text) } ++ __load_start_text1 = LOADADDR (.text1); ++ __load_stop_text1 = LOADADDR (.text1) + SIZEOF (.text1); ++ . = 0x1000 + MAX (SIZEOF (.text0), SIZEOF (.text1)); ++ ++ ++File: ld.info, Node: MEMORY, Next: PHDRS, Prev: SECTIONS, Up: Scripts ++ ++3.7 MEMORY Command ++================== ++ ++The linker's default configuration permits allocation of all available ++memory. You can override this by using the `MEMORY' command. ++ ++ The `MEMORY' command describes the location and size of blocks of ++memory in the target. You can use it to describe which memory regions ++may be used by the linker, and which memory regions it must avoid. You ++can then assign sections to particular memory regions. The linker will ++set section addresses based on the memory regions, and will warn about ++regions that become too full. The linker will not shuffle sections ++around to fit into the available regions. ++ ++ A linker script may contain at most one use of the `MEMORY' command. ++However, you can define as many blocks of memory within it as you ++wish. The syntax is: ++ MEMORY ++ { ++ NAME [(ATTR)] : ORIGIN = ORIGIN, LENGTH = LEN ++ ... ++ } ++ ++ The NAME is a name used in the linker script to refer to the region. ++The region name has no meaning outside of the linker script. Region ++names are stored in a separate name space, and will not conflict with ++symbol names, file names, or section names. Each memory region must ++have a distinct name. ++ ++ The ATTR string is an optional list of attributes that specify ++whether to use a particular memory region for an input section which is ++not explicitly mapped in the linker script. As described in *Note ++SECTIONS::, if you do not specify an output section for some input ++section, the linker will create an output section with the same name as ++the input section. If you define region attributes, the linker will use ++them to select the memory region for the output section that it creates. ++ ++ The ATTR string must consist only of the following characters: ++`R' ++ Read-only section ++ ++`W' ++ Read/write section ++ ++`X' ++ Executable section ++ ++`A' ++ Allocatable section ++ ++`I' ++ Initialized section ++ ++`L' ++ Same as `I' ++ ++`!' ++ Invert the sense of any of the preceding attributes ++ ++ If a unmapped section matches any of the listed attributes other than ++`!', it will be placed in the memory region. The `!' attribute ++reverses this test, so that an unmapped section will be placed in the ++memory region only if it does not match any of the listed attributes. ++ ++ The ORIGIN is an numerical expression for the start address of the ++memory region. The expression must evaluate to a constant and it ++cannot involve any symbols. The keyword `ORIGIN' may be abbreviated to ++`org' or `o' (but not, for example, `ORG'). ++ ++ The LEN is an expression for the size in bytes of the memory region. ++As with the ORIGIN expression, the expression must be numerical only ++and must evaluate to a constant. The keyword `LENGTH' may be ++abbreviated to `len' or `l'. ++ ++ In the following example, we specify that there are two memory ++regions available for allocation: one starting at `0' for 256 kilobytes, ++and the other starting at `0x40000000' for four megabytes. The linker ++will place into the `rom' memory region every section which is not ++explicitly mapped into a memory region, and is either read-only or ++executable. The linker will place other sections which are not ++explicitly mapped into a memory region into the `ram' memory region. ++ ++ MEMORY ++ { ++ rom (rx) : ORIGIN = 0, LENGTH = 256K ++ ram (!rx) : org = 0x40000000, l = 4M ++ } ++ ++ Once you define a memory region, you can direct the linker to place ++specific output sections into that memory region by using the `>REGION' ++output section attribute. For example, if you have a memory region ++named `mem', you would use `>mem' in the output section definition. ++*Note Output Section Region::. If no address was specified for the ++output section, the linker will set the address to the next available ++address within the memory region. If the combined output sections ++directed to a memory region are too large for the region, the linker ++will issue an error message. ++ ++ It is possible to access the origin and length of a memory in an ++expression via the `ORIGIN(MEMORY)' and `LENGTH(MEMORY)' functions: ++ ++ _fstack = ORIGIN(ram) + LENGTH(ram) - 4; ++ ++ ++File: ld.info, Node: PHDRS, Next: VERSION, Prev: MEMORY, Up: Scripts ++ ++3.8 PHDRS Command ++================= ++ ++The ELF object file format uses "program headers", also knows as ++"segments". The program headers describe how the program should be ++loaded into memory. You can print them out by using the `objdump' ++program with the `-p' option. ++ ++ When you run an ELF program on a native ELF system, the system loader ++reads the program headers in order to figure out how to load the ++program. This will only work if the program headers are set correctly. ++This manual does not describe the details of how the system loader ++interprets program headers; for more information, see the ELF ABI. ++ ++ The linker will create reasonable program headers by default. ++However, in some cases, you may need to specify the program headers more ++precisely. You may use the `PHDRS' command for this purpose. When the ++linker sees the `PHDRS' command in the linker script, it will not ++create any program headers other than the ones specified. ++ ++ The linker only pays attention to the `PHDRS' command when ++generating an ELF output file. In other cases, the linker will simply ++ignore `PHDRS'. ++ ++ This is the syntax of the `PHDRS' command. The words `PHDRS', ++`FILEHDR', `AT', and `FLAGS' are keywords. ++ ++ PHDRS ++ { ++ NAME TYPE [ FILEHDR ] [ PHDRS ] [ AT ( ADDRESS ) ] ++ [ FLAGS ( FLAGS ) ] ; ++ } ++ ++ The NAME is used only for reference in the `SECTIONS' command of the ++linker script. It is not put into the output file. Program header ++names are stored in a separate name space, and will not conflict with ++symbol names, file names, or section names. Each program header must ++have a distinct name. ++ ++ Certain program header types describe segments of memory which the ++system loader will load from the file. In the linker script, you ++specify the contents of these segments by placing allocatable output ++sections in the segments. You use the `:PHDR' output section attribute ++to place a section in a particular segment. *Note Output Section ++Phdr::. ++ ++ It is normal to put certain sections in more than one segment. This ++merely implies that one segment of memory contains another. You may ++repeat `:PHDR', using it once for each segment which should contain the ++section. ++ ++ If you place a section in one or more segments using `:PHDR', then ++the linker will place all subsequent allocatable sections which do not ++specify `:PHDR' in the same segments. This is for convenience, since ++generally a whole set of contiguous sections will be placed in a single ++segment. You can use `:NONE' to override the default segment and tell ++the linker to not put the section in any segment at all. ++ ++ You may use the `FILEHDR' and `PHDRS' keywords appear after the ++program header type to further describe the contents of the segment. ++The `FILEHDR' keyword means that the segment should include the ELF ++file header. The `PHDRS' keyword means that the segment should include ++the ELF program headers themselves. ++ ++ The TYPE may be one of the following. The numbers indicate the ++value of the keyword. ++ ++`PT_NULL' (0) ++ Indicates an unused program header. ++ ++`PT_LOAD' (1) ++ Indicates that this program header describes a segment to be ++ loaded from the file. ++ ++`PT_DYNAMIC' (2) ++ Indicates a segment where dynamic linking information can be found. ++ ++`PT_INTERP' (3) ++ Indicates a segment where the name of the program interpreter may ++ be found. ++ ++`PT_NOTE' (4) ++ Indicates a segment holding note information. ++ ++`PT_SHLIB' (5) ++ A reserved program header type, defined but not specified by the ++ ELF ABI. ++ ++`PT_PHDR' (6) ++ Indicates a segment where the program headers may be found. ++ ++EXPRESSION ++ An expression giving the numeric type of the program header. This ++ may be used for types not defined above. ++ ++ You can specify that a segment should be loaded at a particular ++address in memory by using an `AT' expression. This is identical to the ++`AT' command used as an output section attribute (*note Output Section ++LMA::). The `AT' command for a program header overrides the output ++section attribute. ++ ++ The linker will normally set the segment flags based on the sections ++which comprise the segment. You may use the `FLAGS' keyword to ++explicitly specify the segment flags. The value of FLAGS must be an ++integer. It is used to set the `p_flags' field of the program header. ++ ++ Here is an example of `PHDRS'. This shows a typical set of program ++headers used on a native ELF system. ++ ++ PHDRS ++ { ++ headers PT_PHDR PHDRS ; ++ interp PT_INTERP ; ++ text PT_LOAD FILEHDR PHDRS ; ++ data PT_LOAD ; ++ dynamic PT_DYNAMIC ; ++ } ++ ++ SECTIONS ++ { ++ . = SIZEOF_HEADERS; ++ .interp : { *(.interp) } :text :interp ++ .text : { *(.text) } :text ++ .rodata : { *(.rodata) } /* defaults to :text */ ++ ... ++ . = . + 0x1000; /* move to a new page in memory */ ++ .data : { *(.data) } :data ++ .dynamic : { *(.dynamic) } :data :dynamic ++ ... ++ } ++ ++ ++File: ld.info, Node: VERSION, Next: Expressions, Prev: PHDRS, Up: Scripts ++ ++3.9 VERSION Command ++=================== ++ ++The linker supports symbol versions when using ELF. Symbol versions are ++only useful when using shared libraries. The dynamic linker can use ++symbol versions to select a specific version of a function when it runs ++a program that may have been linked against an earlier version of the ++shared library. ++ ++ You can include a version script directly in the main linker script, ++or you can supply the version script as an implicit linker script. You ++can also use the `--version-script' linker option. ++ ++ The syntax of the `VERSION' command is simply ++ VERSION { version-script-commands } ++ ++ The format of the version script commands is identical to that used ++by Sun's linker in Solaris 2.5. The version script defines a tree of ++version nodes. You specify the node names and interdependencies in the ++version script. You can specify which symbols are bound to which ++version nodes, and you can reduce a specified set of symbols to local ++scope so that they are not globally visible outside of the shared ++library. ++ ++ The easiest way to demonstrate the version script language is with a ++few examples. ++ ++ VERS_1.1 { ++ global: ++ foo1; ++ local: ++ old*; ++ original*; ++ new*; ++ }; ++ ++ VERS_1.2 { ++ foo2; ++ } VERS_1.1; ++ ++ VERS_2.0 { ++ bar1; bar2; ++ extern "C++" { ++ ns::*; ++ "int f(int, double)"; ++ } ++ } VERS_1.2; ++ ++ This example version script defines three version nodes. The first ++version node defined is `VERS_1.1'; it has no other dependencies. The ++script binds the symbol `foo1' to `VERS_1.1'. It reduces a number of ++symbols to local scope so that they are not visible outside of the ++shared library; this is done using wildcard patterns, so that any ++symbol whose name begins with `old', `original', or `new' is matched. ++The wildcard patterns available are the same as those used in the shell ++when matching filenames (also known as "globbing"). However, if you ++specify the symbol name inside double quotes, then the name is treated ++as literal, rather than as a glob pattern. ++ ++ Next, the version script defines node `VERS_1.2'. This node depends ++upon `VERS_1.1'. The script binds the symbol `foo2' to the version ++node `VERS_1.2'. ++ ++ Finally, the version script defines node `VERS_2.0'. This node ++depends upon `VERS_1.2'. The scripts binds the symbols `bar1' and ++`bar2' are bound to the version node `VERS_2.0'. ++ ++ When the linker finds a symbol defined in a library which is not ++specifically bound to a version node, it will effectively bind it to an ++unspecified base version of the library. You can bind all otherwise ++unspecified symbols to a given version node by using `global: *;' ++somewhere in the version script. ++ ++ The names of the version nodes have no specific meaning other than ++what they might suggest to the person reading them. The `2.0' version ++could just as well have appeared in between `1.1' and `1.2'. However, ++this would be a confusing way to write a version script. ++ ++ Node name can be omited, provided it is the only version node in the ++version script. Such version script doesn't assign any versions to ++symbols, only selects which symbols will be globally visible out and ++which won't. ++ ++ { global: foo; bar; local: *; }; ++ ++ When you link an application against a shared library that has ++versioned symbols, the application itself knows which version of each ++symbol it requires, and it also knows which version nodes it needs from ++each shared library it is linked against. Thus at runtime, the dynamic ++loader can make a quick check to make sure that the libraries you have ++linked against do in fact supply all of the version nodes that the ++application will need to resolve all of the dynamic symbols. In this ++way it is possible for the dynamic linker to know with certainty that ++all external symbols that it needs will be resolvable without having to ++search for each symbol reference. ++ ++ The symbol versioning is in effect a much more sophisticated way of ++doing minor version checking that SunOS does. The fundamental problem ++that is being addressed here is that typically references to external ++functions are bound on an as-needed basis, and are not all bound when ++the application starts up. If a shared library is out of date, a ++required interface may be missing; when the application tries to use ++that interface, it may suddenly and unexpectedly fail. With symbol ++versioning, the user will get a warning when they start their program if ++the libraries being used with the application are too old. ++ ++ There are several GNU extensions to Sun's versioning approach. The ++first of these is the ability to bind a symbol to a version node in the ++source file where the symbol is defined instead of in the versioning ++script. This was done mainly to reduce the burden on the library ++maintainer. You can do this by putting something like: ++ __asm__(".symver original_foo,foo@VERS_1.1"); ++ in the C source file. This renames the function `original_foo' to ++be an alias for `foo' bound to the version node `VERS_1.1'. The ++`local:' directive can be used to prevent the symbol `original_foo' ++from being exported. A `.symver' directive takes precedence over a ++version script. ++ ++ The second GNU extension is to allow multiple versions of the same ++function to appear in a given shared library. In this way you can make ++an incompatible change to an interface without increasing the major ++version number of the shared library, while still allowing applications ++linked against the old interface to continue to function. ++ ++ To do this, you must use multiple `.symver' directives in the source ++file. Here is an example: ++ ++ __asm__(".symver original_foo,foo@"); ++ __asm__(".symver old_foo,foo@VERS_1.1"); ++ __asm__(".symver old_foo1,foo@VERS_1.2"); ++ __asm__(".symver new_foo,foo@@VERS_2.0"); ++ ++ In this example, `foo@' represents the symbol `foo' bound to the ++unspecified base version of the symbol. The source file that contains ++this example would define 4 C functions: `original_foo', `old_foo', ++`old_foo1', and `new_foo'. ++ ++ When you have multiple definitions of a given symbol, there needs to ++be some way to specify a default version to which external references to ++this symbol will be bound. You can do this with the `foo@@VERS_2.0' ++type of `.symver' directive. You can only declare one version of a ++symbol as the default in this manner; otherwise you would effectively ++have multiple definitions of the same symbol. ++ ++ If you wish to bind a reference to a specific version of the symbol ++within the shared library, you can use the aliases of convenience ++(i.e., `old_foo'), or you can use the `.symver' directive to ++specifically bind to an external version of the function in question. ++ ++ You can also specify the language in the version script: ++ ++ VERSION extern "lang" { version-script-commands } ++ ++ The supported `lang's are `C', `C++', and `Java'. The linker will ++iterate over the list of symbols at the link time and demangle them ++according to `lang' before matching them to the patterns specified in ++`version-script-commands'. ++ ++ Demangled names may contains spaces and other special characters. As ++described above, you can use a glob pattern to match demangled names, ++or you can use a double-quoted string to match the string exactly. In ++the latter case, be aware that minor differences (such as differing ++whitespace) between the version script and the demangler output will ++cause a mismatch. As the exact string generated by the demangler might ++change in the future, even if the mangled name does not, you should ++check that all of your version directives are behaving as you expect ++when you upgrade. ++ ++ ++File: ld.info, Node: Expressions, Next: Implicit Linker Scripts, Prev: VERSION, Up: Scripts ++ ++3.10 Expressions in Linker Scripts ++================================== ++ ++The syntax for expressions in the linker script language is identical to ++that of C expressions. All expressions are evaluated as integers. All ++expressions are evaluated in the same size, which is 32 bits if both the ++host and target are 32 bits, and is otherwise 64 bits. ++ ++ You can use and set symbol values in expressions. ++ ++ The linker defines several special purpose builtin functions for use ++in expressions. ++ ++* Menu: ++ ++* Constants:: Constants ++* Symbols:: Symbol Names ++* Orphan Sections:: Orphan Sections ++* Location Counter:: The Location Counter ++* Operators:: Operators ++* Evaluation:: Evaluation ++* Expression Section:: The Section of an Expression ++* Builtin Functions:: Builtin Functions ++ ++ ++File: ld.info, Node: Constants, Next: Symbols, Up: Expressions ++ ++3.10.1 Constants ++---------------- ++ ++All constants are integers. ++ ++ As in C, the linker considers an integer beginning with `0' to be ++octal, and an integer beginning with `0x' or `0X' to be hexadecimal. ++The linker considers other integers to be decimal. ++ ++ In addition, you can use the suffixes `K' and `M' to scale a ++constant by `1024' or `1024*1024' respectively. For example, the ++following all refer to the same quantity: ++ _fourk_1 = 4K; ++ _fourk_2 = 4096; ++ _fourk_3 = 0x1000; ++ ++ ++File: ld.info, Node: Symbols, Next: Orphan Sections, Prev: Constants, Up: Expressions ++ ++3.10.2 Symbol Names ++------------------- ++ ++Unless quoted, symbol names start with a letter, underscore, or period ++and may include letters, digits, underscores, periods, and hyphens. ++Unquoted symbol names must not conflict with any keywords. You can ++specify a symbol which contains odd characters or has the same name as a ++keyword by surrounding the symbol name in double quotes: ++ "SECTION" = 9; ++ "with a space" = "also with a space" + 10; ++ ++ Since symbols can contain many non-alphabetic characters, it is ++safest to delimit symbols with spaces. For example, `A-B' is one ++symbol, whereas `A - B' is an expression involving subtraction. ++ ++ ++File: ld.info, Node: Orphan Sections, Next: Location Counter, Prev: Symbols, Up: Expressions ++ ++3.10.3 Orphan Sections ++---------------------- ++ ++Orphan sections are sections present in the input files which are not ++explicitly placed into the output file by the linker script. The ++linker will still copy these sections into the output file, but it has ++to guess as to where they should be placed. The linker uses a simple ++heuristic to do this. It attempts to place orphan sections after ++non-orphan sections of the same attribute, such as code vs data, ++loadable vs non-loadable, etc. If there is not enough room to do this ++then it places at the end of the file. ++ ++ For ELF targets, the attribute of the section includes section type ++as well as section flag. ++ ++ ++File: ld.info, Node: Location Counter, Next: Operators, Prev: Orphan Sections, Up: Expressions ++ ++3.10.4 The Location Counter ++--------------------------- ++ ++The special linker variable "dot" `.' always contains the current ++output location counter. Since the `.' always refers to a location in ++an output section, it may only appear in an expression within a ++`SECTIONS' command. The `.' symbol may appear anywhere that an ++ordinary symbol is allowed in an expression. ++ ++ Assigning a value to `.' will cause the location counter to be ++moved. This may be used to create holes in the output section. The ++location counter may never be moved backwards. ++ ++ SECTIONS ++ { ++ output : ++ { ++ file1(.text) ++ . = . + 1000; ++ file2(.text) ++ . += 1000; ++ file3(.text) ++ } = 0x12345678; ++ } ++ In the previous example, the `.text' section from `file1' is located ++at the beginning of the output section `output'. It is followed by a ++1000 byte gap. Then the `.text' section from `file2' appears, also ++with a 1000 byte gap following before the `.text' section from `file3'. ++The notation `= 0x12345678' specifies what data to write in the gaps ++(*note Output Section Fill::). ++ ++ Note: `.' actually refers to the byte offset from the start of the ++current containing object. Normally this is the `SECTIONS' statement, ++whose start address is 0, hence `.' can be used as an absolute address. ++If `.' is used inside a section description however, it refers to the ++byte offset from the start of that section, not an absolute address. ++Thus in a script like this: ++ ++ SECTIONS ++ { ++ . = 0x100 ++ .text: { ++ *(.text) ++ . = 0x200 ++ } ++ . = 0x500 ++ .data: { ++ *(.data) ++ . += 0x600 ++ } ++ } ++ ++ The `.text' section will be assigned a starting address of 0x100 and ++a size of exactly 0x200 bytes, even if there is not enough data in the ++`.text' input sections to fill this area. (If there is too much data, ++an error will be produced because this would be an attempt to move `.' ++backwards). The `.data' section will start at 0x500 and it will have ++an extra 0x600 bytes worth of space after the end of the values from ++the `.data' input sections and before the end of the `.data' output ++section itself. ++ ++ Setting symbols to the value of the location counter outside of an ++output section statement can result in unexpected values if the linker ++needs to place orphan sections. For example, given the following: ++ ++ SECTIONS ++ { ++ start_of_text = . ; ++ .text: { *(.text) } ++ end_of_text = . ; ++ ++ start_of_data = . ; ++ .data: { *(.data) } ++ end_of_data = . ; ++ } ++ ++ If the linker needs to place some input section, e.g. `.rodata', not ++mentioned in the script, it might choose to place that section between ++`.text' and `.data'. You might think the linker should place `.rodata' ++on the blank line in the above script, but blank lines are of no ++particular significance to the linker. As well, the linker doesn't ++associate the above symbol names with their sections. Instead, it ++assumes that all assignments or other statements belong to the previous ++output section, except for the special case of an assignment to `.'. ++I.e., the linker will place the orphan `.rodata' section as if the ++script was written as follows: ++ ++ SECTIONS ++ { ++ start_of_text = . ; ++ .text: { *(.text) } ++ end_of_text = . ; ++ ++ start_of_data = . ; ++ .rodata: { *(.rodata) } ++ .data: { *(.data) } ++ end_of_data = . ; ++ } ++ ++ This may or may not be the script author's intention for the value of ++`start_of_data'. One way to influence the orphan section placement is ++to assign the location counter to itself, as the linker assumes that an ++assignment to `.' is setting the start address of a following output ++section and thus should be grouped with that section. So you could ++write: ++ ++ SECTIONS ++ { ++ start_of_text = . ; ++ .text: { *(.text) } ++ end_of_text = . ; ++ ++ . = . ; ++ start_of_data = . ; ++ .data: { *(.data) } ++ end_of_data = . ; ++ } ++ ++ Now, the orphan `.rodata' section will be placed between ++`end_of_text' and `start_of_data'. ++ ++ ++File: ld.info, Node: Operators, Next: Evaluation, Prev: Location Counter, Up: Expressions ++ ++3.10.5 Operators ++---------------- ++ ++The linker recognizes the standard C set of arithmetic operators, with ++the standard bindings and precedence levels: ++ precedence associativity Operators Notes ++ (highest) ++ 1 left ! - ~ (1) ++ 2 left * / % ++ 3 left + - ++ 4 left >> << ++ 5 left == != > < <= >= ++ 6 left & ++ 7 left | ++ 8 left && ++ 9 left || ++ 10 right ? : ++ 11 right &= += -= *= /= (2) ++ (lowest) ++ Notes: (1) Prefix operators (2) *Note Assignments::. ++ ++ ++File: ld.info, Node: Evaluation, Next: Expression Section, Prev: Operators, Up: Expressions ++ ++3.10.6 Evaluation ++----------------- ++ ++The linker evaluates expressions lazily. It only computes the value of ++an expression when absolutely necessary. ++ ++ The linker needs some information, such as the value of the start ++address of the first section, and the origins and lengths of memory ++regions, in order to do any linking at all. These values are computed ++as soon as possible when the linker reads in the linker script. ++ ++ However, other values (such as symbol values) are not known or needed ++until after storage allocation. Such values are evaluated later, when ++other information (such as the sizes of output sections) is available ++for use in the symbol assignment expression. ++ ++ The sizes of sections cannot be known until after allocation, so ++assignments dependent upon these are not performed until after ++allocation. ++ ++ Some expressions, such as those depending upon the location counter ++`.', must be evaluated during section allocation. ++ ++ If the result of an expression is required, but the value is not ++available, then an error results. For example, a script like the ++following ++ SECTIONS ++ { ++ .text 9+this_isnt_constant : ++ { *(.text) } ++ } ++will cause the error message `non constant expression for initial ++address'. ++ ++ ++File: ld.info, Node: Expression Section, Next: Builtin Functions, Prev: Evaluation, Up: Expressions ++ ++3.10.7 The Section of an Expression ++----------------------------------- ++ ++When the linker evaluates an expression, the result is either absolute ++or relative to some section. A relative expression is expressed as a ++fixed offset from the base of a section. ++ ++ The position of the expression within the linker script determines ++whether it is absolute or relative. An expression which appears within ++an output section definition is relative to the base of the output ++section. An expression which appears elsewhere will be absolute. ++ ++ A symbol set to a relative expression will be relocatable if you ++request relocatable output using the `-r' option. That means that a ++further link operation may change the value of the symbol. The symbol's ++section will be the section of the relative expression. ++ ++ A symbol set to an absolute expression will retain the same value ++through any further link operation. The symbol will be absolute, and ++will not have any particular associated section. ++ ++ You can use the builtin function `ABSOLUTE' to force an expression ++to be absolute when it would otherwise be relative. For example, to ++create an absolute symbol set to the address of the end of the output ++section `.data': ++ SECTIONS ++ { ++ .data : { *(.data) _edata = ABSOLUTE(.); } ++ } ++ If `ABSOLUTE' were not used, `_edata' would be relative to the ++`.data' section. ++ ++ ++File: ld.info, Node: Builtin Functions, Prev: Expression Section, Up: Expressions ++ ++3.10.8 Builtin Functions ++------------------------ ++ ++The linker script language includes a number of builtin functions for ++use in linker script expressions. ++ ++`ABSOLUTE(EXP)' ++ Return the absolute (non-relocatable, as opposed to non-negative) ++ value of the expression EXP. Primarily useful to assign an ++ absolute value to a symbol within a section definition, where ++ symbol values are normally section relative. *Note Expression ++ Section::. ++ ++`ADDR(SECTION)' ++ Return the absolute address (the VMA) of the named SECTION. Your ++ script must previously have defined the location of that section. ++ In the following example, `symbol_1' and `symbol_2' are assigned ++ identical values: ++ SECTIONS { ... ++ .output1 : ++ { ++ start_of_output_1 = ABSOLUTE(.); ++ ... ++ } ++ .output : ++ { ++ symbol_1 = ADDR(.output1); ++ symbol_2 = start_of_output_1; ++ } ++ ... } ++ ++`ALIGN(ALIGN)' ++`ALIGN(EXP,ALIGN)' ++ Return the location counter (`.') or arbitrary expression aligned ++ to the next ALIGN boundary. The single operand `ALIGN' doesn't ++ change the value of the location counter--it just does arithmetic ++ on it. The two operand `ALIGN' allows an arbitrary expression to ++ be aligned upwards (`ALIGN(ALIGN)' is equivalent to `ALIGN(., ++ ALIGN)'). ++ ++ Here is an example which aligns the output `.data' section to the ++ next `0x2000' byte boundary after the preceding section and sets a ++ variable within the section to the next `0x8000' boundary after the ++ input sections: ++ SECTIONS { ... ++ .data ALIGN(0x2000): { ++ *(.data) ++ variable = ALIGN(0x8000); ++ } ++ ... } ++ The first use of `ALIGN' in this example specifies the ++ location of a section because it is used as the optional ADDRESS ++ attribute of a section definition (*note Output Section ++ Address::). The second use of `ALIGN' is used to defines the ++ value of a symbol. ++ ++ The builtin function `NEXT' is closely related to `ALIGN'. ++ ++`BLOCK(EXP)' ++ This is a synonym for `ALIGN', for compatibility with older linker ++ scripts. It is most often seen when setting the address of an ++ output section. ++ ++`DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE)' ++ This is equivalent to either ++ (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - 1))) ++ or ++ (ALIGN(MAXPAGESIZE) + (. & (MAXPAGESIZE - COMMONPAGESIZE))) ++ depending on whether the latter uses fewer COMMONPAGESIZE sized ++ pages for the data segment (area between the result of this ++ expression and `DATA_SEGMENT_END') than the former or not. If the ++ latter form is used, it means COMMONPAGESIZE bytes of runtime ++ memory will be saved at the expense of up to COMMONPAGESIZE wasted ++ bytes in the on-disk file. ++ ++ This expression can only be used directly in `SECTIONS' commands, ++ not in any output section descriptions and only once in the linker ++ script. COMMONPAGESIZE should be less or equal to MAXPAGESIZE and ++ should be the system page size the object wants to be optimized ++ for (while still working on system page sizes up to MAXPAGESIZE). ++ ++ Example: ++ . = DATA_SEGMENT_ALIGN(0x10000, 0x2000); ++ ++`DATA_SEGMENT_END(EXP)' ++ This defines the end of data segment for `DATA_SEGMENT_ALIGN' ++ evaluation purposes. ++ ++ . = DATA_SEGMENT_END(.); ++ ++`DATA_SEGMENT_RELRO_END(OFFSET, EXP)' ++ This defines the end of the `PT_GNU_RELRO' segment when `-z relro' ++ option is used. Second argument is returned. When `-z relro' ++ option is not present, `DATA_SEGMENT_RELRO_END' does nothing, ++ otherwise `DATA_SEGMENT_ALIGN' is padded so that EXP + OFFSET is ++ aligned to the most commonly used page boundary for particular ++ target. If present in the linker script, it must always come in ++ between `DATA_SEGMENT_ALIGN' and `DATA_SEGMENT_END'. ++ ++ . = DATA_SEGMENT_RELRO_END(24, .); ++ ++`DEFINED(SYMBOL)' ++ Return 1 if SYMBOL is in the linker global symbol table and is ++ defined before the statement using DEFINED in the script, otherwise ++ return 0. You can use this function to provide default values for ++ symbols. For example, the following script fragment shows how to ++ set a global symbol `begin' to the first location in the `.text' ++ section--but if a symbol called `begin' already existed, its value ++ is preserved: ++ ++ SECTIONS { ... ++ .text : { ++ begin = DEFINED(begin) ? begin : . ; ++ ... ++ } ++ ... ++ } ++ ++`LENGTH(MEMORY)' ++ Return the length of the memory region named MEMORY. ++ ++`LOADADDR(SECTION)' ++ Return the absolute LMA of the named SECTION. This is normally ++ the same as `ADDR', but it may be different if the `AT' attribute ++ is used in the output section definition (*note Output Section ++ LMA::). ++ ++`MAX(EXP1, EXP2)' ++ Returns the maximum of EXP1 and EXP2. ++ ++`MIN(EXP1, EXP2)' ++ Returns the minimum of EXP1 and EXP2. ++ ++`NEXT(EXP)' ++ Return the next unallocated address that is a multiple of EXP. ++ This function is closely related to `ALIGN(EXP)'; unless you use ++ the `MEMORY' command to define discontinuous memory for the output ++ file, the two functions are equivalent. ++ ++`ORIGIN(MEMORY)' ++ Return the origin of the memory region named MEMORY. ++ ++`SEGMENT_START(SEGMENT, DEFAULT)' ++ Return the base address of the named SEGMENT. If an explicit ++ value has been given for this segment (with a command-line `-T' ++ option) that value will be returned; otherwise the value will be ++ DEFAULT. At present, the `-T' command-line option can only be ++ used to set the base address for the "text", "data", and "bss" ++ sections, but you use `SEGMENT_START' with any segment name. ++ ++`SIZEOF(SECTION)' ++ Return the size in bytes of the named SECTION, if that section has ++ been allocated. If the section has not been allocated when this is ++ evaluated, the linker will report an error. In the following ++ example, `symbol_1' and `symbol_2' are assigned identical values: ++ SECTIONS{ ... ++ .output { ++ .start = . ; ++ ... ++ .end = . ; ++ } ++ symbol_1 = .end - .start ; ++ symbol_2 = SIZEOF(.output); ++ ... } ++ ++`SIZEOF_HEADERS' ++`sizeof_headers' ++ Return the size in bytes of the output file's headers. This is ++ information which appears at the start of the output file. You ++ can use this number when setting the start address of the first ++ section, if you choose, to facilitate paging. ++ ++ When producing an ELF output file, if the linker script uses the ++ `SIZEOF_HEADERS' builtin function, the linker must compute the ++ number of program headers before it has determined all the section ++ addresses and sizes. If the linker later discovers that it needs ++ additional program headers, it will report an error `not enough ++ room for program headers'. To avoid this error, you must avoid ++ using the `SIZEOF_HEADERS' function, or you must rework your linker ++ script to avoid forcing the linker to use additional program ++ headers, or you must define the program headers yourself using the ++ `PHDRS' command (*note PHDRS::). ++ ++ ++File: ld.info, Node: Implicit Linker Scripts, Prev: Expressions, Up: Scripts ++ ++3.11 Implicit Linker Scripts ++============================ ++ ++If you specify a linker input file which the linker can not recognize as ++an object file or an archive file, it will try to read the file as a ++linker script. If the file can not be parsed as a linker script, the ++linker will report an error. ++ ++ An implicit linker script will not replace the default linker script. ++ ++ Typically an implicit linker script would contain only symbol ++assignments, or the `INPUT', `GROUP', or `VERSION' commands. ++ ++ Any input files read because of an implicit linker script will be ++read at the position in the command line where the implicit linker ++script was read. This can affect archive searching. ++ ++ ++File: ld.info, Node: Machine Dependent, Next: BFD, Prev: Scripts, Up: Top ++ ++4 Machine Dependent Features ++**************************** ++ ++`ld' has additional features on some platforms; the following sections ++describe them. Machines where `ld' has no additional functionality are ++not listed. ++ ++* Menu: ++ ++ ++* H8/300:: `ld' and the H8/300 ++ ++* i960:: `ld' and the Intel 960 family ++ ++* ARM:: `ld' and the ARM family ++ ++* AVR32:: `ld' and AVR32 processors ++ ++* HPPA ELF32:: `ld' and HPPA 32-bit ELF ++ ++* MMIX:: `ld' and MMIX ++ ++* MSP430:: `ld' and MSP430 ++ ++* PowerPC ELF32:: `ld' and PowerPC 32-bit ELF Support ++ ++* PowerPC64 ELF64:: `ld' and PowerPC64 64-bit ELF Support ++ ++* TI COFF:: `ld' and TI COFF ++ ++* WIN32:: `ld' and WIN32 (cygwin/mingw) ++ ++* Xtensa:: `ld' and Xtensa Processors ++ ++ ++File: ld.info, Node: H8/300, Next: i960, Up: Machine Dependent ++ ++4.1 `ld' and the H8/300 ++======================= ++ ++For the H8/300, `ld' can perform these global optimizations when you ++specify the `--relax' command-line option. ++ ++_relaxing address modes_ ++ `ld' finds all `jsr' and `jmp' instructions whose targets are ++ within eight bits, and turns them into eight-bit program-counter ++ relative `bsr' and `bra' instructions, respectively. ++ ++_synthesizing instructions_ ++ `ld' finds all `mov.b' instructions which use the sixteen-bit ++ absolute address form, but refer to the top page of memory, and ++ changes them to use the eight-bit address form. (That is: the ++ linker turns `mov.b `@'AA:16' into `mov.b `@'AA:8' whenever the ++ address AA is in the top page of memory). ++ ++_bit manipulation instructions_ ++ `ld' finds all bit manipulation instructions like `band, bclr, ++ biand, bild, bior, bist, bixor, bld, bnot, bor, bset, bst, btst, ++ bxor' which use 32 bit and 16 bit absolute address form, but refer ++ to the top page of memory, and changes them to use the 8 bit ++ address form. (That is: the linker turns `bset #xx:3,`@'AA:32' ++ into `bset #xx:3,`@'AA:8' whenever the address AA is in the top ++ page of memory). ++ ++_system control instructions_ ++ `ld' finds all `ldc.w, stc.w' instrcutions which use the 32 bit ++ absolute address form, but refer to the top page of memory, and ++ changes them to use 16 bit address form. (That is: the linker ++ turns `ldc.w `@'AA:32,ccr' into `ldc.w `@'AA:16,ccr' whenever the ++ address AA is in the top page of memory). ++ ++ ++File: ld.info, Node: i960, Next: ARM, Prev: H8/300, Up: Machine Dependent ++ ++4.2 `ld' and the Intel 960 Family ++================================= ++ ++You can use the `-AARCHITECTURE' command line option to specify one of ++the two-letter names identifying members of the 960 family; the option ++specifies the desired output target, and warns of any incompatible ++instructions in the input files. It also modifies the linker's search ++strategy for archive libraries, to support the use of libraries ++specific to each particular architecture, by including in the search ++loop names suffixed with the string identifying the architecture. ++ ++ For example, if your `ld' command line included `-ACA' as well as ++`-ltry', the linker would look (in its built-in search paths, and in ++any paths you specify with `-L') for a library with the names ++ ++ try ++ libtry.a ++ tryca ++ libtryca.a ++ ++The first two possibilities would be considered in any event; the last ++two are due to the use of `-ACA'. ++ ++ You can meaningfully use `-A' more than once on a command line, since ++the 960 architecture family allows combination of target architectures; ++each use will add another pair of name variants to search for when `-l' ++specifies a library. ++ ++ `ld' supports the `--relax' option for the i960 family. If you ++specify `--relax', `ld' finds all `balx' and `calx' instructions whose ++targets are within 24 bits, and turns them into 24-bit program-counter ++relative `bal' and `cal' instructions, respectively. `ld' also turns ++`cal' instructions into `bal' instructions when it determines that the ++target subroutine is a leaf routine (that is, the target subroutine does ++not itself call any subroutines). ++ ++ +++File: ld.info, Node: ARM, Next: AVR32, Prev: i960, Up: Machine Dependent ++ ++4.3 `ld' and the ARM family ++=========================== ++ ++For the ARM, `ld' will generate code stubs to allow functions calls ++betweem ARM and Thumb code. These stubs only work with code that has ++been compiled and assembled with the `-mthumb-interwork' command line ++option. If it is necessary to link with old ARM object files or ++libraries, which have not been compiled with the -mthumb-interwork ++option then the `--support-old-code' command line switch should be ++given to the linker. This will make it generate larger stub functions ++which will work with non-interworking aware ARM code. Note, however, ++the linker does not support generating stubs for function calls to ++non-interworking aware Thumb code. ++ ++ The `--thumb-entry' switch is a duplicate of the generic `--entry' ++switch, in that it sets the program's starting address. But it also ++sets the bottom bit of the address, so that it can be branched to using ++a BX instruction, and the program will start executing in Thumb mode ++straight away. ++ ++ The `--be8' switch instructs `ld' to generate BE8 format ++executables. This option is only valid when linking big-endian objects. ++The resulting image will contain big-endian data and little-endian code. ++ ++ The `R_ARM_TARGET1' relocation is typically used for entries in the ++`.init_array' section. It is interpreted as either `R_ARM_REL32' or ++`R_ARM_ABS32', depending on the target. The `--target1-rel' and ++`--target1-abs' switches override the default. ++ ++ The `--target2=type' switch overrides the default definition of the ++`R_ARM_TARGET2' relocation. Valid values for `type', their meanings, ++and target defaults are as follows: ++`rel' ++ `R_ARM_REL32' (arm*-*-elf, arm*-*-eabi) ++ ++`abs' ++ `R_ARM_ABS32' (arm*-*-symbianelf) ++ ++`got-rel' ++ `R_ARM_GOT_PREL' (arm*-*-linux, arm*-*-*bsd) ++ ++ The `R_ARM_V4BX' relocation (defined by the ARM AAELF specification) ++enables objects compiled for the ARMv4 architecture to be ++interworking-safe when linked with other objects compiled for ARMv4t, ++but also allows pure ARMv4 binaries to be built from the same ARMv4 ++objects. ++ ++ In the latter case, the switch `--fix-v4bx' must be passed to the ++linker, which causes v4t `BX rM' instructions to be rewritten as `MOV ++PC,rM', since v4 processors do not have a `BX' instruction. ++ ++ In the former case, the switch should not be used, and `R_ARM_V4BX' ++relocations are ignored. ++ ++ The `--use-blx' switch enables the linker to use ARM/Thumb BLX ++instructions (available on ARMv5t and above) in various situations. ++Currently it is used to perform calls via the PLT from Thumb code using ++BLX rather than using BX and a mode-switching stub before each PLT ++entry. This should lead to such calls executing slightly faster. ++ ++ This option is enabled implicitly for SymbianOS, so there is no need ++to specify it if you are using that target. ++ ++ ++File: ld.info, Node: AVR32, Next: HPPA ELF32, Prev: ARM, Up: Machine Dependent ++ ++4.4 `ld' and AVR32 processors ++============================= ++ ++`--direct-data' ++ ++`--no-direct-data' ++ Taking the address of a symbol can often be done by using a direct ++ `mov' or pc-relative `sub' instruction, which is faster than using ++ a PC- or GOT-relative load, especially on the uC3 processors. ++ However, this does not always work when dealing with symbols in ++ the `.data' section so this optimization is disabled by default. ++ ++ Specifying `--direct-data' will enable this optimization. Note ++ that this may cause `relocation truncated to fit' errors for ++ certain large programs. If this happens, the optimization can be ++ turned off by specifying `--no-direct-data'. ++ ++ All known issues with direct data optimizations are detected at ++ link time, so if the linker doesn't complain, the result should ++ run just fine. ++ ++ ++File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: AVR32, Up: Machine Dependent ++ ++4.5 `ld' and HPPA 32-bit ELF Support ++==================================== ++ ++When generating a shared library, `ld' will by default generate import ++stubs suitable for use with a single sub-space application. The ++`--multi-subspace' switch causes `ld' to generate export stubs, and ++different (larger) import stubs suitable for use with multiple ++sub-spaces. ++ ++ Long branch stubs and import/export stubs are placed by `ld' in stub ++sections located between groups of input sections. `--stub-group-size' ++specifies the maximum size of a group of input sections handled by one ++stub section. Since branch offsets are signed, a stub section may ++serve two groups of input sections, one group before the stub section, ++and one group after it. However, when using conditional branches that ++require stubs, it may be better (for branch prediction) that stub ++sections only serve one group of input sections. A negative value for ++`N' chooses this scheme, ensuring that branches to stubs always use a ++negative offset. Two special values of `N' are recognized, `1' and ++`-1'. These both instruct `ld' to automatically size input section ++groups for the branch types detected, with the same behaviour regarding ++stub placement as other positive or negative values of `N' respectively. ++ ++ Note that `--stub-group-size' does not split input sections. A ++single input section larger than the group size specified will of course ++create a larger group (of one section). If input sections are too ++large, it may not be possible for a branch to reach its stub. ++ ++ ++File: ld.info, Node: MMIX, Next: MSP430, Prev: HPPA ELF32, Up: Machine Dependent ++ ++4.6 `ld' and MMIX ++================= ++ ++For MMIX, there is a choice of generating `ELF' object files or `mmo' ++object files when linking. The simulator `mmix' understands the `mmo' ++format. The binutils `objcopy' utility can translate between the two ++formats. ++ ++ There is one special section, the `.MMIX.reg_contents' section. ++Contents in this section is assumed to correspond to that of global ++registers, and symbols referring to it are translated to special ++symbols, equal to registers. In a final link, the start address of the ++`.MMIX.reg_contents' section corresponds to the first allocated global ++register multiplied by 8. Register `$255' is not included in this ++section; it is always set to the program entry, which is at the symbol ++`Main' for `mmo' files. ++ ++ Symbols with the prefix `__.MMIX.start.', for example ++`__.MMIX.start..text' and `__.MMIX.start..data' are special; there must ++be only one each, even if they are local. The default linker script ++uses these to set the default start address of a section. ++ ++ Initial and trailing multiples of zero-valued 32-bit words in a ++section, are left out from an mmo file. ++ ++ ++File: ld.info, Node: MSP430, Next: PowerPC ELF32, Prev: MMIX, Up: Machine Dependent ++ ++4.7 `ld' and MSP430 ++=================== ++ ++For the MSP430 it is possible to select the MPU architecture. The flag ++`-m [mpu type]' will select an appropriate linker script for selected ++MPU type. (To get a list of known MPUs just pass `-m help' option to ++the linker). ++ ++ The linker will recognize some extra sections which are MSP430 ++specific: ++ ++``.vectors'' ++ Defines a portion of ROM where interrupt vectors located. ++ ++``.bootloader'' ++ Defines the bootloader portion of the ROM (if applicable). Any ++ code in this section will be uploaded to the MPU. ++ ++``.infomem'' ++ Defines an information memory section (if applicable). Any code in ++ this section will be uploaded to the MPU. ++ ++``.infomemnobits'' ++ This is the same as the `.infomem' section except that any code in ++ this section will not be uploaded to the MPU. ++ ++``.noinit'' ++ Denotes a portion of RAM located above `.bss' section. ++ ++ The last two sections are used by gcc. ++ ++ ++File: ld.info, Node: PowerPC ELF32, Next: PowerPC64 ELF64, Prev: MSP430, Up: Machine Dependent ++ ++4.8 `ld' and PowerPC 32-bit ELF Support ++======================================= ++ ++Branches on PowerPC processors are limited to a signed 26-bit ++displacement, which may result in `ld' giving `relocation truncated to ++fit' errors with very large programs. `--relax' enables the generation ++of trampolines that can access the entire 32-bit address space. These ++trampolines are inserted at section boundaries, so may not themselves ++be reachable if an input section exceeds 33M in size. ++ ++`--bss-plt' ++ Current PowerPC GCC accepts a `-msecure-plt' option that generates ++ code capable of using a newer PLT and GOT layout that has the ++ security advantage of no executable section ever needing to be ++ writable and no writable section ever being executable. PowerPC ++ `ld' will generate this layout, including stubs to access the PLT, ++ if all input files (including startup and static libraries) were ++ compiled with `-msecure-plt'. `--bss-plt' forces the old BSS PLT ++ (and GOT layout) which can give slightly better performance. ++ ++`--sdata-got' ++ The new secure PLT and GOT are placed differently relative to other ++ sections compared to older BSS PLT and GOT placement. The ++ location of `.plt' must change because the new secure PLT is an ++ initialized section while the old PLT is uninitialized. The ++ reason for the `.got' change is more subtle: The new placement ++ allows `.got' to be read-only in applications linked with `-z ++ relro -z now'. However, this placement means that `.sdata' cannot ++ always be used in shared libraries, because the PowerPC ABI ++ accesses `.sdata' in shared libraries from the GOT pointer. ++ `--sdata-got' forces the old GOT placement. PowerPC GCC doesn't ++ use `.sdata' in shared libraries, so this option is really only ++ useful for other compilers that may do so. ++ ++`--emit-stub-syms' ++ This option causes `ld' to label linker stubs with a local symbol ++ that encodes the stub type and destination. ++ ++`--no-tls-optimize' ++ PowerPC `ld' normally performs some optimization of code sequences ++ used to access Thread-Local Storage. Use this option to disable ++ the optimization. ++ ++ ++File: ld.info, Node: PowerPC64 ELF64, Next: TI COFF, Prev: PowerPC ELF32, Up: Machine Dependent ++ ++4.8 `ld' and PowerPC64 64-bit ELF Support ++========================================= ++ ++`--stub-group-size' ++ Long branch stubs, PLT call stubs and TOC adjusting stubs are ++ placed by `ld' in stub sections located between groups of input ++ sections. `--stub-group-size' specifies the maximum size of a ++ group of input sections handled by one stub section. Since branch ++ offsets are signed, a stub section may serve two groups of input ++ sections, one group before the stub section, and one group after ++ it. However, when using conditional branches that require stubs, ++ it may be better (for branch prediction) that stub sections only ++ serve one group of input sections. A negative value for `N' ++ chooses this scheme, ensuring that branches to stubs always use a ++ negative offset. Two special values of `N' are recognized, `1' ++ and `-1'. These both instruct `ld' to automatically size input ++ section groups for the branch types detected, with the same ++ behaviour regarding stub placement as other positive or negative ++ values of `N' respectively. ++ ++ Note that `--stub-group-size' does not split input sections. A ++ single input section larger than the group size specified will of ++ course create a larger group (of one section). If input sections ++ are too large, it may not be possible for a branch to reach its ++ stub. ++ ++`--emit-stub-syms' ++ This option causes `ld' to label linker stubs with a local symbol ++ that encodes the stub type and destination. ++ ++`--dotsyms, --no-dotsyms' ++ These two options control how `ld' interprets version patterns in ++ a version script. Older PowerPC64 compilers emitted both a ++ function descriptor symbol with the same name as the function, and ++ a code entry symbol with the name prefixed by a dot (`.'). To ++ properly version a function `foo', the version script thus needs ++ to control both `foo' and `.foo'. The option `--dotsyms', on by ++ default, automatically adds the required dot-prefixed patterns. ++ Use `--no-dotsyms' to disable this feature. ++ ++`--no-tls-optimize' ++ PowerPC64 `ld' normally performs some optimization of code ++ sequences used to access Thread-Local Storage. Use this option to ++ disable the optimization. ++ ++`--no-opd-optimize' ++ PowerPC64 `ld' normally removes `.opd' section entries ++ corresponding to deleted link-once functions, or functions removed ++ by the action of `--gc-sections' or linker scrip `/DISCARD/'. Use ++ this option to disable `.opd' optimization. ++ ++`--non-overlapping-opd' ++ Some PowerPC64 compilers have an option to generate compressed ++ `.opd' entries spaced 16 bytes apart, overlapping the third word, ++ the static chain pointer (unused in C) with the first word of the ++ next entry. This option expands such entries to the full 24 bytes. ++ ++`--no-toc-optimize' ++ PowerPC64 `ld' normally removes unused `.toc' section entries. ++ Such entries are detected by examining relocations that reference ++ the TOC in code sections. A reloc in a deleted code section marks ++ a TOC word as unneeded, while a reloc in a kept code section marks ++ a TOC word as needed. Since the TOC may reference itself, TOC ++ relocs are also examined. TOC words marked as both needed and ++ unneeded will of course be kept. TOC words without any referencing ++ reloc are assumed to be part of a multi-word entry, and are kept or ++ discarded as per the nearest marked preceding word. This works ++ reliably for compiler generated code, but may be incorrect if ++ assembly code is used to insert TOC entries. Use this option to ++ disable the optimization. ++ ++`--no-multi-toc' ++ By default, PowerPC64 GCC generates code for a TOC model where TOC ++ entries are accessed with a 16-bit offset from r2. This limits the ++ total TOC size to 64K. PowerPC64 `ld' extends this limit by ++ grouping code sections such that each group uses less than 64K for ++ its TOC entries, then inserts r2 adjusting stubs between ++ inter-group calls. `ld' does not split apart input sections, so ++ cannot help if a single input file has a `.toc' section that ++ exceeds 64K, most likely from linking multiple files with `ld -r'. ++ Use this option to turn off this feature. ++ ++ ++File: ld.info, Node: TI COFF, Next: WIN32, Prev: PowerPC64 ELF64, Up: Machine Dependent ++ ++4.10 `ld''s Support for Various TI COFF Versions ++=============================================== ++ ++The `--format' switch allows selection of one of the various TI COFF ++versions. The latest of this writing is 2; versions 0 and 1 are also ++supported. The TI COFF versions also vary in header byte-order format; ++`ld' will read any version or byte order, but the output header format ++depends on the default specified by the specific target. ++ ++ ++File: ld.info, Node: WIN32, Next: Xtensa, Prev: TI COFF, Up: Machine Dependent ++ ++4.11 `ld' and WIN32 (cygwin/mingw) ++================================== ++ ++This section describes some of the win32 specific `ld' issues. See ++*Note Command Line Options: Options. for detailed decription of the ++command line options mentioned here. ++ ++_import libraries_ ++ The standard Windows linker creates and uses so-called import ++ libraries, which contains information for linking to dll's. They ++ are regular static archives and are handled as any other static ++ archive. The cygwin and mingw ports of `ld' have specific support ++ for creating such libraries provided with the `--out-implib' ++ command line option. ++ ++_exporting DLL symbols_ ++ The cygwin/mingw `ld' has several ways to export symbols for dll's. ++ ++ _using auto-export functionality_ ++ By default `ld' exports symbols with the auto-export ++ functionality, which is controlled by the following command ++ line options: ++ ++ * -export-all-symbols [This is the default] ++ ++ * -exclude-symbols ++ ++ * -exclude-libs ++ ++ If, however, `--export-all-symbols' is not given explicitly ++ on the command line, then the default auto-export behavior ++ will be _disabled_ if either of the following are true: ++ ++ * A DEF file is used. ++ ++ * Any symbol in any object file was marked with the ++ __declspec(dllexport) attribute. ++ ++ _using a DEF file_ ++ Another way of exporting symbols is using a DEF file. A DEF ++ file is an ASCII file containing definitions of symbols which ++ should be exported when a dll is created. Usually it is ++ named `.def' and is added as any other object file ++ to the linker's command line. The file's name must end in ++ `.def' or `.DEF'. ++ ++ gcc -o .def ++ ++ Using a DEF file turns off the normal auto-export behavior, ++ unless the `--export-all-symbols' option is also used. ++ ++ Here is an example of a DEF file for a shared library called ++ `xyz.dll': ++ ++ LIBRARY "xyz.dll" BASE=0x20000000 ++ ++ EXPORTS ++ foo ++ bar ++ _bar = bar ++ another_foo = abc.dll.afoo ++ var1 DATA ++ ++ This example defines a DLL with a non-default base address ++ and five symbols in the export table. The third exported ++ symbol `_bar' is an alias for the second. The fourth symbol, ++ `another_foo' is resolved by "forwarding" to another module ++ and treating it as an alias for `afoo' exported from the DLL ++ `abc.dll'. The final symbol `var1' is declared to be a data ++ object. ++ ++ The optional `LIBRARY ' command indicates the _internal_ ++ name of the output DLL. If `' does not include a suffix, ++ the default library suffix, `.DLL' is appended. ++ ++ When the .DEF file is used to build an application. rather ++ than a library, the `NAME ' command shoud be used ++ instead of `LIBRARY'. If `' does not include a suffix, ++ the default executable suffix, `.EXE' is appended. ++ ++ With either `LIBRARY ' or `NAME ' the optional ++ specification `BASE = ' may be used to specify a ++ non-default base address for the image. ++ ++ If neither `LIBRARY ' nor `NAME ' is specified, ++ or they specify an empty string, the internal name is the ++ same as the filename specified on the command line. ++ ++ The complete specification of an export symbol is: ++ ++ EXPORTS ++ ( ( ( [ = ] ) ++ | ( = . )) ++ [ @ ] [NONAME] [DATA] [CONSTANT] [PRIVATE] ) * ++ ++ Declares `' as an exported symbol from the DLL, or ++ declares `' as an exported alias for `'; or ++ declares `' as a "forward" alias for the symbol ++ `' in the DLL `'. Optionally, ++ the symbol may be exported by the specified ordinal ++ `' alias. ++ ++ The optional keywords that follow the declaration indicate: ++ ++ `NONAME': Do not put the symbol name in the DLL's export ++ table. It will still be exported by its ordinal alias ++ (either the value specified by the .def specification or, ++ otherwise, the value assigned by the linker). The symbol ++ name, however, does remain visible in the import library (if ++ any), unless `PRIVATE' is also specified. ++ ++ `DATA': The symbol is a variable or object, rather than a ++ function. The import lib will export only an indirect ++ reference to `foo' as the symbol `_imp__foo' (ie, `foo' must ++ be resolved as `*_imp__foo'). ++ ++ `CONSTANT': Like `DATA', but put the undecorated `foo' as ++ well as `_imp__foo' into the import library. Both refer to the ++ read-only import address table's pointer to the variable, not ++ to the variable itself. This can be dangerous. If the user ++ code fails to add the `dllimport' attribute and also fails to ++ explicitly add the extra indirection that the use of the ++ attribute enforces, the application will behave unexpectedly. ++ ++ `PRIVATE': Put the symbol in the DLL's export table, but do ++ not put it into the static import library used to resolve ++ imports at link time. The symbol can still be imported using ++ the `LoadLibrary/GetProcAddress' API at runtime or by by ++ using the GNU ld extension of linking directly to the DLL ++ without an import library. ++ ++ See ld/deffilep.y in the binutils sources for the full ++ specification of other DEF file statements ++ ++ While linking a shared dll, `ld' is able to create a DEF file ++ with the `--output-def ' command line option. ++ ++ _Using decorations_ ++ Another way of marking symbols for export is to modify the ++ source code itself, so that when building the DLL each symbol ++ to be exported is declared as: ++ ++ __declspec(dllexport) int a_variable ++ __declspec(dllexport) void a_function(int with_args) ++ ++ All such symbols will be exported from the DLL. If, however, ++ any of the object files in the DLL contain symbols decorated ++ in this way, then the normal auto-export behavior is ++ disabled, unless the `--export-all-symbols' option is also ++ used. ++ ++ Note that object files that wish to access these symbols must ++ _not_ decorate them with dllexport. Instead, they should use ++ dllimport, instead: ++ ++ __declspec(dllimport) int a_variable ++ __declspec(dllimport) void a_function(int with_args) ++ ++ This complicates the structure of library header files, ++ because when included by the library itself the header must ++ declare the variables and functions as dllexport, but when ++ included by client code the header must declare them as ++ dllimport. There are a number of idioms that are typically ++ used to do this; often client code can omit the __declspec() ++ declaration completely. See `--enable-auto-import' and ++ `automatic data imports' for more imformation. ++ ++_automatic data imports_ ++ The standard Windows dll format supports data imports from dlls ++ only by adding special decorations (dllimport/dllexport), which ++ let the compiler produce specific assembler instructions to deal ++ with this issue. This increases the effort necessary to port ++ existing Un*x code to these platforms, especially for large c++ ++ libraries and applications. The auto-import feature, which was ++ initially provided by Paul Sokolovsky, allows one to omit the ++ decorations to archieve a behavior that conforms to that on ++ POSIX/Un*x platforms. This feature is enabled with the ++ `--enable-auto-import' command-line option, although it is enabled ++ by default on cygwin/mingw. The `--enable-auto-import' option ++ itself now serves mainly to suppress any warnings that are ++ ordinarily emitted when linked objects trigger the feature's use. ++ ++ auto-import of variables does not always work flawlessly without ++ additional assistance. Sometimes, you will see this message ++ ++ "variable '' can't be auto-imported. Please read the ++ documentation for ld's `--enable-auto-import' for details." ++ ++ The `--enable-auto-import' documentation explains why this error ++ occurs, and several methods that can be used to overcome this ++ difficulty. One of these methods is the _runtime pseudo-relocs_ ++ feature, described below. ++ ++ For complex variables imported from DLLs (such as structs or ++ classes), object files typically contain a base address for the ++ variable and an offset (_addend_) within the variable-to specify a ++ particular field or public member, for instance. Unfortunately, ++ the runtime loader used in win32 environments is incapable of ++ fixing these references at runtime without the additional ++ information supplied by dllimport/dllexport decorations. The ++ standard auto-import feature described above is unable to resolve ++ these references. ++ ++ The `--enable-runtime-pseudo-relocs' switch allows these ++ references to be resolved without error, while leaving the task of ++ adjusting the references themselves (with their non-zero addends) ++ to specialized code provided by the runtime environment. Recent ++ versions of the cygwin and mingw environments and compilers ++ provide this runtime support; older versions do not. However, the ++ support is only necessary on the developer's platform; the ++ compiled result will run without error on an older system. ++ ++ `--enable-runtime-pseudo-relocs' is not the default; it must be ++ explicitly enabled as needed. ++ ++_direct linking to a dll_ ++ The cygwin/mingw ports of `ld' support the direct linking, ++ including data symbols, to a dll without the usage of any import ++ libraries. This is much faster and uses much less memory than ++ does the traditional import library method, expecially when ++ linking large libraries or applications. When `ld' creates an ++ import lib, each function or variable exported from the dll is ++ stored in its own bfd, even though a single bfd could contain many ++ exports. The overhead involved in storing, loading, and ++ processing so many bfd's is quite large, and explains the ++ tremendous time, memory, and storage needed to link against ++ particularly large or complex libraries when using import libs. ++ ++ Linking directly to a dll uses no extra command-line switches ++ other than `-L' and `-l', because `ld' already searches for a ++ number of names to match each library. All that is needed from ++ the developer's perspective is an understanding of this search, in ++ order to force ld to select the dll instead of an import library. ++ ++ For instance, when ld is called with the argument `-lxxx' it will ++ attempt to find, in the first directory of its search path, ++ ++ libxxx.dll.a ++ xxx.dll.a ++ libxxx.a ++ cygxxx.dll (*) ++ libxxx.dll ++ xxx.dll ++ ++ before moving on to the next directory in the search path. ++ ++ (*) Actually, this is not `cygxxx.dll' but in fact is ++ `xxx.dll', where `' is set by the `ld' option ++ `--dll-search-prefix='. In the case of cygwin, the ++ standard gcc spec file includes `--dll-search-prefix=cyg', so in ++ effect we actually search for `cygxxx.dll'. ++ ++ Other win32-based unix environments, such as mingw or pw32, may ++ use other `'es, although at present only cygwin makes use ++ of this feature. It was originally intended to help avoid name ++ conflicts among dll's built for the various win32/un*x ++ environments, so that (for example) two versions of a zlib dll ++ could coexist on the same machine. ++ ++ The generic cygwin/mingw path layout uses a `bin' directory for ++ applications and dll's and a `lib' directory for the import ++ libraries (using cygwin nomenclature): ++ ++ bin/ ++ cygxxx.dll ++ lib/ ++ libxxx.dll.a (in case of dll's) ++ libxxx.a (in case of static archive) ++ ++ Linking directly to a dll without using the import library can be ++ done two ways: ++ ++ 1. Use the dll directly by adding the `bin' path to the link line ++ gcc -Wl,-verbose -o a.exe -L../bin/ -lxxx ++ ++ However, as the dll's often have version numbers appended to their ++ names (`cygncurses-5.dll') this will often fail, unless one ++ specifies `-L../bin -lncurses-5' to include the version. Import ++ libs are generally not versioned, and do not have this difficulty. ++ ++ 2. Create a symbolic link from the dll to a file in the `lib' ++ directory according to the above mentioned search pattern. This ++ should be used to avoid unwanted changes in the tools needed for ++ making the app/dll. ++ ++ ln -s bin/cygxxx.dll lib/[cyg|lib|]xxx.dll[.a] ++ ++ Then you can link without any make environment changes. ++ ++ gcc -Wl,-verbose -o a.exe -L../lib/ -lxxx ++ ++ This technique also avoids the version number problems, because ++ the following is perfectly legal ++ ++ bin/ ++ cygxxx-5.dll ++ lib/ ++ libxxx.dll.a -> ../bin/cygxxx-5.dll ++ ++ Linking directly to a dll without using an import lib will work ++ even when auto-import features are exercised, and even when ++ `--enable-runtime-pseudo-relocs' is used. ++ ++ Given the improvements in speed and memory usage, one might ++ justifiably wonder why import libraries are used at all. There ++ are two reasons: ++ ++ 1. Until recently, the link-directly-to-dll functionality did _not_ ++ work with auto-imported data. ++ ++ 2. Sometimes it is necessary to include pure static objects within ++ the import library (which otherwise contains only bfd's for ++ indirection symbols that point to the exports of a dll). Again, ++ the import lib for the cygwin kernel makes use of this ability, ++ and it is not possible to do this without an import lib. ++ ++ So, import libs are not going away. But the ability to replace ++ true import libs with a simple symbolic link to (or a copy of) a ++ dll, in most cases, is a useful addition to the suite of tools ++ binutils makes available to the win32 developer. Given the ++ massive improvements in memory requirements during linking, storage ++ requirements, and linking speed, we expect that many developers ++ will soon begin to use this feature whenever possible. ++ ++_symbol aliasing_ ++ ++ _adding additional names_ ++ Sometimes, it is useful to export symbols with additional ++ names. A symbol `foo' will be exported as `foo', but it can ++ also be exported as `_foo' by using special directives in the ++ DEF file when creating the dll. This will affect also the ++ optional created import library. Consider the following DEF ++ file: ++ ++ LIBRARY "xyz.dll" BASE=0x61000000 ++ ++ EXPORTS ++ foo ++ _foo = foo ++ ++ The line `_foo = foo' maps the symbol `foo' to `_foo'. ++ ++ Another method for creating a symbol alias is to create it in ++ the source code using the "weak" attribute: ++ ++ void foo () { /* Do something. */; } ++ void _foo () __attribute__ ((weak, alias ("foo"))); ++ ++ See the gcc manual for more information about attributes and ++ weak symbols. ++ ++ _renaming symbols_ ++ Sometimes it is useful to rename exports. For instance, the ++ cygwin kernel does this regularly. A symbol `_foo' can be ++ exported as `foo' but not as `_foo' by using special ++ directives in the DEF file. (This will also affect the import ++ library, if it is created). In the following example: ++ ++ LIBRARY "xyz.dll" BASE=0x61000000 ++ ++ EXPORTS ++ _foo = foo ++ ++ The line `_foo = foo' maps the exported symbol `foo' to ++ `_foo'. ++ ++ Note: using a DEF file disables the default auto-export behavior, ++ unless the `--export-all-symbols' command line option is used. ++ If, however, you are trying to rename symbols, then you should list ++ _all_ desired exports in the DEF file, including the symbols that ++ are not being renamed, and do _not_ use the `--export-all-symbols' ++ option. If you list only the renamed symbols in the DEF file, and ++ use `--export-all-symbols' to handle the other symbols, then the ++ both the new names _and_ the original names for the renamed ++ symbols will be exported. In effect, you'd be aliasing those ++ symbols, not renaming them, which is probably not what you wanted. ++ ++_weak externals_ ++ The Windows object format, PE, specifies a form of weak symbols ++ called weak externals. When a weak symbol is linked and the ++ symbol is not defined, the weak symbol becomes an alias for some ++ other symbol. There are three variants of weak externals: ++ * Definition is searched for in objects and libraries, ++ historically called lazy externals. ++ ++ * Definition is searched for only in other objects, not in ++ libraries. This form is not presently implemented. ++ ++ * No search; the symbol is an alias. This form is not presently ++ implemented. ++ As a GNU extension, weak symbols that do not specify an alternate ++ symbol are supported. If the symbol is undefined when linking, ++ the symbol uses a default value. ++ ++ ++File: ld.info, Node: Xtensa, Prev: WIN32, Up: Machine Dependent ++ ++4.12 `ld' and Xtensa Processors ++=============================== ++ ++The default `ld' behavior for Xtensa processors is to interpret ++`SECTIONS' commands so that lists of explicitly named sections in a ++specification with a wildcard file will be interleaved when necessary to ++keep literal pools within the range of PC-relative load offsets. For ++example, with the command: ++ ++ SECTIONS ++ { ++ .text : { ++ *(.literal .text) ++ } ++ } ++ ++`ld' may interleave some of the `.literal' and `.text' sections from ++different object files to ensure that the literal pools are within the ++range of PC-relative load offsets. A valid interleaving might place ++the `.literal' sections from an initial group of files followed by the ++`.text' sections of that group of files. Then, the `.literal' sections ++from the rest of the files and the `.text' sections from the rest of ++the files would follow. ++ ++ Relaxation is enabled by default for the Xtensa version of `ld' and ++provides two important link-time optimizations. The first optimization ++is to combine identical literal values to reduce code size. A redundant ++literal will be removed and all the `L32R' instructions that use it ++will be changed to reference an identical literal, as long as the ++location of the replacement literal is within the offset range of all ++the `L32R' instructions. The second optimization is to remove ++unnecessary overhead from assembler-generated "longcall" sequences of ++`L32R'/`CALLXN' when the target functions are within range of direct ++`CALLN' instructions. ++ ++ For each of these cases where an indirect call sequence can be ++optimized to a direct call, the linker will change the `CALLXN' ++instruction to a `CALLN' instruction, remove the `L32R' instruction, ++and remove the literal referenced by the `L32R' instruction if it is ++not used for anything else. Removing the `L32R' instruction always ++reduces code size but can potentially hurt performance by changing the ++alignment of subsequent branch targets. By default, the linker will ++always preserve alignments, either by switching some instructions ++between 24-bit encodings and the equivalent density instructions or by ++inserting a no-op in place of the `L32R' instruction that was removed. ++If code size is more important than performance, the `--size-opt' ++option can be used to prevent the linker from widening density ++instructions or inserting no-ops, except in a few cases where no-ops ++are required for correctness. ++ ++ The following Xtensa-specific command-line options can be used to ++control the linker: ++ ++`--no-relax' ++ Since the Xtensa version of `ld' enables the `--relax' option by ++ default, the `--no-relax' option is provided to disable relaxation. ++ ++`--size-opt' ++ When optimizing indirect calls to direct calls, optimize for code ++ size more than performance. With this option, the linker will not ++ insert no-ops or widen density instructions to preserve branch ++ target alignment. There may still be some cases where no-ops are ++ required to preserve the correctness of the code. ++ ++ ++File: ld.info, Node: BFD, Next: Reporting Bugs, Prev: Machine Dependent, Up: Top ++ ++5 BFD ++***** ++ ++The linker accesses object and archive files using the BFD libraries. ++These libraries allow the linker to use the same routines to operate on ++object files whatever the object file format. A different object file ++format can be supported simply by creating a new BFD back end and adding ++it to the library. To conserve runtime memory, however, the linker and ++associated tools are usually configured to support only a subset of the ++object file formats available. You can use `objdump -i' (*note ++objdump: (binutils.info)objdump.) to list all the formats available for ++your configuration. ++ ++ As with most implementations, BFD is a compromise between several ++conflicting requirements. The major factor influencing BFD design was ++efficiency: any time used converting between formats is time which ++would not have been spent had BFD not been involved. This is partly ++offset by abstraction payback; since BFD simplifies applications and ++back ends, more time and care may be spent optimizing algorithms for a ++greater speed. ++ ++ One minor artifact of the BFD solution which you should bear in mind ++is the potential for information loss. There are two places where ++useful information can be lost using the BFD mechanism: during ++conversion and during output. *Note BFD information loss::. ++ ++* Menu: ++ ++* BFD outline:: How it works: an outline of BFD ++ ++ ++File: ld.info, Node: BFD outline, Up: BFD ++ ++5.1 How It Works: An Outline of BFD ++=================================== ++ ++When an object file is opened, BFD subroutines automatically determine ++the format of the input object file. They then build a descriptor in ++memory with pointers to routines that will be used to access elements of ++the object file's data structures. ++ ++ As different information from the object files is required, BFD ++reads from different sections of the file and processes them. For ++example, a very common operation for the linker is processing symbol ++tables. Each BFD back end provides a routine for converting between ++the object file's representation of symbols and an internal canonical ++format. When the linker asks for the symbol table of an object file, it ++calls through a memory pointer to the routine from the relevant BFD ++back end which reads and converts the table into a canonical form. The ++linker then operates upon the canonical form. When the link is finished ++and the linker writes the output file's symbol table, another BFD back ++end routine is called to take the newly created symbol table and ++convert it into the chosen output format. ++ ++* Menu: ++ ++* BFD information loss:: Information Loss ++* Canonical format:: The BFD canonical object-file format ++ ++ ++File: ld.info, Node: BFD information loss, Next: Canonical format, Up: BFD outline ++ ++5.1.1 Information Loss ++---------------------- ++ ++_Information can be lost during output._ The output formats supported ++by BFD do not provide identical facilities, and information which can ++be described in one form has nowhere to go in another format. One ++example of this is alignment information in `b.out'. There is nowhere ++in an `a.out' format file to store alignment information on the ++contained data, so when a file is linked from `b.out' and an `a.out' ++image is produced, alignment information will not propagate to the ++output file. (The linker will still use the alignment information ++internally, so the link is performed correctly). ++ ++ Another example is COFF section names. COFF files may contain an ++unlimited number of sections, each one with a textual section name. If ++the target of the link is a format which does not have many sections ++(e.g., `a.out') or has sections without names (e.g., the Oasys format), ++the link cannot be done simply. You can circumvent this problem by ++describing the desired input-to-output section mapping with the linker ++command language. ++ ++ _Information can be lost during canonicalization._ The BFD internal ++canonical form of the external formats is not exhaustive; there are ++structures in input formats for which there is no direct representation ++internally. This means that the BFD back ends cannot maintain all ++possible data richness through the transformation between external to ++internal and back to external formats. ++ ++ This limitation is only a problem when an application reads one ++format and writes another. Each BFD back end is responsible for ++maintaining as much data as possible, and the internal BFD canonical ++form has structures which are opaque to the BFD core, and exported only ++to the back ends. When a file is read in one format, the canonical form ++is generated for BFD and the application. At the same time, the back ++end saves away any information which may otherwise be lost. If the data ++is then written back in the same format, the back end routine will be ++able to use the canonical form provided by the BFD core as well as the ++information it prepared earlier. Since there is a great deal of ++commonality between back ends, there is no information lost when ++linking or copying big endian COFF to little endian COFF, or `a.out' to ++`b.out'. When a mixture of formats is linked, the information is only ++lost from the files whose format differs from the destination. ++ ++ ++File: ld.info, Node: Canonical format, Prev: BFD information loss, Up: BFD outline ++ ++5.1.2 The BFD canonical object-file format ++------------------------------------------ ++ ++The greatest potential for loss of information occurs when there is the ++least overlap between the information provided by the source format, ++that stored by the canonical format, and that needed by the destination ++format. A brief description of the canonical form may help you ++understand which kinds of data you can count on preserving across ++conversions. ++ ++_files_ ++ Information stored on a per-file basis includes target machine ++ architecture, particular implementation format type, a demand ++ pageable bit, and a write protected bit. Information like Unix ++ magic numbers is not stored here--only the magic numbers' meaning, ++ so a `ZMAGIC' file would have both the demand pageable bit and the ++ write protected text bit set. The byte order of the target is ++ stored on a per-file basis, so that big- and little-endian object ++ files may be used with one another. ++ ++_sections_ ++ Each section in the input file contains the name of the section, ++ the section's original address in the object file, size and ++ alignment information, various flags, and pointers into other BFD ++ data structures. ++ ++_symbols_ ++ Each symbol contains a pointer to the information for the object ++ file which originally defined it, its name, its value, and various ++ flag bits. When a BFD back end reads in a symbol table, it ++ relocates all symbols to make them relative to the base of the ++ section where they were defined. Doing this ensures that each ++ symbol points to its containing section. Each symbol also has a ++ varying amount of hidden private data for the BFD back end. Since ++ the symbol points to the original file, the private data format ++ for that symbol is accessible. `ld' can operate on a collection ++ of symbols of wildly different formats without problems. ++ ++ Normal global and simple local symbols are maintained on output, ++ so an output file (no matter its format) will retain symbols ++ pointing to functions and to global, static, and common variables. ++ Some symbol information is not worth retaining; in `a.out', type ++ information is stored in the symbol table as long symbol names. ++ This information would be useless to most COFF debuggers; the ++ linker has command line switches to allow users to throw it away. ++ ++ There is one word of type information within the symbol, so if the ++ format supports symbol type information within symbols (for ++ example, COFF, IEEE, Oasys) and the type is simple enough to fit ++ within one word (nearly everything but aggregates), the ++ information will be preserved. ++ ++_relocation level_ ++ Each canonical BFD relocation record contains a pointer to the ++ symbol to relocate to, the offset of the data to relocate, the ++ section the data is in, and a pointer to a relocation type ++ descriptor. Relocation is performed by passing messages through ++ the relocation type descriptor and the symbol pointer. Therefore, ++ relocations can be performed on output data using a relocation ++ method that is only available in one of the input formats. For ++ instance, Oasys provides a byte relocation format. A relocation ++ record requesting this relocation type would point indirectly to a ++ routine to perform this, so the relocation may be performed on a ++ byte being written to a 68k COFF file, even though 68k COFF has no ++ such relocation type. ++ ++_line numbers_ ++ Object formats can contain, for debugging purposes, some form of ++ mapping between symbols, source line numbers, and addresses in the ++ output file. These addresses have to be relocated along with the ++ symbol information. Each symbol with an associated list of line ++ number records points to the first record of the list. The head ++ of a line number list consists of a pointer to the symbol, which ++ allows finding out the address of the function whose line number ++ is being described. The rest of the list is made up of pairs: ++ offsets into the section and line numbers. Any format which can ++ simply derive this information can pass it successfully between ++ formats (COFF, IEEE and Oasys). ++ ++ ++File: ld.info, Node: Reporting Bugs, Next: MRI, Prev: BFD, Up: Top ++ ++6 Reporting Bugs ++**************** ++ ++Your bug reports play an essential role in making `ld' reliable. ++ ++ Reporting a bug may help you by bringing a solution to your problem, ++or it may not. But in any case the principal function of a bug report ++is to help the entire community by making the next version of `ld' work ++better. Bug reports are your contribution to the maintenance of `ld'. ++ ++ In order for a bug report to serve its purpose, you must include the ++information that enables us to fix the bug. ++ ++* Menu: ++ ++* Bug Criteria:: Have you found a bug? ++* Bug Reporting:: How to report bugs ++ ++ ++File: ld.info, Node: Bug Criteria, Next: Bug Reporting, Up: Reporting Bugs ++ ++6.1 Have You Found a Bug? ++========================= ++ ++If you are not sure whether you have found a bug, here are some ++guidelines: ++ ++ * If the linker gets a fatal signal, for any input whatever, that is ++ a `ld' bug. Reliable linkers never crash. ++ ++ * If `ld' produces an error message for valid input, that is a bug. ++ ++ * If `ld' does not produce an error message for invalid input, that ++ may be a bug. In the general case, the linker can not verify that ++ object files are correct. ++ ++ * If you are an experienced user of linkers, your suggestions for ++ improvement of `ld' are welcome in any case. ++ ++ ++File: ld.info, Node: Bug Reporting, Prev: Bug Criteria, Up: Reporting Bugs ++ ++6.2 How to Report Bugs ++====================== ++ ++A number of companies and individuals offer support for GNU products. ++If you obtained `ld' from a support organization, we recommend you ++contact that organization first. ++ ++ You can find contact information for many support companies and ++individuals in the file `etc/SERVICE' in the GNU Emacs distribution. ++ ++ Otherwise, send bug reports for `ld' to `bug-binutils@gnu.org'. ++ ++ The fundamental principle of reporting bugs usefully is this: ++*report all the facts*. If you are not sure whether to state a fact or ++leave it out, state it! ++ ++ Often people omit facts because they think they know what causes the ++problem and assume that some details do not matter. Thus, you might ++assume that the name of a symbol you use in an example does not matter. ++Well, probably it does not, but one cannot be sure. Perhaps the bug ++is a stray memory reference which happens to fetch from the location ++where that name is stored in memory; perhaps, if the name were ++different, the contents of that location would fool the linker into ++doing the right thing despite the bug. Play it safe and give a ++specific, complete example. That is the easiest thing for you to do, ++and the most helpful. ++ ++ Keep in mind that the purpose of a bug report is to enable us to fix ++the bug if it is new to us. Therefore, always write your bug reports ++on the assumption that the bug has not been reported previously. ++ ++ Sometimes people give a few sketchy facts and ask, "Does this ring a ++bell?" This cannot help us fix a bug, so it is basically useless. We ++respond by asking for enough details to enable us to investigate. You ++might as well expedite matters by sending them to begin with. ++ ++ To enable us to fix the bug, you should include all these things: ++ ++ * The version of `ld'. `ld' announces it if you start it with the ++ `--version' argument. ++ ++ Without this, we will not know whether there is any point in ++ looking for the bug in the current version of `ld'. ++ ++ * Any patches you may have applied to the `ld' source, including any ++ patches made to the `BFD' library. ++ ++ * The type of machine you are using, and the operating system name ++ and version number. ++ ++ * What compiler (and its version) was used to compile `ld'--e.g. ++ "`gcc-2.7'". ++ ++ * The command arguments you gave the linker to link your example and ++ observe the bug. To guarantee you will not omit something ++ important, list them all. A copy of the Makefile (or the output ++ from make) is sufficient. ++ ++ If we were to try to guess the arguments, we would probably guess ++ wrong and then we might not encounter the bug. ++ ++ * A complete input file, or set of input files, that will reproduce ++ the bug. It is generally most helpful to send the actual object ++ files provided that they are reasonably small. Say no more than ++ 10K. For bigger files you can either make them available by FTP ++ or HTTP or else state that you are willing to send the object ++ file(s) to whomever requests them. (Note - your email will be ++ going to a mailing list, so we do not want to clog it up with ++ large attachments). But small attachments are best. ++ ++ If the source files were assembled using `gas' or compiled using ++ `gcc', then it may be OK to send the source files rather than the ++ object files. In this case, be sure to say exactly what version of ++ `gas' or `gcc' was used to produce the object files. Also say how ++ `gas' or `gcc' were configured. ++ ++ * A description of what behavior you observe that you believe is ++ incorrect. For example, "It gets a fatal signal." ++ ++ Of course, if the bug is that `ld' gets a fatal signal, then we ++ will certainly notice it. But if the bug is incorrect output, we ++ might not notice unless it is glaringly wrong. You might as well ++ not give us a chance to make a mistake. ++ ++ Even if the problem you experience is a fatal signal, you should ++ still say so explicitly. Suppose something strange is going on, ++ such as, your copy of `ld' is out of synch, or you have ++ encountered a bug in the C library on your system. (This has ++ happened!) Your copy might crash and ours would not. If you told ++ us to expect a crash, then when ours fails to crash, we would know ++ that the bug was not happening for us. If you had not told us to ++ expect a crash, then we would not be able to draw any conclusion ++ from our observations. ++ ++ * If you wish to suggest changes to the `ld' source, send us context ++ diffs, as generated by `diff' with the `-u', `-c', or `-p' option. ++ Always send diffs from the old file to the new file. If you even ++ discuss something in the `ld' source, refer to it by context, not ++ by line number. ++ ++ The line numbers in our development sources will not match those ++ in your sources. Your line numbers would convey no useful ++ information to us. ++ ++ Here are some things that are not necessary: ++ ++ * A description of the envelope of the bug. ++ ++ Often people who encounter a bug spend a lot of time investigating ++ which changes to the input file will make the bug go away and which ++ changes will not affect it. ++ ++ This is often time consuming and not very useful, because the way ++ we will find the bug is by running a single example under the ++ debugger with breakpoints, not by pure deduction from a series of ++ examples. We recommend that you save your time for something else. ++ ++ Of course, if you can find a simpler example to report _instead_ ++ of the original one, that is a convenience for us. Errors in the ++ output will be easier to spot, running under the debugger will take ++ less time, and so on. ++ ++ However, simplification is not vital; if you do not want to do ++ this, report the bug anyway and send us the entire test case you ++ used. ++ ++ * A patch for the bug. ++ ++ A patch for the bug does help us if it is a good one. But do not ++ omit the necessary information, such as the test case, on the ++ assumption that a patch is all we need. We might see problems ++ with your patch and decide to fix the problem another way, or we ++ might not understand it at all. ++ ++ Sometimes with a program as complicated as `ld' it is very hard to ++ construct an example that will make the program follow a certain ++ path through the code. If you do not send us the example, we will ++ not be able to construct one, so we will not be able to verify ++ that the bug is fixed. ++ ++ And if we cannot understand what bug you are trying to fix, or why ++ your patch should be an improvement, we will not install it. A ++ test case will help us to understand. ++ ++ * A guess about what the bug is or what it depends on. ++ ++ Such guesses are usually wrong. Even we cannot guess right about ++ such things without first using the debugger to find the facts. ++ ++ ++File: ld.info, Node: MRI, Next: GNU Free Documentation License, Prev: Reporting Bugs, Up: Top ++ ++Appendix A MRI Compatible Script Files ++************************************** ++ ++To aid users making the transition to GNU `ld' from the MRI linker, ++`ld' can use MRI compatible linker scripts as an alternative to the ++more general-purpose linker scripting language described in *Note ++Scripts::. MRI compatible linker scripts have a much simpler command ++set than the scripting language otherwise used with `ld'. GNU `ld' ++supports the most commonly used MRI linker commands; these commands are ++described here. ++ ++ In general, MRI scripts aren't of much use with the `a.out' object ++file format, since it only has three sections and MRI scripts lack some ++features to make use of them. ++ ++ You can specify a file containing an MRI-compatible script using the ++`-c' command-line option. ++ ++ Each command in an MRI-compatible script occupies its own line; each ++command line starts with the keyword that identifies the command (though ++blank lines are also allowed for punctuation). If a line of an ++MRI-compatible script begins with an unrecognized keyword, `ld' issues ++a warning message, but continues processing the script. ++ ++ Lines beginning with `*' are comments. ++ ++ You can write these commands using all upper-case letters, or all ++lower case; for example, `chip' is the same as `CHIP'. The following ++list shows only the upper-case form of each command. ++ ++`ABSOLUTE SECNAME' ++`ABSOLUTE SECNAME, SECNAME, ... SECNAME' ++ Normally, `ld' includes in the output file all sections from all ++ the input files. However, in an MRI-compatible script, you can ++ use the `ABSOLUTE' command to restrict the sections that will be ++ present in your output program. If the `ABSOLUTE' command is used ++ at all in a script, then only the sections named explicitly in ++ `ABSOLUTE' commands will appear in the linker output. You can ++ still use other input sections (whatever you select on the command ++ line, or using `LOAD') to resolve addresses in the output file. ++ ++`ALIAS OUT-SECNAME, IN-SECNAME' ++ Use this command to place the data from input section IN-SECNAME ++ in a section called OUT-SECNAME in the linker output file. ++ ++ IN-SECNAME may be an integer. ++ ++`ALIGN SECNAME = EXPRESSION' ++ Align the section called SECNAME to EXPRESSION. The EXPRESSION ++ should be a power of two. ++ ++`BASE EXPRESSION' ++ Use the value of EXPRESSION as the lowest address (other than ++ absolute addresses) in the output file. ++ ++`CHIP EXPRESSION' ++`CHIP EXPRESSION, EXPRESSION' ++ This command does nothing; it is accepted only for compatibility. ++ ++`END' ++ This command does nothing whatever; it's only accepted for ++ compatibility. ++ ++`FORMAT OUTPUT-FORMAT' ++ Similar to the `OUTPUT_FORMAT' command in the more general linker ++ language, but restricted to one of these output formats: ++ ++ 1. S-records, if OUTPUT-FORMAT is `S' ++ ++ 2. IEEE, if OUTPUT-FORMAT is `IEEE' ++ ++ 3. COFF (the `coff-m68k' variant in BFD), if OUTPUT-FORMAT is ++ `COFF' ++ ++`LIST ANYTHING...' ++ Print (to the standard output file) a link map, as produced by the ++ `ld' command-line option `-M'. ++ ++ The keyword `LIST' may be followed by anything on the same line, ++ with no change in its effect. ++ ++`LOAD FILENAME' ++`LOAD FILENAME, FILENAME, ... FILENAME' ++ Include one or more object file FILENAME in the link; this has the ++ same effect as specifying FILENAME directly on the `ld' command ++ line. ++ ++`NAME OUTPUT-NAME' ++ OUTPUT-NAME is the name for the program produced by `ld'; the ++ MRI-compatible command `NAME' is equivalent to the command-line ++ option `-o' or the general script language command `OUTPUT'. ++ ++`ORDER SECNAME, SECNAME, ... SECNAME' ++`ORDER SECNAME SECNAME SECNAME' ++ Normally, `ld' orders the sections in its output file in the order ++ in which they first appear in the input files. In an ++ MRI-compatible script, you can override this ordering with the ++ `ORDER' command. The sections you list with `ORDER' will appear ++ first in your output file, in the order specified. ++ ++`PUBLIC NAME=EXPRESSION' ++`PUBLIC NAME,EXPRESSION' ++`PUBLIC NAME EXPRESSION' ++ Supply a value (EXPRESSION) for external symbol NAME used in the ++ linker input files. ++ ++`SECT SECNAME, EXPRESSION' ++`SECT SECNAME=EXPRESSION' ++`SECT SECNAME EXPRESSION' ++ You can use any of these three forms of the `SECT' command to ++ specify the start address (EXPRESSION) for section SECNAME. If ++ you have more than one `SECT' statement for the same SECNAME, only ++ the _first_ sets the start address. ++ ++ ++File: ld.info, Node: GNU Free Documentation License, Next: Index, Prev: MRI, Up: Top ++ ++Appendix B GNU Free Documentation License ++***************************************** ++ ++ Version 1.1, March 2000 ++ ++ Copyright (C) 2000, 2003 Free Software Foundation, Inc. ++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ Everyone is permitted to copy and distribute verbatim copies ++ of this license document, but changing it is not allowed. ++ ++ ++ 0. PREAMBLE ++ ++ The purpose of this License is to make a manual, textbook, or other ++ written document "free" in the sense of freedom: to assure everyone ++ the effective freedom to copy and redistribute it, with or without ++ modifying it, either commercially or noncommercially. Secondarily, ++ this License preserves for the author and publisher a way to get ++ credit for their work, while not being considered responsible for ++ modifications made by others. ++ ++ This License is a kind of "copyleft", which means that derivative ++ works of the document must themselves be free in the same sense. ++ It complements the GNU General Public License, which is a copyleft ++ license designed for free software. ++ ++ We have designed this License in order to use it for manuals for ++ free software, because free software needs free documentation: a ++ free program should come with manuals providing the same freedoms ++ that the software does. But this License is not limited to ++ software manuals; it can be used for any textual work, regardless ++ of subject matter or whether it is published as a printed book. ++ We recommend this License principally for works whose purpose is ++ instruction or reference. ++ ++ ++ 1. APPLICABILITY AND DEFINITIONS ++ ++ This License applies to any manual or other work that contains a ++ notice placed by the copyright holder saying it can be distributed ++ under the terms of this License. The "Document", below, refers to ++ any such manual or work. Any member of the public is a licensee, ++ and is addressed as "you." ++ ++ A "Modified Version" of the Document means any work containing the ++ Document or a portion of it, either copied verbatim, or with ++ modifications and/or translated into another language. ++ ++ A "Secondary Section" is a named appendix or a front-matter ++ section of the Document that deals exclusively with the ++ relationship of the publishers or authors of the Document to the ++ Document's overall subject (or to related matters) and contains ++ nothing that could fall directly within that overall subject. ++ (For example, if the Document is in part a textbook of ++ mathematics, a Secondary Section may not explain any mathematics.) ++ The relationship could be a matter of historical connection with ++ the subject or with related matters, or of legal, commercial, ++ philosophical, ethical or political position regarding them. ++ ++ The "Invariant Sections" are certain Secondary Sections whose ++ titles are designated, as being those of Invariant Sections, in ++ the notice that says that the Document is released under this ++ License. ++ ++ The "Cover Texts" are certain short passages of text that are ++ listed, as Front-Cover Texts or Back-Cover Texts, in the notice ++ that says that the Document is released under this License. ++ ++ A "Transparent" copy of the Document means a machine-readable copy, ++ represented in a format whose specification is available to the ++ general public, whose contents can be viewed and edited directly ++ and straightforwardly with generic text editors or (for images ++ composed of pixels) generic paint programs or (for drawings) some ++ widely available drawing editor, and that is suitable for input to ++ text formatters or for automatic translation to a variety of ++ formats suitable for input to text formatters. A copy made in an ++ otherwise Transparent file format whose markup has been designed ++ to thwart or discourage subsequent modification by readers is not ++ Transparent. A copy that is not "Transparent" is called "Opaque." ++ ++ Examples of suitable formats for Transparent copies include plain ++ ASCII without markup, Texinfo input format, LaTeX input format, ++ SGML or XML using a publicly available DTD, and ++ standard-conforming simple HTML designed for human modification. ++ Opaque formats include PostScript, PDF, proprietary formats that ++ can be read and edited only by proprietary word processors, SGML ++ or XML for which the DTD and/or processing tools are not generally ++ available, and the machine-generated HTML produced by some word ++ processors for output purposes only. ++ ++ The "Title Page" means, for a printed book, the title page itself, ++ plus such following pages as are needed to hold, legibly, the ++ material this License requires to appear in the title page. For ++ works in formats which do not have any title page as such, "Title ++ Page" means the text near the most prominent appearance of the ++ work's title, preceding the beginning of the body of the text. ++ ++ 2. VERBATIM COPYING ++ ++ You may copy and distribute the Document in any medium, either ++ commercially or noncommercially, provided that this License, the ++ copyright notices, and the license notice saying this License ++ applies to the Document are reproduced in all copies, and that you ++ add no other conditions whatsoever to those of this License. You ++ may not use technical measures to obstruct or control the reading ++ or further copying of the copies you make or distribute. However, ++ you may accept compensation in exchange for copies. If you ++ distribute a large enough number of copies you must also follow ++ the conditions in section 3. ++ ++ You may also lend copies, under the same conditions stated above, ++ and you may publicly display copies. ++ ++ 3. COPYING IN QUANTITY ++ ++ If you publish printed copies of the Document numbering more than ++ 100, and the Document's license notice requires Cover Texts, you ++ must enclose the copies in covers that carry, clearly and legibly, ++ all these Cover Texts: Front-Cover Texts on the front cover, and ++ Back-Cover Texts on the back cover. Both covers must also clearly ++ and legibly identify you as the publisher of these copies. The ++ front cover must present the full title with all words of the ++ title equally prominent and visible. You may add other material ++ on the covers in addition. Copying with changes limited to the ++ covers, as long as they preserve the title of the Document and ++ satisfy these conditions, can be treated as verbatim copying in ++ other respects. ++ ++ If the required texts for either cover are too voluminous to fit ++ legibly, you should put the first ones listed (as many as fit ++ reasonably) on the actual cover, and continue the rest onto ++ adjacent pages. ++ ++ If you publish or distribute Opaque copies of the Document ++ numbering more than 100, you must either include a ++ machine-readable Transparent copy along with each Opaque copy, or ++ state in or with each Opaque copy a publicly-accessible ++ computer-network location containing a complete Transparent copy ++ of the Document, free of added material, which the general ++ network-using public has access to download anonymously at no ++ charge using public-standard network protocols. If you use the ++ latter option, you must take reasonably prudent steps, when you ++ begin distribution of Opaque copies in quantity, to ensure that ++ this Transparent copy will remain thus accessible at the stated ++ location until at least one year after the last time you ++ distribute an Opaque copy (directly or through your agents or ++ retailers) of that edition to the public. ++ ++ It is requested, but not required, that you contact the authors of ++ the Document well before redistributing any large number of ++ copies, to give them a chance to provide you with an updated ++ version of the Document. ++ ++ 4. MODIFICATIONS ++ ++ You may copy and distribute a Modified Version of the Document ++ under the conditions of sections 2 and 3 above, provided that you ++ release the Modified Version under precisely this License, with ++ the Modified Version filling the role of the Document, thus ++ licensing distribution and modification of the Modified Version to ++ whoever possesses a copy of it. In addition, you must do these ++ things in the Modified Version: ++ ++ A. Use in the Title Page (and on the covers, if any) a title ++ distinct from that of the Document, and from those of previous ++ versions (which should, if there were any, be listed in the ++ History section of the Document). You may use the same title ++ as a previous version if the original publisher of that version ++ gives permission. ++ B. List on the Title Page, as authors, one or more persons or ++ entities responsible for authorship of the modifications in the ++ Modified Version, together with at least five of the principal ++ authors of the Document (all of its principal authors, if it ++ has less than five). ++ C. State on the Title page the name of the publisher of the ++ Modified Version, as the publisher. ++ D. Preserve all the copyright notices of the Document. ++ E. Add an appropriate copyright notice for your modifications ++ adjacent to the other copyright notices. ++ F. Include, immediately after the copyright notices, a license ++ notice giving the public permission to use the Modified Version ++ under the terms of this License, in the form shown in the ++ Addendum below. ++ G. Preserve in that license notice the full lists of Invariant ++ Sections and required Cover Texts given in the Document's ++ license notice. ++ H. Include an unaltered copy of this License. ++ I. Preserve the section entitled "History", and its title, and add ++ to it an item stating at least the title, year, new authors, and ++ publisher of the Modified Version as given on the Title Page. ++ If there is no section entitled "History" in the Document, ++ create one stating the title, year, authors, and publisher of ++ the Document as given on its Title Page, then add an item ++ describing the Modified Version as stated in the previous ++ sentence. ++ J. Preserve the network location, if any, given in the Document for ++ public access to a Transparent copy of the Document, and ++ likewise the network locations given in the Document for ++ previous versions it was based on. These may be placed in the ++ "History" section. You may omit a network location for a work ++ that was published at least four years before the Document ++ itself, or if the original publisher of the version it refers ++ to gives permission. ++ K. In any section entitled "Acknowledgements" or "Dedications", ++ preserve the section's title, and preserve in the section all the ++ substance and tone of each of the contributor acknowledgements ++ and/or dedications given therein. ++ L. Preserve all the Invariant Sections of the Document, ++ unaltered in their text and in their titles. Section numbers ++ or the equivalent are not considered part of the section titles. ++ M. Delete any section entitled "Endorsements." Such a section ++ may not be included in the Modified Version. ++ N. Do not retitle any existing section as "Endorsements" or to ++ conflict in title with any Invariant Section. ++ ++ If the Modified Version includes new front-matter sections or ++ appendices that qualify as Secondary Sections and contain no ++ material copied from the Document, you may at your option ++ designate some or all of these sections as invariant. To do this, ++ add their titles to the list of Invariant Sections in the Modified ++ Version's license notice. These titles must be distinct from any ++ other section titles. ++ ++ You may add a section entitled "Endorsements", provided it contains ++ nothing but endorsements of your Modified Version by various ++ parties-for example, statements of peer review or that the text has ++ been approved by an organization as the authoritative definition ++ of a standard. ++ ++ You may add a passage of up to five words as a Front-Cover Text, ++ and a passage of up to 25 words as a Back-Cover Text, to the end ++ of the list of Cover Texts in the Modified Version. Only one ++ passage of Front-Cover Text and one of Back-Cover Text may be ++ added by (or through arrangements made by) any one entity. If the ++ Document already includes a cover text for the same cover, ++ previously added by you or by arrangement made by the same entity ++ you are acting on behalf of, you may not add another; but you may ++ replace the old one, on explicit permission from the previous ++ publisher that added the old one. ++ ++ The author(s) and publisher(s) of the Document do not by this ++ License give permission to use their names for publicity for or to ++ assert or imply endorsement of any Modified Version. ++ ++ 5. COMBINING DOCUMENTS ++ ++ You may combine the Document with other documents released under ++ this License, under the terms defined in section 4 above for ++ modified versions, provided that you include in the combination ++ all of the Invariant Sections of all of the original documents, ++ unmodified, and list them all as Invariant Sections of your ++ combined work in its license notice. ++ ++ The combined work need only contain one copy of this License, and ++ multiple identical Invariant Sections may be replaced with a single ++ copy. If there are multiple Invariant Sections with the same name ++ but different contents, make the title of each such section unique ++ by adding at the end of it, in parentheses, the name of the ++ original author or publisher of that section if known, or else a ++ unique number. Make the same adjustment to the section titles in ++ the list of Invariant Sections in the license notice of the ++ combined work. ++ ++ In the combination, you must combine any sections entitled ++ "History" in the various original documents, forming one section ++ entitled "History"; likewise combine any sections entitled ++ "Acknowledgements", and any sections entitled "Dedications." You ++ must delete all sections entitled "Endorsements." ++ ++ 6. COLLECTIONS OF DOCUMENTS ++ ++ You may make a collection consisting of the Document and other ++ documents released under this License, and replace the individual ++ copies of this License in the various documents with a single copy ++ that is included in the collection, provided that you follow the ++ rules of this License for verbatim copying of each of the ++ documents in all other respects. ++ ++ You may extract a single document from such a collection, and ++ distribute it individually under this License, provided you insert ++ a copy of this License into the extracted document, and follow ++ this License in all other respects regarding verbatim copying of ++ that document. ++ ++ 7. AGGREGATION WITH INDEPENDENT WORKS ++ ++ A compilation of the Document or its derivatives with other ++ separate and independent documents or works, in or on a volume of ++ a storage or distribution medium, does not as a whole count as a ++ Modified Version of the Document, provided no compilation ++ copyright is claimed for the compilation. Such a compilation is ++ called an "aggregate", and this License does not apply to the ++ other self-contained works thus compiled with the Document, on ++ account of their being thus compiled, if they are not themselves ++ derivative works of the Document. ++ ++ If the Cover Text requirement of section 3 is applicable to these ++ copies of the Document, then if the Document is less than one ++ quarter of the entire aggregate, the Document's Cover Texts may be ++ placed on covers that surround only the Document within the ++ aggregate. Otherwise they must appear on covers around the whole ++ aggregate. ++ ++ 8. TRANSLATION ++ ++ Translation is considered a kind of modification, so you may ++ distribute translations of the Document under the terms of section ++ 4. Replacing Invariant Sections with translations requires special ++ permission from their copyright holders, but you may include ++ translations of some or all Invariant Sections in addition to the ++ original versions of these Invariant Sections. You may include a ++ translation of this License provided that you also include the ++ original English version of this License. In case of a ++ disagreement between the translation and the original English ++ version of this License, the original English version will prevail. ++ ++ 9. TERMINATION ++ ++ You may not copy, modify, sublicense, or distribute the Document ++ except as expressly provided for under this License. Any other ++ attempt to copy, modify, sublicense or distribute the Document is ++ void, and will automatically terminate your rights under this ++ License. However, parties who have received copies, or rights, ++ from you under this License will not have their licenses ++ terminated so long as such parties remain in full compliance. ++ ++ 10. FUTURE REVISIONS OF THIS LICENSE ++ ++ The Free Software Foundation may publish new, revised versions of ++ the GNU Free Documentation License from time to time. Such new ++ versions will be similar in spirit to the present version, but may ++ differ in detail to address new problems or concerns. See ++ http://www.gnu.org/copyleft/. ++ ++ Each version of the License is given a distinguishing version ++ number. If the Document specifies that a particular numbered ++ version of this License "or any later version" applies to it, you ++ have the option of following the terms and conditions either of ++ that specified version or of any later version that has been ++ published (not as a draft) by the Free Software Foundation. If ++ the Document does not specify a version number of this License, ++ you may choose any version ever published (not as a draft) by the ++ Free Software Foundation. ++ ++ ++ADDENDUM: How to use this License for your documents ++==================================================== ++ ++To use this License in a document you have written, include a copy of ++the License in the document and put the following copyright and license ++notices just after the title page: ++ ++ Copyright (C) YEAR YOUR NAME. ++ Permission is granted to copy, distribute and/or modify this document ++ under the terms of the GNU Free Documentation License, Version 1.1 ++ or any later version published by the Free Software Foundation; ++ with the Invariant Sections being LIST THEIR TITLES, with the ++ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. ++ A copy of the license is included in the section entitled "GNU ++ Free Documentation License." ++ ++ If you have no Invariant Sections, write "with no Invariant Sections" ++instead of saying which ones are invariant. If you have no Front-Cover ++Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being ++LIST"; likewise for Back-Cover Texts. ++ ++ If your document contains nontrivial examples of program code, we ++recommend releasing these examples in parallel under your choice of ++free software license, such as the GNU General Public License, to ++permit their use in free software. ++ ++ ++File: ld.info, Node: Index, Prev: GNU Free Documentation License, Up: Top ++ ++Index ++***** ++ ++[index] ++* Menu: ++ ++* ": Symbols. (line 6) ++* -(: Options. (line 609) ++* --accept-unknown-input-arch: Options. (line 627) ++* --add-needed: Options. (line 649) ++* --add-stdcall-alias: Options. (line 1343) ++* --allow-multiple-definition: Options. (line 819) ++* --allow-shlib-undefined: Options. (line 825) ++* --architecture=ARCH: Options. (line 104) ++* --as-needed: Options. (line 637) ++* --auxiliary: Options. (line 205) ++* --base-file: Options. (line 1348) ++* --be8: ARM. (line 23) ++* --bss-plt: PowerPC ELF32. (line 13) ++* --check-sections: Options. (line 701) ++* --cref: Options. (line 711) ++* --default-imported-symver: Options. (line 853) ++* --default-symver: Options. (line 849) ++* --defsym SYMBOL=EXP: Options. (line 739) ++* --demangle[=STYLE]: Options. (line 752) ++* --direct-data: AVR32. (line 6) ++* --disable-auto-image-base: Options. (line 1495) ++* --disable-auto-import: Options. (line 1624) ++* --disable-new-dtags: Options. (line 1295) ++* --disable-runtime-pseudo-reloc: Options. (line 1637) ++* --disable-stdcall-fixup: Options. (line 1358) ++* --discard-all: Options. (line 513) ++* --discard-locals: Options. (line 517) ++* --dll: Options. (line 1353) ++* --dll-search-prefix: Options. (line 1501) ++* --dotsyms: PowerPC64 ELF64. (line 33) ++* --dynamic-linker FILE: Options. (line 765) ++* --eh-frame-hdr: Options. (line 1291) ++* --emit-relocs: Options. (line 415) ++* --emit-stub-syms <1>: PowerPC64 ELF64. (line 29) ++* --emit-stub-syms: PowerPC ELF32. (line 37) ++* --enable-auto-image-base: Options. (line 1487) ++* --enable-auto-import: Options. (line 1510) ++* --enable-extra-pe-debug: Options. (line 1642) ++* --enable-new-dtags: Options. (line 1295) ++* --enable-runtime-pseudo-reloc: Options. (line 1629) ++* --enable-stdcall-fixup: Options. (line 1358) ++* --entry=ENTRY: Options. (line 158) ++* --error-unresolved-symbols: Options. (line 1244) ++* --exclude-libs: Options. (line 168) ++* --exclude-symbols: Options. (line 1400) ++* --export-all-symbols: Options. (line 1376) ++* --export-dynamic: Options. (line 179) ++* --fatal-warnings: Options. (line 771) ++* --file-alignment: Options. (line 1406) ++* --filter: Options. (line 226) ++* --fix-v4bx: ARM. (line 44) ++* --force-dynamic: Options. (line 424) ++* --force-exe-suffix: Options. (line 774) ++* --format=FORMAT: Options. (line 115) ++* --format=VERSION: TI COFF. (line 6) ++* --gc-sections: Options. (line 784) ++* --gpsize: Options. (line 259) ++* --hash-size=NUMBER: Options. (line 1304) ++* --heap: Options. (line 1412) ++* --help: Options. (line 792) ++* --image-base: Options. (line 1419) ++* --just-symbols=FILE: Options. (line 447) ++* --kill-at: Options. (line 1428) ++* --large-address-aware: Options. (line 1433) ++* --library-path=DIR: Options. (line 315) ++* --library=ARCHIVE: Options. (line 285) ++* --major-image-version: Options. (line 1442) ++* --major-os-version: Options. (line 1447) ++* --major-subsystem-version: Options. (line 1451) ++* --minor-image-version: Options. (line 1456) ++* --minor-os-version: Options. (line 1461) ++* --minor-subsystem-version: Options. (line 1465) ++* --mri-script=MRI-CMDFILE: Options. (line 139) ++* --multi-subspace: HPPA ELF32. (line 6) ++* --nmagic: Options. (line 384) ++* --no-accept-unknown-input-arch: Options. (line 627) ++* --no-add-needed: Options. (line 649) ++* --no-allow-shlib-undefined: Options. (line 825) ++* --no-as-needed: Options. (line 637) ++* --no-check-sections: Options. (line 701) ++* --no-define-common: Options. (line 723) ++* --no-demangle: Options. (line 752) ++* --no-direct-data: AVR32. (line 6) ++* --no-dotsyms: PowerPC64 ELF64. (line 33) ++* --no-gc-sections: Options. (line 784) ++* --no-keep-memory: Options. (line 804) ++* --no-multi-toc: PowerPC64 ELF64. (line 74) ++* --no-omagic: Options. (line 398) ++* --no-opd-optimize: PowerPC64 ELF64. (line 48) ++* --no-relax: Xtensa. (line 56) ++* --no-tls-optimize <1>: PowerPC64 ELF64. (line 43) ++* --no-tls-optimize: PowerPC ELF32. (line 41) ++* --no-toc-optimize: PowerPC64 ELF64. (line 60) ++* --no-undefined: Options. (line 811) ++* --no-undefined-version: Options. (line 844) ++* --no-warn-mismatch: Options. (line 857) ++* --no-whole-archive: Options. (line 866) ++* --noinhibit-exec: Options. (line 870) ++* --non-overlapping-opd: PowerPC64 ELF64. (line 54) ++* --oformat: Options. (line 882) ++* --omagic: Options. (line 389) ++* --out-implib: Options. (line 1478) ++* --output-def: Options. (line 1470) ++* --output=OUTPUT: Options. (line 404) ++* --pic-executable: Options. (line 895) ++* --print-map: Options. (line 347) ++* --reduce-memory-overheads: Options. (line 1312) ++* --relax: Options. (line 911) ++* --relax on i960: i960. (line 31) ++* --relax on PowerPC: PowerPC ELF32. (line 6) ++* --relax on Xtensa: Xtensa. (line 27) ++* --relocatable: Options. (line 428) ++* --script=SCRIPT: Options. (line 471) ++* --sdata-got: PowerPC ELF32. (line 23) ++* --section-alignment: Options. (line 1647) ++* --section-start SECTIONNAME=ORG: Options. (line 1081) ++* --sort-common: Options. (line 1028) ++* --sort-section alignment: Options. (line 1038) ++* --sort-section name: Options. (line 1034) ++* --split-by-file: Options. (line 1042) ++* --split-by-reloc: Options. (line 1047) ++* --stack: Options. (line 1653) ++* --stats: Options. (line 1060) ++* --strip-all: Options. (line 458) ++* --strip-debug: Options. (line 462) ++* --stub-group-size: PowerPC64 ELF64. (line 6) ++* --stub-group-size=N: HPPA ELF32. (line 12) ++* --subsystem: Options. (line 1660) ++* --support-old-code: ARM. (line 6) ++* --sysroot: Options. (line 1064) ++* --target-help: Options. (line 796) ++* --target1-abs: ARM. (line 27) ++* --target1-rel: ARM. (line 27) ++* --target2=TYPE: ARM. (line 32) ++* --thumb-entry=ENTRY: ARM. (line 17) ++* --trace: Options. (line 467) ++* --trace-symbol=SYMBOL: Options. (line 522) ++* --traditional-format: Options. (line 1069) ++* --undefined=SYMBOL: Options. (line 480) ++* --unique[=SECTION]: Options. (line 498) ++* --unresolved-symbols: Options. (line 1096) ++* --use-blx: ARM. (line 57) ++* --verbose: Options. (line 1125) ++* --version: Options. (line 507) ++* --version-script=VERSION-SCRIPTFILE: Options. (line 1131) ++* --warn-common: Options. (line 1138) ++* --warn-constructors: Options. (line 1206) ++* --warn-multiple-gp: Options. (line 1211) ++* --warn-once: Options. (line 1225) ++* --warn-section-align: Options. (line 1229) ++* --warn-shared-textrel: Options. (line 1236) ++* --warn-unresolved-symbols: Options. (line 1239) ++* --whole-archive: Options. (line 1248) ++* --wrap: Options. (line 1262) ++* -AARCH: Options. (line 103) ++* -aKEYWORD: Options. (line 96) ++* -assert KEYWORD: Options. (line 659) ++* -b FORMAT: Options. (line 115) ++* -Bdynamic: Options. (line 662) ++* -Bgroup: Options. (line 672) ++* -Bshareable: Options. (line 1020) ++* -Bstatic: Options. (line 679) ++* -Bsymbolic: Options. (line 694) ++* -c MRI-CMDFILE: Options. (line 139) ++* -call_shared: Options. (line 662) ++* -d: Options. (line 149) ++* -dc: Options. (line 149) ++* -dn: Options. (line 679) ++* -dp: Options. (line 149) ++* -dy: Options. (line 662) ++* -E: Options. (line 179) ++* -e ENTRY: Options. (line 158) ++* -EB: Options. (line 198) ++* -EL: Options. (line 201) ++* -F: Options. (line 226) ++* -f: Options. (line 205) ++* -fini: Options. (line 250) ++* -G: Options. (line 259) ++* -g: Options. (line 256) ++* -hNAME: Options. (line 267) ++* -i: Options. (line 276) ++* -IFILE: Options. (line 765) ++* -init: Options. (line 279) ++* -lARCHIVE: Options. (line 285) ++* -LDIR: Options. (line 315) ++* -M: Options. (line 347) ++* -m EMULATION: Options. (line 337) ++* -Map: Options. (line 800) ++* -N: Options. (line 389) ++* -n: Options. (line 384) ++* -non_shared: Options. (line 679) ++* -nostdlib: Options. (line 876) ++* -O LEVEL: Options. (line 410) ++* -o OUTPUT: Options. (line 404) ++* -pie: Options. (line 895) ++* -q: Options. (line 415) ++* -qmagic: Options. (line 905) ++* -Qy: Options. (line 908) ++* -r: Options. (line 428) ++* -R FILE: Options. (line 447) ++* -rpath: Options. (line 945) ++* -rpath-link: Options. (line 967) ++* -S: Options. (line 462) ++* -s: Options. (line 458) ++* -shared: Options. (line 1020) ++* -soname=NAME: Options. (line 267) ++* -static: Options. (line 679) ++* -t: Options. (line 467) ++* -T SCRIPT: Options. (line 471) ++* -Tbss ORG: Options. (line 1090) ++* -Tdata ORG: Options. (line 1090) ++* -Ttext ORG: Options. (line 1090) ++* -u SYMBOL: Options. (line 480) ++* -Ur: Options. (line 488) ++* -V: Options. (line 507) ++* -v: Options. (line 507) ++* -X: Options. (line 517) ++* -x: Options. (line 513) ++* -Y PATH: Options. (line 531) ++* -y SYMBOL: Options. (line 522) ++* -z defs: Options. (line 811) ++* -z KEYWORD: Options. (line 535) ++* -z muldefs: Options. (line 819) ++* .: Location Counter. (line 6) ++* /DISCARD/: Output Section Discarding. ++ (line 18) ++* :PHDR: Output Section Phdr. ++ (line 6) ++* =FILLEXP: Output Section Fill. ++ (line 6) ++* >REGION: Output Section Region. ++ (line 6) ++* [COMMON]: Input Section Common. ++ (line 29) ++* ABSOLUTE (MRI): MRI. (line 33) ++* absolute and relocatable symbols: Expression Section. (line 6) ++* absolute expressions: Expression Section. (line 6) ++* ABSOLUTE(EXP): Builtin Functions. (line 10) ++* ADDR(SECTION): Builtin Functions. (line 17) ++* address, section: Output Section Address. ++ (line 6) ++* ALIAS (MRI): MRI. (line 44) ++* ALIGN (MRI): MRI. (line 50) ++* align expression: Builtin Functions. (line 36) ++* align location counter: Builtin Functions. (line 36) ++* ALIGN(ALIGN): Builtin Functions. (line 36) ++* ALIGN(EXP,ALIGN): Builtin Functions. (line 36) ++* ALIGN(SECTION_ALIGN): Forced Output Alignment. ++ (line 6) ++* allocating memory: MEMORY. (line 6) ++* architecture: Miscellaneous Commands. ++ (line 46) ++* architectures: Options. (line 103) ++* archive files, from cmd line: Options. (line 285) ++* archive search path in linker script: File Commands. (line 71) ++* arithmetic: Expressions. (line 6) ++* arithmetic operators: Operators. (line 6) ++* ARM interworking support: ARM. (line 6) ++* AS_NEEDED(FILES): File Commands. (line 51) ++* ASSERT: Miscellaneous Commands. ++ (line 9) ++* assertion in linker script: Miscellaneous Commands. ++ (line 9) ++* assignment in scripts: Assignments. (line 6) ++* AT(LMA): Output Section LMA. (line 6) ++* AT>LMA_REGION: Output Section LMA. (line 6) ++* automatic data imports: WIN32. (line 170) ++* AVR32 options: AVR32. (line 6) ++* back end: BFD. (line 6) ++* BASE (MRI): MRI. (line 54) ++* BE8: ARM. (line 23) ++* BFD canonical format: Canonical format. (line 11) ++* BFD requirements: BFD. (line 16) ++* big-endian objects: Options. (line 198) ++* binary input format: Options. (line 115) ++* BLOCK(EXP): Builtin Functions. (line 62) ++* bug criteria: Bug Criteria. (line 6) ++* bug reports: Bug Reporting. (line 6) ++* bugs in ld: Reporting Bugs. (line 6) ++* BYTE(EXPRESSION): Output Section Data. ++ (line 6) ++* C++ constructors, arranging in link: Output Section Keywords. ++ (line 19) ++* CHIP (MRI): MRI. (line 58) ++* COLLECT_NO_DEMANGLE: Environment. (line 29) ++* combining symbols, warnings on: Options. (line 1138) ++* command files: Scripts. (line 6) ++* command line: Options. (line 6) ++* common allocation: Options. (line 149) ++* common allocation in linker script: Miscellaneous Commands. ++ (line 20) ++* common symbol placement: Input Section Common. ++ (line 6) ++* compatibility, MRI: Options. (line 139) ++* constants in linker scripts: Constants. (line 6) ++* CONSTRUCTORS: Output Section Keywords. ++ (line 19) ++* constructors: Options. (line 488) ++* constructors, arranging in link: Output Section Keywords. ++ (line 19) ++* crash of linker: Bug Criteria. (line 9) ++* CREATE_OBJECT_SYMBOLS: Output Section Keywords. ++ (line 9) ++* creating a DEF file: WIN32. (line 137) ++* cross reference table: Options. (line 711) ++* cross references: Miscellaneous Commands. ++ (line 30) ++* current output location: Location Counter. (line 6) ++* data: Output Section Data. ++ (line 6) ++* DATA_SEGMENT_ALIGN(MAXPAGESIZE, COMMONPAGESIZE): Builtin Functions. ++ (line 67) ++* DATA_SEGMENT_END(EXP): Builtin Functions. (line 88) ++* DATA_SEGMENT_RELRO_END(OFFSET, EXP): Builtin Functions. (line 94) ++* dbx: Options. (line 1074) ++* DEF files, creating: Options. (line 1470) ++* default emulation: Environment. (line 21) ++* default input format: Environment. (line 9) ++* DEFINED(SYMBOL): Builtin Functions. (line 105) ++* deleting local symbols: Options. (line 513) ++* demangling, default: Environment. (line 29) ++* demangling, from command line: Options. (line 752) ++* direct linking to a dll: WIN32. (line 218) ++* discarding sections: Output Section Discarding. ++ (line 6) ++* discontinuous memory: MEMORY. (line 6) ++* DLLs, creating: Options. (line 1376) ++* DLLs, linking to: Options. (line 1501) ++* dot: Location Counter. (line 6) ++* dot inside sections: Location Counter. (line 34) ++* dot outside sections: Location Counter. (line 64) ++* dynamic linker, from command line: Options. (line 765) ++* dynamic symbol table: Options. (line 179) ++* ELF program headers: PHDRS. (line 6) ++* emulation: Options. (line 337) ++* emulation, default: Environment. (line 21) ++* END (MRI): MRI. (line 62) ++* endianness: Options. (line 198) ++* entry point: Entry Point. (line 6) ++* entry point, from command line: Options. (line 158) ++* entry point, thumb: ARM. (line 17) ++* ENTRY(SYMBOL): Entry Point. (line 6) ++* error on valid input: Bug Criteria. (line 12) ++* example of linker script: Simple Example. (line 6) ++* exporting DLL symbols: WIN32. (line 19) ++* expression evaluation order: Evaluation. (line 6) ++* expression sections: Expression Section. (line 6) ++* expression, absolute: Builtin Functions. (line 10) ++* expressions: Expressions. (line 6) ++* EXTERN: Miscellaneous Commands. ++ (line 13) ++* fatal signal: Bug Criteria. (line 9) ++* file name wildcard patterns: Input Section Wildcards. ++ (line 6) ++* FILEHDR: PHDRS. (line 61) ++* filename symbols: Output Section Keywords. ++ (line 9) ++* fill pattern, entire section: Output Section Fill. ++ (line 6) ++* FILL(EXPRESSION): Output Section Data. ++ (line 39) ++* finalization function: Options. (line 250) ++* first input file: File Commands. (line 79) ++* first instruction: Entry Point. (line 6) ++* FIX_V4BX: ARM. (line 44) ++* FORCE_COMMON_ALLOCATION: Miscellaneous Commands. ++ (line 20) ++* forcing input section alignment: Forced Input Alignment. ++ (line 6) ++* forcing output section alignment: Forced Output Alignment. ++ (line 6) ++* forcing the creation of dynamic sections: Options. (line 424) ++* FORMAT (MRI): MRI. (line 66) ++* functions in expressions: Builtin Functions. (line 6) ++* garbage collection <1>: Input Section Keep. (line 6) ++* garbage collection: Options. (line 784) ++* generating optimized output: Options. (line 410) ++* GNU linker: Overview. (line 6) ++* GNUTARGET: Environment. (line 9) ++* GROUP(FILES): File Commands. (line 44) ++* grouping input files: File Commands. (line 44) ++* groups of archives: Options. (line 609) ++* H8/300 support: H8/300. (line 6) ++* header size: Builtin Functions. (line 170) ++* heap size: Options. (line 1412) ++* help: Options. (line 792) ++* holes: Location Counter. (line 12) ++* holes, filling: Output Section Data. ++ (line 39) ++* HPPA multiple sub-space stubs: HPPA ELF32. (line 6) ++* HPPA stub grouping: HPPA ELF32. (line 12) ++* i960 support: i960. (line 6) ++* image base: Options. (line 1419) ++* implicit linker scripts: Implicit Linker Scripts. ++ (line 6) ++* import libraries: WIN32. (line 10) ++* INCLUDE FILENAME: File Commands. (line 9) ++* including a linker script: File Commands. (line 9) ++* including an entire archive: Options. (line 1248) ++* incremental link: Options. (line 276) ++* INHIBIT_COMMON_ALLOCATION: Miscellaneous Commands. ++ (line 25) ++* initialization function: Options. (line 279) ++* initialized data in ROM: Output Section LMA. (line 21) ++* input file format in linker script: Format Commands. (line 35) ++* input filename symbols: Output Section Keywords. ++ (line 9) ++* input files in linker scripts: File Commands. (line 16) ++* input files, displaying: Options. (line 467) ++* input format: Options. (line 115) ++* input object files in linker scripts: File Commands. (line 16) ++* input section alignment: Forced Input Alignment. ++ (line 6) ++* input section basics: Input Section Basics. ++ (line 6) ++* input section wildcards: Input Section Wildcards. ++ (line 6) ++* input sections: Input Section. (line 6) ++* INPUT(FILES): File Commands. (line 16) ++* integer notation: Constants. (line 6) ++* integer suffixes: Constants. (line 12) ++* internal object-file format: Canonical format. (line 11) ++* invalid input: Bug Criteria. (line 14) ++* K and M integer suffixes: Constants. (line 12) ++* KEEP: Input Section Keep. (line 6) ++* l =: MEMORY. (line 72) ++* L, deleting symbols beginning: Options. (line 517) ++* lazy evaluation: Evaluation. (line 6) ++* ld bugs, reporting: Bug Reporting. (line 6) ++* LDEMULATION: Environment. (line 21) ++* len =: MEMORY. (line 72) ++* LENGTH =: MEMORY. (line 72) ++* LENGTH(MEMORY): Builtin Functions. (line 122) ++* library search path in linker script: File Commands. (line 71) ++* link map: Options. (line 347) ++* link-time runtime library search path: Options. (line 967) ++* linker crash: Bug Criteria. (line 9) ++* linker script concepts: Basic Script Concepts. ++ (line 6) ++* linker script example: Simple Example. (line 6) ++* linker script file commands: File Commands. (line 6) ++* linker script format: Script Format. (line 6) ++* linker script input object files: File Commands. (line 16) ++* linker script simple commands: Simple Commands. (line 6) ++* linker scripts: Scripts. (line 6) ++* LIST (MRI): MRI. (line 77) ++* little-endian objects: Options. (line 201) ++* LOAD (MRI): MRI. (line 84) ++* load address: Output Section LMA. (line 6) ++* LOADADDR(SECTION): Builtin Functions. (line 125) ++* loading, preventing: Output Section Type. ++ (line 22) ++* local symbols, deleting: Options. (line 517) ++* location counter: Location Counter. (line 6) ++* LONG(EXPRESSION): Output Section Data. ++ (line 6) ++* M and K integer suffixes: Constants. (line 12) ++* machine architecture: Miscellaneous Commands. ++ (line 46) ++* machine dependencies: Machine Dependent. (line 6) ++* mapping input sections to output sections: Input Section. (line 6) ++* MAX: Builtin Functions. (line 130) ++* MEMORY: MEMORY. (line 6) ++* memory region attributes: MEMORY. (line 32) ++* memory regions: MEMORY. (line 6) ++* memory regions and sections: Output Section Region. ++ (line 6) ++* memory usage: Options. (line 804) ++* MIN: Builtin Functions. (line 133) ++* MRI compatibility: MRI. (line 6) ++* MSP430 extra sections: MSP430. (line 11) ++* NAME (MRI): MRI. (line 90) ++* name, section: Output Section Name. ++ (line 6) ++* names: Symbols. (line 6) ++* naming the output file: Options. (line 404) ++* NEXT(EXP): Builtin Functions. (line 137) ++* NMAGIC: Options. (line 384) ++* NOCROSSREFS(SECTIONS): Miscellaneous Commands. ++ (line 30) ++* NOLOAD: Output Section Type. ++ (line 22) ++* not enough room for program headers: Builtin Functions. (line 175) ++* o =: MEMORY. (line 67) ++* objdump -i: BFD. (line 6) ++* object file management: BFD. (line 6) ++* object files: Options. (line 29) ++* object formats available: BFD. (line 6) ++* object size: Options. (line 259) ++* OMAGIC: Options. (line 389) ++* opening object files: BFD outline. (line 6) ++* operators for arithmetic: Operators. (line 6) ++* options: Options. (line 6) ++* ORDER (MRI): MRI. (line 95) ++* org =: MEMORY. (line 67) ++* ORIGIN =: MEMORY. (line 67) ++* ORIGIN(MEMORY): Builtin Functions. (line 143) ++* orphan: Orphan Sections. (line 6) ++* output file after errors: Options. (line 870) ++* output file format in linker script: Format Commands. (line 10) ++* output file name in linker scripot: File Commands. (line 61) ++* output section alignment: Forced Output Alignment. ++ (line 6) ++* output section attributes: Output Section Attributes. ++ (line 6) ++* output section data: Output Section Data. ++ (line 6) ++* OUTPUT(FILENAME): File Commands. (line 61) ++* OUTPUT_ARCH(BFDARCH): Miscellaneous Commands. ++ (line 46) ++* OUTPUT_FORMAT(BFDNAME): Format Commands. (line 10) ++* OVERLAY: Overlay Description. ++ (line 6) ++* overlays: Overlay Description. ++ (line 6) ++* partial link: Options. (line 428) ++* PHDRS: PHDRS. (line 6) ++* position independent executables: Options. (line 897) ++* PowerPC ELF32 options: PowerPC ELF32. (line 13) ++* PowerPC GOT: PowerPC ELF32. (line 23) ++* PowerPC long branches: PowerPC ELF32. (line 6) ++* PowerPC PLT: PowerPC ELF32. (line 13) ++* PowerPC stub symbols: PowerPC ELF32. (line 37) ++* PowerPC TLS optimization: PowerPC ELF32. (line 41) ++* PowerPC64 dot symbols: PowerPC64 ELF64. (line 33) ++* PowerPC64 ELF64 options: PowerPC64 ELF64. (line 6) ++* PowerPC64 multi-TOC: PowerPC64 ELF64. (line 74) ++* PowerPC64 OPD optimization: PowerPC64 ELF64. (line 48) ++* PowerPC64 OPD spacing: PowerPC64 ELF64. (line 54) ++* PowerPC64 stub grouping: PowerPC64 ELF64. (line 6) ++* PowerPC64 stub symbols: PowerPC64 ELF64. (line 29) ++* PowerPC64 TLS optimization: PowerPC64 ELF64. (line 43) ++* PowerPC64 TOC optimization: PowerPC64 ELF64. (line 60) ++* precedence in expressions: Operators. (line 6) ++* prevent unnecessary loading: Output Section Type. ++ (line 22) ++* program headers: PHDRS. (line 6) ++* program headers and sections: Output Section Phdr. ++ (line 6) ++* program headers, not enough room: Builtin Functions. (line 175) ++* program segments: PHDRS. (line 6) ++* PROVIDE: PROVIDE. (line 6) ++* PROVIDE_HIDDEN: PROVIDE_HIDDEN. (line 6) ++* PUBLIC (MRI): MRI. (line 103) ++* QUAD(EXPRESSION): Output Section Data. ++ (line 6) ++* quoted symbol names: Symbols. (line 6) ++* read-only text: Options. (line 384) ++* read/write from cmd line: Options. (line 389) ++* regions of memory: MEMORY. (line 6) ++* relative expressions: Expression Section. (line 6) ++* relaxing addressing modes: Options. (line 911) ++* relaxing on H8/300: H8/300. (line 9) ++* relaxing on i960: i960. (line 31) ++* relaxing on Xtensa: Xtensa. (line 27) ++* relocatable and absolute symbols: Expression Section. (line 6) ++* relocatable output: Options. (line 428) ++* removing sections: Output Section Discarding. ++ (line 6) ++* reporting bugs in ld: Reporting Bugs. (line 6) ++* requirements for BFD: BFD. (line 16) ++* retain relocations in final executable: Options. (line 415) ++* retaining specified symbols: Options. (line 931) ++* ROM initialized data: Output Section LMA. (line 21) ++* round up expression: Builtin Functions. (line 36) ++* round up location counter: Builtin Functions. (line 36) ++* runtime library name: Options. (line 267) ++* runtime library search path: Options. (line 945) ++* runtime pseudo-relocation: WIN32. (line 196) ++* scaled integers: Constants. (line 12) ++* scommon section: Input Section Common. ++ (line 20) ++* script files: Options. (line 471) ++* scripts: Scripts. (line 6) ++* search directory, from cmd line: Options. (line 315) ++* search path in linker script: File Commands. (line 71) ++* SEARCH_DIR(PATH): File Commands. (line 71) ++* SECT (MRI): MRI. (line 109) ++* section address: Output Section Address. ++ (line 6) ++* section address in expression: Builtin Functions. (line 17) ++* section alignment, warnings on: Options. (line 1229) ++* section data: Output Section Data. ++ (line 6) ++* section fill pattern: Output Section Fill. ++ (line 6) ++* section load address: Output Section LMA. (line 6) ++* section load address in expression: Builtin Functions. (line 125) ++* section name: Output Section Name. ++ (line 6) ++* section name wildcard patterns: Input Section Wildcards. ++ (line 6) ++* section size: Builtin Functions. (line 154) ++* section, assigning to memory region: Output Section Region. ++ (line 6) ++* section, assigning to program header: Output Section Phdr. ++ (line 6) ++* SECTIONS: SECTIONS. (line 6) ++* sections, discarding: Output Section Discarding. ++ (line 6) ++* segment origins, cmd line: Options. (line 1090) ++* SEGMENT_START(SEGMENT, DEFAULT): Builtin Functions. (line 146) ++* segments, ELF: PHDRS. (line 6) ++* shared libraries: Options. (line 1022) ++* SHORT(EXPRESSION): Output Section Data. ++ (line 6) ++* SIZEOF(SECTION): Builtin Functions. (line 154) ++* SIZEOF_HEADERS: Builtin Functions. (line 170) ++* small common symbols: Input Section Common. ++ (line 20) ++* SORT: Input Section Wildcards. ++ (line 58) ++* SORT_BY_ALIGNMENT: Input Section Wildcards. ++ (line 54) ++* SORT_BY_NAME: Input Section Wildcards. ++ (line 46) ++* SQUAD(EXPRESSION): Output Section Data. ++ (line 6) ++* stack size: Options. (line 1653) ++* standard Unix system: Options. (line 7) ++* start of execution: Entry Point. (line 6) ++* STARTUP(FILENAME): File Commands. (line 79) ++* strip all symbols: Options. (line 458) ++* strip debugger symbols: Options. (line 462) ++* stripping all but some symbols: Options. (line 931) ++* SUBALIGN(SUBSECTION_ALIGN): Forced Input Alignment. ++ (line 6) ++* suffixes for integers: Constants. (line 12) ++* symbol defaults: Builtin Functions. (line 105) ++* symbol definition, scripts: Assignments. (line 6) ++* symbol names: Symbols. (line 6) ++* symbol tracing: Options. (line 522) ++* symbol versions: VERSION. (line 6) ++* symbol-only input: Options. (line 447) ++* symbols, from command line: Options. (line 739) ++* symbols, relocatable and absolute: Expression Section. (line 6) ++* symbols, retaining selectively: Options. (line 931) ++* synthesizing linker: Options. (line 911) ++* synthesizing on H8/300: H8/300. (line 14) ++* TARGET(BFDNAME): Format Commands. (line 35) ++* TARGET1: ARM. (line 27) ++* TARGET2: ARM. (line 32) ++* thumb entry point: ARM. (line 17) ++* TI COFF versions: TI COFF. (line 6) ++* traditional format: Options. (line 1069) ++* unallocated address, next: Builtin Functions. (line 137) ++* undefined symbol: Options. (line 480) ++* undefined symbol in linker script: Miscellaneous Commands. ++ (line 13) ++* undefined symbols, warnings on: Options. (line 1225) ++* uninitialized data placement: Input Section Common. ++ (line 6) ++* unspecified memory: Output Section Data. ++ (line 39) ++* usage: Options. (line 792) ++* USE_BLX: ARM. (line 57) ++* using a DEF file: WIN32. (line 42) ++* using auto-export functionality: WIN32. (line 22) ++* Using decorations: WIN32. (line 141) ++* variables, defining: Assignments. (line 6) ++* verbose: Options. (line 1125) ++* version: Options. (line 507) ++* version script: VERSION. (line 6) ++* version script, symbol versions: Options. (line 1131) ++* VERSION {script text}: VERSION. (line 6) ++* versions of symbols: VERSION. (line 6) ++* warnings, on combining symbols: Options. (line 1138) ++* warnings, on section alignment: Options. (line 1229) ++* warnings, on undefined symbols: Options. (line 1225) ++* weak externals: WIN32. (line 380) ++* what is this?: Overview. (line 6) ++* wildcard file name patterns: Input Section Wildcards. ++ (line 6) ++* Xtensa options: Xtensa. (line 56) ++* Xtensa processors: Xtensa. (line 6) ++ ++ ++ ++Tag Table: ++Node: Top331 ++Node: Overview1093 ++Node: Invocation2207 ++Node: Options2615 ++Node: Environment77270 ++Node: Scripts79030 ++Node: Basic Script Concepts80764 ++Node: Script Format83471 ++Node: Simple Example84334 ++Node: Simple Commands87430 ++Node: Entry Point87881 ++Node: File Commands88640 ++Node: Format Commands92506 ++Node: Miscellaneous Commands94472 ++Node: Assignments96702 ++Node: Simple Assignments97193 ++Node: PROVIDE98929 ++Node: PROVIDE_HIDDEN100134 ++Node: Source Code Reference100378 ++Node: SECTIONS103958 ++Node: Output Section Description105849 ++Node: Output Section Name106902 ++Node: Output Section Address107778 ++Node: Input Section109427 ++Node: Input Section Basics110228 ++Node: Input Section Wildcards112580 ++Node: Input Section Common117313 ++Node: Input Section Keep118795 ++Node: Input Section Example119285 ++Node: Output Section Data120253 ++Node: Output Section Keywords123030 ++Node: Output Section Discarding126599 ++Node: Output Section Attributes127555 ++Node: Output Section Type128559 ++Node: Output Section LMA129713 ++Node: Forced Output Alignment131984 ++Node: Forced Input Alignment132252 ++Node: Output Section Region132637 ++Node: Output Section Phdr133067 ++Node: Output Section Fill133731 ++Node: Overlay Description134873 ++Node: MEMORY139121 ++Node: PHDRS143321 ++Node: VERSION148360 ++Node: Expressions156151 ++Node: Constants157029 ++Node: Symbols157590 ++Node: Orphan Sections158328 ++Node: Location Counter159091 ++Node: Operators163395 ++Node: Evaluation164317 ++Node: Expression Section165681 ++Node: Builtin Functions167170 ++Node: Implicit Linker Scripts174662 ++Node: Machine Dependent175437 ++Node: H8/300176357 ++Node: i960177982 ++Node: ARM179667 ++Node: AVR32182578 ++Node: HPPA ELF32183526 ++Node: MMIX185151 ++Node: MSP430186368 ++Node: PowerPC ELF32187416 ++Node: PowerPC64 ELF64189707 ++Node: TI COFF194121 ++Node: WIN32194655 ++Node: Xtensa212729 ++Node: BFD215851 ++Node: BFD outline217306 ++Node: BFD information loss218592 ++Node: Canonical format221109 ++Node: Reporting Bugs225466 ++Node: Bug Criteria226160 ++Node: Bug Reporting226859 ++Node: MRI233884 ++Node: GNU Free Documentation License238527 ++Node: Index258241 ++ ++End Tag Table +diff -Nrup binutils-2.17/ld/ld.texinfo binutils-2.17.atmel.1.3.0/ld/ld.texinfo +--- binutils-2.17/ld/ld.texinfo 2006-05-10 15:43:47.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/ld/ld.texinfo 2007-09-28 10:30:45.000000000 +0200 +@@ -22,6 +22,7 @@ + @set GENERIC + @set ARC + @set ARM ++@set AVR32 + @set D10V + @set D30V + @set H8/300 +@@ -152,6 +153,9 @@ section entitled ``GNU Free Documentatio + @ifset ARM + * ARM:: ld and the ARM family + @end ifset ++@ifset AVR32 ++* AVR32:: ld and AVR32 processors ++@end ifset + @ifset HPPA + * HPPA ELF32:: ld and HPPA 32-bit ELF + @end ifset +@@ -5110,6 +5114,9 @@ functionality are not listed. + @ifset ARM + * ARM:: @command{ld} and the ARM family + @end ifset ++@ifset AVR32 ++* AVR32:: @command{ld} and AVR32 processors ++@end ifset + @ifset HPPA + * HPPA ELF32:: @command{ld} and HPPA 32-bit ELF + @end ifset +@@ -5402,6 +5409,41 @@ specify it if you are using that target. + @end ifclear + @end ifset + ++@ifset AVR32 ++@ifclear GENERIC ++@raisesections ++@end ifclear ++ ++@node AVR32 ++@section @command{ld} and AVR32 processors ++@cindex AVR32 options ++@table @option ++@kindex --direct-data ++@kindex --no-direct-data ++@item --direct-data ++@item --no-direct-data ++Taking the address of a symbol can often be done by using a direct ++@code{mov} or pc-relative @code{sub} instruction, which is faster than ++using a PC- or GOT-relative load, especially on the uC3 ++processors. However, this does not always work when dealing with ++symbols in the @code{.data} section so this optimization is disabled ++by default. ++ ++Specifying @option{--direct-data} will enable this optimization. Note ++that this may cause @samp{relocation truncated to fit} errors for ++certain large programs. If this happens, the optimization can be ++turned off by specifying @option{--no-direct-data}. ++ ++All known issues with direct data optimizations are detected at link ++time, so if the linker doesn't complain, the result should run just ++fine. ++@end table ++ ++@ifclear GENERIC ++@lowersections ++@end ifclear ++@end ifset ++ + @ifset HPPA + @ifclear GENERIC + @raisesections +diff -Nrup binutils-2.17/ld/Makefile.am binutils-2.17.atmel.1.3.0/ld/Makefile.am +--- binutils-2.17/ld/Makefile.am 2006-06-03 06:45:50.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/ld/Makefile.am 2007-09-28 10:30:45.000000000 +0200 +@@ -133,6 +133,20 @@ ALL_EMULATIONS = \ + eavr3.o \ + eavr4.o \ + eavr5.o \ ++ eavr32elf_ap7000.o \ ++ eavr32elf_uc3a0128.o \ ++ eavr32elf_uc3a0256.o \ ++ eavr32elf_uc3a0512.o \ ++ eavr32elf_uc3a1128.o \ ++ eavr32elf_uc3a1256.o \ ++ eavr32elf_uc3a1512.o \ ++ eavr32elf_uc3b064.o \ ++ eavr32elf_uc3b0128.o \ ++ eavr32elf_uc3b0256.o \ ++ eavr32elf_uc3b164.o \ ++ eavr32elf_uc3b1128.o \ ++ eavr32elf_uc3b1256.o \ ++ eavr32linux.o \ + ecoff_i860.o \ + ecoff_sparc.o \ + ecrisaout.o \ +@@ -595,6 +609,62 @@ eavr5.c: $(srcdir)/emulparams/avr5.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/avr.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} avr5 "$(tdir_avr2)" ++eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf_ap7000.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \ ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" ++eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf_uc3a0128.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \ ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" ++eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf_uc3a0256.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \ ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" ++eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf_uc3a0512.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \ ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" ++eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf_uc3a1128.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \ ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" ++eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf_uc3a1256.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \ ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" ++eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf_uc3a1512.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \ ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" ++eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf_uc3b064.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \ ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" ++eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf_uc3b0128.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \ ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" ++eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf_uc3b0256.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \ ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" ++eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf_uc3b164.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \ ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" ++eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf_uc3b1128.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \ ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" ++eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf_uc3b1256.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \ ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" ++eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \ ++ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32linux "$(tdir_avr32)" + ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS} + ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)" +@@ -1800,7 +1870,9 @@ install-exec-local: ld-new$(EXEEXT) + || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ + fi + +-install-data-local: ++# We want install to imply install-info as per GNU standards, despite the ++# cygnus option. ++install-data-local: install-info + $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts + for f in ldscripts/*; do \ + $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \ +diff -Nrup binutils-2.17/ld/Makefile.in binutils-2.17.atmel.1.3.0/ld/Makefile.in +--- binutils-2.17/ld/Makefile.in 2006-06-03 06:45:50.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/ld/Makefile.in 2007-03-26 10:32:23.000000000 +0200 +@@ -145,6 +145,7 @@ EMUL_EXTRA_OFILES = @EMUL_EXTRA_OFILES@ + EXEEXT = @EXEEXT@ + GMOFILES = @GMOFILES@ + GMSGFMT = @GMSGFMT@ ++GREP = @GREP@ + GT_NO = @GT_NO@ + GT_YES = @GT_YES@ + HDEFINES = @HDEFINES@ +@@ -213,9 +214,8 @@ VERSION = @VERSION@ + WARN_CFLAGS = @WARN_CFLAGS@ + XGETTEXT = @XGETTEXT@ + YACC = `if [ -f ../bison/bison ]; then echo ../bison/bison -y -L$(srcdir)/../bison/; else echo @YACC@; fi` ++YFLAGS = -d + ac_ct_CC = @ac_ct_CC@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ + am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ + am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ + am__include = @am__include@ +@@ -232,6 +232,7 @@ build_vendor = @build_vendor@ + datadir = @datadir@ + datarootdir = @datarootdir@ + docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ +@@ -245,12 +246,15 @@ install_sh = @install_sh@ + l = @l@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ +@@ -263,7 +267,6 @@ use_sysroot = @use_sysroot@ + AUTOMAKE_OPTIONS = cygnus dejagnu + SUBDIRS = po + tooldir = $(exec_prefix)/$(target_alias) +-YFLAGS = -d + AM_CFLAGS = $(WARN_CFLAGS) + + # We put the scripts in the directory $(scriptdir)/ldscripts. +@@ -357,6 +360,9 @@ ALL_EMULATIONS = \ + eavr3.o \ + eavr4.o \ + eavr5.o \ ++ eavr32elf_ap7000.o \ ++ eavr32elf_uc3a0512.o \ ++ eavr32linux.o \ + ecoff_i860.o \ + ecoff_sparc.o \ + ecrisaout.o \ +@@ -878,10 +884,13 @@ dist-info: $(INFO_DEPS) + $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$base; then d=.; else d=$(srcdir); fi; \ +- for file in $$d/$$base*; do \ +- relfile=`expr "$$file" : "$$d/\(.*\)"`; \ +- test -f $(distdir)/$$relfile || \ +- cp -p $$file $(distdir)/$$relfile; \ ++ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ ++ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ ++ if test -f $$file; then \ ++ relfile=`expr "$$file" : "$$d/\(.*\)"`; \ ++ test -f $(distdir)/$$relfile || \ ++ cp -p $$file $(distdir)/$$relfile; \ ++ else :; fi; \ + done; \ + done + +@@ -1406,6 +1415,15 @@ eavr5.c: $(srcdir)/emulparams/avr5.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/avr.sc \ + ${GEN_DEPENDS} + ${GENSCRIPTS} avr5 "$(tdir_avr2)" ++eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf_ap7000.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" ++eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf_uc3a0512.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" ++eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \ ++ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ++ ${GENSCRIPTS} avr32linux "$(tdir_avr32)" + ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \ + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS} + ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)" +@@ -2587,7 +2605,9 @@ install-exec-local: ld-new$(EXEEXT) + || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ + fi + +-install-data-local: ++# We want install to imply install-info as per GNU standards, despite the ++# cygnus option. ++install-data-local: install-info + $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts + for f in ldscripts/*; do \ + $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \ +diff -Nrup binutils-2.17/ld/scripttempl/elf_xip.sc binutils-2.17.atmel.1.3.0/ld/scripttempl/elf_xip.sc +--- binutils-2.17/ld/scripttempl/elf_xip.sc 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/scripttempl/elf_xip.sc 2007-03-26 10:19:40.000000000 +0200 +@@ -0,0 +1,456 @@ ++# ++# Unusual variables checked by this code: ++# NOP - four byte opcode for no-op (defaults to 0) ++# NO_SMALL_DATA - no .sbss/.sbss2/.sdata/.sdata2 sections if not ++# empty. ++# SMALL_DATA_CTOR - .ctors contains small data. ++# SMALL_DATA_DTOR - .dtors contains small data. ++# DATA_ADDR - if end-of-text-plus-one-page isn't right for data start ++# INITIAL_READONLY_SECTIONS - at start of text segment ++# OTHER_READONLY_SECTIONS - other than .text .init .rodata ... ++# (e.g., .PARISC.milli) ++# OTHER_TEXT_SECTIONS - these get put in .text when relocating ++# OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ... ++# (e.g., .PARISC.global) ++# OTHER_RELRO_SECTIONS - other than .data.rel.ro ... ++# (e.g. PPC32 .fixup, .got[12]) ++# OTHER_BSS_SECTIONS - other than .bss .sbss ... ++# OTHER_SECTIONS - at the end ++# EXECUTABLE_SYMBOLS - symbols that must be defined for an ++# executable (e.g., _DYNAMIC_LINK) ++# TEXT_START_ADDR - the first byte of the text segment, after any ++# headers. ++# TEXT_BASE_ADDRESS - the first byte of the text segment. ++# TEXT_START_SYMBOLS - symbols that appear at the start of the ++# .text section. ++# DATA_START_SYMBOLS - symbols that appear at the start of the ++# .data section. ++# OTHER_GOT_SYMBOLS - symbols defined just before .got. ++# OTHER_GOT_SECTIONS - sections just after .got. ++# OTHER_SDATA_SECTIONS - sections just after .sdata. ++# OTHER_BSS_SYMBOLS - symbols that appear at the start of the ++# .bss section besides __bss_start. ++# DATA_PLT - .plt should be in data segment, not text segment. ++# PLT_BEFORE_GOT - .plt just before .got when .plt is in data segement. ++# BSS_PLT - .plt should be in bss segment ++# TEXT_DYNAMIC - .dynamic in text segment, not data segment. ++# EMBEDDED - whether this is for an embedded system. ++# SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set ++# start address of shared library. ++# INPUT_FILES - INPUT command of files to always include ++# WRITABLE_RODATA - if set, the .rodata section should be writable ++# INIT_START, INIT_END - statements just before and just after ++# combination of .init sections. ++# FINI_START, FINI_END - statements just before and just after ++# combination of .fini sections. ++# STACK_ADDR - start of a .stack section. ++# OTHER_END_SYMBOLS - symbols to place right at the end of the script. ++# SEPARATE_GOTPLT - if set, .got.plt should be separate output section, ++# so that .got can be in the RELRO area. It should be set to ++# the number of bytes in the beginning of .got.plt which can be ++# in the RELRO area as well. ++# ++# When adding sections, do note that the names of some sections are used ++# when specifying the start address of the next. ++# ++ ++# Many sections come in three flavours. There is the 'real' section, ++# like ".data". Then there are the per-procedure or per-variable ++# sections, generated by -ffunction-sections and -fdata-sections in GCC, ++# and useful for --gc-sections, which for a variable "foo" might be ++# ".data.foo". Then there are the linkonce sections, for which the linker ++# eliminates duplicates, which are named like ".gnu.linkonce.d.foo". ++# The exact correspondences are: ++# ++# Section Linkonce section ++# .text .gnu.linkonce.t.foo ++# .rodata .gnu.linkonce.r.foo ++# .data .gnu.linkonce.d.foo ++# .bss .gnu.linkonce.b.foo ++# .sdata .gnu.linkonce.s.foo ++# .sbss .gnu.linkonce.sb.foo ++# .sdata2 .gnu.linkonce.s2.foo ++# .sbss2 .gnu.linkonce.sb2.foo ++# .debug_info .gnu.linkonce.wi.foo ++# .tdata .gnu.linkonce.td.foo ++# .tbss .gnu.linkonce.tb.foo ++# ++# Each of these can also have corresponding .rel.* and .rela.* sections. ++ ++test -z "$ENTRY" && ENTRY=_start ++test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT} ++test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT} ++if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi ++test -z "${ELFSIZE}" && ELFSIZE=32 ++test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8" ++test "$LD_FLAG" = "N" && DATA_ADDR=. ++test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE="" ++test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE="" ++test -n "$RELRO_NOW" && unset SEPARATE_GOTPLT ++if test -n "$RELOCATING"; then ++ RO_REGION="${RO_VMA_REGION+ >}${RO_VMA_REGION}${RO_LMA_REGION+ AT>}${RO_LMA_REGION}" ++ RW_REGION="${RW_VMA_REGION+ >}${RW_VMA_REGION}${RW_LMA_REGION+ AT>}${RW_LMA_REGION}" ++else ++ RO_REGION="" ++ RW_REGION="" ++fi ++INTERP=".interp ${RELOCATING-0} : { *(.interp) }${RO_REGION}" ++PLT=".plt ${RELOCATING-0} : { *(.plt) }" ++if test -z "$GOT"; then ++ if test -z "$SEPARATE_GOTPLT"; then ++ GOT=".got ${RELOCATING-0} : { *(.got.plt) *(.got) }" ++ else ++ GOT=".got ${RELOCATING-0} : { *(.got) }" ++ GOTPLT="${RELOCATING+${DATA_SEGMENT_RELRO_GOTPLT_END}} ++ .got.plt ${RELOCATING-0} : { *(.got.plt) }" ++ fi ++fi ++DALIGN=".dalign : { . = ALIGN(${DATA_SEGMENT_ALIGN}); PROVIDE(_data_lma = .); }${RO_REGION}" ++BALIGN=".balign : { . = ALIGN(${BSS_ALIGNMENT}); _edata = .; }${RW_REGION}" ++DYNAMIC=".dynamic ${RELOCATING-0} : { *(.dynamic) }" ++RODATA=".rodata ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }" ++DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }${RW_REGION}" ++STACKNOTE="/DISCARD/ : { *(.note.GNU-stack) }" ++if test -z "${NO_SMALL_DATA}"; then ++ SBSS=".sbss ${RELOCATING-0} : ++ { ++ ${RELOCATING+PROVIDE (__sbss_start = .);} ++ ${RELOCATING+PROVIDE (___sbss_start = .);} ++ ${CREATE_SHLIB+*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)} ++ *(.dynsbss) ++ *(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*}) ++ *(.scommon) ++ ${RELOCATING+PROVIDE (__sbss_end = .);} ++ ${RELOCATING+PROVIDE (___sbss_end = .);} ++ }${RW_REGION}" ++ SBSS2=".sbss2 ${RELOCATING-0} : { *(.sbss2${RELOCATING+ .sbss2.* .gnu.linkonce.sb2.*}) }${RW_REGION}" ++ SDATA="/* We want the small data sections together, so single-instruction offsets ++ can access them all, and initialized data all before uninitialized, so ++ we can shorten the on-disk segment size. */ ++ .sdata ${RELOCATING-0} : ++ { ++ ${RELOCATING+${SDATA_START_SYMBOLS}} ++ ${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)} ++ *(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*}) ++ }${RW_REGION}" ++ SDATA2=".sdata2 ${RELOCATING-0} : { *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*}) }${RW_REGION}" ++ REL_SDATA=".rel.sdata ${RELOCATING-0} : { *(.rel.sdata${RELOCATING+ .rel.sdata.* .rel.gnu.linkonce.s.*}) }${RO_REGION} ++ .rela.sdata ${RELOCATING-0} : { *(.rela.sdata${RELOCATING+ .rela.sdata.* .rela.gnu.linkonce.s.*}) }" ++ REL_SBSS=".rel.sbss ${RELOCATING-0} : { *(.rel.sbss${RELOCATING+ .rel.sbss.* .rel.gnu.linkonce.sb.*}) }${RO_REGION} ++ .rela.sbss ${RELOCATING-0} : { *(.rela.sbss${RELOCATING+ .rela.sbss.* .rela.gnu.linkonce.sb.*}) }${RO_REGION}" ++ REL_SDATA2=".rel.sdata2 ${RELOCATING-0} : { *(.rel.sdata2${RELOCATING+ .rel.sdata2.* .rel.gnu.linkonce.s2.*}) }${RO_REGION} ++ .rela.sdata2 ${RELOCATING-0} : { *(.rela.sdata2${RELOCATING+ .rela.sdata2.* .rela.gnu.linkonce.s2.*}) }${RO_REGION}" ++ REL_SBSS2=".rel.sbss2 ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }${RO_REGION} ++ .rela.sbss2 ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }${RO_REGION}" ++else ++ NO_SMALL_DATA=" " ++fi ++test -n "$SEPARATE_GOTPLT" && SEPARATE_GOTPLT=" " ++CTOR=".ctors ${CONSTRUCTING-0} : ++ { ++ ${CONSTRUCTING+${CTOR_START}} ++ /* gcc uses crtbegin.o to find the start of ++ the constructors, so we make sure it is ++ first. Because this is a wildcard, it ++ doesn't matter if the user does not ++ actually link against crtbegin.o; the ++ linker won't look for a file to match a ++ wildcard. The wildcard also means that it ++ doesn't matter which directory crtbegin.o ++ is in. */ ++ ++ KEEP (*crtbegin*.o(.ctors)) ++ ++ /* We don't want to include the .ctor section from ++ from the crtend.o file until after the sorted ctors. ++ The .ctor section from the crtend file contains the ++ end of ctors marker and it must be last */ ++ ++ KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors)) ++ KEEP (*(SORT(.ctors.*))) ++ KEEP (*(.ctors)) ++ ${CONSTRUCTING+${CTOR_END}} ++ }" ++DTOR=".dtors ${CONSTRUCTING-0} : ++ { ++ ${CONSTRUCTING+${DTOR_START}} ++ KEEP (*crtbegin*.o(.dtors)) ++ KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors)) ++ KEEP (*(SORT(.dtors.*))) ++ KEEP (*(.dtors)) ++ ${CONSTRUCTING+${DTOR_END}} ++ }" ++STACK=".stack ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} : ++ { ++ ${RELOCATING+_stack = .;} ++ *(.stack) ++ ${RELOCATING+${STACK_SIZE+. = ${STACK_SIZE};}} ++ ${RELOCATING+_estack = .;} ++ }${RW_REGION}" ++ ++# if this is for an embedded system, don't add SIZEOF_HEADERS. ++if [ -z "$EMBEDDED" ]; then ++ test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS" ++else ++ test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}" ++fi ++ ++cat < +- +-extern int var; +-extern void (*func_ptr)(void); +-extern void print_var (void); +-extern void print_foo (void); +-extern int foo; +-extern int var2[2]; +- +-typedef struct +-{ +- int * var; +- void (* func_ptr)(void); +-} +-TEST; +- +-TEST xyz = { &var, print_var }; +- +-int +-main (void) +-{ +- print_var (); +- +- printf ("We see var = %d\n", var); +- printf ("Setting var = 456\n"); +- +- var = 456; +- +- print_var (); +- printf ("We see var = %d\n\n", var); +- +- var = 90; +- print_var (); +- printf ("We see var = %d\n\n", var); +- +- print_foo (); +- printf ("We see foo = %d\n", foo); +- printf ("Setting foo = 19\n"); +- foo = 19; +- print_foo (); +- printf ("We see foo = %d\n\n", foo); +- fflush (stdout); +- +- printf ("Calling dllimported function pointer\n"); +- func_ptr (); +- +- printf ("Calling functions using global structure\n"); +- xyz.func_ptr (); +- * xyz.var = 40; +- xyz.func_ptr (); +- +- printf ("We see var2[0] = %d\n\n", var2[0]); +- +- return 0; +-} ++#include ++ ++extern int var; ++extern void (*func_ptr)(void); ++extern void print_var (void); ++extern void print_foo (void); ++extern int foo; ++extern int var2[2]; ++ ++typedef struct ++{ ++ int * var; ++ void (* func_ptr)(void); ++} ++TEST; ++ ++TEST xyz = { &var, print_var }; ++ ++int ++main (void) ++{ ++ print_var (); ++ ++ printf ("We see var = %d\n", var); ++ printf ("Setting var = 456\n"); ++ ++ var = 456; ++ ++ print_var (); ++ printf ("We see var = %d\n\n", var); ++ ++ var = 90; ++ print_var (); ++ printf ("We see var = %d\n\n", var); ++ ++ print_foo (); ++ printf ("We see foo = %d\n", foo); ++ printf ("Setting foo = 19\n"); ++ foo = 19; ++ print_foo (); ++ printf ("We see foo = %d\n\n", foo); ++ fflush (stdout); ++ ++ printf ("Calling dllimported function pointer\n"); ++ func_ptr (); ++ ++ printf ("Calling functions using global structure\n"); ++ xyz.func_ptr (); ++ * xyz.var = 40; ++ xyz.func_ptr (); ++ ++ printf ("We see var2[0] = %d\n\n", var2[0]); ++ ++ return 0; ++} +diff -Nrup binutils-2.17/ld/testsuite/ld-auto-import/dll.c binutils-2.17.atmel.1.3.0/ld/testsuite/ld-auto-import/dll.c +--- binutils-2.17/ld/testsuite/ld-auto-import/dll.c 2002-12-18 17:05:10.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/testsuite/ld-auto-import/dll.c 2007-03-26 10:19:37.000000000 +0200 +@@ -1,20 +1,20 @@ +-int var = 123; +-int foo = 121; +- +-int var2[2]= { 123, 456 }; +- +-#include +- +-void +-print_var (void) +-{ +- printf ("DLL sees var = %d\n", var); +-} +- +-void +-print_foo (void) +-{ +- printf ("DLL sees foo = %d\n", foo); +-} +- +-void (* func_ptr)(void) = print_foo; ++int var = 123; ++int foo = 121; ++ ++int var2[2]= { 123, 456 }; ++ ++#include ++ ++void ++print_var (void) ++{ ++ printf ("DLL sees var = %d\n", var); ++} ++ ++void ++print_foo (void) ++{ ++ printf ("DLL sees foo = %d\n", foo); ++} ++ ++void (* func_ptr)(void) = print_foo; +diff -Nrup binutils-2.17/ld/testsuite/ld-avr32/avr32.exp binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/avr32.exp +--- binutils-2.17/ld/testsuite/ld-avr32/avr32.exp 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/avr32.exp 2007-03-26 10:19:30.000000000 +0200 +@@ -0,0 +1,25 @@ ++# Expect script for AVR32 ELF linker tests. ++# Copyright 2004-2006 Atmel Corporation. ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++# ++# Written by Haavard Skinnemoen (hskinnemoen@atmel.com) ++# ++ ++if ![istarget avr32-*-*] { ++ return ++} ++ ++run_dump_test "pcrel" +diff -Nrup binutils-2.17/ld/testsuite/ld-avr32/pcrel.d binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/pcrel.d +--- binutils-2.17/ld/testsuite/ld-avr32/pcrel.d 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/pcrel.d 2007-03-26 10:19:30.000000000 +0200 +@@ -0,0 +1,74 @@ ++#name: AVR32 ELF PC-relative external relocs ++#source: symbols.s ++#source: ../../../gas/testsuite/gas/avr32/pcrel.s ++#ld: -T $srcdir/$subdir/pcrel.ld ++#objdump: -d ++ ++.*: file format elf.*avr32.* ++ ++Disassembly of section .text: ++ ++a0000000 <_start>: ++a0000000: d7 03 nop ++a0000002: d7 03 nop ++ ++a0000004 : ++a0000004: d7 03 nop ++a0000006: c0 28 rjmp a000000a ++a0000008: d7 03 nop ++a000000a: e0 8f 01 fb bral a0000400 ++ ++a000000e : ++a000000e: d7 03 nop ++a0000010 : ++a0000010: c0 2c rcall a0000014 ++a0000012: d7 03 nop ++a0000014: ee b0 ff f6 rcall a0200000 ++ ++a0000018 : ++a0000018: c0 31 brne a000001e ++a000001a: fe 9f ff ff bral a0000018 ++a000001e: ee 90 ff f1 breq a0200000 ++ ++a0000022 : ++a0000022: 48 30 lddpc r0,a000002c ++a0000024: 48 20 lddpc r0,a000002c ++a0000026: fe f0 7f da ld.w r0,pc\[32730\] ++ ... ++ ++a000002c : ++a000002c: d7 03 nop ++a000002e: d7 03 nop ++ ++a0000030 : ++a0000030: 48 20 lddpc r0,a0000038 ++a0000032: 48 30 lddpc r0,a000003c ++a0000034: 48 20 lddpc r0,a000003c ++a0000036: 00 00 add r0,r0 ++a0000038: d7 03 nop ++a000003a: d7 03 nop ++a000003c: d7 03 nop ++a000003e: d7 03 nop ++ ++Disassembly of section \.text\.init: ++a0000040 : ++a0000040: fe b0 ff e7 rcall a000000e ++a0000044: d7 03 nop ++a0000046: fe b0 ff e4 rcall a000000e ++a000004a: fe b0 ff e3 rcall a0000010 ++a000004e: d7 03 nop ++a0000050: fe b0 ff e0 rcall a0000010 ++ ++Disassembly of section \.text\.pcrel10: ++ ++a0000400 : ++a0000400: d7 03 nop ++ ++Disassembly of section \.text\.pcrel16: ++ ++a0008000 : ++a0008000: d7 03 nop ++ ++Disassembly of section \.text\.pcrel21: ++a0200000 : ++a0200000: d7 03 nop +diff -Nrup binutils-2.17/ld/testsuite/ld-avr32/pcrel.ld binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/pcrel.ld +--- binutils-2.17/ld/testsuite/ld-avr32/pcrel.ld 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/pcrel.ld 2007-03-26 10:19:30.000000000 +0200 +@@ -0,0 +1,23 @@ ++ENTRY(_start) ++SECTIONS ++{ ++ .text 0xa0000000: ++ { ++ *(.text) ++ } ++ ++ .text.pcrel10 0xa0000400: ++ { ++ *(.text.pcrel10) ++ } ++ ++ .text.pcrel16 0xa0008000: ++ { ++ *(.text.pcrel16) ++ } ++ ++ .text.pcrel21 0xa0200000: ++ { ++ *(.text.pcrel21) ++ } ++} +diff -Nrup binutils-2.17/ld/testsuite/ld-avr32/symbols.s binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/symbols.s +--- binutils-2.17/ld/testsuite/ld-avr32/symbols.s 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/testsuite/ld-avr32/symbols.s 2007-03-26 10:19:30.000000000 +0200 +@@ -0,0 +1,20 @@ ++ .text ++ .global _start ++_start: ++ nop ++ nop ++ ++ .section .text.pcrel10,"ax" ++ .global extsym10 ++extsym10: ++ nop ++ ++ .section .text.pcrel16,"ax" ++ .global extsym16 ++extsym16: ++ nop ++ ++ .section .text.pcrel21,"ax" ++ .global extsym21 ++extsym21: ++ nop +diff -Nrup binutils-2.17/opcodes/aclocal.m4 binutils-2.17.atmel.1.3.0/opcodes/aclocal.m4 +--- binutils-2.17/opcodes/aclocal.m4 2005-09-30 20:05:59.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/opcodes/aclocal.m4 2007-03-26 10:31:34.000000000 +0200 +@@ -1,4 +1,4 @@ +-# generated automatically by aclocal 1.9.5 -*- Autoconf -*- ++# generated automatically by aclocal 1.9.6 -*- Autoconf -*- + + # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, + # 2005 Free Software Foundation, Inc. +@@ -28,7 +28,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api + # Call AM_AUTOMAKE_VERSION so it can be traced. + # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. + AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +- [AM_AUTOMAKE_VERSION([1.9.5])]) ++ [AM_AUTOMAKE_VERSION([1.9.6])]) + + # AM_AUX_DIR_EXPAND -*- Autoconf -*- + +diff -Nrup binutils-2.17/opcodes/avr32-asm.c binutils-2.17.atmel.1.3.0/opcodes/avr32-asm.c +--- binutils-2.17/opcodes/avr32-asm.c 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/opcodes/avr32-asm.c 2007-03-26 10:20:34.000000000 +0200 +@@ -0,0 +1,264 @@ ++/* Assembler interface for AVR32. ++ Copyright 2005, 2006 Atmel Corporation. ++ ++ Written by Haavard Skinnemoen, Atmel Norway, ++ ++ This file is part of libopcodes. ++ ++ This program is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#include ++ ++#include "avr32-opc.h" ++#include "avr32-asm.h" ++ ++/* Structure for a register hash table entry. */ ++struct reg_entry ++{ ++ const char *name; ++ int number; ++}; ++ ++/* Integer Registers. */ ++static const struct reg_entry reg_table[] = ++ { ++ /* Primary names (used by the disassembler) */ ++ { "r0", 0 }, { "r1", 1 }, { "r2", 2 }, { "r3", 3 }, ++ { "r4", 4 }, { "r5", 5 }, { "r6", 6 }, { "r7", 7 }, ++ { "r8", 8 }, { "r9", 9 }, { "r10", 10 }, { "r11", 11 }, ++ { "r12", 12 }, { "sp", 13 }, { "lr", 14 }, { "pc", 15 }, ++ /* Alternatives to sp, lr and pc. */ ++ { "r13", 13 }, { "r14", 14 }, { "r15", 15 }, ++ }; ++#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0])) ++ ++/* Coprocessor Registers. */ ++static const struct reg_entry cr_table[] = ++ { ++ { "cr0", 0 }, { "cr1", 1 }, { "cr2", 2 }, { "cr3", 3 }, ++ { "cr4", 4 }, { "cr5", 5 }, { "cr6", 6 }, { "cr7", 7 }, ++ { "cr8", 8 }, { "cr9", 9 }, { "cr10", 10 }, { "cr11", 11 }, ++ { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 }, ++ }; ++#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0])) ++ ++/* Floating-point Registers. */ ++static const struct reg_entry fr_table[] = ++ { ++ { "fr0", 0 }, { "fr1", 1 }, { "fr2", 2 }, { "fr3", 3 }, ++ { "fr4", 4 }, { "fr5", 5 }, { "fr6", 6 }, { "fr7", 7 }, ++ { "fr8", 8 }, { "fr9", 9 }, { "fr10", 10 }, { "fr11", 11 }, ++ { "fr12", 12 }, { "fr13", 13 }, { "fr14", 14 }, { "fr15", 15 }, ++ }; ++#define AVR32_NR_FPREGS (sizeof(fr_table)/sizeof(fr_table[0])) ++ ++/* PiCo Registers. */ ++static const struct reg_entry pico_table[] = ++ { ++ { "inpix2", 0 }, { "inpix1", 1 }, { "inpix0", 2 }, ++ { "outpix2", 3 }, { "outpix1", 4 }, { "outpix0", 5 }, ++ { "coeff0_a", 6 }, { "coeff0_b", 7 }, { "coeff1_a", 8 }, ++ { "coeff1_b", 9 }, { "coeff2_a", 10 }, { "coeff2_b", 11 }, ++ { "vmu0_out", 12 }, { "vmu1_out", 13 }, { "vmu2_out", 14 }, ++ { "config", 15 }, ++ }; ++#define AVR32_NR_PICOREGS (sizeof(pico_table)/sizeof(pico_table[0])) ++ ++int ++avr32_parse_intreg(const char *str) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < AVR32_NR_INTREGS; i++) ++ { ++ if (strcasecmp(reg_table[i].name, str) == 0) ++ return reg_table[i].number; ++ } ++ ++ return -1; ++} ++ ++int ++avr32_parse_cpreg(const char *str) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < AVR32_NR_CPREGS; i++) ++ { ++ if (strcasecmp(cr_table[i].name, str) == 0) ++ return cr_table[i].number; ++ } ++ ++ return -1; ++} ++ ++int avr32_parse_fpreg(const char *str) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < AVR32_NR_FPREGS; i++) ++ { ++ if (strcasecmp(fr_table[i].name, str) == 0) ++ return fr_table[i].number; ++ } ++ ++ return -1; ++} ++ ++int avr32_parse_picoreg(const char *str) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < AVR32_NR_PICOREGS; i++) ++ { ++ if (strcasecmp(pico_table[i].name, str) == 0) ++ return pico_table[i].number; ++ } ++ ++ return -1; ++} ++ ++static unsigned long ++parse_reglist(char *str, char **endptr, int (*parse_reg)(const char *)) ++{ ++ int reg_from, reg_to; ++ unsigned long result = 0; ++ char *p1, *p2, c; ++ ++ while (*str) ++ { ++ for (p1 = str; *p1; p1++) ++ if (*p1 == ',' || *p1 == '-') ++ break; ++ ++ c = *p1, *p1 = 0; ++ reg_from = parse_reg(str); ++ *p1 = c; ++ ++ if (reg_from < 0) ++ break; ++ ++ if (*p1 == '-') ++ { ++ for (p2 = ++p1; *p2; p2++) ++ if (*p2 == ',') ++ break; ++ ++ c = *p2, *p2 = 0; ++ /* printf("going to parse reg_to from `%s'\n", p1); */ ++ reg_to = parse_reg(p1); ++ *p2 = c; ++ ++ if (reg_to < 0) ++ break; ++ ++ while (reg_from <= reg_to) ++ result |= (1 << reg_from++); ++ p1 = p2; ++ } ++ else ++ result |= (1 << reg_from); ++ ++ str = p1; ++ if (*str) ++str; ++ } ++ ++ if (endptr) ++ *endptr = str; ++ ++ return result; ++} ++ ++unsigned long ++avr32_parse_reglist(char *str, char **endptr) ++{ ++ return parse_reglist(str, endptr, avr32_parse_intreg); ++} ++ ++unsigned long ++avr32_parse_cpreglist(char *str, char **endptr) ++{ ++ return parse_reglist(str, endptr, avr32_parse_cpreg); ++} ++ ++unsigned long ++avr32_parse_pico_reglist(char *str, char **endptr) ++{ ++ return parse_reglist(str, endptr, avr32_parse_picoreg); ++} ++ ++int ++avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8) ++{ ++ unsigned long result = 0; ++ ++ /* printf("convert regmask16 0x%04lx\n", regmask16); */ ++ ++ if (regmask16 & 0xf) ++ { ++ if ((regmask16 & 0xf) == 0xf) ++ result |= 1 << 0; ++ else ++ return -1; ++ } ++ if (regmask16 & 0xf0) ++ { ++ if ((regmask16 & 0xf0) == 0xf0) ++ result |= 1 << 1; ++ else ++ return -1; ++ } ++ if (regmask16 & 0x300) ++ { ++ if ((regmask16 & 0x300) == 0x300) ++ result |= 1 << 2; ++ else ++ return -1; ++ } ++ if (regmask16 & (1 << 13)) ++ return -1; ++ ++ if (regmask16 & (1 << 10)) ++ result |= 1 << 3; ++ if (regmask16 & (1 << 11)) ++ result |= 1 << 4; ++ if (regmask16 & (1 << 12)) ++ result |= 1 << 5; ++ if (regmask16 & (1 << 14)) ++ result |= 1 << 6; ++ if (regmask16 & (1 << 15)) ++ result |= 1 << 7; ++ ++ *regmask8 = result; ++ ++ return 0; ++} ++ ++#if 0 ++struct reg_map ++{ ++ const struct reg_entry *names; ++ int nr_regs; ++ struct hash_control *htab; ++ const char *errmsg; ++}; ++ ++struct reg_map all_reg_maps[] = ++ { ++ { reg_table, AVR32_NR_INTREGS, NULL, N_("integral register expected") }, ++ { cr_table, AVR32_NR_CPREGS, NULL, N_("coprocessor register expected") }, ++ }; ++#endif +diff -Nrup binutils-2.17/opcodes/avr32-asm.h binutils-2.17.atmel.1.3.0/opcodes/avr32-asm.h +--- binutils-2.17/opcodes/avr32-asm.h 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/opcodes/avr32-asm.h 2007-03-26 10:20:34.000000000 +0200 +@@ -0,0 +1,42 @@ ++/* Assembler interface for AVR32. ++ Copyright 2005, 2006 Atmel Corporation. ++ ++ Written by Haavard Skinnemoen, Atmel Norway, ++ ++ This file is part of libopcodes. ++ ++ This program is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++#ifndef __OPCODES_AVR32_ASM_H ++#define __OPCODES_AVR32_ASM_H ++ ++extern int ++avr32_parse_intreg(const char *str); ++extern int ++avr32_parse_cpreg(const char *str); ++extern int ++avr32_parse_fpreg(const char *str); ++extern int ++avr32_parse_picoreg(const char *str); ++extern unsigned long ++avr32_parse_reglist(char *str, char **endptr); ++extern unsigned long ++avr32_parse_cpreglist(char *str, char **endptr); ++extern unsigned long ++avr32_parse_pico_reglist(char *str, char **endptr); ++extern int ++avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8); ++ ++#endif /* __OPCODES_AVR32_ASM_H */ +diff -Nrup binutils-2.17/opcodes/avr32-dis.c binutils-2.17.atmel.1.3.0/opcodes/avr32-dis.c +--- binutils-2.17/opcodes/avr32-dis.c 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/opcodes/avr32-dis.c 2007-09-28 10:30:46.000000000 +0200 +@@ -0,0 +1,891 @@ ++/* Print AVR32 instructions for GDB and objdump. ++ Copyright 2005, 2006 Atmel Corporation. ++ ++ Written by Haavard Skinnemoen, Atmel Norway, ++ ++ This file is part of libopcodes. ++ ++ This program is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#include "sysdep.h" ++#include "dis-asm.h" ++#include "avr32-opc.h" ++#include "opintl.h" ++#include "safe-ctype.h" ++ ++/* TODO: Share this with -asm */ ++ ++/* Structure for a register hash table entry. */ ++struct reg_entry ++{ ++ const char *name; ++ int number; ++}; ++ ++#ifndef strneq ++#define strneq(a,b,n) (strncmp ((a), (b), (n)) == 0) ++#endif ++ ++ ++static const struct reg_entry reg_table[] = ++ { ++ /* Primary names (used by the disassembler) */ ++ { "r0", 0 }, { "r1", 1 }, { "r2", 2 }, { "r3", 3 }, ++ { "r4", 4 }, { "r5", 5 }, { "r6", 6 }, { "r7", 7 }, ++ { "r8", 8 }, { "r9", 9 }, { "r10", 10 }, { "r11", 11 }, ++ { "r12", 12 }, { "sp", 13 }, { "lr", 14 }, { "pc", 15 }, ++ /* Alternatives to sp, lr and pc. */ ++ { "r13", 13 }, { "r14", 14 }, { "r15", 15 }, ++ }; ++#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0])) ++ ++/* Coprocessor Registers. */ ++static const struct reg_entry cr_table[] = ++ { ++ { "cr0", 0 }, { "cr1", 1 }, { "cr2", 2 }, { "cr3", 3 }, ++ { "cr4", 4 }, { "cr5", 5 }, { "cr6", 6 }, { "cr7", 7 }, ++ { "cr8", 8 }, { "cr9", 9 }, { "cr10", 10 }, { "cr11", 11 }, ++ { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 }, ++ }; ++#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0])) ++ ++static const char bparts[4] = { 'b', 'l', 'u', 't' }; ++static bfd_vma current_pc; ++ ++struct avr32_field_value ++{ ++ const struct avr32_ifield *ifield; ++ unsigned long value; ++}; ++ ++struct avr32_operand ++{ ++ int id; ++ int is_pcrel; ++ int align_order; ++ int (*print)(struct avr32_operand *op, struct disassemble_info *info, ++ struct avr32_field_value *ifields); ++}; ++ ++static signed long ++get_signed_value(const struct avr32_field_value *fv) ++{ ++ signed long value = fv->value; ++ ++ if (fv->value & (1 << (fv->ifield->bitsize - 1))) ++ value |= (~0UL << fv->ifield->bitsize); ++ ++ return value; ++} ++ ++static void ++print_reglist_range(unsigned int first, unsigned int last, ++ const struct reg_entry *reg_names, ++ int need_comma, ++ struct disassemble_info *info) ++{ ++ if (need_comma) ++ info->fprintf_func(info->stream, ","); ++ ++ if (first == last) ++ info->fprintf_func(info->stream, "%s", ++ reg_names[first].name); ++ else ++ info->fprintf_func(info->stream, "%s-%s", ++ reg_names[first].name, reg_names[last].name); ++} ++ ++static int ++print_intreg(struct avr32_operand *op, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ unsigned long regid = ifields[0].value << op->align_order; ++ ++ info->fprintf_func(info->stream, "%s", ++ reg_table[regid].name); ++ return 1; ++} ++ ++static int ++print_intreg_predec(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ info->fprintf_func(info->stream, "--%s", ++ reg_table[ifields[0].value].name); ++ return 1; ++} ++ ++static int ++print_intreg_postinc(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ info->fprintf_func(info->stream, "%s++", ++ reg_table[ifields[0].value].name); ++ return 1; ++} ++ ++static int ++print_intreg_lsl(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ const char *rp = reg_table[ifields[0].value].name; ++ unsigned long sa = ifields[1].value; ++ ++ if (sa) ++ info->fprintf_func(info->stream, "%s<<0x%lx", rp, sa); ++ else ++ info->fprintf_func(info->stream, "%s", rp); ++ ++ return 2; ++} ++ ++static int ++print_intreg_lsr(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ const char *rp = reg_table[ifields[0].value].name; ++ unsigned long sa = ifields[1].value; ++ ++ if (sa) ++ info->fprintf_func(info->stream, "%s>>0x%lx", rp, sa); ++ else ++ info->fprintf_func(info->stream, "%s", rp); ++ ++ return 2; ++} ++ ++static int ++print_intreg_bpart(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ info->fprintf_func(info->stream, "%s:%c", ++ reg_table[ifields[0].value].name, ++ bparts[ifields[1].value]); ++ return 2; ++} ++ ++static int ++print_intreg_hpart(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ info->fprintf_func(info->stream, "%s:%c", ++ reg_table[ifields[0].value].name, ++ ifields[1].value ? 't' : 'b'); ++ return 2; ++} ++ ++static int ++print_intreg_sdisp(struct avr32_operand *op, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ signed long disp; ++ ++ disp = get_signed_value(&ifields[1]) << op->align_order; ++ ++ info->fprintf_func(info->stream, "%s[%ld]", ++ reg_table[ifields[0].value].name, disp); ++ return 2; ++} ++ ++static int ++print_intreg_udisp(struct avr32_operand *op, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ info->fprintf_func(info->stream, "%s[0x%lx]", ++ reg_table[ifields[0].value].name, ++ ifields[1].value << op->align_order); ++ return 2; ++} ++ ++static int ++print_intreg_index(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ const char *rb, *ri; ++ unsigned long sa = ifields[2].value; ++ ++ rb = reg_table[ifields[0].value].name; ++ ri = reg_table[ifields[1].value].name; ++ ++ if (sa) ++ info->fprintf_func(info->stream, "%s[%s<<0x%lx]", rb, ri, sa); ++ else ++ info->fprintf_func(info->stream, "%s[%s]", rb, ri); ++ ++ return 3; ++} ++ ++static int ++print_intreg_xindex(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ info->fprintf_func(info->stream, "%s[%s:%c<<2]", ++ reg_table[ifields[0].value].name, ++ reg_table[ifields[1].value].name, ++ bparts[ifields[2].value]); ++ return 3; ++} ++ ++static int ++print_jmplabel(struct avr32_operand *op, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ bfd_vma address, offset; ++ ++ offset = get_signed_value(ifields) << op->align_order; ++ address = (current_pc & (~0UL << op->align_order)) + offset; ++ ++ info->print_address_func(address, info); ++ ++ return 1; ++} ++ ++static int ++print_pc_disp(struct avr32_operand *op, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ bfd_vma address, offset; ++ ++ offset = ifields[0].value << op->align_order; ++ address = (current_pc & (~0UL << op->align_order)) + offset; ++ ++ info->print_address_func(address, info); ++ ++ return 1; ++} ++ ++static int ++print_sp(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields ATTRIBUTE_UNUSED) ++{ ++ info->fprintf_func(info->stream, "sp"); ++ return 1; ++} ++ ++static int ++print_sp_disp(struct avr32_operand *op, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ info->fprintf_func(info->stream, "sp[0x%lx]", ++ ifields[0].value << op->align_order); ++ return 1; ++} ++ ++static int ++print_cpno(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ info->fprintf_func(info->stream, "cp%lu", ifields[0].value); ++ return 1; ++} ++ ++static int ++print_cpreg(struct avr32_operand *op, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ info->fprintf_func(info->stream, "cr%lu", ++ ifields[0].value << op->align_order); ++ return 1; ++} ++ ++static int ++print_uconst(struct avr32_operand *op, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ info->fprintf_func(info->stream, "0x%lx", ++ ifields[0].value << op->align_order); ++ return 1; ++} ++ ++static int ++print_sconst(struct avr32_operand *op, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ info->fprintf_func(info->stream, "%ld", ++ get_signed_value(ifields) << op->align_order); ++ return 1; ++} ++ ++static int ++print_reglist8_head(unsigned long regmask, int *commap, ++ struct disassemble_info *info) ++{ ++ int first = -1, last, i = 0; ++ int need_comma = 0; ++ ++ while (i < 12) ++ { ++ if (first == -1 && (regmask & 1)) ++ { ++ first = i; ++ } ++ else if (first != -1 && !(regmask & 1)) ++ { ++ last = i - 1; ++ ++ print_reglist_range(first, last, reg_table, need_comma, info); ++ need_comma = 1; ++ first = -1; ++ } ++ ++ if (i < 8) ++ i += 4; ++ else if (i < 10) ++ i += 2; ++ else ++ i++; ++ regmask >>= 1; ++ } ++ ++ *commap = need_comma; ++ return first; ++} ++ ++static void ++print_reglist8_tail(unsigned long regmask, int first, int need_comma, ++ struct disassemble_info *info) ++{ ++ int last = 11; ++ ++ if (regmask & 0x20) ++ { ++ if (first == -1) ++ first = 12; ++ last = 12; ++ } ++ ++ if (first != -1) ++ { ++ print_reglist_range(first, last, reg_table, need_comma, info); ++ need_comma = 1; ++ first = -1; ++ } ++ ++ if (regmask & 0x40) ++ { ++ if (first == -1) ++ first = 14; ++ last = 14; ++ } ++ ++ if (regmask & 0x80) ++ { ++ if (first == -1) ++ first = 15; ++ last = 15; ++ } ++ ++ if (first != -1) ++ print_reglist_range(first, last, reg_table, need_comma, info); ++} ++ ++static int ++print_reglist8(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ unsigned long regmask = ifields[0].value; ++ int first, need_comma; ++ ++ first = print_reglist8_head(regmask, &need_comma, info); ++ print_reglist8_tail(regmask, first, need_comma, info); ++ ++ return 1; ++} ++ ++static int ++print_reglist9(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ unsigned long regmask = ifields[0].value >> 1; ++ int first, last, need_comma; ++ ++ first = print_reglist8_head(regmask, &need_comma, info); ++ ++ if ((ifields[0].value & 0x101) == 0x101) ++ { ++ if (first != -1) ++ { ++ last = 11; ++ ++ print_reglist_range(first, last, reg_table, need_comma, info); ++ need_comma = 1; ++ first = -1; ++ } ++ ++ print_reglist_range(15, 15, reg_table, need_comma, info); ++ ++ regmask >>= 5; ++ ++ if ((regmask & 3) == 0) ++ info->fprintf_func(info->stream, ",r12=0"); ++ else if ((regmask & 3) == 1) ++ info->fprintf_func(info->stream, ",r12=1"); ++ else ++ info->fprintf_func(info->stream, ",r12=-1"); ++ } ++ else ++ print_reglist8_tail(regmask, first, need_comma, info); ++ ++ return 1; ++} ++ ++static int ++print_reglist16(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ unsigned long regmask = ifields[0].value; ++ unsigned int i = 0, first, last; ++ int need_comma = 0; ++ ++ while (i < 16) ++ { ++ if (regmask & 1) ++ { ++ first = i; ++ while (i < 16) ++ { ++ i++; ++ regmask >>= 1; ++ if (!(regmask & 1)) ++ break; ++ } ++ last = i - 1; ++ print_reglist_range(first, last, reg_table, need_comma, info); ++ need_comma = 1; ++ } ++ else ++ { ++ i++; ++ regmask >>= 1; ++ } ++ } ++ ++ return 1; ++} ++ ++static int ++print_reglist_ldm(struct avr32_operand *op, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ int rp, w_bit; ++ int i, first, last; ++ unsigned long regmask; ++ ++ rp = ifields[0].value; ++ w_bit = ifields[1].value; ++ regmask = ifields[2].value; ++ ++ if (regmask & (1 << AVR32_REG_PC) && rp == AVR32_REG_PC) ++ { ++ if (w_bit) ++ info->fprintf_func(info->stream, "sp++"); ++ else ++ info->fprintf_func(info->stream, "sp"); ++ ++ for (i = 0; i < 12; ) ++ { ++ if (regmask & (1 << i)) ++ { ++ first = i; ++ while (i < 12) ++ { ++ i++; ++ if (!(regmask & (1 << i))) ++ break; ++ } ++ last = i - 1; ++ print_reglist_range(first, last, reg_table, 1, info); ++ } ++ else ++ i++; ++ } ++ ++ info->fprintf_func(info->stream, ",pc"); ++ if (regmask & (1 << AVR32_REG_LR)) ++ info->fprintf_func(info->stream, ",r12=-1"); ++ else if (regmask & (1 << AVR32_REG_R12)) ++ info->fprintf_func(info->stream, ",r12=1"); ++ else ++ info->fprintf_func(info->stream, ",r12=0"); ++ } ++ else ++ { ++ if (w_bit) ++ info->fprintf_func(info->stream, "%s++,", reg_table[rp].name); ++ else ++ info->fprintf_func(info->stream, "%s,", reg_table[rp].name); ++ ++ print_reglist16(op, info, ifields + 2); ++ } ++ ++ return 3; ++} ++ ++static int ++print_reglist_cp8(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ unsigned long regmask = ifields[0].value; ++ unsigned int i = 0, first, last, offset = 0; ++ int need_comma = 0; ++ ++ if (ifields[1].value) ++ offset = 8; ++ ++ while (i < 8) ++ { ++ if (regmask & 1) ++ { ++ first = i; ++ while (i < 8) ++ { ++ i++; ++ regmask >>= 1; ++ if (!(regmask & 1)) ++ break; ++ } ++ last = i - 1; ++ print_reglist_range(offset + first, offset + last, ++ cr_table, need_comma, info); ++ need_comma = 1; ++ } ++ else ++ { ++ i++; ++ regmask >>= 1; ++ } ++ } ++ ++ return 2; ++} ++ ++static int ++print_reglist_cpd8(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ unsigned long regmask = ifields[0].value; ++ unsigned int i = 0, first, last; ++ int need_comma = 0; ++ ++ while (i < 8) ++ { ++ if (regmask & 1) ++ { ++ first = 2 * i; ++ while (i < 8) ++ { ++ i++; ++ regmask >>= 1; ++ if (!(regmask & 1)) ++ break; ++ } ++ last = 2 * (i - 1) + 1; ++ print_reglist_range(first, last, cr_table, need_comma, info); ++ need_comma = 1; ++ } ++ else ++ { ++ i++; ++ regmask >>= 1; ++ } ++ } ++ ++ return 1; ++} ++ ++static int ++print_retval(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ unsigned long regid = ifields[0].value; ++ const char *retval; ++ ++ if (regid < AVR32_REG_SP) ++ retval = reg_table[regid].name; ++ else if (regid == AVR32_REG_SP) ++ retval = "0"; ++ else if (regid == AVR32_REG_LR) ++ retval = "-1"; ++ else ++ retval = "1"; ++ ++ info->fprintf_func(info->stream, "%s", retval); ++ ++ return 1; ++} ++ ++static int ++print_mcall(struct avr32_operand *op, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ unsigned long regid = ifields[0].value; ++ ++ if (regid == AVR32_REG_PC) ++ print_jmplabel(op, info, ifields + 1); ++ else ++ print_intreg_sdisp(op, info, ifields); ++ ++ return 2; ++} ++ ++static int ++print_jospinc(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields) ++{ ++ signed long value = ifields[0].value; ++ ++ if (value >= 4) ++ value -= 8; ++ else ++ value += 1; ++ ++ info->fprintf_func(info->stream, "%ld", value); ++ ++ return 1; ++} ++ ++static int ++print_coh(struct avr32_operand *op ATTRIBUTE_UNUSED, ++ struct disassemble_info *info, ++ struct avr32_field_value *ifields ATTRIBUTE_UNUSED) ++{ ++ info->fprintf_func(info->stream, "COH"); ++ return 0; ++} ++ ++#define OP(name, sgn, pcrel, align, func) \ ++ { AVR32_OPERAND_##name, pcrel, align, print_##func } ++ ++struct avr32_operand operand[AVR32_NR_OPERANDS] = ++ { ++ OP(INTREG, 0, 0, 0, intreg), ++ OP(INTREG_PREDEC, 0, 0, 0, intreg_predec), ++ OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc), ++ OP(INTREG_LSL, 0, 0, 0, intreg_lsl), ++ OP(INTREG_LSR, 0, 0, 0, intreg_lsr), ++ OP(INTREG_BSEL, 0, 0, 0, intreg_bpart), ++ OP(INTREG_HSEL, 0, 0, 1, intreg_hpart), ++ OP(INTREG_SDISP, 1, 0, 0, intreg_sdisp), ++ OP(INTREG_SDISP_H, 1, 0, 1, intreg_sdisp), ++ OP(INTREG_SDISP_W, 1, 0, 2, intreg_sdisp), ++ OP(INTREG_UDISP, 0, 0, 0, intreg_udisp), ++ OP(INTREG_UDISP_H, 0, 0, 1, intreg_udisp), ++ OP(INTREG_UDISP_W, 0, 0, 2, intreg_udisp), ++ OP(INTREG_INDEX, 0, 0, 0, intreg_index), ++ OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex), ++ OP(DWREG, 0, 0, 1, intreg), ++ OP(PC_UDISP_W, 0, 1, 2, pc_disp), ++ OP(SP, 0, 0, 0, sp), ++ OP(SP_UDISP_W, 0, 0, 2, sp_disp), ++ OP(CPNO, 0, 0, 0, cpno), ++ OP(CPREG, 0, 0, 0, cpreg), ++ OP(CPREG_D, 0, 0, 1, cpreg), ++ OP(UNSIGNED_CONST, 0, 0, 0, uconst), ++ OP(UNSIGNED_CONST_W, 0, 0, 2, uconst), ++ OP(SIGNED_CONST, 1, 0, 0, sconst), ++ OP(SIGNED_CONST_W, 1, 0, 2, sconst), ++ OP(JMPLABEL, 1, 1, 1, jmplabel), ++ OP(UNSIGNED_NUMBER, 0, 0, 0, uconst), ++ OP(UNSIGNED_NUMBER_W, 0, 0, 2, uconst), ++ OP(REGLIST8, 0, 0, 0, reglist8), ++ OP(REGLIST9, 0, 0, 0, reglist9), ++ OP(REGLIST16, 0, 0, 0, reglist16), ++ OP(REGLIST_LDM, 0, 0, 0, reglist_ldm), ++ OP(REGLIST_CP8, 0, 0, 0, reglist_cp8), ++ OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8), ++ OP(RETVAL, 0, 0, 0, retval), ++ OP(MCALL, 1, 0, 2, mcall), ++ OP(JOSPINC, 0, 0, 0, jospinc), ++ OP(COH, 0, 0, 0, coh), ++ }; ++ ++static void ++print_opcode(bfd_vma insn_word, const struct avr32_opcode *opc, ++ bfd_vma pc, struct disassemble_info *info) ++{ ++ const struct avr32_syntax *syntax = opc->syntax; ++ struct avr32_field_value fields[AVR32_MAX_FIELDS]; ++ unsigned int i, next_field = 0, nr_operands; ++ ++ for (i = 0; i < opc->nr_fields; i++) ++ { ++ opc->fields[i]->extract(opc->fields[i], &insn_word, &fields[i].value); ++ fields[i].ifield = opc->fields[i]; ++ } ++ ++ current_pc = pc; ++ info->fprintf_func(info->stream, "%s", syntax->mnemonic->name); ++ ++ if (syntax->nr_operands < 0) ++ nr_operands = (unsigned int) -syntax->nr_operands; ++ else ++ nr_operands = (unsigned int) syntax->nr_operands; ++ ++ for (i = 0; i < nr_operands; i++) ++ { ++ struct avr32_operand *op = &operand[syntax->operand[i]]; ++ ++ if (i) ++ info->fprintf_func(info->stream, ","); ++ else ++ info->fprintf_func(info->stream, "\t"); ++ next_field += op->print(op, info, &fields[next_field]); ++ } ++} ++ ++static const struct avr32_opcode * ++find_opcode(bfd_vma insn_word) ++{ ++ int i; ++ ++ for (i = 0; i < AVR32_NR_OPCODES; i++) ++ { ++ const struct avr32_opcode *opc = &avr32_opc_table[i]; ++ ++ if ((insn_word & opc->mask) == opc->value) ++ return opc; ++ } ++ ++ return NULL; ++} ++ ++static int ++read_insn_word(bfd_vma pc, bfd_vma *valuep, ++ struct disassemble_info *info) ++{ ++ bfd_byte b[4]; ++ int status; ++ ++ status = info->read_memory_func(pc, b, 4, info); ++ if (status) ++ { ++ status = info->read_memory_func(pc, b, 2, info); ++ if (status) ++ { ++ info->memory_error_func(status, pc, info); ++ return -1; ++ } ++ b[3] = b[2] = 0; ++ } ++ ++ *valuep = (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3]; ++ return 0; ++} ++ ++/* Parse an individual disassembler option. */ ++ ++void ++parse_avr32_disassembler_option (option) ++ char * option; ++{ ++ if (option == NULL) ++ return; ++ ++ /* XXX - should break 'option' at following delimiter. */ ++ fprintf (stderr, _("Unrecognised disassembler option: %s\n"), option); ++ ++ return; ++} ++ ++/* Parse the string of disassembler options, spliting it at whitespaces ++ or commas. (Whitespace separators supported for backwards compatibility). */ ++ ++static void ++parse_disassembler_options (char *options) ++{ ++ if (options == NULL) ++ return; ++ ++ while (*options) ++ { ++ parse_avr32_disassembler_option (options); ++ ++ /* Skip forward to next seperator. */ ++ while ((*options) && (! ISSPACE (*options)) && (*options != ',')) ++ ++ options; ++ /* Skip forward past seperators. */ ++ while (ISSPACE (*options) || (*options == ',')) ++ ++ options; ++ } ++} ++ ++int ++print_insn_avr32(bfd_vma pc, struct disassemble_info *info) ++{ ++ bfd_vma insn_word; ++ const struct avr32_opcode *opc; ++ ++ if (info->disassembler_options) ++ { ++ parse_disassembler_options (info->disassembler_options); ++ ++ /* To avoid repeated parsing of these options, we remove them here. */ ++ info->disassembler_options = NULL; ++ } ++ ++ info->bytes_per_chunk = 1; ++ info->display_endian = BFD_ENDIAN_BIG; ++ ++ if (read_insn_word(pc, &insn_word, info)) ++ return -1; ++ ++ opc = find_opcode(insn_word); ++ if (opc) ++ { ++ print_opcode(insn_word, opc, pc, info); ++ return opc->size; ++ } ++ else ++ { ++ info->fprintf_func(info->stream, _("*unknown*")); ++ return 2; ++ } ++ ++} ++ ++void ++print_avr32_disassembler_options (FILE *stream ATTRIBUTE_UNUSED) ++{ ++ ++} +diff -Nrup binutils-2.17/opcodes/avr32-opc.c binutils-2.17.atmel.1.3.0/opcodes/avr32-opc.c +--- binutils-2.17/opcodes/avr32-opc.c 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/opcodes/avr32-opc.c 2007-03-26 10:20:34.000000000 +0200 +@@ -0,0 +1,6140 @@ ++/* Opcode tables for AVR32. ++ Copyright 2005, 2006 Atmel Corporation. ++ ++ Written by Haavard Skinnemoen, Atmel Norway, ++ ++ This file is part of libopcodes. ++ ++ This program is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#include ++#include ++ ++#include "avr32-opc.h" ++ ++#define PICO_CPNO 1 ++ ++void ++avr32_insert_simple(const struct avr32_ifield *field, ++ void *buf, unsigned long value) ++{ ++ bfd_vma word; ++ ++ word = bfd_getb32(buf); ++ word &= ~field->mask; ++ word |= (value << field->shift) & field->mask; ++ bfd_putb32(word, buf); ++} ++ ++void ++avr32_insert_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED, ++ void *buf, unsigned long value) ++{ ++ char *opcode = buf; ++ ++ opcode[0] = (opcode[0] & 0xe1) | (value & 0x1e); ++ opcode[1] = (opcode[1] & 0xef) | ((value & 1) << 4); ++} ++ ++void ++avr32_insert_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED, ++ void *buf, unsigned long value) ++{ ++ char *opcode = buf; ++ ++ opcode[0] = (opcode[0] & 0xf0) | ((value & 0xf0) >> 4); ++ opcode[1] = ((opcode[1] & 0x0c) | ((value & 0x0f) << 4) ++ | ((value & 0x300) >> 8)); ++} ++ ++void ++avr32_insert_k21(const struct avr32_ifield *field, ++ void *buf, unsigned long value) ++{ ++ bfd_vma word; ++ bfd_vma k21; ++ ++ word = bfd_getb32(buf); ++ word &= ~field->mask; ++ k21 = ((value & 0xffff) | ((value & 0x10000) << 4) ++ | ((value & 0x1e0000) << 8)); ++ assert(!(k21 & ~field->mask)); ++ word |= k21; ++ bfd_putb32(word, buf); ++} ++ ++void ++avr32_insert_cpop(const struct avr32_ifield *field, ++ void *buf, unsigned long value) ++{ ++ bfd_vma word; ++ ++ word = bfd_getb32(buf); ++ word &= ~field->mask; ++ word |= (((value & 0x1e) << 15) | ((value & 0x60) << 20) ++ | ((value & 0x01) << 12)); ++ bfd_putb32(word, buf); ++} ++ ++void ++avr32_insert_k12cp(const struct avr32_ifield *field, ++ void *buf, unsigned long value) ++{ ++ bfd_vma word; ++ ++ word = bfd_getb32(buf); ++ word &= ~field->mask; ++ word |= ((value & 0xf00) << 4) | (value & 0xff); ++ bfd_putb32(word, buf); ++} ++ ++void avr32_extract_simple(const struct avr32_ifield *field, ++ void *buf, unsigned long *value) ++{ ++ /* XXX: The disassembler has done any necessary byteswapping already */ ++ bfd_vma word = *(bfd_vma *)buf; ++ ++ *value = (word & field->mask) >> field->shift; ++} ++ ++void avr32_extract_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED, ++ void *buf, unsigned long *value) ++{ ++ bfd_vma word = *(bfd_vma *)buf; ++ ++ *value = ((word >> 20) & 1) | ((word >> 24) & 0x1e); ++} ++ ++void avr32_extract_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED, ++ void *buf, unsigned long *value) ++{ ++ bfd_vma word = *(bfd_vma *)buf; ++ ++ *value = ((word >> 8) & 0x300) | ((word >> 20) & 0xff); ++} ++ ++void avr32_extract_k21(const struct avr32_ifield *field ATTRIBUTE_UNUSED, ++ void *buf, unsigned long *value) ++{ ++ bfd_vma word = *(bfd_vma *)buf; ++ ++ *value = ((word & 0xffff) | ((word >> 4) & 0x10000) ++ | ((word >> 8) & 0x1e0000)); ++} ++ ++void avr32_extract_cpop(const struct avr32_ifield *field ATTRIBUTE_UNUSED, ++ void *buf, unsigned long *value) ++{ ++ bfd_vma word = *(bfd_vma *)buf; ++ ++ *value = (((word >> 12) & 1) | ((word >> 15) & 0x1e) ++ | ((word >> 20) & 0x60)); ++} ++ ++void avr32_extract_k12cp(const struct avr32_ifield *field ATTRIBUTE_UNUSED, ++ void *buf, unsigned long *value) ++{ ++ bfd_vma word = *(bfd_vma *)buf; ++ ++ *value = ((word >> 4) & 0xf00) | (word & 0xff); ++} ++ ++#define IFLD(id, bitsz, shift, mask, func) \ ++ { AVR32_IFIELD_##id, bitsz, shift, mask, \ ++ avr32_insert_##func, avr32_extract_##func } ++ ++const struct avr32_ifield avr32_ifield_table[] = ++ { ++ IFLD(RX, 4, 25, 0x1e000000, simple), ++ IFLD(RY, 4, 16, 0x000f0000, simple), ++ IFLD(COND4C, 4, 20, 0x00f00000, simple), ++ IFLD(K8C, 8, 20, 0x0ff00000, simple), ++ IFLD(K7C, 7, 20, 0x07f00000, simple), ++ IFLD(K5C, 5, 20, 0x01f00000, simple), ++ IFLD(K3, 3, 20, 0x00700000, simple), ++ IFLD(RY_DW, 3, 17, 0x000e0000, simple), ++ IFLD(COND4E, 4, 8, 0x00000f00, simple), ++ IFLD(K8E, 8, 0, 0x000000ff, simple), ++ IFLD(BIT5C, 5, 20, 0x1e100000, bit5c), ++ IFLD(COND3, 3, 16, 0x00070000, simple), ++ IFLD(K10, 10, 16, 0x0ff30000, k10), ++ IFLD(POPM, 9, 19, 0x0ff80000, simple), ++ IFLD(K2, 2, 4, 0x00000030, simple), ++ IFLD(RD_E, 4, 0, 0x0000000f, simple), ++ IFLD(RD_DW, 3, 1, 0x0000000e, simple), ++ IFLD(X, 1, 5, 0x00000020, simple), ++ IFLD(Y, 1, 4, 0x00000010, simple), ++ IFLD(X2, 1, 13, 0x00002000, simple), ++ IFLD(Y2, 1, 12, 0x00001000, simple), ++ IFLD(K5E, 5, 0, 0x0000001f, simple), ++ IFLD(PART2, 2, 0, 0x00000003, simple), ++ IFLD(PART1, 1, 0, 0x00000001, simple), ++ IFLD(K16, 16, 0, 0x0000ffff, simple), ++ IFLD(CACHEOP, 5, 11, 0x0000f800, simple), ++ IFLD(K11, 11, 0, 0x000007ff, simple), ++ IFLD(K21, 21, 0, 0x1e10ffff, k21), ++ IFLD(CPOP, 7, 12, 0x060f1000, cpop), ++ IFLD(CPNO, 3, 13, 0x0000e000, simple), ++ IFLD(CRD_RI, 4, 8, 0x00000f00, simple), ++ IFLD(CRX, 4, 4, 0x000000f0, simple), ++ IFLD(CRY, 4, 0, 0x0000000f, simple), ++ IFLD(K7E, 7, 0, 0x0000007f, simple), ++ IFLD(CRD_DW, 3, 9, 0x00000e00, simple), ++ IFLD(PART1_K12, 1, 12, 0x00001000, simple), ++ IFLD(PART2_K12, 2, 12, 0x00003000, simple), ++ IFLD(K12, 12, 0, 0x00000fff, simple), ++ IFLD(S5, 5, 5, 0x000003e0, simple), ++ IFLD(K5E2, 5, 4, 0x000001f0, simple), ++ IFLD(K4, 4, 20, 0x00f00000, simple), ++ IFLD(COND4E2, 4, 4, 0x000000f0, simple), ++ IFLD(K8E2, 8, 4, 0x00000ff0, simple), ++ IFLD(K6, 6, 20, 0x03f00000, simple), ++ IFLD(MEM15, 15, 0, 0x00007fff, simple), ++ IFLD(MEMB5, 5, 15, 0x000f8000, simple), ++ IFLD(W, 1, 25, 0x02000000, simple), ++ /* Coprocessor Multiple High/Low */ ++ IFLD(CM_HL, 1, 8, 0x00000100, simple), ++ IFLD(K12CP, 12 ,0, 0x0000f0ff, k12cp), ++ }; ++#undef IFLD ++ ++ ++struct avr32_opcode avr32_opc_table[] = ++ { ++ { ++ AVR32_OPC_ABS, 2, 0x5c400000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ABS], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ } ++ }, ++ { ++ AVR32_OPC_ACALL, 2, 0xd0000000, 0xf00f0000, ++ &avr32_syntax_table[AVR32_SYNTAX_ACALL], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K8C], ++ }, ++ }, ++ { ++ AVR32_OPC_ACR, 2, 0x5c000000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ACR], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_ADC, 4, 0xe0000040, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_ADC], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_ADD1, 2, 0x00000000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ADD1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_ADD2, 4, 0xe0000000, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_ADD2], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ }, ++ }, ++ { ++ AVR32_OPC_ADDABS, 4, 0xe0000e40, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_ADDABS], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_ADDHH_W, 4, 0xe0000e00, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_ADDHH_W], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_AND1, 2, 0x00600000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_AND1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_AND2, 4, 0xe1e00000, 0xe1f0fe00, ++ &avr32_syntax_table[AVR32_SYNTAX_AND2], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K5E2], ++ }, ++ }, ++ { ++ AVR32_OPC_AND3, 4, 0xe1e00200, 0xe1f0fe00, ++ &avr32_syntax_table[AVR32_SYNTAX_AND3], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K5E2], ++ }, ++ }, ++ { ++ AVR32_OPC_ANDH, 4, 0xe4100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ANDH], ++ BFD_RELOC_AVR32_16U, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_ANDH_COH, 4, 0xe6100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ANDH_COH], ++ BFD_RELOC_AVR32_16U, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_ANDL, 4, 0xe0100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ANDL], ++ BFD_RELOC_AVR32_16U, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_ANDL_COH, 4, 0xe2100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ANDL_COH], ++ BFD_RELOC_AVR32_16U, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_ANDN, 2, 0x00800000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ANDN], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_ASR1, 4, 0xe0000840, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_ASR1], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_ASR3, 4, 0xe0001400, 0xe1f0ffe0, ++ &avr32_syntax_table[AVR32_SYNTAX_ASR3], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K5E], ++ }, ++ }, ++ { ++ AVR32_OPC_ASR2, 2, 0xa1400000, 0xe1e00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ASR2], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_BIT5C], ++ }, ++ }, ++ { ++ AVR32_OPC_BLD, 4, 0xedb00000, 0xfff0ffe0, ++ &avr32_syntax_table[AVR32_SYNTAX_BLD], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K5E], ++ }, ++ }, ++ { ++ AVR32_OPC_BREQ1, 2, 0xc0000000, 0xf00f0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BREQ1], ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K8C], ++ }, ++ }, ++ { ++ AVR32_OPC_BRNE1, 2, 0xc0010000, 0xf00f0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRNE1], ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K8C], ++ }, ++ }, ++ { ++ AVR32_OPC_BRCC1, 2, 0xc0020000, 0xf00f0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRCC1], ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K8C], ++ }, ++ }, ++ { ++ AVR32_OPC_BRCS1, 2, 0xc0030000, 0xf00f0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRCS1], ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K8C], ++ }, ++ }, ++ { ++ AVR32_OPC_BRGE1, 2, 0xc0040000, 0xf00f0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRGE1], ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K8C], ++ }, ++ }, ++ { ++ AVR32_OPC_BRLT1, 2, 0xc0050000, 0xf00f0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRLT1], ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K8C], ++ }, ++ }, ++ { ++ AVR32_OPC_BRMI1, 2, 0xc0060000, 0xf00f0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRMI1], ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K8C], ++ }, ++ }, ++ { ++ AVR32_OPC_BRPL1, 2, 0xc0070000, 0xf00f0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRPL1], ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K8C], ++ }, ++ }, ++ { ++ AVR32_OPC_BREQ2, 4, 0xe0800000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BREQ2], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BRNE2, 4, 0xe0810000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRNE2], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BRCC2, 4, 0xe0820000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRHS2], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BRCS2, 4, 0xe0830000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRLO2], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BRGE2, 4, 0xe0840000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRGE2], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BRLT2, 4, 0xe0850000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRLT2], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BRMI2, 4, 0xe0860000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRMI2], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BRPL2, 4, 0xe0870000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRPL2], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BRLS, 4, 0xe0880000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRLS], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BRGT, 4, 0xe0890000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRGT], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BRLE, 4, 0xe08a0000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRLE], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BRHI, 4, 0xe08b0000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRHI], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BRVS, 4, 0xe08c0000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRVS], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BRVC, 4, 0xe08d0000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRVC], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BRQS, 4, 0xe08e0000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRQS], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BRAL, 4, 0xe08f0000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BRAL], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_BREAKPOINT, 2, 0xd6730000, 0xffff0000, ++ &avr32_syntax_table[AVR32_SYNTAX_BREAKPOINT], ++ BFD_RELOC_UNUSED, 0, -1, { NULL }, ++ }, ++ { ++ AVR32_OPC_BREV, 2, 0x5c900000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_BREV], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_BST, 4, 0xefb00000, 0xfff0ffe0, ++ &avr32_syntax_table[AVR32_SYNTAX_BST], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K5E], ++ }, ++ }, ++ { ++ AVR32_OPC_CACHE, 4, 0xf4100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_CACHE], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K11], ++ &avr32_ifield_table[AVR32_IFIELD_CACHEOP], ++ }, ++ }, ++ { ++ AVR32_OPC_CASTS_B, 2, 0x5c600000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_CASTS_B], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_CASTS_H, 2, 0x5c800000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_CASTS_H], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_CASTU_B, 2, 0x5c500000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_CASTU_B], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_CASTU_H, 2, 0x5c700000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_CASTU_H], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_CBR, 2, 0xa1c00000, 0xe1e00000, ++ &avr32_syntax_table[AVR32_SYNTAX_CBR], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_BIT5C], ++ }, ++ }, ++ { ++ AVR32_OPC_CLZ, 4, 0xe0001200, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_CLZ], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_COM, 2, 0x5cd00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_COM], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_COP, 4, 0xe1a00000, 0xf9f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_COP], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI], ++ &avr32_ifield_table[AVR32_IFIELD_CRX], ++ &avr32_ifield_table[AVR32_IFIELD_CRY], ++ &avr32_ifield_table[AVR32_IFIELD_CPOP], ++ }, ++ }, ++ { ++ AVR32_OPC_CP_B, 4, 0xe0001800, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_CP_B], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_CP_H, 4, 0xe0001900, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_CP_H], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_CP_W1, 2, 0x00300000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_CP_W1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_CP_W2, 2, 0x58000000, 0xfc000000, ++ &avr32_syntax_table[AVR32_SYNTAX_CP_W2], ++ BFD_RELOC_AVR32_6S, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K6], ++ }, ++ }, ++ { ++ AVR32_OPC_CP_W3, 4, 0xe0400000, 0xe1e00000, ++ &avr32_syntax_table[AVR32_SYNTAX_CP_W3], ++ BFD_RELOC_AVR32_21S, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_CPC1, 4, 0xe0001300, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_CPC1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_CPC2, 2, 0x5c200000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_CPC2], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_CSRF, 2, 0xd4030000, 0xfe0f0000, ++ &avr32_syntax_table[AVR32_SYNTAX_CSRF], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K5C], ++ }, ++ }, ++ { ++ AVR32_OPC_CSRFCZ, 2, 0xd0030000, 0xfe0f0000, ++ &avr32_syntax_table[AVR32_SYNTAX_CSRFCZ], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K5C], ++ }, ++ }, ++ { ++ AVR32_OPC_DIVS, 4, 0xe0000c00, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_DIVS], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_DIVU, 4, 0xe0000d00, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_DIVU], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_EOR1, 2, 0x00500000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_EOR1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_EOR2, 4, 0xe1e02000, 0xe1f0fe00, ++ &avr32_syntax_table[AVR32_SYNTAX_EOR2], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K5E2], ++ } ++ }, ++ { ++ AVR32_OPC_EOR3, 4, 0xe1e02200, 0xe1f0fe00, ++ &avr32_syntax_table[AVR32_SYNTAX_EOR3], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K5E2], ++ } ++ }, ++ { ++ AVR32_OPC_EORL, 4, 0xec100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_EORL], ++ BFD_RELOC_AVR32_16U, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_EORH, 4, 0xee100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_EORH], ++ BFD_RELOC_AVR32_16U, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_FRS, 2, 0xd7430000, 0xffff0000, ++ &avr32_syntax_table[AVR32_SYNTAX_FRS], ++ BFD_RELOC_UNUSED, 0, -1, { NULL }, ++ }, ++ { ++ AVR32_OPC_ICALL, 2, 0x5d100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ICALL], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_INCJOSP, 2, 0xd6830000, 0xff8f0000, ++ &avr32_syntax_table[AVR32_SYNTAX_INCJOSP], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K3], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_D1, 2, 0xa1010000, 0xe1f10000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_D1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_D2, 2, 0xa1100000, 0xe1f10000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_D2], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_D3, 2, 0xa1000000, 0xe1f10000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_D3], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_D5, 4, 0xe0000200, 0xe1f0ffc1, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_D5], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_DW], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_D4, 4, 0xe0e00000, 0xe1f10000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_D4], ++ BFD_RELOC_AVR32_16S, 3, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_SB2, 4, 0xe0000600, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_SB2], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_SB1, 4, 0xe1200000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_SB1], ++ BFD_RELOC_AVR32_16S, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_UB1, 2, 0x01300000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UB1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_UB2, 2, 0x01700000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UB2], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_UB5, 4, 0xe0000700, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UB5], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_UB3, 2, 0x01800000, 0xe1800000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UB3], ++ BFD_RELOC_AVR32_3U, 3, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K3], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_UB4, 4, 0xe1300000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UB4], ++ BFD_RELOC_AVR32_16S, 3, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_SH1, 2, 0x01100000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_SH1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_SH2, 2, 0x01500000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_SH2], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_SH5, 4, 0xe0000400, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_SH5], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_SH3, 2, 0x80000000, 0xe1800000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_SH3], ++ BFD_RELOC_AVR32_4UH, 3, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K3], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_SH4, 4, 0xe1000000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_SH4], ++ BFD_RELOC_AVR32_16S, 3, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_UH1, 2, 0x01200000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UH1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_UH2, 2, 0x01600000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UH2], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_UH5, 4, 0xe0000500, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UH5], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_UH3, 2, 0x80800000, 0xe1800000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UH3], ++ BFD_RELOC_AVR32_4UH, 3, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K3], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_UH4, 4, 0xe1100000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UH4], ++ BFD_RELOC_AVR32_16S, 3, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_W1, 2, 0x01000000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_W1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_W2, 2, 0x01400000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_W2], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_W5, 4, 0xe0000300, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_W5], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_W6, 4, 0xe0000f80, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_W6], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_W3, 2, 0x60000000, 0xe0000000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_W3], ++ BFD_RELOC_AVR32_7UW, 3, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K5C], ++ }, ++ }, ++ { ++ AVR32_OPC_LD_W4, 4, 0xe0f00000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LD_W4], ++ BFD_RELOC_AVR32_16S, 3, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_LDC_D1, 4, 0xe9a01000, 0xfff01100, ++ &avr32_syntax_table[AVR32_SYNTAX_LDC_D1], ++ BFD_RELOC_AVR32_10UW, 4, 3, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_LDC_D2, 4, 0xefa00050, 0xfff011ff, ++ &avr32_syntax_table[AVR32_SYNTAX_LDC_D2], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_LDC_D3, 4, 0xefa01040, 0xfff011c0, ++ &avr32_syntax_table[AVR32_SYNTAX_LDC_D3], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ }, ++ }, ++ { ++ AVR32_OPC_LDC_W1, 4, 0xe9a00000, 0xfff01000, ++ &avr32_syntax_table[AVR32_SYNTAX_LDC_W1], ++ BFD_RELOC_AVR32_10UW, 4, 3, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_LDC_W2, 4, 0xefa00040, 0xfff010ff, ++ &avr32_syntax_table[AVR32_SYNTAX_LDC_W2], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_LDC_W3, 4, 0xefa01000, 0xfff010c0, ++ &avr32_syntax_table[AVR32_SYNTAX_LDC_W3], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ }, ++ }, ++ { ++ AVR32_OPC_LDC0_D, 4, 0xf3a00000, 0xfff00100, ++ &avr32_syntax_table[AVR32_SYNTAX_LDC0_D], ++ BFD_RELOC_AVR32_14UW, 3, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K12CP], ++ }, ++ }, ++ { ++ AVR32_OPC_LDC0_W, 4, 0xf1a00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LDC0_W], ++ BFD_RELOC_AVR32_14UW, 3, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K12CP], ++ }, ++ }, ++ { ++ AVR32_OPC_LDCM_D, 4, 0xeda00400, 0xfff01f00, ++ &avr32_syntax_table[AVR32_SYNTAX_LDCM_D], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_LDCM_D_PU, 4, 0xeda01400, 0xfff01f00, ++ &avr32_syntax_table[AVR32_SYNTAX_LDCM_D_PU], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_LDCM_W, 4, 0xeda00000, 0xfff01e00, ++ &avr32_syntax_table[AVR32_SYNTAX_LDCM_W], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ &avr32_ifield_table[AVR32_IFIELD_CM_HL], ++ }, ++ }, ++ { ++ AVR32_OPC_LDCM_W_PU, 4, 0xeda01000, 0xfff01e00, ++ &avr32_syntax_table[AVR32_SYNTAX_LDCM_W_PU], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ &avr32_ifield_table[AVR32_IFIELD_CM_HL], ++ }, ++ }, ++ { ++ AVR32_OPC_LDDPC, 2, 0x48000000, 0xf8000000, ++ &avr32_syntax_table[AVR32_SYNTAX_LDDPC], ++ BFD_RELOC_AVR32_9UW_PCREL, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K7C], ++ }, ++ }, ++ { ++ AVR32_OPC_LDDPC_EXT, 4, 0xfef00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LDDPC_EXT], ++ BFD_RELOC_AVR32_16B_PCREL, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_LDDSP, 2, 0x40000000, 0xf8000000, ++ &avr32_syntax_table[AVR32_SYNTAX_LDDSP], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K7C], ++ }, ++ }, ++ { ++ AVR32_OPC_LDINS_B, 4, 0xe1d04000, 0xe1f0c000, ++ &avr32_syntax_table[AVR32_SYNTAX_LDINS_B], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_PART2_K12], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K12], ++ }, ++ }, ++ { ++ AVR32_OPC_LDINS_H, 4, 0xe1d00000, 0xe1f0e000, ++ &avr32_syntax_table[AVR32_SYNTAX_LDINS_H], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_PART1_K12], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K12], ++ }, ++ }, ++ { ++ AVR32_OPC_LDM, 4, 0xe1c00000, 0xfdf00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LDM], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_W], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_LDMTS, 4, 0xe5c00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LDMTS], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_LDMTS_PU, 4, 0xe7c00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LDMTS_PU], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_LDSWP_SH, 4, 0xe1d02000, 0xe1f0f000, ++ &avr32_syntax_table[AVR32_SYNTAX_LDSWP_SH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K12], ++ }, ++ }, ++ { ++ AVR32_OPC_LDSWP_UH, 4, 0xe1d03000, 0xe1f0f000, ++ &avr32_syntax_table[AVR32_SYNTAX_LDSWP_UH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K12], ++ }, ++ }, ++ { ++ AVR32_OPC_LDSWP_W, 4, 0xe1d08000, 0xe1f0f000, ++ &avr32_syntax_table[AVR32_SYNTAX_LDSWP_W], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K12], ++ }, ++ }, ++ { ++ AVR32_OPC_LSL1, 4, 0xe0000940, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_LSL1], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_LSL3, 4, 0xe0001500, 0xe1f0ffe0, ++ &avr32_syntax_table[AVR32_SYNTAX_LSL3], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K5E], ++ }, ++ }, ++ { ++ AVR32_OPC_LSL2, 2, 0xa1600000, 0xe1e00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LSL2], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_BIT5C], ++ }, ++ }, ++ { ++ AVR32_OPC_LSR1, 4, 0xe0000a40, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_LSR1], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_LSR3, 4, 0xe0001600, 0xe1f0ffe0, ++ &avr32_syntax_table[AVR32_SYNTAX_LSR3], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K5E], ++ }, ++ }, ++ { ++ AVR32_OPC_LSR2, 2, 0xa1800000, 0xe1e00000, ++ &avr32_syntax_table[AVR32_SYNTAX_LSR2], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_BIT5C], ++ }, ++ }, ++ { ++ AVR32_OPC_MAC, 4, 0xe0000340, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_MAC], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_MACHH_D, 4, 0xe0000580, 0xe1f0ffc1, ++ &avr32_syntax_table[AVR32_SYNTAX_MACHH_D], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_MACHH_W, 4, 0xe0000480, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_MACHH_W], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_MACS_D, 4, 0xe0000540, 0xe1f0fff1, ++ &avr32_syntax_table[AVR32_SYNTAX_MACS_D], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_MACSATHH_W, 4, 0xe0000680, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_MACSATHH_W], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_MACUD, 4, 0xe0000740, 0xe1f0fff1, ++ &avr32_syntax_table[AVR32_SYNTAX_MACUD], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_MACWH_D, 4, 0xe0000c80, 0xe1f0ffe1, ++ &avr32_syntax_table[AVR32_SYNTAX_MACWH_D], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_MAX, 4, 0xe0000c40, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_MAX], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_MCALL, 4, 0xf0100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_MCALL], ++ BFD_RELOC_AVR32_18W_PCREL, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_MFDR, 4, 0xe5b00000, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MFDR], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MFSR, 4, 0xe1b00000, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MFSR], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MIN, 4, 0xe0000d40, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_MIN], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_MOV3, 2, 0x00900000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_MOV3], ++ BFD_RELOC_NONE, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOV1, 2, 0x30000000, 0xf0000000, ++ &avr32_syntax_table[AVR32_SYNTAX_MOV1], ++ BFD_RELOC_AVR32_8S, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8C], ++ }, ++ }, ++ { ++ AVR32_OPC_MOV2, 4, 0xe0600000, 0xe1e00000, ++ &avr32_syntax_table[AVR32_SYNTAX_MOV2], ++ BFD_RELOC_AVR32_21S, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVEQ1, 4, 0xe0001700, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVEQ1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVNE1, 4, 0xe0001710, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVNE1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVCC1, 4, 0xe0001720, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVHS1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVCS1, 4, 0xe0001730, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLO1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVGE1, 4, 0xe0001740, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVGE1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVLT1, 4, 0xe0001750, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLT1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVMI1, 4, 0xe0001760, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVMI1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVPL1, 4, 0xe0001770, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVPL1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVLS1, 4, 0xe0001780, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLS1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVGT1, 4, 0xe0001790, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVGT1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVLE1, 4, 0xe00017a0, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLE1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVHI1, 4, 0xe00017b0, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVHI1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVVS1, 4, 0xe00017c0, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVVS1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVVC1, 4, 0xe00017d0, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVVC1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVQS1, 4, 0xe00017e0, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVQS1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVAL1, 4, 0xe00017f0, 0xe1f0ffff, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVAL1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVEQ2, 4, 0xf9b00000, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVEQ2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVNE2, 4, 0xf9b00100, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVNE2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVCC2, 4, 0xf9b00200, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVHS2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVCS2, 4, 0xf9b00300, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLO2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVGE2, 4, 0xf9b00400, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVGE2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVLT2, 4, 0xf9b00500, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLT2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVMI2, 4, 0xf9b00600, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVMI2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVPL2, 4, 0xf9b00700, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVPL2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVLS2, 4, 0xf9b00800, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLS2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVGT2, 4, 0xf9b00900, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVGT2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVLE2, 4, 0xf9b00a00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLE2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVHI2, 4, 0xf9b00b00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVHI2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVVS2, 4, 0xf9b00c00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVVS2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVVC2, 4, 0xf9b00d00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVVC2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVQS2, 4, 0xf9b00e00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVQS2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MOVAL2, 4, 0xf9b00f00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MOVAL2], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MTDR, 4, 0xe7b00000, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MTDR], ++ BFD_RELOC_AVR32_8S_EXT, 2, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_MTSR, 4, 0xe3b00000, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MTSR], ++ BFD_RELOC_AVR32_8S_EXT, 2, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_MUL1, 2, 0xa1300000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_MUL1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_MUL2, 4, 0xe0000240, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_MUL2], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_MUL3, 4, 0xe0001000, 0xe1f0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_MUL3], ++ BFD_RELOC_AVR32_8S_EXT, 3, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_MULHH_W, 4, 0xe0000780, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_MULHH_W], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_MULNHH_W, 4, 0xe0000180, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_MULNHH_W], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_MULNWH_D, 4, 0xe0000280, 0xe1f0ffe1, ++ &avr32_syntax_table[AVR32_SYNTAX_MULNWH_D], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_MULSD, 4, 0xe0000440, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_MULSD], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_MULSATHH_H, 4, 0xe0000880, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_H], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_MULSATHH_W, 4, 0xe0000980, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_W], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_MULSATRNDHH_H, 4, 0xe0000a80, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDHH_H], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_MULSATRNDWH_W, 4, 0xe0000b80, 0xe1f0ffe0, ++ &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDWH_W], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_MULSATWH_W, 4, 0xe0000e80, 0xe1f0ffe0, ++ &avr32_syntax_table[AVR32_SYNTAX_MULSATWH_W], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_MULU_D, 4, 0xe0000640, 0xe1f0fff1, ++ &avr32_syntax_table[AVR32_SYNTAX_MULU_D], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_MULWH_D, 4, 0xe0000d80, 0xe1f0ffe1, ++ &avr32_syntax_table[AVR32_SYNTAX_MULWH_D], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_MUSFR, 2, 0x5d300000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_MUSFR], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ } ++ }, ++ { ++ AVR32_OPC_MUSTR, 2, 0x5d200000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_MUSTR], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ } ++ }, ++ { ++ AVR32_OPC_MVCR_D, 4, 0xefa00010, 0xfff111ff, ++ &avr32_syntax_table[AVR32_SYNTAX_MVCR_D], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW], ++ }, ++ }, ++ { ++ AVR32_OPC_MVCR_W, 4, 0xefa00000, 0xfff010ff, ++ &avr32_syntax_table[AVR32_SYNTAX_MVCR_W], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI], ++ }, ++ }, ++ { ++ AVR32_OPC_MVRC_D, 4, 0xefa00030, 0xfff111ff, ++ &avr32_syntax_table[AVR32_SYNTAX_MVRC_D], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW], ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW], ++ }, ++ }, ++ { ++ AVR32_OPC_MVRC_W, 4, 0xefa00020, 0xfff010ff, ++ &avr32_syntax_table[AVR32_SYNTAX_MVRC_W], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_NEG, 2, 0x5c300000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_NEG], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ } ++ }, ++ { ++ AVR32_OPC_NOP, 2, 0xd7030000, 0xffff0000, ++ &avr32_syntax_table[AVR32_SYNTAX_NOP], ++ BFD_RELOC_UNUSED, 0, -1, { NULL }, ++ }, ++ { ++ AVR32_OPC_OR1, 2, 0x00400000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_OR1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_OR2, 4, 0xe1e01000, 0xe1f0fe00, ++ &avr32_syntax_table[AVR32_SYNTAX_OR2], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K5E2], ++ }, ++ }, ++ { ++ AVR32_OPC_OR3, 4, 0xe1e01200, 0xe1f0fe00, ++ &avr32_syntax_table[AVR32_SYNTAX_OR3], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K5E2], ++ }, ++ }, ++ { ++ AVR32_OPC_ORH, 4, 0xea100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ORH], ++ BFD_RELOC_AVR32_16U, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_ORL, 4, 0xe8100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ORL], ++ BFD_RELOC_AVR32_16U, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_PABS_SB, 4, 0xe00023e0, 0xfff0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PABS_SB], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PABS_SH, 4, 0xe00023f0, 0xfff0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PABS_SH], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PACKSH_SB, 4, 0xe00024d0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PACKSH_SB], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PACKSH_UB, 4, 0xe00024c0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PACKSH_UB], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PACKW_SH, 4, 0xe0002470, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PACKW_SH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PADD_B, 4, 0xe0002300, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADD_B], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PADD_H, 4, 0xe0002000, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADD_H], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PADDH_SH, 4, 0xe00020c0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADDH_SH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PADDH_UB, 4, 0xe0002360, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADDH_UB], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PADDS_SB, 4, 0xe0002320, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADDS_SB], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PADDS_SH, 4, 0xe0002040, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADDS_SH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PADDS_UB, 4, 0xe0002340, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADDS_UB], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PADDS_UH, 4, 0xe0002080, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADDS_UH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PADDSUB_H, 4, 0xe0002100, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADDSUB_H], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_PADDSUBH_SH, 4, 0xe0002280, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADDSUBH_SH], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_PADDSUBS_SH, 4, 0xe0002180, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_SH], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_PADDSUBS_UH, 4, 0xe0002200, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_UH], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_PADDX_H, 4, 0xe0002020, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADDX_H], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PADDXH_SH, 4, 0xe00020e0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADDXH_SH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PADDXS_SH, 4, 0xe0002060, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADDXS_SH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PADDXS_UH, 4, 0xe00020a0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PADDXS_UH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PASR_B, 4, 0xe0002410, 0xe1f8fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PASR_B], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_COND3], ++ }, ++ }, ++ { ++ AVR32_OPC_PASR_H, 4, 0xe0002440, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PASR_H], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PAVG_SH, 4, 0xe00023d0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PAVG_SH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PAVG_UB, 4, 0xe00023c0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PAVG_UB], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PLSL_B, 4, 0xe0002420, 0xe1f8fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PLSL_B], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_COND3], ++ }, ++ }, ++ { ++ AVR32_OPC_PLSL_H, 4, 0xe0002450, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PLSL_H], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PLSR_B, 4, 0xe0002430, 0xe1f8fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PLSR_B], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_COND3], ++ }, ++ }, ++ { ++ AVR32_OPC_PLSR_H, 4, 0xe0002460, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PLSR_H], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PMAX_SH, 4, 0xe0002390, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PMAX_SH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PMAX_UB, 4, 0xe0002380, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PMAX_UB], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PMIN_SH, 4, 0xe00023b0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PMIN_SH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PMIN_UB, 4, 0xe00023a0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PMIN_UB], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_POPJC, 2, 0xd7130000, 0xffff0000, ++ &avr32_syntax_table[AVR32_SYNTAX_POPJC], ++ BFD_RELOC_UNUSED, 0, -1, { NULL }, ++ }, ++ { ++ AVR32_OPC_POPM, 2, 0xd0020000, 0xf0070000, ++ &avr32_syntax_table[AVR32_SYNTAX_POPM], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_POPM], ++ }, ++ }, ++ { ++ AVR32_OPC_POPM_E, 4, 0xe3cd0000, 0xffff0000, ++ &avr32_syntax_table[AVR32_SYNTAX_POPM_E], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_PREF, 4, 0xf2100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_PREF], ++ BFD_RELOC_AVR32_16S, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_PSAD, 4, 0xe0002400, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSAD], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUB_B, 4, 0xe0002310, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUB_B], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUB_H, 4, 0xe0002010, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUB_H], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUBADD_H, 4, 0xe0002140, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBADD_H], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUBADDH_SH, 4, 0xe00022c0, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBADDH_SH], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUBADDS_SH, 4, 0xe00021c0, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_SH], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUBADDS_UH, 4, 0xe0002240, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_UH], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUBH_SH, 4, 0xe00020d0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBH_SH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUBH_UB, 4, 0xe0002370, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBH_UB], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUBS_SB, 4, 0xe0002330, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SB], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUBS_SH, 4, 0xe0002050, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUBS_UB, 4, 0xe0002350, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UB], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUBS_UH, 4, 0xe0002090, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUBX_H, 4, 0xe0002030, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBX_H], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUBXH_SH, 4, 0xe00020f0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBXH_SH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUBXS_SH, 4, 0xe0002070, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_SH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PSUBXS_UH, 4, 0xe00020b0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_UH], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_PUNPCKSB_H, 4, 0xe00024a0, 0xe1ffffe0, ++ &avr32_syntax_table[AVR32_SYNTAX_PUNPCKSB_H], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_PUNPCKUB_H, 4, 0xe0002480, 0xe1ffffe0, ++ &avr32_syntax_table[AVR32_SYNTAX_PUNPCKUB_H], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_PUSHJC, 2, 0xd7230000, 0xffff0000, ++ &avr32_syntax_table[AVR32_SYNTAX_PUSHJC], ++ BFD_RELOC_UNUSED, 0, -1, { NULL }, ++ }, ++ { ++ AVR32_OPC_PUSHM, 2, 0xd0010000, 0xf00f0000, ++ &avr32_syntax_table[AVR32_SYNTAX_PUSHM], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K8C], ++ }, ++ }, ++ { ++ AVR32_OPC_PUSHM_E, 4, 0xebcd0000, 0xffff0000, ++ &avr32_syntax_table[AVR32_SYNTAX_PUSHM_E], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_RCALL1, 2, 0xc00c0000, 0xf00c0000, ++ &avr32_syntax_table[AVR32_SYNTAX_RCALL1], ++ BFD_RELOC_AVR32_11H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K10], ++ }, ++ }, ++ { ++ AVR32_OPC_RCALL2, 4, 0xe0a00000, 0xe1ef0000, ++ &avr32_syntax_table[AVR32_SYNTAX_RCALL2], ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_RETEQ, 2, 0x5e000000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETEQ], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETNE, 2, 0x5e100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETNE], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETCC, 2, 0x5e200000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETHS], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETCS, 2, 0x5e300000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETLO], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETGE, 2, 0x5e400000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETGE], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETLT, 2, 0x5e500000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETLT], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETMI, 2, 0x5e600000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETMI], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETPL, 2, 0x5e700000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETPL], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETLS, 2, 0x5e800000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETLS], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETGT, 2, 0x5e900000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETGT], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETLE, 2, 0x5ea00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETLE], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETHI, 2, 0x5eb00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETHI], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETVS, 2, 0x5ec00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETVS], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETVC, 2, 0x5ed00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETVC], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETQS, 2, 0x5ee00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETQS], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETAL, 2, 0x5ef00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETAL], ++ BFD_RELOC_NONE, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_RETD, 2, 0xd6230000, 0xffff0000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETD], ++ BFD_RELOC_NONE, 0, -1, { NULL }, ++ }, ++ { ++ AVR32_OPC_RETE, 2, 0xd6030000, 0xffff0000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETE], ++ BFD_RELOC_NONE, 0, -1, { NULL }, ++ }, ++ { ++ AVR32_OPC_RETJ, 2, 0xd6330000, 0xffff0000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETJ], ++ BFD_RELOC_NONE, 0, -1, { NULL }, ++ }, ++ { ++ AVR32_OPC_RETS, 2, 0xd6130000, 0xffff0000, ++ &avr32_syntax_table[AVR32_SYNTAX_RETS], ++ BFD_RELOC_NONE, 0, -1, { NULL }, ++ }, ++ { ++ AVR32_OPC_RJMP, 2, 0xc0080000, 0xf00c0000, ++ &avr32_syntax_table[AVR32_SYNTAX_RJMP], ++ BFD_RELOC_AVR32_11H_PCREL, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K10], ++ }, ++ }, ++ { ++ AVR32_OPC_ROL, 2, 0x5cf00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ROL], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ } ++ }, ++ { ++ AVR32_OPC_ROR, 2, 0x5d000000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ROR], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ } ++ }, ++ { ++ AVR32_OPC_RSUB1, 2, 0x00200000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_RSUB1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_RSUB2, 4, 0xe0001100, 0xe1f0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_RSUB2], ++ BFD_RELOC_AVR32_8S_EXT, 3, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SATADD_H, 4, 0xe00002c0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_SATADD_H], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SATADD_W, 4, 0xe00000c0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_SATADD_W], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SATRNDS, 4, 0xf3b00000, 0xfff0fc00, ++ &avr32_syntax_table[AVR32_SYNTAX_SATRNDS], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K5E], ++ &avr32_ifield_table[AVR32_IFIELD_S5], ++ }, ++ }, ++ { ++ AVR32_OPC_SATRNDU, 4, 0xf3b00400, 0xfff0fc00, ++ &avr32_syntax_table[AVR32_SYNTAX_SATRNDU], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K5E], ++ &avr32_ifield_table[AVR32_IFIELD_S5], ++ }, ++ }, ++ { ++ AVR32_OPC_SATS, 4, 0xf1b00000, 0xfff0fc00, ++ &avr32_syntax_table[AVR32_SYNTAX_SATS], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K5E], ++ &avr32_ifield_table[AVR32_IFIELD_S5], ++ }, ++ }, ++ { ++ AVR32_OPC_SATSUB_H, 4, 0xe00003c0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_SATSUB_H], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SATSUB_W1, 4, 0xe00001c0, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W1], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SATSUB_W2, 4, 0xe0d00000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W2], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_SATU, 4, 0xf1b00400, 0xfff0fc00, ++ &avr32_syntax_table[AVR32_SYNTAX_SATU], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K5E], ++ &avr32_ifield_table[AVR32_IFIELD_S5], ++ }, ++ }, ++ { ++ AVR32_OPC_SBC, 4, 0xe0000140, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_SBC], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SBR, 2, 0xa1a00000, 0xe1e00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SBR], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_BIT5C], ++ }, ++ }, ++ { ++ AVR32_OPC_SCALL, 2, 0xd7330000, 0xffff0000, ++ &avr32_syntax_table[AVR32_SYNTAX_SCALL], ++ BFD_RELOC_UNUSED, 0, -1, { NULL }, ++ }, ++ { ++ AVR32_OPC_SCR, 2, 0x5c100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SCR], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SLEEP, 4, 0xe9b00000, 0xffffff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SLEEP], ++ BFD_RELOC_AVR32_8S_EXT, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SREQ, 2, 0x5f000000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SREQ], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SRNE, 2, 0x5f100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SRNE], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SRCC, 2, 0x5f200000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SRHS], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SRCS, 2, 0x5f300000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SRLO], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SRGE, 2, 0x5f400000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SRGE], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SRLT, 2, 0x5f500000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SRLT], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SRMI, 2, 0x5f600000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SRMI], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SRPL, 2, 0x5f700000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SRPL], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SRLS, 2, 0x5f800000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SRLS], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SRGT, 2, 0x5f900000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SRGT], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SRLE, 2, 0x5fa00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SRLE], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SRHI, 2, 0x5fb00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SRHI], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SRVS, 2, 0x5fc00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SRVS], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SRVC, 2, 0x5fd00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SRVC], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SRQS, 2, 0x5fe00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SRQS], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SRAL, 2, 0x5ff00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SRAL], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SSRF, 2, 0xd2030000, 0xfe0f0000, ++ &avr32_syntax_table[AVR32_SYNTAX_SSRF], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K5C], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_B1, 2, 0x00c00000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_B1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_B2, 2, 0x00f00000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_B2], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_B5, 4, 0xe0000b00, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_B5], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_B3, 2, 0xa0800000, 0xe1800000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_B3], ++ BFD_RELOC_AVR32_3U, 3, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K3], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_B4, 4, 0xe1600000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_B4], ++ BFD_RELOC_AVR32_16S, 3, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_D1, 2, 0xa1200000, 0xe1f10000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_D1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_D2, 2, 0xa1210000, 0xe1f10000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_D2], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_D3, 2, 0xa1110000, 0xe1f10000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_D3], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_D5, 4, 0xe0000800, 0xe1f0ffc1, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_D5], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ &avr32_ifield_table[AVR32_IFIELD_RD_DW], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_D4, 4, 0xe0e10000, 0xe1f10000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_D4], ++ BFD_RELOC_AVR32_16S, 3, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_H1, 2, 0x00b00000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_H1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_H2, 2, 0x00e00000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_H2], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_H5, 4, 0xe0000a00, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_H5], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_H3, 2, 0xa0000000, 0xe1800000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_H3], ++ BFD_RELOC_AVR32_4UH, 3, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K3], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_H4, 4, 0xe1500000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_H4], ++ BFD_RELOC_AVR32_16S, 3, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_W1, 2, 0x00a00000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_W1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_W2, 2, 0x00d00000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_W2], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_W5, 4, 0xe0000900, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_W5], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_W3, 2, 0x81000000, 0xe1000000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_W3], ++ BFD_RELOC_AVR32_6UW, 3, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K4], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_ST_W4, 4, 0xe1400000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_ST_W4], ++ BFD_RELOC_AVR32_16S, 3, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_STC_D1, 4, 0xeba01000, 0xfff01100, ++ &avr32_syntax_table[AVR32_SYNTAX_STC_D1], ++ BFD_RELOC_AVR32_10UW, 4, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW], ++ }, ++ }, ++ { ++ AVR32_OPC_STC_D2, 4, 0xefa00070, 0xfff011f0, ++ &avr32_syntax_table[AVR32_SYNTAX_STC_D2], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW], ++ }, ++ }, ++ { ++ AVR32_OPC_STC_D3, 4, 0xefa010c0, 0xfff011c0, ++ &avr32_syntax_table[AVR32_SYNTAX_STC_D3], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW], ++ }, ++ }, ++ { ++ AVR32_OPC_STC_W1, 4, 0xeba00000, 0xfff01000, ++ &avr32_syntax_table[AVR32_SYNTAX_STC_W1], ++ BFD_RELOC_AVR32_10UW, 4, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI], ++ }, ++ }, ++ { ++ AVR32_OPC_STC_W2, 4, 0xefa00060, 0xfff010ff, ++ &avr32_syntax_table[AVR32_SYNTAX_STC_W2], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI], ++ }, ++ }, ++ { ++ AVR32_OPC_STC_W3, 4, 0xefa01080, 0xfff010c0, ++ &avr32_syntax_table[AVR32_SYNTAX_STC_W3], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI], ++ }, ++ }, ++ { ++ AVR32_OPC_STC0_D, 4, 0xf7a00000, 0xfff00100, ++ &avr32_syntax_table[AVR32_SYNTAX_STC0_D], ++ BFD_RELOC_AVR32_14UW, 3, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K12CP], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW], ++ }, ++ }, ++ { ++ AVR32_OPC_STC0_W, 4, 0xf5a00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_STC0_W], ++ BFD_RELOC_AVR32_14UW, 3, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K12CP], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI], ++ }, ++ }, ++ { ++ AVR32_OPC_STCM_D, 4, 0xeda00500, 0xfff01f00, ++ &avr32_syntax_table[AVR32_SYNTAX_STCM_D], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_STCM_D_PU, 4, 0xeda01500, 0xfff01f00, ++ &avr32_syntax_table[AVR32_SYNTAX_STCM_D_PU], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_STCM_W, 4, 0xeda00200, 0xfff01e00, ++ &avr32_syntax_table[AVR32_SYNTAX_STCM_W], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ &avr32_ifield_table[AVR32_IFIELD_CM_HL], ++ }, ++ }, ++ { ++ AVR32_OPC_STCM_W_PU, 4, 0xeda01200, 0xfff01e00, ++ &avr32_syntax_table[AVR32_SYNTAX_STCM_W_PU], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_CPNO], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ &avr32_ifield_table[AVR32_IFIELD_CM_HL], ++ }, ++ }, ++ { ++ AVR32_OPC_STCOND, 4, 0xe1700000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_STCOND], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_STDSP, 2, 0x50000000, 0xf8000000, ++ &avr32_syntax_table[AVR32_SYNTAX_STDSP], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K7C], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_STHH_W2, 4, 0xe1e08000, 0xe1f0c0c0, ++ &avr32_syntax_table[AVR32_SYNTAX_STHH_W2], ++ BFD_RELOC_UNUSED, 7, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X2], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y2], ++ }, ++ }, ++ { ++ AVR32_OPC_STHH_W1, 4, 0xe1e0c000, 0xe1f0c000, ++ &avr32_syntax_table[AVR32_SYNTAX_STHH_W1], ++ BFD_RELOC_AVR32_STHH_W, 6, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_K8E2], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X2], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y2], ++ }, ++ }, ++ { ++ AVR32_OPC_STM, 4, 0xe9c00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_STM], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_STM_PU, 4, 0xebc00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_STM_PU], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_STMTS, 4, 0xedc00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_STMTS], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_STMTS_PU, 4, 0xefc00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_STMTS_PU], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_STSWP_H, 4, 0xe1d09000, 0xe1f0f000, ++ &avr32_syntax_table[AVR32_SYNTAX_STSWP_H], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K12], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_STSWP_W, 4, 0xe1d0a000, 0xe1f0f000, ++ &avr32_syntax_table[AVR32_SYNTAX_STSWP_W], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K12], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_SUB1, 2, 0x00100000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SUB1], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_SUB2, 4, 0xe0000100, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_SUB2], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K2], ++ }, ++ }, ++ { ++ AVR32_OPC_SUB5, 4, 0xe0c00000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SUB5], ++ BFD_RELOC_AVR32_SUB5, 3, 2, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_K16], ++ }, ++ }, ++ { ++ AVR32_OPC_SUB3_SP, 2, 0x200d0000, 0xf00f0000, ++ &avr32_syntax_table[AVR32_SYNTAX_SUB3_SP], ++ BFD_RELOC_AVR32_10SW, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8C], ++ }, ++ }, ++ { ++ AVR32_OPC_SUB3, 2, 0x20000000, 0xf0000000, ++ &avr32_syntax_table[AVR32_SYNTAX_SUB3], ++ BFD_RELOC_AVR32_8S, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8C], ++ }, ++ }, ++ { ++ AVR32_OPC_SUB4, 4, 0xe0200000, 0xe1e00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SUB4], ++ BFD_RELOC_AVR32_21S, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K21], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBEQ, 4, 0xf7b00000, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBEQ], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBNE, 4, 0xf7b00100, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBNE], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBCC, 4, 0xf7b00200, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBHS], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBCS, 4, 0xf7b00300, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBLO], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBGE, 4, 0xf7b00400, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBGE], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBLT, 4, 0xf7b00500, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBLT], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBMI, 4, 0xf7b00600, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBMI], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBPL, 4, 0xf7b00700, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBPL], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBLS, 4, 0xf7b00800, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBLS], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBGT, 4, 0xf7b00900, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBGT], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBLE, 4, 0xf7b00a00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBLE], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBHI, 4, 0xf7b00b00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBHI], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBVS, 4, 0xf7b00c00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBVS], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBVC, 4, 0xf7b00d00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBVC], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBQS, 4, 0xf7b00e00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBQS], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBAL, 4, 0xf7b00f00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBAL], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFEQ, 4, 0xf5b00000, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFEQ], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFNE, 4, 0xf5b00100, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFNE], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFCC, 4, 0xf5b00200, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFHS], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFCS, 4, 0xf5b00300, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFLO], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFGE, 4, 0xf5b00400, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFGE], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFLT, 4, 0xf5b00500, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFLT], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFMI, 4, 0xf5b00600, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFMI], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFPL, 4, 0xf5b00700, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFPL], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFLS, 4, 0xf5b00800, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFLS], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFGT, 4, 0xf5b00900, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFGT], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFLE, 4, 0xf5b00a00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFLE], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFHI, 4, 0xf5b00b00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFHI], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFVS, 4, 0xf5b00c00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFVS], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFVC, 4, 0xf5b00d00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFVC], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFQS, 4, 0xf5b00e00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFQS], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBFAL, 4, 0xf5b00f00, 0xfff0ff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFAL], ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ }, ++ }, ++ { ++ AVR32_OPC_SUBHH_W, 4, 0xe0000f00, 0xe1f0ffc0, ++ &avr32_syntax_table[AVR32_SYNTAX_SUBHH_W], ++ BFD_RELOC_UNUSED, 5, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_X], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_Y], ++ }, ++ }, ++ { ++ AVR32_OPC_SWAP_B, 2, 0x5cb00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SWAP_B], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ } ++ }, ++ { ++ AVR32_OPC_SWAP_BH, 2, 0x5cc00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SWAP_BH], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ } ++ }, ++ { ++ AVR32_OPC_SWAP_H, 2, 0x5ca00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_SWAP_H], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ } ++ }, ++ { ++ AVR32_OPC_SYNC, 4, 0xebb00000, 0xffffff00, ++ &avr32_syntax_table[AVR32_SYNTAX_SYNC], ++ BFD_RELOC_AVR32_8S_EXT, 1, 0, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_K8E], ++ } ++ }, ++ { ++ AVR32_OPC_TLBR, 2, 0xd6430000, 0xffff0000, ++ &avr32_syntax_table[AVR32_SYNTAX_TLBR], ++ BFD_RELOC_UNUSED, 0, -1, { NULL }, ++ }, ++ { ++ AVR32_OPC_TLBS, 2, 0xd6530000, 0xffff0000, ++ &avr32_syntax_table[AVR32_SYNTAX_TLBS], ++ BFD_RELOC_UNUSED, 0, -1, { NULL }, ++ }, ++ { ++ AVR32_OPC_TLBW, 2, 0xd6630000, 0xffff0000, ++ &avr32_syntax_table[AVR32_SYNTAX_TLBW], ++ BFD_RELOC_UNUSED, 0, -1, { NULL }, ++ }, ++ { ++ AVR32_OPC_TNBZ, 2, 0x5ce00000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_TNBZ], ++ BFD_RELOC_UNUSED, 1, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ } ++ }, ++ { ++ AVR32_OPC_TST, 2, 0x00700000, 0xe1f00000, ++ &avr32_syntax_table[AVR32_SYNTAX_TST], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ }, ++ }, ++ { ++ AVR32_OPC_XCHG, 4, 0xe0000b40, 0xe1f0fff0, ++ &avr32_syntax_table[AVR32_SYNTAX_XCHG], ++ BFD_RELOC_UNUSED, 3, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ }, ++ }, ++ { ++ AVR32_OPC_MEMC, 4, 0xf6100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_MEMC], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_MEM15], ++ &avr32_ifield_table[AVR32_IFIELD_MEMB5], ++ }, ++ }, ++ { ++ AVR32_OPC_MEMS, 4, 0xf8100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_MEMS], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_MEM15], ++ &avr32_ifield_table[AVR32_IFIELD_MEMB5], ++ }, ++ }, ++ { ++ AVR32_OPC_MEMT, 4, 0xfa100000, 0xfff00000, ++ &avr32_syntax_table[AVR32_SYNTAX_MEMT], ++ BFD_RELOC_UNUSED, 2, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_MEM15], ++ &avr32_ifield_table[AVR32_IFIELD_MEMB5], ++ }, ++ }, ++ { ++ AVR32_OPC_BFEXTS, 4, 0xe1d0b000, 0xe1f0fc00, ++ &avr32_syntax_table[AVR32_SYNTAX_BFEXTS], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_S5], ++ &avr32_ifield_table[AVR32_IFIELD_K5E], ++ }, ++ }, ++ { ++ AVR32_OPC_BFEXTU, 4, 0xe1d0c000, 0xe1f0fc00, ++ &avr32_syntax_table[AVR32_SYNTAX_BFEXTU], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_S5], ++ &avr32_ifield_table[AVR32_IFIELD_K5E], ++ }, ++ }, ++ { ++ AVR32_OPC_BFINS, 4, 0xe1d0d000, 0xe1f0fc00, ++ &avr32_syntax_table[AVR32_SYNTAX_BFINS], ++ BFD_RELOC_UNUSED, 4, -1, ++ { ++ &avr32_ifield_table[AVR32_IFIELD_RX], ++ &avr32_ifield_table[AVR32_IFIELD_RY], ++ &avr32_ifield_table[AVR32_IFIELD_S5], ++ &avr32_ifield_table[AVR32_IFIELD_K5E], ++ }, ++ }, ++ }; ++ ++#define FPALIAS_DXY(name, opcode) \ ++ { \ ++ AVR32_ALIAS_##name##_S, \ ++ &avr32_opc_table[AVR32_OPC_COP], \ ++ { \ ++ { 0, 0 }, \ ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, \ ++ { 0, opcode }, \ ++ }, \ ++ }, { \ ++ AVR32_ALIAS_##name##_D, \ ++ &avr32_opc_table[AVR32_OPC_COP], \ ++ { \ ++ { 0, 0 }, \ ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, \ ++ { 0, (opcode) | 0x40 }, \ ++ }, \ ++ } ++#define FPALIAS_DX(name, opcode) \ ++ { \ ++ AVR32_ALIAS_##name##_S, \ ++ &avr32_opc_table[AVR32_OPC_COP], \ ++ { \ ++ { 0, 0 }, \ ++ { 1, 0 }, { 1, 1 }, { 0, 0 }, \ ++ { 0, opcode }, \ ++ }, \ ++ }, { \ ++ AVR32_ALIAS_##name##_D, \ ++ &avr32_opc_table[AVR32_OPC_COP], \ ++ { \ ++ { 0, 0 }, \ ++ { 1, 0 }, { 1, 1 }, { 0, 0 }, \ ++ { 0, (opcode) | 0x40 }, \ ++ }, \ ++ } ++#define FPALIAS_XY(name, opcode) \ ++ { \ ++ AVR32_ALIAS_##name##_S, \ ++ &avr32_opc_table[AVR32_OPC_COP], \ ++ { \ ++ { 0, 0 }, \ ++ { 0, 0 }, { 1, 0 }, { 1, 1 }, \ ++ { 0, opcode }, \ ++ }, \ ++ }, { \ ++ AVR32_ALIAS_##name##_D, \ ++ &avr32_opc_table[AVR32_OPC_COP], \ ++ { \ ++ { 0, 0 }, \ ++ { 0, 0 }, { 1, 0 }, { 1, 1 }, \ ++ { 0, (opcode) | 0x40 }, \ ++ }, \ ++ } ++ ++const struct avr32_alias avr32_alias_table[] = ++ { ++ FPALIAS_DXY(FMAC, 0x00), ++ FPALIAS_DXY(FNMAC, 0x01), ++ FPALIAS_DXY(FMSC, 0x02), ++ FPALIAS_DXY(FNMSC, 0x03), ++ FPALIAS_DXY(FADD, 0x04), ++ FPALIAS_DXY(FSUB, 0x05), ++ FPALIAS_DXY(FMUL, 0x06), ++ FPALIAS_DXY(FNMUL, 0x07), ++ FPALIAS_DX(FNEG, 0x08), ++ FPALIAS_DX(FABS, 0x09), ++ FPALIAS_XY(FCMP, 0x0d), ++ FPALIAS_DX(FMOV1, 0x0a), ++ { ++ AVR32_ALIAS_FMOV2_S, ++ &avr32_opc_table[AVR32_OPC_MVCR_W], ++ { { 0, 0 }, { 1, 0 }, { 1, 1 }, }, ++ }, ++ { ++ AVR32_ALIAS_FMOV2_D, ++ &avr32_opc_table[AVR32_OPC_MVCR_D], ++ { { 0, 0 }, { 1, 0 }, { 1, 1 }, }, ++ }, ++ { ++ AVR32_ALIAS_FMOV3_S, ++ &avr32_opc_table[AVR32_OPC_MVRC_W], ++ { { 0, 0 }, { 1, 0 }, { 1, 1 }, }, ++ }, ++ { ++ AVR32_ALIAS_FMOV3_D, ++ &avr32_opc_table[AVR32_OPC_MVRC_D], ++ { { 0, 0 }, { 1, 0 }, { 1, 1 }, }, ++ }, ++ { ++ AVR32_ALIAS_FCASTS_D, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, 0 }, ++ { 1, 0 }, { 1, 1 }, { 0, 0 }, ++ { 0, 0x0f }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_FCASTD_S, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, 0 }, ++ { 1, 0 }, { 1, 1 }, { 0, 0 }, ++ { 0, 0x10 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOSVMAC0, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x0c }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOSVMAC1, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x0d }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOSVMAC2, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x0e }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOSVMAC3, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x0f }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOSVMUL0, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x08 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOSVMUL1, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x09 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOSVMUL2, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x0a }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOSVMUL3, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x0b }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOVMAC0, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x04 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOVMAC1, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x05 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOVMAC2, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x06 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOVMAC3, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x07 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOVMUL0, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x00 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOVMUL1, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x01 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOVMUL2, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x02 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOVMUL3, ++ &avr32_opc_table[AVR32_OPC_COP], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ { 0, 0x03 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOLD_D1, ++ &avr32_opc_table[AVR32_OPC_LDC_D1], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOLD_D2, ++ &avr32_opc_table[AVR32_OPC_LDC_D2], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOLD_D3, ++ &avr32_opc_table[AVR32_OPC_LDC_D3], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOLD_W1, ++ &avr32_opc_table[AVR32_OPC_LDC_W1], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOLD_W2, ++ &avr32_opc_table[AVR32_OPC_LDC_W2], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOLD_W3, ++ &avr32_opc_table[AVR32_OPC_LDC_W3], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOLDM_D, ++ &avr32_opc_table[AVR32_OPC_LDCM_D], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOLDM_D_PU, ++ &avr32_opc_table[AVR32_OPC_LDCM_D_PU], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOLDM_W, ++ &avr32_opc_table[AVR32_OPC_LDCM_W], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOLDM_W_PU, ++ &avr32_opc_table[AVR32_OPC_LDCM_W_PU], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOMV_D1, ++ &avr32_opc_table[AVR32_OPC_MVCR_D], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOMV_D2, ++ &avr32_opc_table[AVR32_OPC_MVRC_D], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOMV_W1, ++ &avr32_opc_table[AVR32_OPC_MVCR_W], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOMV_W2, ++ &avr32_opc_table[AVR32_OPC_MVRC_W], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOST_D1, ++ &avr32_opc_table[AVR32_OPC_STC_D1], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOST_D2, ++ &avr32_opc_table[AVR32_OPC_STC_D2], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOST_D3, ++ &avr32_opc_table[AVR32_OPC_STC_D3], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOST_W1, ++ &avr32_opc_table[AVR32_OPC_STC_W1], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOST_W2, ++ &avr32_opc_table[AVR32_OPC_STC_W2], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOST_W3, ++ &avr32_opc_table[AVR32_OPC_STC_W3], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOSTM_D, ++ &avr32_opc_table[AVR32_OPC_STCM_D], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOSTM_D_PU, ++ &avr32_opc_table[AVR32_OPC_STCM_D_PU], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOSTM_W, ++ &avr32_opc_table[AVR32_OPC_STCM_W], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ }, ++ }, ++ { ++ AVR32_ALIAS_PICOSTM_W_PU, ++ &avr32_opc_table[AVR32_OPC_STCM_W_PU], ++ { ++ { 0, PICO_CPNO }, ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, ++ }, ++ }, ++ }; ++ ++ ++#define SYNTAX_NORMAL0(id, mne, opc, arch) \ ++ { \ ++ AVR32_SYNTAX_##id, arch, \ ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \ ++ AVR32_PARSER_NORMAL, \ ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \ ++ NULL, 0, { } \ ++ } ++#define SYNTAX_NORMAL1(id, mne, opc, op0, arch) \ ++ { \ ++ AVR32_SYNTAX_##id, arch, \ ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \ ++ AVR32_PARSER_NORMAL, \ ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \ ++ NULL, 1, \ ++ { \ ++ AVR32_OPERAND_##op0, \ ++ } \ ++ } ++#define SYNTAX_NORMALM1(id, mne, opc, op0, arch) \ ++ { \ ++ AVR32_SYNTAX_##id, arch, \ ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \ ++ AVR32_PARSER_NORMAL, \ ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \ ++ NULL, -1, \ ++ { \ ++ AVR32_OPERAND_##op0, \ ++ } \ ++ } ++#define SYNTAX_NORMAL2(id, mne, opc, op0, op1, arch) \ ++ { \ ++ AVR32_SYNTAX_##id, arch, \ ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \ ++ AVR32_PARSER_NORMAL, \ ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \ ++ NULL, 2, \ ++ { \ ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \ ++ } \ ++ } ++#define SYNTAX_NORMALM2(id, mne, opc, op0, op1, arch) \ ++ { \ ++ AVR32_SYNTAX_##id, arch, \ ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \ ++ AVR32_PARSER_NORMAL, \ ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \ ++ NULL, -2, \ ++ { \ ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \ ++ } \ ++ } ++#define SYNTAX_NORMAL3(id, mne, opc, op0, op1, op2, arch) \ ++ { \ ++ AVR32_SYNTAX_##id, arch, \ ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \ ++ AVR32_PARSER_NORMAL, \ ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \ ++ NULL, 3, \ ++ { \ ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \ ++ AVR32_OPERAND_##op2, \ ++ } \ ++ } ++#define SYNTAX_NORMALM3(id, mne, opc, op0, op1, op2, arch) \ ++ { \ ++ AVR32_SYNTAX_##id, arch, \ ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \ ++ AVR32_PARSER_NORMAL, \ ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \ ++ NULL, -3, \ ++ { \ ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \ ++ AVR32_OPERAND_##op2, \ ++ } \ ++ } ++#define SYNTAX_NORMAL4(id, mne, opc, op0, op1, op2, op3, arch)\ ++ { \ ++ AVR32_SYNTAX_##id, arch, \ ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \ ++ AVR32_PARSER_NORMAL, \ ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \ ++ NULL, 4, \ ++ { \ ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \ ++ AVR32_OPERAND_##op2, AVR32_OPERAND_##op3, \ ++ } \ ++ } ++#define SYNTAX_NORMAL5(id, mne, opc, op0, op1, op2, op3, op4, arch) \ ++ { \ ++ AVR32_SYNTAX_##id, arch, \ ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \ ++ AVR32_PARSER_NORMAL, \ ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \ ++ NULL, 5, \ ++ { \ ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \ ++ AVR32_OPERAND_##op2, AVR32_OPERAND_##op3, \ ++ AVR32_OPERAND_##op4, \ ++ } \ ++ } ++ ++#define SYNTAX_NORMAL_C1(id, mne, opc, nxt, op0, arch) \ ++ { \ ++ AVR32_SYNTAX_##id, arch, \ ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \ ++ AVR32_PARSER_NORMAL, \ ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \ ++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], 1, \ ++ { \ ++ AVR32_OPERAND_##op0, \ ++ } \ ++ } ++#define SYNTAX_NORMAL_CM1(id, mne, opc, nxt, op0, arch) \ ++ { \ ++ AVR32_SYNTAX_##id, arch, \ ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \ ++ AVR32_PARSER_NORMAL, \ ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \ ++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], -1, \ ++ { \ ++ AVR32_OPERAND_##op0, \ ++ } \ ++ } ++#define SYNTAX_NORMAL_C2(id, mne, opc, nxt, op0, op1, arch) \ ++ { \ ++ AVR32_SYNTAX_##id, arch, \ ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \ ++ AVR32_PARSER_NORMAL, \ ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \ ++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], 2, \ ++ { \ ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \ ++ } \ ++ } ++#define SYNTAX_NORMAL_CM2(id, mne, opc, nxt, op0, op1, arch) \ ++ { \ ++ AVR32_SYNTAX_##id, arch, \ ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \ ++ AVR32_PARSER_NORMAL, \ ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \ ++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], -2, \ ++ { \ ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \ ++ } \ ++ } ++#define SYNTAX_NORMAL_C3(id, mne, opc, nxt, op0, op1, op2, arch) \ ++ { \ ++ AVR32_SYNTAX_##id, arch, \ ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \ ++ AVR32_PARSER_NORMAL, \ ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \ ++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], 3, \ ++ { \ ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \ ++ AVR32_OPERAND_##op2, \ ++ } \ ++ } ++#define SYNTAX_NORMAL_CM3(id, mne, opc, nxt, op0, op1, op2, arch) \ ++ { \ ++ AVR32_SYNTAX_##id, arch, \ ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \ ++ AVR32_PARSER_NORMAL, \ ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \ ++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], -3, \ ++ { \ ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \ ++ AVR32_OPERAND_##op2, \ ++ } \ ++ } ++ ++#define SYNTAX_FP(name, nr_ops) \ ++ { \ ++ AVR32_SYNTAX_##name##_S, \ ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS, \ ++ { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_S] }, \ ++ NULL, nr_ops, \ ++ { \ ++ AVR32_OPERAND_FPREG_S, \ ++ AVR32_OPERAND_FPREG_S, \ ++ AVR32_OPERAND_FPREG_S, \ ++ }, \ ++ }, \ ++ { \ ++ AVR32_SYNTAX_##name##_D, \ ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS, \ ++ { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_D] }, \ ++ NULL, nr_ops, \ ++ { \ ++ AVR32_OPERAND_FPREG_D, \ ++ AVR32_OPERAND_FPREG_D, \ ++ AVR32_OPERAND_FPREG_D, \ ++ }, \ ++ } ++ ++const struct avr32_syntax avr32_syntax_table[] = ++ { ++ SYNTAX_NORMAL1(ABS, ABS, ABS, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(ACALL, ACALL, ACALL, UNSIGNED_CONST_W, AVR32_V1), ++ SYNTAX_NORMAL1(ACR, ACR, ACR, INTREG,AVR32_V1), ++ SYNTAX_NORMAL3(ADC, ADC, ADC, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ADD1, ADD, ADD1, ADD2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL3(ADD2, ADD, ADD2, INTREG, INTREG, INTREG_LSL, AVR32_V1), ++ SYNTAX_NORMAL3(ADDABS, ADDABS, ADDABS, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL3(ADDHH_W, ADDHH_W, ADDHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP), ++ SYNTAX_NORMAL_C2(AND1, AND, AND1, AND2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C3(AND2, AND, AND2, AND3, INTREG, INTREG, INTREG_LSL, AVR32_V1), ++ SYNTAX_NORMAL3(AND3, AND, AND3, INTREG, INTREG, INTREG_LSR, AVR32_V1), ++ SYNTAX_NORMAL_C2(ANDH, ANDH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL3(ANDH_COH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1), ++ SYNTAX_NORMAL_C2(ANDL, ANDL, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL3(ANDL_COH, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1), ++ SYNTAX_NORMAL2(ANDN, ANDN, ANDN, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C3(ASR1, ASR, ASR1, ASR3, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C3(ASR3, ASR, ASR3, ASR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL2(ASR2, ASR, ASR2, INTREG, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL4(BFEXTS, BFEXTS, BFEXTS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL4(BFEXTU, BFEXTU, BFEXTU, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL4(BFINS, BFINS, BFINS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL2(BLD, BLD, BLD, INTREG, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL_C1(BREQ1, BREQ, BREQ1, BREQ2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL_C1(BRNE1, BRNE, BRNE1, BRNE2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL_C1(BRCC1, BRCC, BRCC1, BRCC2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL_C1(BRCS1, BRCS, BRCS1, BRCS2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL_C1(BRGE1, BRGE, BRGE1, BRGE2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL_C1(BRLT1, BRLT, BRLT1, BRLT2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL_C1(BRMI1, BRMI, BRMI1, BRMI2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL_C1(BRPL1, BRPL, BRPL1, BRPL2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL_C1(BRHS1, BRHS, BRCC1, BRHS2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL_C1(BRLO1, BRLO, BRCS1, BRLO2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BREQ2, BREQ, BREQ2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRNE2, BRNE, BRNE2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRCC2, BRCC, BRCC2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRCS2, BRCS, BRCS2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRGE2, BRGE, BRGE2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRLT2, BRLT, BRLT2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRMI2, BRMI, BRMI2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRPL2, BRPL, BRPL2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRLS, BRLS, BRLS, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRGT, BRGT, BRGT, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRLE, BRLE, BRLE, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRHI, BRHI, BRHI, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRVS, BRVS, BRVS, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRVC, BRVC, BRVC, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRQS, BRQS, BRQS, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRAL, BRAL, BRAL, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRHS2, BRHS, BRCC2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(BRLO2, BRLO, BRCS2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL0(BREAKPOINT, BREAKPOINT, BREAKPOINT, AVR32_V1), ++ SYNTAX_NORMAL1(BREV, BREV, BREV, INTREG, AVR32_V1), ++ SYNTAX_NORMAL2(BST, BST, BST, INTREG, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL2(CACHE, CACHE, CACHE, INTREG_SDISP, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL1(CASTS_B, CASTS_B, CASTS_B, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(CASTS_H, CASTS_H, CASTS_H, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(CASTU_B, CASTU_B, CASTU_B, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(CASTU_H, CASTU_H, CASTU_H, INTREG, AVR32_V1), ++ SYNTAX_NORMAL2(CBR, CBR, CBR, INTREG, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL2(CLZ, CLZ, CLZ, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(COM, COM, COM, INTREG, AVR32_V1), ++ SYNTAX_NORMAL5(COP, COP, COP, CPNO, CPREG, CPREG, CPREG, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL2(CP_B, CP_B, CP_B, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL2(CP_H, CP_H, CP_H, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(CP_W1, CP_W, CP_W1, CP_W2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(CP_W2, CP_W, CP_W2, CP_W3, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(CP_W3, CP_W, CP_W3, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL_C2(CPC1, CPC, CPC1, CPC2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(CPC2, CPC, CPC2, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(CSRF, CSRF, CSRF, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL1(CSRFCZ, CSRFCZ, CSRFCZ, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL3(DIVS, DIVS, DIVS, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL3(DIVU, DIVU, DIVU, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(EOR1, EOR, EOR1, EOR2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C3(EOR2, EOR, EOR2, EOR3, INTREG, INTREG, INTREG_LSL, AVR32_V1), ++ SYNTAX_NORMAL3(EOR3, EOR, EOR3, INTREG, INTREG, INTREG_LSR, AVR32_V1), ++ SYNTAX_NORMAL2(EORL, EORL, EORL, INTREG, UNSIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(EORH, EORH, EORH, INTREG, UNSIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL0(FRS, FRS, FRS, AVR32_V1), ++ SYNTAX_NORMAL1(ICALL, ICALL, ICALL, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(INCJOSP, INCJOSP, INCJOSP, JOSPINC, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_D1, LD_D, LD_D1, LD_D2, DWREG, INTREG_POSTINC, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_D2, LD_D, LD_D2, LD_D3, DWREG, INTREG_PREDEC, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_D3, LD_D, LD_D3, LD_D5, DWREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_D5, LD_D, LD_D5, LD_D4, DWREG, INTREG_INDEX, AVR32_V1), ++ SYNTAX_NORMAL2(LD_D4, LD_D, LD_D4, DWREG, INTREG_SDISP, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_SB2, LD_SB, LD_SB2, LD_SB1, INTREG, INTREG_INDEX, AVR32_V1), ++ SYNTAX_NORMAL2(LD_SB1, LD_SB, LD_SB1, INTREG, INTREG_SDISP, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_UB1, LD_UB, LD_UB1, LD_UB2, INTREG, INTREG_POSTINC, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_UB2, LD_UB, LD_UB2, LD_UB5, INTREG, INTREG_PREDEC, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_UB5, LD_UB, LD_UB5, LD_UB3, INTREG, INTREG_INDEX, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_UB3, LD_UB, LD_UB3, LD_UB4, INTREG, INTREG_UDISP, AVR32_V1), ++ SYNTAX_NORMAL2(LD_UB4, LD_UB, LD_UB4, INTREG, INTREG_SDISP, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_SH1, LD_SH, LD_SH1, LD_SH2, INTREG, INTREG_POSTINC, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_SH2, LD_SH, LD_SH2, LD_SH5, INTREG, INTREG_PREDEC, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_SH5, LD_SH, LD_SH5, LD_SH3, INTREG, INTREG_INDEX, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_SH3, LD_SH, LD_SH3, LD_SH4, INTREG, INTREG_UDISP_H, AVR32_V1), ++ SYNTAX_NORMAL2(LD_SH4, LD_SH, LD_SH4, INTREG, INTREG_SDISP, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_UH1, LD_UH, LD_UH1, LD_UH2, INTREG, INTREG_POSTINC, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_UH2, LD_UH, LD_UH2, LD_UH5, INTREG, INTREG_PREDEC, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_UH5, LD_UH, LD_UH5, LD_UH3, INTREG, INTREG_INDEX, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_UH3, LD_UH, LD_UH3, LD_UH4, INTREG, INTREG_UDISP_H, AVR32_V1), ++ SYNTAX_NORMAL2(LD_UH4, LD_UH, LD_UH4, INTREG, INTREG_SDISP, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_W1, LD_W, LD_W1, LD_W2, INTREG, INTREG_POSTINC, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_W2, LD_W, LD_W2, LD_W5, INTREG, INTREG_PREDEC, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_W5, LD_W, LD_W5, LD_W6, INTREG, INTREG_INDEX, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_W6, LD_W, LD_W6, LD_W3, INTREG, INTREG_XINDEX, AVR32_V1), ++ SYNTAX_NORMAL_C2(LD_W3, LD_W, LD_W3, LD_W4, INTREG, INTREG_UDISP_W, AVR32_V1), ++ SYNTAX_NORMAL2(LD_W4, LD_W, LD_W4, INTREG, INTREG_SDISP, AVR32_V1), ++ SYNTAX_NORMAL3(LDC_D1, LDC_D, LDC_D1, CPNO, CPREG_D, INTREG_UDISP_W, AVR32_V1), ++ SYNTAX_NORMAL_C3(LDC_D2, LDC_D, LDC_D2, LDC_D1, CPNO, CPREG_D, INTREG_PREDEC, AVR32_V1), ++ SYNTAX_NORMAL_C3(LDC_D3, LDC_D, LDC_D3, LDC_D2, CPNO, CPREG_D, INTREG_INDEX, AVR32_V1), ++ SYNTAX_NORMAL3(LDC_W1, LDC_W, LDC_W1, CPNO, CPREG, INTREG_UDISP_W, AVR32_V1), ++ SYNTAX_NORMAL_C3(LDC_W2, LDC_W, LDC_W2, LDC_W1, CPNO, CPREG, INTREG_PREDEC, AVR32_V1), ++ SYNTAX_NORMAL_C3(LDC_W3, LDC_W, LDC_W3, LDC_W2, CPNO, CPREG, INTREG_INDEX, AVR32_V1), ++ SYNTAX_NORMAL2(LDC0_D, LDC0_D, LDC0_D, CPREG_D, INTREG_UDISP_W, AVR32_V1), ++ SYNTAX_NORMAL2(LDC0_W, LDC0_W, LDC0_W, CPREG, INTREG_UDISP_W, AVR32_V1), ++ SYNTAX_NORMAL_CM3(LDCM_D, LDCM_D, LDCM_D, LDCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1), ++ SYNTAX_NORMALM3(LDCM_D_PU, LDCM_D, LDCM_D_PU, CPNO, INTREG_POSTINC, REGLIST_CPD8, AVR32_V1), ++ SYNTAX_NORMAL_CM3(LDCM_W, LDCM_W, LDCM_W, LDCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1), ++ SYNTAX_NORMALM3(LDCM_W_PU, LDCM_W, LDCM_W_PU, CPNO, INTREG_POSTINC, REGLIST_CP8, AVR32_V1), ++ SYNTAX_NORMAL2(LDDPC, LDDPC, LDDPC, INTREG, PC_UDISP_W, AVR32_V1), ++ SYNTAX_NORMAL2(LDDPC_EXT, LDDPC, LDDPC_EXT, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(LDDSP, LDDSP, LDDSP, INTREG, SP_UDISP_W, AVR32_V1), ++ SYNTAX_NORMAL2(LDINS_B, LDINS_B, LDINS_B, INTREG_BSEL, INTREG_SDISP, AVR32_V1), ++ SYNTAX_NORMAL2(LDINS_H, LDINS_H, LDINS_H, INTREG_HSEL, INTREG_SDISP_H, AVR32_V1), ++ SYNTAX_NORMALM1(LDM, LDM, LDM, REGLIST_LDM, AVR32_V1), ++ SYNTAX_NORMAL_CM2(LDMTS, LDMTS, LDMTS, LDMTS_PU, INTREG, REGLIST16, AVR32_V1), ++ SYNTAX_NORMALM2(LDMTS_PU, LDMTS, LDMTS_PU, INTREG_POSTINC, REGLIST16, AVR32_V1), ++ SYNTAX_NORMAL2(LDSWP_SH, LDSWP_SH, LDSWP_SH, INTREG, INTREG_SDISP_H, AVR32_V1), ++ SYNTAX_NORMAL2(LDSWP_UH, LDSWP_UH, LDSWP_UH, INTREG, INTREG_SDISP_H, AVR32_V1), ++ SYNTAX_NORMAL2(LDSWP_W, LDSWP_W, LDSWP_W, INTREG, INTREG_SDISP_W, AVR32_V1), ++ SYNTAX_NORMAL_C3(LSL1, LSL, LSL1, LSL3, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C3(LSL3, LSL, LSL3, LSL2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL2(LSL2, LSL, LSL2, INTREG, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL_C3(LSR1, LSR, LSR1, LSR3, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C3(LSR3, LSR, LSR3, LSR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL2(LSR2, LSR, LSR2, INTREG, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL3(MAC, MAC, MAC, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL3(MACHH_D, MACHH_D, MACHH_D, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP), ++ SYNTAX_NORMAL3(MACHH_W, MACHH_W, MACHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP), ++ SYNTAX_NORMAL3(MACS_D, MACS_D, MACS_D, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL3(MACSATHH_W, MACSATHH_W, MACSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP), ++ SYNTAX_NORMAL3(MACUD, MACU_D, MACUD, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL3(MACWH_D, MACWH_D, MACWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP), ++ SYNTAX_NORMAL3(MAX, MAX, MAX, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(MCALL, MCALL, MCALL, MCALL, AVR32_V1), ++ SYNTAX_NORMAL2(MFDR, MFDR, MFDR, INTREG, UNSIGNED_CONST_W, AVR32_V1), ++ SYNTAX_NORMAL2(MFSR, MFSR, MFSR, INTREG, UNSIGNED_CONST_W, AVR32_V1), ++ SYNTAX_NORMAL3(MIN, MIN, MIN, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOV3, MOV, MOV3, MOV1, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOV1, MOV, MOV1, MOV2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOV2, MOV, MOV2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVEQ1, MOVEQ, MOVEQ1, MOVEQ2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVNE1, MOVNE, MOVNE1, MOVNE2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVCC1, MOVCC, MOVCC1, MOVCC2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVCS1, MOVCS, MOVCS1, MOVCS2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVGE1, MOVGE, MOVGE1, MOVGE2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVLT1, MOVLT, MOVLT1, MOVLT2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVMI1, MOVMI, MOVMI1, MOVMI2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVPL1, MOVPL, MOVPL1, MOVPL2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVLS1, MOVLS, MOVLS1, MOVLS2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVGT1, MOVGT, MOVGT1, MOVGT2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVLE1, MOVLE, MOVLE1, MOVLE2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVHI1, MOVHI, MOVHI1, MOVHI2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVVS1, MOVVS, MOVVS1, MOVVS2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVVC1, MOVVC, MOVVC1, MOVVC2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVQS1, MOVQS, MOVQS1, MOVQS2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVAL1, MOVAL, MOVAL1, MOVAL2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVHS1, MOVHS, MOVCC1, MOVHS2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MOVLO1, MOVLO, MOVCS1, MOVLO2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL2(MOVEQ2, MOVEQ, MOVEQ2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVNE2, MOVNE, MOVNE2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVCC2, MOVCC, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVCS2, MOVCS, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVGE2, MOVGE, MOVGE2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVLT2, MOVLT, MOVLT2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVMI2, MOVMI, MOVMI2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVPL2, MOVPL, MOVPL2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVLS2, MOVLS, MOVLS2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVGT2, MOVGT, MOVGT2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVLE2, MOVLE, MOVLE2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVHI2, MOVHI, MOVHI2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVVS2, MOVVS, MOVVS2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVVC2, MOVVC, MOVVC2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVQS2, MOVQS, MOVQS2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVAL2, MOVAL, MOVAL2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVHS2, MOVHS, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MOVLO2, MOVLO, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(MTDR, MTDR, MTDR, UNSIGNED_CONST_W, INTREG, AVR32_V1), ++ SYNTAX_NORMAL2(MTSR, MTSR, MTSR, UNSIGNED_CONST_W, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(MUL1, MUL, MUL1, MUL2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C3(MUL2, MUL, MUL2, MUL3, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL3(MUL3, MUL, MUL3, INTREG, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL3(MULHH_W, MULHH_W, MULHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP), ++ SYNTAX_NORMAL3(MULNHH_W, MULNHH_W, MULNHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP), ++ SYNTAX_NORMAL3(MULNWH_D, MULNWH_D, MULNWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP), ++ SYNTAX_NORMAL3(MULSD, MULS_D, MULSD, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL3(MULSATHH_H, MULSATHH_H, MULSATHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP), ++ SYNTAX_NORMAL3(MULSATHH_W, MULSATHH_W, MULSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP), ++ SYNTAX_NORMAL3(MULSATRNDHH_H, MULSATRNDHH_H, MULSATRNDHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP), ++ SYNTAX_NORMAL3(MULSATRNDWH_W, MULSATRNDWH_W, MULSATRNDWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP), ++ SYNTAX_NORMAL3(MULSATWH_W, MULSATWH_W, MULSATWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP), ++ SYNTAX_NORMAL3(MULU_D, MULU_D, MULU_D, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL3(MULWH_D, MULWH_D, MULWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP), ++ SYNTAX_NORMAL1(MUSFR, MUSFR, MUSFR, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(MUSTR, MUSTR, MUSTR, INTREG, AVR32_V1), ++ SYNTAX_NORMAL3(MVCR_D, MVCR_D, MVCR_D, CPNO, DWREG, CPREG_D, AVR32_V1), ++ SYNTAX_NORMAL3(MVCR_W, MVCR_W, MVCR_W, CPNO, INTREG, CPREG, AVR32_V1), ++ SYNTAX_NORMAL3(MVRC_D, MVRC_D, MVRC_D, CPNO, CPREG_D, DWREG, AVR32_V1), ++ SYNTAX_NORMAL3(MVRC_W, MVRC_W, MVRC_W, CPNO, CPREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(NEG, NEG, NEG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL0(NOP, NOP, NOP, AVR32_V1), ++ SYNTAX_NORMAL_C2(OR1, OR, OR1, OR2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C3(OR2, OR, OR2, OR3, INTREG, INTREG, INTREG_LSL, AVR32_V1), ++ SYNTAX_NORMAL3(OR3, OR, OR3, INTREG, INTREG, INTREG_LSR, AVR32_V1), ++ SYNTAX_NORMAL2(ORH, ORH, ORH, INTREG, UNSIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(ORL, ORL, ORL, INTREG, UNSIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(PABS_SB, PABS_SB, PABS_SB, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL2(PABS_SH, PABS_SH, PABS_SH, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PACKSH_SB, PACKSH_SB, PACKSH_SB, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PACKSH_UB, PACKSH_UB, PACKSH_UB, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PACKW_SH, PACKW_SH, PACKW_SH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADD_B, PADD_B, PADD_B, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADD_H, PADD_H, PADD_H, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADDH_SH, PADDH_SH, PADDH_SH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADDH_UB, PADDH_UB, PADDH_UB, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADDS_SB, PADDS_SB, PADDS_SB, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADDS_SH, PADDS_SH, PADDS_SH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADDS_UB, PADDS_UB, PADDS_UB, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADDS_UH, PADDS_UH, PADDS_UH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADDSUB_H, PADDSUB_H, PADDSUB_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADDSUBH_SH, PADDSUBH_SH, PADDSUBH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADDSUBS_SH, PADDSUBS_SH, PADDSUBS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADDSUBS_UH, PADDSUBS_UH, PADDSUBS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADDX_H, PADDX_H, PADDX_H, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADDXH_SH, PADDXH_SH, PADDXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADDXS_SH, PADDXS_SH, PADDXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PADDXS_UH, PADDXS_UH, PADDXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PASR_B, PASR_B, PASR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD), ++ SYNTAX_NORMAL3(PASR_H, PASR_H, PASR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD), ++ SYNTAX_NORMAL3(PAVG_SH, PAVG_SH, PAVG_SH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PAVG_UB, PAVG_UB, PAVG_UB, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PLSL_B, PLSL_B, PLSL_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD), ++ SYNTAX_NORMAL3(PLSL_H, PLSL_H, PLSL_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD), ++ SYNTAX_NORMAL3(PLSR_B, PLSR_B, PLSR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD), ++ SYNTAX_NORMAL3(PLSR_H, PLSR_H, PLSR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD), ++ SYNTAX_NORMAL3(PMAX_SH, PMAX_SH, PMAX_SH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PMAX_UB, PMAX_UB, PMAX_UB, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PMIN_SH, PMIN_SH, PMIN_SH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PMIN_UB, PMIN_UB, PMIN_UB, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL0(POPJC, POPJC, POPJC, AVR32_V1), ++ SYNTAX_NORMAL_CM1(POPM, POPM, POPM, POPM_E, REGLIST9, AVR32_V1), ++ SYNTAX_NORMALM1(POPM_E, POPM, POPM_E, REGLIST16, AVR32_V1), ++ SYNTAX_NORMAL1(PREF, PREF, PREF, INTREG_SDISP, AVR32_V1), ++ SYNTAX_NORMAL3(PSAD, PSAD, PSAD, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUB_B, PSUB_B, PSUB_B, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUB_H, PSUB_H, PSUB_H, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUBADD_H, PSUBADD_H, PSUBADD_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUBADDH_SH, PSUBADDH_SH, PSUBADDH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUBADDS_SH, PSUBADDS_SH, PSUBADDS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUBADDS_UH, PSUBADDS_UH, PSUBADDS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUBH_SH, PSUBH_SH, PSUBH_SH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUBH_UB, PSUBH_UB, PSUBH_UB, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUBS_SB, PSUBS_SB, PSUBS_SB, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUBS_SH, PSUBS_SH, PSUBS_SH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUBS_UB, PSUBS_UB, PSUBS_UB, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUBS_UH, PSUBS_UH, PSUBS_UH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUBX_H, PSUBX_H, PSUBX_H, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUBXH_SH, PSUBXH_SH, PSUBXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUBXS_SH, PSUBXS_SH, PSUBXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL3(PSUBXS_UH, PSUBXS_UH, PSUBXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD), ++ SYNTAX_NORMAL2(PUNPCKSB_H, PUNPCKSB_H, PUNPCKSB_H, INTREG, INTREG_HSEL, AVR32_SIMD), ++ SYNTAX_NORMAL2(PUNPCKUB_H, PUNPCKUB_H, PUNPCKUB_H, INTREG, INTREG_HSEL, AVR32_SIMD), ++ SYNTAX_NORMAL0(PUSHJC, PUSHJC, PUSHJC, AVR32_V1), ++ SYNTAX_NORMAL_CM1(PUSHM, PUSHM, PUSHM, PUSHM_E, REGLIST8, AVR32_V1), ++ SYNTAX_NORMALM1(PUSHM_E, PUSHM, PUSHM_E, REGLIST16, AVR32_V1), ++ SYNTAX_NORMAL_C1(RCALL1, RCALL, RCALL1, RCALL2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(RCALL2, RCALL, RCALL2, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(RETEQ, RETEQ, RETEQ, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETNE, RETNE, RETNE, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETCC, RETCC, RETCC, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETCS, RETCS, RETCS, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETGE, RETGE, RETGE, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETLT, RETLT, RETLT, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETMI, RETMI, RETMI, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETPL, RETPL, RETPL, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETLS, RETLS, RETLS, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETGT, RETGT, RETGT, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETLE, RETLE, RETLE, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETHI, RETHI, RETHI, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETVS, RETVS, RETVS, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETVC, RETVC, RETVC, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETQS, RETQS, RETQS, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETAL, RETAL, RETAL, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETHS, RETHS, RETCC, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL1(RETLO, RETLO, RETCS, RETVAL, AVR32_V1), ++ SYNTAX_NORMAL0(RETD, RETD, RETD, AVR32_V1), ++ SYNTAX_NORMAL0(RETE, RETE, RETE, AVR32_V1), ++ SYNTAX_NORMAL0(RETJ, RETJ, RETJ, AVR32_V1), ++ SYNTAX_NORMAL0(RETS, RETS, RETS, AVR32_V1), ++ SYNTAX_NORMAL1(RJMP, RJMP, RJMP, JMPLABEL, AVR32_V1), ++ SYNTAX_NORMAL1(ROL, ROL, ROL, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(ROR, ROR, ROR, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(RSUB1, RSUB, RSUB1, RSUB2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL3(RSUB2, RSUB, RSUB2, INTREG, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL3(SATADD_H, SATADD_H, SATADD_H, INTREG, INTREG, INTREG, AVR32_DSP), ++ SYNTAX_NORMAL3(SATADD_W, SATADD_W, SATADD_W, INTREG, INTREG, INTREG, AVR32_DSP), ++ SYNTAX_NORMAL2(SATRNDS, SATRNDS, SATRNDS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP), ++ SYNTAX_NORMAL2(SATRNDU, SATRNDU, SATRNDU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP), ++ SYNTAX_NORMAL2(SATS, SATS, SATS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP), ++ SYNTAX_NORMAL3(SATSUB_H, SATSUB_H, SATSUB_H, INTREG, INTREG, INTREG, AVR32_DSP), ++ SYNTAX_NORMAL_C3(SATSUB_W1, SATSUB_W, SATSUB_W1, SATSUB_W2, INTREG, INTREG, INTREG, AVR32_DSP), ++ SYNTAX_NORMAL3(SATSUB_W2, SATSUB_W, SATSUB_W2, INTREG, INTREG, SIGNED_CONST, AVR32_DSP), ++ SYNTAX_NORMAL2(SATU, SATU, SATU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL3(SBC, SBC, SBC, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL2(SBR, SBR, SBR, INTREG, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL0(SCALL, SCALL, SCALL, AVR32_V1), ++ SYNTAX_NORMAL1(SCR, SCR, SCR, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SLEEP, SLEEP, SLEEP, UNSIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL1(SREQ, SREQ, SREQ, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRNE, SRNE, SRNE, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRCC, SRCC, SRCC, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRCS, SRCS, SRCS, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRGE, SRGE, SRGE, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRLT, SRLT, SRLT, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRMI, SRMI, SRMI, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRPL, SRPL, SRPL, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRLS, SRLS, SRLS, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRGT, SRGT, SRGT, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRLE, SRLE, SRLE, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRHI, SRHI, SRHI, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRVS, SRVS, SRVS, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRVC, SRVC, SRVC, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRQS, SRQS, SRQS, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRAL, SRAL, SRAL, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRHS, SRHS, SRCC, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SRLO, SRLO, SRCS, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SSRF, SSRF, SSRF, UNSIGNED_NUMBER, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_B1, ST_B, ST_B1, ST_B2, INTREG_POSTINC, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_B2, ST_B, ST_B2, ST_B5, INTREG_PREDEC, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_B5, ST_B, ST_B5, ST_B3, INTREG_INDEX, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_B3, ST_B, ST_B3, ST_B4, INTREG_UDISP, INTREG, AVR32_V1), ++ SYNTAX_NORMAL2(ST_B4, ST_B, ST_B4, INTREG_SDISP, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_D1, ST_D, ST_D1, ST_D2, INTREG_POSTINC, DWREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_D2, ST_D, ST_D2, ST_D3, INTREG_PREDEC, DWREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_D3, ST_D, ST_D3, ST_D5, INTREG, DWREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_D5, ST_D, ST_D5, ST_D4, INTREG_INDEX, DWREG, AVR32_V1), ++ SYNTAX_NORMAL2(ST_D4, ST_D, ST_D4, INTREG_SDISP, DWREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_H1, ST_H, ST_H1, ST_H2, INTREG_POSTINC, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_H2, ST_H, ST_H2, ST_H5, INTREG_PREDEC, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_H5, ST_H, ST_H5, ST_H3, INTREG_INDEX, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_H3, ST_H, ST_H3, ST_H4, INTREG_UDISP_H, INTREG, AVR32_V1), ++ SYNTAX_NORMAL2(ST_H4, ST_H, ST_H4, INTREG_SDISP, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_W1, ST_W, ST_W1, ST_W2, INTREG_POSTINC, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_W2, ST_W, ST_W2, ST_W5, INTREG_PREDEC, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_W5, ST_W, ST_W5, ST_W3, INTREG_INDEX, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(ST_W3, ST_W, ST_W3, ST_W4, INTREG_UDISP_W, INTREG, AVR32_V1), ++ SYNTAX_NORMAL2(ST_W4, ST_W, ST_W4, INTREG_SDISP, INTREG, AVR32_V1), ++ SYNTAX_NORMAL3(STC_D1, STC_D, STC_D1, CPNO, INTREG_UDISP_W, CPREG_D, AVR32_V1), ++ SYNTAX_NORMAL_C3(STC_D2, STC_D, STC_D2, STC_D1, CPNO, INTREG_POSTINC, CPREG_D, AVR32_V1), ++ SYNTAX_NORMAL_C3(STC_D3, STC_D, STC_D3, STC_D2, CPNO, INTREG_INDEX, CPREG_D, AVR32_V1), ++ SYNTAX_NORMAL3(STC_W1, STC_W, STC_W1, CPNO, INTREG_UDISP_W, CPREG, AVR32_V1), ++ SYNTAX_NORMAL_C3(STC_W2, STC_W, STC_W2, STC_W1, CPNO, INTREG_POSTINC, CPREG, AVR32_V1), ++ SYNTAX_NORMAL_C3(STC_W3, STC_W, STC_W3, STC_W2, CPNO, INTREG_INDEX, CPREG, AVR32_V1), ++ SYNTAX_NORMAL2(STC0_D, STC0_D, STC0_D, INTREG_UDISP_W, CPREG_D, AVR32_V1), ++ SYNTAX_NORMAL2(STC0_W, STC0_W, STC0_W, INTREG_UDISP_W, CPREG, AVR32_V1), ++ SYNTAX_NORMAL_CM3(STCM_D, STCM_D, STCM_D, STCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1), ++ SYNTAX_NORMALM3(STCM_D_PU, STCM_D, STCM_D_PU, CPNO, INTREG_PREDEC, REGLIST_CPD8, AVR32_V1), ++ SYNTAX_NORMAL_CM3(STCM_W, STCM_W, STCM_W, STCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1), ++ SYNTAX_NORMALM3(STCM_W_PU, STCM_W, STCM_W_PU, CPNO, INTREG_PREDEC, REGLIST_CP8, AVR32_V1), ++ SYNTAX_NORMAL2(STCOND, STCOND, STCOND, INTREG_SDISP, INTREG, AVR32_V1), ++ SYNTAX_NORMAL2(STDSP, STDSP, STDSP, SP_UDISP_W, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C3(STHH_W2, STHH_W, STHH_W2, STHH_W1, INTREG_INDEX, INTREG_HSEL, INTREG_HSEL, AVR32_V1), ++ SYNTAX_NORMAL3(STHH_W1, STHH_W, STHH_W1, INTREG_UDISP_W, INTREG_HSEL, INTREG_HSEL, AVR32_V1), ++ SYNTAX_NORMAL_CM2(STM, STM, STM, STM_PU, INTREG, REGLIST16, AVR32_V1), ++ SYNTAX_NORMALM2(STM_PU, STM, STM_PU, INTREG_PREDEC, REGLIST16, AVR32_V1), ++ SYNTAX_NORMAL_CM2(STMTS, STMTS, STMTS, STMTS_PU, INTREG, REGLIST16, AVR32_V1), ++ SYNTAX_NORMALM2(STMTS_PU, STMTS, STMTS_PU, INTREG_PREDEC, REGLIST16, AVR32_V1), ++ SYNTAX_NORMAL2(STSWP_H, STSWP_H, STSWP_H, INTREG_SDISP_H, INTREG, AVR32_V1), ++ SYNTAX_NORMAL2(STSWP_W, STSWP_W, STSWP_W, INTREG_SDISP_W, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C2(SUB1, SUB, SUB1, SUB2, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL_C3(SUB2, SUB, SUB2, SUB5, INTREG, INTREG, INTREG_LSL, AVR32_V1), ++ SYNTAX_NORMAL_C3(SUB5, SUB, SUB5, SUB3_SP, INTREG, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL_C2(SUB3_SP, SUB, SUB3_SP, SUB3, SP, SIGNED_CONST_W, AVR32_V1), ++ SYNTAX_NORMAL_C2(SUB3, SUB, SUB3, SUB4, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUB4, SUB, SUB4, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBEQ, SUBEQ, SUBEQ, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBNE, SUBNE, SUBNE, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBCC, SUBCC, SUBCC, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBCS, SUBCS, SUBCS, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBGE, SUBGE, SUBGE, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBLT, SUBLT, SUBLT, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBMI, SUBMI, SUBMI, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBPL, SUBPL, SUBPL, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBLS, SUBLS, SUBLS, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBGT, SUBGT, SUBGT, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBLE, SUBLE, SUBLE, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBHI, SUBHI, SUBHI, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBVS, SUBVS, SUBVS, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBVC, SUBVC, SUBVC, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBQS, SUBQS, SUBQS, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBAL, SUBAL, SUBAL, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBHS, SUBHS, SUBCC, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBLO, SUBLO, SUBCS, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFEQ, SUBFEQ, SUBFEQ, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFNE, SUBFNE, SUBFNE, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFCC, SUBFCC, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFCS, SUBFCS, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFGE, SUBFGE, SUBFGE, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFLT, SUBFLT, SUBFLT, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFMI, SUBFMI, SUBFMI, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFPL, SUBFPL, SUBFPL, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFLS, SUBFLS, SUBFLS, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFGT, SUBFGT, SUBFGT, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFLE, SUBFLE, SUBFLE, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFHI, SUBFHI, SUBFHI, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFVS, SUBFVS, SUBFVS, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFVC, SUBFVC, SUBFVC, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFQS, SUBFQS, SUBFQS, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFAL, SUBFAL, SUBFAL, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFHS, SUBFHS, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL2(SUBFLO, SUBFLO, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL3(SUBHH_W, SUBHH_W, SUBHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP), ++ SYNTAX_NORMAL1(SWAP_B, SWAP_B, SWAP_B, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SWAP_BH, SWAP_BH, SWAP_BH, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SWAP_H, SWAP_H, SWAP_H, INTREG, AVR32_V1), ++ SYNTAX_NORMAL1(SYNC, SYNC, SYNC, UNSIGNED_CONST, AVR32_V1), ++ SYNTAX_NORMAL0(TLBR, TLBR, TLBR, AVR32_V1), ++ SYNTAX_NORMAL0(TLBS, TLBS, TLBS, AVR32_V1), ++ SYNTAX_NORMAL0(TLBW, TLBW, TLBW, AVR32_V1), ++ SYNTAX_NORMAL1(TNBZ, TNBZ, TNBZ, INTREG, AVR32_V1), ++ SYNTAX_NORMAL2(TST, TST, TST, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL3(XCHG, XCHG, XCHG, INTREG, INTREG, INTREG, AVR32_V1), ++ SYNTAX_NORMAL2(MEMC, MEMC, MEMC, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW), ++ SYNTAX_NORMAL2(MEMS, MEMS, MEMS, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW), ++ SYNTAX_NORMAL2(MEMT, MEMT, MEMT, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW), ++ SYNTAX_FP(FADD, 3), ++ SYNTAX_FP(FSUB, 3), ++ SYNTAX_FP(FMAC, 3), ++ SYNTAX_FP(FNMAC, 3), ++ SYNTAX_FP(FMSC, 3), ++ SYNTAX_FP(FNMSC, 3), ++ SYNTAX_FP(FMUL, 3), ++ SYNTAX_FP(FNMUL, 3), ++ SYNTAX_FP(FNEG, 2), ++ SYNTAX_FP(FABS, 2), ++ SYNTAX_FP(FCMP, 2), ++ { ++ AVR32_SYNTAX_FMOV1_S, ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_S] }, ++ &avr32_syntax_table[AVR32_SYNTAX_FMOV2_S], ++ 2, ++ { ++ AVR32_OPERAND_FPREG_S, ++ AVR32_OPERAND_FPREG_S, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_FMOV1_D, ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_D] }, ++ &avr32_syntax_table[AVR32_SYNTAX_FMOV2_D], ++ 2, ++ { ++ AVR32_OPERAND_FPREG_D, ++ AVR32_OPERAND_FPREG_D, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_FMOV2_S, ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_S] }, ++ &avr32_syntax_table[AVR32_SYNTAX_FMOV3_S], ++ 2, ++ { ++ AVR32_OPERAND_INTREG, ++ AVR32_OPERAND_FPREG_S, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_FMOV2_D, ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_D] }, ++ &avr32_syntax_table[AVR32_SYNTAX_FMOV3_D], ++ 2, ++ { ++ AVR32_OPERAND_DWREG, ++ AVR32_OPERAND_FPREG_D, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_FMOV3_S, ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_S] }, NULL, ++ 2, ++ { ++ AVR32_OPERAND_FPREG_S, ++ AVR32_OPERAND_INTREG, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_FMOV3_D, ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_D] }, NULL, ++ 2, ++ { ++ AVR32_OPERAND_FPREG_D, ++ AVR32_OPERAND_DWREG, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_FCASTS_D, ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTS_D] }, NULL, ++ 2, ++ { ++ AVR32_OPERAND_FPREG_S, ++ AVR32_OPERAND_FPREG_D, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_FCASTD_S, ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTD_S] }, NULL, ++ 2, ++ { ++ AVR32_OPERAND_FPREG_D, ++ AVR32_OPERAND_FPREG_S, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_LDA_W, ++ AVR32_V1, NULL, AVR32_PARSER_LDA, ++ { NULL }, NULL, ++ 2, ++ { ++ AVR32_OPERAND_INTREG, ++ AVR32_OPERAND_SIGNED_CONST, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_CALL, ++ AVR32_V1, NULL, AVR32_PARSER_CALL, ++ { NULL }, NULL, ++ 1, ++ { ++ AVR32_OPERAND_JMPLABEL, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOSVMAC0, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC0] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC1], 4, ++ { ++ AVR32_OPERAND_PICO_OUT0, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOSVMAC1, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC1] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC2], 4, ++ { ++ AVR32_OPERAND_PICO_OUT1, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOSVMAC2, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC2] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC3], 4, ++ { ++ AVR32_OPERAND_PICO_OUT2, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOSVMAC3, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC3] }, ++ NULL, 4, ++ { ++ AVR32_OPERAND_PICO_OUT3, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOSVMUL0, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL0] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL1], 4, ++ { ++ AVR32_OPERAND_PICO_OUT0, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOSVMUL1, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL1] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL2], 4, ++ { ++ AVR32_OPERAND_PICO_OUT1, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOSVMUL2, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL2] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL3], 4, ++ { ++ AVR32_OPERAND_PICO_OUT2, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOSVMUL3, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL3] }, ++ NULL, 4, ++ { ++ AVR32_OPERAND_PICO_OUT3, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOVMAC0, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC0] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC1], 4, ++ { ++ AVR32_OPERAND_PICO_OUT0, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOVMAC1, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC1] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC2], 4, ++ { ++ AVR32_OPERAND_PICO_OUT1, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOVMAC2, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC2] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC3], 4, ++ { ++ AVR32_OPERAND_PICO_OUT2, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOVMAC3, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC3] }, ++ NULL, 4, ++ { ++ AVR32_OPERAND_PICO_OUT3, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOVMUL0, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL0] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL1], 4, ++ { ++ AVR32_OPERAND_PICO_OUT0, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOVMUL1, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL1] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL2], 4, ++ { ++ AVR32_OPERAND_PICO_OUT1, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOVMUL2, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL2] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL3], 4, ++ { ++ AVR32_OPERAND_PICO_OUT2, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOVMUL3, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL3] }, ++ NULL, 4, ++ { ++ AVR32_OPERAND_PICO_OUT3, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_IN, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOLD_D2, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D2] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D3], 2, ++ { ++ AVR32_OPERAND_PICO_REG_D, ++ AVR32_OPERAND_INTREG_PREDEC, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOLD_D3, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D3] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D1], 2, ++ { ++ AVR32_OPERAND_PICO_REG_D, ++ AVR32_OPERAND_INTREG_INDEX, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOLD_D1, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D1] }, ++ NULL, 2, ++ { ++ AVR32_OPERAND_PICO_REG_D, ++ AVR32_OPERAND_INTREG_UDISP_W, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOLD_W2, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W2] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W3], 2, ++ { ++ AVR32_OPERAND_PICO_REG_W, ++ AVR32_OPERAND_INTREG_PREDEC, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOLD_W3, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W3] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W1], 2, ++ { ++ AVR32_OPERAND_PICO_REG_W, ++ AVR32_OPERAND_INTREG_INDEX, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOLD_W1, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W1] }, ++ NULL, 2, ++ { ++ AVR32_OPERAND_PICO_REG_W, ++ AVR32_OPERAND_INTREG_UDISP_W, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOLDM_D, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_D_PU], -2, ++ { ++ AVR32_OPERAND_INTREG, ++ AVR32_OPERAND_PICO_REGLIST_D, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOLDM_D_PU, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D_PU] }, ++ NULL, -2, ++ { ++ AVR32_OPERAND_INTREG_POSTINC, ++ AVR32_OPERAND_PICO_REGLIST_D, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOLDM_W, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_W_PU], -2, ++ { ++ AVR32_OPERAND_INTREG, ++ AVR32_OPERAND_PICO_REGLIST_W, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOLDM_W_PU, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W_PU] }, ++ NULL, -2, ++ { ++ AVR32_OPERAND_INTREG_POSTINC, ++ AVR32_OPERAND_PICO_REGLIST_W, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOMV_D1, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D1] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOMV_D2], 2, ++ { ++ AVR32_OPERAND_DWREG, ++ AVR32_OPERAND_PICO_REG_D, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOMV_D2, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D2] }, ++ NULL, 2, ++ { ++ AVR32_OPERAND_PICO_REG_D, ++ AVR32_OPERAND_DWREG, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOMV_W1, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W1] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOMV_W2], 2, ++ { ++ AVR32_OPERAND_INTREG, ++ AVR32_OPERAND_PICO_REG_W, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOMV_W2, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W2] }, ++ NULL, 2, ++ { ++ AVR32_OPERAND_PICO_REG_W, ++ AVR32_OPERAND_INTREG, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOST_D2, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D2] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOST_D3], 2, ++ { ++ AVR32_OPERAND_INTREG_POSTINC, ++ AVR32_OPERAND_PICO_REG_D, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOST_D3, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D3] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOST_D1], 2, ++ { ++ AVR32_OPERAND_INTREG_INDEX, ++ AVR32_OPERAND_PICO_REG_D, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOST_D1, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D1] }, ++ NULL, 2, ++ { ++ AVR32_OPERAND_INTREG_UDISP_W, ++ AVR32_OPERAND_PICO_REG_D, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOST_W2, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W2] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOST_W3], 2, ++ { ++ AVR32_OPERAND_INTREG_POSTINC, ++ AVR32_OPERAND_PICO_REG_W, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOST_W3, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W3] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOST_W1], 2, ++ { ++ AVR32_OPERAND_INTREG_INDEX, ++ AVR32_OPERAND_PICO_REG_W, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOST_W1, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W1] }, ++ NULL, 2, ++ { ++ AVR32_OPERAND_INTREG_UDISP_W, ++ AVR32_OPERAND_PICO_REG_W, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOSTM_D, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_D_PU], -2, ++ { ++ AVR32_OPERAND_INTREG, ++ AVR32_OPERAND_PICO_REGLIST_D, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOSTM_D_PU, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D_PU] }, ++ NULL, -2, ++ { ++ AVR32_OPERAND_INTREG_PREDEC, ++ AVR32_OPERAND_PICO_REGLIST_D, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOSTM_W, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W] }, ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_W_PU], -2, ++ { ++ AVR32_OPERAND_INTREG, ++ AVR32_OPERAND_PICO_REGLIST_W, ++ }, ++ }, ++ { ++ AVR32_SYNTAX_PICOSTM_W_PU, ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS, ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W_PU] }, ++ NULL, -2, ++ { ++ AVR32_OPERAND_INTREG_PREDEC, ++ AVR32_OPERAND_PICO_REGLIST_W, ++ }, ++ }, ++ }; ++ ++#define NORMAL_MNEMONIC(name, syntax, str) \ ++ { \ ++ AVR32_MNEMONIC_##name, str, \ ++ &avr32_syntax_table[AVR32_SYNTAX_##syntax], \ ++ } ++#define FP_MNEMONIC(name, syntax, str) \ ++ NORMAL_MNEMONIC(name##_S, syntax##_S, str ".s"), \ ++ NORMAL_MNEMONIC(name##_D, syntax##_D, str ".d") ++ ++const struct avr32_mnemonic avr32_mnemonic_table[] = ++ { ++ NORMAL_MNEMONIC(ABS, ABS, "abs"), ++ NORMAL_MNEMONIC(ACALL, ACALL, "acall"), ++ NORMAL_MNEMONIC(ACR, ACR, "acr"), ++ NORMAL_MNEMONIC(ADC, ADC, "adc"), ++ NORMAL_MNEMONIC(ADD, ADD1, "add"), ++ NORMAL_MNEMONIC(ADDABS, ADDABS, "addabs"), ++ NORMAL_MNEMONIC(ADDHH_W, ADDHH_W, "addhh.w"), ++ NORMAL_MNEMONIC(AND, AND1, "and"), ++ NORMAL_MNEMONIC(ANDH, ANDH, "andh"), ++ NORMAL_MNEMONIC(ANDL, ANDL, "andl"), ++ NORMAL_MNEMONIC(ANDN, ANDN, "andn"), ++ NORMAL_MNEMONIC(ASR, ASR1, "asr"), ++ NORMAL_MNEMONIC(BFEXTS, BFEXTS, "bfexts"), ++ NORMAL_MNEMONIC(BFEXTU, BFEXTU, "bfextu"), ++ NORMAL_MNEMONIC(BFINS, BFINS, "bfins"), ++ NORMAL_MNEMONIC(BLD, BLD, "bld"), ++ NORMAL_MNEMONIC(BREQ, BREQ1, "breq"), ++ NORMAL_MNEMONIC(BRNE, BRNE1, "brne"), ++ NORMAL_MNEMONIC(BRCC, BRCC1, "brcc"), ++ NORMAL_MNEMONIC(BRCS, BRCS1, "brcs"), ++ NORMAL_MNEMONIC(BRGE, BRGE1, "brge"), ++ NORMAL_MNEMONIC(BRLT, BRLT1, "brlt"), ++ NORMAL_MNEMONIC(BRMI, BRMI1, "brmi"), ++ NORMAL_MNEMONIC(BRPL, BRPL1, "brpl"), ++ NORMAL_MNEMONIC(BRHS, BRHS1, "brhs"), ++ NORMAL_MNEMONIC(BRLO, BRLO1, "brlo"), ++ NORMAL_MNEMONIC(BRLS, BRLS, "brls"), ++ NORMAL_MNEMONIC(BRGT, BRGT, "brgt"), ++ NORMAL_MNEMONIC(BRLE, BRLE, "brle"), ++ NORMAL_MNEMONIC(BRHI, BRHI, "brhi"), ++ NORMAL_MNEMONIC(BRVS, BRVS, "brvs"), ++ NORMAL_MNEMONIC(BRVC, BRVC, "brvc"), ++ NORMAL_MNEMONIC(BRQS, BRQS, "brqs"), ++ NORMAL_MNEMONIC(BRAL, BRAL, "bral"), ++ NORMAL_MNEMONIC(BREAKPOINT, BREAKPOINT, "breakpoint"), ++ NORMAL_MNEMONIC(BREV, BREV, "brev"), ++ NORMAL_MNEMONIC(BST, BST, "bst"), ++ NORMAL_MNEMONIC(CACHE, CACHE, "cache"), ++ NORMAL_MNEMONIC(CASTS_B, CASTS_B, "casts.b"), ++ NORMAL_MNEMONIC(CASTS_H, CASTS_H, "casts.h"), ++ NORMAL_MNEMONIC(CASTU_B, CASTU_B, "castu.b"), ++ NORMAL_MNEMONIC(CASTU_H, CASTU_H, "castu.h"), ++ NORMAL_MNEMONIC(CBR, CBR, "cbr"), ++ NORMAL_MNEMONIC(CLZ, CLZ, "clz"), ++ NORMAL_MNEMONIC(COM, COM, "com"), ++ NORMAL_MNEMONIC(COP, COP, "cop"), ++ NORMAL_MNEMONIC(CP_B, CP_B, "cp.b"), ++ NORMAL_MNEMONIC(CP_H, CP_H, "cp.h"), ++ NORMAL_MNEMONIC(CP_W, CP_W1, "cp.w"), ++ NORMAL_MNEMONIC(CP, CP_W1, "cp"), ++ NORMAL_MNEMONIC(CPC, CPC1, "cpc"), ++ NORMAL_MNEMONIC(CSRF, CSRF, "csrf"), ++ NORMAL_MNEMONIC(CSRFCZ, CSRFCZ, "csrfcz"), ++ NORMAL_MNEMONIC(DIVS, DIVS, "divs"), ++ NORMAL_MNEMONIC(DIVU, DIVU, "divu"), ++ NORMAL_MNEMONIC(EOR, EOR1, "eor"), ++ NORMAL_MNEMONIC(EORL, EORL, "eorl"), ++ NORMAL_MNEMONIC(EORH, EORH, "eorh"), ++ NORMAL_MNEMONIC(FRS, FRS, "frs"), ++ NORMAL_MNEMONIC(ICALL, ICALL, "icall"), ++ NORMAL_MNEMONIC(INCJOSP, INCJOSP, "incjosp"), ++ NORMAL_MNEMONIC(LD_D, LD_D1, "ld.d"), ++ NORMAL_MNEMONIC(LD_SB, LD_SB2, "ld.sb"), ++ NORMAL_MNEMONIC(LD_UB, LD_UB1, "ld.ub"), ++ NORMAL_MNEMONIC(LD_SH, LD_SH1, "ld.sh"), ++ NORMAL_MNEMONIC(LD_UH, LD_UH1, "ld.uh"), ++ NORMAL_MNEMONIC(LD_W, LD_W1, "ld.w"), ++ NORMAL_MNEMONIC(LDC_D, LDC_D3, "ldc.d"), ++ NORMAL_MNEMONIC(LDC_W, LDC_W3, "ldc.w"), ++ NORMAL_MNEMONIC(LDC0_D, LDC0_D, "ldc0.d"), ++ NORMAL_MNEMONIC(LDC0_W, LDC0_W, "ldc0.w"), ++ NORMAL_MNEMONIC(LDCM_D, LDCM_D, "ldcm.d"), ++ NORMAL_MNEMONIC(LDCM_W, LDCM_W, "ldcm.w"), ++ NORMAL_MNEMONIC(LDDPC, LDDPC, "lddpc"), ++ NORMAL_MNEMONIC(LDDSP, LDDSP, "lddsp"), ++ NORMAL_MNEMONIC(LDINS_B, LDINS_B, "ldins.b"), ++ NORMAL_MNEMONIC(LDINS_H, LDINS_H, "ldins.h"), ++ NORMAL_MNEMONIC(LDM, LDM, "ldm"), ++ NORMAL_MNEMONIC(LDMTS, LDMTS, "ldmts"), ++ NORMAL_MNEMONIC(LDSWP_SH, LDSWP_SH, "ldswp.sh"), ++ NORMAL_MNEMONIC(LDSWP_UH, LDSWP_UH, "ldswp.uh"), ++ NORMAL_MNEMONIC(LDSWP_W, LDSWP_W, "ldswp.w"), ++ NORMAL_MNEMONIC(LSL, LSL1, "lsl"), ++ NORMAL_MNEMONIC(LSR, LSR1, "lsr"), ++ NORMAL_MNEMONIC(MAC, MAC, "mac"), ++ NORMAL_MNEMONIC(MACHH_D, MACHH_D, "machh.d"), ++ NORMAL_MNEMONIC(MACHH_W, MACHH_W, "machh.w"), ++ NORMAL_MNEMONIC(MACS_D, MACS_D, "macs.d"), ++ NORMAL_MNEMONIC(MACSATHH_W, MACSATHH_W, "macsathh.w"), ++ NORMAL_MNEMONIC(MACU_D, MACUD, "macu.d"), ++ NORMAL_MNEMONIC(MACWH_D, MACWH_D, "macwh.d"), ++ NORMAL_MNEMONIC(MAX, MAX, "max"), ++ NORMAL_MNEMONIC(MCALL, MCALL, "mcall"), ++ NORMAL_MNEMONIC(MFDR, MFDR, "mfdr"), ++ NORMAL_MNEMONIC(MFSR, MFSR, "mfsr"), ++ NORMAL_MNEMONIC(MIN, MIN, "min"), ++ NORMAL_MNEMONIC(MOV, MOV3, "mov"), ++ NORMAL_MNEMONIC(MOVEQ, MOVEQ1, "moveq"), ++ NORMAL_MNEMONIC(MOVNE, MOVNE1, "movne"), ++ NORMAL_MNEMONIC(MOVCC, MOVCC1, "movcc"), ++ NORMAL_MNEMONIC(MOVCS, MOVCS1, "movcs"), ++ NORMAL_MNEMONIC(MOVGE, MOVGE1, "movge"), ++ NORMAL_MNEMONIC(MOVLT, MOVLT1, "movlt"), ++ NORMAL_MNEMONIC(MOVMI, MOVMI1, "movmi"), ++ NORMAL_MNEMONIC(MOVPL, MOVPL1, "movpl"), ++ NORMAL_MNEMONIC(MOVLS, MOVLS1, "movls"), ++ NORMAL_MNEMONIC(MOVGT, MOVGT1, "movgt"), ++ NORMAL_MNEMONIC(MOVLE, MOVLE1, "movle"), ++ NORMAL_MNEMONIC(MOVHI, MOVHI1, "movhi"), ++ NORMAL_MNEMONIC(MOVVS, MOVVS1, "movvs"), ++ NORMAL_MNEMONIC(MOVVC, MOVVC1, "movvc"), ++ NORMAL_MNEMONIC(MOVQS, MOVQS1, "movqs"), ++ NORMAL_MNEMONIC(MOVAL, MOVAL1, "moval"), ++ NORMAL_MNEMONIC(MOVHS, MOVHS1, "movhs"), ++ NORMAL_MNEMONIC(MOVLO, MOVLO1, "movlo"), ++ NORMAL_MNEMONIC(MTDR, MTDR, "mtdr"), ++ NORMAL_MNEMONIC(MTSR, MTSR, "mtsr"), ++ NORMAL_MNEMONIC(MUL, MUL1, "mul"), ++ NORMAL_MNEMONIC(MULHH_W, MULHH_W, "mulhh.w"), ++ NORMAL_MNEMONIC(MULNHH_W, MULNHH_W, "mulnhh.w"), ++ NORMAL_MNEMONIC(MULNWH_D, MULNWH_D, "mulnwh.d"), ++ NORMAL_MNEMONIC(MULS_D, MULSD, "muls.d"), ++ NORMAL_MNEMONIC(MULSATHH_H, MULSATHH_H, "mulsathh.h"), ++ NORMAL_MNEMONIC(MULSATHH_W, MULSATHH_W, "mulsathh.w"), ++ NORMAL_MNEMONIC(MULSATRNDHH_H, MULSATRNDHH_H, "mulsatrndhh.h"), ++ NORMAL_MNEMONIC(MULSATRNDWH_W, MULSATRNDWH_W, "mulsatrndwh.w"), ++ NORMAL_MNEMONIC(MULSATWH_W, MULSATWH_W, "mulsatwh.w"), ++ NORMAL_MNEMONIC(MULU_D, MULU_D, "mulu.d"), ++ NORMAL_MNEMONIC(MULWH_D, MULWH_D, "mulwh.d"), ++ NORMAL_MNEMONIC(MUSFR, MUSFR, "musfr"), ++ NORMAL_MNEMONIC(MUSTR, MUSTR, "mustr"), ++ NORMAL_MNEMONIC(MVCR_D, MVCR_D, "mvcr.d"), ++ NORMAL_MNEMONIC(MVCR_W, MVCR_W, "mvcr.w"), ++ NORMAL_MNEMONIC(MVRC_D, MVRC_D, "mvrc.d"), ++ NORMAL_MNEMONIC(MVRC_W, MVRC_W, "mvrc.w"), ++ NORMAL_MNEMONIC(NEG, NEG, "neg"), ++ NORMAL_MNEMONIC(NOP, NOP, "nop"), ++ NORMAL_MNEMONIC(OR, OR1, "or"), ++ NORMAL_MNEMONIC(ORH, ORH, "orh"), ++ NORMAL_MNEMONIC(ORL, ORL, "orl"), ++ NORMAL_MNEMONIC(PABS_SB, PABS_SB, "pabs.sb"), ++ NORMAL_MNEMONIC(PABS_SH, PABS_SH, "pabs.sh"), ++ NORMAL_MNEMONIC(PACKSH_SB, PACKSH_SB, "packsh.sb"), ++ NORMAL_MNEMONIC(PACKSH_UB, PACKSH_UB, "packsh.ub"), ++ NORMAL_MNEMONIC(PACKW_SH, PACKW_SH, "packw.sh"), ++ NORMAL_MNEMONIC(PADD_B, PADD_B, "padd.b"), ++ NORMAL_MNEMONIC(PADD_H, PADD_H, "padd.h"), ++ NORMAL_MNEMONIC(PADDH_SH, PADDH_SH, "paddh.sh"), ++ NORMAL_MNEMONIC(PADDH_UB, PADDH_UB, "paddh.ub"), ++ NORMAL_MNEMONIC(PADDS_SB, PADDS_SB, "padds.sb"), ++ NORMAL_MNEMONIC(PADDS_SH, PADDS_SH, "padds.sh"), ++ NORMAL_MNEMONIC(PADDS_UB, PADDS_UB, "padds.ub"), ++ NORMAL_MNEMONIC(PADDS_UH, PADDS_UH, "padds.uh"), ++ NORMAL_MNEMONIC(PADDSUB_H, PADDSUB_H, "paddsub.h"), ++ NORMAL_MNEMONIC(PADDSUBH_SH, PADDSUBH_SH, "paddsubh.sh"), ++ NORMAL_MNEMONIC(PADDSUBS_SH, PADDSUBS_SH, "paddsubs.sh"), ++ NORMAL_MNEMONIC(PADDSUBS_UH, PADDSUBS_UH, "paddsubs.uh"), ++ NORMAL_MNEMONIC(PADDX_H, PADDX_H, "paddx.h"), ++ NORMAL_MNEMONIC(PADDXH_SH, PADDXH_SH, "paddxh.sh"), ++ NORMAL_MNEMONIC(PADDXS_SH, PADDXS_SH, "paddxs.sh"), ++ NORMAL_MNEMONIC(PADDXS_UH, PADDXS_UH, "paddxs.uh"), ++ NORMAL_MNEMONIC(PASR_B, PASR_B, "pasr.b"), ++ NORMAL_MNEMONIC(PASR_H, PASR_H, "pasr.h"), ++ NORMAL_MNEMONIC(PAVG_SH, PAVG_SH, "pavg.sh"), ++ NORMAL_MNEMONIC(PAVG_UB, PAVG_UB, "pavg.ub"), ++ NORMAL_MNEMONIC(PLSL_B, PLSL_B, "plsl.b"), ++ NORMAL_MNEMONIC(PLSL_H, PLSL_H, "plsl.h"), ++ NORMAL_MNEMONIC(PLSR_B, PLSR_B, "plsr.b"), ++ NORMAL_MNEMONIC(PLSR_H, PLSR_H, "plsr.h"), ++ NORMAL_MNEMONIC(PMAX_SH, PMAX_SH, "pmax.sh"), ++ NORMAL_MNEMONIC(PMAX_UB, PMAX_UB, "pmax.ub"), ++ NORMAL_MNEMONIC(PMIN_SH, PMIN_SH, "pmin.sh"), ++ NORMAL_MNEMONIC(PMIN_UB, PMIN_UB, "pmin.ub"), ++ NORMAL_MNEMONIC(POPJC, POPJC, "popjc"), ++ NORMAL_MNEMONIC(POPM, POPM, "popm"), ++ NORMAL_MNEMONIC(PREF, PREF, "pref"), ++ NORMAL_MNEMONIC(PSAD, PSAD, "psad"), ++ NORMAL_MNEMONIC(PSUB_B, PSUB_B, "psub.b"), ++ NORMAL_MNEMONIC(PSUB_H, PSUB_H, "psub.h"), ++ NORMAL_MNEMONIC(PSUBADD_H, PSUBADD_H, "psubadd.h"), ++ NORMAL_MNEMONIC(PSUBADDH_SH, PSUBADDH_SH, "psubaddh.sh"), ++ NORMAL_MNEMONIC(PSUBADDS_SH, PSUBADDS_SH, "psubadds.sh"), ++ NORMAL_MNEMONIC(PSUBADDS_UH, PSUBADDS_UH, "psubadds.uh"), ++ NORMAL_MNEMONIC(PSUBH_SH, PSUBH_SH, "psubh.sh"), ++ NORMAL_MNEMONIC(PSUBH_UB, PSUBH_UB, "psubh.ub"), ++ NORMAL_MNEMONIC(PSUBS_SB, PSUBS_SB, "psubs.sb"), ++ NORMAL_MNEMONIC(PSUBS_SH, PSUBS_SH, "psubs.sh"), ++ NORMAL_MNEMONIC(PSUBS_UB, PSUBS_UB, "psubs.ub"), ++ NORMAL_MNEMONIC(PSUBS_UH, PSUBS_UH, "psubs.uh"), ++ NORMAL_MNEMONIC(PSUBX_H, PSUBX_H, "psubx.h"), ++ NORMAL_MNEMONIC(PSUBXH_SH, PSUBXH_SH, "psubxh.sh"), ++ NORMAL_MNEMONIC(PSUBXS_SH, PSUBXS_SH, "psubxs.sh"), ++ NORMAL_MNEMONIC(PSUBXS_UH, PSUBXS_UH, "psubxs.uh"), ++ NORMAL_MNEMONIC(PUNPCKSB_H, PUNPCKSB_H, "punpcksb.h"), ++ NORMAL_MNEMONIC(PUNPCKUB_H, PUNPCKUB_H, "punpckub.h"), ++ NORMAL_MNEMONIC(PUSHJC, PUSHJC, "pushjc"), ++ NORMAL_MNEMONIC(PUSHM, PUSHM, "pushm"), ++ NORMAL_MNEMONIC(RCALL, RCALL1, "rcall"), ++ NORMAL_MNEMONIC(RETEQ, RETEQ, "reteq"), ++ NORMAL_MNEMONIC(RETNE, RETNE, "retne"), ++ NORMAL_MNEMONIC(RETCC, RETCC, "retcc"), ++ NORMAL_MNEMONIC(RETCS, RETCS, "retcs"), ++ NORMAL_MNEMONIC(RETGE, RETGE, "retge"), ++ NORMAL_MNEMONIC(RETLT, RETLT, "retlt"), ++ NORMAL_MNEMONIC(RETMI, RETMI, "retmi"), ++ NORMAL_MNEMONIC(RETPL, RETPL, "retpl"), ++ NORMAL_MNEMONIC(RETLS, RETLS, "retls"), ++ NORMAL_MNEMONIC(RETGT, RETGT, "retgt"), ++ NORMAL_MNEMONIC(RETLE, RETLE, "retle"), ++ NORMAL_MNEMONIC(RETHI, RETHI, "rethi"), ++ NORMAL_MNEMONIC(RETVS, RETVS, "retvs"), ++ NORMAL_MNEMONIC(RETVC, RETVC, "retvc"), ++ NORMAL_MNEMONIC(RETQS, RETQS, "retqs"), ++ NORMAL_MNEMONIC(RETAL, RETAL, "retal"), ++ NORMAL_MNEMONIC(RETHS, RETHS, "reths"), ++ NORMAL_MNEMONIC(RETLO, RETLO, "retlo"), ++ NORMAL_MNEMONIC(RET, RETAL, "ret"), ++ NORMAL_MNEMONIC(RETD, RETD, "retd"), ++ NORMAL_MNEMONIC(RETE, RETE, "rete"), ++ NORMAL_MNEMONIC(RETJ, RETJ, "retj"), ++ NORMAL_MNEMONIC(RETS, RETS, "rets"), ++ NORMAL_MNEMONIC(RJMP, RJMP, "rjmp"), ++ NORMAL_MNEMONIC(ROL, ROL, "rol"), ++ NORMAL_MNEMONIC(ROR, ROR, "ror"), ++ NORMAL_MNEMONIC(RSUB, RSUB1, "rsub"), ++ NORMAL_MNEMONIC(SATADD_H, SATADD_H, "satadd.h"), ++ NORMAL_MNEMONIC(SATADD_W, SATADD_W, "satadd.w"), ++ NORMAL_MNEMONIC(SATRNDS, SATRNDS, "satrnds"), ++ NORMAL_MNEMONIC(SATRNDU, SATRNDU, "satrndu"), ++ NORMAL_MNEMONIC(SATS, SATS, "sats"), ++ NORMAL_MNEMONIC(SATSUB_H, SATSUB_H, "satsub.h"), ++ NORMAL_MNEMONIC(SATSUB_W, SATSUB_W1, "satsub.w"), ++ NORMAL_MNEMONIC(SATU, SATU, "satu"), ++ NORMAL_MNEMONIC(SBC, SBC, "sbc"), ++ NORMAL_MNEMONIC(SBR, SBR, "sbr"), ++ NORMAL_MNEMONIC(SCALL, SCALL, "scall"), ++ NORMAL_MNEMONIC(SCR, SCR, "scr"), ++ NORMAL_MNEMONIC(SLEEP, SLEEP, "sleep"), ++ NORMAL_MNEMONIC(SREQ, SREQ, "sreq"), ++ NORMAL_MNEMONIC(SRNE, SRNE, "srne"), ++ NORMAL_MNEMONIC(SRCC, SRCC, "srcc"), ++ NORMAL_MNEMONIC(SRCS, SRCS, "srcs"), ++ NORMAL_MNEMONIC(SRGE, SRGE, "srge"), ++ NORMAL_MNEMONIC(SRLT, SRLT, "srlt"), ++ NORMAL_MNEMONIC(SRMI, SRMI, "srmi"), ++ NORMAL_MNEMONIC(SRPL, SRPL, "srpl"), ++ NORMAL_MNEMONIC(SRLS, SRLS, "srls"), ++ NORMAL_MNEMONIC(SRGT, SRGT, "srgt"), ++ NORMAL_MNEMONIC(SRLE, SRLE, "srle"), ++ NORMAL_MNEMONIC(SRHI, SRHI, "srhi"), ++ NORMAL_MNEMONIC(SRVS, SRVS, "srvs"), ++ NORMAL_MNEMONIC(SRVC, SRVC, "srvc"), ++ NORMAL_MNEMONIC(SRQS, SRQS, "srqs"), ++ NORMAL_MNEMONIC(SRAL, SRAL, "sral"), ++ NORMAL_MNEMONIC(SRHS, SRHS, "srhs"), ++ NORMAL_MNEMONIC(SRLO, SRLO, "srlo"), ++ NORMAL_MNEMONIC(SSRF, SSRF, "ssrf"), ++ NORMAL_MNEMONIC(ST_B, ST_B1, "st.b"), ++ NORMAL_MNEMONIC(ST_D, ST_D1, "st.d"), ++ NORMAL_MNEMONIC(ST_H, ST_H1, "st.h"), ++ NORMAL_MNEMONIC(ST_W, ST_W1, "st.w"), ++ NORMAL_MNEMONIC(STC_D, STC_D3, "stc.d"), ++ NORMAL_MNEMONIC(STC_W, STC_W3, "stc.w"), ++ NORMAL_MNEMONIC(STC0_D, STC0_D, "stc0.d"), ++ NORMAL_MNEMONIC(STC0_W, STC0_W, "stc0.w"), ++ NORMAL_MNEMONIC(STCM_D, STCM_D, "stcm.d"), ++ NORMAL_MNEMONIC(STCM_W, STCM_W, "stcm.w"), ++ NORMAL_MNEMONIC(STCOND, STCOND, "stcond"), ++ NORMAL_MNEMONIC(STDSP, STDSP, "stdsp"), ++ NORMAL_MNEMONIC(STHH_W, STHH_W2, "sthh.w"), ++ NORMAL_MNEMONIC(STM, STM, "stm"), ++ NORMAL_MNEMONIC(STMTS, STMTS, "stmts"), ++ NORMAL_MNEMONIC(STSWP_H, STSWP_H, "stswp.h"), ++ NORMAL_MNEMONIC(STSWP_W, STSWP_W, "stswp.w"), ++ NORMAL_MNEMONIC(SUB, SUB1, "sub"), ++ NORMAL_MNEMONIC(SUBEQ, SUBEQ, "subeq"), ++ NORMAL_MNEMONIC(SUBNE, SUBNE, "subne"), ++ NORMAL_MNEMONIC(SUBCC, SUBCC, "subcc"), ++ NORMAL_MNEMONIC(SUBCS, SUBCS, "subcs"), ++ NORMAL_MNEMONIC(SUBGE, SUBGE, "subge"), ++ NORMAL_MNEMONIC(SUBLT, SUBLT, "sublt"), ++ NORMAL_MNEMONIC(SUBMI, SUBMI, "submi"), ++ NORMAL_MNEMONIC(SUBPL, SUBPL, "subpl"), ++ NORMAL_MNEMONIC(SUBLS, SUBLS, "subls"), ++ NORMAL_MNEMONIC(SUBGT, SUBGT, "subgt"), ++ NORMAL_MNEMONIC(SUBLE, SUBLE, "suble"), ++ NORMAL_MNEMONIC(SUBHI, SUBHI, "subhi"), ++ NORMAL_MNEMONIC(SUBVS, SUBVS, "subvs"), ++ NORMAL_MNEMONIC(SUBVC, SUBVC, "subvc"), ++ NORMAL_MNEMONIC(SUBQS, SUBQS, "subqs"), ++ NORMAL_MNEMONIC(SUBAL, SUBAL, "subal"), ++ NORMAL_MNEMONIC(SUBHS, SUBHS, "subhs"), ++ NORMAL_MNEMONIC(SUBLO, SUBLO, "sublo"), ++ NORMAL_MNEMONIC(SUBFEQ, SUBFEQ, "subfeq"), ++ NORMAL_MNEMONIC(SUBFNE, SUBFNE, "subfne"), ++ NORMAL_MNEMONIC(SUBFCC, SUBFCC, "subfcc"), ++ NORMAL_MNEMONIC(SUBFCS, SUBFCS, "subfcs"), ++ NORMAL_MNEMONIC(SUBFGE, SUBFGE, "subfge"), ++ NORMAL_MNEMONIC(SUBFLT, SUBFLT, "subflt"), ++ NORMAL_MNEMONIC(SUBFMI, SUBFMI, "subfmi"), ++ NORMAL_MNEMONIC(SUBFPL, SUBFPL, "subfpl"), ++ NORMAL_MNEMONIC(SUBFLS, SUBFLS, "subfls"), ++ NORMAL_MNEMONIC(SUBFGT, SUBFGT, "subfgt"), ++ NORMAL_MNEMONIC(SUBFLE, SUBFLE, "subfle"), ++ NORMAL_MNEMONIC(SUBFHI, SUBFHI, "subfhi"), ++ NORMAL_MNEMONIC(SUBFVS, SUBFVS, "subfvs"), ++ NORMAL_MNEMONIC(SUBFVC, SUBFVC, "subfvc"), ++ NORMAL_MNEMONIC(SUBFQS, SUBFQS, "subfqs"), ++ NORMAL_MNEMONIC(SUBFAL, SUBFAL, "subfal"), ++ NORMAL_MNEMONIC(SUBFHS, SUBFHS, "subfhs"), ++ NORMAL_MNEMONIC(SUBFLO, SUBFLO, "subflo"), ++ NORMAL_MNEMONIC(SUBHH_W, SUBHH_W, "subhh.w"), ++ NORMAL_MNEMONIC(SWAP_B, SWAP_B, "swap.b"), ++ NORMAL_MNEMONIC(SWAP_BH, SWAP_BH, "swap.bh"), ++ NORMAL_MNEMONIC(SWAP_H, SWAP_H, "swap.h"), ++ NORMAL_MNEMONIC(SYNC, SYNC, "sync"), ++ NORMAL_MNEMONIC(TLBR, TLBR, "tlbr"), ++ NORMAL_MNEMONIC(TLBS, TLBS, "tlbs"), ++ NORMAL_MNEMONIC(TLBW, TLBW, "tlbw"), ++ NORMAL_MNEMONIC(TNBZ, TNBZ, "tnbz"), ++ NORMAL_MNEMONIC(TST, TST, "tst"), ++ NORMAL_MNEMONIC(XCHG, XCHG, "xchg"), ++ NORMAL_MNEMONIC(MEMC, MEMC, "memc"), ++ NORMAL_MNEMONIC(MEMS, MEMS, "mems"), ++ NORMAL_MNEMONIC(MEMT, MEMT, "memt"), ++ FP_MNEMONIC(FADD, FADD, "fadd"), ++ FP_MNEMONIC(FSUB, FSUB, "fsub"), ++ FP_MNEMONIC(FMAC, FMAC, "fmac"), ++ FP_MNEMONIC(FNMAC, FNMAC, "fnmac"), ++ FP_MNEMONIC(FMSC, FMSC, "fmsc"), ++ FP_MNEMONIC(FNMSC, FNMSC, "fnmsc"), ++ FP_MNEMONIC(FMUL, FMUL, "fmul"), ++ FP_MNEMONIC(FNMUL, FNMUL, "fnmul"), ++ FP_MNEMONIC(FNEG, FNEG, "fneg"), ++ FP_MNEMONIC(FABS, FABS, "fabs"), ++ FP_MNEMONIC(FCMP, FCMP, "fcmp"), ++ FP_MNEMONIC(FMOV, FMOV1, "fmov"), ++ NORMAL_MNEMONIC(FCASTS_D, FCASTS_D, "fcasts.d"), ++ NORMAL_MNEMONIC(FCASTD_S, FCASTD_S, "fcastd.s"), ++ NORMAL_MNEMONIC(LDA_W, LDA_W, "lda.w"), ++ NORMAL_MNEMONIC(CALL, CALL, "call"), ++ NORMAL_MNEMONIC(PICOSVMAC, PICOSVMAC0, "picosvmac"), ++ NORMAL_MNEMONIC(PICOSVMUL, PICOSVMUL0, "picosvmul"), ++ NORMAL_MNEMONIC(PICOVMAC, PICOVMAC0, "picovmac"), ++ NORMAL_MNEMONIC(PICOVMUL, PICOVMUL0, "picovmul"), ++ NORMAL_MNEMONIC(PICOLD_D, PICOLD_D2, "picold.d"), ++ NORMAL_MNEMONIC(PICOLD_W, PICOLD_W2, "picold.w"), ++ NORMAL_MNEMONIC(PICOLDM_D, PICOLDM_D, "picoldm.d"), ++ NORMAL_MNEMONIC(PICOLDM_W, PICOLDM_W, "picoldm.w"), ++ NORMAL_MNEMONIC(PICOMV_D, PICOMV_D1, "picomv.d"), ++ NORMAL_MNEMONIC(PICOMV_W, PICOMV_W1, "picomv.w"), ++ NORMAL_MNEMONIC(PICOST_D, PICOST_D2, "picost.d"), ++ NORMAL_MNEMONIC(PICOST_W, PICOST_W2, "picost.w"), ++ NORMAL_MNEMONIC(PICOSTM_D, PICOSTM_D, "picostm.d"), ++ NORMAL_MNEMONIC(PICOSTM_W, PICOSTM_W, "picostm.w"), ++ }; ++#undef NORMAL_MNEMONIC ++#undef ALIAS_MNEMONIC ++#undef FP_MNEMONIC +diff -Nrup binutils-2.17/opcodes/avr32-opc.h binutils-2.17.atmel.1.3.0/opcodes/avr32-opc.h +--- binutils-2.17/opcodes/avr32-opc.h 1970-01-01 01:00:00.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/opcodes/avr32-opc.h 2007-03-26 10:20:34.000000000 +0200 +@@ -0,0 +1,1655 @@ ++/* Opcode tables for AVR32. ++ Copyright 2005, 2006 Atmel Corporation. ++ ++ Written by Haavard Skinnemoen, Atmel Norway, ++ ++ This file is part of libopcodes. ++ ++ This program is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License as ++ published by the Free Software Foundation; either version 2 of the ++ License, or (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#include "bfd.h" ++ ++#define AVR32_MAX_OPERANDS 8 ++#define AVR32_MAX_FIELDS 8 ++ ++#define AVR32_V1 (1 << 1) ++#define AVR32_SIMD (1 << 2) ++#define AVR32_DSP (1 << 3) ++#define AVR32_RMW (1 << 4) ++#define AVR32_FP (1 << 16) ++#define AVR32_PICO (1 << 17) ++ ++/* Registers we commonly refer to */ ++#define AVR32_REG_R12 12 ++#define AVR32_REG_SP 13 ++#define AVR32_REG_LR 14 ++#define AVR32_REG_PC 15 ++ ++struct avr32_ifield ++{ ++ int id; ++ unsigned short bitsize; ++ unsigned short shift; ++ unsigned long mask; ++ ++ /* If the value doesn't fit, it will be truncated with no warning */ ++ void (*insert)(const struct avr32_ifield *, void *, unsigned long); ++ void (*extract)(const struct avr32_ifield *, void *, unsigned long *); ++}; ++ ++struct avr32_opcode ++{ ++ int id; ++ int size; ++ unsigned long value; ++ unsigned long mask; ++ const struct avr32_syntax *syntax; ++ bfd_reloc_code_real_type reloc_type; ++ unsigned int nr_fields; ++ /* if relaxable, which field is variable, otherwise -1 */ ++ int var_field; ++ const struct avr32_ifield *fields[AVR32_MAX_FIELDS]; ++}; ++ ++struct avr32_alias ++{ ++ int id; ++ const struct avr32_opcode *opc; ++ struct { ++ int is_opindex; ++ unsigned long value; ++ } operand_map[AVR32_MAX_OPERANDS]; ++}; ++ ++struct avr32_syntax ++{ ++ int id; ++ unsigned long isa_flags; ++ const struct avr32_mnemonic *mnemonic; ++ int type; ++ union { ++ const struct avr32_opcode *opc; ++ const struct avr32_alias *alias; ++ } u; ++ const struct avr32_syntax *next; ++ /* negative means "vararg" */ ++ int nr_operands; ++ int operand[AVR32_MAX_OPERANDS]; ++}; ++ ++#if 0 ++#define AVR32_ALIAS_MAKE_CONST(val) ((val) | 0x80000000UL) ++#define AVR32_ALIAS_IS_CONST(mapval) (((mapval) & 0x80000000UL) != 0) ++#define AVR32_ALIAS_GET_CONST(mapval) ((mapval) & ~0x80000000UL) ++#endif ++ ++struct avr32_mnemonic ++{ ++ int id; ++ const char *name; ++ const struct avr32_syntax *syntax; ++}; ++ ++extern const struct avr32_ifield avr32_ifield_table[]; ++extern struct avr32_opcode avr32_opc_table[]; ++extern const struct avr32_syntax avr32_syntax_table[]; ++extern const struct avr32_alias avr32_alias_table[]; ++extern const struct avr32_mnemonic avr32_mnemonic_table[]; ++ ++extern void avr32_insert_simple(const struct avr32_ifield *field, ++ void *buf, unsigned long value); ++extern void avr32_insert_bit5c(const struct avr32_ifield *field, ++ void *buf, unsigned long value); ++extern void avr32_insert_k10(const struct avr32_ifield *field, ++ void *buf, unsigned long value); ++extern void avr32_insert_k21(const struct avr32_ifield *field, ++ void *buf, unsigned long value); ++extern void avr32_insert_cpop(const struct avr32_ifield *field, ++ void *buf, unsigned long value); ++extern void avr32_insert_k12cp(const struct avr32_ifield *field, ++ void *buf, unsigned long value); ++ ++extern void avr32_extract_simple(const struct avr32_ifield *field, ++ void *buf, unsigned long *value); ++extern void avr32_extract_bit5c(const struct avr32_ifield *field, ++ void *buf, unsigned long *value); ++extern void avr32_extract_k10(const struct avr32_ifield *field, ++ void *buf, unsigned long *value); ++extern void avr32_extract_k21(const struct avr32_ifield *field, ++ void *buf, unsigned long *value); ++extern void avr32_extract_cpop(const struct avr32_ifield *field, ++ void *buf, unsigned long *value); ++extern void avr32_extract_k12cp(const struct avr32_ifield *field, ++ void *buf, unsigned long *value); ++ ++enum avr32_operand_type ++{ ++ AVR32_OPERAND_INTREG, /* just a register */ ++ AVR32_OPERAND_INTREG_PREDEC, /* register with pre-decrement */ ++ AVR32_OPERAND_INTREG_POSTINC, /* register with post-increment */ ++ AVR32_OPERAND_INTREG_LSL, /* register with left shift */ ++ AVR32_OPERAND_INTREG_LSR, /* register with right shift */ ++ AVR32_OPERAND_INTREG_BSEL, /* register with byte selector */ ++ AVR32_OPERAND_INTREG_HSEL, /* register with halfword selector */ ++ AVR32_OPERAND_INTREG_SDISP, /* Rp[signed disp] */ ++ AVR32_OPERAND_INTREG_SDISP_H, /* Rp[signed hword-aligned disp] */ ++ AVR32_OPERAND_INTREG_SDISP_W, /* Rp[signed word-aligned disp] */ ++ AVR32_OPERAND_INTREG_UDISP, /* Rp[unsigned disp] */ ++ AVR32_OPERAND_INTREG_UDISP_H, /* Rp[unsigned hword-aligned disp] */ ++ AVR32_OPERAND_INTREG_UDISP_W, /* Rp[unsigned word-aligned disp] */ ++ AVR32_OPERAND_INTREG_INDEX, /* Rp[Ri << sa] */ ++ AVR32_OPERAND_INTREG_XINDEX, /* Rp[Ri:bytesel << 2] */ ++ AVR32_OPERAND_DWREG, /* Even-numbered register */ ++ AVR32_OPERAND_PC_UDISP_W, /* PC[unsigned word-aligned disp] or label */ ++ AVR32_OPERAND_SP, /* Just SP */ ++ AVR32_OPERAND_SP_UDISP_W, /* SP[unsigned word-aligned disp] */ ++ AVR32_OPERAND_CPNO, ++ AVR32_OPERAND_CPREG, ++ AVR32_OPERAND_CPREG_D, ++ AVR32_OPERAND_UNSIGNED_CONST, ++ AVR32_OPERAND_UNSIGNED_CONST_W, ++ AVR32_OPERAND_SIGNED_CONST, ++ AVR32_OPERAND_SIGNED_CONST_W, ++ AVR32_OPERAND_JMPLABEL, ++ AVR32_OPERAND_UNSIGNED_NUMBER, ++ AVR32_OPERAND_UNSIGNED_NUMBER_W, ++ AVR32_OPERAND_REGLIST8, ++ AVR32_OPERAND_REGLIST9, ++ AVR32_OPERAND_REGLIST16, ++ AVR32_OPERAND_REGLIST_LDM, ++ AVR32_OPERAND_REGLIST_CP8, ++ AVR32_OPERAND_REGLIST_CPD8, ++ AVR32_OPERAND_RETVAL, ++ AVR32_OPERAND_MCALL, ++ AVR32_OPERAND_JOSPINC, ++ AVR32_OPERAND_COH, ++ AVR32_OPERAND_FPREG_S, ++ AVR32_OPERAND_FPREG_D, ++ AVR32_OPERAND_PICO_REG_W, ++ AVR32_OPERAND_PICO_REG_D, ++ AVR32_OPERAND_PICO_REGLIST_W, ++ AVR32_OPERAND_PICO_REGLIST_D, ++ AVR32_OPERAND_PICO_IN, ++ AVR32_OPERAND_PICO_OUT0, ++ AVR32_OPERAND_PICO_OUT1, ++ AVR32_OPERAND_PICO_OUT2, ++ AVR32_OPERAND_PICO_OUT3, ++ AVR32_OPERAND__END_ ++}; ++#define AVR32_OPERAND_UNKNOWN AVR32_OPERAND__END_ ++#define AVR32_NR_OPERANDS AVR32_OPERAND__END_ ++ ++enum avr32_ifield_type ++{ ++ AVR32_IFIELD_RX, ++ AVR32_IFIELD_RY, ++ AVR32_IFIELD_COND4C, ++ AVR32_IFIELD_K8C, ++ AVR32_IFIELD_K7C, ++ AVR32_IFIELD_K5C, ++ AVR32_IFIELD_K3, ++ AVR32_IFIELD_RY_DW, ++ AVR32_IFIELD_COND4E, ++ AVR32_IFIELD_K8E, ++ AVR32_IFIELD_BIT5C, ++ AVR32_IFIELD_COND3, ++ AVR32_IFIELD_K10, ++ AVR32_IFIELD_POPM, ++ AVR32_IFIELD_K2, ++ AVR32_IFIELD_RD_E, ++ AVR32_IFIELD_RD_DW, ++ AVR32_IFIELD_X, ++ AVR32_IFIELD_Y, ++ AVR32_IFIELD_X2, ++ AVR32_IFIELD_Y2, ++ AVR32_IFIELD_K5E, ++ AVR32_IFIELD_PART2, ++ AVR32_IFIELD_PART1, ++ AVR32_IFIELD_K16, ++ AVR32_IFIELD_CACHEOP, ++ AVR32_IFIELD_K11, ++ AVR32_IFIELD_K21, ++ AVR32_IFIELD_CPOP, ++ AVR32_IFIELD_CPNO, ++ AVR32_IFIELD_CRD_RI, ++ AVR32_IFIELD_CRX, ++ AVR32_IFIELD_CRY, ++ AVR32_IFIELD_K7E, ++ AVR32_IFIELD_CRD_DW, ++ AVR32_IFIELD_PART1_K12, ++ AVR32_IFIELD_PART2_K12, ++ AVR32_IFIELD_K12, ++ AVR32_IFIELD_S5, ++ AVR32_IFIELD_K5E2, ++ AVR32_IFIELD_K4, ++ AVR32_IFIELD_COND4E2, ++ AVR32_IFIELD_K8E2, ++ AVR32_IFIELD_K6, ++ AVR32_IFIELD_MEM15, ++ AVR32_IFIELD_MEMB5, ++ AVR32_IFIELD_W, ++ AVR32_IFIELD_CM_HL, ++ AVR32_IFIELD_K12CP, ++ AVR32_IFIELD__END_, ++}; ++#define AVR32_NR_IFIELDS AVR32_IFIELD__END_ ++ ++enum avr32_opc_type ++{ ++ AVR32_OPC_ABS, ++ AVR32_OPC_ACALL, ++ AVR32_OPC_ACR, ++ AVR32_OPC_ADC, ++ AVR32_OPC_ADD1, ++ AVR32_OPC_ADD2, ++ AVR32_OPC_ADDABS, ++ AVR32_OPC_ADDHH_W, ++ AVR32_OPC_AND1, ++ AVR32_OPC_AND2, ++ AVR32_OPC_AND3, ++ AVR32_OPC_ANDH, ++ AVR32_OPC_ANDH_COH, ++ AVR32_OPC_ANDL, ++ AVR32_OPC_ANDL_COH, ++ AVR32_OPC_ANDN, ++ AVR32_OPC_ASR1, ++ AVR32_OPC_ASR3, ++ AVR32_OPC_ASR2, ++ AVR32_OPC_BLD, ++ AVR32_OPC_BREQ1, ++ AVR32_OPC_BRNE1, ++ AVR32_OPC_BRCC1, ++ AVR32_OPC_BRCS1, ++ AVR32_OPC_BRGE1, ++ AVR32_OPC_BRLT1, ++ AVR32_OPC_BRMI1, ++ AVR32_OPC_BRPL1, ++ AVR32_OPC_BREQ2, ++ AVR32_OPC_BRNE2, ++ AVR32_OPC_BRCC2, ++ AVR32_OPC_BRCS2, ++ AVR32_OPC_BRGE2, ++ AVR32_OPC_BRLT2, ++ AVR32_OPC_BRMI2, ++ AVR32_OPC_BRPL2, ++ AVR32_OPC_BRLS, ++ AVR32_OPC_BRGT, ++ AVR32_OPC_BRLE, ++ AVR32_OPC_BRHI, ++ AVR32_OPC_BRVS, ++ AVR32_OPC_BRVC, ++ AVR32_OPC_BRQS, ++ AVR32_OPC_BRAL, ++ AVR32_OPC_BREAKPOINT, ++ AVR32_OPC_BREV, ++ AVR32_OPC_BST, ++ AVR32_OPC_CACHE, ++ AVR32_OPC_CASTS_B, ++ AVR32_OPC_CASTS_H, ++ AVR32_OPC_CASTU_B, ++ AVR32_OPC_CASTU_H, ++ AVR32_OPC_CBR, ++ AVR32_OPC_CLZ, ++ AVR32_OPC_COM, ++ AVR32_OPC_COP, ++ AVR32_OPC_CP_B, ++ AVR32_OPC_CP_H, ++ AVR32_OPC_CP_W1, ++ AVR32_OPC_CP_W2, ++ AVR32_OPC_CP_W3, ++ AVR32_OPC_CPC1, ++ AVR32_OPC_CPC2, ++ AVR32_OPC_CSRF, ++ AVR32_OPC_CSRFCZ, ++ AVR32_OPC_DIVS, ++ AVR32_OPC_DIVU, ++ AVR32_OPC_EOR1, ++ AVR32_OPC_EOR2, ++ AVR32_OPC_EOR3, ++ AVR32_OPC_EORL, ++ AVR32_OPC_EORH, ++ AVR32_OPC_FRS, ++ AVR32_OPC_ICALL, ++ AVR32_OPC_INCJOSP, ++ AVR32_OPC_LD_D1, ++ AVR32_OPC_LD_D2, ++ AVR32_OPC_LD_D3, ++ AVR32_OPC_LD_D5, ++ AVR32_OPC_LD_D4, ++ AVR32_OPC_LD_SB2, ++ AVR32_OPC_LD_SB1, ++ AVR32_OPC_LD_UB1, ++ AVR32_OPC_LD_UB2, ++ AVR32_OPC_LD_UB5, ++ AVR32_OPC_LD_UB3, ++ AVR32_OPC_LD_UB4, ++ AVR32_OPC_LD_SH1, ++ AVR32_OPC_LD_SH2, ++ AVR32_OPC_LD_SH5, ++ AVR32_OPC_LD_SH3, ++ AVR32_OPC_LD_SH4, ++ AVR32_OPC_LD_UH1, ++ AVR32_OPC_LD_UH2, ++ AVR32_OPC_LD_UH5, ++ AVR32_OPC_LD_UH3, ++ AVR32_OPC_LD_UH4, ++ AVR32_OPC_LD_W1, ++ AVR32_OPC_LD_W2, ++ AVR32_OPC_LD_W5, ++ AVR32_OPC_LD_W6, ++ AVR32_OPC_LD_W3, ++ AVR32_OPC_LD_W4, ++ AVR32_OPC_LDC_D1, ++ AVR32_OPC_LDC_D2, ++ AVR32_OPC_LDC_D3, ++ AVR32_OPC_LDC_W1, ++ AVR32_OPC_LDC_W2, ++ AVR32_OPC_LDC_W3, ++ AVR32_OPC_LDC0_D, ++ AVR32_OPC_LDC0_W, ++ AVR32_OPC_LDCM_D, ++ AVR32_OPC_LDCM_D_PU, ++ AVR32_OPC_LDCM_W, ++ AVR32_OPC_LDCM_W_PU, ++ AVR32_OPC_LDDPC, ++ AVR32_OPC_LDDPC_EXT, ++ AVR32_OPC_LDDSP, ++ AVR32_OPC_LDINS_B, ++ AVR32_OPC_LDINS_H, ++ AVR32_OPC_LDM, ++ AVR32_OPC_LDMTS, ++ AVR32_OPC_LDMTS_PU, ++ AVR32_OPC_LDSWP_SH, ++ AVR32_OPC_LDSWP_UH, ++ AVR32_OPC_LDSWP_W, ++ AVR32_OPC_LSL1, ++ AVR32_OPC_LSL3, ++ AVR32_OPC_LSL2, ++ AVR32_OPC_LSR1, ++ AVR32_OPC_LSR3, ++ AVR32_OPC_LSR2, ++ AVR32_OPC_MAC, ++ AVR32_OPC_MACHH_D, ++ AVR32_OPC_MACHH_W, ++ AVR32_OPC_MACS_D, ++ AVR32_OPC_MACSATHH_W, ++ AVR32_OPC_MACUD, ++ AVR32_OPC_MACWH_D, ++ AVR32_OPC_MAX, ++ AVR32_OPC_MCALL, ++ AVR32_OPC_MFDR, ++ AVR32_OPC_MFSR, ++ AVR32_OPC_MIN, ++ AVR32_OPC_MOV3, ++ AVR32_OPC_MOV1, ++ AVR32_OPC_MOV2, ++ AVR32_OPC_MOVEQ1, ++ AVR32_OPC_MOVNE1, ++ AVR32_OPC_MOVCC1, ++ AVR32_OPC_MOVCS1, ++ AVR32_OPC_MOVGE1, ++ AVR32_OPC_MOVLT1, ++ AVR32_OPC_MOVMI1, ++ AVR32_OPC_MOVPL1, ++ AVR32_OPC_MOVLS1, ++ AVR32_OPC_MOVGT1, ++ AVR32_OPC_MOVLE1, ++ AVR32_OPC_MOVHI1, ++ AVR32_OPC_MOVVS1, ++ AVR32_OPC_MOVVC1, ++ AVR32_OPC_MOVQS1, ++ AVR32_OPC_MOVAL1, ++ AVR32_OPC_MOVEQ2, ++ AVR32_OPC_MOVNE2, ++ AVR32_OPC_MOVCC2, ++ AVR32_OPC_MOVCS2, ++ AVR32_OPC_MOVGE2, ++ AVR32_OPC_MOVLT2, ++ AVR32_OPC_MOVMI2, ++ AVR32_OPC_MOVPL2, ++ AVR32_OPC_MOVLS2, ++ AVR32_OPC_MOVGT2, ++ AVR32_OPC_MOVLE2, ++ AVR32_OPC_MOVHI2, ++ AVR32_OPC_MOVVS2, ++ AVR32_OPC_MOVVC2, ++ AVR32_OPC_MOVQS2, ++ AVR32_OPC_MOVAL2, ++ AVR32_OPC_MTDR, ++ AVR32_OPC_MTSR, ++ AVR32_OPC_MUL1, ++ AVR32_OPC_MUL2, ++ AVR32_OPC_MUL3, ++ AVR32_OPC_MULHH_W, ++ AVR32_OPC_MULNHH_W, ++ AVR32_OPC_MULNWH_D, ++ AVR32_OPC_MULSD, ++ AVR32_OPC_MULSATHH_H, ++ AVR32_OPC_MULSATHH_W, ++ AVR32_OPC_MULSATRNDHH_H, ++ AVR32_OPC_MULSATRNDWH_W, ++ AVR32_OPC_MULSATWH_W, ++ AVR32_OPC_MULU_D, ++ AVR32_OPC_MULWH_D, ++ AVR32_OPC_MUSFR, ++ AVR32_OPC_MUSTR, ++ AVR32_OPC_MVCR_D, ++ AVR32_OPC_MVCR_W, ++ AVR32_OPC_MVRC_D, ++ AVR32_OPC_MVRC_W, ++ AVR32_OPC_NEG, ++ AVR32_OPC_NOP, ++ AVR32_OPC_OR1, ++ AVR32_OPC_OR2, ++ AVR32_OPC_OR3, ++ AVR32_OPC_ORH, ++ AVR32_OPC_ORL, ++ AVR32_OPC_PABS_SB, ++ AVR32_OPC_PABS_SH, ++ AVR32_OPC_PACKSH_SB, ++ AVR32_OPC_PACKSH_UB, ++ AVR32_OPC_PACKW_SH, ++ AVR32_OPC_PADD_B, ++ AVR32_OPC_PADD_H, ++ AVR32_OPC_PADDH_SH, ++ AVR32_OPC_PADDH_UB, ++ AVR32_OPC_PADDS_SB, ++ AVR32_OPC_PADDS_SH, ++ AVR32_OPC_PADDS_UB, ++ AVR32_OPC_PADDS_UH, ++ AVR32_OPC_PADDSUB_H, ++ AVR32_OPC_PADDSUBH_SH, ++ AVR32_OPC_PADDSUBS_SH, ++ AVR32_OPC_PADDSUBS_UH, ++ AVR32_OPC_PADDX_H, ++ AVR32_OPC_PADDXH_SH, ++ AVR32_OPC_PADDXS_SH, ++ AVR32_OPC_PADDXS_UH, ++ AVR32_OPC_PASR_B, ++ AVR32_OPC_PASR_H, ++ AVR32_OPC_PAVG_SH, ++ AVR32_OPC_PAVG_UB, ++ AVR32_OPC_PLSL_B, ++ AVR32_OPC_PLSL_H, ++ AVR32_OPC_PLSR_B, ++ AVR32_OPC_PLSR_H, ++ AVR32_OPC_PMAX_SH, ++ AVR32_OPC_PMAX_UB, ++ AVR32_OPC_PMIN_SH, ++ AVR32_OPC_PMIN_UB, ++ AVR32_OPC_POPJC, ++ AVR32_OPC_POPM, ++ AVR32_OPC_POPM_E, ++ AVR32_OPC_PREF, ++ AVR32_OPC_PSAD, ++ AVR32_OPC_PSUB_B, ++ AVR32_OPC_PSUB_H, ++ AVR32_OPC_PSUBADD_H, ++ AVR32_OPC_PSUBADDH_SH, ++ AVR32_OPC_PSUBADDS_SH, ++ AVR32_OPC_PSUBADDS_UH, ++ AVR32_OPC_PSUBH_SH, ++ AVR32_OPC_PSUBH_UB, ++ AVR32_OPC_PSUBS_SB, ++ AVR32_OPC_PSUBS_SH, ++ AVR32_OPC_PSUBS_UB, ++ AVR32_OPC_PSUBS_UH, ++ AVR32_OPC_PSUBX_H, ++ AVR32_OPC_PSUBXH_SH, ++ AVR32_OPC_PSUBXS_SH, ++ AVR32_OPC_PSUBXS_UH, ++ AVR32_OPC_PUNPCKSB_H, ++ AVR32_OPC_PUNPCKUB_H, ++ AVR32_OPC_PUSHJC, ++ AVR32_OPC_PUSHM, ++ AVR32_OPC_PUSHM_E, ++ AVR32_OPC_RCALL1, ++ AVR32_OPC_RCALL2, ++ AVR32_OPC_RETEQ, ++ AVR32_OPC_RETNE, ++ AVR32_OPC_RETCC, ++ AVR32_OPC_RETCS, ++ AVR32_OPC_RETGE, ++ AVR32_OPC_RETLT, ++ AVR32_OPC_RETMI, ++ AVR32_OPC_RETPL, ++ AVR32_OPC_RETLS, ++ AVR32_OPC_RETGT, ++ AVR32_OPC_RETLE, ++ AVR32_OPC_RETHI, ++ AVR32_OPC_RETVS, ++ AVR32_OPC_RETVC, ++ AVR32_OPC_RETQS, ++ AVR32_OPC_RETAL, ++ AVR32_OPC_RETD, ++ AVR32_OPC_RETE, ++ AVR32_OPC_RETJ, ++ AVR32_OPC_RETS, ++ AVR32_OPC_RJMP, ++ AVR32_OPC_ROL, ++ AVR32_OPC_ROR, ++ AVR32_OPC_RSUB1, ++ AVR32_OPC_RSUB2, ++ AVR32_OPC_SATADD_H, ++ AVR32_OPC_SATADD_W, ++ AVR32_OPC_SATRNDS, ++ AVR32_OPC_SATRNDU, ++ AVR32_OPC_SATS, ++ AVR32_OPC_SATSUB_H, ++ AVR32_OPC_SATSUB_W1, ++ AVR32_OPC_SATSUB_W2, ++ AVR32_OPC_SATU, ++ AVR32_OPC_SBC, ++ AVR32_OPC_SBR, ++ AVR32_OPC_SCALL, ++ AVR32_OPC_SCR, ++ AVR32_OPC_SLEEP, ++ AVR32_OPC_SREQ, ++ AVR32_OPC_SRNE, ++ AVR32_OPC_SRCC, ++ AVR32_OPC_SRCS, ++ AVR32_OPC_SRGE, ++ AVR32_OPC_SRLT, ++ AVR32_OPC_SRMI, ++ AVR32_OPC_SRPL, ++ AVR32_OPC_SRLS, ++ AVR32_OPC_SRGT, ++ AVR32_OPC_SRLE, ++ AVR32_OPC_SRHI, ++ AVR32_OPC_SRVS, ++ AVR32_OPC_SRVC, ++ AVR32_OPC_SRQS, ++ AVR32_OPC_SRAL, ++ AVR32_OPC_SSRF, ++ AVR32_OPC_ST_B1, ++ AVR32_OPC_ST_B2, ++ AVR32_OPC_ST_B5, ++ AVR32_OPC_ST_B3, ++ AVR32_OPC_ST_B4, ++ AVR32_OPC_ST_D1, ++ AVR32_OPC_ST_D2, ++ AVR32_OPC_ST_D3, ++ AVR32_OPC_ST_D5, ++ AVR32_OPC_ST_D4, ++ AVR32_OPC_ST_H1, ++ AVR32_OPC_ST_H2, ++ AVR32_OPC_ST_H5, ++ AVR32_OPC_ST_H3, ++ AVR32_OPC_ST_H4, ++ AVR32_OPC_ST_W1, ++ AVR32_OPC_ST_W2, ++ AVR32_OPC_ST_W5, ++ AVR32_OPC_ST_W3, ++ AVR32_OPC_ST_W4, ++ AVR32_OPC_STC_D1, ++ AVR32_OPC_STC_D2, ++ AVR32_OPC_STC_D3, ++ AVR32_OPC_STC_W1, ++ AVR32_OPC_STC_W2, ++ AVR32_OPC_STC_W3, ++ AVR32_OPC_STC0_D, ++ AVR32_OPC_STC0_W, ++ AVR32_OPC_STCM_D, ++ AVR32_OPC_STCM_D_PU, ++ AVR32_OPC_STCM_W, ++ AVR32_OPC_STCM_W_PU, ++ AVR32_OPC_STCOND, ++ AVR32_OPC_STDSP, ++ AVR32_OPC_STHH_W2, ++ AVR32_OPC_STHH_W1, ++ AVR32_OPC_STM, ++ AVR32_OPC_STM_PU, ++ AVR32_OPC_STMTS, ++ AVR32_OPC_STMTS_PU, ++ AVR32_OPC_STSWP_H, ++ AVR32_OPC_STSWP_W, ++ AVR32_OPC_SUB1, ++ AVR32_OPC_SUB2, ++ AVR32_OPC_SUB5, ++ AVR32_OPC_SUB3_SP, ++ AVR32_OPC_SUB3, ++ AVR32_OPC_SUB4, ++ AVR32_OPC_SUBEQ, ++ AVR32_OPC_SUBNE, ++ AVR32_OPC_SUBCC, ++ AVR32_OPC_SUBCS, ++ AVR32_OPC_SUBGE, ++ AVR32_OPC_SUBLT, ++ AVR32_OPC_SUBMI, ++ AVR32_OPC_SUBPL, ++ AVR32_OPC_SUBLS, ++ AVR32_OPC_SUBGT, ++ AVR32_OPC_SUBLE, ++ AVR32_OPC_SUBHI, ++ AVR32_OPC_SUBVS, ++ AVR32_OPC_SUBVC, ++ AVR32_OPC_SUBQS, ++ AVR32_OPC_SUBAL, ++ AVR32_OPC_SUBFEQ, ++ AVR32_OPC_SUBFNE, ++ AVR32_OPC_SUBFCC, ++ AVR32_OPC_SUBFCS, ++ AVR32_OPC_SUBFGE, ++ AVR32_OPC_SUBFLT, ++ AVR32_OPC_SUBFMI, ++ AVR32_OPC_SUBFPL, ++ AVR32_OPC_SUBFLS, ++ AVR32_OPC_SUBFGT, ++ AVR32_OPC_SUBFLE, ++ AVR32_OPC_SUBFHI, ++ AVR32_OPC_SUBFVS, ++ AVR32_OPC_SUBFVC, ++ AVR32_OPC_SUBFQS, ++ AVR32_OPC_SUBFAL, ++ AVR32_OPC_SUBHH_W, ++ AVR32_OPC_SWAP_B, ++ AVR32_OPC_SWAP_BH, ++ AVR32_OPC_SWAP_H, ++ AVR32_OPC_SYNC, ++ AVR32_OPC_TLBR, ++ AVR32_OPC_TLBS, ++ AVR32_OPC_TLBW, ++ AVR32_OPC_TNBZ, ++ AVR32_OPC_TST, ++ AVR32_OPC_XCHG, ++ AVR32_OPC_MEMC, ++ AVR32_OPC_MEMS, ++ AVR32_OPC_MEMT, ++ AVR32_OPC_BFEXTS, ++ AVR32_OPC_BFEXTU, ++ AVR32_OPC_BFINS, ++ AVR32_OPC__END_ ++}; ++#define AVR32_NR_OPCODES AVR32_OPC__END_ ++ ++enum avr32_syntax_type ++{ ++ AVR32_SYNTAX_ABS, ++ AVR32_SYNTAX_ACALL, ++ AVR32_SYNTAX_ACR, ++ AVR32_SYNTAX_ADC, ++ AVR32_SYNTAX_ADD1, ++ AVR32_SYNTAX_ADD2, ++ AVR32_SYNTAX_ADDABS, ++ AVR32_SYNTAX_ADDHH_W, ++ AVR32_SYNTAX_AND1, ++ AVR32_SYNTAX_AND2, ++ AVR32_SYNTAX_AND3, ++ AVR32_SYNTAX_ANDH, ++ AVR32_SYNTAX_ANDH_COH, ++ AVR32_SYNTAX_ANDL, ++ AVR32_SYNTAX_ANDL_COH, ++ AVR32_SYNTAX_ANDN, ++ AVR32_SYNTAX_ASR1, ++ AVR32_SYNTAX_ASR3, ++ AVR32_SYNTAX_ASR2, ++ AVR32_SYNTAX_BFEXTS, ++ AVR32_SYNTAX_BFEXTU, ++ AVR32_SYNTAX_BFINS, ++ AVR32_SYNTAX_BLD, ++ AVR32_SYNTAX_BREQ1, ++ AVR32_SYNTAX_BRNE1, ++ AVR32_SYNTAX_BRCC1, ++ AVR32_SYNTAX_BRCS1, ++ AVR32_SYNTAX_BRGE1, ++ AVR32_SYNTAX_BRLT1, ++ AVR32_SYNTAX_BRMI1, ++ AVR32_SYNTAX_BRPL1, ++ AVR32_SYNTAX_BRHS1, ++ AVR32_SYNTAX_BRLO1, ++ AVR32_SYNTAX_BREQ2, ++ AVR32_SYNTAX_BRNE2, ++ AVR32_SYNTAX_BRCC2, ++ AVR32_SYNTAX_BRCS2, ++ AVR32_SYNTAX_BRGE2, ++ AVR32_SYNTAX_BRLT2, ++ AVR32_SYNTAX_BRMI2, ++ AVR32_SYNTAX_BRPL2, ++ AVR32_SYNTAX_BRLS, ++ AVR32_SYNTAX_BRGT, ++ AVR32_SYNTAX_BRLE, ++ AVR32_SYNTAX_BRHI, ++ AVR32_SYNTAX_BRVS, ++ AVR32_SYNTAX_BRVC, ++ AVR32_SYNTAX_BRQS, ++ AVR32_SYNTAX_BRAL, ++ AVR32_SYNTAX_BRHS2, ++ AVR32_SYNTAX_BRLO2, ++ AVR32_SYNTAX_BREAKPOINT, ++ AVR32_SYNTAX_BREV, ++ AVR32_SYNTAX_BST, ++ AVR32_SYNTAX_CACHE, ++ AVR32_SYNTAX_CASTS_B, ++ AVR32_SYNTAX_CASTS_H, ++ AVR32_SYNTAX_CASTU_B, ++ AVR32_SYNTAX_CASTU_H, ++ AVR32_SYNTAX_CBR, ++ AVR32_SYNTAX_CLZ, ++ AVR32_SYNTAX_COM, ++ AVR32_SYNTAX_COP, ++ AVR32_SYNTAX_CP_B, ++ AVR32_SYNTAX_CP_H, ++ AVR32_SYNTAX_CP_W1, ++ AVR32_SYNTAX_CP_W2, ++ AVR32_SYNTAX_CP_W3, ++ AVR32_SYNTAX_CPC1, ++ AVR32_SYNTAX_CPC2, ++ AVR32_SYNTAX_CSRF, ++ AVR32_SYNTAX_CSRFCZ, ++ AVR32_SYNTAX_DIVS, ++ AVR32_SYNTAX_DIVU, ++ AVR32_SYNTAX_EOR1, ++ AVR32_SYNTAX_EOR2, ++ AVR32_SYNTAX_EOR3, ++ AVR32_SYNTAX_EORL, ++ AVR32_SYNTAX_EORH, ++ AVR32_SYNTAX_FRS, ++ AVR32_SYNTAX_ICALL, ++ AVR32_SYNTAX_INCJOSP, ++ AVR32_SYNTAX_LD_D1, ++ AVR32_SYNTAX_LD_D2, ++ AVR32_SYNTAX_LD_D3, ++ AVR32_SYNTAX_LD_D5, ++ AVR32_SYNTAX_LD_D4, ++ AVR32_SYNTAX_LD_SB2, ++ AVR32_SYNTAX_LD_SB1, ++ AVR32_SYNTAX_LD_UB1, ++ AVR32_SYNTAX_LD_UB2, ++ AVR32_SYNTAX_LD_UB5, ++ AVR32_SYNTAX_LD_UB3, ++ AVR32_SYNTAX_LD_UB4, ++ AVR32_SYNTAX_LD_SH1, ++ AVR32_SYNTAX_LD_SH2, ++ AVR32_SYNTAX_LD_SH5, ++ AVR32_SYNTAX_LD_SH3, ++ AVR32_SYNTAX_LD_SH4, ++ AVR32_SYNTAX_LD_UH1, ++ AVR32_SYNTAX_LD_UH2, ++ AVR32_SYNTAX_LD_UH5, ++ AVR32_SYNTAX_LD_UH3, ++ AVR32_SYNTAX_LD_UH4, ++ AVR32_SYNTAX_LD_W1, ++ AVR32_SYNTAX_LD_W2, ++ AVR32_SYNTAX_LD_W5, ++ AVR32_SYNTAX_LD_W6, ++ AVR32_SYNTAX_LD_W3, ++ AVR32_SYNTAX_LD_W4, ++ AVR32_SYNTAX_LDC_D1, ++ AVR32_SYNTAX_LDC_D2, ++ AVR32_SYNTAX_LDC_D3, ++ AVR32_SYNTAX_LDC_W1, ++ AVR32_SYNTAX_LDC_W2, ++ AVR32_SYNTAX_LDC_W3, ++ AVR32_SYNTAX_LDC0_D, ++ AVR32_SYNTAX_LDC0_W, ++ AVR32_SYNTAX_LDCM_D, ++ AVR32_SYNTAX_LDCM_D_PU, ++ AVR32_SYNTAX_LDCM_W, ++ AVR32_SYNTAX_LDCM_W_PU, ++ AVR32_SYNTAX_LDDPC, ++ AVR32_SYNTAX_LDDPC_EXT, ++ AVR32_SYNTAX_LDDSP, ++ AVR32_SYNTAX_LDINS_B, ++ AVR32_SYNTAX_LDINS_H, ++ AVR32_SYNTAX_LDM, ++ AVR32_SYNTAX_LDMTS, ++ AVR32_SYNTAX_LDMTS_PU, ++ AVR32_SYNTAX_LDSWP_SH, ++ AVR32_SYNTAX_LDSWP_UH, ++ AVR32_SYNTAX_LDSWP_W, ++ AVR32_SYNTAX_LSL1, ++ AVR32_SYNTAX_LSL3, ++ AVR32_SYNTAX_LSL2, ++ AVR32_SYNTAX_LSR1, ++ AVR32_SYNTAX_LSR3, ++ AVR32_SYNTAX_LSR2, ++ AVR32_SYNTAX_MAC, ++ AVR32_SYNTAX_MACHH_D, ++ AVR32_SYNTAX_MACHH_W, ++ AVR32_SYNTAX_MACS_D, ++ AVR32_SYNTAX_MACSATHH_W, ++ AVR32_SYNTAX_MACUD, ++ AVR32_SYNTAX_MACWH_D, ++ AVR32_SYNTAX_MAX, ++ AVR32_SYNTAX_MCALL, ++ AVR32_SYNTAX_MFDR, ++ AVR32_SYNTAX_MFSR, ++ AVR32_SYNTAX_MIN, ++ AVR32_SYNTAX_MOV3, ++ AVR32_SYNTAX_MOV1, ++ AVR32_SYNTAX_MOV2, ++ AVR32_SYNTAX_MOVEQ1, ++ AVR32_SYNTAX_MOVNE1, ++ AVR32_SYNTAX_MOVCC1, ++ AVR32_SYNTAX_MOVCS1, ++ AVR32_SYNTAX_MOVGE1, ++ AVR32_SYNTAX_MOVLT1, ++ AVR32_SYNTAX_MOVMI1, ++ AVR32_SYNTAX_MOVPL1, ++ AVR32_SYNTAX_MOVLS1, ++ AVR32_SYNTAX_MOVGT1, ++ AVR32_SYNTAX_MOVLE1, ++ AVR32_SYNTAX_MOVHI1, ++ AVR32_SYNTAX_MOVVS1, ++ AVR32_SYNTAX_MOVVC1, ++ AVR32_SYNTAX_MOVQS1, ++ AVR32_SYNTAX_MOVAL1, ++ AVR32_SYNTAX_MOVHS1, ++ AVR32_SYNTAX_MOVLO1, ++ AVR32_SYNTAX_MOVEQ2, ++ AVR32_SYNTAX_MOVNE2, ++ AVR32_SYNTAX_MOVCC2, ++ AVR32_SYNTAX_MOVCS2, ++ AVR32_SYNTAX_MOVGE2, ++ AVR32_SYNTAX_MOVLT2, ++ AVR32_SYNTAX_MOVMI2, ++ AVR32_SYNTAX_MOVPL2, ++ AVR32_SYNTAX_MOVLS2, ++ AVR32_SYNTAX_MOVGT2, ++ AVR32_SYNTAX_MOVLE2, ++ AVR32_SYNTAX_MOVHI2, ++ AVR32_SYNTAX_MOVVS2, ++ AVR32_SYNTAX_MOVVC2, ++ AVR32_SYNTAX_MOVQS2, ++ AVR32_SYNTAX_MOVAL2, ++ AVR32_SYNTAX_MOVHS2, ++ AVR32_SYNTAX_MOVLO2, ++ AVR32_SYNTAX_MTDR, ++ AVR32_SYNTAX_MTSR, ++ AVR32_SYNTAX_MUL1, ++ AVR32_SYNTAX_MUL2, ++ AVR32_SYNTAX_MUL3, ++ AVR32_SYNTAX_MULHH_W, ++ AVR32_SYNTAX_MULNHH_W, ++ AVR32_SYNTAX_MULNWH_D, ++ AVR32_SYNTAX_MULSD, ++ AVR32_SYNTAX_MULSATHH_H, ++ AVR32_SYNTAX_MULSATHH_W, ++ AVR32_SYNTAX_MULSATRNDHH_H, ++ AVR32_SYNTAX_MULSATRNDWH_W, ++ AVR32_SYNTAX_MULSATWH_W, ++ AVR32_SYNTAX_MULU_D, ++ AVR32_SYNTAX_MULWH_D, ++ AVR32_SYNTAX_MUSFR, ++ AVR32_SYNTAX_MUSTR, ++ AVR32_SYNTAX_MVCR_D, ++ AVR32_SYNTAX_MVCR_W, ++ AVR32_SYNTAX_MVRC_D, ++ AVR32_SYNTAX_MVRC_W, ++ AVR32_SYNTAX_NEG, ++ AVR32_SYNTAX_NOP, ++ AVR32_SYNTAX_OR1, ++ AVR32_SYNTAX_OR2, ++ AVR32_SYNTAX_OR3, ++ AVR32_SYNTAX_ORH, ++ AVR32_SYNTAX_ORL, ++ AVR32_SYNTAX_PABS_SB, ++ AVR32_SYNTAX_PABS_SH, ++ AVR32_SYNTAX_PACKSH_SB, ++ AVR32_SYNTAX_PACKSH_UB, ++ AVR32_SYNTAX_PACKW_SH, ++ AVR32_SYNTAX_PADD_B, ++ AVR32_SYNTAX_PADD_H, ++ AVR32_SYNTAX_PADDH_SH, ++ AVR32_SYNTAX_PADDH_UB, ++ AVR32_SYNTAX_PADDS_SB, ++ AVR32_SYNTAX_PADDS_SH, ++ AVR32_SYNTAX_PADDS_UB, ++ AVR32_SYNTAX_PADDS_UH, ++ AVR32_SYNTAX_PADDSUB_H, ++ AVR32_SYNTAX_PADDSUBH_SH, ++ AVR32_SYNTAX_PADDSUBS_SH, ++ AVR32_SYNTAX_PADDSUBS_UH, ++ AVR32_SYNTAX_PADDX_H, ++ AVR32_SYNTAX_PADDXH_SH, ++ AVR32_SYNTAX_PADDXS_SH, ++ AVR32_SYNTAX_PADDXS_UH, ++ AVR32_SYNTAX_PASR_B, ++ AVR32_SYNTAX_PASR_H, ++ AVR32_SYNTAX_PAVG_SH, ++ AVR32_SYNTAX_PAVG_UB, ++ AVR32_SYNTAX_PLSL_B, ++ AVR32_SYNTAX_PLSL_H, ++ AVR32_SYNTAX_PLSR_B, ++ AVR32_SYNTAX_PLSR_H, ++ AVR32_SYNTAX_PMAX_SH, ++ AVR32_SYNTAX_PMAX_UB, ++ AVR32_SYNTAX_PMIN_SH, ++ AVR32_SYNTAX_PMIN_UB, ++ AVR32_SYNTAX_POPJC, ++ AVR32_SYNTAX_POPM, ++ AVR32_SYNTAX_POPM_E, ++ AVR32_SYNTAX_PREF, ++ AVR32_SYNTAX_PSAD, ++ AVR32_SYNTAX_PSUB_B, ++ AVR32_SYNTAX_PSUB_H, ++ AVR32_SYNTAX_PSUBADD_H, ++ AVR32_SYNTAX_PSUBADDH_SH, ++ AVR32_SYNTAX_PSUBADDS_SH, ++ AVR32_SYNTAX_PSUBADDS_UH, ++ AVR32_SYNTAX_PSUBH_SH, ++ AVR32_SYNTAX_PSUBH_UB, ++ AVR32_SYNTAX_PSUBS_SB, ++ AVR32_SYNTAX_PSUBS_SH, ++ AVR32_SYNTAX_PSUBS_UB, ++ AVR32_SYNTAX_PSUBS_UH, ++ AVR32_SYNTAX_PSUBX_H, ++ AVR32_SYNTAX_PSUBXH_SH, ++ AVR32_SYNTAX_PSUBXS_SH, ++ AVR32_SYNTAX_PSUBXS_UH, ++ AVR32_SYNTAX_PUNPCKSB_H, ++ AVR32_SYNTAX_PUNPCKUB_H, ++ AVR32_SYNTAX_PUSHJC, ++ AVR32_SYNTAX_PUSHM, ++ AVR32_SYNTAX_PUSHM_E, ++ AVR32_SYNTAX_RCALL1, ++ AVR32_SYNTAX_RCALL2, ++ AVR32_SYNTAX_RETEQ, ++ AVR32_SYNTAX_RETNE, ++ AVR32_SYNTAX_RETCC, ++ AVR32_SYNTAX_RETCS, ++ AVR32_SYNTAX_RETGE, ++ AVR32_SYNTAX_RETLT, ++ AVR32_SYNTAX_RETMI, ++ AVR32_SYNTAX_RETPL, ++ AVR32_SYNTAX_RETLS, ++ AVR32_SYNTAX_RETGT, ++ AVR32_SYNTAX_RETLE, ++ AVR32_SYNTAX_RETHI, ++ AVR32_SYNTAX_RETVS, ++ AVR32_SYNTAX_RETVC, ++ AVR32_SYNTAX_RETQS, ++ AVR32_SYNTAX_RETAL, ++ AVR32_SYNTAX_RETHS, ++ AVR32_SYNTAX_RETLO, ++ AVR32_SYNTAX_RETD, ++ AVR32_SYNTAX_RETE, ++ AVR32_SYNTAX_RETJ, ++ AVR32_SYNTAX_RETS, ++ AVR32_SYNTAX_RJMP, ++ AVR32_SYNTAX_ROL, ++ AVR32_SYNTAX_ROR, ++ AVR32_SYNTAX_RSUB1, ++ AVR32_SYNTAX_RSUB2, ++ AVR32_SYNTAX_SATADD_H, ++ AVR32_SYNTAX_SATADD_W, ++ AVR32_SYNTAX_SATRNDS, ++ AVR32_SYNTAX_SATRNDU, ++ AVR32_SYNTAX_SATS, ++ AVR32_SYNTAX_SATSUB_H, ++ AVR32_SYNTAX_SATSUB_W1, ++ AVR32_SYNTAX_SATSUB_W2, ++ AVR32_SYNTAX_SATU, ++ AVR32_SYNTAX_SBC, ++ AVR32_SYNTAX_SBR, ++ AVR32_SYNTAX_SCALL, ++ AVR32_SYNTAX_SCR, ++ AVR32_SYNTAX_SLEEP, ++ AVR32_SYNTAX_SREQ, ++ AVR32_SYNTAX_SRNE, ++ AVR32_SYNTAX_SRCC, ++ AVR32_SYNTAX_SRCS, ++ AVR32_SYNTAX_SRGE, ++ AVR32_SYNTAX_SRLT, ++ AVR32_SYNTAX_SRMI, ++ AVR32_SYNTAX_SRPL, ++ AVR32_SYNTAX_SRLS, ++ AVR32_SYNTAX_SRGT, ++ AVR32_SYNTAX_SRLE, ++ AVR32_SYNTAX_SRHI, ++ AVR32_SYNTAX_SRVS, ++ AVR32_SYNTAX_SRVC, ++ AVR32_SYNTAX_SRQS, ++ AVR32_SYNTAX_SRAL, ++ AVR32_SYNTAX_SRHS, ++ AVR32_SYNTAX_SRLO, ++ AVR32_SYNTAX_SSRF, ++ AVR32_SYNTAX_ST_B1, ++ AVR32_SYNTAX_ST_B2, ++ AVR32_SYNTAX_ST_B5, ++ AVR32_SYNTAX_ST_B3, ++ AVR32_SYNTAX_ST_B4, ++ AVR32_SYNTAX_ST_D1, ++ AVR32_SYNTAX_ST_D2, ++ AVR32_SYNTAX_ST_D3, ++ AVR32_SYNTAX_ST_D5, ++ AVR32_SYNTAX_ST_D4, ++ AVR32_SYNTAX_ST_H1, ++ AVR32_SYNTAX_ST_H2, ++ AVR32_SYNTAX_ST_H5, ++ AVR32_SYNTAX_ST_H3, ++ AVR32_SYNTAX_ST_H4, ++ AVR32_SYNTAX_ST_W1, ++ AVR32_SYNTAX_ST_W2, ++ AVR32_SYNTAX_ST_W5, ++ AVR32_SYNTAX_ST_W3, ++ AVR32_SYNTAX_ST_W4, ++ AVR32_SYNTAX_STC_D1, ++ AVR32_SYNTAX_STC_D2, ++ AVR32_SYNTAX_STC_D3, ++ AVR32_SYNTAX_STC_W1, ++ AVR32_SYNTAX_STC_W2, ++ AVR32_SYNTAX_STC_W3, ++ AVR32_SYNTAX_STC0_D, ++ AVR32_SYNTAX_STC0_W, ++ AVR32_SYNTAX_STCM_D, ++ AVR32_SYNTAX_STCM_D_PU, ++ AVR32_SYNTAX_STCM_W, ++ AVR32_SYNTAX_STCM_W_PU, ++ AVR32_SYNTAX_STCOND, ++ AVR32_SYNTAX_STDSP, ++ AVR32_SYNTAX_STHH_W2, ++ AVR32_SYNTAX_STHH_W1, ++ AVR32_SYNTAX_STM, ++ AVR32_SYNTAX_STM_PU, ++ AVR32_SYNTAX_STMTS, ++ AVR32_SYNTAX_STMTS_PU, ++ AVR32_SYNTAX_STSWP_H, ++ AVR32_SYNTAX_STSWP_W, ++ AVR32_SYNTAX_SUB1, ++ AVR32_SYNTAX_SUB2, ++ AVR32_SYNTAX_SUB5, ++ AVR32_SYNTAX_SUB3_SP, ++ AVR32_SYNTAX_SUB3, ++ AVR32_SYNTAX_SUB4, ++ AVR32_SYNTAX_SUBEQ, ++ AVR32_SYNTAX_SUBNE, ++ AVR32_SYNTAX_SUBCC, ++ AVR32_SYNTAX_SUBCS, ++ AVR32_SYNTAX_SUBGE, ++ AVR32_SYNTAX_SUBLT, ++ AVR32_SYNTAX_SUBMI, ++ AVR32_SYNTAX_SUBPL, ++ AVR32_SYNTAX_SUBLS, ++ AVR32_SYNTAX_SUBGT, ++ AVR32_SYNTAX_SUBLE, ++ AVR32_SYNTAX_SUBHI, ++ AVR32_SYNTAX_SUBVS, ++ AVR32_SYNTAX_SUBVC, ++ AVR32_SYNTAX_SUBQS, ++ AVR32_SYNTAX_SUBAL, ++ AVR32_SYNTAX_SUBHS, ++ AVR32_SYNTAX_SUBLO, ++ AVR32_SYNTAX_SUBFEQ, ++ AVR32_SYNTAX_SUBFNE, ++ AVR32_SYNTAX_SUBFCC, ++ AVR32_SYNTAX_SUBFCS, ++ AVR32_SYNTAX_SUBFGE, ++ AVR32_SYNTAX_SUBFLT, ++ AVR32_SYNTAX_SUBFMI, ++ AVR32_SYNTAX_SUBFPL, ++ AVR32_SYNTAX_SUBFLS, ++ AVR32_SYNTAX_SUBFGT, ++ AVR32_SYNTAX_SUBFLE, ++ AVR32_SYNTAX_SUBFHI, ++ AVR32_SYNTAX_SUBFVS, ++ AVR32_SYNTAX_SUBFVC, ++ AVR32_SYNTAX_SUBFQS, ++ AVR32_SYNTAX_SUBFAL, ++ AVR32_SYNTAX_SUBFHS, ++ AVR32_SYNTAX_SUBFLO, ++ AVR32_SYNTAX_SUBHH_W, ++ AVR32_SYNTAX_SWAP_B, ++ AVR32_SYNTAX_SWAP_BH, ++ AVR32_SYNTAX_SWAP_H, ++ AVR32_SYNTAX_SYNC, ++ AVR32_SYNTAX_TLBR, ++ AVR32_SYNTAX_TLBS, ++ AVR32_SYNTAX_TLBW, ++ AVR32_SYNTAX_TNBZ, ++ AVR32_SYNTAX_TST, ++ AVR32_SYNTAX_XCHG, ++ AVR32_SYNTAX_MEMC, ++ AVR32_SYNTAX_MEMS, ++ AVR32_SYNTAX_MEMT, ++ AVR32_SYNTAX_FADD_S, ++ AVR32_SYNTAX_FADD_D, ++ AVR32_SYNTAX_FSUB_S, ++ AVR32_SYNTAX_FSUB_D, ++ AVR32_SYNTAX_FMAC_S, ++ AVR32_SYNTAX_FMAC_D, ++ AVR32_SYNTAX_FNMAC_S, ++ AVR32_SYNTAX_FNMAC_D, ++ AVR32_SYNTAX_FMSC_S, ++ AVR32_SYNTAX_FMSC_D, ++ AVR32_SYNTAX_FNMSC_S, ++ AVR32_SYNTAX_FNMSC_D, ++ AVR32_SYNTAX_FMUL_S, ++ AVR32_SYNTAX_FMUL_D, ++ AVR32_SYNTAX_FNMUL_S, ++ AVR32_SYNTAX_FNMUL_D, ++ AVR32_SYNTAX_FNEG_S, ++ AVR32_SYNTAX_FNEG_D, ++ AVR32_SYNTAX_FABS_S, ++ AVR32_SYNTAX_FABS_D, ++ AVR32_SYNTAX_FCMP_S, ++ AVR32_SYNTAX_FCMP_D, ++ AVR32_SYNTAX_FMOV1_S, ++ AVR32_SYNTAX_FMOV1_D, ++ AVR32_SYNTAX_FMOV2_S, ++ AVR32_SYNTAX_FMOV2_D, ++ AVR32_SYNTAX_FMOV3_S, ++ AVR32_SYNTAX_FMOV3_D, ++ AVR32_SYNTAX_FCASTS_D, ++ AVR32_SYNTAX_FCASTD_S, ++ AVR32_SYNTAX_LDA_W, ++ AVR32_SYNTAX_CALL, ++ AVR32_SYNTAX_PICOSVMAC0, ++ AVR32_SYNTAX_PICOSVMAC1, ++ AVR32_SYNTAX_PICOSVMAC2, ++ AVR32_SYNTAX_PICOSVMAC3, ++ AVR32_SYNTAX_PICOSVMUL0, ++ AVR32_SYNTAX_PICOSVMUL1, ++ AVR32_SYNTAX_PICOSVMUL2, ++ AVR32_SYNTAX_PICOSVMUL3, ++ AVR32_SYNTAX_PICOVMAC0, ++ AVR32_SYNTAX_PICOVMAC1, ++ AVR32_SYNTAX_PICOVMAC2, ++ AVR32_SYNTAX_PICOVMAC3, ++ AVR32_SYNTAX_PICOVMUL0, ++ AVR32_SYNTAX_PICOVMUL1, ++ AVR32_SYNTAX_PICOVMUL2, ++ AVR32_SYNTAX_PICOVMUL3, ++ AVR32_SYNTAX_PICOLD_D2, ++ AVR32_SYNTAX_PICOLD_D3, ++ AVR32_SYNTAX_PICOLD_D1, ++ AVR32_SYNTAX_PICOLD_W2, ++ AVR32_SYNTAX_PICOLD_W3, ++ AVR32_SYNTAX_PICOLD_W1, ++ AVR32_SYNTAX_PICOLDM_D, ++ AVR32_SYNTAX_PICOLDM_D_PU, ++ AVR32_SYNTAX_PICOLDM_W, ++ AVR32_SYNTAX_PICOLDM_W_PU, ++ AVR32_SYNTAX_PICOMV_D1, ++ AVR32_SYNTAX_PICOMV_D2, ++ AVR32_SYNTAX_PICOMV_W1, ++ AVR32_SYNTAX_PICOMV_W2, ++ AVR32_SYNTAX_PICOST_D2, ++ AVR32_SYNTAX_PICOST_D3, ++ AVR32_SYNTAX_PICOST_D1, ++ AVR32_SYNTAX_PICOST_W2, ++ AVR32_SYNTAX_PICOST_W3, ++ AVR32_SYNTAX_PICOST_W1, ++ AVR32_SYNTAX_PICOSTM_D, ++ AVR32_SYNTAX_PICOSTM_D_PU, ++ AVR32_SYNTAX_PICOSTM_W, ++ AVR32_SYNTAX_PICOSTM_W_PU, ++ AVR32_SYNTAX__END_ ++}; ++#define AVR32_NR_SYNTAX AVR32_SYNTAX__END_ ++ ++enum avr32_alias_type ++ { ++ AVR32_ALIAS_FMAC_S, ++ AVR32_ALIAS_FMAC_D, ++ AVR32_ALIAS_FNMAC_S, ++ AVR32_ALIAS_FNMAC_D, ++ AVR32_ALIAS_FMSC_S, ++ AVR32_ALIAS_FMSC_D, ++ AVR32_ALIAS_FNMSC_S, ++ AVR32_ALIAS_FNMSC_D, ++ AVR32_ALIAS_FADD_S, ++ AVR32_ALIAS_FADD_D, ++ AVR32_ALIAS_FSUB_S, ++ AVR32_ALIAS_FSUB_D, ++ AVR32_ALIAS_FMUL_S, ++ AVR32_ALIAS_FMUL_D, ++ AVR32_ALIAS_FNMUL_S, ++ AVR32_ALIAS_FNMUL_D, ++ AVR32_ALIAS_FNEG_S, ++ AVR32_ALIAS_FNEG_D, ++ AVR32_ALIAS_FABS_S, ++ AVR32_ALIAS_FABS_D, ++ AVR32_ALIAS_FCMP_S, ++ AVR32_ALIAS_FCMP_D, ++ AVR32_ALIAS_FMOV1_S, ++ AVR32_ALIAS_FMOV1_D, ++ AVR32_ALIAS_FMOV2_S, ++ AVR32_ALIAS_FMOV2_D, ++ AVR32_ALIAS_FMOV3_S, ++ AVR32_ALIAS_FMOV3_D, ++ AVR32_ALIAS_FCASTS_D, ++ AVR32_ALIAS_FCASTD_S, ++ AVR32_ALIAS_PICOSVMAC0, ++ AVR32_ALIAS_PICOSVMAC1, ++ AVR32_ALIAS_PICOSVMAC2, ++ AVR32_ALIAS_PICOSVMAC3, ++ AVR32_ALIAS_PICOSVMUL0, ++ AVR32_ALIAS_PICOSVMUL1, ++ AVR32_ALIAS_PICOSVMUL2, ++ AVR32_ALIAS_PICOSVMUL3, ++ AVR32_ALIAS_PICOVMAC0, ++ AVR32_ALIAS_PICOVMAC1, ++ AVR32_ALIAS_PICOVMAC2, ++ AVR32_ALIAS_PICOVMAC3, ++ AVR32_ALIAS_PICOVMUL0, ++ AVR32_ALIAS_PICOVMUL1, ++ AVR32_ALIAS_PICOVMUL2, ++ AVR32_ALIAS_PICOVMUL3, ++ AVR32_ALIAS_PICOLD_D1, ++ AVR32_ALIAS_PICOLD_D2, ++ AVR32_ALIAS_PICOLD_D3, ++ AVR32_ALIAS_PICOLD_W1, ++ AVR32_ALIAS_PICOLD_W2, ++ AVR32_ALIAS_PICOLD_W3, ++ AVR32_ALIAS_PICOLDM_D, ++ AVR32_ALIAS_PICOLDM_D_PU, ++ AVR32_ALIAS_PICOLDM_W, ++ AVR32_ALIAS_PICOLDM_W_PU, ++ AVR32_ALIAS_PICOMV_D1, ++ AVR32_ALIAS_PICOMV_D2, ++ AVR32_ALIAS_PICOMV_W1, ++ AVR32_ALIAS_PICOMV_W2, ++ AVR32_ALIAS_PICOST_D1, ++ AVR32_ALIAS_PICOST_D2, ++ AVR32_ALIAS_PICOST_D3, ++ AVR32_ALIAS_PICOST_W1, ++ AVR32_ALIAS_PICOST_W2, ++ AVR32_ALIAS_PICOST_W3, ++ AVR32_ALIAS_PICOSTM_D, ++ AVR32_ALIAS_PICOSTM_D_PU, ++ AVR32_ALIAS_PICOSTM_W, ++ AVR32_ALIAS_PICOSTM_W_PU, ++ AVR32_ALIAS__END_ ++ }; ++#define AVR32_NR_ALIAS AVR32_ALIAS__END_ ++ ++enum avr32_mnemonic_type ++{ ++ AVR32_MNEMONIC_ABS, ++ AVR32_MNEMONIC_ACALL, ++ AVR32_MNEMONIC_ACR, ++ AVR32_MNEMONIC_ADC, ++ AVR32_MNEMONIC_ADD, ++ AVR32_MNEMONIC_ADDABS, ++ AVR32_MNEMONIC_ADDHH_W, ++ AVR32_MNEMONIC_AND, ++ AVR32_MNEMONIC_ANDH, ++ AVR32_MNEMONIC_ANDL, ++ AVR32_MNEMONIC_ANDN, ++ AVR32_MNEMONIC_ASR, ++ AVR32_MNEMONIC_BFEXTS, ++ AVR32_MNEMONIC_BFEXTU, ++ AVR32_MNEMONIC_BFINS, ++ AVR32_MNEMONIC_BLD, ++ AVR32_MNEMONIC_BREQ, ++ AVR32_MNEMONIC_BRNE, ++ AVR32_MNEMONIC_BRCC, ++ AVR32_MNEMONIC_BRCS, ++ AVR32_MNEMONIC_BRGE, ++ AVR32_MNEMONIC_BRLT, ++ AVR32_MNEMONIC_BRMI, ++ AVR32_MNEMONIC_BRPL, ++ AVR32_MNEMONIC_BRHS, ++ AVR32_MNEMONIC_BRLO, ++ AVR32_MNEMONIC_BRLS, ++ AVR32_MNEMONIC_BRGT, ++ AVR32_MNEMONIC_BRLE, ++ AVR32_MNEMONIC_BRHI, ++ AVR32_MNEMONIC_BRVS, ++ AVR32_MNEMONIC_BRVC, ++ AVR32_MNEMONIC_BRQS, ++ AVR32_MNEMONIC_BRAL, ++ AVR32_MNEMONIC_BREAKPOINT, ++ AVR32_MNEMONIC_BREV, ++ AVR32_MNEMONIC_BST, ++ AVR32_MNEMONIC_CACHE, ++ AVR32_MNEMONIC_CASTS_B, ++ AVR32_MNEMONIC_CASTS_H, ++ AVR32_MNEMONIC_CASTU_B, ++ AVR32_MNEMONIC_CASTU_H, ++ AVR32_MNEMONIC_CBR, ++ AVR32_MNEMONIC_CLZ, ++ AVR32_MNEMONIC_COM, ++ AVR32_MNEMONIC_COP, ++ AVR32_MNEMONIC_CP_B, ++ AVR32_MNEMONIC_CP_H, ++ AVR32_MNEMONIC_CP_W, ++ AVR32_MNEMONIC_CP, ++ AVR32_MNEMONIC_CPC, ++ AVR32_MNEMONIC_CSRF, ++ AVR32_MNEMONIC_CSRFCZ, ++ AVR32_MNEMONIC_DIVS, ++ AVR32_MNEMONIC_DIVU, ++ AVR32_MNEMONIC_EOR, ++ AVR32_MNEMONIC_EORL, ++ AVR32_MNEMONIC_EORH, ++ AVR32_MNEMONIC_FRS, ++ AVR32_MNEMONIC_ICALL, ++ AVR32_MNEMONIC_INCJOSP, ++ AVR32_MNEMONIC_LD_D, ++ AVR32_MNEMONIC_LD_SB, ++ AVR32_MNEMONIC_LD_UB, ++ AVR32_MNEMONIC_LD_SH, ++ AVR32_MNEMONIC_LD_UH, ++ AVR32_MNEMONIC_LD_W, ++ AVR32_MNEMONIC_LDC_D, ++ AVR32_MNEMONIC_LDC_W, ++ AVR32_MNEMONIC_LDC0_D, ++ AVR32_MNEMONIC_LDC0_W, ++ AVR32_MNEMONIC_LDCM_D, ++ AVR32_MNEMONIC_LDCM_W, ++ AVR32_MNEMONIC_LDDPC, ++ AVR32_MNEMONIC_LDDSP, ++ AVR32_MNEMONIC_LDINS_B, ++ AVR32_MNEMONIC_LDINS_H, ++ AVR32_MNEMONIC_LDM, ++ AVR32_MNEMONIC_LDMTS, ++ AVR32_MNEMONIC_LDSWP_SH, ++ AVR32_MNEMONIC_LDSWP_UH, ++ AVR32_MNEMONIC_LDSWP_W, ++ AVR32_MNEMONIC_LSL, ++ AVR32_MNEMONIC_LSR, ++ AVR32_MNEMONIC_MAC, ++ AVR32_MNEMONIC_MACHH_D, ++ AVR32_MNEMONIC_MACHH_W, ++ AVR32_MNEMONIC_MACS_D, ++ AVR32_MNEMONIC_MACSATHH_W, ++ AVR32_MNEMONIC_MACU_D, ++ AVR32_MNEMONIC_MACWH_D, ++ AVR32_MNEMONIC_MAX, ++ AVR32_MNEMONIC_MCALL, ++ AVR32_MNEMONIC_MFDR, ++ AVR32_MNEMONIC_MFSR, ++ AVR32_MNEMONIC_MIN, ++ AVR32_MNEMONIC_MOV, ++ AVR32_MNEMONIC_MOVEQ, ++ AVR32_MNEMONIC_MOVNE, ++ AVR32_MNEMONIC_MOVCC, ++ AVR32_MNEMONIC_MOVCS, ++ AVR32_MNEMONIC_MOVGE, ++ AVR32_MNEMONIC_MOVLT, ++ AVR32_MNEMONIC_MOVMI, ++ AVR32_MNEMONIC_MOVPL, ++ AVR32_MNEMONIC_MOVLS, ++ AVR32_MNEMONIC_MOVGT, ++ AVR32_MNEMONIC_MOVLE, ++ AVR32_MNEMONIC_MOVHI, ++ AVR32_MNEMONIC_MOVVS, ++ AVR32_MNEMONIC_MOVVC, ++ AVR32_MNEMONIC_MOVQS, ++ AVR32_MNEMONIC_MOVAL, ++ AVR32_MNEMONIC_MOVHS, ++ AVR32_MNEMONIC_MOVLO, ++ AVR32_MNEMONIC_MTDR, ++ AVR32_MNEMONIC_MTSR, ++ AVR32_MNEMONIC_MUL, ++ AVR32_MNEMONIC_MULHH_W, ++ AVR32_MNEMONIC_MULNHH_W, ++ AVR32_MNEMONIC_MULNWH_D, ++ AVR32_MNEMONIC_MULS_D, ++ AVR32_MNEMONIC_MULSATHH_H, ++ AVR32_MNEMONIC_MULSATHH_W, ++ AVR32_MNEMONIC_MULSATRNDHH_H, ++ AVR32_MNEMONIC_MULSATRNDWH_W, ++ AVR32_MNEMONIC_MULSATWH_W, ++ AVR32_MNEMONIC_MULU_D, ++ AVR32_MNEMONIC_MULWH_D, ++ AVR32_MNEMONIC_MUSFR, ++ AVR32_MNEMONIC_MUSTR, ++ AVR32_MNEMONIC_MVCR_D, ++ AVR32_MNEMONIC_MVCR_W, ++ AVR32_MNEMONIC_MVRC_D, ++ AVR32_MNEMONIC_MVRC_W, ++ AVR32_MNEMONIC_NEG, ++ AVR32_MNEMONIC_NOP, ++ AVR32_MNEMONIC_OR, ++ AVR32_MNEMONIC_ORH, ++ AVR32_MNEMONIC_ORL, ++ AVR32_MNEMONIC_PABS_SB, ++ AVR32_MNEMONIC_PABS_SH, ++ AVR32_MNEMONIC_PACKSH_SB, ++ AVR32_MNEMONIC_PACKSH_UB, ++ AVR32_MNEMONIC_PACKW_SH, ++ AVR32_MNEMONIC_PADD_B, ++ AVR32_MNEMONIC_PADD_H, ++ AVR32_MNEMONIC_PADDH_SH, ++ AVR32_MNEMONIC_PADDH_UB, ++ AVR32_MNEMONIC_PADDS_SB, ++ AVR32_MNEMONIC_PADDS_SH, ++ AVR32_MNEMONIC_PADDS_UB, ++ AVR32_MNEMONIC_PADDS_UH, ++ AVR32_MNEMONIC_PADDSUB_H, ++ AVR32_MNEMONIC_PADDSUBH_SH, ++ AVR32_MNEMONIC_PADDSUBS_SH, ++ AVR32_MNEMONIC_PADDSUBS_UH, ++ AVR32_MNEMONIC_PADDX_H, ++ AVR32_MNEMONIC_PADDXH_SH, ++ AVR32_MNEMONIC_PADDXS_SH, ++ AVR32_MNEMONIC_PADDXS_UH, ++ AVR32_MNEMONIC_PASR_B, ++ AVR32_MNEMONIC_PASR_H, ++ AVR32_MNEMONIC_PAVG_SH, ++ AVR32_MNEMONIC_PAVG_UB, ++ AVR32_MNEMONIC_PLSL_B, ++ AVR32_MNEMONIC_PLSL_H, ++ AVR32_MNEMONIC_PLSR_B, ++ AVR32_MNEMONIC_PLSR_H, ++ AVR32_MNEMONIC_PMAX_SH, ++ AVR32_MNEMONIC_PMAX_UB, ++ AVR32_MNEMONIC_PMIN_SH, ++ AVR32_MNEMONIC_PMIN_UB, ++ AVR32_MNEMONIC_POPJC, ++ AVR32_MNEMONIC_POPM, ++ AVR32_MNEMONIC_PREF, ++ AVR32_MNEMONIC_PSAD, ++ AVR32_MNEMONIC_PSUB_B, ++ AVR32_MNEMONIC_PSUB_H, ++ AVR32_MNEMONIC_PSUBADD_H, ++ AVR32_MNEMONIC_PSUBADDH_SH, ++ AVR32_MNEMONIC_PSUBADDS_SH, ++ AVR32_MNEMONIC_PSUBADDS_UH, ++ AVR32_MNEMONIC_PSUBH_SH, ++ AVR32_MNEMONIC_PSUBH_UB, ++ AVR32_MNEMONIC_PSUBS_SB, ++ AVR32_MNEMONIC_PSUBS_SH, ++ AVR32_MNEMONIC_PSUBS_UB, ++ AVR32_MNEMONIC_PSUBS_UH, ++ AVR32_MNEMONIC_PSUBX_H, ++ AVR32_MNEMONIC_PSUBXH_SH, ++ AVR32_MNEMONIC_PSUBXS_SH, ++ AVR32_MNEMONIC_PSUBXS_UH, ++ AVR32_MNEMONIC_PUNPCKSB_H, ++ AVR32_MNEMONIC_PUNPCKUB_H, ++ AVR32_MNEMONIC_PUSHJC, ++ AVR32_MNEMONIC_PUSHM, ++ AVR32_MNEMONIC_RCALL, ++ AVR32_MNEMONIC_RETEQ, ++ AVR32_MNEMONIC_RETNE, ++ AVR32_MNEMONIC_RETCC, ++ AVR32_MNEMONIC_RETCS, ++ AVR32_MNEMONIC_RETGE, ++ AVR32_MNEMONIC_RETLT, ++ AVR32_MNEMONIC_RETMI, ++ AVR32_MNEMONIC_RETPL, ++ AVR32_MNEMONIC_RETLS, ++ AVR32_MNEMONIC_RETGT, ++ AVR32_MNEMONIC_RETLE, ++ AVR32_MNEMONIC_RETHI, ++ AVR32_MNEMONIC_RETVS, ++ AVR32_MNEMONIC_RETVC, ++ AVR32_MNEMONIC_RETQS, ++ AVR32_MNEMONIC_RETAL, ++ AVR32_MNEMONIC_RETHS, ++ AVR32_MNEMONIC_RETLO, ++ AVR32_MNEMONIC_RET, ++ AVR32_MNEMONIC_RETD, ++ AVR32_MNEMONIC_RETE, ++ AVR32_MNEMONIC_RETJ, ++ AVR32_MNEMONIC_RETS, ++ AVR32_MNEMONIC_RJMP, ++ AVR32_MNEMONIC_ROL, ++ AVR32_MNEMONIC_ROR, ++ AVR32_MNEMONIC_RSUB, ++ AVR32_MNEMONIC_SATADD_H, ++ AVR32_MNEMONIC_SATADD_W, ++ AVR32_MNEMONIC_SATRNDS, ++ AVR32_MNEMONIC_SATRNDU, ++ AVR32_MNEMONIC_SATS, ++ AVR32_MNEMONIC_SATSUB_H, ++ AVR32_MNEMONIC_SATSUB_W, ++ AVR32_MNEMONIC_SATU, ++ AVR32_MNEMONIC_SBC, ++ AVR32_MNEMONIC_SBR, ++ AVR32_MNEMONIC_SCALL, ++ AVR32_MNEMONIC_SCR, ++ AVR32_MNEMONIC_SLEEP, ++ AVR32_MNEMONIC_SREQ, ++ AVR32_MNEMONIC_SRNE, ++ AVR32_MNEMONIC_SRCC, ++ AVR32_MNEMONIC_SRCS, ++ AVR32_MNEMONIC_SRGE, ++ AVR32_MNEMONIC_SRLT, ++ AVR32_MNEMONIC_SRMI, ++ AVR32_MNEMONIC_SRPL, ++ AVR32_MNEMONIC_SRLS, ++ AVR32_MNEMONIC_SRGT, ++ AVR32_MNEMONIC_SRLE, ++ AVR32_MNEMONIC_SRHI, ++ AVR32_MNEMONIC_SRVS, ++ AVR32_MNEMONIC_SRVC, ++ AVR32_MNEMONIC_SRQS, ++ AVR32_MNEMONIC_SRAL, ++ AVR32_MNEMONIC_SRHS, ++ AVR32_MNEMONIC_SRLO, ++ AVR32_MNEMONIC_SSRF, ++ AVR32_MNEMONIC_ST_B, ++ AVR32_MNEMONIC_ST_D, ++ AVR32_MNEMONIC_ST_H, ++ AVR32_MNEMONIC_ST_W, ++ AVR32_MNEMONIC_STC_D, ++ AVR32_MNEMONIC_STC_W, ++ AVR32_MNEMONIC_STC0_D, ++ AVR32_MNEMONIC_STC0_W, ++ AVR32_MNEMONIC_STCM_D, ++ AVR32_MNEMONIC_STCM_W, ++ AVR32_MNEMONIC_STCOND, ++ AVR32_MNEMONIC_STDSP, ++ AVR32_MNEMONIC_STHH_W, ++ AVR32_MNEMONIC_STM, ++ AVR32_MNEMONIC_STMTS, ++ AVR32_MNEMONIC_STSWP_H, ++ AVR32_MNEMONIC_STSWP_W, ++ AVR32_MNEMONIC_SUB, ++ AVR32_MNEMONIC_SUBEQ, ++ AVR32_MNEMONIC_SUBNE, ++ AVR32_MNEMONIC_SUBCC, ++ AVR32_MNEMONIC_SUBCS, ++ AVR32_MNEMONIC_SUBGE, ++ AVR32_MNEMONIC_SUBLT, ++ AVR32_MNEMONIC_SUBMI, ++ AVR32_MNEMONIC_SUBPL, ++ AVR32_MNEMONIC_SUBLS, ++ AVR32_MNEMONIC_SUBGT, ++ AVR32_MNEMONIC_SUBLE, ++ AVR32_MNEMONIC_SUBHI, ++ AVR32_MNEMONIC_SUBVS, ++ AVR32_MNEMONIC_SUBVC, ++ AVR32_MNEMONIC_SUBQS, ++ AVR32_MNEMONIC_SUBAL, ++ AVR32_MNEMONIC_SUBHS, ++ AVR32_MNEMONIC_SUBLO, ++ AVR32_MNEMONIC_SUBFEQ, ++ AVR32_MNEMONIC_SUBFNE, ++ AVR32_MNEMONIC_SUBFCC, ++ AVR32_MNEMONIC_SUBFCS, ++ AVR32_MNEMONIC_SUBFGE, ++ AVR32_MNEMONIC_SUBFLT, ++ AVR32_MNEMONIC_SUBFMI, ++ AVR32_MNEMONIC_SUBFPL, ++ AVR32_MNEMONIC_SUBFLS, ++ AVR32_MNEMONIC_SUBFGT, ++ AVR32_MNEMONIC_SUBFLE, ++ AVR32_MNEMONIC_SUBFHI, ++ AVR32_MNEMONIC_SUBFVS, ++ AVR32_MNEMONIC_SUBFVC, ++ AVR32_MNEMONIC_SUBFQS, ++ AVR32_MNEMONIC_SUBFAL, ++ AVR32_MNEMONIC_SUBFHS, ++ AVR32_MNEMONIC_SUBFLO, ++ AVR32_MNEMONIC_SUBHH_W, ++ AVR32_MNEMONIC_SWAP_B, ++ AVR32_MNEMONIC_SWAP_BH, ++ AVR32_MNEMONIC_SWAP_H, ++ AVR32_MNEMONIC_SYNC, ++ AVR32_MNEMONIC_TLBR, ++ AVR32_MNEMONIC_TLBS, ++ AVR32_MNEMONIC_TLBW, ++ AVR32_MNEMONIC_TNBZ, ++ AVR32_MNEMONIC_TST, ++ AVR32_MNEMONIC_XCHG, ++ AVR32_MNEMONIC_MEMC, ++ AVR32_MNEMONIC_MEMS, ++ AVR32_MNEMONIC_MEMT, ++ AVR32_MNEMONIC_FADD_S, ++ AVR32_MNEMONIC_FADD_D, ++ AVR32_MNEMONIC_FSUB_S, ++ AVR32_MNEMONIC_FSUB_D, ++ AVR32_MNEMONIC_FMAC_S, ++ AVR32_MNEMONIC_FMAC_D, ++ AVR32_MNEMONIC_FNMAC_S, ++ AVR32_MNEMONIC_FNMAC_D, ++ AVR32_MNEMONIC_FMSC_S, ++ AVR32_MNEMONIC_FMSC_D, ++ AVR32_MNEMONIC_FNMSC_S, ++ AVR32_MNEMONIC_FNMSC_D, ++ AVR32_MNEMONIC_FMUL_S, ++ AVR32_MNEMONIC_FMUL_D, ++ AVR32_MNEMONIC_FNMUL_S, ++ AVR32_MNEMONIC_FNMUL_D, ++ AVR32_MNEMONIC_FNEG_S, ++ AVR32_MNEMONIC_FNEG_D, ++ AVR32_MNEMONIC_FABS_S, ++ AVR32_MNEMONIC_FABS_D, ++ AVR32_MNEMONIC_FCMP_S, ++ AVR32_MNEMONIC_FCMP_D, ++ AVR32_MNEMONIC_FMOV_S, ++ AVR32_MNEMONIC_FMOV_D, ++ AVR32_MNEMONIC_FCASTS_D, ++ AVR32_MNEMONIC_FCASTD_S, ++ /* AVR32_MNEMONIC_FLD_S, ++ AVR32_MNEMONIC_FLD_D, ++ AVR32_MNEMONIC_FST_S, ++ AVR32_MNEMONIC_FST_D, */ ++ AVR32_MNEMONIC_LDA_W, ++ AVR32_MNEMONIC_CALL, ++ AVR32_MNEMONIC_PICOSVMAC, ++ AVR32_MNEMONIC_PICOSVMUL, ++ AVR32_MNEMONIC_PICOVMAC, ++ AVR32_MNEMONIC_PICOVMUL, ++ AVR32_MNEMONIC_PICOLD_D, ++ AVR32_MNEMONIC_PICOLD_W, ++ AVR32_MNEMONIC_PICOLDM_D, ++ AVR32_MNEMONIC_PICOLDM_W, ++ AVR32_MNEMONIC_PICOMV_D, ++ AVR32_MNEMONIC_PICOMV_W, ++ AVR32_MNEMONIC_PICOST_D, ++ AVR32_MNEMONIC_PICOST_W, ++ AVR32_MNEMONIC_PICOSTM_D, ++ AVR32_MNEMONIC_PICOSTM_W, ++ AVR32_MNEMONIC__END_ ++}; ++#define AVR32_NR_MNEMONICS AVR32_MNEMONIC__END_ ++ ++enum avr32_syntax_parser ++ { ++ AVR32_PARSER_NORMAL, ++ AVR32_PARSER_ALIAS, ++ AVR32_PARSER_LDA, ++ AVR32_PARSER_CALL, ++ AVR32_PARSER__END_ ++ }; ++#define AVR32_NR_PARSERS AVR32_PARSER__END_ +diff -Nrup binutils-2.17/opcodes/config.in binutils-2.17.atmel.1.3.0/opcodes/config.in +--- binutils-2.17/opcodes/config.in 2005-03-31 18:52:53.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/opcodes/config.in 2007-03-26 10:31:37.000000000 +0200 +@@ -138,7 +138,7 @@ + + /* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be +- automatically deduced at run-time. ++ automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +@@ -159,8 +159,8 @@ + #undef inline + #endif + +-/* Define to `long' if does not define. */ ++/* Define to `long int' if does not define. */ + #undef off_t + +-/* Define to `unsigned' if does not define. */ ++/* Define to `unsigned int' if does not define. */ + #undef size_t +diff -Nrup binutils-2.17/opcodes/configure binutils-2.17.atmel.1.3.0/opcodes/configure +--- binutils-2.17/opcodes/configure 2006-02-17 15:36:28.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/opcodes/configure 2007-03-26 10:31:36.000000000 +0200 +@@ -1,25 +1,54 @@ + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +-# Generated by GNU Autoconf 2.59. ++# Generated by GNU Autoconf 2.61. + # +-# Copyright (C) 2003 Free Software Foundation, Inc. ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++# 2002, 2003, 2004, 2005, 2006 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 Bourne compatible ++# 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=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix ++ 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 ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh + fi +-DUALCASE=1; export DUALCASE # for MKS sh + + # Support unset when possible. + if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +@@ -29,8 +58,43 @@ else + 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.) ++as_nl=' ++' ++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 ++ 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. +-$as_unset ENV MAIL MAILPATH ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done + PS1='$ ' + PS2='> ' + PS4='+ ' +@@ -44,18 +108,19 @@ do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else +- $as_unset $as_var ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi + done + + # Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then ++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 ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename + else + as_basename=false +@@ -63,157 +128,388 @@ fi + + + # Name of the executable. +-as_me=`$as_basename "$0" || ++as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + ++# CDPATH. ++$as_unset CDPATH + +-# PATH needs CR, and LINENO needs CR and PATH. +-# 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 + +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh ++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 + +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- 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 ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi + +- ;; +- 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 +- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') ++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=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in ++ case $as_dir in + /*) +- if ("$as_dir/$as_base" -c ' ++ 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=: ++ # Zsh 3.x and 4.x performs 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=: ++ # Zsh 3.x and 4.x performs 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 +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac ++ 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 autoconf@gnu.org about your system, ++ echo including any error possibly output before this ++ echo message ++} ++ ++ ++ ++ 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 before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. ++ # 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 +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | ++ # 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 +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, ++ s/-\n.*// + ' >$as_me.lineno && +- chmod +x $as_me.lineno || ++ chmod +x "$as_me.lineno" || + { 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 sensible to this). +- . ./$as_me.lineno ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" + # Exit status is that of the last command. + exit + } + + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; ++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; then ++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 ++fi + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links ++ 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' +- else +- as_ln_s='ln -s' +- fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +-rm -f conf$$ conf$$.exe conf$$.file ++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=: +@@ -222,7 +518,28 @@ else + as_mkdir_p=false + fi + +-as_executable_p="test -f" ++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'" +@@ -231,39 +548,27 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P + as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH + ++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` + +-exec 6>&1 +- + # + # 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} + +-# Maximum number of lines to put in a shell here document. +-# This variable seems obsolete. It should probably be removed, and +-# only ac_max_sed_lines should be used. +-: ${ac_max_here_lines=38} +- + # Identity of this package. + PACKAGE_NAME= + PACKAGE_TARNAME= +@@ -275,42 +580,187 @@ ac_unique_file="z8k-dis.c" + # Factoring default headers for most tests. + ac_includes_default="\ + #include +-#if HAVE_SYS_TYPES_H ++#ifdef HAVE_SYS_TYPES_H + # include + #endif +-#if HAVE_SYS_STAT_H ++#ifdef HAVE_SYS_STAT_H + # include + #endif +-#if STDC_HEADERS ++#ifdef STDC_HEADERS + # include + # include + #else +-# if HAVE_STDLIB_H ++# ifdef HAVE_STDLIB_H + # include + # endif + #endif +-#if HAVE_STRING_H +-# if !STDC_HEADERS && HAVE_MEMORY_H ++#ifdef HAVE_STRING_H ++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H + # include + # endif + # include + #endif +-#if HAVE_STRINGS_H ++#ifdef HAVE_STRINGS_H + # include + #endif +-#if HAVE_INTTYPES_H ++#ifdef HAVE_INTTYPES_H + # include +-#else +-# if HAVE_STDINT_H +-# include +-# endif + #endif +-#if HAVE_UNISTD_H ++#ifdef HAVE_STDINT_H ++# include ++#endif ++#ifdef HAVE_UNISTD_H + # include + #endif" + +-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE AR ac_ct_AR RANLIB ac_ct_RANLIB LN_S LIBTOOL WARN_CFLAGS NO_WERROR MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT INSTALL_LIBBFD_TRUE INSTALL_LIBBFD_FALSE host_noncanonical target_noncanonical bfdlibdir bfdincludedir CPP EGREP ALLOCA USE_NLS MSGFMT GMSGFMT XGETTEXT USE_INCLUDED_LIBINTL CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLDEPS INTLLIBS INTLOBJS POFILES POSUB INCLUDE_LOCALE_H GT_NO GT_YES MKINSTALLDIRS l CC_FOR_BUILD EXEEXT_FOR_BUILD HDEFINES CGEN_MAINT_TRUE CGEN_MAINT_FALSE cgendir WIN32LDFLAGS WIN32LIBADD archdefs BFD_MACHINES LIBOBJS LTLIBOBJS' ++ac_subst_vars='SHELL ++PATH_SEPARATOR ++PACKAGE_NAME ++PACKAGE_TARNAME ++PACKAGE_VERSION ++PACKAGE_STRING ++PACKAGE_BUGREPORT ++exec_prefix ++prefix ++program_transform_name ++bindir ++sbindir ++libexecdir ++datarootdir ++datadir ++sysconfdir ++sharedstatedir ++localstatedir ++includedir ++oldincludedir ++docdir ++infodir ++htmldir ++dvidir ++pdfdir ++psdir ++libdir ++localedir ++mandir ++DEFS ++ECHO_C ++ECHO_N ++ECHO_T ++LIBS ++build_alias ++host_alias ++target_alias ++build ++build_cpu ++build_vendor ++build_os ++host ++host_cpu ++host_vendor ++host_os ++target ++target_cpu ++target_vendor ++target_os ++CC ++CFLAGS ++LDFLAGS ++CPPFLAGS ++ac_ct_CC ++EXEEXT ++OBJEXT ++INSTALL_PROGRAM ++INSTALL_SCRIPT ++INSTALL_DATA ++CYGPATH_W ++PACKAGE ++VERSION ++ACLOCAL ++AUTOCONF ++AUTOMAKE ++AUTOHEADER ++MAKEINFO ++install_sh ++STRIP ++INSTALL_STRIP_PROGRAM ++mkdir_p ++AWK ++SET_MAKE ++am__leading_dot ++AMTAR ++am__tar ++am__untar ++DEPDIR ++am__include ++am__quote ++AMDEP_TRUE ++AMDEP_FALSE ++AMDEPBACKSLASH ++CCDEPMODE ++am__fastdepCC_TRUE ++am__fastdepCC_FALSE ++AR ++RANLIB ++LN_S ++LIBTOOL ++WARN_CFLAGS ++NO_WERROR ++MAINTAINER_MODE_TRUE ++MAINTAINER_MODE_FALSE ++MAINT ++INSTALL_LIBBFD_TRUE ++INSTALL_LIBBFD_FALSE ++host_noncanonical ++target_noncanonical ++bfdlibdir ++bfdincludedir ++CPP ++GREP ++EGREP ++ALLOCA ++USE_NLS ++MSGFMT ++GMSGFMT ++XGETTEXT ++USE_INCLUDED_LIBINTL ++CATALOGS ++CATOBJEXT ++DATADIRNAME ++GMOFILES ++INSTOBJEXT ++INTLDEPS ++INTLLIBS ++INTLOBJS ++POFILES ++POSUB ++INCLUDE_LOCALE_H ++GT_NO ++GT_YES ++MKINSTALLDIRS ++l ++CC_FOR_BUILD ++EXEEXT_FOR_BUILD ++HDEFINES ++CGEN_MAINT_TRUE ++CGEN_MAINT_FALSE ++cgendir ++WIN32LDFLAGS ++WIN32LIBADD ++archdefs ++BFD_MACHINES ++LIBOBJS ++LTLIBOBJS' + ac_subst_files='' ++ ac_precious_vars='build_alias ++host_alias ++target_alias ++CC ++CFLAGS ++LDFLAGS ++LIBS ++CPPFLAGS ++CPP' ++ + + # Initialize some variables set by options. + ac_init_help= +@@ -337,34 +787,48 @@ x_libraries=NONE + # 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' +-datadir='${prefix}/share' ++datarootdir='${prefix}/share' ++datadir='${datarootdir}' + sysconfdir='${prefix}/etc' + sharedstatedir='${prefix}/com' + localstatedir='${prefix}/var' +-libdir='${exec_prefix}/lib' + includedir='${prefix}/include' + oldincludedir='/usr/include' +-infodir='${prefix}/info' +-mandir='${prefix}/man' ++docdir='${datarootdir}/doc/${PACKAGE}' ++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" ++ eval $ac_prev=\$ac_option + ac_prev= + continue + fi + +- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` ++ 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_option in ++ case $ac_dashdash$ac_option in ++ --) ++ ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; +@@ -386,33 +850,45 @@ do + --config-cache | -C) + cache_file=config.cache ;; + +- -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ++ -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; +- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ +- | --da=*) ++ -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_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- eval "enable_$ac_feature=no" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=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_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "enable_$ac_feature='$ac_optarg'" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ +@@ -439,6 +915,12 @@ do + -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 ;; +@@ -463,13 +945,16 @@ do + | --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 | --local | --loca | --loc | --lo) ++ | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ +- | --localstate=* | --localstat=* | --localsta=* | --localst=* \ +- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) ++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) +@@ -534,6 +1019,16 @@ do + | --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 ;; +@@ -586,24 +1081,20 @@ do + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package| sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "with_$ac_package='$ac_optarg'" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package | sed 's/-/_/g'` +- eval "with_$ac_package=no" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. +@@ -634,8 +1125,7 @@ Try \`$0 --help' for more information." + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } +- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` +- eval "$ac_envvar='$ac_optarg'" ++ eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) +@@ -655,27 +1145,19 @@ if test -n "$ac_prev"; then + { (exit 1); exit 1; }; } + fi + +-# Be sure to have absolute paths. +-for ac_var in exec_prefix prefix +-do +- eval ac_val=$`echo $ac_var` +- case $ac_val in +- [\\/$]* | ?:[\\/]* | NONE | '' ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# Be sure to have absolute paths. +-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ +- localstatedir libdir includedir oldincludedir infodir mandir ++# Be sure to have absolute directory names. ++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=$`echo $ac_var` ++ eval ac_val=\$$ac_var + case $ac_val in +- [\\/$]* | ?:[\\/]* ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; ++ [\\/$]* | ?:[\\/]* ) continue;; ++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac ++ { 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' +@@ -702,74 +1184,76 @@ test -n "$host_alias" && ac_tool_prefix= + 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 .` || ++ { echo "$as_me: error: Working directory cannot be determined" >&2 ++ { (exit 1); exit 1; }; } ++test "X$ac_ls_di" = "X$ac_pwd_ls_di" || ++ { 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 its parent. +- ac_confdir=`(dirname "$0") 2>/dev/null || ++ # Try the directory containing this script, then the parent directory. ++ ac_confdir=`$as_dirname -- "$0" || + $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X"$0" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ 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 ++ if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi + else + ac_srcdir_defaulted=no + fi +-if test ! -r $srcdir/$ac_unique_file; then +- if test "$ac_srcdir_defaulted" = yes; then +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 +- { (exit 1); exit 1; }; } +- else +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +- { (exit 1); exit 1; }; } +- fi +-fi +-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || +- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +- { (exit 1); exit 1; }; } +-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +-ac_env_build_alias_set=${build_alias+set} +-ac_env_build_alias_value=$build_alias +-ac_cv_env_build_alias_set=${build_alias+set} +-ac_cv_env_build_alias_value=$build_alias +-ac_env_host_alias_set=${host_alias+set} +-ac_env_host_alias_value=$host_alias +-ac_cv_env_host_alias_set=${host_alias+set} +-ac_cv_env_host_alias_value=$host_alias +-ac_env_target_alias_set=${target_alias+set} +-ac_env_target_alias_value=$target_alias +-ac_cv_env_target_alias_set=${target_alias+set} +-ac_cv_env_target_alias_value=$target_alias +-ac_env_CC_set=${CC+set} +-ac_env_CC_value=$CC +-ac_cv_env_CC_set=${CC+set} +-ac_cv_env_CC_value=$CC +-ac_env_CFLAGS_set=${CFLAGS+set} +-ac_env_CFLAGS_value=$CFLAGS +-ac_cv_env_CFLAGS_set=${CFLAGS+set} +-ac_cv_env_CFLAGS_value=$CFLAGS +-ac_env_LDFLAGS_set=${LDFLAGS+set} +-ac_env_LDFLAGS_value=$LDFLAGS +-ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +-ac_cv_env_LDFLAGS_value=$LDFLAGS +-ac_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_env_CPPFLAGS_value=$CPPFLAGS +-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_cv_env_CPPFLAGS_value=$CPPFLAGS +-ac_env_CPP_set=${CPP+set} +-ac_env_CPP_value=$CPP +-ac_cv_env_CPP_set=${CPP+set} +-ac_cv_env_CPP_value=$CPP ++if test ! -r "$srcdir/$ac_unique_file"; then ++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." ++ { 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" || { 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. +@@ -798,9 +1282,6 @@ Configuration: + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +-_ACEOF +- +- cat <<_ACEOF + Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] +@@ -818,15 +1299,22 @@ Fine tuning of the installation director + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] +- --datadir=DIR read-only architecture-independent data [PREFIX/share] + --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] +- --infodir=DIR info documentation [PREFIX/info] +- --mandir=DIR man documentation [PREFIX/man] ++ --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/PACKAGE] ++ --htmldir=DIR html documentation [DOCDIR] ++ --dvidir=DIR dvi documentation [DOCDIR] ++ --pdfdir=DIR pdf documentation [DOCDIR] ++ --psdir=DIR ps documentation [DOCDIR] + _ACEOF + + cat <<\_ACEOF +@@ -878,126 +1366,95 @@ Some influential environment variables: + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory +- CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have +- headers in a nonstandard directory ++ LIBS libraries to pass to the linker, e.g. -l ++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if ++ you have headers in a nonstandard directory + CPP C preprocessor + + 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. +- ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue +- test -d $ac_dir || continue ++ test -d "$ac_dir" || continue + ac_builddir=. + +-if test "$ac_dir" != .; then ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`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 +- .) # No --srcdir option. We are building in place. ++ .) # We are building in place. + ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. ++ 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 ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +- +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac +- +- cd $ac_dir +- # Check for guested configure; otherwise get Cygnus style 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 +- elif test -f $ac_srcdir/configure.ac || +- test -f $ac_srcdir/configure.in; then +- echo +- $ac_configure --help ++ 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 + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 +- fi +- cd $ac_popdir ++ fi || ac_status=$? ++ cd "$ac_pwd" || { ac_status=$?; break; } + done + fi + +-test -n "$ac_init_help" && exit 0 ++test -n "$ac_init_help" && exit $ac_status + if $ac_init_version; then + cat <<\_ACEOF ++configure ++generated by GNU Autoconf 2.61 + +-Copyright (C) 2003 Free Software Foundation, Inc. ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++2002, 2003, 2004, 2005, 2006 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 0 ++ exit + fi +-exec 5>config.log +-cat >&5 <<_ACEOF ++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 $as_me, which was +-generated by GNU Autoconf 2.59. Invocation command line was ++generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + + _ACEOF ++exec 5>>config.log + { + cat <<_ASUNAME + ## --------- ## +@@ -1016,7 +1473,7 @@ uname -v = `(uname -v) 2>/dev/null || ec + /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` +-hostinfo = `(hostinfo) 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` +@@ -1030,6 +1487,7 @@ do + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" + done ++IFS=$as_save_IFS + + } >&5 + +@@ -1051,7 +1509,6 @@ _ACEOF + ac_configure_args= + ac_configure_args0= + ac_configure_args1= +-ac_sep= + ac_must_keep_next=false + for ac_pass in 1 2 + do +@@ -1062,7 +1519,7 @@ do + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ++ *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in +@@ -1084,9 +1541,7 @@ do + -* ) ac_must_keep_next=true ;; + esac + fi +- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" +- # Get rid of the leading space. +- ac_sep=" " ++ ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +@@ -1097,8 +1552,8 @@ $as_unset ac_configure_args1 || test "${ + # 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: Be sure not to use single quotes in there, as some shells, +-# such as our DU 5.0 friend, will then `close' the trap. ++# 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. + { +@@ -1111,20 +1566,34 @@ trap 'exit_status=$? + _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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done + (set) 2>&1 | +- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ 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" +- ;; ++ "s/'\''/'\''\\\\'\'''\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ++ ;; #( + *) +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} ++ esac | ++ sort ++) + echo + + cat <<\_ASBOX +@@ -1135,22 +1604,28 @@ _ASBOX + echo + for ac_var in $ac_subst_vars + do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +-## ------------- ## +-## Output files. ## +-## ------------- ## ++## ------------------- ## ++## File substitutions. ## ++## ------------------- ## + _ASBOX + echo + for ac_var in $ac_subst_files + do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi +@@ -1162,26 +1637,24 @@ _ASBOX + ## ----------- ## + _ASBOX + echo +- sed "/^$/d" confdefs.h | sort ++ cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 +- rm -f core *.core && +- rm -rf conftest* confdefs* conf$$* $ac_clean_files && ++ rm -f core *.core core.conftest.* && ++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +- ' 0 ++' 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 -rf conftest* confdefs.h +-# AIX cpp loses on an empty file, so make sure it contains at least a newline. +-echo >confdefs.h ++rm -f -r conftest* confdefs.h + + # Predefined preprocessor variables. + +@@ -1212,14 +1685,17 @@ _ACEOF + + # Let the site file select an alternate cache file if it wants to. + # Prefer explicitly selected file to automatically selected ones. +-if test -z "$CONFIG_SITE"; then +- if test "x$prefix" != xNONE; then +- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" +- else +- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +- fi ++if test -n "$CONFIG_SITE"; then ++ set x "$CONFIG_SITE" ++elif test "x$prefix" != xNONE; then ++ set x "$prefix/share/config.site" "$prefix/etc/config.site" ++else ++ set x "$ac_default_prefix/share/config.site" \ ++ "$ac_default_prefix/etc/config.site" + fi +-for ac_site_file in $CONFIG_SITE; do ++shift ++for ac_site_file ++do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 + echo "$as_me: loading site script $ac_site_file" >&6;} +@@ -1235,8 +1711,8 @@ if test -r "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 + echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; + esac + fi + else +@@ -1248,12 +1724,11 @@ fi + # Check that the precious variables saved in the cache have kept the same + # value. + ac_cache_corrupted=false +-for ac_var in `(set) 2>&1 | +- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do ++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" ++ 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,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +@@ -1278,8 +1753,7 @@ echo "$as_me: current value: $ac_new_v + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in +@@ -1296,12 +1770,6 @@ echo "$as_me: error: run \`make distclea + { (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 +- + + + +@@ -1318,109 +1786,164 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ++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 $srcdir/.. $srcdir/../..; do +- if test -f $ac_dir/install-sh; then ++for ac_dir in "$srcdir" "$srcdir/.." "$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 ++ 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 ++ 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 +- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} ++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 ++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } + fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. ++ ++# 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. +-$ac_config_sub sun4 >/dev/null 2>&1 || +- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +-echo "$as_me: error: cannot run $ac_config_sub" >&2;} ++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || ++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 ++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +-echo "$as_me:$LINENO: checking build system type" >&5 +-echo $ECHO_N "checking build system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking build system type" >&5 ++echo $ECHO_N "checking build system type... $ECHO_C" >&6; } + if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_build_alias=$build_alias +-test -z "$ac_cv_build_alias" && +- ac_cv_build_alias=`$ac_config_guess` +-test -z "$ac_cv_build_alias" && ++ 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 && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 + echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} ++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + + fi +-echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +-echo "${ECHO_T}$ac_cv_build" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 ++echo "${ECHO_T}$ac_cv_build" >&6; } ++case $ac_cv_build in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 ++echo "$as_me: error: invalid value of canonical build" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + build=$ac_cv_build +-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++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 + + +-echo "$as_me:$LINENO: checking host system type" >&5 +-echo $ECHO_N "checking host system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking host system type" >&5 ++echo $ECHO_N "checking host system type... $ECHO_C" >&6; } + if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_host_alias=$host_alias +-test -z "$ac_cv_host_alias" && +- ac_cv_host_alias=$ac_cv_build_alias +-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} ++ 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` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } ++fi + + fi +-echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +-echo "${ECHO_T}$ac_cv_host" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 ++echo "${ECHO_T}$ac_cv_host" >&6; } ++case $ac_cv_host in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 ++echo "$as_me: error: invalid value of canonical host" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + host=$ac_cv_host +-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++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 + + +-echo "$as_me:$LINENO: checking target system type" >&5 +-echo $ECHO_N "checking target system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking target system type" >&5 ++echo $ECHO_N "checking target system type... $ECHO_C" >&6; } + if test "${ac_cv_target+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_target_alias=$target_alias +-test "x$ac_cv_target_alias" = "x" && +- ac_cv_target_alias=$ac_cv_host_alias +-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} ++ if test "x$target_alias" = x; then ++ ac_cv_target=$ac_cv_host ++else ++ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} + { (exit 1); exit 1; }; } ++fi + + fi +-echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +-echo "${ECHO_T}$ac_cv_target" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5 ++echo "${ECHO_T}$ac_cv_target" >&6; } ++case $ac_cv_target in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 ++echo "$as_me: error: invalid value of canonical target" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + target=$ac_cv_target +-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_target ++shift ++target_cpu=$1 ++target_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++target_os=$* ++IFS=$ac_save_IFS ++case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + + # The aliases save the names the user supplied, while $host etc. +@@ -1437,8 +1960,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1451,32 +1974,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}gcc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1489,36 +2014,51 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="gcc" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + else + CC="$ac_cv_prog_CC" + fi + + if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1531,74 +2071,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}cc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi + ++ fi + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1612,7 +2112,7 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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 +@@ -1623,6 +2123,7 @@ do + 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. +@@ -1640,22 +2141,23 @@ fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1668,36 +2170,38 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="$ac_tool_prefix$ac_prog" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CC" && break + done + fi + if test -z "$CC"; then + ac_ct_CC=$CC +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1710,29 +2214,45 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="$ac_prog" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CC" && break + done + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + fi + + fi +@@ -1745,21 +2265,35 @@ See \`config.log' for more details." >&2 + { (exit 1); exit 1; }; } + + # Provide some information about the compiler. +-echo "$as_me:$LINENO:" \ +- "checking for C compiler version" >&5 ++echo "$as_me:$LINENO: checking for C compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +@@ -1784,47 +2318,77 @@ ac_clean_files="$ac_clean_files a.out a. + # Try to create an executable without -o first, disregard a.out. + # It will help us diagnose broken compilers, and finding out an intuition + # of exeext. +-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 ++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } + ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 +- (eval $ac_link_default) 2>&5 ++# ++# List of possible output files, starting from the most likely. ++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) ++# only as a last resort. b.out is created by i960 compilers. ++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' ++# ++# The IRIX 6 linker writes into existing files which may not be ++# executable, retaining their permissions. Remove them first so a ++# subsequent execution test works. ++ac_rmfiles= ++for ac_file in $ac_files ++do ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; ++ * ) ac_rmfiles="$ac_rmfiles $ac_file";; ++ esac ++done ++rm -f $ac_rmfiles ++ ++if { (ac_try="$ac_link_default" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- # Find the output, starting from the most likely. This scheme is +-# not robust to junk in `.', hence go to wildcards (a.*) only as a last +-# resort. +- +-# Be careful to initialize this variable, since it used to be cached. +-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +-ac_cv_exeext= +-# b.out is created by i960 compilers. +-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out ++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. ++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' ++# in a Makefile. We should not override ac_cv_exeext if it was cached, ++# so that the user can short-circuit this test for compilers unknown to ++# Autoconf. ++for ac_file in $ac_files '' + do + test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) +- ;; +- conftest.$ac_ext ) +- # This is the source file. ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) +- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- # FIXME: I believe we export ac_cv_exeext for Libtool, +- # but it would be cool to find out if it's true. Does anybody +- # maintain Libtool? --akim. +- export ac_cv_exeext ++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ then :; else ++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ fi ++ # We set ac_cv_exeext here because the later test for it is not ++ # safe: cross compilers may not add the suffix if given an `-o' ++ # argument, so we may need to know it at that point already. ++ # Even if this section looks crufty: it has the advantage of ++ # actually working. + break;; + * ) + break;; + esac + done ++test "$ac_cv_exeext" = no && ac_cv_exeext= ++ + else ++ ac_file='' ++fi ++ ++{ echo "$as_me:$LINENO: result: $ac_file" >&5 ++echo "${ECHO_T}$ac_file" >&6; } ++if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +@@ -1836,19 +2400,21 @@ See \`config.log' for more details." >&2 + fi + + ac_exeext=$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_file" >&5 +-echo "${ECHO_T}$ac_file" >&6 + +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 ++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. + if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -1867,22 +2433,27 @@ See \`config.log' for more details." >&2 + fi + fi + fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + + rm -f a.out a.exe conftest$ac_cv_exeext b.out + ac_clean_files=$ac_clean_files_save +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +-echo "$as_me:$LINENO: result: $cross_compiling" >&5 +-echo "${ECHO_T}$cross_compiling" >&6 +- +-echo "$as_me:$LINENO: checking for suffix of executables" >&5 +-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 ++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 ++echo "${ECHO_T}$cross_compiling" >&6; } ++ ++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 ++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +@@ -1893,9 +2464,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l + for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- export ac_cv_exeext + break;; + * ) break;; + esac +@@ -1909,14 +2479,14 @@ See \`config.log' for more details." >&2 + fi + + rm -f conftest$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +-echo "${ECHO_T}$ac_cv_exeext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 ++echo "${ECHO_T}$ac_cv_exeext" >&6; } + + rm -f conftest.$ac_ext + EXEEXT=$ac_cv_exeext + ac_exeext=$EXEEXT +-echo "$as_me:$LINENO: checking for suffix of object files" >&5 +-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 ++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } + if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1936,14 +2506,20 @@ main () + } + _ACEOF + rm -f conftest.o conftest.obj +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do ++ for ac_file in conftest.o conftest.obj conftest.*; do ++ test -f "$ac_file" || continue; + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +@@ -1961,12 +2537,12 @@ fi + + rm -f conftest.$ac_cv_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +-echo "${ECHO_T}$ac_cv_objext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 ++echo "${ECHO_T}$ac_cv_objext" >&6; } + OBJEXT=$ac_cv_objext + ac_objext=$OBJEXT +-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } + if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1989,50 +2565,49 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_compiler_gnu=no ++ ac_compiler_gnu=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } + GCC=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CFLAGS=${CFLAGS+set} + ac_save_CFLAGS=$CFLAGS +-CFLAGS="-g" +-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ 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 +@@ -2048,38 +2623,118 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&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 ++ 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 "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ : ++else ++ 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 "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (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 + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_prog_cc_g=no ++ ++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 conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_c_werror_flag=$ac_save_c_werror_flag + fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++echo "${ECHO_T}$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 +@@ -2095,12 +2750,12 @@ else + CFLAGS= + fi + fi +-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_stdc+set}" = set; then ++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_prog_cc_stdc=no ++ ac_cv_prog_cc_c89=no + ac_save_CC=$CC + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -2134,12 +2789,17 @@ static char *f (char * (*g) (char **, in + /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated +- as 'x'. The following induces an error, until -std1 is added to get ++ as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something +- that's true only with -std1. */ ++ that's true only with -std. */ + int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ + int test (int i, double x); + struct s1 {int (*f) (int a);}; + struct s2 {int (*f) (double a);}; +@@ -2154,335 +2814,144 @@ return f (e, argv, 0) != argv[0] || f + return 0; + } + _ACEOF +-# Don't try gcc -ansi; that turns off useful extensions and +-# breaks some systems' header files. +-# AIX -qlanglvl=ansi +-# Ultrix and OSF/1 -std1 +-# HP-UX 10.20 and later -Ae +-# HP-UX older versions -Aa -D_HPUX_SOURCE +-# SVR4 -Xc -D__EXTENSIONS__ +-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" + do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_stdc=$ac_arg +-break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_c89=$ac_arg + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext ++ ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break + done +-rm -f conftest.$ac_ext conftest.$ac_objext ++rm -f conftest.$ac_ext + CC=$ac_save_CC + + fi +- +-case "x$ac_cv_prog_cc_stdc" in +- x|xno) +- echo "$as_me:$LINENO: result: none needed" >&5 +-echo "${ECHO_T}none needed" >&6 ;; ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { echo "$as_me:$LINENO: result: none needed" >&5 ++echo "${ECHO_T}none needed" >&6; } ;; ++ xno) ++ { echo "$as_me:$LINENO: result: unsupported" >&5 ++echo "${ECHO_T}unsupported" >&6; } ;; + *) +- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 +- CC="$CC $ac_cv_prog_cc_stdc" ;; ++ CC="$CC $ac_cv_prog_cc_c89" ++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + esac + +-# Some people use a C++ compiler to compile C. Since we use `exit', +-# in C++ we need to declare it. In case someone uses the same compiler +-# for both compiling C and C++ we need to have the C++ compiler decide +-# the declaration of exit, since it's the most demanding environment. ++ ++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 ++ ++ ++{ echo "$as_me:$LINENO: checking for library containing strerror" >&5 ++echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; } ++if test "${ac_cv_search_strerror+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_func_search_save_LIBS=$LIBS + cat >conftest.$ac_ext <<_ACEOF +-#ifndef __cplusplus +- choke me +-#endif +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- for ac_declaration in \ +- '' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_declaration +-#include ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char strerror (); + int + main () + { +-exit (42); ++return strerror (); + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++for ac_lib in '' cposix; do ++ if test -z "$ac_lib"; then ++ ac_res="none required" ++ else ++ ac_res=-l$ac_lib ++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" ++ fi ++ rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_search_strerror=$ac_res + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-continue +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h +-fi +- +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext ++ if test "${ac_cv_search_strerror+set}" = set; then ++ break + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-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 +- +- +-echo "$as_me:$LINENO: checking for library containing strerror" >&5 +-echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6 ++done + if test "${ac_cv_search_strerror+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_func_search_save_LIBS=$LIBS +-ac_cv_search_strerror=no +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char strerror (); +-int +-main () +-{ +-strerror (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_strerror="none required" +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-if test "$ac_cv_search_strerror" = no; then +- for ac_lib in cposix; do +- LIBS="-l$ac_lib $ac_func_search_save_LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char strerror (); +-int +-main () +-{ +-strerror (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_search_strerror="-l$ac_lib" +-break ++ : + else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- done ++ ac_cv_search_strerror=no + fi ++rm conftest.$ac_ext + LIBS=$ac_func_search_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 +-echo "${ECHO_T}$ac_cv_search_strerror" >&6 +-if test "$ac_cv_search_strerror" != no; then +- test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS" ++{ echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 ++echo "${ECHO_T}$ac_cv_search_strerror" >&6; } ++ac_res=$ac_cv_search_strerror ++if test "$ac_res" != no; then ++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + fi + +@@ -2506,8 +2975,8 @@ am__api_version="1.9" + # 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. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } + if test -z "$INSTALL"; then + if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -2529,7 +2998,7 @@ case $as_dir/ in + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ++ 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. +@@ -2548,21 +3017,22 @@ case $as_dir/ in + ;; + esac + done ++IFS=$as_save_IFS + + + 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. We don't cache a +- # path for INSTALL within a source directory, because that will ++ # 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 path is relative. ++ # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi + fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -2572,8 +3042,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR + + test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +-echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 ++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } + # Just in case + sleep 1 + echo timestamp > conftest.file +@@ -2615,20 +3085,20 @@ echo "$as_me: error: newly created file + Check your system clock" >&2;} + { (exit 1); exit 1; }; } + fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + test "$program_prefix" != NONE && +- program_transform_name="s,^,$program_prefix,;$program_transform_name" ++ 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" ++ program_transform_name="s&\$&$program_suffix&;$program_transform_name" + # Double any \ or $. echo might interpret backslashes. + # By default was `s,x,x', remove it if useless. + cat <<\_ACEOF >conftest.sed + s/[\\$]/&&/g;s/;s,x,x,$// + _ACEOF + program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +-rm conftest.sed ++rm -f conftest.sed + + # expand $ac_aux_dir to an absolute path + am_aux_dir=`cd $ac_aux_dir && pwd` +@@ -2680,8 +3150,8 @@ 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2694,54 +3164,57 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $AWK" >&5 +-echo "${ECHO_T}$AWK" >&6 ++ { echo "$as_me:$LINENO: result: $AWK" >&5 ++echo "${ECHO_T}$AWK" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$AWK" && break + done + +-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } ++set x ${MAKE-make}; ac_make=`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 + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh + all: +- @echo 'ac_maketemp="$(MAKE)"' ++ @echo '@@@%%%=$(MAKE)=@@@%%%' + _ACEOF + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. +-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +-if test -n "$ac_maketemp"; then +- eval ac_cv_prog_make_${ac_make}_set=yes +-else +- eval ac_cv_prog_make_${ac_make}_set=no +-fi ++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 \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + SET_MAKE= + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" + fi + +@@ -2756,7 +3229,7 @@ rmdir .tst 2>/dev/null + + DEPDIR="${am__leading_dot}deps" + +- ac_config_commands="$ac_config_commands depfiles" ++ac_config_commands="$ac_config_commands depfiles" + + + am_make=${MAKE-make} +@@ -2766,8 +3239,8 @@ am__doit: + .PHONY: am__doit + END + # If we don't find an include directive, just comment out the code. +-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 ++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } + am__include="#" + am__quote= + _am_result=none +@@ -2794,15 +3267,15 @@ if test "$am__include" = "#"; then + fi + + +-echo "$as_me:$LINENO: result: $_am_result" >&5 +-echo "${ECHO_T}$_am_result" >&6 ++{ echo "$as_me:$LINENO: result: $_am_result" >&5 ++echo "${ECHO_T}$_am_result" >&6; } + rm -f confinc confmf + +-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. ++# Check whether --enable-dependency-tracking was given. + if test "${enable_dependency_tracking+set}" = set; then +- enableval="$enable_dependency_tracking" ++ enableval=$enable_dependency_tracking; ++fi + +-fi; + if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +@@ -2877,8 +3350,8 @@ 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2891,32 +3364,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2929,27 +3404,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" + fi + fi + ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP + if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- STRIP=$ac_ct_STRIP ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi + else + STRIP="$ac_cv_prog_STRIP" + fi +@@ -2970,8 +3459,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am + + depcc="$CC" am_compiler_list= + +-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } + if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3060,8 +3549,8 @@ else + fi + + fi +-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 ++{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 ++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } + CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + +@@ -3082,8 +3571,8 @@ 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3096,32 +3585,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $AR" >&5 +-echo "${ECHO_T}$AR" >&6 ++ { echo "$as_me:$LINENO: result: $AR" >&5 ++echo "${ECHO_T}$AR" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3134,26 +3625,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +-echo "${ECHO_T}$ac_ct_AR" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 ++echo "${ECHO_T}$ac_ct_AR" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- AR=$ac_ct_AR ++ if test "x$ac_ct_AR" = x; then ++ AR="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ AR=$ac_ct_AR ++ fi + else + AR="$ac_cv_prog_AR" + fi +@@ -3161,8 +3667,8 @@ 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3175,32 +3681,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3213,36 +3721,49 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" + fi + fi + ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB + if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- RANLIB=$ac_ct_RANLIB ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi + else + RANLIB="$ac_cv_prog_RANLIB" + fi + + +-# Check whether --enable-shared or --disable-shared was given. ++# Check whether --enable-shared was given. + if test "${enable_shared+set}" = set; then +- enableval="$enable_shared" +- p=${PACKAGE-default} ++ enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; +@@ -3260,12 +3781,12 @@ no) enable_shared=no ;; + esac + else + enable_shared=no +-fi; ++fi ++ + +-# Check whether --enable-static or --disable-static was given. ++# Check whether --enable-static was given. + if test "${enable_static+set}" = set; then +- enableval="$enable_static" +- p=${PACKAGE-default} ++ enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; +@@ -3283,11 +3804,11 @@ no) enable_static=no ;; + esac + else + enable_static=yes +-fi; +-# Check whether --enable-fast-install or --disable-fast-install was given. ++fi ++ ++# Check whether --enable-fast-install was given. + if test "${enable_fast_install+set}" = set; then +- enableval="$enable_fast_install" +- p=${PACKAGE-default} ++ enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; +@@ -3305,20 +3826,21 @@ no) enable_fast_install=no ;; + esac + else + enable_fast_install=yes +-fi; ++fi ++ + +-# Check whether --with-gnu-ld or --without-gnu-ld was given. ++# Check whether --with-gnu-ld was given. + if test "${with_gnu_ld+set}" = set; then +- withval="$with_gnu_ld" +- test "$withval" = no || with_gnu_ld=yes ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes + else + with_gnu_ld=no +-fi; ++fi ++ + ac_prog=ld + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. +- echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for ld used by GCC" >&5 ++echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw +@@ -3347,11 +3869,11 @@ echo $ECHO_N "checking for ld used by GC + ;; + esac + elif test "$with_gnu_ld" = yes; then +- echo "$as_me:$LINENO: checking for GNU ld" >&5 +-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for GNU ld" >&5 ++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + else +- echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + fi + if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -3380,17 +3902,17 @@ fi + + LD="$lt_cv_path_LD" + if test -n "$LD"; then +- echo "$as_me:$LINENO: result: $LD" >&5 +-echo "${ECHO_T}$LD" >&6 ++ { echo "$as_me:$LINENO: result: $LD" >&5 ++echo "${ECHO_T}$LD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 + echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } + if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3401,25 +3923,25 @@ else + lt_cv_prog_gnu_ld=no + fi + fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 ++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } + with_gnu_ld=$lt_cv_prog_gnu_ld + + +-echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 ++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } + if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + lt_cv_ld_reload_flag='-r' + fi +-echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 ++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } + reload_flag=$lt_cv_ld_reload_flag + test -n "$reload_flag" && reload_flag=" $reload_flag" + +-echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 ++echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } + if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3454,22 +3976,22 @@ fi + fi + + NM="$lt_cv_path_NM" +-echo "$as_me:$LINENO: result: $NM" >&5 +-echo "${ECHO_T}$NM" >&6 ++{ echo "$as_me:$LINENO: result: $NM" >&5 ++echo "${ECHO_T}$NM" >&6; } + +-echo "$as_me:$LINENO: checking whether ln -s works" >&5 +-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 ++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } + LN_S=$as_ln_s + if test "$LN_S" = "ln -s"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + else +- echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +-echo "${ECHO_T}no, using $LN_S" >&6 ++ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 ++echo "${ECHO_T}no, using $LN_S" >&6; } + fi + +-echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 +-echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 ++echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6; } + if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3631,8 +4153,8 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + esac + + fi +-echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 ++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } + file_magic_cmd=$lt_cv_file_magic_cmd + deplibs_check_method=$lt_cv_deplibs_check_method + +@@ -3642,8 +4164,8 @@ deplibs_check_method=$lt_cv_deplibs_chec + # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + + # find the maximum length of command line arguments +-echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 ++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } + if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3694,11 +4216,11 @@ else + fi + + if test -n "$lt_cv_sys_max_cmd_len" ; then +- echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 ++ { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 ++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } + else +- echo "$as_me:$LINENO: result: none" >&5 +-echo "${ECHO_T}none" >&6 ++ { echo "$as_me:$LINENO: result: none" >&5 ++echo "${ECHO_T}none" >&6; } + fi + + +@@ -3706,8 +4228,8 @@ fi + case $deplibs_check_method in + file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 ++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } + if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3761,17 +4283,17 @@ fi + + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then +- echo "$as_me:$LINENO: checking for file" >&5 +-echo $ECHO_N "checking for file... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for file" >&5 ++echo $ECHO_N "checking for file... $ECHO_C" >&6; } + if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3825,11 +4347,11 @@ fi + + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + else +@@ -3844,8 +4366,8 @@ esac + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3858,32 +4380,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3896,27 +4420,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" + fi + fi + ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB + if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- RANLIB=$ac_ct_RANLIB ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi + else + RANLIB="$ac_cv_prog_RANLIB" + fi +@@ -3924,8 +4462,8 @@ fi + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3938,32 +4476,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3976,27 +4516,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" + fi + fi + ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP + if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- STRIP=$ac_ct_STRIP ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi + else + STRIP="$ac_cv_prog_STRIP" + fi +@@ -4011,22 +4565,22 @@ test "$GCC" = yes && libtool_flags="$lib + test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" + + +-# Check whether --enable-libtool-lock or --disable-libtool-lock was given. ++# Check whether --enable-libtool-lock was given. + if test "${enable_libtool_lock+set}" = set; then +- enableval="$enable_libtool_lock" ++ enableval=$enable_libtool_lock; ++fi + +-fi; + test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" + test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" + + +-# Check whether --with-pic or --without-pic was given. ++# Check whether --with-pic was given. + if test "${with_pic+set}" = set; then +- withval="$with_pic" +- pic_mode="$withval" ++ withval=$with_pic; pic_mode="$withval" + else + pic_mode=default +-fi; ++fi ++ + test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic" + test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic" + +@@ -4035,7 +4589,7 @@ test x"$pic_mode" = xno && libtool_flags + case $host in + *-*-irix6*) + # Find out which ABI we are using. +- echo '#line 4038 "configure"' > conftest.$ac_ext ++ echo '#line 4592 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +@@ -4140,13 +4694,12 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*li + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" +- echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 ++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } + if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + +- + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -4169,35 +4722,32 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + lt_cv_cc_needs_belf=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-lt_cv_cc_needs_belf=no ++ lt_cv_cc_needs_belf=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' +@@ -4206,8 +4756,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLA + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 ++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" +@@ -4237,39 +4787,58 @@ _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, don't put newlines in cache variables' values. ++# 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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ + (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ 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 \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} | ++ esac | ++ sort ++) | + sed ' ++ /^ac_cv_env_/b end + t clear +- : clear ++ :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end +- /^ac_cv_env/!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" && echo "updating cache $cache_file" ++ 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" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else +- echo "not updating unwritable cache $cache_file" ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi + fi + rm -f confcache +@@ -4295,8 +4864,8 @@ if test -r "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 + echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; + esac + fi + else +@@ -4322,10 +4891,9 @@ exec 5>>./config.log + + + +-# Check whether --enable-targets or --disable-targets was given. ++# Check whether --enable-targets was given. + if test "${enable_targets+set}" = set; then +- enableval="$enable_targets" +- case "${enableval}" in ++ enableval=$enable_targets; case "${enableval}" in + yes | "") { { echo "$as_me:$LINENO: error: enable-targets option must specify target names or 'all'" >&5 + echo "$as_me: error: enable-targets option must specify target names or 'all'" >&2;} + { (exit 1); exit 1; }; } +@@ -4333,31 +4901,32 @@ echo "$as_me: error: enable-targets opti + no) enable_targets= ;; + *) enable_targets=$enableval ;; + esac +-fi; # Check whether --enable-commonbfdlib or --disable-commonbfdlib was given. ++fi ++# Check whether --enable-commonbfdlib was given. + if test "${enable_commonbfdlib+set}" = set; then +- enableval="$enable_commonbfdlib" +- case "${enableval}" in ++ enableval=$enable_commonbfdlib; case "${enableval}" in + yes) commonbfdlib=true ;; + no) commonbfdlib=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for opcodes commonbfdlib option" >&5 + echo "$as_me: error: bad value ${enableval} for opcodes commonbfdlib option" >&2;} + { (exit 1); exit 1; }; } ;; + esac +-fi; ++fi ++ + + GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" + +-# Check whether --enable-werror or --disable-werror was given. ++# Check whether --enable-werror was given. + if test "${enable_werror+set}" = set; then +- enableval="$enable_werror" +- case "${enableval}" in ++ enableval=$enable_werror; case "${enableval}" in + yes | y) ERROR_ON_WARNING="yes" ;; + no | n) ERROR_ON_WARNING="no" ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-werror" >&5 + echo "$as_me: error: bad value ${enableval} for --enable-werror" >&2;} + { (exit 1); exit 1; }; } ;; + esac +-fi; ++fi ++ + + # Enable -Werror by default when using gcc + if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then +@@ -4374,10 +4943,9 @@ if test "${GCC}" = yes ; then + WARN_CFLAGS="${GCC_WARN_CFLAGS}" + fi + +-# Check whether --enable-build-warnings or --disable-build-warnings was given. ++# Check whether --enable-build-warnings was given. + if test "${enable_build_warnings+set}" = set; then +- enableval="$enable_build_warnings" +- case "${enableval}" in ++ enableval=$enable_build_warnings; case "${enableval}" in + yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; + no) if test "${GCC}" = yes ; then + WARN_CFLAGS="-w" +@@ -4388,7 +4956,8 @@ if test "${enable_build_warnings+set}" = + WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";; + *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;; + esac +-fi; ++fi ++ + + if test x"$silent" != x"yes" && test x"$WARN_CFLAGS" != x""; then + echo "Setting warning flags = $WARN_CFLAGS" 6>&1 +@@ -4398,7 +4967,7 @@ fi + + + +- ac_config_headers="$ac_config_headers config.h:config.in" ++ac_config_headers="$ac_config_headers config.h:config.in" + + + if test -z "$target" ; then +@@ -4407,17 +4976,17 @@ echo "$as_me: error: Unrecognized target + { (exit 1); exit 1; }; } + fi + +-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 +- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. ++{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 ++echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; } ++ # Check whether --enable-maintainer-mode was given. + if test "${enable_maintainer_mode+set}" = set; then +- enableval="$enable_maintainer_mode" +- USE_MAINTAINER_MODE=$enableval ++ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval + else + USE_MAINTAINER_MODE=no +-fi; +- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 ++fi ++ ++ { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 ++echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; } + + + if test $USE_MAINTAINER_MODE = yes; then +@@ -4446,21 +5015,21 @@ esac + *) target_noncanonical=${target_alias} ;; + esac + +-echo "$as_me:$LINENO: checking whether to install libbfd" >&5 +-echo $ECHO_N "checking whether to install libbfd... $ECHO_C" >&6 +- # Check whether --enable-install-libbfd or --disable-install-libbfd was given. ++{ echo "$as_me:$LINENO: checking whether to install libbfd" >&5 ++echo $ECHO_N "checking whether to install libbfd... $ECHO_C" >&6; } ++ # Check whether --enable-install-libbfd was given. + if test "${enable_install_libbfd+set}" = set; then +- enableval="$enable_install_libbfd" +- install_libbfd_p=$enableval ++ enableval=$enable_install_libbfd; install_libbfd_p=$enableval + else + if test "${host}" = "${target}" || test "$enable_shared" = "yes"; then + install_libbfd_p=yes + else + install_libbfd_p=no + fi +-fi; +- echo "$as_me:$LINENO: result: $install_libbfd_p" >&5 +-echo "${ECHO_T}$install_libbfd_p" >&6 ++fi ++ ++ { echo "$as_me:$LINENO: result: $install_libbfd_p" >&5 ++echo "${ECHO_T}$install_libbfd_p" >&6; } + + + if test $install_libbfd_p = yes; then +@@ -4499,8 +5068,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4513,32 +5082,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}gcc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4551,36 +5122,51 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="gcc" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + else + CC="$ac_cv_prog_CC" + fi + + if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4593,74 +5179,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="${ac_tool_prefix}cc" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi + ++ fi + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4674,7 +5220,7 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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 +@@ -4685,6 +5231,7 @@ do + 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. +@@ -4702,22 +5249,23 @@ fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4730,36 +5278,38 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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="$ac_tool_prefix$ac_prog" + 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 +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CC" && break + done + fi + if test -z "$CC"; then + ac_ct_CC=$CC +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4772,29 +5322,45 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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_CC="$ac_prog" + 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_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CC" && break + done + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + fi + + fi +@@ -4807,27 +5373,41 @@ See \`config.log' for more details." >&2 + { (exit 1); exit 1; }; } + + # Provide some information about the compiler. +-echo "$as_me:$LINENO:" \ +- "checking for C compiler version" >&5 ++echo "$as_me:$LINENO: checking for C compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } + if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4850,50 +5430,49 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_compiler_gnu=no ++ ac_compiler_gnu=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } + GCC=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CFLAGS=${CFLAGS+set} + ac_save_CFLAGS=$CFLAGS +-CFLAGS="-g" +-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ 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 +@@ -4909,59 +5488,139 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (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 + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_prog_cc_g=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +-echo "${ECHO_T}$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="" ++ 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 "echo \"\$as_me:$LINENO: $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 ++ 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 ++ 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 "echo \"\$as_me:$LINENO: $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 ++ 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 ++ 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 ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++echo "${ECHO_T}$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 +-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_stdc+set}" = set; then ++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_prog_cc_stdc=no ++ ac_cv_prog_cc_c89=no + ac_save_CC=$CC + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -4995,12 +5654,17 @@ static char *f (char * (*g) (char **, in + /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated +- as 'x'. The following induces an error, until -std1 is added to get ++ as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something +- that's true only with -std1. */ ++ that's true only with -std. */ + int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ + int test (int i, double x); + struct s1 {int (*f) (int a);}; + struct s2 {int (*f) (double a);}; +@@ -5015,205 +5679,57 @@ return f (e, argv, 0) != argv[0] || f + return 0; + } + _ACEOF +-# Don't try gcc -ansi; that turns off useful extensions and +-# breaks some systems' header files. +-# AIX -qlanglvl=ansi +-# Ultrix and OSF/1 -std1 +-# HP-UX 10.20 and later -Ae +-# HP-UX older versions -Aa -D_HPUX_SOURCE +-# SVR4 -Xc -D__EXTENSIONS__ +-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" + do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_stdc=$ac_arg +-break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_c89=$ac_arg + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext ++ ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break + done +-rm -f conftest.$ac_ext conftest.$ac_objext ++rm -f conftest.$ac_ext + CC=$ac_save_CC + + fi +- +-case "x$ac_cv_prog_cc_stdc" in +- x|xno) +- echo "$as_me:$LINENO: result: none needed" >&5 +-echo "${ECHO_T}none needed" >&6 ;; ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { echo "$as_me:$LINENO: result: none needed" >&5 ++echo "${ECHO_T}none needed" >&6; } ;; ++ xno) ++ { echo "$as_me:$LINENO: result: unsupported" >&5 ++echo "${ECHO_T}unsupported" >&6; } ;; + *) +- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 +- CC="$CC $ac_cv_prog_cc_stdc" ;; ++ CC="$CC $ac_cv_prog_cc_c89" ++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + esac + +-# Some people use a C++ compiler to compile C. Since we use `exit', +-# in C++ we need to declare it. In case someone uses the same compiler +-# for both compiling C and C++ we need to have the C++ compiler decide +-# the declaration of exit, since it's the most demanding environment. +-cat >conftest.$ac_ext <<_ACEOF +-#ifndef __cplusplus +- choke me +-#endif +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- for ac_declaration in \ +- '' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-#include +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-continue +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h +-fi +- +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -5225,8 +5741,8 @@ ALL_LINGUAS="fr sv tr es da de id pt_BR + 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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5239,32 +5755,34 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + 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 +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}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 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5277,27 +5795,41 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ 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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" + fi + fi + ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB + if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- RANLIB=$ac_ct_RANLIB ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi + else + RANLIB="$ac_cv_prog_RANLIB" + fi +@@ -5307,8 +5839,8 @@ 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 +-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 ++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= +@@ -5342,24 +5874,22 @@ cat >>conftest.$ac_ext <<_ACEOF + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -5368,9 +5898,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -5380,24 +5911,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -5408,6 +5937,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -5425,8 +5955,8 @@ fi + else + ac_cv_prog_CPP=$CPP + fi +-echo "$as_me:$LINENO: result: $CPP" >&5 +-echo "${ECHO_T}$CPP" >&6 ++{ echo "$as_me:$LINENO: result: $CPP" >&5 ++echo "${ECHO_T}$CPP" >&6; } + ac_preproc_ok=false + for ac_c_preproc_warn_flag in '' yes + do +@@ -5449,24 +5979,22 @@ cat >>conftest.$ac_ext <<_ACEOF + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -5475,9 +6003,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -5487,24 +6016,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -5515,6 +6042,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -5537,79 +6065,222 @@ ac_link='$CC -o conftest$ac_exeext $CFLA + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +-echo "$as_me:$LINENO: checking for egrep" >&5 +-echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +-if test "${ac_cv_prog_egrep+set}" = set; then ++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 ++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # Extract the first word of "grep ggrep" to use in msg output ++if test -z "$GREP"; then ++set dummy grep ggrep; ac_prog_name=$2 ++if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if echo a | (grep -E '(a|b)') >/dev/null 2>&1 +- then ac_cv_prog_egrep='grep -E' +- else ac_cv_prog_egrep='egrep' ++ ac_path_GREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in grep ggrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue ++ # Check for GNU ac_path_GREP and select it if it is found. ++ # Check for GNU $ac_path_GREP ++case `"$ac_path_GREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'GREP' >> "conftest.nl" ++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_GREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_GREP="$ac_path_GREP" ++ ac_path_GREP_max=$ac_count + fi +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +-echo "${ECHO_T}$ac_cv_prog_egrep" >&6 +- EGREP=$ac_cv_prog_egrep ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac + + +-echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +-if test "${ac_cv_header_stdc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-#include +-#include +-#include +-#include ++ $ac_path_GREP_found && break 3 ++ done ++done + +-int +-main () +-{ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++GREP="$ac_cv_path_GREP" ++if test -z "$GREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi + +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_header_stdc=yes + else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ ac_cv_path_GREP=$GREP ++fi ++ + +-ac_cv_header_stdc=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 ++echo "${ECHO_T}$ac_cv_path_GREP" >&6; } ++ GREP="$ac_cv_path_GREP" + +-if test $ac_cv_header_stdc = yes; then +- # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF ++ ++{ echo "$as_me:$LINENO: checking for egrep" >&5 ++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 ++ then ac_cv_path_EGREP="$GREP -E" ++ else ++ # Extract the first word of "egrep" to use in msg output ++if test -z "$EGREP"; then ++set dummy egrep; ac_prog_name=$2 ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_EGREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in egrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue ++ # Check for GNU ac_path_EGREP and select it if it is found. ++ # Check for GNU $ac_path_EGREP ++case `"$ac_path_EGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'EGREP' >> "conftest.nl" ++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_EGREP="$ac_path_EGREP" ++ ac_path_EGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_EGREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++EGREP="$ac_cv_path_EGREP" ++if test -z "$EGREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_EGREP=$EGREP ++fi ++ ++ ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 ++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } ++ EGREP="$ac_cv_path_EGREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } ++if test "${ac_cv_header_stdc+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++ ++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 "echo \"\$as_me:$LINENO: $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 ++ 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_header_stdc=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_header_stdc=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++if test $ac_cv_header_stdc = yes; then ++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -5661,6 +6332,7 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include ++#include + #if ((' ' & 0x0FF) == 0x020) + # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') + # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +@@ -5680,18 +6352,27 @@ main () + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) +- exit(2); +- exit (0); ++ return 2; ++ return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -5704,12 +6385,14 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) + ac_cv_header_stdc=no + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +-echo "${ECHO_T}$ac_cv_header_stdc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++echo "${ECHO_T}$ac_cv_header_stdc" >&6; } + if test $ac_cv_header_stdc = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -5718,8 +6401,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 ++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } + if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5737,10 +6420,10 @@ main () + #ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; +- const charset x; ++ const charset cs; + /* SunOS 4.1.1 cc rejects this. */ +- char const *const *ccp; +- char **p; ++ char const *const *pcpcc; ++ char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; +@@ -5749,16 +6432,17 @@ main () + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; +- ccp = &g + (g ? g-g : 0); ++ pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ +- ++ccp; +- p = (char**) ccp; +- ccp = (char const *const *) p; ++ ++pcpcc; ++ ppc = (char**) pcpcc; ++ pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; ++ if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; +@@ -5777,7 +6461,9 @@ main () + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; ++ if (!foo) return 0; + } ++ return !cs[0] && !zero.x; + #endif + + ; +@@ -5785,38 +6471,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_c_const=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_c_const=no ++ ac_cv_c_const=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +-echo "${ECHO_T}$ac_cv_c_const" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 ++echo "${ECHO_T}$ac_cv_c_const" >&6; } + if test $ac_cv_c_const = no; then + + cat >>confdefs.h <<\_ACEOF +@@ -5825,8 +6507,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for inline" >&5 +-echo $ECHO_N "checking for inline... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for inline" >&5 ++echo $ECHO_N "checking for inline... $ECHO_C" >&6; } + if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5846,39 +6528,37 @@ $ac_kw foo_t foo () {return 0; } + + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_c_inline=$ac_kw; break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_inline=$ac_kw + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ test "$ac_cv_c_inline" != no && break + done + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +-echo "${ECHO_T}$ac_cv_c_inline" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 ++echo "${ECHO_T}$ac_cv_c_inline" >&6; } + + + case $ac_cv_c_inline in +@@ -5910,9 +6590,9 @@ for ac_header in sys/types.h sys/stat.h + inttypes.h stdint.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -5926,38 +6606,35 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_Header=no" ++ eval "$as_ac_Header=no" + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +@@ -5968,8 +6645,8 @@ fi + done + + +-echo "$as_me:$LINENO: checking for off_t" >&5 +-echo $ECHO_N "checking for off_t... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for off_t" >&5 ++echo $ECHO_N "checking for off_t... $ECHO_C" >&6; } + if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5980,62 +6657,59 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++typedef off_t ac__type_new_; + int + main () + { +-if ((off_t *) 0) ++if ((ac__type_new_ *) 0) + return 0; +-if (sizeof (off_t)) ++if (sizeof (ac__type_new_)) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_type_off_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_off_t=no ++ ac_cv_type_off_t=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +-echo "${ECHO_T}$ac_cv_type_off_t" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 ++echo "${ECHO_T}$ac_cv_type_off_t" >&6; } + if test $ac_cv_type_off_t = yes; then + : + else + + cat >>confdefs.h <<_ACEOF +-#define off_t long ++#define off_t long int + _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for size_t" >&5 +-echo $ECHO_N "checking for size_t... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for size_t" >&5 ++echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } + if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6046,64 +6720,61 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_includes_default ++typedef size_t ac__type_new_; + int + main () + { +-if ((size_t *) 0) ++if ((ac__type_new_ *) 0) + return 0; +-if (sizeof (size_t)) ++if (sizeof (ac__type_new_)) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_type_size_t=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_type_size_t=no ++ ac_cv_type_size_t=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +-echo "${ECHO_T}$ac_cv_type_size_t" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 ++echo "${ECHO_T}$ac_cv_type_size_t" >&6; } + if test $ac_cv_type_size_t = yes; then + : + else + + cat >>confdefs.h <<_ACEOF +-#define size_t unsigned ++#define size_t unsigned int + _ACEOF + + fi + + # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works + # for constant arguments. Useless! +-echo "$as_me:$LINENO: checking for working alloca.h" >&5 +-echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for working alloca.h" >&5 ++echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; } + if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6118,44 +6789,42 @@ int + main () + { + char *p = (char *) alloca (2 * sizeof (int)); ++ if (p) return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_working_alloca_h=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_working_alloca_h=no ++ ac_cv_working_alloca_h=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +-echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 ++echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; } + if test $ac_cv_working_alloca_h = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -6164,8 +6833,8 @@ _ACEOF + + fi + +-echo "$as_me:$LINENO: checking for alloca" >&5 +-echo $ECHO_N "checking for alloca... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for alloca" >&5 ++echo $ECHO_N "checking for alloca... $ECHO_C" >&6; } + if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6182,7 +6851,7 @@ cat >>conftest.$ac_ext <<_ACEOF + # include + # define alloca _alloca + # else +-# if HAVE_ALLOCA_H ++# ifdef HAVE_ALLOCA_H + # include + # else + # ifdef _AIX +@@ -6200,44 +6869,42 @@ int + main () + { + char *p = (char *) alloca (1); ++ if (p) return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_func_alloca_works=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_alloca_works=no ++ ac_cv_func_alloca_works=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +-echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 ++echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; } + + if test $ac_cv_func_alloca_works = yes; then + +@@ -6251,15 +6918,15 @@ else + # contain a buggy version. If you still want to use their alloca, + # use ar to extract alloca.o from them instead of compiling alloca.c. + +-ALLOCA=alloca.$ac_objext ++ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + + cat >>confdefs.h <<\_ACEOF + #define C_ALLOCA 1 + _ACEOF + + +-echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +-echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 ++echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; } + if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6269,7 +6936,7 @@ _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#if defined(CRAY) && ! defined(CRAY2) ++#if defined CRAY && ! defined CRAY2 + webecray + #else + wenotbecray +@@ -6285,14 +6952,14 @@ fi + rm -f conftest* + + fi +-echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +-echo "${ECHO_T}$ac_cv_os_cray" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 ++echo "${ECHO_T}$ac_cv_os_cray" >&6; } + if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -6318,68 +6985,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -6392,8 +7051,8 @@ fi + done + fi + +-echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +-echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 ++echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; } + if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6406,6 +7065,7 @@ _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ ++$ac_includes_default + int + find_stack_direction () + { +@@ -6423,17 +7083,26 @@ find_stack_direction () + int + main () + { +- exit (find_stack_direction () < 0); ++ return find_stack_direction () < 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -6446,11 +7115,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) + ac_cv_c_stack_direction=-1 + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +-echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 ++echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; } + + cat >>confdefs.h <<_ACEOF + #define STACK_DIRECTION $ac_cv_c_stack_direction +@@ -6464,18 +7135,19 @@ fi + for ac_header in stdlib.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -6486,41 +7158,37 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -6529,24 +7197,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -6554,9 +7220,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -6580,25 +7247,19 @@ echo "$as_me: WARNING: $ac_header: s + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -6614,9 +7275,9 @@ done + for ac_func in getpagesize + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -6642,68 +7303,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -6712,8 +7365,8 @@ _ACEOF + fi + done + +-echo "$as_me:$LINENO: checking for working mmap" >&5 +-echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for working mmap" >&5 ++echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; } + if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6755,21 +7408,21 @@ $ac_includes_default + #include + #include + +-#if !STDC_HEADERS && !HAVE_STDLIB_H ++#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H + char *malloc (); + #endif + + /* This mess was copied from the GNU getpagesize.h. */ +-#if !HAVE_GETPAGESIZE ++#ifndef HAVE_GETPAGESIZE + /* Assume that all systems that can run configure have sys/param.h. */ +-# if !HAVE_SYS_PARAM_H ++# ifndef HAVE_SYS_PARAM_H + # define HAVE_SYS_PARAM_H 1 + # endif + + # ifdef _SC_PAGESIZE + # define getpagesize() sysconf(_SC_PAGESIZE) + # else /* no _SC_PAGESIZE */ +-# if HAVE_SYS_PARAM_H ++# ifdef HAVE_SYS_PARAM_H + # include + # ifdef EXEC_PAGESIZE + # define getpagesize() EXEC_PAGESIZE +@@ -6808,15 +7461,15 @@ main () + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) +- exit (1); ++ return 1; + if (write (fd, data, pagesize) != pagesize) +- exit (1); ++ return 1; + close (fd); + + /* Next, try to mmap the file at a fixed address which already has +@@ -6824,17 +7477,17 @@ main () + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) +- exit (1); ++ return 1; + data2 = (char *) malloc (2 * pagesize); + if (!data2) +- exit (1); +- data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); ++ return 1; ++ data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) +- exit (1); ++ return 1; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on +@@ -6843,24 +7496,33 @@ main () + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) +- exit (1); ++ return 1; + if (read (fd, data3, pagesize) != pagesize) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) +- exit (1); ++ return 1; + close (fd); +- exit (0); ++ return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -6873,11 +7535,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 + ( exit $ac_status ) + ac_cv_func_mmap_fixed_mapped=no + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +-echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 ++echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; } + if test $ac_cv_func_mmap_fixed_mapped = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -6901,18 +7565,19 @@ for ac_header in argz.h limits.h locale. + unistd.h values.h sys/param.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -6923,41 +7588,37 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -6966,24 +7627,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -6991,9 +7650,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -7017,25 +7677,19 @@ echo "$as_me: WARNING: $ac_header: s + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -7061,9 +7715,9 @@ for ac_func in getcwd munmap putenv sete + __argz_count __argz_stringify __argz_next + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -7089,68 +7743,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -7165,9 +7811,9 @@ done + for ac_func in stpcpy + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -7193,68 +7839,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -7273,8 +7911,8 @@ _ACEOF + fi + + if test $ac_cv_header_locale_h = yes; then +- echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +-echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 ++echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6; } + if test "${am_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7294,39 +7932,36 @@ return LC_MESSAGES + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + am_cv_val_LC_MESSAGES=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-am_cv_val_LC_MESSAGES=no ++ am_cv_val_LC_MESSAGES=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +-echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 ++{ echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 ++echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6; } + if test $am_cv_val_LC_MESSAGES = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -7335,34 +7970,34 @@ _ACEOF + + fi + fi +- echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 +- # Check whether --enable-nls or --disable-nls was given. ++ { echo "$as_me:$LINENO: checking whether NLS is requested" >&5 ++echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; } ++ # Check whether --enable-nls was given. + if test "${enable_nls+set}" = set; then +- enableval="$enable_nls" +- USE_NLS=$enableval ++ enableval=$enable_nls; USE_NLS=$enableval + else + USE_NLS=yes +-fi; +- echo "$as_me:$LINENO: result: $USE_NLS" >&5 +-echo "${ECHO_T}$USE_NLS" >&6 ++fi ++ ++ { echo "$as_me:$LINENO: result: $USE_NLS" >&5 ++echo "${ECHO_T}$USE_NLS" >&6; } + + + USE_INCLUDED_LIBINTL=no + + if test "$USE_NLS" = "yes"; then +- echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 +-echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 ++echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6; } + +-# Check whether --with-included-gettext or --without-included-gettext was given. ++# Check whether --with-included-gettext was given. + if test "${with_included_gettext+set}" = set; then +- withval="$with_included_gettext" +- nls_cv_force_use_gnu_gettext=$withval ++ withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval + else + nls_cv_force_use_gnu_gettext=no +-fi; +- echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 +-echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 ++fi ++ ++ { echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 ++echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6; } + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then +@@ -7371,17 +8006,17 @@ echo "${ECHO_T}$nls_cv_force_use_gnu_get + CATOBJEXT= + + if test "${ac_cv_header_libintl_h+set}" = set; then +- echo "$as_me:$LINENO: checking for libintl.h" >&5 +-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for libintl.h" >&5 ++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; } + if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 ++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking libintl.h usability" >&5 +-echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking libintl.h usability" >&5 ++echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -7392,41 +8027,37 @@ $ac_includes_default + #include + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking libintl.h presence" >&5 +-echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking libintl.h presence" >&5 ++echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -7435,24 +8066,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -7460,9 +8089,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -7486,30 +8116,23 @@ echo "$as_me: WARNING: libintl.h: se + echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for libintl.h" >&5 +-echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for libintl.h" >&5 ++echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; } + if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_cv_header_libintl_h=$ac_header_preproc + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +-echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 ++echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; } + + fi + if test $ac_cv_header_libintl_h = yes; then +- echo "$as_me:$LINENO: checking for gettext in libc" >&5 +-echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for gettext in libc" >&5 ++echo $ECHO_N "checking for gettext in libc... $ECHO_C" >&6; } + if test "${gt_cv_func_gettext_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7529,43 +8152,40 @@ return (int) gettext ("") + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + gt_cv_func_gettext_libc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-gt_cv_func_gettext_libc=no ++ gt_cv_func_gettext_libc=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5 +-echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6 ++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libc" >&5 ++echo "${ECHO_T}$gt_cv_func_gettext_libc" >&6; } + + if test "$gt_cv_func_gettext_libc" != "yes"; then +- echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5 +-echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5 ++echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6; } + if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7578,59 +8198,56 @@ cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char bindtextdomain (); + int + main () + { +-bindtextdomain (); ++return bindtextdomain (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_intl_bindtextdomain=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_intl_bindtextdomain=no ++ ac_cv_lib_intl_bindtextdomain=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5 +-echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5 ++echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6; } + if test $ac_cv_lib_intl_bindtextdomain = yes; then +- echo "$as_me:$LINENO: checking for gettext in libintl" >&5 +-echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for gettext in libintl" >&5 ++echo $ECHO_N "checking for gettext in libintl... $ECHO_C" >&6; } + if test "${gt_cv_func_gettext_libintl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7650,39 +8267,36 @@ return (int) gettext ("") + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + gt_cv_func_gettext_libintl=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-gt_cv_func_gettext_libintl=no ++ gt_cv_func_gettext_libintl=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5 +-echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6 ++{ echo "$as_me:$LINENO: result: $gt_cv_func_gettext_libintl" >&5 ++echo "${ECHO_T}$gt_cv_func_gettext_libintl" >&6; } + fi + + fi +@@ -7696,8 +8310,8 @@ _ACEOF + + # Extract the first word of "msgfmt", so it can be a program name with args. + set dummy msgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7723,20 +8337,20 @@ esac + fi + MSGFMT="$ac_cv_path_MSGFMT" + if test -n "$MSGFMT"; then +- echo "$as_me:$LINENO: result: $MSGFMT" >&5 +-echo "${ECHO_T}$MSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5 ++echo "${ECHO_T}$MSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + if test "$MSGFMT" != "no"; then + + for ac_func in dcgettext + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -7762,68 +8376,60 @@ cat >>conftest.$ac_ext <<_ACEOF + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -7834,8 +8440,8 @@ done + + # Extract the first word of "gmsgfmt", so it can be a program name with args. + set dummy gmsgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7850,32 +8456,33 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; + esac + fi + GMSGFMT=$ac_cv_path_GMSGFMT +- + if test -n "$GMSGFMT"; then +- echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +-echo "${ECHO_T}$GMSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5 ++echo "${ECHO_T}$GMSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + # Extract the first word of "xgettext", so it can be a program name with args. + set dummy xgettext; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7901,11 +8508,11 @@ esac + fi + XGETTEXT="$ac_cv_path_XGETTEXT" + if test -n "$XGETTEXT"; then +- echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +-echo "${ECHO_T}$XGETTEXT" >&6 ++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5 ++echo "${ECHO_T}$XGETTEXT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + cat >conftest.$ac_ext <<_ACEOF +@@ -7925,37 +8532,34 @@ extern int _nl_msg_cat_cntr; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + CATOBJEXT=.gmo + DATADIRNAME=share + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-CATOBJEXT=.mo ++ CATOBJEXT=.mo + DATADIRNAME=lib + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + INSTOBJEXT=.mo + fi +@@ -7977,8 +8581,8 @@ fi + INTLOBJS="\$(GETTOBJS)" + # Extract the first word of "msgfmt", so it can be a program name with args. + set dummy msgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8004,17 +8608,17 @@ esac + fi + MSGFMT="$ac_cv_path_MSGFMT" + if test -n "$MSGFMT"; then +- echo "$as_me:$LINENO: result: $MSGFMT" >&5 +-echo "${ECHO_T}$MSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5 ++echo "${ECHO_T}$MSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. + set dummy gmsgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8029,32 +8633,33 @@ do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; + esac + fi + GMSGFMT=$ac_cv_path_GMSGFMT +- + if test -n "$GMSGFMT"; then +- echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +-echo "${ECHO_T}$GMSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5 ++echo "${ECHO_T}$GMSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + # Extract the first word of "xgettext", so it can be a program name with args. + set dummy xgettext; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8080,11 +8685,11 @@ esac + fi + XGETTEXT="$ac_cv_path_XGETTEXT" + if test -n "$XGETTEXT"; then +- echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +-echo "${ECHO_T}$XGETTEXT" >&6 ++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5 ++echo "${ECHO_T}$XGETTEXT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + +@@ -8103,8 +8708,8 @@ fi + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else +- echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5 +-echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6 ++ { echo "$as_me:$LINENO: result: found xgettext programs is not GNU xgettext; ignore it" >&5 ++echo "${ECHO_T}found xgettext programs is not GNU xgettext; ignore it" >&6; } + XGETTEXT=":" + fi + fi +@@ -8153,8 +8758,8 @@ _ACEOF + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else +- echo "$as_me:$LINENO: checking for catalogs to be installed" >&5 +-echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for catalogs to be installed" >&5 ++echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6; } + NEW_LINGUAS= + for lang in ${LINGUAS=$ALL_LINGUAS}; do + case "$ALL_LINGUAS" in +@@ -8162,8 +8767,8 @@ echo $ECHO_N "checking for catalogs to b + esac + done + LINGUAS=$NEW_LINGUAS +- echo "$as_me:$LINENO: result: $LINGUAS" >&5 +-echo "${ECHO_T}$LINGUAS" >&6 ++ { echo "$as_me:$LINENO: result: $LINGUAS" >&5 ++echo "${ECHO_T}$LINGUAS" >&6; } + fi + + if test -n "$LINGUAS"; then +@@ -8182,17 +8787,17 @@ echo "${ECHO_T}$LINGUAS" >&6 + if test -f $srcdir/po2tbl.sed.in; then + if test "$CATOBJEXT" = ".cat"; then + if test "${ac_cv_header_linux_version_h+set}" = set; then +- echo "$as_me:$LINENO: checking for linux/version.h" >&5 +-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for linux/version.h" >&5 ++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; } + if test "${ac_cv_header_linux_version_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 +-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking linux/version.h usability" >&5 +-echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking linux/version.h usability" >&5 ++echo $ECHO_N "checking linux/version.h usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8203,41 +8808,37 @@ $ac_includes_default + #include + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking linux/version.h presence" >&5 +-echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking linux/version.h presence" >&5 ++echo $ECHO_N "checking linux/version.h presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8246,24 +8847,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -8271,9 +8870,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -8297,25 +8897,18 @@ echo "$as_me: WARNING: linux/version.h: + echo "$as_me: WARNING: linux/version.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: linux/version.h: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: linux/version.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for linux/version.h" >&5 +-echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for linux/version.h" >&5 ++echo $ECHO_N "checking for linux/version.h... $ECHO_C" >&6; } + if test "${ac_cv_header_linux_version_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_cv_header_linux_version_h=$ac_header_preproc + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 +-echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_version_h" >&5 ++echo "${ECHO_T}$ac_cv_header_linux_version_h" >&6; } + + fi + if test $ac_cv_header_linux_version_h = yes; then +@@ -8380,8 +8973,8 @@ fi + if test "x$cross_compiling" = "xno"; then + EXEEXT_FOR_BUILD='$(EXEEXT)' + else +- echo "$as_me:$LINENO: checking for build system executable suffix" >&5 +-echo $ECHO_N "checking for build system executable suffix... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for build system executable suffix" >&5 ++echo $ECHO_N "checking for build system executable suffix... $ECHO_C" >&6; } + if test "${bfd_cv_build_exeext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8398,8 +8991,8 @@ else + rm -f conftest* + test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no + fi +-echo "$as_me:$LINENO: result: $bfd_cv_build_exeext" >&5 +-echo "${ECHO_T}$bfd_cv_build_exeext" >&6 ++{ echo "$as_me:$LINENO: result: $bfd_cv_build_exeext" >&5 ++echo "${ECHO_T}$bfd_cv_build_exeext" >&6; } + EXEEXT_FOR_BUILD="" + test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext} + fi +@@ -8419,8 +9012,8 @@ fi + # 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. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } + if test -z "$INSTALL"; then + if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -8442,7 +9035,7 @@ case $as_dir/ in + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ++ 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. +@@ -8461,21 +9054,22 @@ case $as_dir/ in + ;; + esac + done ++IFS=$as_save_IFS + + + 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. We don't cache a +- # path for INSTALL within a source directory, because that will ++ # 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 path is relative. ++ # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi + fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -8492,18 +9086,19 @@ test -z "$INSTALL_DATA" && INSTALL_DATA= + for ac_header in string.h strings.h stdlib.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8514,41 +9109,37 @@ $ac_includes_default + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -8557,24 +9148,22 @@ cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -8582,9 +9171,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -8608,25 +9198,19 @@ echo "$as_me: WARNING: $ac_header: s + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -8639,8 +9223,8 @@ fi + done + + +-echo "$as_me:$LINENO: checking whether basename is declared" >&5 +-echo $ECHO_N "checking whether basename is declared... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether basename is declared" >&5 ++echo $ECHO_N "checking whether basename is declared... $ECHO_C" >&6; } + if test "${ac_cv_have_decl_basename+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8655,7 +9239,7 @@ int + main () + { + #ifndef basename +- char *p = (char *) basename; ++ (void) basename; + #endif + + ; +@@ -8663,38 +9247,34 @@ main () + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $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 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_have_decl_basename=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_have_decl_basename=no ++ ac_cv_have_decl_basename=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_have_decl_basename" >&5 +-echo "${ECHO_T}$ac_cv_have_decl_basename" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_basename" >&5 ++echo "${ECHO_T}$ac_cv_have_decl_basename" >&6; } + if test $ac_cv_have_decl_basename = yes; then + + cat >>confdefs.h <<_ACEOF +@@ -8715,10 +9295,9 @@ fi + cgen_maint=no + cgendir='$(srcdir)/../cgen' + +-# Check whether --enable-cgen-maint or --disable-cgen-maint was given. ++# Check whether --enable-cgen-maint was given. + if test "${enable_cgen_maint+set}" = set; then +- enableval="$enable_cgen_maint" +- case "${enableval}" in ++ enableval=$enable_cgen_maint; case "${enableval}" in + yes) cgen_maint=yes ;; + no) cgen_maint=no ;; + *) +@@ -8729,7 +9308,8 @@ if test "${enable_cgen_maint+set}" = set + cgendir=${cgen_maint}/lib/cgen + ;; + esac +-fi; ++fi ++ + + if test x${cgen_maint} = xyes; then + CGEN_MAINT_TRUE= +@@ -8805,6 +9385,7 @@ if test x${all_targets} = xfalse ; then + bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;; + bfd_arm_arch) ta="$ta arm-dis.lo" ;; + bfd_avr_arch) ta="$ta avr-dis.lo" ;; ++ bfd_avr32_arch) ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;; + bfd_bfin_arch) ta="$ta bfin-dis.lo" ;; + bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;; + bfd_crx_arch) ta="$ta crx-dis.lo crx-opc.lo" ;; +@@ -8922,9 +9503,9 @@ fi + + + +- ac_config_files="$ac_config_files Makefile po/Makefile.in:po/Make-in" ++ac_config_files="$ac_config_files Makefile po/Makefile.in:po/Make-in" + +- ac_config_commands="$ac_config_commands default" ++ac_config_commands="$ac_config_commands default" + + cat >confcache <<\_ACEOF + # This file is a shell script that caches the results of configure +@@ -8944,39 +9525,58 @@ _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, don't put newlines in cache variables' values. ++# 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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ + (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ 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 \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} | ++ esac | ++ sort ++) | + sed ' ++ /^ac_cv_env_/b end + t clear +- : clear ++ :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end +- /^ac_cv_env/!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" && echo "updating cache $cache_file" ++ 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" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else +- echo "not updating unwritable cache $cache_file" ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi + fi + rm -f confcache +@@ -8985,32 +9585,18 @@ test "x$prefix" = xNONE && prefix=$ac_de + # Let make expand exec_prefix. + test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +-# 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 +- + DEFS=-DHAVE_CONFIG_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_i=`echo "$ac_i" | +- sed 's/\$U\././;s/\.o$//;s/\.obj$//'` +- # 2. Add them. +- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" +- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' ++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ++ ac_i=`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 + +@@ -9076,17 +9662,45 @@ cat >>$CONFIG_STATUS <<\_ACEOF + ## M4sh Initialization. ## + ## --------------------- ## + +-# Be Bourne compatible ++# 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=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix ++ 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 ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh + fi +-DUALCASE=1; export DUALCASE # for MKS sh + + # Support unset when possible. + if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +@@ -9096,8 +9710,43 @@ else + 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.) ++as_nl=' ++' ++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 ++ 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. +-$as_unset ENV MAIL MAILPATH ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done + PS1='$ ' + PS2='> ' + PS4='+ ' +@@ -9111,18 +9760,19 @@ do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else +- $as_unset $as_var ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi + done + + # Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then ++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 ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename + else + as_basename=false +@@ -9130,159 +9780,120 @@ fi + + + # Name of the executable. +-as_me=`$as_basename "$0" || ++as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + ++# CDPATH. ++$as_unset CDPATH + +-# PATH needs CR, and LINENO needs CR and PATH. +-# 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 +- +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh +-fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- 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 +- +- ;; +- 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 +- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') +- 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=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in +- /*) +- if ("$as_dir/$as_base" -c ' +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac ++ 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 before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. ++ # 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 +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | ++ # 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 +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, ++ s/-\n.*// + ' >$as_me.lineno && +- chmod +x $as_me.lineno || +- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} ++ chmod +x "$as_me.lineno" || ++ { 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 sensible to this). +- . ./$as_me.lineno ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" + # Exit status is that of the last command. + exit + } + + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; ++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; then ++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 ++fi + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links ++ 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' +- else +- as_ln_s='ln -s' +- fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +-rm -f conf$$ conf$$.exe conf$$.file ++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=: +@@ -9291,7 +9902,28 @@ else + as_mkdir_p=false + fi + +-as_executable_p="test -f" ++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'" +@@ -9300,31 +9932,14 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P + as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH +- + exec 6>&1 + +-# Open the log real soon, to keep \$[0] and so on meaningful, and to ++# 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. Logging --version etc. is OK. +-exec 5>>config.log +-{ +- echo +- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +-## Running $as_me. ## +-_ASBOX +-} >&5 +-cat >&5 <<_CSEOF +- ++# values after options handling. ++ac_log=" + This file was extended by $as_me, which was +-generated by GNU Autoconf 2.59. Invocation command line was ++generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS +@@ -9332,30 +9947,20 @@ generated by GNU Autoconf 2.59. Invocat + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +-_CSEOF +-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +-echo >&5 ++on `(hostname || uname -n) 2>/dev/null | sed 1q` ++" ++ + _ACEOF + ++cat >>$CONFIG_STATUS <<_ACEOF + # Files that config.status was made for. +-if test -n "$ac_config_files"; then +- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_headers"; then +- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_links"; then +- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +-fi ++config_files="$ac_config_files" ++config_headers="$ac_config_headers" ++config_commands="$ac_config_commands" + +-if test -n "$ac_config_commands"; then +- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +-fi ++_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF +- + ac_cs_usage="\ + \`$as_me' instantiates files from templates according to the + current configuration. +@@ -9363,7 +9968,7 @@ current configuration. + Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit +- -V, --version print version number, then exit ++ -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions +@@ -9382,19 +9987,21 @@ Configuration commands: + $config_commands + + Report bugs to ." +-_ACEOF + ++_ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + ac_cs_version="\\ + config.status +-configured by $0, generated by GNU Autoconf 2.59, +- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ++configured by $0, generated by GNU Autoconf 2.61, ++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +-Copyright (C) 2003 Free Software Foundation, Inc. ++Copyright (C) 2006 Free Software Foundation, Inc. + This config.status script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it." +-srcdir=$srcdir +-INSTALL="$INSTALL" ++ ++ac_pwd='$ac_pwd' ++srcdir='$srcdir' ++INSTALL='$INSTALL' + _ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF +@@ -9405,39 +10012,24 @@ while test $# != 0 + do + case $1 in + --*=*) +- ac_option=`expr "x$1" : 'x\([^=]*\)='` +- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; +- -*) ++ *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; +- *) # This is not an option, so the user has probably given explicit +- # arguments. +- ac_option=$1 +- ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; +- --version | --vers* | -V ) +- echo "$ac_cs_version"; exit 0 ;; +- --he | --h) +- # Conflict between --help and --header +- { { echo "$as_me:$LINENO: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; };; +- --help | --hel | -h ) +- echo "$ac_cs_usage"; exit 0 ;; +- --debug | --d* | -d ) ++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) ++ echo "$ac_cs_version"; exit ;; ++ --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift +@@ -9447,18 +10039,24 @@ Try \`$0 --help' for more information." + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; ++ --he | --h) ++ # Conflict between --help and --header ++ { echo "$as_me: error: ambiguous option: $1 ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; };; ++ --help | --hel | -h ) ++ 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. +- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&2;} ++ -*) { 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_config_targets="$ac_config_targets $1" ++ ac_need_defaults=false ;; + + esac + shift +@@ -9474,40 +10072,52 @@ fi + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + if \$ac_cs_recheck; then +- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 +- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 ++ CONFIG_SHELL=$SHELL ++ export CONFIG_SHELL ++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + fi + + _ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF ++exec 5>>config.log ++{ ++ echo ++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ++## Running $as_me. ## ++_ASBOX ++ echo "$ac_log" ++} >&5 + ++_ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + # +-# INIT-COMMANDS section. ++# INIT-COMMANDS + # +- + AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + + _ACEOF + +- +- + cat >>$CONFIG_STATUS <<\_ACEOF ++ ++# Handling of arguments. + for ac_config_target in $ac_config_targets + do +- case "$ac_config_target" in +- # Handling of arguments. +- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; +- "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;; +- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; +- "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; +- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;; ++ case $ac_config_target in ++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; ++ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;; ++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; ++ "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;; ++ "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; ++ + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 + 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 +@@ -9519,635 +10129,623 @@ if $ac_need_defaults; then + fi + + # Have a temporary directory for convenience. Make it in the build tree +-# simply because there is no reason to put it here, and in addition, ++# simply because there is no reason against having it here, and in addition, + # creating and moving files from /tmp can sometimes cause problems. +-# Create a temporary directory, and hook for its removal unless debugging. ++# 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 || + { +- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 ++ 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 -q "./confstatXXXXXX") 2>/dev/null` && ++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" + } || + { +- tmp=./confstat$$-$RANDOM +- (umask 077 && mkdir $tmp) ++ tmp=./conf$$-$RANDOM ++ (umask 077 && mkdir "$tmp") + } || + { + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } + } + +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +- + # +-# CONFIG_FILES section. ++# Set up the sed scripts for CONFIG_FILES section. + # + + # No need to generate the scripts if there are no CONFIG_FILES. + # This happens for instance when ./config.status config.h +-if test -n "\$CONFIG_FILES"; then +- # Protect against being on the right side of a sed subst in config.status. +- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; +- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +-s,@SHELL@,$SHELL,;t t +-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +-s,@exec_prefix@,$exec_prefix,;t t +-s,@prefix@,$prefix,;t t +-s,@program_transform_name@,$program_transform_name,;t t +-s,@bindir@,$bindir,;t t +-s,@sbindir@,$sbindir,;t t +-s,@libexecdir@,$libexecdir,;t t +-s,@datadir@,$datadir,;t t +-s,@sysconfdir@,$sysconfdir,;t t +-s,@sharedstatedir@,$sharedstatedir,;t t +-s,@localstatedir@,$localstatedir,;t t +-s,@libdir@,$libdir,;t t +-s,@includedir@,$includedir,;t t +-s,@oldincludedir@,$oldincludedir,;t t +-s,@infodir@,$infodir,;t t +-s,@mandir@,$mandir,;t t +-s,@build_alias@,$build_alias,;t t +-s,@host_alias@,$host_alias,;t t +-s,@target_alias@,$target_alias,;t t +-s,@DEFS@,$DEFS,;t t +-s,@ECHO_C@,$ECHO_C,;t t +-s,@ECHO_N@,$ECHO_N,;t t +-s,@ECHO_T@,$ECHO_T,;t t +-s,@LIBS@,$LIBS,;t t +-s,@build@,$build,;t t +-s,@build_cpu@,$build_cpu,;t t +-s,@build_vendor@,$build_vendor,;t t +-s,@build_os@,$build_os,;t t +-s,@host@,$host,;t t +-s,@host_cpu@,$host_cpu,;t t +-s,@host_vendor@,$host_vendor,;t t +-s,@host_os@,$host_os,;t t +-s,@target@,$target,;t t +-s,@target_cpu@,$target_cpu,;t t +-s,@target_vendor@,$target_vendor,;t t +-s,@target_os@,$target_os,;t t +-s,@CC@,$CC,;t t +-s,@CFLAGS@,$CFLAGS,;t t +-s,@LDFLAGS@,$LDFLAGS,;t t +-s,@CPPFLAGS@,$CPPFLAGS,;t t +-s,@ac_ct_CC@,$ac_ct_CC,;t t +-s,@EXEEXT@,$EXEEXT,;t t +-s,@OBJEXT@,$OBJEXT,;t t +-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +-s,@INSTALL_DATA@,$INSTALL_DATA,;t t +-s,@CYGPATH_W@,$CYGPATH_W,;t t +-s,@PACKAGE@,$PACKAGE,;t t +-s,@VERSION@,$VERSION,;t t +-s,@ACLOCAL@,$ACLOCAL,;t t +-s,@AUTOCONF@,$AUTOCONF,;t t +-s,@AUTOMAKE@,$AUTOMAKE,;t t +-s,@AUTOHEADER@,$AUTOHEADER,;t t +-s,@MAKEINFO@,$MAKEINFO,;t t +-s,@install_sh@,$install_sh,;t t +-s,@STRIP@,$STRIP,;t t +-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +-s,@mkdir_p@,$mkdir_p,;t t +-s,@AWK@,$AWK,;t t +-s,@SET_MAKE@,$SET_MAKE,;t t +-s,@am__leading_dot@,$am__leading_dot,;t t +-s,@AMTAR@,$AMTAR,;t t +-s,@am__tar@,$am__tar,;t t +-s,@am__untar@,$am__untar,;t t +-s,@DEPDIR@,$DEPDIR,;t t +-s,@am__include@,$am__include,;t t +-s,@am__quote@,$am__quote,;t t +-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +-s,@CCDEPMODE@,$CCDEPMODE,;t t +-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +-s,@AR@,$AR,;t t +-s,@ac_ct_AR@,$ac_ct_AR,;t t +-s,@RANLIB@,$RANLIB,;t t +-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +-s,@LN_S@,$LN_S,;t t +-s,@LIBTOOL@,$LIBTOOL,;t t +-s,@WARN_CFLAGS@,$WARN_CFLAGS,;t t +-s,@NO_WERROR@,$NO_WERROR,;t t +-s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +-s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +-s,@MAINT@,$MAINT,;t t +-s,@INSTALL_LIBBFD_TRUE@,$INSTALL_LIBBFD_TRUE,;t t +-s,@INSTALL_LIBBFD_FALSE@,$INSTALL_LIBBFD_FALSE,;t t +-s,@host_noncanonical@,$host_noncanonical,;t t +-s,@target_noncanonical@,$target_noncanonical,;t t +-s,@bfdlibdir@,$bfdlibdir,;t t +-s,@bfdincludedir@,$bfdincludedir,;t t +-s,@CPP@,$CPP,;t t +-s,@EGREP@,$EGREP,;t t +-s,@ALLOCA@,$ALLOCA,;t t +-s,@USE_NLS@,$USE_NLS,;t t +-s,@MSGFMT@,$MSGFMT,;t t +-s,@GMSGFMT@,$GMSGFMT,;t t +-s,@XGETTEXT@,$XGETTEXT,;t t +-s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t +-s,@CATALOGS@,$CATALOGS,;t t +-s,@CATOBJEXT@,$CATOBJEXT,;t t +-s,@DATADIRNAME@,$DATADIRNAME,;t t +-s,@GMOFILES@,$GMOFILES,;t t +-s,@INSTOBJEXT@,$INSTOBJEXT,;t t +-s,@INTLDEPS@,$INTLDEPS,;t t +-s,@INTLLIBS@,$INTLLIBS,;t t +-s,@INTLOBJS@,$INTLOBJS,;t t +-s,@POFILES@,$POFILES,;t t +-s,@POSUB@,$POSUB,;t t +-s,@INCLUDE_LOCALE_H@,$INCLUDE_LOCALE_H,;t t +-s,@GT_NO@,$GT_NO,;t t +-s,@GT_YES@,$GT_YES,;t t +-s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +-s,@l@,$l,;t t +-s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t +-s,@EXEEXT_FOR_BUILD@,$EXEEXT_FOR_BUILD,;t t +-s,@HDEFINES@,$HDEFINES,;t t +-s,@CGEN_MAINT_TRUE@,$CGEN_MAINT_TRUE,;t t +-s,@CGEN_MAINT_FALSE@,$CGEN_MAINT_FALSE,;t t +-s,@cgendir@,$cgendir,;t t +-s,@WIN32LDFLAGS@,$WIN32LDFLAGS,;t t +-s,@WIN32LIBADD@,$WIN32LIBADD,;t t +-s,@archdefs@,$archdefs,;t t +-s,@BFD_MACHINES@,$BFD_MACHINES,;t t +-s,@LIBOBJS@,$LIBOBJS,;t t +-s,@LTLIBOBJS@,$LTLIBOBJS,;t t +-CEOF +- +-_ACEOF +- +- cat >>$CONFIG_STATUS <<\_ACEOF +- # Split the substitutions into bite-sized pieces for seds with +- # small command number limits, like on Digital OSF/1 and HP-UX. +- ac_max_sed_lines=48 +- ac_sed_frag=1 # Number of current file. +- ac_beg=1 # First line for current file. +- ac_end=$ac_max_sed_lines # Line after last line for current file. +- ac_more_lines=: +- ac_sed_cmds= +- while $ac_more_lines; do +- if test $ac_beg -gt 1; then +- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- else +- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- fi +- if test ! -s $tmp/subs.frag; then +- ac_more_lines=false +- else +- # The purpose of the label and of the branching condition is to +- # speed up the sed processing (if there are no `@' at all, there +- # is no need to browse any of the substitutions). +- # These are the two extra sed commands mentioned above. +- (echo ':t +- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" +- else +- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" +- fi +- ac_sed_frag=`expr $ac_sed_frag + 1` +- ac_beg=$ac_end +- ac_end=`expr $ac_end + $ac_max_sed_lines` +- fi +- done +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds=cat ++if test -n "$CONFIG_FILES"; then ++ ++_ACEOF ++ ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++SHELL!$SHELL$ac_delim ++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim ++PACKAGE_NAME!$PACKAGE_NAME$ac_delim ++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim ++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim ++PACKAGE_STRING!$PACKAGE_STRING$ac_delim ++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim ++exec_prefix!$exec_prefix$ac_delim ++prefix!$prefix$ac_delim ++program_transform_name!$program_transform_name$ac_delim ++bindir!$bindir$ac_delim ++sbindir!$sbindir$ac_delim ++libexecdir!$libexecdir$ac_delim ++datarootdir!$datarootdir$ac_delim ++datadir!$datadir$ac_delim ++sysconfdir!$sysconfdir$ac_delim ++sharedstatedir!$sharedstatedir$ac_delim ++localstatedir!$localstatedir$ac_delim ++includedir!$includedir$ac_delim ++oldincludedir!$oldincludedir$ac_delim ++docdir!$docdir$ac_delim ++infodir!$infodir$ac_delim ++htmldir!$htmldir$ac_delim ++dvidir!$dvidir$ac_delim ++pdfdir!$pdfdir$ac_delim ++psdir!$psdir$ac_delim ++libdir!$libdir$ac_delim ++localedir!$localedir$ac_delim ++mandir!$mandir$ac_delim ++DEFS!$DEFS$ac_delim ++ECHO_C!$ECHO_C$ac_delim ++ECHO_N!$ECHO_N$ac_delim ++ECHO_T!$ECHO_T$ac_delim ++LIBS!$LIBS$ac_delim ++build_alias!$build_alias$ac_delim ++host_alias!$host_alias$ac_delim ++target_alias!$target_alias$ac_delim ++build!$build$ac_delim ++build_cpu!$build_cpu$ac_delim ++build_vendor!$build_vendor$ac_delim ++build_os!$build_os$ac_delim ++host!$host$ac_delim ++host_cpu!$host_cpu$ac_delim ++host_vendor!$host_vendor$ac_delim ++host_os!$host_os$ac_delim ++target!$target$ac_delim ++target_cpu!$target_cpu$ac_delim ++target_vendor!$target_vendor$ac_delim ++target_os!$target_os$ac_delim ++CC!$CC$ac_delim ++CFLAGS!$CFLAGS$ac_delim ++LDFLAGS!$LDFLAGS$ac_delim ++CPPFLAGS!$CPPFLAGS$ac_delim ++ac_ct_CC!$ac_ct_CC$ac_delim ++EXEEXT!$EXEEXT$ac_delim ++OBJEXT!$OBJEXT$ac_delim ++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim ++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim ++INSTALL_DATA!$INSTALL_DATA$ac_delim ++CYGPATH_W!$CYGPATH_W$ac_delim ++PACKAGE!$PACKAGE$ac_delim ++VERSION!$VERSION$ac_delim ++ACLOCAL!$ACLOCAL$ac_delim ++AUTOCONF!$AUTOCONF$ac_delim ++AUTOMAKE!$AUTOMAKE$ac_delim ++AUTOHEADER!$AUTOHEADER$ac_delim ++MAKEINFO!$MAKEINFO$ac_delim ++install_sh!$install_sh$ac_delim ++STRIP!$STRIP$ac_delim ++INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim ++mkdir_p!$mkdir_p$ac_delim ++AWK!$AWK$ac_delim ++SET_MAKE!$SET_MAKE$ac_delim ++am__leading_dot!$am__leading_dot$ac_delim ++AMTAR!$AMTAR$ac_delim ++am__tar!$am__tar$ac_delim ++am__untar!$am__untar$ac_delim ++DEPDIR!$DEPDIR$ac_delim ++am__include!$am__include$ac_delim ++am__quote!$am__quote$ac_delim ++AMDEP_TRUE!$AMDEP_TRUE$ac_delim ++AMDEP_FALSE!$AMDEP_FALSE$ac_delim ++AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim ++CCDEPMODE!$CCDEPMODE$ac_delim ++am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim ++am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim ++AR!$AR$ac_delim ++RANLIB!$RANLIB$ac_delim ++LN_S!$LN_S$ac_delim ++LIBTOOL!$LIBTOOL$ac_delim ++WARN_CFLAGS!$WARN_CFLAGS$ac_delim ++NO_WERROR!$NO_WERROR$ac_delim ++MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim ++MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim ++MAINT!$MAINT$ac_delim ++INSTALL_LIBBFD_TRUE!$INSTALL_LIBBFD_TRUE$ac_delim ++INSTALL_LIBBFD_FALSE!$INSTALL_LIBBFD_FALSE$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +-fi # test -n "$CONFIG_FILES" ++done ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++CEOF$ac_eof ++_ACEOF ++ + ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++host_noncanonical!$host_noncanonical$ac_delim ++target_noncanonical!$target_noncanonical$ac_delim ++bfdlibdir!$bfdlibdir$ac_delim ++bfdincludedir!$bfdincludedir$ac_delim ++CPP!$CPP$ac_delim ++GREP!$GREP$ac_delim ++EGREP!$EGREP$ac_delim ++ALLOCA!$ALLOCA$ac_delim ++USE_NLS!$USE_NLS$ac_delim ++MSGFMT!$MSGFMT$ac_delim ++GMSGFMT!$GMSGFMT$ac_delim ++XGETTEXT!$XGETTEXT$ac_delim ++USE_INCLUDED_LIBINTL!$USE_INCLUDED_LIBINTL$ac_delim ++CATALOGS!$CATALOGS$ac_delim ++CATOBJEXT!$CATOBJEXT$ac_delim ++DATADIRNAME!$DATADIRNAME$ac_delim ++GMOFILES!$GMOFILES$ac_delim ++INSTOBJEXT!$INSTOBJEXT$ac_delim ++INTLDEPS!$INTLDEPS$ac_delim ++INTLLIBS!$INTLLIBS$ac_delim ++INTLOBJS!$INTLOBJS$ac_delim ++POFILES!$POFILES$ac_delim ++POSUB!$POSUB$ac_delim ++INCLUDE_LOCALE_H!$INCLUDE_LOCALE_H$ac_delim ++GT_NO!$GT_NO$ac_delim ++GT_YES!$GT_YES$ac_delim ++MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim ++l!$l$ac_delim ++CC_FOR_BUILD!$CC_FOR_BUILD$ac_delim ++EXEEXT_FOR_BUILD!$EXEEXT_FOR_BUILD$ac_delim ++HDEFINES!$HDEFINES$ac_delim ++CGEN_MAINT_TRUE!$CGEN_MAINT_TRUE$ac_delim ++CGEN_MAINT_FALSE!$CGEN_MAINT_FALSE$ac_delim ++cgendir!$cgendir$ac_delim ++WIN32LDFLAGS!$WIN32LDFLAGS$ac_delim ++WIN32LIBADD!$WIN32LIBADD$ac_delim ++archdefs!$archdefs$ac_delim ++BFD_MACHINES!$BFD_MACHINES$ac_delim ++LIBOBJS!$LIBOBJS$ac_delim ++LTLIBOBJS!$LTLIBOBJS$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 40; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++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 ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end + _ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++:end ++s/|#_!!_#|//g ++CEOF$ac_eof ++_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 +-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". +- case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; ++fi # test -n "$CONFIG_FILES" ++ ++ ++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS ++do ++ case $ac_tag in ++ :[FHLC]) ac_mode=$ac_tag; continue;; ++ esac ++ case $ac_mode$ac_tag in ++ :[FHL]*:*);; ++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 ++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 || ++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 ++echo "$as_me: error: cannot find input file: $ac_f" >&2;} ++ { (exit 1); exit 1; }; };; ++ 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 "`IFS=: ++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." ++ if test x"$ac_file" != x-; then ++ configure_input="$ac_file. $configure_input" ++ { echo "$as_me:$LINENO: creating $ac_file" >&5 ++echo "$as_me: creating $ac_file" >&6;} ++ fi + +- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. +- ac_dir=`(dirname "$ac_file") 2>/dev/null || ++ case $ac_tag in ++ *:-:* | *:-) cat >"$tmp/stdin";; ++ 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 || ++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || + echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" ++ 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 test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`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 || ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || + echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ 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 ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } +- + ac_builddir=. + +-if test "$ac_dir" != .; then ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`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 +- .) # No --srcdir option. We are building in place. ++ .) # We are building in place. + ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. ++ 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 ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac ++ 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 + +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac + ++ case $ac_mode in ++ :F) ++ # ++ # CONFIG_FILE ++ # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; +- *) ac_INSTALL=$ac_top_builddir$INSTALL ;; ++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac ++_ACEOF + +- if test x"$ac_file" != x-; then +- { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- rm -f "$ac_file" +- fi +- # 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. */ +- if test x"$ac_file" = x-; then +- configure_input= +- else +- configure_input="$ac_file. " +- fi +- configure_input=$configure_input"Generated from `echo $ac_file_in | +- sed 's,.*/,,'` by configure." +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- echo "$f";; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo "$f" +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo "$srcdir/$f" +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } ++cat >>$CONFIG_STATUS <<\_ACEOF ++# 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= ++ ++case `sed -n '/datarootdir/ { ++ p ++ q ++} ++/@datadir@/p ++/@docdir@/p ++/@infodir@/p ++/@localedir@/p ++/@mandir@/p ++' $ac_file_inputs` in ++*datarootdir*) ac_datarootdir_seen=yes;; ++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) ++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF ++ 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 + sed "$ac_vpsub + $extrasub + _ACEOF + cat >>$CONFIG_STATUS <<\_ACEOF + :t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b +-s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t +-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +-s,@INSTALL@,$ac_INSTALL,;t t +-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out +- rm -f $tmp/stdin +- if test x"$ac_file" != x-; then +- mv $tmp/out $ac_file +- else +- cat $tmp/out +- rm -f $tmp/out +- fi ++s&@configure_input@&$configure_input&;t t ++s&@top_builddir@&$ac_top_builddir_sub&;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 ++$ac_datarootdir_hack ++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out ++ ++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"; } && ++ { 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 ++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;} + +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-# +-# CONFIG_HEADER section. +-# +- +-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +-# NAME is the cpp macro being defined and VALUE is the value it is being given. +-# +-# ac_d sets the value in "#define NAME VALUE" lines. +-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +-ac_dB='[ ].*$,\1#\2' +-ac_dC=' ' +-ac_dD=',;t' +-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +-ac_uB='$,\1#\2define\3' +-ac_uC=' ' +-ac_uD=',;t' +- +-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". ++ rm -f "$tmp/stdin" + case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; ++ -) cat "$tmp/out"; rm -f "$tmp/out";; ++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac ++ ;; ++ :H) ++ # ++ # CONFIG_HEADER ++ # ++_ACEOF ++ ++# Transform confdefs.h into a sed script `conftest.defines', that ++# substitutes the proper values into config.h.in to produce config.h. ++rm -f conftest.defines conftest.tail ++# First, append a space to every undef/define line, to ease matching. ++echo 's/$/ /' >conftest.defines ++# Then, protect against being on the right side of a sed subst, or in ++# an unquoted here document, in config.status. If some macros were ++# called several times there might be several #defines for the same ++# symbol, which is useless. But do not sort them, since the last ++# AC_DEFINE must be honored. ++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* ++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where ++# NAME is the cpp macro being defined, VALUE is the value it is being given. ++# PARAMS is the parameter list in the macro definition--in most cases, it's ++# just an empty string. ++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' ++ac_dB='\\)[ (].*,\\1define\\2' ++ac_dC=' ' ++ac_dD=' ,' + +- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- # Do quote $f, to prevent DOS paths from being IFS'd. +- echo "$f";; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo "$f" +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo "$srcdir/$f" +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } +- # Remove the trailing spaces. +- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in +- +-_ACEOF ++uniq confdefs.h | ++ sed -n ' ++ t rset ++ :rset ++ s/^[ ]*#[ ]*define[ ][ ]*// ++ t ok ++ d ++ :ok ++ s/[\\&,]/\\&/g ++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p ++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ++ ' >>conftest.defines + +-# Transform confdefs.h into two sed scripts, `conftest.defines' and +-# `conftest.undefs', that substitutes the proper values into +-# config.h.in to produce config.h. The first handles `#define' +-# templates, and the second `#undef' templates. +-# And first: Protect against being on the right side of a sed subst in +-# config.status. Protect against being in an unquoted here document +-# in config.status. +-rm -f conftest.defines conftest.undefs +-# Using a here document instead of a string reduces the quoting nightmare. +-# Putting comments in sed scripts is not portable. +-# +-# `end' is used to avoid that the second main sed command (meant for +-# 0-ary CPP macros) applies to n-ary macro definitions. +-# See the Autoconf documentation for `clear'. +-cat >confdef2sed.sed <<\_ACEOF +-s/[\\&,]/\\&/g +-s,[\\$`],\\&,g +-t clear +-: clear +-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +-t end +-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +-: end +-_ACEOF +-# If some macros were called several times there might be several times +-# the same #defines, which is useless. Nevertheless, we may not want to +-# sort them, since we want the *last* AC-DEFINE to be honored. +-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +-rm -f confdef2sed.sed +- +-# This sed command replaces #undef with comments. This is necessary, for ++# Remove the space that was appended to ease matching. ++# Then replace #undef with comments. This is necessary, for + # example, in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. +-cat >>conftest.undefs <<\_ACEOF +-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, ++# (The regexp can be short, since the line contains either #define or #undef.) ++echo 's/ $// ++s,^[ #]*u.*,/* & */,' >>conftest.defines ++ ++# Break up conftest.defines: ++ac_max_sed_lines=50 ++ ++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" ++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" ++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" ++# et cetera. ++ac_in='$ac_file_inputs' ++ac_out='"$tmp/out1"' ++ac_nxt='"$tmp/out2"' ++ ++while : ++do ++ # Write a here document: ++ cat >>$CONFIG_STATUS <<_ACEOF ++ # First, check the format of the line: ++ cat >"\$tmp/defines.sed" <<\\CEOF ++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def ++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def ++b ++:def + _ACEOF +- +-# Break up conftest.defines because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +-echo ' :' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.defines >/dev/null +-do +- # Write a limited-size here document to $tmp/defines.sed. +- echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#define' lines. +- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS ++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF +- sed -f $tmp/defines.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail ++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS ++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in ++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail ++ grep . conftest.tail >/dev/null || break + rm -f conftest.defines + mv conftest.tail conftest.defines + done +-rm -f conftest.defines +-echo ' fi # grep' >>$CONFIG_STATUS +-echo >>$CONFIG_STATUS +- +-# Break up conftest.undefs because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.undefs >/dev/null +-do +- # Write a limited-size here document to $tmp/undefs.sed. +- echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#undef' +- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS +- echo 'CEOF +- sed -f $tmp/undefs.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail +- rm -f conftest.undefs +- mv conftest.tail conftest.undefs +-done +-rm -f conftest.undefs ++rm -f conftest.defines conftest.tail + ++echo "ac_result=$ac_in" >>$CONFIG_STATUS + cat >>$CONFIG_STATUS <<\_ACEOF +- # 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. */ +- if test x"$ac_file" = x-; then +- echo "/* Generated by configure. */" >$tmp/config.h +- else +- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h +- fi +- cat $tmp/in >>$tmp/config.h +- rm -f $tmp/in + if test x"$ac_file" != x-; then +- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then ++ echo "/* $configure_input */" >"$tmp/config.h" ++ cat "$ac_result" >>"$tmp/config.h" ++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 + echo "$as_me: $ac_file is unchanged" >&6;} + else +- ac_dir=`(dirname "$ac_file") 2>/dev/null || +-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_file" : 'X\(//\)[^/]' \| \ +- X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } +- + rm -f $ac_file +- mv $tmp/config.h $ac_file ++ mv "$tmp/config.h" $ac_file + fi + else +- cat $tmp/config.h +- rm -f $tmp/config.h ++ echo "/* $configure_input */" ++ cat "$ac_result" + fi ++ rm -f "$tmp/out12" + # Compute $ac_file's index in $config_headers. + _am_stamp_count=1 + for _am_header in $config_headers :; do +@@ -10158,135 +10756,39 @@ for _am_header in $config_headers :; do + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac + done +-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || ++echo "timestamp for $ac_file" >`$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 || ++ X$ac_file : 'X\(/\)' \| . 2>/dev/null || + echo X$ac_file | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'`/stamp-h$_am_stamp_count +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-# +-# CONFIG_COMMANDS section. +-# +-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue +- ac_dest=`echo "$ac_file" | sed 's,:.*,,'` +- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_dir=`(dirname "$ac_dest") 2>/dev/null || +-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_dest" : 'X\(//\)[^/]' \| \ +- X"$ac_dest" : 'X\(//\)$' \| \ +- X"$ac_dest" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_dest" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } +- +- ac_builddir=. +- +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi +- +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'`/stamp-h$_am_stamp_count ++ ;; + +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac ++ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 ++echo "$as_me: executing $ac_file commands" >&6;} ++ ;; ++ esac + + +- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +-echo "$as_me: executing $ac_dest commands" >&6;} +- case $ac_dest in +- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do ++ case $ac_file$ac_mode in ++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; 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. +@@ -10296,18 +10798,29 @@ echo "$as_me: executing $ac_dest command + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then +- dirpart=`(dirname "$mf") 2>/dev/null || ++ dirpart=`$as_dirname -- "$mf" || + $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ +- X"$mf" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$mf" : 'X\(/\)' \| . 2>/dev/null || + echo X"$mf" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + else + continue + fi +@@ -10329,54 +10842,80 @@ echo X"$mf" | + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue +- fdir=`(dirname "$file") 2>/dev/null || ++ fdir=`$as_dirname -- "$file" || + $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ +- X"$file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$file" : 'X\(/\)' \| . 2>/dev/null || + echo X"$file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p $dirpart/$fdir +- else +- as_dir=$dirpart/$fdir ++ 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 test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`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 || ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || + echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ 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 ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } +- + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done + ;; +- default ) sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile ;; ++ "default":C) sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile ;; ++ + esac +-done +-_ACEOF ++done # for ac_tag + +-cat >>$CONFIG_STATUS <<\_ACEOF + + { (exit 0); exit 0; } + _ACEOF +diff -Nrup binutils-2.17/opcodes/configure.in binutils-2.17.atmel.1.3.0/opcodes/configure.in +--- binutils-2.17/opcodes/configure.in 2006-02-17 15:36:28.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/opcodes/configure.in 2007-03-26 10:20:33.000000000 +0200 +@@ -157,6 +157,7 @@ if test x${all_targets} = xfalse ; then + bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;; + bfd_arm_arch) ta="$ta arm-dis.lo" ;; + bfd_avr_arch) ta="$ta avr-dis.lo" ;; ++ bfd_avr32_arch) ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;; + bfd_bfin_arch) ta="$ta bfin-dis.lo" ;; + bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;; + bfd_crx_arch) ta="$ta crx-dis.lo crx-opc.lo" ;; +diff -Nrup binutils-2.17/opcodes/disassemble.c binutils-2.17.atmel.1.3.0/opcodes/disassemble.c +--- binutils-2.17/opcodes/disassemble.c 2006-02-17 15:36:28.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/opcodes/disassemble.c 2007-03-26 10:20:34.000000000 +0200 +@@ -24,6 +24,7 @@ + #define ARCH_arc + #define ARCH_arm + #define ARCH_avr ++#define ARCH_avr32 + #define ARCH_bfin + #define ARCH_cris + #define ARCH_crx +@@ -121,6 +122,11 @@ disassembler (abfd) + disassemble = print_insn_avr; + break; + #endif ++#ifdef ARCH_avr32 ++ case bfd_arch_avr32: ++ disassemble = print_insn_avr32; ++ break; ++#endif + #ifdef ARCH_bfin + case bfd_arch_bfin: + disassemble = print_insn_bfin; +@@ -433,6 +439,9 @@ disassembler_usage (stream) + #ifdef ARCH_powerpc + print_ppc_disassembler_options (stream); + #endif ++#ifdef ARCH_avr32 ++ print_avr32_disassembler_options (stream); ++#endif + + return; + } +diff -Nrup binutils-2.17/opcodes/Makefile.am binutils-2.17.atmel.1.3.0/opcodes/Makefile.am +--- binutils-2.17/opcodes/Makefile.am 2006-04-06 23:49:35.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/opcodes/Makefile.am 2007-03-26 10:20:34.000000000 +0200 +@@ -29,6 +29,7 @@ LIBIBERTY = ../libiberty/libiberty.a + # Header files. + HFILES = \ + cgen-ops.h cgen-types.h \ ++ avr32-asm.h avr32-opc.h \ + fr30-desc.h fr30-opc.h \ + frv-desc.h frv-opc.h \ + h8500-opc.h \ +@@ -58,6 +59,9 @@ CFILES = \ + arc-ext.c \ + arm-dis.c \ + avr-dis.c \ ++ avr32-asm.c \ ++ avr32-dis.c \ ++ avr32-opc.c \ + bfin-dis.c \ + cgen-asm.c \ + cgen-bitset.c \ +@@ -200,6 +204,9 @@ ALL_MACHINES = \ + arc-ext.lo \ + arm-dis.lo \ + avr-dis.lo \ ++ avr32-asm.lo \ ++ avr32-dis.lo \ ++ avr32-opc.lo \ + bfin-dis.lo \ + cgen-asm.lo \ + cgen-bitset.lo \ +@@ -624,6 +631,15 @@ arm-dis.lo: arm-dis.c sysdep.h config.h + avr-dis.lo: avr-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \ + $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h opintl.h \ + $(INCDIR)/libiberty.h $(INCDIR)/opcode/avr.h ++avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \ ++ $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \ ++ $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \ ++ $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h ++avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \ ++ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \ ++ avr32-opc.h opintl.h ++avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \ ++ $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h + bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \ + $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h + cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \ +diff -Nrup binutils-2.17/opcodes/Makefile.in binutils-2.17.atmel.1.3.0/opcodes/Makefile.in +--- binutils-2.17/opcodes/Makefile.in 2006-04-06 23:49:35.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/opcodes/Makefile.in 2007-03-26 10:31:36.000000000 +0200 +@@ -1,4 +1,4 @@ +-# Makefile.in generated by automake 1.9.5 from Makefile.am. ++# Makefile.in generated by automake 1.9.6 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +@@ -15,8 +15,6 @@ + @SET_MAKE@ + + +-SOURCES = libopcodes.c $(libopcodes_la_SOURCES) +- + srcdir = @srcdir@ + top_srcdir = @top_srcdir@ + VPATH = @srcdir@ +@@ -132,6 +130,7 @@ EXEEXT = @EXEEXT@ + EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ + GMOFILES = @GMOFILES@ + GMSGFMT = @GMSGFMT@ ++GREP = @GREP@ + GT_NO = @GT_NO@ + GT_YES = @GT_YES@ + HDEFINES = @HDEFINES@ +@@ -180,10 +179,7 @@ WARN_CFLAGS = @WARN_CFLAGS@ + WIN32LDFLAGS = @WIN32LDFLAGS@ + WIN32LIBADD = @WIN32LIBADD@ + XGETTEXT = @XGETTEXT@ +-ac_ct_AR = @ac_ct_AR@ + ac_ct_CC = @ac_ct_CC@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ + am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ + am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ + am__include = @am__include@ +@@ -202,6 +198,9 @@ build_os = @build_os@ + build_vendor = @build_vendor@ + cgendir = @cgendir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ +@@ -209,18 +208,22 @@ host_cpu = @host_cpu@ + host_noncanonical = @host_noncanonical@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + l = @l@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ +@@ -247,6 +250,7 @@ LIBIBERTY = ../libiberty/libiberty.a + # Header files. + HFILES = \ + cgen-ops.h cgen-types.h \ ++ avr32-asm.h avr32-opc.h \ + fr30-desc.h fr30-opc.h \ + frv-desc.h frv-opc.h \ + h8500-opc.h \ +@@ -277,6 +281,9 @@ CFILES = \ + arc-ext.c \ + arm-dis.c \ + avr-dis.c \ ++ avr32-asm.c \ ++ avr32-dis.c \ ++ avr32-opc.c \ + bfin-dis.c \ + cgen-asm.c \ + cgen-bitset.c \ +@@ -419,6 +426,9 @@ ALL_MACHINES = \ + arc-ext.lo \ + arm-dis.lo \ + avr-dis.lo \ ++ avr32-asm.lo \ ++ avr32-dis.lo \ ++ avr32-opc.lo \ + bfin-dis.lo \ + cgen-asm.lo \ + cgen-bitset.lo \ +@@ -1166,6 +1176,15 @@ arm-dis.lo: arm-dis.c sysdep.h config.h + avr-dis.lo: avr-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \ + $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h opintl.h \ + $(INCDIR)/libiberty.h $(INCDIR)/opcode/avr.h ++avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \ ++ $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \ ++ $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \ ++ $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h ++avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \ ++ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \ ++ avr32-opc.h opintl.h ++avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \ ++ $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h + bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \ + $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h + cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \ diff --git a/toolchain/binutils/2.17/501-avr32-fix-pool-alignment.patch b/toolchain/binutils/2.17/501-avr32-fix-pool-alignment.patch new file mode 100644 index 000000000..bd519a1e6 --- /dev/null +++ b/toolchain/binutils/2.17/501-avr32-fix-pool-alignment.patch @@ -0,0 +1,26 @@ +Index: a/gas/config/tc-avr32.c +=================================================================== +--- a/gas/config/tc-avr32.c (revision 31496) ++++ b/gas/config/tc-avr32.c (revision 32014) +@@ -3092,6 +3092,8 @@ + + /* Make sure the constant pool is properly aligned */ + frag_align_code(2, 0); ++ if (bfd_get_section_alignment(stdoutput, pool->section) < 2) ++ bfd_set_section_alignment(stdoutput, pool->section, 2); + + /* Assume none of the entries are discarded, and that we need the + maximum amount of alignment. But we're not going to allocate +Index: a/bfd/configure.in +=================================================================== +--- a/bfd/configure.in (revision 31496) ++++ b/bfd/configure.in (revision 32014) +@@ -8,7 +8,7 @@ + AC_CANONICAL_TARGET + AC_ISC_POSIX + +-AM_INIT_AUTOMAKE(bfd, 2.17.atmel.1.2.0) ++AM_INIT_AUTOMAKE(bfd, 2.17.atmel.1.2.1) + + dnl These must be called before AM_PROG_LIBTOOL, because it may want + dnl to call AC_CHECK_PROG. diff --git a/toolchain/binutils/2.17/502-avr32-fix-got-refcount.patch b/toolchain/binutils/2.17/502-avr32-fix-got-refcount.patch new file mode 100644 index 000000000..d9dc0ffad --- /dev/null +++ b/toolchain/binutils/2.17/502-avr32-fix-got-refcount.patch @@ -0,0 +1,78 @@ +--- a/bfd/elf32-avr32.c 2008-02-29 08:20:57.000000000 -0500 ++++ b/bfd/elf32-avr32.c 2008-02-29 08:26:01.000000000 -0500 +@@ -247,7 +247,7 @@ avr32_elf_link_hash_table_create(bfd *ab + GOT. If we ever get more than this many references to the same + symbol, we may need to do something special. + */ +-#define MAX_NR_GOT_HOLES 8192 ++#define MAX_NR_GOT_HOLES 2048 + + /* + AVR32 GOT entry. We need to keep track of refcounts and offsets +@@ -916,16 +916,21 @@ avr32_elf_size_dynamic_sections (bfd *ou + static void + insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got) + { +- /* TODO: Support got_refcount > htab->nr_got_holes by using a +- different sort algorithm for those. */ +- BFD_ASSERT(got->refcount <= htab->nr_got_holes); ++ /* Any entries with got_refcount > htab->nr_got_holes end up in the ++ * last pigeonhole without any sorting. We expect the number of such ++ * entries to be small, so it is very unlikely to affect ++ * performance. */ ++ int entry = got->refcount; + +- got->pprev = &htab->got_hole[got->refcount]; +- got->next = htab->got_hole[got->refcount]; ++ if (entry > htab->nr_got_holes) ++ entry = htab->nr_got_holes; ++ ++ got->pprev = &htab->got_hole[entry]; ++ got->next = htab->got_hole[entry]; + if (got->next) + got->next->pprev = &got->next; + +- htab->got_hole[got->refcount] = got; ++ htab->got_hole[entry] = got; + } + + /* Decrement the refcount of a GOT entry and update its position in +@@ -933,7 +938,6 @@ insert_got_entry(struct elf_avr32_link_h + static void + unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got) + { +- BFD_ASSERT(got->refcount <= htab->nr_got_holes); + BFD_ASSERT(got->refcount > 0); + + if (got->next) +@@ -955,7 +959,6 @@ ref_got_entry(struct elf_avr32_link_hash + insert_got_entry(htab, got); + + BFD_ASSERT(got->refcount > 0); +- BFD_ASSERT(got->refcount <= htab->nr_got_holes); + } + + /* Assign offsets to all GOT entries we intend to keep. The entries +@@ -1106,13 +1109,17 @@ avr32_elf_size_dynamic_sections (bfd *ou + { + /* Allocate holes for the pigeonhole sort algorithm */ + pr_debug("Highest GOT refcount: %d\n", htab->nr_got_holes); ++ ++ /* Limit the memory usage by clipping the number of pigeonholes ++ * at a predefined maximum. All entries with a higher refcount ++ * will end up in the last pigeonhole. */ ++ + if (htab->nr_got_holes >= MAX_NR_GOT_HOLES) + { +- /* TODO: Do something clever (different sorting algorithm) */ +- _bfd_error_handler(_("Highest refcount %d too high (max %d)\n"), +- htab->nr_got_holes, MAX_NR_GOT_HOLES); +- bfd_set_error(bfd_error_no_memory); +- return FALSE; ++ htab->nr_got_holes = MAX_NR_GOT_HOLES - 1; ++ ++ pr_debug("Limiting maximum number of GOT pigeonholes to %u\n", ++ htab->nr_got_holes); + } + htab->got_hole = bfd_zalloc(output_bfd, + sizeof(struct got_entry *) -- cgit v1.2.3