diff options
author | Imre Kaloz <kaloz@openwrt.org> | 2007-12-28 18:26:50 +0000 |
---|---|---|
committer | Imre Kaloz <kaloz@openwrt.org> | 2007-12-28 18:26:50 +0000 |
commit | 8700cac7110aeaf95fa26482323e14c35b7f07fb (patch) | |
tree | 1168d094fac88a9d0bb88805e3be11aeb4e22875 /toolchain/binutils/patches/2.17 | |
parent | 3e3b877d14c725691920b608b6dda5d78f8ff50d (diff) | |
download | mtk-20170518-8700cac7110aeaf95fa26482323e14c35b7f07fb.zip mtk-20170518-8700cac7110aeaf95fa26482323e14c35b7f07fb.tar.gz mtk-20170518-8700cac7110aeaf95fa26482323e14c35b7f07fb.tar.bz2 |
update AVR32 binutils patches
SVN-Revision: 10006
Diffstat (limited to 'toolchain/binutils/patches/2.17')
5 files changed, 28171 insertions, 17866 deletions
diff --git a/toolchain/binutils/patches/2.17/500-avr32.patch b/toolchain/binutils/patches/2.17/500-avr32.patch index bd34a61..7cdd55a 100644 --- a/toolchain/binutils/patches/2.17/500-avr32.patch +++ b/toolchain/binutils/patches/2.17/500-avr32.patch @@ -1,14 +1,13 @@ -Index: binutils-2.17/bfd/aclocal.m4 -=================================================================== ---- binutils-2.17.orig/bfd/aclocal.m4 2007-06-28 09:19:34.137046832 +0200 -+++ binutils-2.17/bfd/aclocal.m4 2007-06-28 09:19:36.555679144 +0200 +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 @@ +@@ -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], @@ -17,11 +16,10 @@ Index: binutils-2.17/bfd/aclocal.m4 # AM_AUX_DIR_EXPAND -*- Autoconf -*- -Index: binutils-2.17/bfd/archures.c -=================================================================== ---- binutils-2.17.orig/bfd/archures.c 2007-06-28 09:19:34.142046072 +0200 -+++ binutils-2.17/bfd/archures.c 2007-06-28 09:19:36.556678992 +0200 -@@ -334,6 +334,9 @@ +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 @@ -31,7 +29,7 @@ Index: binutils-2.17/bfd/archures.c . bfd_arch_bfin, {* ADI Blackfin *} .#define bfd_mach_bfin 1 . bfd_arch_cr16c, {* National Semiconductor CompactRISC. *} -@@ -423,6 +426,7 @@ +@@ -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; @@ -39,7 +37,7 @@ Index: binutils-2.17/bfd/archures.c 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 @@ +@@ -490,6 +494,7 @@ static const bfd_arch_info_type * const &bfd_arc_arch, &bfd_arm_arch, &bfd_avr_arch, @@ -47,11 +45,10 @@ Index: binutils-2.17/bfd/archures.c &bfd_bfin_arch, &bfd_cr16c_arch, &bfd_cris_arch, -Index: binutils-2.17/bfd/bfd-in2.h -=================================================================== ---- binutils-2.17.orig/bfd/bfd-in2.h 2007-06-28 09:19:34.149045008 +0200 -+++ binutils-2.17/bfd/bfd-in2.h 2007-06-28 09:19:36.558678688 +0200 -@@ -1931,6 +1931,9 @@ +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 @@ -61,7 +58,7 @@ Index: binutils-2.17/bfd/bfd-in2.h bfd_arch_bfin, /* ADI Blackfin */ #define bfd_mach_bfin 1 bfd_arch_cr16c, /* National Semiconductor CompactRISC. */ -@@ -3577,6 +3580,87 @@ +@@ -3577,6 +3580,87 @@ instructions */ instructions */ BFD_RELOC_AVR_6_ADIW, @@ -149,11 +146,10 @@ Index: binutils-2.17/bfd/bfd-in2.h /* Direct 12 bit. */ BFD_RELOC_390_12, -Index: binutils-2.17/bfd/config.bfd -=================================================================== ---- binutils-2.17.orig/bfd/config.bfd 2007-06-28 09:19:34.154044248 +0200 -+++ binutils-2.17/bfd/config.bfd 2007-06-28 09:19:36.558678688 +0200 -@@ -317,6 +317,10 @@ +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 ;; @@ -164,10 +160,9 @@ Index: binutils-2.17/bfd/config.bfd c30-*-*aout* | tic30-*-*aout*) targ_defvec=tic30_aout_vec ;; -Index: binutils-2.17/bfd/config.in -=================================================================== ---- binutils-2.17.orig/bfd/config.in 2007-06-28 09:19:34.159043488 +0200 -+++ binutils-2.17/bfd/config.in 2007-06-28 09:19:36.559678536 +0200 +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 @@ -202,10 +197,9 @@ Index: binutils-2.17/bfd/config.in -/* Define to `unsigned' if <sys/types.h> does not define. */ +/* Define to `unsigned int' if <sys/types.h> does not define. */ #undef size_t -Index: binutils-2.17/bfd/configure -=================================================================== ---- binutils-2.17.orig/bfd/configure 2007-06-28 09:19:35.023912008 +0200 -+++ binutils-2.17/bfd/configure 2007-06-28 09:19:36.575676104 +0200 +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. @@ -267,7 +261,7 @@ Index: binutils-2.17/bfd/configure # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -@@ -29,8 +58,43 @@ +@@ -29,8 +58,43 @@ else fi @@ -312,7 +306,7 @@ Index: binutils-2.17/bfd/configure PS1='$ ' PS2='> ' PS4='+ ' -@@ -44,18 +108,19 @@ +@@ -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 @@ -335,7 +329,7 @@ Index: binutils-2.17/bfd/configure as_basename=basename else as_basename=false -@@ -63,157 +128,388 @@ +@@ -63,157 +128,388 @@ fi # Name of the executable. @@ -822,7 +816,7 @@ Index: binutils-2.17/bfd/configure if mkdir -p . 2>/dev/null; then as_mkdir_p=: -@@ -222,7 +518,28 @@ +@@ -222,7 +518,28 @@ else as_mkdir_p=false fi @@ -852,7 +846,7 @@ Index: binutils-2.17/bfd/configure # 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 @@ +@@ -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'" @@ -895,7 +889,7 @@ Index: binutils-2.17/bfd/configure # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= -@@ -275,42 +580,199 @@ +@@ -275,42 +580,199 @@ ac_unique_file="libbfd.c" # Factoring default headers for most tests. ac_includes_default="\ #include <stdio.h> @@ -1109,7 +1103,7 @@ Index: binutils-2.17/bfd/configure # Initialize some variables set by options. ac_init_help= -@@ -337,34 +799,48 @@ +@@ -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. @@ -1165,7 +1159,7 @@ Index: binutils-2.17/bfd/configure -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -@@ -386,33 +862,45 @@ +@@ -386,33 +862,45 @@ do --config-cache | -C) cache_file=config.cache ;; @@ -1224,7 +1218,7 @@ Index: binutils-2.17/bfd/configure -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ -@@ -439,6 +927,12 @@ +@@ -439,6 +927,12 @@ do -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; @@ -1237,7 +1231,7 @@ Index: binutils-2.17/bfd/configure -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -@@ -463,13 +957,16 @@ +@@ -463,13 +957,16 @@ do | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; @@ -1258,7 +1252,7 @@ Index: binutils-2.17/bfd/configure localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) -@@ -534,6 +1031,16 @@ +@@ -534,6 +1031,16 @@ do | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; @@ -1275,7 +1269,7 @@ Index: binutils-2.17/bfd/configure -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -@@ -586,24 +1093,20 @@ +@@ -586,24 +1093,20 @@ do -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. @@ -1306,7 +1300,7 @@ Index: binutils-2.17/bfd/configure --x) # Obsolete; use --with-x. -@@ -634,8 +1137,7 @@ +@@ -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; }; } @@ -1316,7 +1310,7 @@ Index: binutils-2.17/bfd/configure export $ac_envvar ;; *) -@@ -655,27 +1157,19 @@ +@@ -655,27 +1157,19 @@ if test -n "$ac_prev"; then { (exit 1); exit 1; }; } fi @@ -1354,7 +1348,7 @@ Index: binutils-2.17/bfd/configure done # There might be people who depend on the old broken behavior: `$host' -@@ -702,74 +1196,76 @@ +@@ -702,74 +1196,76 @@ test -n "$host_alias" && ac_tool_prefix= test "$silent" = yes && exec 6>/dev/null @@ -1486,7 +1480,7 @@ Index: binutils-2.17/bfd/configure # # Report the --help message. -@@ -798,9 +1294,6 @@ +@@ -798,9 +1294,6 @@ Configuration: -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] @@ -1496,7 +1490,7 @@ Index: binutils-2.17/bfd/configure Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] -@@ -818,15 +1311,22 @@ +@@ -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] @@ -1522,7 +1516,7 @@ Index: binutils-2.17/bfd/configure _ACEOF cat <<\_ACEOF -@@ -880,126 +1380,95 @@ +@@ -880,126 +1380,95 @@ Some influential environment variables: CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir> @@ -1700,7 +1694,7 @@ Index: binutils-2.17/bfd/configure { cat <<_ASUNAME ## --------- ## -@@ -1018,7 +1487,7 @@ +@@ -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` @@ -1709,7 +1703,7 @@ Index: binutils-2.17/bfd/configure /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 @@ +@@ -1032,6 +1501,7 @@ do test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done @@ -1717,7 +1711,7 @@ Index: binutils-2.17/bfd/configure } >&5 -@@ -1053,7 +1523,6 @@ +@@ -1053,7 +1523,6 @@ _ACEOF ac_configure_args= ac_configure_args0= ac_configure_args1= @@ -1725,7 +1719,7 @@ Index: binutils-2.17/bfd/configure ac_must_keep_next=false for ac_pass in 1 2 do -@@ -1064,7 +1533,7 @@ +@@ -1064,7 +1533,7 @@ do -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; @@ -1734,7 +1728,7 @@ Index: binutils-2.17/bfd/configure ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in -@@ -1086,9 +1555,7 @@ +@@ -1086,9 +1555,7 @@ do -* ) ac_must_keep_next=true ;; esac fi @@ -1745,7 +1739,7 @@ Index: binutils-2.17/bfd/configure ;; esac done -@@ -1099,8 +1566,8 @@ +@@ -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. @@ -1756,7 +1750,7 @@ Index: binutils-2.17/bfd/configure trap 'exit_status=$? # Save into config.log some information that might help in debugging. { -@@ -1113,20 +1580,34 @@ +@@ -1113,20 +1580,34 @@ trap 'exit_status=$? _ASBOX echo # The following way of writing the cache mishandles newlines in values, @@ -1801,7 +1795,7 @@ Index: binutils-2.17/bfd/configure echo cat <<\_ASBOX -@@ -1137,22 +1618,28 @@ +@@ -1137,22 +1618,28 @@ _ASBOX echo for ac_var in $ac_subst_vars do @@ -1837,7 +1831,7 @@ Index: binutils-2.17/bfd/configure done | sort echo fi -@@ -1164,26 +1651,24 @@ +@@ -1164,26 +1651,24 @@ _ASBOX ## ----------- ## _ASBOX echo @@ -1869,7 +1863,7 @@ Index: binutils-2.17/bfd/configure # Predefined preprocessor variables. -@@ -1214,14 +1699,17 @@ +@@ -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. @@ -1894,7 +1888,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -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 @@ -1905,7 +1899,7 @@ Index: binutils-2.17/bfd/configure esac fi else -@@ -1250,12 +1738,11 @@ +@@ -1250,12 +1738,11 @@ fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -1921,7 +1915,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -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 @@ -1931,7 +1925,7 @@ Index: binutils-2.17/bfd/configure *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in -@@ -1298,12 +1784,6 @@ +@@ -1298,12 +1784,6 @@ echo "$as_me: error: run \`make distclea { (exit 1); exit 1; }; } fi @@ -1944,7 +1938,7 @@ Index: binutils-2.17/bfd/configure -@@ -1320,109 +1800,164 @@ +@@ -1320,109 +1800,164 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -2161,7 +2155,7 @@ Index: binutils-2.17/bfd/configure # The aliases save the names the user supplied, while $host etc. -@@ -1439,8 +1974,8 @@ +@@ -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 @@ -2172,7 +2166,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1453,32 +1988,34 @@ +@@ -1453,32 +1988,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -2214,7 +2208,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1491,36 +2028,51 @@ +@@ -1491,36 +2028,51 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -2276,7 +2270,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1533,74 +2085,34 @@ +@@ -1533,74 +2085,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -2360,7 +2354,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1614,7 +2126,7 @@ +@@ -1614,7 +2126,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -2369,7 +2363,7 @@ Index: binutils-2.17/bfd/configure if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue -@@ -1625,6 +2137,7 @@ +@@ -1625,6 +2137,7 @@ do fi done done @@ -2377,7 +2371,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -1642,22 +2155,23 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -2408,7 +2402,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1670,36 +2184,38 @@ +@@ -1670,36 +2184,38 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -2455,7 +2449,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1712,29 +2228,45 @@ +@@ -1712,29 +2228,45 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -2507,7 +2501,7 @@ Index: binutils-2.17/bfd/configure fi fi -@@ -1747,21 +2279,35 @@ +@@ -1747,21 +2279,35 @@ See \`config.log' for more details." >&2 { (exit 1); exit 1; }; } # Provide some information about the compiler. @@ -2551,7 +2545,7 @@ Index: binutils-2.17/bfd/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -@@ -1786,47 +2332,77 @@ +@@ -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. @@ -2651,7 +2645,7 @@ Index: binutils-2.17/bfd/configure echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -@@ -1838,19 +2414,21 @@ +@@ -1838,19 +2414,21 @@ See \`config.log' for more details." >&2 fi ac_exeext=$ac_cv_exeext @@ -2680,7 +2674,7 @@ Index: binutils-2.17/bfd/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -1869,22 +2447,27 @@ +@@ -1869,22 +2447,27 @@ See \`config.log' for more details." >&2 fi fi fi @@ -2720,7 +2714,7 @@ Index: binutils-2.17/bfd/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then -@@ -1895,9 +2478,8 @@ +@@ -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 @@ -2731,7 +2725,7 @@ Index: binutils-2.17/bfd/configure break;; * ) break;; esac -@@ -1911,14 +2493,14 @@ +@@ -1911,14 +2493,14 @@ See \`config.log' for more details." >&2 fi rm -f conftest$ac_cv_exeext @@ -2750,7 +2744,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1938,14 +2520,20 @@ +@@ -1938,14 +2520,20 @@ main () } _ACEOF rm -f conftest.o conftest.obj @@ -2775,7 +2769,7 @@ Index: binutils-2.17/bfd/configure *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac -@@ -1963,12 +2551,12 @@ +@@ -1963,12 +2551,12 @@ fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi @@ -2792,7 +2786,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1991,50 +2579,49 @@ +@@ -1991,50 +2579,49 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -2866,7 +2860,7 @@ Index: binutils-2.17/bfd/configure /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext -@@ -2050,38 +2637,118 @@ +@@ -2050,38 +2637,118 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -3001,7 +2995,7 @@ Index: binutils-2.17/bfd/configure if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then -@@ -2097,12 +2764,12 @@ +@@ -2097,12 +2764,12 @@ else CFLAGS= fi fi @@ -3018,7 +3012,7 @@ Index: binutils-2.17/bfd/configure ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -2136,12 +2803,17 @@ +@@ -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 @@ -3038,7 +3032,7 @@ Index: binutils-2.17/bfd/configure int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; -@@ -2156,335 +2828,144 @@ +@@ -2156,335 +2828,144 @@ return f (e, argv, 0) != argv[0] || f return 0; } _ACEOF @@ -3461,7 +3455,7 @@ Index: binutils-2.17/bfd/configure fi -@@ -2503,8 +2984,8 @@ +@@ -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. @@ -3472,7 +3466,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -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 @@ -3481,7 +3475,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -2545,21 +3026,22 @@ case $as_dir/ in ;; esac done @@ -3509,7 +3503,7 @@ Index: binutils-2.17/bfd/configure # 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 @@ +@@ -2569,8 +3051,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' @@ -3520,7 +3514,7 @@ Index: binutils-2.17/bfd/configure # Just in case sleep 1 echo timestamp > conftest.file -@@ -2612,20 +3094,20 @@ +@@ -2612,20 +3094,20 @@ echo "$as_me: error: newly created file Check your system clock" >&2;} { (exit 1); exit 1; }; } fi @@ -3546,7 +3540,7 @@ Index: binutils-2.17/bfd/configure # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` -@@ -2677,8 +3159,8 @@ +@@ -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 @@ -3557,7 +3551,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -2691,54 +3173,57 @@ +@@ -2691,54 +3173,57 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -3636,7 +3630,7 @@ Index: binutils-2.17/bfd/configure SET_MAKE="MAKE=${MAKE-make}" fi -@@ -2753,7 +3238,7 @@ +@@ -2753,7 +3238,7 @@ rmdir .tst 2>/dev/null DEPDIR="${am__leading_dot}deps" @@ -3645,7 +3639,7 @@ Index: binutils-2.17/bfd/configure am_make=${MAKE-make} -@@ -2763,8 +3248,8 @@ +@@ -2763,8 +3248,8 @@ am__doit: .PHONY: am__doit END # If we don't find an include directive, just comment out the code. @@ -3656,7 +3650,7 @@ Index: binutils-2.17/bfd/configure am__include="#" am__quote= _am_result=none -@@ -2791,15 +3276,15 @@ +@@ -2791,15 +3276,15 @@ if test "$am__include" = "#"; then fi @@ -3677,7 +3671,7 @@ Index: binutils-2.17/bfd/configure if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' -@@ -2836,7 +3321,7 @@ +@@ -2836,7 +3321,7 @@ fi # Define the identity of the package. PACKAGE=bfd @@ -3686,7 +3680,7 @@ Index: binutils-2.17/bfd/configure cat >>confdefs.h <<_ACEOF -@@ -2874,8 +3359,8 @@ +@@ -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 @@ -3697,7 +3691,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -2888,32 +3373,34 @@ +@@ -2888,32 +3373,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -3739,7 +3733,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -2926,27 +3413,41 @@ +@@ -2926,27 +3413,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -3788,7 +3782,7 @@ Index: binutils-2.17/bfd/configure else STRIP="$ac_cv_prog_STRIP" fi -@@ -2967,8 +3468,8 @@ +@@ -2967,8 +3468,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am depcc="$CC" am_compiler_list= @@ -3799,7 +3793,7 @@ Index: binutils-2.17/bfd/configure if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3057,8 +3558,8 @@ +@@ -3057,8 +3558,8 @@ else fi fi @@ -3810,7 +3804,7 @@ Index: binutils-2.17/bfd/configure CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type -@@ -3079,8 +3580,8 @@ +@@ -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 @@ -3821,7 +3815,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3093,32 +3594,34 @@ +@@ -3093,32 +3594,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -3863,7 +3857,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_ac_ct_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3131,26 +3634,41 @@ +@@ -3131,26 +3634,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -3911,7 +3905,7 @@ Index: binutils-2.17/bfd/configure else AR="$ac_cv_prog_AR" fi -@@ -3158,8 +3676,8 @@ +@@ -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 @@ -3922,7 +3916,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3172,32 +3690,34 @@ +@@ -3172,32 +3690,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -3964,7 +3958,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3210,36 +3730,49 @@ +@@ -3210,36 +3730,49 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -4024,7 +4018,7 @@ Index: binutils-2.17/bfd/configure case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; -@@ -3257,12 +3790,12 @@ +@@ -3257,12 +3790,12 @@ no) enable_shared=no ;; esac else enable_shared=no @@ -4041,7 +4035,7 @@ Index: binutils-2.17/bfd/configure case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; -@@ -3280,11 +3813,11 @@ +@@ -3280,11 +3813,11 @@ no) enable_static=no ;; esac else enable_static=yes @@ -4057,7 +4051,7 @@ Index: binutils-2.17/bfd/configure case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; -@@ -3302,20 +3835,21 @@ +@@ -3302,20 +3835,21 @@ no) enable_fast_install=no ;; esac else enable_fast_install=yes @@ -4086,7 +4080,7 @@ Index: binutils-2.17/bfd/configure case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw -@@ -3344,11 +3878,11 @@ +@@ -3344,11 +3878,11 @@ echo $ECHO_N "checking for ld used by GC ;; esac elif test "$with_gnu_ld" = yes; then @@ -4102,7 +4096,7 @@ Index: binutils-2.17/bfd/configure fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 -@@ -3377,17 +3911,17 @@ +@@ -3377,17 +3911,17 @@ fi LD="$lt_cv_path_LD" if test -n "$LD"; then @@ -4126,7 +4120,7 @@ Index: binutils-2.17/bfd/configure if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3398,25 +3932,25 @@ +@@ -3398,25 +3932,25 @@ else lt_cv_prog_gnu_ld=no fi fi @@ -4160,7 +4154,7 @@ Index: binutils-2.17/bfd/configure if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3451,22 +3985,22 @@ +@@ -3451,22 +3985,22 @@ fi fi NM="$lt_cv_path_NM" @@ -4193,7 +4187,7 @@ Index: binutils-2.17/bfd/configure if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3628,8 +4162,8 @@ +@@ -3628,8 +4162,8 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) esac fi @@ -4204,7 +4198,7 @@ Index: binutils-2.17/bfd/configure file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method -@@ -3639,8 +4173,8 @@ +@@ -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 @@ -4215,7 +4209,7 @@ Index: binutils-2.17/bfd/configure if test "${lt_cv_sys_max_cmd_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3691,11 +4225,11 @@ +@@ -3691,11 +4225,11 @@ else fi if test -n "$lt_cv_sys_max_cmd_len" ; then @@ -4231,7 +4225,7 @@ Index: binutils-2.17/bfd/configure fi -@@ -3703,8 +4237,8 @@ +@@ -3703,8 +4237,8 @@ fi case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then @@ -4242,7 +4236,7 @@ Index: binutils-2.17/bfd/configure if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3758,17 +4292,17 @@ +@@ -3758,17 +4292,17 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then @@ -4266,7 +4260,7 @@ Index: binutils-2.17/bfd/configure if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3822,11 +4356,11 @@ +@@ -3822,11 +4356,11 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then @@ -4282,7 +4276,7 @@ Index: binutils-2.17/bfd/configure fi else -@@ -3841,8 +4375,8 @@ +@@ -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 @@ -4293,7 +4287,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3855,32 +4389,34 @@ +@@ -3855,32 +4389,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -4335,7 +4329,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3893,27 +4429,41 @@ +@@ -3893,27 +4429,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -4384,7 +4378,7 @@ Index: binutils-2.17/bfd/configure else RANLIB="$ac_cv_prog_RANLIB" fi -@@ -3921,8 +4471,8 @@ +@@ -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 @@ -4395,7 +4389,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3935,32 +4485,34 @@ +@@ -3935,32 +4485,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -4437,7 +4431,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3973,27 +4525,41 @@ +@@ -3973,27 +4525,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -4486,7 +4480,7 @@ Index: binutils-2.17/bfd/configure else STRIP="$ac_cv_prog_STRIP" fi -@@ -4008,22 +4574,22 @@ +@@ -4008,22 +4574,22 @@ test "$GCC" = yes && libtool_flags="$lib test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" @@ -4516,7 +4510,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -4032,7 +4598,7 @@ test x"$pic_mode" = xno && libtool_flags case $host in *-*-irix6*) # Find out which ABI we are using. @@ -4525,7 +4519,7 @@ Index: binutils-2.17/bfd/configure if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? -@@ -4137,13 +4703,12 @@ +@@ -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" @@ -4541,7 +4535,7 @@ Index: binutils-2.17/bfd/configure ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -@@ -4166,35 +4731,32 @@ +@@ -4166,35 +4731,32 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -4592,7 +4586,7 @@ Index: binutils-2.17/bfd/configure conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' -@@ -4203,8 +4765,8 @@ +@@ -4203,8 +4765,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLA ac_compiler_gnu=$ac_cv_c_compiler_gnu fi @@ -4603,7 +4597,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -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. @@ -4678,7 +4672,7 @@ Index: binutils-2.17/bfd/configure fi fi rm -f confcache -@@ -4292,8 +4873,8 @@ +@@ -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 @@ -4689,7 +4683,7 @@ Index: binutils-2.17/bfd/configure esac fi else -@@ -4319,10 +4900,9 @@ +@@ -4319,10 +4900,9 @@ exec 5>>./config.log @@ -4702,7 +4696,7 @@ Index: binutils-2.17/bfd/configure yes) want64=true ;; no) want64=false ;; *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for 64-bit-bfd option" >&5 -@@ -4331,10 +4911,10 @@ +@@ -4331,10 +4911,10 @@ echo "$as_me: error: bad value ${enablev esac else want64=false @@ -4716,7 +4710,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -4342,21 +4922,21 @@ echo "$as_me: error: enable-targets opti no) enable_targets= ;; *) enable_targets=$enableval ;; esac @@ -4745,7 +4739,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -4365,11 +4945,11 @@ echo "$as_me: error: bad value ${withval esac else want_mmap=false @@ -4761,7 +4755,7 @@ Index: binutils-2.17/bfd/configure yes) use_secureplt=true ;; no) use_secureplt=false ;; *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for secureplt option" >&5 -@@ -4378,7 +4958,8 @@ +@@ -4378,7 +4958,8 @@ echo "$as_me: error: bad value ${enablev esac else use_secureplt=false @@ -4771,7 +4765,7 @@ Index: binutils-2.17/bfd/configure cat >>confdefs.h <<\_ACEOF #define USE_SECUREPLT 1 -@@ -4389,17 +4970,17 @@ +@@ -4389,17 +4970,17 @@ fi GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" @@ -4793,7 +4787,7 @@ Index: binutils-2.17/bfd/configure # Enable -Werror by default when using gcc if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then -@@ -4416,10 +4997,9 @@ +@@ -4416,10 +4997,9 @@ if test "${GCC}" = yes ; then WARN_CFLAGS="${GCC_WARN_CFLAGS}" fi @@ -4806,7 +4800,7 @@ Index: binutils-2.17/bfd/configure yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; no) if test "${GCC}" = yes ; then WARN_CFLAGS="-w" -@@ -4430,7 +5010,8 @@ +@@ -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 @@ -4816,7 +4810,7 @@ Index: binutils-2.17/bfd/configure if test x"$silent" != x"yes" && test x"$WARN_CFLAGS" != x""; then echo "Setting warning flags = $WARN_CFLAGS" 6>&1 -@@ -4440,7 +5021,7 @@ +@@ -4440,7 +5021,7 @@ fi @@ -4825,7 +4819,7 @@ Index: binutils-2.17/bfd/configure if test -z "$target" ; then -@@ -4449,17 +5030,17 @@ +@@ -4449,17 +5030,17 @@ echo "$as_me: error: Unrecognized target { (exit 1); exit 1; }; } fi @@ -4851,7 +4845,7 @@ Index: binutils-2.17/bfd/configure if test $USE_MAINTAINER_MODE = yes; then -@@ -4488,21 +5069,21 @@ +@@ -4488,21 +5069,21 @@ esac *) target_noncanonical=${target_alias} ;; esac @@ -4881,7 +4875,7 @@ Index: binutils-2.17/bfd/configure if test $install_libbfd_p = yes; then -@@ -4545,8 +5126,8 @@ +@@ -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 @@ -4892,7 +4886,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4559,32 +5140,34 @@ +@@ -4559,32 +5140,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -4934,7 +4928,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4597,36 +5180,51 @@ +@@ -4597,36 +5180,51 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -4996,7 +4990,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4639,74 +5237,34 @@ +@@ -4639,74 +5237,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -5080,7 +5074,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4720,7 +5278,7 @@ +@@ -4720,7 +5278,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -5089,7 +5083,7 @@ Index: binutils-2.17/bfd/configure if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue -@@ -4731,6 +5289,7 @@ +@@ -4731,6 +5289,7 @@ do fi done done @@ -5097,7 +5091,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -4748,22 +5307,23 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -5128,7 +5122,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4776,36 +5336,38 @@ +@@ -4776,36 +5336,38 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -5175,7 +5169,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4818,29 +5380,45 @@ +@@ -4818,29 +5380,45 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -5227,7 +5221,7 @@ Index: binutils-2.17/bfd/configure fi fi -@@ -4853,27 +5431,41 @@ +@@ -4853,27 +5431,41 @@ See \`config.log' for more details." >&2 { (exit 1); exit 1; }; } # Provide some information about the compiler. @@ -5279,7 +5273,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4896,50 +5488,49 @@ +@@ -4896,50 +5488,49 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -5353,7 +5347,7 @@ Index: binutils-2.17/bfd/configure /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext -@@ -4955,46 +5546,126 @@ +@@ -4955,46 +5546,126 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -5510,7 +5504,7 @@ Index: binutils-2.17/bfd/configure else if test "$GCC" = yes; then CFLAGS="-O2" -@@ -5002,12 +5673,12 @@ +@@ -5002,12 +5673,12 @@ else CFLAGS= fi fi @@ -5527,7 +5521,7 @@ Index: binutils-2.17/bfd/configure ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -5041,12 +5712,17 @@ +@@ -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 @@ -5547,7 +5541,7 @@ Index: binutils-2.17/bfd/configure int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; -@@ -5061,205 +5737,57 @@ +@@ -5061,205 +5737,57 @@ return f (e, argv, 0) != argv[0] || f return 0; } _ACEOF @@ -5783,7 +5777,7 @@ Index: binutils-2.17/bfd/configure ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -@@ -5277,8 +5805,8 @@ +@@ -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 @@ -5794,7 +5788,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5291,32 +5819,34 @@ +@@ -5291,32 +5819,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -5836,7 +5830,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5329,27 +5859,41 @@ +@@ -5329,27 +5859,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -5885,7 +5879,7 @@ Index: binutils-2.17/bfd/configure else RANLIB="$ac_cv_prog_RANLIB" fi -@@ -5359,8 +5903,8 @@ +@@ -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 @@ -5896,7 +5890,7 @@ Index: binutils-2.17/bfd/configure # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= -@@ -5394,24 +5938,22 @@ +@@ -5394,24 +5938,22 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF @@ -5932,7 +5926,7 @@ Index: binutils-2.17/bfd/configure : else echo "$as_me: failed program was:" >&5 -@@ -5420,9 +5962,10 @@ +@@ -5420,9 +5962,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi @@ -5944,7 +5938,7 @@ Index: binutils-2.17/bfd/configure # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -5432,24 +5975,22 @@ +@@ -5432,24 +5975,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF @@ -5980,7 +5974,7 @@ Index: binutils-2.17/bfd/configure # Broken: success on invalid input. continue else -@@ -5460,6 +6001,7 @@ +@@ -5460,6 +6001,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi @@ -5988,7 +5982,7 @@ Index: binutils-2.17/bfd/configure rm -f conftest.err conftest.$ac_ext done -@@ -5477,8 +6019,8 @@ +@@ -5477,8 +6019,8 @@ fi else ac_cv_prog_CPP=$CPP fi @@ -5999,7 +5993,7 @@ Index: binutils-2.17/bfd/configure ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do -@@ -5501,24 +6043,22 @@ +@@ -5501,24 +6043,22 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF @@ -6035,7 +6029,7 @@ Index: binutils-2.17/bfd/configure : else echo "$as_me: failed program was:" >&5 -@@ -5527,9 +6067,10 @@ +@@ -5527,9 +6067,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi @@ -6047,7 +6041,7 @@ Index: binutils-2.17/bfd/configure # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -5539,24 +6080,22 @@ +@@ -5539,24 +6080,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF @@ -6083,7 +6077,7 @@ Index: binutils-2.17/bfd/configure # Broken: success on invalid input. continue else -@@ -5567,6 +6106,7 @@ +@@ -5567,6 +6106,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi @@ -6091,7 +6085,7 @@ Index: binutils-2.17/bfd/configure rm -f conftest.err conftest.$ac_ext done -@@ -5589,87 +6129,230 @@ +@@ -5589,87 +6129,230 @@ ac_link='$CC -o conftest$ac_exeext $CFLA ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -6392,7 +6386,7 @@ Index: binutils-2.17/bfd/configure if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : -@@ -5713,6 +6396,7 @@ +@@ -5713,6 +6396,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ctype.h> @@ -6400,7 +6394,7 @@ Index: binutils-2.17/bfd/configure #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -@@ -5732,18 +6416,27 @@ +@@ -5732,18 +6416,27 @@ main () for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) @@ -6434,7 +6428,7 @@ Index: binutils-2.17/bfd/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -5756,12 +6449,14 @@ +@@ -5756,12 +6449,14 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi @@ -6452,7 +6446,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF -@@ -5770,8 +6465,8 @@ +@@ -5770,8 +6465,8 @@ _ACEOF fi @@ -6463,7 +6457,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5789,10 +6484,10 @@ +@@ -5789,10 +6484,10 @@ main () #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; @@ -6477,7 +6471,7 @@ Index: binutils-2.17/bfd/configure /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; -@@ -5801,16 +6496,17 @@ +@@ -5801,16 +6496,17 @@ main () an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; @@ -6499,7 +6493,7 @@ Index: binutils-2.17/bfd/configure } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; -@@ -5829,7 +6525,9 @@ +@@ -5829,7 +6525,9 @@ main () } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; @@ -6509,7 +6503,7 @@ Index: binutils-2.17/bfd/configure #endif ; -@@ -5837,38 +6535,34 @@ +@@ -5837,38 +6535,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -6564,7 +6558,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF -@@ -5877,8 +6571,8 @@ +@@ -5877,8 +6571,8 @@ _ACEOF fi @@ -6575,7 +6569,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5898,39 +6592,37 @@ +@@ -5898,39 +6592,37 @@ $ac_kw foo_t foo () {return 0; } _ACEOF rm -f conftest.$ac_objext @@ -6633,7 +6627,7 @@ Index: binutils-2.17/bfd/configure case $ac_cv_c_inline in -@@ -5962,9 +6654,9 @@ +@@ -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` @@ -6646,7 +6640,7 @@ Index: binutils-2.17/bfd/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -5978,38 +6670,35 @@ +@@ -5978,38 +6670,35 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -6702,7 +6696,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -6020,8 +6709,8 @@ fi done @@ -6713,7 +6707,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6032,62 +6721,59 @@ +@@ -6032,62 +6721,59 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -6798,7 +6792,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6098,64 +6784,61 @@ +@@ -6098,64 +6784,61 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -6885,7 +6879,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6170,44 +6853,42 @@ +@@ -6170,44 +6853,42 @@ int main () { char *p = (char *) alloca (2 * sizeof (int)); @@ -6948,7 +6942,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_working_alloca_h = yes; then cat >>confdefs.h <<\_ACEOF -@@ -6216,8 +6897,8 @@ +@@ -6216,8 +6897,8 @@ _ACEOF fi @@ -6959,7 +6953,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6234,7 +6915,7 @@ +@@ -6234,7 +6915,7 @@ cat >>conftest.$ac_ext <<_ACEOF # include <malloc.h> # define alloca _alloca # else @@ -6968,7 +6962,7 @@ Index: binutils-2.17/bfd/configure # include <alloca.h> # else # ifdef _AIX -@@ -6252,44 +6933,42 @@ +@@ -6252,44 +6933,42 @@ int main () { char *p = (char *) alloca (1); @@ -7031,7 +7025,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_func_alloca_works = yes; then -@@ -6303,15 +6982,15 @@ +@@ -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. @@ -7050,7 +7044,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6321,7 +7000,7 @@ +@@ -6321,7 +7000,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -7059,7 +7053,7 @@ Index: binutils-2.17/bfd/configure webecray #else wenotbecray -@@ -6337,14 +7016,14 @@ +@@ -6337,14 +7016,14 @@ fi rm -f conftest* fi @@ -7079,7 +7073,7 @@ Index: binutils-2.17/bfd/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -6370,68 +7049,60 @@ +@@ -6370,68 +7049,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -7171,7 +7165,7 @@ Index: binutils-2.17/bfd/configure if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF -@@ -6444,8 +7115,8 @@ +@@ -6444,8 +7115,8 @@ fi done fi @@ -7182,7 +7176,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6458,6 +7129,7 @@ +@@ -6458,6 +7129,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -7190,7 +7184,7 @@ Index: binutils-2.17/bfd/configure int find_stack_direction () { -@@ -6475,17 +7147,26 @@ +@@ -6475,17 +7147,26 @@ find_stack_direction () int main () { @@ -7222,7 +7216,7 @@ Index: binutils-2.17/bfd/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -6498,11 +7179,13 @@ +@@ -6498,11 +7179,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi @@ -7239,7 +7233,7 @@ Index: binutils-2.17/bfd/configure cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction -@@ -6516,18 +7199,19 @@ +@@ -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` @@ -7267,7 +7261,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -6538,41 +7222,37 @@ +@@ -6538,41 +7222,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -7327,7 +7321,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -6581,24 +7261,22 @@ +@@ -6581,24 +7261,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF @@ -7363,7 +7357,7 @@ Index: binutils-2.17/bfd/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -6606,9 +7284,10 @@ +@@ -6606,9 +7284,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -7376,7 +7370,7 @@ Index: binutils-2.17/bfd/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -6632,25 +7311,19 @@ +@@ -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;} @@ -7409,7 +7403,7 @@ Index: binutils-2.17/bfd/configure fi if test `eval echo '${'$as_ac_Header'}'` = yes; then -@@ -6666,9 +7339,9 @@ +@@ -6666,9 +7339,9 @@ done for ac_func in getpagesize do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -7422,7 +7416,7 @@ Index: binutils-2.17/bfd/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -6694,68 +7367,60 @@ +@@ -6694,68 +7367,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -7514,7 +7508,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -6764,8 +7429,8 @@ _ACEOF fi done @@ -7525,7 +7519,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6807,21 +7472,21 @@ +@@ -6807,21 +7472,21 @@ $ac_includes_default #include <fcntl.h> #include <sys/mman.h> @@ -7551,7 +7545,7 @@ Index: binutils-2.17/bfd/configure # include <sys/param.h> # ifdef EXEC_PAGESIZE # define getpagesize() EXEC_PAGESIZE -@@ -6860,15 +7525,15 @@ +@@ -6860,15 +7525,15 @@ main () /* First, make a file with some known garbage in it. */ data = (char *) malloc (pagesize); if (!data) @@ -7570,7 +7564,7 @@ Index: binutils-2.17/bfd/configure close (fd); /* Next, try to mmap the file at a fixed address which already has -@@ -6876,17 +7541,17 @@ +@@ -6876,17 +7541,17 @@ main () we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) @@ -7593,7 +7587,7 @@ Index: binutils-2.17/bfd/configure /* 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 @@ +@@ -6895,24 +7560,33 @@ main () *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) @@ -7635,7 +7629,7 @@ Index: binutils-2.17/bfd/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -6925,11 +7599,13 @@ +@@ -6925,11 +7599,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_mmap_fixed_mapped=no fi @@ -7652,7 +7646,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_func_mmap_fixed_mapped = yes; then cat >>confdefs.h <<\_ACEOF -@@ -6953,18 +7629,19 @@ +@@ -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` @@ -7680,7 +7674,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -6975,41 +7652,37 @@ +@@ -6975,41 +7652,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -7740,7 +7734,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -7018,24 +7691,22 @@ +@@ -7018,24 +7691,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF @@ -7776,7 +7770,7 @@ Index: binutils-2.17/bfd/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -7043,9 +7714,10 @@ +@@ -7043,9 +7714,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -7789,7 +7783,7 @@ Index: binutils-2.17/bfd/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -7069,25 +7741,19 @@ +@@ -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;} @@ -7822,7 +7816,7 @@ Index: binutils-2.17/bfd/configure fi if test `eval echo '${'$as_ac_Header'}'` = yes; then -@@ -7113,9 +7779,9 @@ +@@ -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` @@ -7835,7 +7829,7 @@ Index: binutils-2.17/bfd/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -7141,68 +7807,60 @@ +@@ -7141,68 +7807,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -7927,7 +7921,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -7217,9 +7875,9 @@ done for ac_func in stpcpy do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -7940,7 +7934,7 @@ Index: binutils-2.17/bfd/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -7245,68 +7903,60 @@ +@@ -7245,68 +7903,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -8032,7 +8026,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -7325,8 +7975,8 @@ _ACEOF fi if test $ac_cv_header_locale_h = yes; then @@ -8043,7 +8037,7 @@ Index: binutils-2.17/bfd/configure if test "${am_cv_val_LC_MESSAGES+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7346,39 +7996,36 @@ +@@ -7346,39 +7996,36 @@ return LC_MESSAGES } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -8100,7 +8094,7 @@ Index: binutils-2.17/bfd/configure if test $am_cv_val_LC_MESSAGES = yes; then cat >>confdefs.h <<\_ACEOF -@@ -7387,34 +8034,34 @@ +@@ -7387,34 +8034,34 @@ _ACEOF fi fi @@ -8151,7 +8145,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -7423,17 +8070,17 @@ echo "${ECHO_T}$nls_cv_force_use_gnu_get CATOBJEXT= if test "${ac_cv_header_libintl_h+set}" = set; then @@ -8175,7 +8169,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -7444,41 +8091,37 @@ +@@ -7444,41 +8091,37 @@ $ac_includes_default #include <libintl.h> _ACEOF rm -f conftest.$ac_objext @@ -8235,7 +8229,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -7487,24 +8130,22 @@ +@@ -7487,24 +8130,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <libintl.h> _ACEOF @@ -8271,7 +8265,7 @@ Index: binutils-2.17/bfd/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -7512,9 +8153,10 @@ +@@ -7512,9 +8153,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -8284,7 +8278,7 @@ Index: binutils-2.17/bfd/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -7538,30 +8180,23 @@ +@@ -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;} @@ -8322,7 +8316,7 @@ Index: binutils-2.17/bfd/configure if test "${gt_cv_func_gettext_libc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7581,43 +8216,40 @@ +@@ -7581,43 +8216,40 @@ return (int) gettext ("") } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -8385,7 +8379,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7630,59 +8262,56 @@ +@@ -7630,59 +8262,56 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -8468,7 +8462,7 @@ Index: binutils-2.17/bfd/configure if test "${gt_cv_func_gettext_libintl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7702,39 +8331,36 @@ +@@ -7702,39 +8331,36 @@ return (int) gettext ("") } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -8525,7 +8519,7 @@ Index: binutils-2.17/bfd/configure fi fi -@@ -7748,8 +8374,8 @@ +@@ -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 @@ -8536,7 +8530,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7775,20 +8401,20 @@ +@@ -7775,20 +8401,20 @@ esac fi MSGFMT="$ac_cv_path_MSGFMT" if test -n "$MSGFMT"; then @@ -8564,7 +8558,7 @@ Index: binutils-2.17/bfd/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -7814,68 +8440,60 @@ +@@ -7814,68 +8440,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -8656,7 +8650,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -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 @@ -8667,7 +8661,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7902,32 +8520,33 @@ +@@ -7902,32 +8520,33 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -8709,7 +8703,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7953,11 +8572,11 @@ +@@ -7953,11 +8572,11 @@ esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test -n "$XGETTEXT"; then @@ -8725,7 +8719,7 @@ Index: binutils-2.17/bfd/configure fi cat >conftest.$ac_ext <<_ACEOF -@@ -7977,37 +8596,34 @@ +@@ -7977,37 +8596,34 @@ extern int _nl_msg_cat_cntr; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -8778,7 +8772,7 @@ Index: binutils-2.17/bfd/configure conftest$ac_exeext conftest.$ac_ext INSTOBJEXT=.mo fi -@@ -8029,8 +8645,8 @@ +@@ -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 @@ -8789,7 +8783,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8056,17 +8672,17 @@ +@@ -8056,17 +8672,17 @@ esac fi MSGFMT="$ac_cv_path_MSGFMT" if test -n "$MSGFMT"; then @@ -8813,7 +8807,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8081,32 +8697,33 @@ +@@ -8081,32 +8697,33 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -8855,7 +8849,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8132,11 +8749,11 @@ +@@ -8132,11 +8749,11 @@ esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test -n "$XGETTEXT"; then @@ -8871,7 +8865,7 @@ Index: binutils-2.17/bfd/configure fi -@@ -8155,8 +8772,8 @@ +@@ -8155,8 +8772,8 @@ fi if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else @@ -8882,7 +8876,7 @@ Index: binutils-2.17/bfd/configure XGETTEXT=":" fi fi -@@ -8205,8 +8822,8 @@ +@@ -8205,8 +8822,8 @@ _ACEOF if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else @@ -8893,7 +8887,7 @@ Index: binutils-2.17/bfd/configure NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in -@@ -8214,8 +8831,8 @@ +@@ -8214,8 +8831,8 @@ echo $ECHO_N "checking for catalogs to b esac done LINGUAS=$NEW_LINGUAS @@ -8904,7 +8898,7 @@ Index: binutils-2.17/bfd/configure fi if test -n "$LINGUAS"; then -@@ -8234,17 +8851,17 @@ +@@ -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 @@ -8928,7 +8922,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8255,41 +8872,37 @@ +@@ -8255,41 +8872,37 @@ $ac_includes_default #include <linux/version.h> _ACEOF rm -f conftest.$ac_objext @@ -8988,7 +8982,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8298,24 +8911,22 @@ +@@ -8298,24 +8911,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <linux/version.h> _ACEOF @@ -9024,7 +9018,7 @@ Index: binutils-2.17/bfd/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -8323,9 +8934,10 @@ +@@ -8323,9 +8934,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -9037,7 +9031,7 @@ Index: binutils-2.17/bfd/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -8349,25 +8961,18 @@ +@@ -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;} @@ -9068,7 +9062,7 @@ Index: binutils-2.17/bfd/configure fi if test $ac_cv_header_linux_version_h = yes; then -@@ -8434,8 +9039,8 @@ +@@ -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. @@ -9079,7 +9073,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -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 @@ -9088,7 +9082,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -8476,21 +9081,22 @@ case $as_dir/ in ;; esac done @@ -9116,7 +9110,7 @@ Index: binutils-2.17/bfd/configure # 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 @@ +@@ -8507,8 +9113,8 @@ BFD_HOST_64_BIT_DEFINED=0 BFD_HOST_64_BIT= BFD_HOST_U_64_BIT= @@ -9127,7 +9121,7 @@ Index: binutils-2.17/bfd/configure if test "${bfd_cv_has_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8528,43 +9134,39 @@ +@@ -8528,43 +9134,39 @@ unsigned long long ll = 1844674407370955 } _ACEOF rm -f conftest.$ac_objext @@ -9189,7 +9183,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_type_long_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8575,61 +9177,57 @@ +@@ -8575,61 +9177,57 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -9276,7 +9270,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -8639,10 +9237,11 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -9289,7 +9283,7 @@ Index: binutils-2.17/bfd/configure test_array [0] = 0 ; -@@ -8650,27 +9249,22 @@ +@@ -8650,27 +9249,22 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext @@ -9328,7 +9322,7 @@ Index: binutils-2.17/bfd/configure ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF -@@ -8680,10 +9274,11 @@ +@@ -8680,10 +9274,11 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -9341,7 +9335,7 @@ Index: binutils-2.17/bfd/configure test_array [0] = 0 ; -@@ -8691,56 +9286,53 @@ +@@ -8691,56 +9286,53 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext @@ -9420,7 +9414,7 @@ Index: binutils-2.17/bfd/configure test_array [0] = 0 ; -@@ -8748,27 +9340,22 @@ +@@ -8748,27 +9340,22 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext @@ -9459,7 +9453,7 @@ Index: binutils-2.17/bfd/configure ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF -@@ -8778,10 +9365,11 @@ +@@ -8778,10 +9365,11 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -9472,7 +9466,7 @@ Index: binutils-2.17/bfd/configure test_array [0] = 0 ; -@@ -8789,50 +9377,48 @@ +@@ -8789,50 +9377,48 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext @@ -9547,7 +9541,7 @@ Index: binutils-2.17/bfd/configure # 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 @@ +@@ -8843,10 +9429,11 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -9560,7 +9554,7 @@ Index: binutils-2.17/bfd/configure test_array [0] = 0 ; -@@ -8854,52 +9441,45 @@ +@@ -8854,52 +9441,45 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext @@ -9634,7 +9628,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8907,8 +9487,9 @@ +@@ -8907,8 +9487,9 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -9646,7 +9640,7 @@ Index: binutils-2.17/bfd/configure #include <stdio.h> #include <stdlib.h> int -@@ -8917,35 +9498,44 @@ +@@ -8917,35 +9498,44 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) @@ -9704,7 +9698,7 @@ Index: binutils-2.17/bfd/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -8956,22 +9546,25 @@ +@@ -8956,22 +9546,25 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) @@ -9740,7 +9734,7 @@ Index: binutils-2.17/bfd/configure cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long _ACEOF -@@ -8979,8 +9572,8 @@ +@@ -8979,8 +9572,8 @@ _ACEOF fi @@ -9751,7 +9745,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_type_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8991,61 +9584,57 @@ +@@ -8991,61 +9584,57 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -9838,7 +9832,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -9055,10 +9644,11 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -9851,7 +9845,7 @@ Index: binutils-2.17/bfd/configure test_array [0] = 0 ; -@@ -9066,27 +9656,22 @@ +@@ -9066,27 +9656,22 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext @@ -9890,7 +9884,7 @@ Index: binutils-2.17/bfd/configure ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF -@@ -9096,10 +9681,11 @@ +@@ -9096,10 +9681,11 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -9903,7 +9897,7 @@ Index: binutils-2.17/bfd/configure test_array [0] = 0 ; -@@ -9107,56 +9693,53 @@ +@@ -9107,56 +9693,53 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext @@ -9982,7 +9976,7 @@ Index: binutils-2.17/bfd/configure test_array [0] = 0 ; -@@ -9164,27 +9747,22 @@ +@@ -9164,27 +9747,22 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext @@ -10021,7 +10015,7 @@ Index: binutils-2.17/bfd/configure ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF -@@ -9194,10 +9772,11 @@ +@@ -9194,10 +9772,11 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -10034,7 +10028,7 @@ Index: binutils-2.17/bfd/configure test_array [0] = 0 ; -@@ -9205,50 +9784,48 @@ +@@ -9205,50 +9784,48 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext @@ -10109,7 +10103,7 @@ Index: binutils-2.17/bfd/configure # 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 @@ +@@ -9259,10 +9836,11 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -10122,7 +10116,7 @@ Index: binutils-2.17/bfd/configure test_array [0] = 0 ; -@@ -9270,52 +9848,45 @@ +@@ -9270,52 +9848,45 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext @@ -10196,7 +10190,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -9323,8 +9894,9 @@ +@@ -9323,8 +9894,9 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -10208,7 +10202,7 @@ Index: binutils-2.17/bfd/configure #include <stdio.h> #include <stdlib.h> int -@@ -9333,35 +9905,44 @@ +@@ -9333,35 +9905,44 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) @@ -10266,7 +10260,7 @@ Index: binutils-2.17/bfd/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -9372,22 +9953,25 @@ +@@ -9372,22 +9953,25 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) @@ -10302,7 +10296,7 @@ Index: binutils-2.17/bfd/configure cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF -@@ -9428,8 +10012,8 @@ +@@ -9428,8 +10012,8 @@ fi if test "x$cross_compiling" = "xno"; then EXEEXT_FOR_BUILD='$(EXEEXT)' else @@ -10313,7 +10307,7 @@ Index: binutils-2.17/bfd/configure if test "${bfd_cv_build_exeext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9446,8 +10030,8 @@ +@@ -9446,8 +10030,8 @@ else rm -f conftest* test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no fi @@ -10324,7 +10318,7 @@ Index: binutils-2.17/bfd/configure EXEEXT_FOR_BUILD="" test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext} fi -@@ -9462,18 +10046,19 @@ +@@ -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` @@ -10352,7 +10346,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -9484,41 +10069,37 @@ +@@ -9484,41 +10069,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -10412,7 +10406,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -9527,24 +10108,22 @@ +@@ -9527,24 +10108,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF @@ -10448,7 +10442,7 @@ Index: binutils-2.17/bfd/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -9552,9 +10131,10 @@ +@@ -9552,9 +10131,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -10461,7 +10455,7 @@ Index: binutils-2.17/bfd/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -9578,25 +10158,19 @@ +@@ -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;} @@ -10494,7 +10488,7 @@ Index: binutils-2.17/bfd/configure fi if test `eval echo '${'$as_ac_Header'}'` = yes; then -@@ -9614,18 +10188,19 @@ +@@ -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` @@ -10522,7 +10516,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -9636,41 +10211,37 @@ +@@ -9636,41 +10211,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -10582,7 +10576,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -9679,24 +10250,22 @@ +@@ -9679,24 +10250,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF @@ -10618,7 +10612,7 @@ Index: binutils-2.17/bfd/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -9704,9 +10273,10 @@ +@@ -9704,9 +10273,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -10631,7 +10625,7 @@ Index: binutils-2.17/bfd/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -9730,25 +10300,19 @@ +@@ -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;} @@ -10664,7 +10658,7 @@ Index: binutils-2.17/bfd/configure fi if test `eval echo '${'$as_ac_Header'}'` = yes; then -@@ -9760,8 +10324,8 @@ +@@ -9760,8 +10324,8 @@ fi done @@ -10675,7 +10669,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_header_time+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9785,38 +10349,34 @@ +@@ -9785,38 +10349,34 @@ return 0; } _ACEOF rm -f conftest.$ac_objext @@ -10730,7 +10724,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_header_time = yes; then cat >>confdefs.h <<\_ACEOF -@@ -9833,9 +10393,9 @@ +@@ -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` @@ -10743,7 +10737,7 @@ Index: binutils-2.17/bfd/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -9857,38 +10417,35 @@ +@@ -9857,38 +10417,35 @@ return 0; } _ACEOF rm -f conftest.$ac_objext @@ -10799,7 +10793,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -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 @@ -10815,7 +10809,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -9914,126 +10470,83 @@ +@@ -9914,126 +10470,83 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -10985,7 +10979,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -10041,122 +10554,80 @@ +@@ -10041,122 +10554,80 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -11151,7 +11145,7 @@ Index: binutils-2.17/bfd/configure if test "${gcc_cv_header_string+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10177,38 +10648,34 @@ +@@ -10177,38 +10648,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -11206,7 +11200,7 @@ Index: binutils-2.17/bfd/configure if test $gcc_cv_header_string = yes; then cat >>confdefs.h <<\_ACEOF -@@ -10227,9 +10694,9 @@ +@@ -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` @@ -11219,7 +11213,7 @@ Index: binutils-2.17/bfd/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -10255,68 +10722,60 @@ +@@ -10255,68 +10722,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -11311,7 +11305,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -10329,9 +10788,9 @@ done for ac_func in strtoull do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -11324,7 +11318,7 @@ Index: binutils-2.17/bfd/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -10357,68 +10816,60 @@ +@@ -10357,68 +10816,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -11416,7 +11410,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -10428,8 +10879,8 @@ fi done @@ -11427,7 +11421,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_have_decl_basename+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10444,7 +10895,7 @@ +@@ -10444,7 +10895,7 @@ int main () { #ifndef basename @@ -11436,7 +11430,7 @@ Index: binutils-2.17/bfd/configure #endif ; -@@ -10452,38 +10903,34 @@ +@@ -10452,38 +10903,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -11491,7 +11485,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_have_decl_basename = yes; then cat >>confdefs.h <<_ACEOF -@@ -10500,8 +10947,8 @@ +@@ -10500,8 +10947,8 @@ _ACEOF fi @@ -11502,7 +11496,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_have_decl_ftello+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10516,7 +10963,7 @@ +@@ -10516,7 +10963,7 @@ int main () { #ifndef ftello @@ -11511,7 +11505,7 @@ Index: binutils-2.17/bfd/configure #endif ; -@@ -10524,38 +10971,34 @@ +@@ -10524,38 +10971,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -11566,7 +11560,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_have_decl_ftello = yes; then cat >>confdefs.h <<_ACEOF -@@ -10572,8 +11015,8 @@ +@@ -10572,8 +11015,8 @@ _ACEOF fi @@ -11577,7 +11571,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_have_decl_ftello64+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10588,7 +11031,7 @@ +@@ -10588,7 +11031,7 @@ int main () { #ifndef ftello64 @@ -11586,7 +11580,7 @@ Index: binutils-2.17/bfd/configure #endif ; -@@ -10596,38 +11039,34 @@ +@@ -10596,38 +11039,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -11641,7 +11635,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_have_decl_ftello64 = yes; then cat >>confdefs.h <<_ACEOF -@@ -10644,8 +11083,8 @@ +@@ -10644,8 +11083,8 @@ _ACEOF fi @@ -11652,7 +11646,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_have_decl_fseeko+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10660,7 +11099,7 @@ +@@ -10660,7 +11099,7 @@ int main () { #ifndef fseeko @@ -11661,7 +11655,7 @@ Index: binutils-2.17/bfd/configure #endif ; -@@ -10668,38 +11107,34 @@ +@@ -10668,38 +11107,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -11716,7 +11710,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_have_decl_fseeko = yes; then cat >>confdefs.h <<_ACEOF -@@ -10716,8 +11151,8 @@ +@@ -10716,8 +11151,8 @@ _ACEOF fi @@ -11727,7 +11721,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_have_decl_fseeko64+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10732,7 +11167,7 @@ +@@ -10732,7 +11167,7 @@ int main () { #ifndef fseeko64 @@ -11736,7 +11730,7 @@ Index: binutils-2.17/bfd/configure #endif ; -@@ -10740,38 +11175,34 @@ +@@ -10740,38 +11175,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -11791,7 +11785,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_have_decl_fseeko64 = yes; then cat >>confdefs.h <<_ACEOF -@@ -10799,8 +11230,8 @@ +@@ -10799,8 +11230,8 @@ _ACEOF ;; esac @@ -11802,7 +11796,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_have_decl_ffs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10815,7 +11246,7 @@ +@@ -10815,7 +11246,7 @@ int main () { #ifndef ffs @@ -11811,7 +11805,7 @@ Index: binutils-2.17/bfd/configure #endif ; -@@ -10823,38 +11254,34 @@ +@@ -10823,38 +11254,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -11866,7 +11860,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_have_decl_ffs = yes; then cat >>confdefs.h <<_ACEOF -@@ -10871,8 +11298,8 @@ +@@ -10871,8 +11298,8 @@ _ACEOF fi @@ -11877,7 +11871,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_have_decl_free+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10887,7 +11314,7 @@ +@@ -10887,7 +11314,7 @@ int main () { #ifndef free @@ -11886,7 +11880,7 @@ Index: binutils-2.17/bfd/configure #endif ; -@@ -10895,38 +11322,34 @@ +@@ -10895,38 +11322,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -11941,7 +11935,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_have_decl_free = yes; then cat >>confdefs.h <<_ACEOF -@@ -10943,8 +11366,8 @@ +@@ -10943,8 +11366,8 @@ _ACEOF fi @@ -11952,7 +11946,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_have_decl_getenv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10959,7 +11382,7 @@ +@@ -10959,7 +11382,7 @@ int main () { #ifndef getenv @@ -11961,7 +11955,7 @@ Index: binutils-2.17/bfd/configure #endif ; -@@ -10967,38 +11390,34 @@ +@@ -10967,38 +11390,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -12016,7 +12010,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_have_decl_getenv = yes; then cat >>confdefs.h <<_ACEOF -@@ -11015,8 +11434,8 @@ +@@ -11015,8 +11434,8 @@ _ACEOF fi @@ -12027,7 +12021,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_have_decl_malloc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -11031,7 +11450,7 @@ +@@ -11031,7 +11450,7 @@ int main () { #ifndef malloc @@ -12036,7 +12030,7 @@ Index: binutils-2.17/bfd/configure #endif ; -@@ -11039,38 +11458,34 @@ +@@ -11039,38 +11458,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -12091,7 +12085,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_have_decl_malloc = yes; then cat >>confdefs.h <<_ACEOF -@@ -11087,8 +11502,8 @@ +@@ -11087,8 +11502,8 @@ _ACEOF fi @@ -12102,7 +12096,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_have_decl_realloc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -11103,7 +11518,7 @@ +@@ -11103,7 +11518,7 @@ int main () { #ifndef realloc @@ -12111,7 +12105,7 @@ Index: binutils-2.17/bfd/configure #endif ; -@@ -11111,38 +11526,34 @@ +@@ -11111,38 +11526,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -12166,7 +12160,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_have_decl_realloc = yes; then cat >>confdefs.h <<_ACEOF -@@ -11159,8 +11570,8 @@ +@@ -11159,8 +11570,8 @@ _ACEOF fi @@ -12177,7 +12171,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_have_decl_stpcpy+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -11175,7 +11586,7 @@ +@@ -11175,7 +11586,7 @@ int main () { #ifndef stpcpy @@ -12186,7 +12180,7 @@ Index: binutils-2.17/bfd/configure #endif ; -@@ -11183,38 +11594,34 @@ +@@ -11183,38 +11594,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -12241,7 +12235,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_have_decl_stpcpy = yes; then cat >>confdefs.h <<_ACEOF -@@ -11231,8 +11638,8 @@ +@@ -11231,8 +11638,8 @@ _ACEOF fi @@ -12252,7 +12246,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_have_decl_strstr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -11247,7 +11654,7 @@ +@@ -11247,7 +11654,7 @@ int main () { #ifndef strstr @@ -12261,7 +12255,7 @@ Index: binutils-2.17/bfd/configure #endif ; -@@ -11255,38 +11662,34 @@ +@@ -11255,38 +11662,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -12316,7 +12310,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_have_decl_strstr = yes; then cat >>confdefs.h <<_ACEOF -@@ -11303,8 +11706,8 @@ +@@ -11303,8 +11706,8 @@ _ACEOF fi @@ -12327,7 +12321,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_have_decl_snprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -11319,7 +11722,7 @@ +@@ -11319,7 +11722,7 @@ int main () { #ifndef snprintf @@ -12336,7 +12330,7 @@ Index: binutils-2.17/bfd/configure #endif ; -@@ -11327,38 +11730,34 @@ +@@ -11327,38 +11730,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -12391,7 +12385,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_have_decl_snprintf = yes; then cat >>confdefs.h <<_ACEOF -@@ -11375,8 +11774,8 @@ +@@ -11375,8 +11774,8 @@ _ACEOF fi @@ -12402,7 +12396,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_have_decl_vsnprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -11391,7 +11790,7 @@ +@@ -11391,7 +11790,7 @@ int main () { #ifndef vsnprintf @@ -12411,7 +12405,7 @@ Index: binutils-2.17/bfd/configure #endif ; -@@ -11399,38 +11798,34 @@ +@@ -11399,38 +11798,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -12466,7 +12460,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_have_decl_vsnprintf = yes; then cat >>confdefs.h <<_ACEOF -@@ -11609,8 +12004,8 @@ +@@ -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 @@ -12477,7 +12471,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -11627,42 +12022,38 @@ +@@ -11627,42 +12022,38 @@ struct core_dumpx c; c.c_impl = 0; } _ACEOF rm -f conftest.$ac_objext @@ -12537,7 +12531,7 @@ Index: binutils-2.17/bfd/configure ;; rs6000-*-aix4*) COREFILE=rs6000-core.lo ;; rs6000-*-*) COREFILE=rs6000-core.lo ;; -@@ -11726,18 +12117,19 @@ +@@ -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` @@ -12565,7 +12559,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -11748,41 +12140,37 @@ +@@ -11748,41 +12140,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -12625,7 +12619,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -11791,24 +12179,22 @@ +@@ -11791,24 +12179,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF @@ -12661,7 +12655,7 @@ Index: binutils-2.17/bfd/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -11816,9 +12202,10 @@ +@@ -11816,9 +12202,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -12674,7 +12668,7 @@ Index: binutils-2.17/bfd/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -11842,25 +12229,19 @@ +@@ -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;} @@ -12707,7 +12701,7 @@ Index: binutils-2.17/bfd/configure fi if test `eval echo '${'$as_ac_Header'}'` = yes; then -@@ -11873,8 +12254,8 @@ +@@ -11873,8 +12254,8 @@ fi done if test "$ac_cv_header_sys_procfs_h" = yes; then @@ -12718,7 +12712,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -11896,36 +12277,32 @@ prstatus_t avar } _ACEOF rm -f conftest.$ac_objext @@ -12769,7 +12763,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_prstatus_t = yes; then -@@ -11935,11 +12312,11 @@ +@@ -11935,11 +12312,11 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -12785,7 +12779,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -11961,36 +12338,32 @@ prstatus32_t avar } _ACEOF rm -f conftest.$ac_objext @@ -12836,7 +12830,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_prstatus32_t = yes; then -@@ -12000,11 +12373,11 @@ +@@ -12000,11 +12373,11 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -12852,7 +12846,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -12026,36 +12399,32 @@ prstatus_t avar; void* aref = (void*) &a } _ACEOF rm -f conftest.$ac_objext @@ -12903,7 +12897,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_member_prstatus_t_pr_who = yes; then -@@ -12065,11 +12434,11 @@ +@@ -12065,11 +12434,11 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -12919,7 +12913,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -12091,36 +12460,32 @@ prstatus32_t avar; void* aref = (void*) } _ACEOF rm -f conftest.$ac_objext @@ -12970,7 +12964,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who = yes; then -@@ -12130,11 +12495,11 @@ +@@ -12130,11 +12495,11 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -12986,7 +12980,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -12156,36 +12521,32 @@ pstatus_t avar } _ACEOF rm -f conftest.$ac_objext @@ -13037,7 +13031,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_pstatus_t = yes; then -@@ -12195,11 +12556,11 @@ +@@ -12195,11 +12556,11 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -13053,7 +13047,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -12221,36 +12582,32 @@ pxstatus_t avar } _ACEOF rm -f conftest.$ac_objext @@ -13104,7 +13098,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_pxstatus_t = yes; then -@@ -12260,11 +12617,11 @@ +@@ -12260,11 +12617,11 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -13120,7 +13114,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -12286,36 +12643,32 @@ pstatus32_t avar } _ACEOF rm -f conftest.$ac_objext @@ -13171,7 +13165,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_pstatus32_t = yes; then -@@ -12325,11 +12678,11 @@ +@@ -12325,11 +12678,11 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -13187,7 +13181,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -12351,36 +12704,32 @@ prpsinfo_t avar } _ACEOF rm -f conftest.$ac_objext @@ -13238,7 +13232,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_prpsinfo_t = yes; then -@@ -12390,11 +12739,11 @@ +@@ -12390,11 +12739,11 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -13254,7 +13248,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -12416,36 +12765,32 @@ prpsinfo32_t avar } _ACEOF rm -f conftest.$ac_objext @@ -13305,7 +13299,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_prpsinfo32_t = yes; then -@@ -12455,11 +12800,11 @@ +@@ -12455,11 +12800,11 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -13321,7 +13315,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -12481,36 +12826,32 @@ psinfo_t avar } _ACEOF rm -f conftest.$ac_objext @@ -13372,7 +13366,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_psinfo_t = yes; then -@@ -12520,11 +12861,11 @@ +@@ -12520,11 +12861,11 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -13388,7 +13382,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -12546,36 +12887,32 @@ psinfo32_t avar } _ACEOF rm -f conftest.$ac_objext @@ -13439,7 +13433,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_psinfo32_t = yes; then -@@ -12585,11 +12922,11 @@ +@@ -12585,11 +12922,11 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -13455,7 +13449,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -12611,36 +12948,32 @@ lwpstatus_t avar } _ACEOF rm -f conftest.$ac_objext @@ -13506,7 +13500,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_lwpstatus_t = yes; then -@@ -12650,11 +12983,11 @@ +@@ -12650,11 +12983,11 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -13522,7 +13516,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -12676,36 +13009,32 @@ lwpxstatus_t avar } _ACEOF rm -f conftest.$ac_objext @@ -13573,7 +13567,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_lwpxstatus_t = yes; then -@@ -12715,11 +13044,11 @@ +@@ -12715,11 +13044,11 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -13589,7 +13583,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -12741,36 +13070,32 @@ lwpstatus_t avar; void* aref = (void*) & } _ACEOF rm -f conftest.$ac_objext @@ -13640,7 +13634,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_context = yes; then -@@ -12780,11 +13105,11 @@ +@@ -12780,11 +13105,11 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -13656,7 +13650,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -12806,36 +13131,32 @@ lwpstatus_t avar; void* aref = (void*) & } _ACEOF rm -f conftest.$ac_objext @@ -13707,7 +13701,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg = yes; then -@@ -12845,11 +13166,11 @@ +@@ -12845,11 +13166,11 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -13723,7 +13717,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -12871,36 +13192,32 @@ win32_pstatus_t avar } _ACEOF rm -f conftest.$ac_objext @@ -13774,7 +13768,7 @@ Index: binutils-2.17/bfd/configure fi if test $bfd_cv_have_sys_procfs_type_win32_pstatus_t = yes; then -@@ -12910,8 +13227,8 @@ +@@ -12910,8 +13227,8 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -13785,7 +13779,7 @@ Index: binutils-2.17/bfd/configure fi fi -@@ -13070,6 +13387,7 @@ +@@ -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" ;; @@ -13793,7 +13787,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -13389,8 +13707,8 @@ echo "$as_me: WARNING: your compiler may fi if test -n "$GCC" ; then bad_64bit_gcc=no; @@ -13804,7 +13798,7 @@ Index: binutils-2.17/bfd/configure # Add more tests for gcc versions with non-working 64-bit support here. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -13403,11 +13721,11 @@ +@@ -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; @@ -13820,7 +13814,7 @@ Index: binutils-2.17/bfd/configure fi rm -f conftest* -@@ -13445,9 +13763,9 @@ +@@ -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` @@ -13833,7 +13827,7 @@ Index: binutils-2.17/bfd/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -13473,68 +13791,60 @@ +@@ -13473,68 +13791,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -13925,7 +13919,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -13544,8 +13854,8 @@ fi done if test x"$ac_cv_func_ftello" = xyes -a x"$ac_cv_func_fseeko" = xyes; then @@ -13936,7 +13930,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -13556,61 +13866,57 @@ +@@ -13556,61 +13866,57 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -14023,7 +14017,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -13620,10 +13926,11 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -14036,7 +14030,7 @@ Index: binutils-2.17/bfd/configure test_array [0] = 0 ; -@@ -13631,27 +13938,22 @@ +@@ -13631,27 +13938,22 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext @@ -14075,7 +14069,7 @@ Index: binutils-2.17/bfd/configure ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF -@@ -13661,10 +13963,11 @@ +@@ -13661,10 +13963,11 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -14088,7 +14082,7 @@ Index: binutils-2.17/bfd/configure test_array [0] = 0 ; -@@ -13672,56 +13975,53 @@ +@@ -13672,56 +13975,53 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext @@ -14167,7 +14161,7 @@ Index: binutils-2.17/bfd/configure test_array [0] = 0 ; -@@ -13729,27 +14029,22 @@ +@@ -13729,27 +14029,22 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext @@ -14206,7 +14200,7 @@ Index: binutils-2.17/bfd/configure ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF -@@ -13759,10 +14054,11 @@ +@@ -13759,10 +14054,11 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -14219,7 +14213,7 @@ Index: binutils-2.17/bfd/configure test_array [0] = 0 ; -@@ -13770,50 +14066,48 @@ +@@ -13770,50 +14066,48 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext @@ -14294,7 +14288,7 @@ Index: binutils-2.17/bfd/configure # 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 @@ +@@ -13824,10 +14118,11 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -14307,7 +14301,7 @@ Index: binutils-2.17/bfd/configure test_array [0] = 0 ; -@@ -13835,52 +14130,45 @@ +@@ -13835,52 +14130,45 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext @@ -14381,7 +14375,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -13888,8 +14176,9 @@ +@@ -13888,8 +14176,9 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -14393,7 +14387,7 @@ Index: binutils-2.17/bfd/configure #include <stdio.h> #include <stdlib.h> int -@@ -13898,35 +14187,44 @@ +@@ -13898,35 +14187,44 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) @@ -14451,7 +14445,7 @@ Index: binutils-2.17/bfd/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -13937,30 +14235,33 @@ +@@ -13937,30 +14235,33 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) @@ -14497,7 +14491,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -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 @@ -14508,7 +14502,7 @@ Index: binutils-2.17/bfd/configure -@@ -13987,18 +14288,19 @@ +@@ -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` @@ -14536,7 +14530,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -14009,41 +14311,37 @@ +@@ -14009,41 +14311,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -14596,7 +14590,7 @@ Index: binutils-2.17/bfd/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -14052,24 +14350,22 @@ +@@ -14052,24 +14350,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF @@ -14632,7 +14626,7 @@ Index: binutils-2.17/bfd/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -14077,9 +14373,10 @@ +@@ -14077,9 +14373,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -14645,7 +14639,7 @@ Index: binutils-2.17/bfd/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -14103,25 +14400,19 @@ +@@ -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;} @@ -14678,7 +14672,7 @@ Index: binutils-2.17/bfd/configure fi if test `eval echo '${'$as_ac_Header'}'` = yes; then -@@ -14137,9 +14428,9 @@ +@@ -14137,9 +14428,9 @@ done for ac_func in getpagesize do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -14691,7 +14685,7 @@ Index: binutils-2.17/bfd/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -14165,68 +14456,60 @@ +@@ -14165,68 +14456,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -14783,7 +14777,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -14235,8 +14518,8 @@ _ACEOF fi done @@ -14794,7 +14788,7 @@ Index: binutils-2.17/bfd/configure if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -14278,21 +14561,21 @@ +@@ -14278,21 +14561,21 @@ $ac_includes_default #include <fcntl.h> #include <sys/mman.h> @@ -14820,7 +14814,7 @@ Index: binutils-2.17/bfd/configure # include <sys/param.h> # ifdef EXEC_PAGESIZE # define getpagesize() EXEC_PAGESIZE -@@ -14331,15 +14614,15 @@ +@@ -14331,15 +14614,15 @@ main () /* First, make a file with some known garbage in it. */ data = (char *) malloc (pagesize); if (!data) @@ -14839,7 +14833,7 @@ Index: binutils-2.17/bfd/configure close (fd); /* Next, try to mmap the file at a fixed address which already has -@@ -14347,17 +14630,17 @@ +@@ -14347,17 +14630,17 @@ main () we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) @@ -14862,7 +14856,7 @@ Index: binutils-2.17/bfd/configure /* 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 @@ +@@ -14366,24 +14649,33 @@ main () *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) @@ -14904,7 +14898,7 @@ Index: binutils-2.17/bfd/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -14396,11 +14688,13 @@ +@@ -14396,11 +14688,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_mmap_fixed_mapped=no fi @@ -14921,7 +14915,7 @@ Index: binutils-2.17/bfd/configure if test $ac_cv_func_mmap_fixed_mapped = yes; then cat >>confdefs.h <<\_ACEOF -@@ -14415,9 +14709,9 @@ +@@ -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` @@ -14934,7 +14928,7 @@ Index: binutils-2.17/bfd/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -14443,68 +14737,60 @@ +@@ -14443,68 +14737,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -15026,7 +15020,7 @@ Index: binutils-2.17/bfd/configure 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 @@ +@@ -14522,9 +14808,9 @@ _ACEOF esac rm -f doc/config.status @@ -15038,7 +15032,7 @@ Index: binutils-2.17/bfd/configure -@@ -14549,39 +14835,58 @@ +@@ -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. @@ -15113,7 +15107,7 @@ Index: binutils-2.17/bfd/configure fi fi rm -f confcache -@@ -14590,32 +14895,18 @@ +@@ -14590,32 +14895,18 @@ test "x$prefix" = xNONE && prefix=$ac_de # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' @@ -15152,7 +15146,7 @@ Index: binutils-2.17/bfd/configure done LIBOBJS=$ac_libobjs -@@ -14674,17 +14965,45 @@ +@@ -14674,17 +14965,45 @@ cat >>$CONFIG_STATUS <<\_ACEOF ## M4sh Initialization. ## ## --------------------- ## @@ -15202,7 +15196,7 @@ Index: binutils-2.17/bfd/configure # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -@@ -14694,8 +15013,43 @@ +@@ -14694,8 +15013,43 @@ else fi @@ -15247,7 +15241,7 @@ Index: binutils-2.17/bfd/configure PS1='$ ' PS2='> ' PS4='+ ' -@@ -14709,18 +15063,19 @@ +@@ -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 @@ -15270,7 +15264,7 @@ Index: binutils-2.17/bfd/configure as_basename=basename else as_basename=false -@@ -14728,159 +15083,120 @@ +@@ -14728,159 +15083,120 @@ fi # Name of the executable. @@ -15501,7 +15495,7 @@ Index: binutils-2.17/bfd/configure if mkdir -p . 2>/dev/null; then as_mkdir_p=: -@@ -14889,7 +15205,28 @@ +@@ -14889,7 +15205,28 @@ else as_mkdir_p=false fi @@ -15531,7 +15525,7 @@ Index: binutils-2.17/bfd/configure # 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 @@ +@@ -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'" @@ -15567,7 +15561,7 @@ Index: binutils-2.17/bfd/configure CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS -@@ -14930,30 +15250,20 @@ +@@ -14930,30 +15250,20 @@ generated by GNU Autoconf 2.59. Invocat CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ @@ -15606,7 +15600,7 @@ Index: binutils-2.17/bfd/configure ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. -@@ -14961,7 +15271,7 @@ +@@ -14961,7 +15271,7 @@ current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit @@ -15615,7 +15609,7 @@ Index: binutils-2.17/bfd/configure -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 @@ +@@ -14980,19 +15290,21 @@ Configuration commands: $config_commands Report bugs to <bug-autoconf@gnu.org>." @@ -15643,7 +15637,7 @@ Index: binutils-2.17/bfd/configure _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -@@ -15003,39 +15315,24 @@ +@@ -15003,39 +15315,24 @@ while test $# != 0 do case $1 in --*=*) @@ -15689,7 +15683,7 @@ Index: binutils-2.17/bfd/configure debug=: ;; --file | --fil | --fi | --f ) $ac_shift -@@ -15045,18 +15342,24 @@ +@@ -15045,18 +15342,24 @@ Try \`$0 --help' for more information." $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; @@ -15719,7 +15713,7 @@ Index: binutils-2.17/bfd/configure esac shift -@@ -15072,42 +15375,54 @@ +@@ -15072,42 +15375,54 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then @@ -15789,7 +15783,7 @@ Index: binutils-2.17/bfd/configure # 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 @@ +@@ -15119,401 +15434,504 @@ if $ac_need_defaults; then fi # Have a temporary directory for convenience. Make it in the build tree @@ -16635,7 +16629,7 @@ Index: binutils-2.17/bfd/configure cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub -@@ -15521,248 +15939,130 @@ +@@ -15521,248 +15939,130 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b @@ -16986,7 +16980,7 @@ Index: binutils-2.17/bfd/configure # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do -@@ -15773,135 +16073,39 @@ +@@ -15773,135 +16073,39 @@ for _am_header in $config_headers :; do _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done @@ -17148,7 +17142,7 @@ Index: binutils-2.17/bfd/configure # 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 @@ +@@ -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 @@ -17186,7 +17180,7 @@ Index: binutils-2.17/bfd/configure else continue fi -@@ -15944,54 +16159,80 @@ +@@ -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 @@ -17297,31 +17291,9 @@ Index: binutils-2.17/bfd/configure { (exit 0); exit 0; } _ACEOF -Index: binutils-2.17/bfd/configure.in -=================================================================== ---- binutils-2.17.orig/bfd/configure.in 2007-06-28 09:19:34.170041816 +0200 -+++ binutils-2.17/bfd/configure.in 2007-06-28 09:19:36.576675952 +0200 -@@ -8,7 +8,7 @@ - AC_CANONICAL_TARGET - AC_ISC_POSIX - --AM_INIT_AUTOMAKE(bfd, 2.17) -+AM_INIT_AUTOMAKE(bfd, 2.17.atmel.0.0.99) - - dnl These must be called before AM_PROG_LIBTOOL, because it may want - dnl to call AC_CHECK_PROG. -@@ -583,6 +583,7 @@ - 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" ;; -Index: binutils-2.17/bfd/cpu-avr32.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/bfd/cpu-avr32.c 2007-06-28 09:19:36.576675952 +0200 +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. @@ -17371,18 +17343,160 @@ Index: binutils-2.17/bfd/cpu-avr32.c +}; + +const bfd_arch_info_type bfd_avr32_arch = -+ N(bfd_mach_avr32_ap, "avr32:ap", TRUE, &cpu_info[0]); -Index: binutils-2.17/bfd/doc/Makefile.in -=================================================================== ---- binutils-2.17.orig/bfd/doc/Makefile.in 2007-06-28 09:19:34.180040296 +0200 -+++ binutils-2.17/bfd/doc/Makefile.in 2007-06-28 09:19:36.577675800 +0200 ++ 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 @@ +@@ -105,6 +105,7 @@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ @@ -17390,7 +17504,7 @@ Index: binutils-2.17/bfd/doc/Makefile.in GT_NO = @GT_NO@ GT_YES = @GT_YES@ HDEFINES = @HDEFINES@ -@@ -154,10 +155,7 @@ +@@ -154,10 +155,7 @@ WARN_CFLAGS = @WARN_CFLAGS@ WIN32LDFLAGS = @WIN32LDFLAGS@ WIN32LIBADD = @WIN32LIBADD@ XGETTEXT = @XGETTEXT@ @@ -17401,7 +17515,7 @@ Index: binutils-2.17/bfd/doc/Makefile.in all_backends = @all_backends@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -@@ -183,6 +181,7 @@ +@@ -183,6 +181,7 @@ build_vendor = @build_vendor@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ @@ -17409,7 +17523,7 @@ Index: binutils-2.17/bfd/doc/Makefile.in exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ -@@ -197,12 +196,15 @@ +@@ -197,12 +196,15 @@ install_sh = @install_sh@ l = @l@ libdir = @libdir@ libexecdir = @libexecdir@ @@ -17425,7 +17539,7 @@ Index: binutils-2.17/bfd/doc/Makefile.in sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ -@@ -364,9 +366,11 @@ +@@ -364,9 +366,11 @@ distclean-libtool: restore=: && backupdir="$(am__leading_dot)am$$$$" && \ am__cwd=`pwd` && cd $(srcdir) && \ rm -rf $$backupdir && mkdir $$backupdir && \ @@ -17440,7 +17554,7 @@ Index: binutils-2.17/bfd/doc/Makefile.in cd "$$am__cwd"; \ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $@ $<; \ -@@ -408,6 +412,7 @@ +@@ -408,6 +412,7 @@ bfd.dvi: bfd.texinfo bfd.pdf: bfd.texinfo bfd.html: bfd.texinfo .dvi.ps: @@ -17448,7 +17562,7 @@ Index: binutils-2.17/bfd/doc/Makefile.in $(DVIPS) -o $@ $< uninstall-info-am: -@@ -440,10 +445,13 @@ +@@ -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; \ @@ -17466,11 +17580,10 @@ Index: binutils-2.17/bfd/doc/Makefile.in done; \ done -Index: binutils-2.17/bfd/elf32-avr32.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/bfd/elf32-avr32.c 2007-06-28 09:19:36.580675344 +0200 -@@ -0,0 +1,3847 @@ +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. + @@ -17498,6 +17611,7 @@ Index: binutils-2.17/bfd/elf32-avr32.c +#include "libbfd.h" +#include "elf-bfd.h" +#include "elf/avr32.h" ++#include "elf32-avr32.h" + +#define xDEBUG +#define xRELAX_DEBUG @@ -17771,7 +17885,6 @@ Index: binutils-2.17/bfd/elf32-avr32.c + /* Shortcuts to get to dynamic linker sections. */ + asection *sgot; + asection *srelgot; -+ asection *sreldyn; + asection *sstub; + + /* We use a variation of Pigeonhole Sort to sort the GOT. After the @@ -17793,6 +17906,7 @@ Index: binutils-2.17/bfd/elf32-avr32.c + 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; +}; @@ -17868,6 +17982,8 @@ Index: binutils-2.17/bfd/elf32-avr32.c + /* 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; +} @@ -17944,8 +18060,9 @@ Index: binutils-2.17/bfd/elf32-avr32.c + return TRUE; + + htab->sgot = create_dynamic_section(dynobj, ".got", flags, 2); -+ htab->srelgot = create_dynamic_section(dynobj, ".rela.got", -+ flags | SEC_READONLY, 2); ++ if (!htab->srelgot) ++ htab->srelgot = create_dynamic_section(dynobj, ".rela.got", ++ flags | SEC_READONLY, 2); + + if (!htab->sgot || !htab->srelgot) + return FALSE; @@ -17979,14 +18096,3892 @@ Index: binutils-2.17/bfd/elf32-avr32.c + if (!avr32_elf_create_got_section (dynobj, info)) + return FALSE; + -+ if (!htab->sreldyn) -+ htab->sreldyn = create_dynamic_section(dynobj, ".rela.dyn", ++ 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, _("<Unrecognized flag bits set>")); ++ ++ 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, <hskinnemoen@atmel.com> ++ ++ 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->sreldyn || !htab->sstub) ++ if (!htab->sstub) + return FALSE; + + return TRUE; @@ -18142,12 +22137,12 @@ Index: binutils-2.17/bfd/elf32-avr32.c + if ((info->shared || h != NULL) + && (sec->flags & SEC_ALLOC)) + { -+ if (htab->sreldyn == NULL) ++ if (htab->srelgot == NULL) + { -+ htab->sreldyn = create_dynamic_section(dynobj, ".rela.dyn", ++ htab->srelgot = create_dynamic_section(dynobj, ".rela.got", + bed->dynamic_sec_flags + | SEC_READONLY, 2); -+ if (htab->sreldyn == NULL) ++ if (htab->srelgot == NULL) + return FALSE; + } + @@ -18535,7 +22530,7 @@ Index: binutils-2.17/bfd/elf32-avr32.c + { + pr_debug("Allocating %d dynamic reloc against symbol %s...\n", + havr->possibly_dynamic_relocs, h->root.root.string); -+ htab->sreldyn->size += (havr->possibly_dynamic_relocs ++ htab->srelgot->size += (havr->possibly_dynamic_relocs + * sizeof(Elf32_External_Rela)); + } + @@ -18629,7 +22624,7 @@ Index: binutils-2.17/bfd/elf32-avr32.c + /* Allocate space for local sym dynamic relocs */ + BFD_ASSERT(htab->local_dynamic_relocs == 0 || info->shared); + if (htab->local_dynamic_relocs) -+ htab->sreldyn->size += (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 @@ -18858,6 +22853,10 @@ Index: binutils-2.17/bfd/elf32-avr32.c + 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, @@ -18998,6 +22997,17 @@ Index: binutils-2.17/bfd/elf32-avr32.c +#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. */ @@ -19035,6 +23045,15 @@ Index: binutils-2.17/bfd/elf32-avr32.c + 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, \ @@ -19059,9 +23078,17 @@ Index: binutils-2.17/bfd/elf32-avr32.c + 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), @@ -19922,9 +23949,15 @@ Index: binutils-2.17/bfd/elf32-avr32.c + 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. */ ++ 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]; @@ -20664,7 +24697,6 @@ Index: binutils-2.17/bfd/elf32-avr32.c + struct got_entry **local_got_ents; + asection *sgot; + asection *srelgot; -+ asection *sreldyn; + + pr_debug("(6) relocate section %s:<%s> (size 0x%lx)\n", + input_bfd->filename, input_section->name, input_section->size); @@ -20680,7 +24712,6 @@ Index: binutils-2.17/bfd/elf32-avr32.c + local_got_ents = elf_local_got_ents(input_bfd); + sgot = htab->sgot; + srelgot = htab->srelgot; -+ sreldyn = htab->sreldyn; + + relend = relocs + input_section->reloc_count; + for (rel = relocs; rel < relend; rel++) @@ -20917,15 +24948,15 @@ Index: binutils-2.17/bfd/elf32-avr32.c + } + } + -+ pr_debug("sreldyn reloc_count: %d, size %lu\n", -+ sreldyn->reloc_count, sreldyn->size); ++ pr_debug("srelgot reloc_count: %d, size %lu\n", ++ srelgot->reloc_count, srelgot->size); + -+ loc = sreldyn->contents; -+ loc += sreldyn->reloc_count++ * sizeof(Elf32_External_Rela); ++ loc = srelgot->contents; ++ loc += srelgot->reloc_count++ * sizeof(Elf32_External_Rela); + bfd_elf32_swap_reloca_out(output_bfd, &outrel, loc); + -+ BFD_ASSERT(sreldyn->reloc_count * sizeof(Elf32_External_Rela) -+ <= sreldyn->size); ++ BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela) ++ <= srelgot->size); + + if (!relocate) + continue; @@ -21318,11 +25349,37 @@ Index: binutils-2.17/bfd/elf32-avr32.c +#define elf_backend_got_header_size AVR32_GOT_HEADER_SIZE + +#include "elf32-target.h" -Index: binutils-2.17/bfd/elf-bfd.h -=================================================================== ---- binutils-2.17.orig/bfd/elf-bfd.h 2007-06-28 09:19:34.190038776 +0200 -+++ binutils-2.17/bfd/elf-bfd.h 2007-06-28 09:19:36.581675192 +0200 -@@ -1307,6 +1307,10 @@ +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, <hskinnemoen@atmel.com> ++ ++ 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; @@ -21333,11 +25390,10 @@ Index: binutils-2.17/bfd/elf-bfd.h /* A place to stash dwarf1 info for this bfd. */ struct dwarf1_debug *dwarf1_find_line_info; -Index: binutils-2.17/bfd/libbfd.h -=================================================================== ---- binutils-2.17.orig/bfd/libbfd.h 2007-06-28 09:19:34.195038016 +0200 -+++ binutils-2.17/bfd/libbfd.h 2007-06-28 09:19:36.582675040 +0200 -@@ -1518,6 +1518,47 @@ +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", @@ -21385,10 +25441,9 @@ Index: binutils-2.17/bfd/libbfd.h "BFD_RELOC_390_12", "BFD_RELOC_390_GOT12", "BFD_RELOC_390_PLT32", -Index: binutils-2.17/bfd/Makefile.am -=================================================================== ---- binutils-2.17.orig/bfd/Makefile.am 2007-06-28 09:19:34.201037104 +0200 -+++ binutils-2.17/bfd/Makefile.am 2007-06-28 09:19:36.583674888 +0200 +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 @@ -21398,7 +25453,7 @@ Index: binutils-2.17/bfd/Makefile.am INCDIR = $(srcdir)/../include CSEARCH = -I. -I$(srcdir) -I$(INCDIR) -@@ -62,6 +62,7 @@ +@@ -62,6 +62,7 @@ ALL_MACHINES = \ cpu-arc.lo \ cpu-arm.lo \ cpu-avr.lo \ @@ -21406,7 +25461,7 @@ Index: binutils-2.17/bfd/Makefile.am cpu-bfin.lo \ cpu-cr16c.lo \ cpu-cris.lo \ -@@ -234,6 +235,7 @@ +@@ -234,6 +235,7 @@ BFD32_BACKENDS = \ elf32-arc.lo \ elf32-arm.lo \ elf32-avr.lo \ @@ -21414,7 +25469,7 @@ Index: binutils-2.17/bfd/Makefile.am elf32-bfin.lo \ elf32-cr16c.lo \ elf32-cris.lo \ -@@ -1265,6 +1267,10 @@ +@@ -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 @@ -21425,10 +25480,9 @@ Index: binutils-2.17/bfd/Makefile.am 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 \ -Index: binutils-2.17/bfd/Makefile.in -=================================================================== ---- binutils-2.17.orig/bfd/Makefile.in 2007-06-28 09:19:34.206036344 +0200 -+++ binutils-2.17/bfd/Makefile.in 2007-06-28 09:19:36.584674736 +0200 +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. @@ -21444,7 +25498,7 @@ Index: binutils-2.17/bfd/Makefile.in srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ -@@ -141,6 +139,7 @@ +@@ -141,6 +139,7 @@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ @@ -21452,7 +25506,7 @@ Index: binutils-2.17/bfd/Makefile.in GT_NO = @GT_NO@ GT_YES = @GT_YES@ HDEFINES = @HDEFINES@ -@@ -190,10 +189,7 @@ +@@ -190,10 +189,7 @@ WARN_CFLAGS = @WARN_CFLAGS@ WIN32LDFLAGS = @WIN32LDFLAGS@ WIN32LIBADD = @WIN32LIBADD@ XGETTEXT = @XGETTEXT@ @@ -21463,7 +25517,7 @@ Index: binutils-2.17/bfd/Makefile.in all_backends = @all_backends@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -@@ -219,6 +215,7 @@ +@@ -219,6 +215,7 @@ build_vendor = @build_vendor@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ @@ -21471,7 +25525,7 @@ Index: binutils-2.17/bfd/Makefile.in exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ -@@ -233,12 +230,15 @@ +@@ -233,12 +230,15 @@ install_sh = @install_sh@ l = @l@ libdir = @libdir@ libexecdir = @libexecdir@ @@ -21487,7 +25541,7 @@ Index: binutils-2.17/bfd/Makefile.in sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ -@@ -253,7 +253,7 @@ +@@ -253,7 +253,7 @@ wordsize = @wordsize@ AUTOMAKE_OPTIONS = 1.9 cygnus # Uncomment the following line when doing a release. @@ -21496,7 +25550,7 @@ Index: binutils-2.17/bfd/Makefile.in INCDIR = $(srcdir)/../include CSEARCH = -I. -I$(srcdir) -I$(INCDIR) MKDEP = gcc -MM -@@ -298,6 +298,7 @@ +@@ -298,6 +298,7 @@ ALL_MACHINES = \ cpu-arc.lo \ cpu-arm.lo \ cpu-avr.lo \ @@ -21504,7 +25558,7 @@ Index: binutils-2.17/bfd/Makefile.in cpu-bfin.lo \ cpu-cr16c.lo \ cpu-cris.lo \ -@@ -471,6 +472,7 @@ +@@ -471,6 +472,7 @@ BFD32_BACKENDS = \ elf32-arc.lo \ elf32-arm.lo \ elf32-avr.lo \ @@ -21512,7 +25566,7 @@ Index: binutils-2.17/bfd/Makefile.in elf32-bfin.lo \ elf32-cr16c.lo \ elf32-cris.lo \ -@@ -1831,6 +1833,10 @@ +@@ -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 @@ -21523,11 +25577,10 @@ Index: binutils-2.17/bfd/Makefile.in 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 \ -Index: binutils-2.17/bfd/reloc.c -=================================================================== ---- binutils-2.17.orig/bfd/reloc.c 2007-06-28 09:19:34.211035584 +0200 -+++ binutils-2.17/bfd/reloc.c 2007-06-28 09:19:36.585674584 +0200 -@@ -3714,6 +3714,129 @@ +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 @@ -21657,11 +25710,10 @@ Index: binutils-2.17/bfd/reloc.c BFD_RELOC_390_12 ENUMDOC Direct 12 bit. -Index: binutils-2.17/bfd/targets.c -=================================================================== ---- binutils-2.17.orig/bfd/targets.c 2007-06-28 09:19:34.218034520 +0200 -+++ binutils-2.17/bfd/targets.c 2007-06-28 09:19:36.586674432 +0200 -@@ -553,6 +553,7 @@ +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; @@ -21669,7 +25721,7 @@ Index: binutils-2.17/bfd/targets.c 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 @@ +@@ -855,6 +856,7 @@ static const bfd_target * const _bfd_tar &bfd_efi_app_ia64_vec, #endif &bfd_elf32_avr_vec, @@ -21677,10 +25729,9 @@ Index: binutils-2.17/bfd/targets.c &bfd_elf32_bfin_vec, &bfd_elf32_bfinfdpic_vec, -Index: binutils-2.17/binutils/config.in -=================================================================== ---- binutils-2.17.orig/binutils/config.in 2007-06-28 09:19:34.223033760 +0200 -+++ binutils-2.17/binutils/config.in 2007-06-28 09:19:36.587674280 +0200 +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 @@ -21701,10 +25752,9 @@ Index: binutils-2.17/binutils/config.in -/* Define to `unsigned' if <sys/types.h> does not define. */ +/* Define to `unsigned int' if <sys/types.h> does not define. */ #undef size_t -Index: binutils-2.17/binutils/configure -=================================================================== ---- binutils-2.17.orig/binutils/configure 2007-06-28 09:19:35.028911248 +0200 -+++ binutils-2.17/binutils/configure 2007-06-28 09:19:36.601672152 +0200 +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. @@ -21766,7 +25816,7 @@ Index: binutils-2.17/binutils/configure # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -@@ -29,8 +58,43 @@ +@@ -29,8 +58,43 @@ else fi @@ -21811,7 +25861,7 @@ Index: binutils-2.17/binutils/configure PS1='$ ' PS2='> ' PS4='+ ' -@@ -44,18 +108,19 @@ +@@ -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 @@ -21834,7 +25884,7 @@ Index: binutils-2.17/binutils/configure as_basename=basename else as_basename=false -@@ -63,157 +128,388 @@ +@@ -63,157 +128,388 @@ fi # Name of the executable. @@ -22321,7 +26371,7 @@ Index: binutils-2.17/binutils/configure if mkdir -p . 2>/dev/null; then as_mkdir_p=: -@@ -222,7 +518,28 @@ +@@ -222,7 +518,28 @@ else as_mkdir_p=false fi @@ -22351,7 +26401,7 @@ Index: binutils-2.17/binutils/configure # 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 @@ +@@ -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'" @@ -22394,7 +26444,7 @@ Index: binutils-2.17/binutils/configure # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= -@@ -275,42 +580,193 @@ +@@ -275,42 +580,193 @@ ac_unique_file="ar.c" # Factoring default headers for most tests. ac_includes_default="\ #include <stdio.h> @@ -22602,7 +26652,7 @@ Index: binutils-2.17/binutils/configure # Initialize some variables set by options. ac_init_help= -@@ -337,34 +793,48 @@ +@@ -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. @@ -22658,7 +26708,7 @@ Index: binutils-2.17/binutils/configure -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -@@ -386,33 +856,45 @@ +@@ -386,33 +856,45 @@ do --config-cache | -C) cache_file=config.cache ;; @@ -22717,7 +26767,7 @@ Index: binutils-2.17/binutils/configure -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ -@@ -439,6 +921,12 @@ +@@ -439,6 +921,12 @@ do -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; @@ -22730,7 +26780,7 @@ Index: binutils-2.17/binutils/configure -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -@@ -463,13 +951,16 @@ +@@ -463,13 +951,16 @@ do | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; @@ -22751,7 +26801,7 @@ Index: binutils-2.17/binutils/configure localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) -@@ -534,6 +1025,16 @@ +@@ -534,6 +1025,16 @@ do | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; @@ -22768,7 +26818,7 @@ Index: binutils-2.17/binutils/configure -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -@@ -586,24 +1087,20 @@ +@@ -586,24 +1087,20 @@ do -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. @@ -22799,7 +26849,7 @@ Index: binutils-2.17/binutils/configure --x) # Obsolete; use --with-x. -@@ -634,8 +1131,7 @@ +@@ -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; }; } @@ -22809,7 +26859,7 @@ Index: binutils-2.17/binutils/configure export $ac_envvar ;; *) -@@ -655,27 +1151,19 @@ +@@ -655,27 +1151,19 @@ if test -n "$ac_prev"; then { (exit 1); exit 1; }; } fi @@ -22847,7 +26897,7 @@ Index: binutils-2.17/binutils/configure done # There might be people who depend on the old broken behavior: `$host' -@@ -702,74 +1190,76 @@ +@@ -702,74 +1190,76 @@ test -n "$host_alias" && ac_tool_prefix= test "$silent" = yes && exec 6>/dev/null @@ -22979,7 +27029,7 @@ Index: binutils-2.17/binutils/configure # # Report the --help message. -@@ -798,9 +1288,6 @@ +@@ -798,9 +1288,6 @@ Configuration: -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] @@ -22989,7 +27039,7 @@ Index: binutils-2.17/binutils/configure Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] -@@ -818,15 +1305,22 @@ +@@ -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] @@ -23015,7 +27065,7 @@ Index: binutils-2.17/binutils/configure _ACEOF cat <<\_ACEOF -@@ -876,126 +1370,100 @@ +@@ -876,126 +1370,100 @@ Some influential environment variables: CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir> @@ -23198,7 +27248,7 @@ Index: binutils-2.17/binutils/configure { cat <<_ASUNAME ## --------- ## -@@ -1014,7 +1482,7 @@ +@@ -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` @@ -23207,7 +27257,7 @@ Index: binutils-2.17/binutils/configure /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 @@ +@@ -1028,6 +1496,7 @@ do test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done @@ -23215,7 +27265,7 @@ Index: binutils-2.17/binutils/configure } >&5 -@@ -1049,7 +1518,6 @@ +@@ -1049,7 +1518,6 @@ _ACEOF ac_configure_args= ac_configure_args0= ac_configure_args1= @@ -23223,7 +27273,7 @@ Index: binutils-2.17/binutils/configure ac_must_keep_next=false for ac_pass in 1 2 do -@@ -1060,7 +1528,7 @@ +@@ -1060,7 +1528,7 @@ do -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; @@ -23232,7 +27282,7 @@ Index: binutils-2.17/binutils/configure ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in -@@ -1082,9 +1550,7 @@ +@@ -1082,9 +1550,7 @@ do -* ) ac_must_keep_next=true ;; esac fi @@ -23243,7 +27293,7 @@ Index: binutils-2.17/binutils/configure ;; esac done -@@ -1095,8 +1561,8 @@ +@@ -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. @@ -23254,7 +27304,7 @@ Index: binutils-2.17/binutils/configure trap 'exit_status=$? # Save into config.log some information that might help in debugging. { -@@ -1109,20 +1575,34 @@ +@@ -1109,20 +1575,34 @@ trap 'exit_status=$? _ASBOX echo # The following way of writing the cache mishandles newlines in values, @@ -23299,7 +27349,7 @@ Index: binutils-2.17/binutils/configure echo cat <<\_ASBOX -@@ -1133,22 +1613,28 @@ +@@ -1133,22 +1613,28 @@ _ASBOX echo for ac_var in $ac_subst_vars do @@ -23335,7 +27385,7 @@ Index: binutils-2.17/binutils/configure done | sort echo fi -@@ -1160,26 +1646,24 @@ +@@ -1160,26 +1646,24 @@ _ASBOX ## ----------- ## _ASBOX echo @@ -23367,7 +27417,7 @@ Index: binutils-2.17/binutils/configure # Predefined preprocessor variables. -@@ -1210,14 +1694,17 @@ +@@ -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. @@ -23392,7 +27442,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -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 @@ -23403,7 +27453,7 @@ Index: binutils-2.17/binutils/configure esac fi else -@@ -1246,12 +1733,11 @@ +@@ -1246,12 +1733,11 @@ fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -23419,7 +27469,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -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 @@ -23429,7 +27479,7 @@ Index: binutils-2.17/binutils/configure *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in -@@ -1294,12 +1779,6 @@ +@@ -1294,12 +1779,6 @@ echo "$as_me: error: run \`make distclea { (exit 1); exit 1; }; } fi @@ -23442,7 +27492,7 @@ Index: binutils-2.17/binutils/configure -@@ -1316,108 +1795,163 @@ +@@ -1316,108 +1795,163 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -23658,7 +27708,7 @@ Index: binutils-2.17/binutils/configure # The aliases save the names the user supplied, while $host etc. -@@ -1434,8 +1968,8 @@ +@@ -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 @@ -23669,7 +27719,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1448,32 +1982,34 @@ +@@ -1448,32 +1982,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -23711,7 +27761,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1486,36 +2022,51 @@ +@@ -1486,36 +2022,51 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -23773,7 +27823,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1528,74 +2079,34 @@ +@@ -1528,74 +2079,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -23857,7 +27907,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1609,7 +2120,7 @@ +@@ -1609,7 +2120,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -23866,7 +27916,7 @@ Index: binutils-2.17/binutils/configure if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue -@@ -1620,6 +2131,7 @@ +@@ -1620,6 +2131,7 @@ do fi done done @@ -23874,7 +27924,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -1637,22 +2149,23 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -23905,7 +27955,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1665,36 +2178,38 @@ +@@ -1665,36 +2178,38 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -23952,7 +28002,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1707,29 +2222,45 @@ +@@ -1707,29 +2222,45 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -24004,7 +28054,7 @@ Index: binutils-2.17/binutils/configure fi fi -@@ -1742,21 +2273,35 @@ +@@ -1742,21 +2273,35 @@ See \`config.log' for more details." >&2 { (exit 1); exit 1; }; } # Provide some information about the compiler. @@ -24048,7 +28098,7 @@ Index: binutils-2.17/binutils/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -@@ -1781,47 +2326,77 @@ +@@ -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. @@ -24148,7 +28198,7 @@ Index: binutils-2.17/binutils/configure echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -@@ -1833,19 +2408,21 @@ +@@ -1833,19 +2408,21 @@ See \`config.log' for more details." >&2 fi ac_exeext=$ac_cv_exeext @@ -24177,7 +28227,7 @@ Index: binutils-2.17/binutils/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -1864,22 +2441,27 @@ +@@ -1864,22 +2441,27 @@ See \`config.log' for more details." >&2 fi fi fi @@ -24217,7 +28267,7 @@ Index: binutils-2.17/binutils/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then -@@ -1890,9 +2472,8 @@ +@@ -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 @@ -24228,7 +28278,7 @@ Index: binutils-2.17/binutils/configure break;; * ) break;; esac -@@ -1906,14 +2487,14 @@ +@@ -1906,14 +2487,14 @@ See \`config.log' for more details." >&2 fi rm -f conftest$ac_cv_exeext @@ -24247,7 +28297,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1933,14 +2514,20 @@ +@@ -1933,14 +2514,20 @@ main () } _ACEOF rm -f conftest.o conftest.obj @@ -24272,7 +28322,7 @@ Index: binutils-2.17/binutils/configure *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac -@@ -1958,12 +2545,12 @@ +@@ -1958,12 +2545,12 @@ fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi @@ -24289,7 +28339,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1986,50 +2573,49 @@ +@@ -1986,50 +2573,49 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -24363,7 +28413,7 @@ Index: binutils-2.17/binutils/configure /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext -@@ -2045,38 +2631,118 @@ +@@ -2045,38 +2631,118 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -24498,7 +28548,7 @@ Index: binutils-2.17/binutils/configure if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then -@@ -2092,12 +2758,12 @@ +@@ -2092,12 +2758,12 @@ else CFLAGS= fi fi @@ -24515,7 +28565,7 @@ Index: binutils-2.17/binutils/configure ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -2131,12 +2797,17 @@ +@@ -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 @@ -24535,7 +28585,7 @@ Index: binutils-2.17/binutils/configure int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; -@@ -2151,335 +2822,144 @@ +@@ -2151,335 +2822,144 @@ return f (e, argv, 0) != argv[0] || f return 0; } _ACEOF @@ -24958,7 +29008,7 @@ Index: binutils-2.17/binutils/configure fi -@@ -2499,8 +2979,8 @@ +@@ -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. @@ -24969,7 +29019,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -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 @@ -24978,7 +29028,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -2541,21 +3021,22 @@ case $as_dir/ in ;; esac done @@ -25006,7 +29056,7 @@ Index: binutils-2.17/binutils/configure # 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 @@ +@@ -2565,8 +3046,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' @@ -25017,7 +29067,7 @@ Index: binutils-2.17/binutils/configure # Just in case sleep 1 echo timestamp > conftest.file -@@ -2608,20 +3089,20 @@ +@@ -2608,20 +3089,20 @@ echo "$as_me: error: newly created file Check your system clock" >&2;} { (exit 1); exit 1; }; } fi @@ -25043,7 +29093,7 @@ Index: binutils-2.17/binutils/configure # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` -@@ -2673,8 +3154,8 @@ +@@ -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 @@ -25054,7 +29104,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -2687,54 +3168,57 @@ +@@ -2687,54 +3168,57 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -25133,7 +29183,7 @@ Index: binutils-2.17/binutils/configure SET_MAKE="MAKE=${MAKE-make}" fi -@@ -2749,7 +3233,7 @@ +@@ -2749,7 +3233,7 @@ rmdir .tst 2>/dev/null DEPDIR="${am__leading_dot}deps" @@ -25142,7 +29192,7 @@ Index: binutils-2.17/binutils/configure am_make=${MAKE-make} -@@ -2759,8 +3243,8 @@ +@@ -2759,8 +3243,8 @@ am__doit: .PHONY: am__doit END # If we don't find an include directive, just comment out the code. @@ -25153,7 +29203,7 @@ Index: binutils-2.17/binutils/configure am__include="#" am__quote= _am_result=none -@@ -2787,15 +3271,15 @@ +@@ -2787,15 +3271,15 @@ if test "$am__include" = "#"; then fi @@ -25174,7 +29224,7 @@ Index: binutils-2.17/binutils/configure if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' -@@ -2870,8 +3354,8 @@ +@@ -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 @@ -25185,7 +29235,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -2884,32 +3368,34 @@ +@@ -2884,32 +3368,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -25227,7 +29277,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -2922,27 +3408,41 @@ +@@ -2922,27 +3408,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -25276,7 +29326,7 @@ Index: binutils-2.17/binutils/configure else STRIP="$ac_cv_prog_STRIP" fi -@@ -2963,8 +3463,8 @@ +@@ -2963,8 +3463,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am depcc="$CC" am_compiler_list= @@ -25287,7 +29337,7 @@ Index: binutils-2.17/binutils/configure if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3053,8 +3553,8 @@ +@@ -3053,8 +3553,8 @@ else fi fi @@ -25298,7 +29348,7 @@ Index: binutils-2.17/binutils/configure CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type -@@ -3072,10 +3572,9 @@ +@@ -3072,10 +3572,9 @@ fi @@ -25311,7 +29361,7 @@ Index: binutils-2.17/binutils/configure case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; -@@ -3093,11 +3592,11 @@ +@@ -3093,11 +3592,11 @@ no) enable_shared=no ;; esac else enable_shared=yes @@ -25327,7 +29377,7 @@ Index: binutils-2.17/binutils/configure case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; -@@ -3115,11 +3614,11 @@ +@@ -3115,11 +3614,11 @@ no) enable_static=no ;; esac else enable_static=yes @@ -25343,7 +29393,7 @@ Index: binutils-2.17/binutils/configure case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; -@@ -3137,20 +3636,21 @@ +@@ -3137,20 +3636,21 @@ no) enable_fast_install=no ;; esac else enable_fast_install=yes @@ -25372,7 +29422,7 @@ Index: binutils-2.17/binutils/configure case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw -@@ -3179,11 +3679,11 @@ +@@ -3179,11 +3679,11 @@ echo $ECHO_N "checking for ld used by GC ;; esac elif test "$with_gnu_ld" = yes; then @@ -25388,7 +29438,7 @@ Index: binutils-2.17/binutils/configure fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 -@@ -3212,17 +3712,17 @@ +@@ -3212,17 +3712,17 @@ fi LD="$lt_cv_path_LD" if test -n "$LD"; then @@ -25412,7 +29462,7 @@ Index: binutils-2.17/binutils/configure if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3233,25 +3733,25 @@ +@@ -3233,25 +3733,25 @@ else lt_cv_prog_gnu_ld=no fi fi @@ -25446,7 +29496,7 @@ Index: binutils-2.17/binutils/configure if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3286,22 +3786,22 @@ +@@ -3286,22 +3786,22 @@ fi fi NM="$lt_cv_path_NM" @@ -25479,7 +29529,7 @@ Index: binutils-2.17/binutils/configure if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3463,8 +3963,8 @@ +@@ -3463,8 +3963,8 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) esac fi @@ -25490,7 +29540,7 @@ Index: binutils-2.17/binutils/configure file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method -@@ -3474,8 +3974,8 @@ +@@ -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 @@ -25501,7 +29551,7 @@ Index: binutils-2.17/binutils/configure if test "${lt_cv_sys_max_cmd_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3526,11 +4026,11 @@ +@@ -3526,11 +4026,11 @@ else fi if test -n "$lt_cv_sys_max_cmd_len" ; then @@ -25517,7 +29567,7 @@ Index: binutils-2.17/binutils/configure fi -@@ -3538,8 +4038,8 @@ +@@ -3538,8 +4038,8 @@ fi case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then @@ -25528,7 +29578,7 @@ Index: binutils-2.17/binutils/configure if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3593,17 +4093,17 @@ +@@ -3593,17 +4093,17 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then @@ -25552,7 +29602,7 @@ Index: binutils-2.17/binutils/configure if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3657,11 +4157,11 @@ +@@ -3657,11 +4157,11 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then @@ -25568,7 +29618,7 @@ Index: binutils-2.17/binutils/configure fi else -@@ -3676,8 +4176,8 @@ +@@ -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 @@ -25579,7 +29629,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3690,32 +4190,34 @@ +@@ -3690,32 +4190,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -25621,7 +29671,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3728,27 +4230,41 @@ +@@ -3728,27 +4230,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -25670,7 +29720,7 @@ Index: binutils-2.17/binutils/configure else RANLIB="$ac_cv_prog_RANLIB" fi -@@ -3756,8 +4272,8 @@ +@@ -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 @@ -25681,7 +29731,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3770,32 +4286,34 @@ +@@ -3770,32 +4286,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -25723,7 +29773,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3808,27 +4326,41 @@ +@@ -3808,27 +4326,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -25772,7 +29822,7 @@ Index: binutils-2.17/binutils/configure else STRIP="$ac_cv_prog_STRIP" fi -@@ -3843,22 +4375,22 @@ +@@ -3843,22 +4375,22 @@ test "$GCC" = yes && libtool_flags="$lib test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" @@ -25802,7 +29852,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -3867,7 +4399,7 @@ test x"$pic_mode" = xno && libtool_flags case $host in *-*-irix6*) # Find out which ABI we are using. @@ -25811,7 +29861,7 @@ Index: binutils-2.17/binutils/configure if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? -@@ -3972,13 +4504,12 @@ +@@ -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" @@ -25827,7 +29877,7 @@ Index: binutils-2.17/binutils/configure ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -@@ -4001,35 +4532,32 @@ +@@ -4001,35 +4532,32 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -25878,7 +29928,7 @@ Index: binutils-2.17/binutils/configure conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' -@@ -4038,8 +4566,8 @@ +@@ -4038,8 +4566,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLA ac_compiler_gnu=$ac_cv_c_compiler_gnu fi @@ -25889,7 +29939,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -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. @@ -25964,7 +30014,7 @@ Index: binutils-2.17/binutils/configure fi fi rm -f confcache -@@ -4127,8 +4674,8 @@ +@@ -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 @@ -25975,7 +30025,7 @@ Index: binutils-2.17/binutils/configure esac fi else -@@ -4154,10 +4701,9 @@ +@@ -4154,10 +4701,9 @@ exec 5>>./config.log @@ -25988,7 +30038,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -4165,31 +4711,32 @@ echo "$as_me: error: enable-targets opti no) enable_targets= ;; *) enable_targets=$enableval ;; esac @@ -26029,7 +30079,7 @@ Index: binutils-2.17/binutils/configure # Enable -Werror by default when using gcc if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then -@@ -4206,10 +4753,9 @@ +@@ -4206,10 +4753,9 @@ if test "${GCC}" = yes ; then WARN_CFLAGS="${GCC_WARN_CFLAGS}" fi @@ -26042,7 +30092,7 @@ Index: binutils-2.17/binutils/configure yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; no) if test "${GCC}" = yes ; then WARN_CFLAGS="-w" -@@ -4220,7 +4766,8 @@ +@@ -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 @@ -26052,7 +30102,7 @@ Index: binutils-2.17/binutils/configure if test x"$silent" != x"yes" && test x"$WARN_CFLAGS" != x""; then echo "Setting warning flags = $WARN_CFLAGS" 6>&1 -@@ -4230,7 +4777,7 @@ +@@ -4230,7 +4777,7 @@ fi @@ -26061,7 +30111,7 @@ Index: binutils-2.17/binutils/configure if test -z "$target" ; then -@@ -4252,8 +4799,8 @@ +@@ -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 @@ -26072,7 +30122,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4266,32 +4813,34 @@ +@@ -4266,32 +4813,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -26114,7 +30164,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4304,36 +4853,51 @@ +@@ -4304,36 +4853,51 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -26176,7 +30226,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4346,74 +4910,34 @@ +@@ -4346,74 +4910,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -26260,7 +30310,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4427,7 +4951,7 @@ +@@ -4427,7 +4951,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -26269,7 +30319,7 @@ Index: binutils-2.17/binutils/configure if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue -@@ -4438,6 +4962,7 @@ +@@ -4438,6 +4962,7 @@ do fi done done @@ -26277,7 +30327,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -4455,22 +4980,23 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -26308,7 +30358,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4483,36 +5009,38 @@ +@@ -4483,36 +5009,38 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -26355,7 +30405,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4525,29 +5053,45 @@ +@@ -4525,29 +5053,45 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -26407,7 +30457,7 @@ Index: binutils-2.17/binutils/configure fi fi -@@ -4560,27 +5104,41 @@ +@@ -4560,27 +5104,41 @@ See \`config.log' for more details." >&2 { (exit 1); exit 1; }; } # Provide some information about the compiler. @@ -26459,7 +30509,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4603,50 +5161,49 @@ +@@ -4603,50 +5161,49 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -26533,7 +30583,7 @@ Index: binutils-2.17/binutils/configure /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext -@@ -4662,311 +5219,248 @@ +@@ -4662,311 +5219,248 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -27006,7 +31056,7 @@ Index: binutils-2.17/binutils/configure ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -@@ -4984,8 +5478,8 @@ +@@ -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 @@ -27017,7 +31067,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_YACC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4998,25 +5492,27 @@ +@@ -4998,25 +5492,27 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -27050,7 +31100,7 @@ Index: binutils-2.17/binutils/configure test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" -@@ -5025,8 +5521,8 @@ +@@ -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 @@ -27061,7 +31111,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_LEX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5039,253 +5535,182 @@ +@@ -5039,253 +5535,182 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -27418,7 +31468,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_prog_lex_yytext_pointer = yes; then cat >>confdefs.h <<\_ACEOF -@@ -5293,6 +5718,7 @@ +@@ -5293,6 +5718,7 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -27426,7 +31476,7 @@ Index: binutils-2.17/binutils/configure fi if test "$LEX" = :; then -@@ -5303,8 +5729,8 @@ +@@ -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 @@ -27437,7 +31487,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5317,32 +5743,34 @@ +@@ -5317,32 +5743,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -27479,7 +31529,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5355,27 +5783,41 @@ +@@ -5355,27 +5783,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -27528,7 +31578,7 @@ Index: binutils-2.17/binutils/configure else RANLIB="$ac_cv_prog_RANLIB" fi -@@ -5385,8 +5827,8 @@ +@@ -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 @@ -27539,7 +31589,7 @@ Index: binutils-2.17/binutils/configure # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= -@@ -5420,24 +5862,22 @@ +@@ -5420,24 +5862,22 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF @@ -27575,7 +31625,7 @@ Index: binutils-2.17/binutils/configure : else echo "$as_me: failed program was:" >&5 -@@ -5446,9 +5886,10 @@ +@@ -5446,9 +5886,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi @@ -27587,7 +31637,7 @@ Index: binutils-2.17/binutils/configure # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -5458,24 +5899,22 @@ +@@ -5458,24 +5899,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF @@ -27623,7 +31673,7 @@ Index: binutils-2.17/binutils/configure # Broken: success on invalid input. continue else -@@ -5486,6 +5925,7 @@ +@@ -5486,6 +5925,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi @@ -27631,7 +31681,7 @@ Index: binutils-2.17/binutils/configure rm -f conftest.err conftest.$ac_ext done -@@ -5503,8 +5943,8 @@ +@@ -5503,8 +5943,8 @@ fi else ac_cv_prog_CPP=$CPP fi @@ -27642,7 +31692,7 @@ Index: binutils-2.17/binutils/configure ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do -@@ -5527,24 +5967,22 @@ +@@ -5527,24 +5967,22 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF @@ -27678,7 +31728,7 @@ Index: binutils-2.17/binutils/configure : else echo "$as_me: failed program was:" >&5 -@@ -5553,9 +5991,10 @@ +@@ -5553,9 +5991,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi @@ -27690,7 +31740,7 @@ Index: binutils-2.17/binutils/configure # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -5565,24 +6004,22 @@ +@@ -5565,24 +6004,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF @@ -27726,7 +31776,7 @@ Index: binutils-2.17/binutils/configure # Broken: success on invalid input. continue else -@@ -5593,6 +6030,7 @@ +@@ -5593,6 +6030,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi @@ -27734,7 +31784,7 @@ Index: binutils-2.17/binutils/configure rm -f conftest.err conftest.$ac_ext done -@@ -5615,23 +6053,170 @@ +@@ -5615,23 +6053,170 @@ ac_link='$CC -o conftest$ac_exeext $CFLA ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -27916,7 +31966,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5655,35 +6240,31 @@ +@@ -5655,35 +6240,31 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -27966,7 +32016,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -@@ -5739,6 +6320,7 @@ +@@ -5739,6 +6320,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ctype.h> @@ -27974,7 +32024,7 @@ Index: binutils-2.17/binutils/configure #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -@@ -5758,18 +6340,27 @@ +@@ -5758,18 +6340,27 @@ main () for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) @@ -28008,7 +32058,7 @@ Index: binutils-2.17/binutils/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -5782,12 +6373,14 @@ +@@ -5782,12 +6373,14 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi @@ -28026,7 +32076,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF -@@ -5796,8 +6389,8 @@ +@@ -5796,8 +6389,8 @@ _ACEOF fi @@ -28037,7 +32087,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5815,10 +6408,10 @@ +@@ -5815,10 +6408,10 @@ main () #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; @@ -28051,7 +32101,7 @@ Index: binutils-2.17/binutils/configure /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; -@@ -5827,16 +6420,17 @@ +@@ -5827,16 +6420,17 @@ main () an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; @@ -28073,7 +32123,7 @@ Index: binutils-2.17/binutils/configure } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; -@@ -5855,7 +6449,9 @@ +@@ -5855,7 +6449,9 @@ main () } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; @@ -28083,7 +32133,7 @@ Index: binutils-2.17/binutils/configure #endif ; -@@ -5863,38 +6459,34 @@ +@@ -5863,38 +6459,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -28138,7 +32188,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF -@@ -5903,8 +6495,8 @@ +@@ -5903,8 +6495,8 @@ _ACEOF fi @@ -28149,7 +32199,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5924,39 +6516,37 @@ +@@ -5924,39 +6516,37 @@ $ac_kw foo_t foo () {return 0; } _ACEOF rm -f conftest.$ac_objext @@ -28207,7 +32257,7 @@ Index: binutils-2.17/binutils/configure case $ac_cv_c_inline in -@@ -5988,9 +6578,9 @@ +@@ -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` @@ -28220,7 +32270,7 @@ Index: binutils-2.17/binutils/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -6004,38 +6594,35 @@ +@@ -6004,38 +6594,35 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -28276,7 +32326,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -6046,8 +6633,8 @@ fi done @@ -28287,7 +32337,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6058,62 +6645,59 @@ +@@ -6058,62 +6645,59 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -28372,7 +32422,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6124,64 +6708,61 @@ +@@ -6124,64 +6708,61 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -28459,7 +32509,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6196,44 +6777,42 @@ +@@ -6196,44 +6777,42 @@ int main () { char *p = (char *) alloca (2 * sizeof (int)); @@ -28522,7 +32572,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_working_alloca_h = yes; then cat >>confdefs.h <<\_ACEOF -@@ -6242,8 +6821,8 @@ +@@ -6242,8 +6821,8 @@ _ACEOF fi @@ -28533,7 +32583,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6260,7 +6839,7 @@ +@@ -6260,7 +6839,7 @@ cat >>conftest.$ac_ext <<_ACEOF # include <malloc.h> # define alloca _alloca # else @@ -28542,7 +32592,7 @@ Index: binutils-2.17/binutils/configure # include <alloca.h> # else # ifdef _AIX -@@ -6278,44 +6857,42 @@ +@@ -6278,44 +6857,42 @@ int main () { char *p = (char *) alloca (1); @@ -28605,7 +32655,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_func_alloca_works = yes; then -@@ -6329,15 +6906,15 @@ +@@ -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. @@ -28624,7 +32674,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6347,7 +6924,7 @@ +@@ -6347,7 +6924,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -28633,7 +32683,7 @@ Index: binutils-2.17/binutils/configure webecray #else wenotbecray -@@ -6363,14 +6940,14 @@ +@@ -6363,14 +6940,14 @@ fi rm -f conftest* fi @@ -28653,7 +32703,7 @@ Index: binutils-2.17/binutils/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -6396,68 +6973,60 @@ +@@ -6396,68 +6973,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -28745,7 +32795,7 @@ Index: binutils-2.17/binutils/configure if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF -@@ -6470,8 +7039,8 @@ +@@ -6470,8 +7039,8 @@ fi done fi @@ -28756,7 +32806,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6484,6 +7053,7 @@ +@@ -6484,6 +7053,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -28764,7 +32814,7 @@ Index: binutils-2.17/binutils/configure int find_stack_direction () { -@@ -6501,17 +7071,26 @@ +@@ -6501,17 +7071,26 @@ find_stack_direction () int main () { @@ -28796,7 +32846,7 @@ Index: binutils-2.17/binutils/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -6524,11 +7103,13 @@ +@@ -6524,11 +7103,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi @@ -28813,7 +32863,7 @@ Index: binutils-2.17/binutils/configure cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction -@@ -6542,18 +7123,19 @@ +@@ -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` @@ -28841,7 +32891,7 @@ Index: binutils-2.17/binutils/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -6564,41 +7146,37 @@ +@@ -6564,41 +7146,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -28901,7 +32951,7 @@ Index: binutils-2.17/binutils/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -6607,24 +7185,22 @@ +@@ -6607,24 +7185,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF @@ -28937,7 +32987,7 @@ Index: binutils-2.17/binutils/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -6632,9 +7208,10 @@ +@@ -6632,9 +7208,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -28950,7 +33000,7 @@ Index: binutils-2.17/binutils/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -6658,25 +7235,19 @@ +@@ -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;} @@ -28983,7 +33033,7 @@ Index: binutils-2.17/binutils/configure fi if test `eval echo '${'$as_ac_Header'}'` = yes; then -@@ -6692,9 +7263,9 @@ +@@ -6692,9 +7263,9 @@ done for ac_func in getpagesize do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -28996,7 +33046,7 @@ Index: binutils-2.17/binutils/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -6720,68 +7291,60 @@ +@@ -6720,68 +7291,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -29088,7 +33138,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -6790,8 +7353,8 @@ _ACEOF fi done @@ -29099,7 +33149,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6833,21 +7396,21 @@ +@@ -6833,21 +7396,21 @@ $ac_includes_default #include <fcntl.h> #include <sys/mman.h> @@ -29125,7 +33175,7 @@ Index: binutils-2.17/binutils/configure # include <sys/param.h> # ifdef EXEC_PAGESIZE # define getpagesize() EXEC_PAGESIZE -@@ -6886,15 +7449,15 @@ +@@ -6886,15 +7449,15 @@ main () /* First, make a file with some known garbage in it. */ data = (char *) malloc (pagesize); if (!data) @@ -29144,7 +33194,7 @@ Index: binutils-2.17/binutils/configure close (fd); /* Next, try to mmap the file at a fixed address which already has -@@ -6902,17 +7465,17 @@ +@@ -6902,17 +7465,17 @@ main () we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) @@ -29167,7 +33217,7 @@ Index: binutils-2.17/binutils/configure /* 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 @@ +@@ -6921,24 +7484,33 @@ main () *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) @@ -29209,7 +33259,7 @@ Index: binutils-2.17/binutils/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -6951,11 +7523,13 @@ +@@ -6951,11 +7523,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_mmap_fixed_mapped=no fi @@ -29226,7 +33276,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_func_mmap_fixed_mapped = yes; then cat >>confdefs.h <<\_ACEOF -@@ -6979,18 +7553,19 @@ +@@ -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` @@ -29254,7 +33304,7 @@ Index: binutils-2.17/binutils/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -7001,41 +7576,37 @@ +@@ -7001,41 +7576,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -29314,7 +33364,7 @@ Index: binutils-2.17/binutils/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -7044,24 +7615,22 @@ +@@ -7044,24 +7615,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF @@ -29350,7 +33400,7 @@ Index: binutils-2.17/binutils/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -7069,9 +7638,10 @@ +@@ -7069,9 +7638,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -29363,7 +33413,7 @@ Index: binutils-2.17/binutils/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -7095,25 +7665,19 @@ +@@ -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;} @@ -29396,7 +33446,7 @@ Index: binutils-2.17/binutils/configure fi if test `eval echo '${'$as_ac_Header'}'` = yes; then -@@ -7139,9 +7703,9 @@ +@@ -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` @@ -29409,7 +33459,7 @@ Index: binutils-2.17/binutils/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -7167,68 +7731,60 @@ +@@ -7167,68 +7731,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -29501,7 +33551,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -7243,9 +7799,9 @@ done for ac_func in stpcpy do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -29514,7 +33564,7 @@ Index: binutils-2.17/binutils/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -7271,68 +7827,60 @@ +@@ -7271,68 +7827,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -29606,7 +33656,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -7351,8 +7899,8 @@ _ACEOF fi if test $ac_cv_header_locale_h = yes; then @@ -29617,7 +33667,7 @@ Index: binutils-2.17/binutils/configure if test "${am_cv_val_LC_MESSAGES+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7372,39 +7920,36 @@ +@@ -7372,39 +7920,36 @@ return LC_MESSAGES } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -29674,7 +33724,7 @@ Index: binutils-2.17/binutils/configure if test $am_cv_val_LC_MESSAGES = yes; then cat >>confdefs.h <<\_ACEOF -@@ -7413,34 +7958,34 @@ +@@ -7413,34 +7958,34 @@ _ACEOF fi fi @@ -29725,7 +33775,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -7449,17 +7994,17 @@ echo "${ECHO_T}$nls_cv_force_use_gnu_get CATOBJEXT= if test "${ac_cv_header_libintl_h+set}" = set; then @@ -29749,7 +33799,7 @@ Index: binutils-2.17/binutils/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -7470,41 +8015,37 @@ +@@ -7470,41 +8015,37 @@ $ac_includes_default #include <libintl.h> _ACEOF rm -f conftest.$ac_objext @@ -29809,7 +33859,7 @@ Index: binutils-2.17/binutils/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -7513,24 +8054,22 @@ +@@ -7513,24 +8054,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <libintl.h> _ACEOF @@ -29845,7 +33895,7 @@ Index: binutils-2.17/binutils/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -7538,9 +8077,10 @@ +@@ -7538,9 +8077,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -29858,7 +33908,7 @@ Index: binutils-2.17/binutils/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -7564,30 +8104,23 @@ +@@ -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;} @@ -29896,7 +33946,7 @@ Index: binutils-2.17/binutils/configure if test "${gt_cv_func_gettext_libc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7607,43 +8140,40 @@ +@@ -7607,43 +8140,40 @@ return (int) gettext ("") } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -29959,7 +34009,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7656,59 +8186,56 @@ +@@ -7656,59 +8186,56 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -30042,7 +34092,7 @@ Index: binutils-2.17/binutils/configure if test "${gt_cv_func_gettext_libintl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7728,39 +8255,36 @@ +@@ -7728,39 +8255,36 @@ return (int) gettext ("") } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -30099,7 +34149,7 @@ Index: binutils-2.17/binutils/configure fi fi -@@ -7774,8 +8298,8 @@ +@@ -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 @@ -30110,7 +34160,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7801,20 +8325,20 @@ +@@ -7801,20 +8325,20 @@ esac fi MSGFMT="$ac_cv_path_MSGFMT" if test -n "$MSGFMT"; then @@ -30138,7 +34188,7 @@ Index: binutils-2.17/binutils/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -7840,68 +8364,60 @@ +@@ -7840,68 +8364,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -30230,7 +34280,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -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 @@ -30241,7 +34291,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7928,32 +8444,33 @@ +@@ -7928,32 +8444,33 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -30283,7 +34333,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7979,11 +8496,11 @@ +@@ -7979,11 +8496,11 @@ esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test -n "$XGETTEXT"; then @@ -30299,7 +34349,7 @@ Index: binutils-2.17/binutils/configure fi cat >conftest.$ac_ext <<_ACEOF -@@ -8003,37 +8520,34 @@ +@@ -8003,37 +8520,34 @@ extern int _nl_msg_cat_cntr; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -30352,7 +34402,7 @@ Index: binutils-2.17/binutils/configure conftest$ac_exeext conftest.$ac_ext INSTOBJEXT=.mo fi -@@ -8055,8 +8569,8 @@ +@@ -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 @@ -30363,7 +34413,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8082,17 +8596,17 @@ +@@ -8082,17 +8596,17 @@ esac fi MSGFMT="$ac_cv_path_MSGFMT" if test -n "$MSGFMT"; then @@ -30387,7 +34437,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8107,32 +8621,33 @@ +@@ -8107,32 +8621,33 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -30429,7 +34479,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8158,11 +8673,11 @@ +@@ -8158,11 +8673,11 @@ esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test -n "$XGETTEXT"; then @@ -30445,7 +34495,7 @@ Index: binutils-2.17/binutils/configure fi -@@ -8181,8 +8696,8 @@ +@@ -8181,8 +8696,8 @@ fi if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else @@ -30456,7 +34506,7 @@ Index: binutils-2.17/binutils/configure XGETTEXT=":" fi fi -@@ -8231,8 +8746,8 @@ +@@ -8231,8 +8746,8 @@ _ACEOF if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else @@ -30467,7 +34517,7 @@ Index: binutils-2.17/binutils/configure NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in -@@ -8240,8 +8755,8 @@ +@@ -8240,8 +8755,8 @@ echo $ECHO_N "checking for catalogs to b esac done LINGUAS=$NEW_LINGUAS @@ -30478,7 +34528,7 @@ Index: binutils-2.17/binutils/configure fi if test -n "$LINGUAS"; then -@@ -8260,17 +8775,17 @@ +@@ -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 @@ -30502,7 +34552,7 @@ Index: binutils-2.17/binutils/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8281,41 +8796,37 @@ +@@ -8281,41 +8796,37 @@ $ac_includes_default #include <linux/version.h> _ACEOF rm -f conftest.$ac_objext @@ -30562,7 +34612,7 @@ Index: binutils-2.17/binutils/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8324,24 +8835,22 @@ +@@ -8324,24 +8835,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <linux/version.h> _ACEOF @@ -30598,7 +34648,7 @@ Index: binutils-2.17/binutils/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -8349,9 +8858,10 @@ +@@ -8349,9 +8858,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -30611,7 +34661,7 @@ Index: binutils-2.17/binutils/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -8375,25 +8885,18 @@ +@@ -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;} @@ -30642,7 +34692,7 @@ Index: binutils-2.17/binutils/configure fi if test $ac_cv_header_linux_version_h = yes; then -@@ -8443,17 +8946,17 @@ +@@ -8443,17 +8946,17 @@ fi fi @@ -30668,7 +34718,7 @@ Index: binutils-2.17/binutils/configure if test $USE_MAINTAINER_MODE = yes; then -@@ -8493,8 +8996,8 @@ +@@ -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 @@ -30679,7 +34729,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8507,32 +9010,34 @@ +@@ -8507,32 +9010,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -30721,7 +34771,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8545,27 +9050,41 @@ +@@ -8545,27 +9050,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -30770,7 +34820,7 @@ Index: binutils-2.17/binutils/configure else RANLIB="$ac_cv_prog_RANLIB" fi -@@ -8583,8 +9102,8 @@ +@@ -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. @@ -30781,7 +34831,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -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 @@ -30790,7 +34840,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -8625,21 +9144,22 @@ case $as_dir/ in ;; esac done @@ -30818,7 +34868,7 @@ Index: binutils-2.17/binutils/configure # 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 @@ +@@ -8663,8 +9183,8 @@ fi if test "x$cross_compiling" = "xno"; then EXEEXT_FOR_BUILD='$(EXEEXT)' else @@ -30829,7 +34879,7 @@ Index: binutils-2.17/binutils/configure if test "${bfd_cv_build_exeext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8681,8 +9201,8 @@ +@@ -8681,8 +9201,8 @@ else rm -f conftest* test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no fi @@ -30840,7 +34890,7 @@ Index: binutils-2.17/binutils/configure EXEEXT_FOR_BUILD="" test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext} fi -@@ -8704,18 +9224,19 @@ +@@ -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` @@ -30868,7 +34918,7 @@ Index: binutils-2.17/binutils/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8726,41 +9247,37 @@ +@@ -8726,41 +9247,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -30928,7 +34978,7 @@ Index: binutils-2.17/binutils/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8769,24 +9286,22 @@ +@@ -8769,24 +9286,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF @@ -30964,7 +35014,7 @@ Index: binutils-2.17/binutils/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -8794,9 +9309,10 @@ +@@ -8794,9 +9309,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -30977,7 +35027,7 @@ Index: binutils-2.17/binutils/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -8820,25 +9336,19 @@ +@@ -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;} @@ -31010,7 +35060,7 @@ Index: binutils-2.17/binutils/configure fi if test `eval echo '${'$as_ac_Header'}'` = yes; then -@@ -8850,8 +9360,8 @@ +@@ -8850,8 +9360,8 @@ fi done @@ -31021,7 +35071,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_header_sys_wait_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8864,7 +9374,7 @@ +@@ -8864,7 +9374,7 @@ cat >>conftest.$ac_ext <<_ACEOF #include <sys/types.h> #include <sys/wait.h> #ifndef WEXITSTATUS @@ -31030,7 +35080,7 @@ Index: binutils-2.17/binutils/configure #endif #ifndef WIFEXITED # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) -@@ -8881,38 +9391,34 @@ +@@ -8881,38 +9391,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -31085,7 +35135,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_header_sys_wait_h = yes; then cat >>confdefs.h <<\_ACEOF -@@ -8923,8 +9429,8 @@ +@@ -8923,8 +9429,8 @@ fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! @@ -31096,7 +35146,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8939,44 +9445,42 @@ +@@ -8939,44 +9445,42 @@ int main () { char *p = (char *) alloca (2 * sizeof (int)); @@ -31159,7 +35209,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_working_alloca_h = yes; then cat >>confdefs.h <<\_ACEOF -@@ -8985,8 +9489,8 @@ +@@ -8985,8 +9489,8 @@ _ACEOF fi @@ -31170,7 +35220,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9003,7 +9507,7 @@ +@@ -9003,7 +9507,7 @@ cat >>conftest.$ac_ext <<_ACEOF # include <malloc.h> # define alloca _alloca # else @@ -31179,7 +35229,7 @@ Index: binutils-2.17/binutils/configure # include <alloca.h> # else # ifdef _AIX -@@ -9021,44 +9525,42 @@ +@@ -9021,44 +9525,42 @@ int main () { char *p = (char *) alloca (1); @@ -31242,7 +35292,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_func_alloca_works = yes; then -@@ -9072,15 +9574,15 @@ +@@ -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. @@ -31261,7 +35311,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9090,7 +9592,7 @@ +@@ -9090,7 +9592,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -31270,7 +35320,7 @@ Index: binutils-2.17/binutils/configure webecray #else wenotbecray -@@ -9106,14 +9608,14 @@ +@@ -9106,14 +9608,14 @@ fi rm -f conftest* fi @@ -31290,7 +35340,7 @@ Index: binutils-2.17/binutils/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -9139,68 +9641,60 @@ +@@ -9139,68 +9641,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -31382,7 +35432,7 @@ Index: binutils-2.17/binutils/configure if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF -@@ -9213,8 +9707,8 @@ +@@ -9213,8 +9707,8 @@ fi done fi @@ -31393,7 +35443,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9227,6 +9721,7 @@ +@@ -9227,6 +9721,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -31401,7 +35451,7 @@ Index: binutils-2.17/binutils/configure int find_stack_direction () { -@@ -9244,17 +9739,26 @@ +@@ -9244,17 +9739,26 @@ find_stack_direction () int main () { @@ -31433,7 +35483,7 @@ Index: binutils-2.17/binutils/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -9267,11 +9771,13 @@ +@@ -9267,11 +9771,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi @@ -31450,7 +35500,7 @@ Index: binutils-2.17/binutils/configure cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction -@@ -9288,9 +9794,9 @@ +@@ -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` @@ -31463,7 +35513,7 @@ Index: binutils-2.17/binutils/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -9316,68 +9822,60 @@ +@@ -9316,68 +9822,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -31555,7 +35605,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -9389,8 +9887,8 @@ done # Check whether fopen64 is available and whether _LARGEFILE64_SOURCE # needs to be defined for it @@ -31566,7 +35616,7 @@ Index: binutils-2.17/binutils/configure if test "${bu_cv_have_fopen64+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9410,33 +9908,29 @@ +@@ -9410,33 +9908,29 @@ FILE *f = fopen64 ("/tmp/foo","r"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -31613,7 +35663,7 @@ Index: binutils-2.17/binutils/configure CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -9454,44 +9948,42 @@ +@@ -9454,44 +9948,42 @@ FILE *f = fopen64 ("/tmp/foo","r"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -31677,7 +35727,7 @@ Index: binutils-2.17/binutils/configure if test "$bu_cv_have_fopen64" != no; then cat >>confdefs.h <<\_ACEOF -@@ -9499,8 +9991,8 @@ +@@ -9499,8 +9991,8 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -31688,7 +35738,7 @@ Index: binutils-2.17/binutils/configure if test "${bu_cv_have_stat64+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9520,33 +10012,29 @@ +@@ -9520,33 +10012,29 @@ struct stat64 st; stat64 ("/tmp/foo", &s } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -31735,7 +35785,7 @@ Index: binutils-2.17/binutils/configure CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -9564,191 +10052,146 @@ +@@ -9564,191 +10052,146 @@ struct stat64 st; stat64 ("/tmp/foo", &s } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -32008,7 +36058,7 @@ Index: binutils-2.17/binutils/configure if test "${bu_cv_decl_time_t_time_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9768,39 +10211,35 @@ +@@ -9768,39 +10211,35 @@ time_t i; } _ACEOF rm -f conftest.$ac_objext @@ -32064,7 +36114,7 @@ Index: binutils-2.17/binutils/configure if test $bu_cv_decl_time_t_time_h = yes; then cat >>confdefs.h <<\_ACEOF -@@ -9809,8 +10248,8 @@ +@@ -9809,8 +10248,8 @@ _ACEOF fi @@ -32075,7 +36125,7 @@ Index: binutils-2.17/binutils/configure if test "${bu_cv_decl_time_t_types_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9830,39 +10269,35 @@ +@@ -9830,39 +10269,35 @@ time_t i; } _ACEOF rm -f conftest.$ac_objext @@ -32131,7 +36181,7 @@ Index: binutils-2.17/binutils/configure if test $bu_cv_decl_time_t_types_h = yes; then cat >>confdefs.h <<\_ACEOF -@@ -9871,8 +10306,8 @@ +@@ -9871,8 +10306,8 @@ _ACEOF fi @@ -32142,7 +36192,7 @@ Index: binutils-2.17/binutils/configure if test "${bu_cv_decl_getopt_unistd_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9892,39 +10327,35 @@ +@@ -9892,39 +10327,35 @@ extern int getopt (int, char *const*, co } _ACEOF rm -f conftest.$ac_objext @@ -32198,7 +36248,7 @@ Index: binutils-2.17/binutils/configure if test $bu_cv_decl_getopt_unistd_h = yes; then cat >>confdefs.h <<\_ACEOF -@@ -9935,8 +10366,8 @@ +@@ -9935,8 +10366,8 @@ fi # Under Next 3.2 <utime.h> apparently does not define struct utimbuf # by default. @@ -32209,7 +36259,7 @@ Index: binutils-2.17/binutils/configure if test "${bu_cv_header_utime_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9960,39 +10391,35 @@ +@@ -9960,39 +10391,35 @@ struct utimbuf s; } _ACEOF rm -f conftest.$ac_objext @@ -32265,7 +36315,7 @@ Index: binutils-2.17/binutils/configure if test $bu_cv_header_utime_h = yes; then cat >>confdefs.h <<\_ACEOF -@@ -10001,8 +10428,8 @@ +@@ -10001,8 +10428,8 @@ _ACEOF fi @@ -32276,7 +36326,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_have_decl_fprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10017,7 +10444,7 @@ +@@ -10017,7 +10444,7 @@ int main () { #ifndef fprintf @@ -32285,7 +36335,7 @@ Index: binutils-2.17/binutils/configure #endif ; -@@ -10025,38 +10452,34 @@ +@@ -10025,38 +10452,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -32340,7 +36390,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_have_decl_fprintf = yes; then cat >>confdefs.h <<_ACEOF -@@ -10071,8 +10494,8 @@ +@@ -10071,8 +10494,8 @@ _ACEOF fi @@ -32351,7 +36401,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_have_decl_stpcpy+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10087,7 +10510,7 @@ +@@ -10087,7 +10510,7 @@ int main () { #ifndef stpcpy @@ -32360,7 +36410,7 @@ Index: binutils-2.17/binutils/configure #endif ; -@@ -10095,38 +10518,34 @@ +@@ -10095,38 +10518,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -32415,7 +36465,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_have_decl_stpcpy = yes; then cat >>confdefs.h <<_ACEOF -@@ -10141,8 +10560,8 @@ +@@ -10141,8 +10560,8 @@ _ACEOF fi @@ -32426,7 +36476,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_have_decl_strstr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10157,7 +10576,7 @@ +@@ -10157,7 +10576,7 @@ int main () { #ifndef strstr @@ -32435,7 +36485,7 @@ Index: binutils-2.17/binutils/configure #endif ; -@@ -10165,38 +10584,34 @@ +@@ -10165,38 +10584,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -32490,7 +36540,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_have_decl_strstr = yes; then cat >>confdefs.h <<_ACEOF -@@ -10211,8 +10626,8 @@ +@@ -10211,8 +10626,8 @@ _ACEOF fi @@ -32501,7 +36551,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_have_decl_sbrk+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10227,7 +10642,7 @@ +@@ -10227,7 +10642,7 @@ int main () { #ifndef sbrk @@ -32510,7 +36560,7 @@ Index: binutils-2.17/binutils/configure #endif ; -@@ -10235,38 +10650,34 @@ +@@ -10235,38 +10650,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -32565,7 +36615,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_have_decl_sbrk = yes; then cat >>confdefs.h <<_ACEOF -@@ -10281,8 +10692,8 @@ +@@ -10281,8 +10692,8 @@ _ACEOF fi @@ -32576,7 +36626,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_have_decl_getenv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10297,7 +10708,7 @@ +@@ -10297,7 +10708,7 @@ int main () { #ifndef getenv @@ -32585,7 +36635,7 @@ Index: binutils-2.17/binutils/configure #endif ; -@@ -10305,38 +10716,34 @@ +@@ -10305,38 +10716,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -32640,7 +36690,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_have_decl_getenv = yes; then cat >>confdefs.h <<_ACEOF -@@ -10351,8 +10758,8 @@ +@@ -10351,8 +10758,8 @@ _ACEOF fi @@ -32651,7 +36701,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_have_decl_environ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10367,7 +10774,7 @@ +@@ -10367,7 +10774,7 @@ int main () { #ifndef environ @@ -32660,7 +36710,7 @@ Index: binutils-2.17/binutils/configure #endif ; -@@ -10375,38 +10782,34 @@ +@@ -10375,38 +10782,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -32715,7 +36765,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_have_decl_environ = yes; then cat >>confdefs.h <<_ACEOF -@@ -10421,8 +10824,8 @@ +@@ -10421,8 +10824,8 @@ _ACEOF fi @@ -32726,7 +36776,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10437,7 +10840,7 @@ +@@ -10437,7 +10840,7 @@ int main () { #ifndef getc_unlocked @@ -32735,7 +36785,7 @@ Index: binutils-2.17/binutils/configure #endif ; -@@ -10445,38 +10848,34 @@ +@@ -10445,38 +10848,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -32790,7 +36840,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_have_decl_getc_unlocked = yes; then cat >>confdefs.h <<_ACEOF -@@ -10491,8 +10890,8 @@ +@@ -10491,8 +10890,8 @@ _ACEOF fi @@ -32801,7 +36851,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_have_decl_snprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10507,7 +10906,7 @@ +@@ -10507,7 +10906,7 @@ int main () { #ifndef snprintf @@ -32810,7 +36860,7 @@ Index: binutils-2.17/binutils/configure #endif ; -@@ -10515,38 +10914,34 @@ +@@ -10515,38 +10914,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -32865,7 +36915,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_have_decl_snprintf = yes; then cat >>confdefs.h <<_ACEOF -@@ -10561,8 +10956,8 @@ +@@ -10561,8 +10956,8 @@ _ACEOF fi @@ -32876,7 +36926,7 @@ Index: binutils-2.17/binutils/configure if test "${ac_cv_have_decl_vsnprintf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -10577,7 +10972,7 @@ +@@ -10577,7 +10972,7 @@ int main () { #ifndef vsnprintf @@ -32885,7 +36935,7 @@ Index: binutils-2.17/binutils/configure #endif ; -@@ -10585,38 +10980,34 @@ +@@ -10585,38 +10980,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -32940,7 +36990,7 @@ Index: binutils-2.17/binutils/configure if test $ac_cv_have_decl_vsnprintf = yes; then cat >>confdefs.h <<_ACEOF -@@ -10817,8 +11208,10 @@ +@@ -10817,8 +11208,10 @@ done @@ -32953,7 +37003,7 @@ Index: binutils-2.17/binutils/configure 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 @@ +@@ -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. @@ -33028,7 +37078,7 @@ Index: binutils-2.17/binutils/configure fi fi rm -f confcache -@@ -10878,32 +11290,18 @@ +@@ -10878,32 +11290,18 @@ test "x$prefix" = xNONE && prefix=$ac_de # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' @@ -33067,7 +37117,7 @@ Index: binutils-2.17/binutils/configure done LIBOBJS=$ac_libobjs -@@ -10955,17 +11353,45 @@ +@@ -10955,17 +11353,45 @@ cat >>$CONFIG_STATUS <<\_ACEOF ## M4sh Initialization. ## ## --------------------- ## @@ -33117,7 +37167,7 @@ Index: binutils-2.17/binutils/configure # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -@@ -10975,8 +11401,43 @@ +@@ -10975,8 +11401,43 @@ else fi @@ -33162,7 +37212,7 @@ Index: binutils-2.17/binutils/configure PS1='$ ' PS2='> ' PS4='+ ' -@@ -10990,18 +11451,19 @@ +@@ -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 @@ -33185,7 +37235,7 @@ Index: binutils-2.17/binutils/configure as_basename=basename else as_basename=false -@@ -11009,159 +11471,120 @@ +@@ -11009,159 +11471,120 @@ fi # Name of the executable. @@ -33416,7 +37466,7 @@ Index: binutils-2.17/binutils/configure if mkdir -p . 2>/dev/null; then as_mkdir_p=: -@@ -11170,7 +11593,28 @@ +@@ -11170,7 +11593,28 @@ else as_mkdir_p=false fi @@ -33446,7 +37496,7 @@ Index: binutils-2.17/binutils/configure # 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 @@ +@@ -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'" @@ -33482,7 +37532,7 @@ Index: binutils-2.17/binutils/configure CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS -@@ -11211,30 +11638,20 @@ +@@ -11211,30 +11638,20 @@ generated by GNU Autoconf 2.59. Invocat CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ @@ -33521,7 +37571,7 @@ Index: binutils-2.17/binutils/configure ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. -@@ -11242,7 +11659,7 @@ +@@ -11242,7 +11659,7 @@ current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit @@ -33530,7 +37580,7 @@ Index: binutils-2.17/binutils/configure -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 @@ +@@ -11261,19 +11678,21 @@ Configuration commands: $config_commands Report bugs to <bug-autoconf@gnu.org>." @@ -33558,7 +37608,7 @@ Index: binutils-2.17/binutils/configure _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -@@ -11284,39 +11703,24 @@ +@@ -11284,39 +11703,24 @@ while test $# != 0 do case $1 in --*=*) @@ -33604,7 +37654,7 @@ Index: binutils-2.17/binutils/configure debug=: ;; --file | --fil | --fi | --f ) $ac_shift -@@ -11326,18 +11730,24 @@ +@@ -11326,18 +11730,24 @@ Try \`$0 --help' for more information." $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; @@ -33634,7 +37684,7 @@ Index: binutils-2.17/binutils/configure esac shift -@@ -11353,40 +11763,52 @@ +@@ -11353,40 +11763,52 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then @@ -33701,7 +37751,7 @@ Index: binutils-2.17/binutils/configure # 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 @@ +@@ -11398,391 +11820,496 @@ if $ac_need_defaults; then fi # Have a temporary directory for convenience. Make it in the build tree @@ -34529,7 +38579,7 @@ Index: binutils-2.17/binutils/configure cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub -@@ -11790,248 +12317,130 @@ +@@ -11790,248 +12317,130 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b @@ -34880,7 +38930,7 @@ Index: binutils-2.17/binutils/configure # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do -@@ -12042,135 +12451,39 @@ +@@ -12042,135 +12451,39 @@ for _am_header in $config_headers :; do _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done @@ -35042,7 +39092,7 @@ Index: binutils-2.17/binutils/configure # 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 @@ +@@ -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 @@ -35080,7 +39130,7 @@ Index: binutils-2.17/binutils/configure else continue fi -@@ -12213,58 +12537,84 @@ +@@ -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 @@ -35195,11 +39245,85 @@ Index: binutils-2.17/binutils/configure { (exit 0); exit 0; } _ACEOF -Index: binutils-2.17/binutils/doc/Makefile.in -=================================================================== ---- binutils-2.17.orig/binutils/doc/Makefile.in 2007-06-28 09:19:34.235031936 +0200 -+++ binutils-2.17/binutils/doc/Makefile.in 2007-06-28 09:19:36.602672000 +0200 -@@ -109,6 +109,7 @@ +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@ @@ -35207,7 +39331,7 @@ Index: binutils-2.17/binutils/doc/Makefile.in GT_NO = @GT_NO@ GT_YES = @GT_YES@ HDEFINES = @HDEFINES@ -@@ -159,9 +160,8 @@ +@@ -159,9 +160,8 @@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ XGETTEXT = @XGETTEXT@ YACC = @YACC@ @@ -35218,7 +39342,7 @@ Index: binutils-2.17/binutils/doc/Makefile.in am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__include = @am__include@ -@@ -178,6 +178,7 @@ +@@ -178,6 +178,7 @@ build_vendor = @build_vendor@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ @@ -35226,7 +39350,7 @@ Index: binutils-2.17/binutils/doc/Makefile.in exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ -@@ -191,12 +192,15 @@ +@@ -191,12 +192,15 @@ install_sh = @install_sh@ l = @l@ libdir = @libdir@ libexecdir = @libexecdir@ @@ -35242,7 +39366,7 @@ Index: binutils-2.17/binutils/doc/Makefile.in sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ -@@ -368,10 +372,13 @@ +@@ -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; \ @@ -35260,11 +39384,10 @@ Index: binutils-2.17/binutils/doc/Makefile.in done; \ done -Index: binutils-2.17/binutils/Makefile.am -=================================================================== ---- binutils-2.17.orig/binutils/Makefile.am 2007-06-28 09:19:34.240031176 +0200 -+++ binutils-2.17/binutils/Makefile.am 2007-06-28 09:19:36.602672000 +0200 -@@ -511,7 +511,7 @@ +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 \ @@ -35273,11 +39396,10 @@ Index: binutils-2.17/binutils/Makefile.am $(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 \ -Index: binutils-2.17/binutils/Makefile.in -=================================================================== ---- binutils-2.17.orig/binutils/Makefile.in 2007-06-28 09:19:34.248029960 +0200 -+++ binutils-2.17/binutils/Makefile.in 2007-06-28 09:19:36.603671848 +0200 -@@ -266,6 +266,7 @@ +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@ @@ -35285,7 +39407,7 @@ Index: binutils-2.17/binutils/Makefile.in GT_NO = @GT_NO@ GT_YES = @GT_YES@ HDEFINES = @HDEFINES@ -@@ -316,9 +317,8 @@ +@@ -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` @@ -35296,7 +39418,7 @@ Index: binutils-2.17/binutils/Makefile.in am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__include = @am__include@ -@@ -335,6 +335,7 @@ +@@ -335,6 +335,7 @@ build_vendor = @build_vendor@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ @@ -35304,7 +39426,7 @@ Index: binutils-2.17/binutils/Makefile.in exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ -@@ -348,12 +349,15 @@ +@@ -348,12 +349,15 @@ install_sh = @install_sh@ l = @l@ libdir = @libdir@ libexecdir = @libexecdir@ @@ -35320,7 +39442,7 @@ Index: binutils-2.17/binutils/Makefile.in sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ -@@ -365,7 +369,6 @@ +@@ -365,7 +369,6 @@ target_vendor = @target_vendor@ AUTOMAKE_OPTIONS = cygnus dejagnu SUBDIRS = doc po tooldir = $(exec_prefix)/$(target_alias) @@ -35328,7 +39450,7 @@ Index: binutils-2.17/binutils/Makefile.in AM_CFLAGS = $(WARN_CFLAGS) # these two are almost the same program -@@ -1264,7 +1267,7 @@ +@@ -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 \ @@ -35337,10 +39459,9 @@ Index: binutils-2.17/binutils/Makefile.in $(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 \ -Index: binutils-2.17/binutils/readelf.c -=================================================================== ---- binutils-2.17.orig/binutils/readelf.c 2007-06-28 09:19:34.254029048 +0200 -+++ binutils-2.17/binutils/readelf.c 2007-06-28 09:19:36.606671392 +0200 +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" @@ -35349,7 +39470,7 @@ Index: binutils-2.17/binutils/readelf.c #include "elf/bfin.h" #include "elf/cris.h" #include "elf/d10v.h" -@@ -590,6 +591,7 @@ +@@ -590,6 +591,7 @@ guess_is_rela (unsigned long e_machine) case EM_MCORE: case EM_IA_64: case EM_AVR: @@ -35357,7 +39478,7 @@ Index: binutils-2.17/binutils/readelf.c case EM_AVR_OLD: case EM_CRIS: case EM_860: -@@ -959,6 +961,10 @@ +@@ -959,6 +961,10 @@ dump_relocations (FILE *file, rtype = elf_avr_reloc_type (type); break; @@ -35368,7 +39489,7 @@ Index: binutils-2.17/binutils/readelf.c case EM_OLD_SPARCV9: case EM_SPARC32PLUS: case EM_SPARCV9: -@@ -1670,6 +1676,7 @@ +@@ -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"; @@ -35376,11 +39497,10 @@ Index: binutils-2.17/binutils/readelf.c 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"; -Index: binutils-2.17/configure -=================================================================== ---- binutils-2.17.orig/configure 2007-06-28 09:19:35.592825520 +0200 -+++ binutils-2.17/configure 2007-06-28 09:19:36.610670784 +0200 -@@ -899,7 +899,7 @@ +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. @@ -35389,7 +39509,7 @@ Index: binutils-2.17/configure # libgcj represents the runtime libraries only used by gcj. libgcj="target-libffi \ -@@ -1064,6 +1064,9 @@ +@@ -1064,6 +1064,9 @@ unsupported_languages= # exist yet. case "${host}" in @@ -35399,7 +39519,7 @@ Index: binutils-2.17/configure hppa*64*-*-*) noconfigdirs="$noconfigdirs byacc" ;; -@@ -1863,7 +1866,7 @@ +@@ -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 @@ -35408,7 +39528,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -1893,7 +1896,7 @@ +@@ -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 @@ -35417,7 +39537,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -1944,7 +1947,7 @@ +@@ -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 @@ -35426,7 +39546,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -1976,7 +1979,7 @@ +@@ -1976,7 +1979,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 @@ -35435,7 +39555,7 @@ Index: binutils-2.17/configure ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -@@ -1987,12 +1990,12 @@ +@@ -1987,12 +1990,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF @@ -35450,7 +39570,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35465,7 +39585,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -2032,7 +2035,7 @@ +@@ -2032,7 +2035,7 @@ else yes; #endif EOF @@ -35474,7 +39594,7 @@ Index: binutils-2.17/configure ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no -@@ -2051,7 +2054,7 @@ +@@ -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 @@ -35483,7 +39603,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35492,7 +39612,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -2150,7 +2153,7 @@ +@@ -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 @@ -35501,7 +39621,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_GNATBIND'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -2183,7 +2186,7 @@ +@@ -2183,7 +2186,7 @@ fi fi echo $ac_n "checking whether compiler driver understands Ada""... $ac_c" 1>&6 @@ -35510,7 +39630,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -2215,7 +2218,7 @@ else fi echo $ac_n "checking how to compare bootstrapped objects""... $ac_c" 1>&6 @@ -35519,7 +39639,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35531,7 +39651,7 @@ Index: binutils-2.17/configure #include "confdefs.h" #include "gmp.h" int main() { -@@ -2326,7 +2329,7 @@ +@@ -2326,7 +2329,7 @@ choke me ; return 0; } EOF @@ -35540,7 +39660,7 @@ Index: binutils-2.17/configure rm -rf conftest* echo "$ac_t""yes" 1>&6 else -@@ -2339,12 +2342,12 @@ +@@ -2339,12 +2342,12 @@ rm -f conftest* if test x"$have_gmp" = xyes; then echo $ac_n "checking for MPFR""... $ac_c" 1>&6 @@ -35555,7 +39675,7 @@ Index: binutils-2.17/configure #include "confdefs.h" #include <gmp.h> #include <mpfr.h> -@@ -2352,7 +2355,7 @@ +@@ -2352,7 +2355,7 @@ int main() { mpfr_t n; mpfr_init(n); ; return 0; } EOF @@ -35564,7 +39684,7 @@ Index: binutils-2.17/configure rm -rf conftest* echo "$ac_t""yes" 1>&6 else -@@ -3403,7 +3406,7 @@ +@@ -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 @@ -35573,7 +39693,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -3443,7 +3446,7 @@ +@@ -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 @@ -35582,7 +39702,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -3482,7 +3485,7 @@ +@@ -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 @@ -35591,7 +39711,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_M4'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -3521,7 +3524,7 @@ +@@ -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 @@ -35600,7 +39720,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -3561,7 +3564,7 @@ +@@ -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 @@ -35609,7 +39729,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -3600,7 +3603,7 @@ +@@ -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 @@ -35618,7 +39738,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -3653,7 +3656,7 @@ +@@ -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 @@ -35627,7 +39747,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_EXPECT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -3694,7 +3697,7 @@ +@@ -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 @@ -35636,7 +39756,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_RUNTEST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -3742,7 +3745,7 @@ +@@ -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 @@ -35645,7 +39765,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -3773,7 +3776,7 @@ +@@ -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 @@ -35654,7 +39774,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -3817,7 +3820,7 @@ +@@ -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 @@ -35663,7 +39783,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -3848,7 +3851,7 @@ +@@ -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 @@ -35672,7 +39792,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -3892,7 +3895,7 @@ +@@ -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 @@ -35681,7 +39801,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -3923,7 +3926,7 @@ +@@ -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 @@ -35690,7 +39810,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -3967,7 +3970,7 @@ +@@ -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 @@ -35699,7 +39819,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -3998,7 +4001,7 @@ +@@ -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 @@ -35708,7 +39828,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -4042,7 +4045,7 @@ +@@ -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 @@ -35717,7 +39837,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_LIPO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -4073,7 +4076,7 @@ +@@ -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 @@ -35726,7 +39846,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_LIPO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -4117,7 +4120,7 @@ +@@ -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 @@ -35735,7 +39855,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -4148,7 +4151,7 @@ +@@ -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 @@ -35744,7 +39864,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -4192,7 +4195,7 @@ +@@ -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 @@ -35753,7 +39873,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -4223,7 +4226,7 @@ +@@ -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 @@ -35762,7 +39882,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -4262,7 +4265,7 @@ +@@ -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 @@ -35771,7 +39891,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -4293,7 +4296,7 @@ +@@ -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 @@ -35780,7 +39900,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -4332,7 +4335,7 @@ +@@ -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 @@ -35789,7 +39909,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -4363,7 +4366,7 @@ +@@ -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 @@ -35798,7 +39918,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -4407,7 +4410,7 @@ +@@ -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 @@ -35807,7 +39927,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -4438,7 +4441,7 @@ +@@ -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 @@ -35816,7 +39936,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -4482,7 +4485,7 @@ +@@ -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 @@ -35825,7 +39945,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -4513,7 +4516,7 @@ +@@ -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 @@ -35834,7 +39954,7 @@ Index: binutils-2.17/configure if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else -@@ -4577,7 +4580,7 @@ +@@ -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 @@ -35843,7 +39963,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35852,7 +39972,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35861,7 +39981,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35870,7 +39990,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35879,7 +39999,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35888,7 +40008,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35897,7 +40017,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35906,7 +40026,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35915,7 +40035,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35924,7 +40044,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35933,7 +40053,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35942,7 +40062,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35951,7 +40071,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35960,7 +40080,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35969,7 +40089,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35978,7 +40098,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35987,7 +40107,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -35996,7 +40116,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36005,7 +40125,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36014,7 +40134,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36023,7 +40143,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36032,7 +40152,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36041,7 +40161,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36050,7 +40170,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36059,7 +40179,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36068,7 +40188,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36077,7 +40197,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36086,7 +40206,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36095,7 +40215,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36104,7 +40224,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36113,7 +40233,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36122,7 +40242,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36131,7 +40251,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36140,7 +40260,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36149,7 +40269,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36158,7 +40278,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36167,7 +40287,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36176,7 +40296,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36185,7 +40305,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36194,7 +40314,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36203,7 +40323,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36212,7 +40332,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36221,7 +40341,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36230,7 +40350,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36239,7 +40359,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36248,7 +40368,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36257,7 +40377,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36266,7 +40386,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36275,7 +40395,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36284,7 +40404,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36293,7 +40413,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36302,7 +40422,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36311,7 +40431,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36320,7 +40440,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36329,7 +40449,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36338,7 +40458,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36347,7 +40467,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36356,7 +40476,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36365,7 +40485,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36374,7 +40494,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36383,7 +40503,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36392,7 +40512,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36401,7 +40521,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36410,7 +40530,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36419,7 +40539,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -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 @@ -36428,7 +40548,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -6652,7 +6655,7 @@ else fi fi echo $ac_n "checking where to find the target as""... $ac_c" 1>&6 @@ -36437,7 +40557,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -6685,7 +6688,7 @@ else fi fi echo $ac_n "checking where to find the target cc""... $ac_c" 1>&6 @@ -36446,7 +40566,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -6718,7 +6721,7 @@ else fi fi echo $ac_n "checking where to find the target c++""... $ac_c" 1>&6 @@ -36455,7 +40575,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -6754,7 +6757,7 @@ else fi fi echo $ac_n "checking where to find the target c++ for libstdc++""... $ac_c" 1>&6 @@ -36464,7 +40584,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -6790,7 +6793,7 @@ else fi fi echo $ac_n "checking where to find the target dlltool""... $ac_c" 1>&6 @@ -36473,7 +40593,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -6823,7 +6826,7 @@ else fi fi echo $ac_n "checking where to find the target gcc""... $ac_c" 1>&6 @@ -36482,7 +40602,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -6856,7 +6859,7 @@ else fi fi echo $ac_n "checking where to find the target gcj""... $ac_c" 1>&6 @@ -36491,7 +40611,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -6892,7 +6895,7 @@ else fi fi echo $ac_n "checking where to find the target gfortran""... $ac_c" 1>&6 @@ -36500,7 +40620,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -6928,7 +6931,7 @@ else fi fi echo $ac_n "checking where to find the target ld""... $ac_c" 1>&6 @@ -36509,7 +40629,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -6961,7 +6964,7 @@ else fi fi echo $ac_n "checking where to find the target lipo""... $ac_c" 1>&6 @@ -36518,7 +40638,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -6984,7 +6987,7 @@ else fi fi echo $ac_n "checking where to find the target nm""... $ac_c" 1>&6 @@ -36527,7 +40647,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -7017,7 +7020,7 @@ else fi fi echo $ac_n "checking where to find the target objdump""... $ac_c" 1>&6 @@ -36536,7 +40656,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -7050,7 +7053,7 @@ else fi fi echo $ac_n "checking where to find the target ranlib""... $ac_c" 1>&6 @@ -36545,7 +40665,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -7083,7 +7086,7 @@ else fi fi echo $ac_n "checking where to find the target strip""... $ac_c" 1>&6 @@ -36554,7 +40674,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -7116,7 +7119,7 @@ else fi fi echo $ac_n "checking where to find the target windres""... $ac_c" 1>&6 @@ -36563,7 +40683,7 @@ Index: binutils-2.17/configure 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 @@ +@@ -7177,7 +7180,7 @@ fi echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 @@ -36572,7 +40692,7 @@ Index: binutils-2.17/configure # 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 @@ +@@ -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. @@ -36616,11 +40736,10 @@ Index: binutils-2.17/configure # Without the "./", some shells look in PATH for config.status. -Index: binutils-2.17/configure.in -=================================================================== ---- binutils-2.17.orig/configure.in 2007-06-28 09:19:35.593825368 +0200 -+++ binutils-2.17/configure.in 2007-06-28 09:19:36.611670632 +0200 -@@ -269,6 +269,9 @@ +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 @@ -36630,11 +40749,10 @@ Index: binutils-2.17/configure.in hppa*64*-*-*) noconfigdirs="$noconfigdirs byacc" ;; -Index: binutils-2.17/gas/as.c -=================================================================== ---- binutils-2.17.orig/gas/as.c 2007-06-28 09:19:34.271026464 +0200 -+++ binutils-2.17/gas/as.c 2007-06-28 09:19:36.612670480 +0200 -@@ -439,10 +439,10 @@ +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} @@ -36649,7 +40767,7 @@ Index: binutils-2.17/gas/as.c ,{"a", optional_argument, NULL, 'a'} /* Handle -al=<FILE>. */ ,{"al", optional_argument, NULL, OPTION_AL} -@@ -795,8 +795,15 @@ +@@ -795,8 +795,15 @@ the GNU General Public License. This pr case 'a': if (optarg) { @@ -36667,7 +40785,7 @@ Index: binutils-2.17/gas/as.c if (md_parse_option (optc, optarg) != 0) break; -@@ -1189,7 +1196,7 @@ +@@ -1189,7 +1196,7 @@ main (int argc, char ** argv) keep_it = 0; if (!keep_it) @@ -36676,10 +40794,9 @@ Index: binutils-2.17/gas/as.c input_scrub_end (); -Index: binutils-2.17/gas/config/bfin-aux.h -=================================================================== ---- binutils-2.17.orig/gas/config/bfin-aux.h 2007-06-28 09:19:34.276025704 +0200 -+++ binutils-2.17/gas/config/bfin-aux.h 2007-06-28 09:19:36.612670480 +0200 +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 @@ -36983,11 +41100,10 @@ Index: binutils-2.17/gas/config/bfin-aux.h + +INSTR_T +bfin_gen_multi_instr (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2); -Index: binutils-2.17/gas/config/tc-avr32.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/config/tc-avr32.c 2007-06-28 09:19:36.616669872 +0200 -@@ -0,0 +1,4714 @@ +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. + @@ -37039,6 +41155,7 @@ Index: binutils-2.17/gas/config/tc-avr32.c +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[] = "#"; @@ -37163,6 +41280,12 @@ Index: binutils-2.17/gas/config/tc-avr32.c + {"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} +}; + @@ -37234,6 +41357,7 @@ Index: binutils-2.17/gas/config/tc-avr32.c +#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}, @@ -37241,6 +41365,7 @@ Index: binutils-2.17/gas/config/tc-avr32.c + {"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} @@ -37251,15 +41376,15 @@ Index: binutils-2.17/gas/config/tc-avr32.c +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")); ++ 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); +} + @@ -37339,6 +41464,9 @@ Index: binutils-2.17/gas/config/tc-avr32.c + case OPTION_NOLINKRELAX: + linkrelax = 0; + break; ++ case OPTION_DIRECT_DATA_REFS: ++ allow_direct_data_refs = 1; ++ break; + default: + return 0; + } @@ -41702,10 +45830,9 @@ Index: binutils-2.17/gas/config/tc-avr32.c + +/* vim: syntax=c sw=2 + */ -Index: binutils-2.17/gas/config/tc-avr32.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/config/tc-avr32.h 2007-06-28 09:19:36.617669720 +0200 +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. @@ -42020,15606 +46147,10 @@ Index: binutils-2.17/gas/config/tc-avr32.h + (fixP)->tc_fix_data.max = 0; \ + } \ + while (0) -Index: binutils-2.17/gas/config.in -=================================================================== ---- binutils-2.17.orig/gas/config.in 2007-06-28 09:19:34.291023424 +0200 -+++ binutils-2.17/gas/config.in 2007-06-28 09:19:36.617669720 +0200 -@@ -246,7 +246,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 */ -@@ -311,8 +311,8 @@ - #undef inline - #endif - --/* Define to `long' if <sys/types.h> does not define. */ -+/* Define to `long int' if <sys/types.h> does not define. */ - #undef off_t - --/* Define to `unsigned' if <sys/types.h> does not define. */ -+/* Define to `unsigned int' if <sys/types.h> does not define. */ - #undef size_t -Index: binutils-2.17/gas/configure -=================================================================== ---- binutils-2.17.orig/gas/configure 2007-06-28 09:19:35.035910184 +0200 -+++ binutils-2.17/gas/configure 2007-06-28 09:19:36.630667744 +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 @@ - 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 @@ - 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 @@ - - - # 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 -+} - -- 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 -+exitcode=0 -+if as_func_success; then -+ : -+else -+ exitcode=1 -+ echo as_func_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_failure; then -+ exitcode=1 -+ echo as_func_failure succeeded. -+fi -+ -+if as_func_ret_success; then -+ : -+else -+ exitcode=1 -+ echo as_func_ret_success failed. -+fi -+ -+if as_func_ret_failure; then -+ exitcode=1 -+ echo as_func_ret_failure succeeded. -+fi -+ -+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then -+ : -+else -+ exitcode=1 -+ echo positional parameters were not saved. -+fi -+ -+test \$exitcode = 0) || { (exit 1); exit 1; } -+ -+( -+ as_lineno_1=\$LINENO -+ as_lineno_2=\$LINENO -+ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && -+ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -+") 2> /dev/null; then -+ : -+else -+ as_candidate_shells= - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- 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 @@ - 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_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 </dev/null 6>&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,190 @@ - # Factoring default headers for most tests. - ac_includes_default="\ - #include <stdio.h> --#if HAVE_SYS_TYPES_H -+#ifdef HAVE_SYS_TYPES_H - # include <sys/types.h> - #endif --#if HAVE_SYS_STAT_H -+#ifdef HAVE_SYS_STAT_H - # include <sys/stat.h> - #endif --#if STDC_HEADERS -+#ifdef STDC_HEADERS - # include <stdlib.h> - # include <stddef.h> - #else --# if HAVE_STDLIB_H -+# ifdef HAVE_STDLIB_H - # include <stdlib.h> - # 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 <memory.h> - # endif - # include <string.h> - #endif --#if HAVE_STRINGS_H -+#ifdef HAVE_STRINGS_H - # include <strings.h> - #endif --#if HAVE_INTTYPES_H -+#ifdef HAVE_INTTYPES_H - # include <inttypes.h> --#else --# if HAVE_STDINT_H --# include <stdint.h> --# endif - #endif --#if HAVE_UNISTD_H -+#ifdef HAVE_STDINT_H -+# include <stdint.h> -+#endif -+#ifdef HAVE_UNISTD_H - # include <unistd.h> - #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 GDBINIT cgen_cpu_prefix extra_objects target_cpu_type obj_format te_file install_tooldir atof BFDLIB OPCODES_LIB BFDVER_H ALL_OBJ_DEPS 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 LIBM 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 -+GDBINIT -+CPP -+GREP -+EGREP -+cgen_cpu_prefix -+extra_objects -+target_cpu_type -+obj_format -+te_file -+install_tooldir -+atof -+BFDLIB -+OPCODES_LIB -+BFDVER_H -+ALL_OBJ_DEPS -+YACC -+YFLAGS -+LEX -+LEX_OUTPUT_ROOT -+LEXLIB -+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 -+LIBM -+LIBOBJS -+LTLIBOBJS' - ac_subst_files='' -+ 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 +790,48 @@ - # 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 +853,45 @@ - --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 +918,12 @@ - -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 +948,16 @@ - | --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 +1022,16 @@ - | --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 +1084,20 @@ - -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 +1128,7 @@ - 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 +1148,19 @@ - { (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 +1187,76 @@ - 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 +1285,6 @@ - -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 +1302,22 @@ - --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 +1367,100 @@ - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> -- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have -- headers in a nonstandard directory <include dir> -+ LIBS libraries to pass to the linker, e.g. -l<library> -+ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if -+ you have headers in a nonstandard directory <include dir> - 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 - ## --------- ## -@@ -1014,7 +1479,7 @@ - /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 +1493,7 @@ - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" - done -+IFS=$as_save_IFS - - } >&5 - -@@ -1049,7 +1515,6 @@ - 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 +1525,7 @@ - -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 +1547,7 @@ - -* ) 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 +1558,8 @@ - # 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 +1572,34 @@ - _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 +1610,28 @@ - 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 +1643,24 @@ - ## ----------- ## - _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 +1691,17 @@ - - # 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 +1717,8 @@ - { 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 +1730,11 @@ - # 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 +1759,7 @@ - # 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 +1776,6 @@ - { (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 +1792,163 @@ - - - -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - ac_aux_dir= --for ac_dir in .. $srcdir/..; do -- if test -f $ac_dir/install-sh; then -+for ac_dir in .. "$srcdir"/..; do -+ if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break -- elif test -f $ac_dir/install.sh; then -+ 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/.." >&5 --echo "$as_me: error: cannot find install-sh or install.sh in .. $srcdir/.." >&2;} -+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in .. \"$srcdir\"/.." >&5 -+echo "$as_me: error: cannot find install-sh or install.sh in .. \"$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 +1965,8 @@ - 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 +1979,34 @@ - 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 +2019,51 @@ - 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 +2076,34 @@ - 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 +2117,7 @@ - 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 +2128,7 @@ - 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 +2146,23 @@ - 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 +2175,38 @@ - 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 +2219,45 @@ - 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 +2270,35 @@ - { (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 </dev/null >&5\"") >&5 -- (eval $ac_compiler --version </dev/null >&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 </dev/null >&5\"") >&5 -- (eval $ac_compiler -v </dev/null >&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 </dev/null >&5\"") >&5 -- (eval $ac_compiler -V </dev/null >&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 +2323,77 @@ - # 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 +2405,21 @@ - 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 +2438,27 @@ - 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 +2469,8 @@ - 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 +2484,14 @@ - 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 +2511,20 @@ - } - _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 +2542,12 @@ - - 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 +2570,49 @@ - } - _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 +2628,118 @@ - } - _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 +2755,12 @@ - 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 +2794,17 @@ - /* 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 +2819,144 @@ - 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 <stdlib.h> -+ -+/* 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 +2976,8 @@ - # 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 +2999,7 @@ - # 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 +3018,22 @@ - ;; - 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 +3043,8 @@ - - 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 +3086,20 @@ - 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 +3151,8 @@ - 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 +3165,57 @@ - 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 +3230,7 @@ - - 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 +3240,8 @@ - .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 +3268,15 @@ - 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 +3351,8 @@ - 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 +3365,34 @@ - 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 +3405,41 @@ - 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 +3460,8 @@ - - 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 +3550,8 @@ - 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 +3569,9 @@ - - - --# 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 +3589,11 @@ - 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 +3611,11 @@ - 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 +3633,21 @@ - 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 +3676,11 @@ - ;; - 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 +3709,17 @@ - - 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 +3730,25 @@ - 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 +3783,22 @@ - 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 +3960,8 @@ - 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 +3971,8 @@ - # 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 +4023,11 @@ - 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 +4035,8 @@ - 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 +4090,17 @@ - - 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 +4154,11 @@ - - 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 +4173,8 @@ - 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 +4187,34 @@ - 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 +4227,41 @@ - 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 +4269,8 @@ - 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 +4283,34 @@ - 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 +4323,41 @@ - 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 +4372,22 @@ - 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 +4396,7 @@ - case $host in - *-*-irix6*) - # Find out which ABI we are using. -- echo '#line 3870 "configure"' > conftest.$ac_ext -+ echo '#line 4399 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? -@@ -3972,13 +4501,12 @@ - # 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 +4529,32 @@ - } - _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 +4563,8 @@ - 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 +4594,58 @@ - - # 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 +4671,8 @@ - { 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 +4698,9 @@ - - - --# 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,33 +4708,34 @@ - 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 -+ - using_cgen=no - - - 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 -@@ -4208,10 +4752,9 @@ - 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" -@@ -4222,7 +4765,8 @@ - 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 -@@ -4233,7 +4777,7 @@ - - - # Generate a header file -- ac_config_headers="$ac_config_headers config.h:config.in" -+ac_config_headers="$ac_config_headers config.h:config.in" - - - # If we are on a DOS filesystem, we must use gdb.ini rather than -@@ -4241,789 +4785,913 @@ - case "${host}" in - *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-windows*) - GDBINIT="gdb.ini" -- ac_config_files="$ac_config_files gdb.ini:gdbinit.in" -+ ac_config_files="$ac_config_files gdb.ini:gdbinit.in" - - ;; - *) - GDBINIT=".gdbinit" -- ac_config_files="$ac_config_files .gdbinit:gdbinit.in" -+ ac_config_files="$ac_config_files .gdbinit:gdbinit.in" - - ;; - esac - - - #We need this for the host. BOUT header is in host order. --echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 --echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 --if test "${ac_cv_c_bigendian+set}" = set; then -+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 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= -+fi -+if test -z "$CPP"; then -+ if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- # See if sys/param.h defines the BYTE_ORDER macro. --cat >conftest.$ac_ext <<_ACEOF -+ # Double quotes because CPP needs to be expanded -+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" -+ do -+ ac_preproc_ok=false -+for ac_c_preproc_warn_flag in '' yes -+do -+ # Use a header file that comes with gcc, so configuring glibc -+ # with a fresh cross-compiler works. -+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since -+ # <limits.h> exists even on freestanding compilers. -+ # On the NeXT, cc -E runs the code through the compiler's parser, -+ # not just through cpp. "Syntax error" is here to catch this case. -+ cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ - _ACEOF - cat confdefs.h >>conftest.$ac_ext - cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ --#include <sys/types.h> --#include <sys/param.h> -- --int --main () --{ --#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN -- bogus endian macros -+#ifdef __STDC__ -+# include <limits.h> -+#else -+# include <assert.h> - #endif -- -- ; -- return 0; --} -+ Syntax error - _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_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); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 -- # It does; now see whether it defined to BIG_ENDIAN or not. --cat >conftest.$ac_ext <<_ACEOF -+ (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 -+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 nonexistent headers -+ # can be detected and how. -+ cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ - _ACEOF - cat confdefs.h >>conftest.$ac_ext - cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ --#include <sys/types.h> --#include <sys/param.h> -- --int --main () --{ --#if BYTE_ORDER != BIG_ENDIAN -- not big endian --#endif -- -- ; -- return 0; --} -+#include <ac_nonexistent.h> - _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_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); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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_bigendian=yes -+ (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 - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --ac_cv_c_bigendian=no -+ # Passes both tests. -+ac_preproc_ok=: -+break - fi --rm -f conftest.err conftest.$ac_objext conftest.$ac_ext --else -- echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 - --# It does not; compile a test program. --if test "$cross_compiling" = yes; then -- # try to guess the endianness by grepping values into an object file -- ac_cv_c_bigendian=unknown -+rm -f conftest.err conftest.$ac_ext -+ -+done -+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -+rm -f conftest.err conftest.$ac_ext -+if $ac_preproc_ok; then -+ break -+fi -+ -+ done -+ ac_cv_prog_CPP=$CPP -+ -+fi -+ CPP=$ac_cv_prog_CPP -+else -+ ac_cv_prog_CPP=$CPP -+fi -+{ 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 -+ # Use a header file that comes with gcc, so configuring glibc -+ # with a fresh cross-compiler works. -+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since -+ # <limits.h> exists even on freestanding compilers. -+ # On the NeXT, cc -E runs the code through the compiler's parser, -+ # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ - _ACEOF - cat confdefs.h >>conftest.$ac_ext - cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ --short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; --short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; --void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } --short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; --short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; --void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } --int --main () --{ -- _ascii (); _ebcdic (); -- ; -- return 0; --} -+#ifdef __STDC__ -+# include <limits.h> -+#else -+# include <assert.h> -+#endif -+ Syntax error - _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_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); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 -- if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then -- ac_cv_c_bigendian=yes --fi --if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then -- if test "$ac_cv_c_bigendian" = unknown; then -- ac_cv_c_bigendian=no -- else -- # finding both strings is unlikely to happen, but who knows? -- ac_cv_c_bigendian=unknown -- fi --fi -+ (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 - sed 's/^/| /' conftest.$ac_ext >&5 - -+ # Broken: fails on valid input. -+continue - fi --rm -f conftest.err conftest.$ac_objext conftest.$ac_ext --else -+ -+rm -f conftest.err conftest.$ac_ext -+ -+ # OK, works on sane cases. Now check whether nonexistent headers -+ # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ - _ACEOF - cat confdefs.h >>conftest.$ac_ext - cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ --int --main () --{ -- /* Are we little or big endian? From Harbison&Steele. */ -- union -- { -- long l; -- char c[sizeof (long)]; -- } u; -- u.l = 1; -- exit (u.c[sizeof (long) - 1] == 1); --} -+#include <ac_nonexistent.h> - _ACEOF --rm -f conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&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 -+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); }; }; then -- ac_cv_c_bigendian=no -+ (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 -- echo "$as_me: program exited with status $ac_status" >&5 --echo "$as_me: failed program was:" >&5 -+ echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --( exit $ac_status ) --ac_cv_c_bigendian=yes --fi --rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext --fi --fi --rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ # Passes both tests. -+ac_preproc_ok=: -+break - fi --echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 --echo "${ECHO_T}$ac_cv_c_bigendian" >&6 --case $ac_cv_c_bigendian in -- yes) - --cat >>confdefs.h <<\_ACEOF --#define WORDS_BIGENDIAN 1 --_ACEOF -- ;; -- no) -- ;; -- *) -- { { echo "$as_me:$LINENO: error: unknown endianness --presetting ac_cv_c_bigendian=no (or yes) will help" >&5 --echo "$as_me: error: unknown endianness --presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} -- { (exit 1); exit 1; }; } ;; --esac -+rm -f conftest.err conftest.$ac_ext - -+done -+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -+rm -f conftest.err conftest.$ac_ext -+if $ac_preproc_ok; then -+ : -+else -+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -+See \`config.log' for more details." >&5 -+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+fi - --te_file=generic -+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 - --# Makefile target for installing gas in $(tooldir)/bin. --install_tooldir=install-exec-tooldir - --canon_targets="" --all_targets=no --if test -n "$enable_targets" ; then -- for t in `echo $enable_targets | sed 's/,/ /g'`; do -- if test $t = "all"; then -- all_targets=yes -- continue -- fi -- result=`$ac_config_sub $t 2>/dev/null` -- if test -n "$result" ; then -- canon_targets="$canon_targets $result" --# else --# # Permit "all", etc. We don't support it yet though. --# canon_targets="$canon_targets $t" -+{ 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 -- _gas_uniq_list="$canon_targets" --_gas_uniq_newlist="" --for _gas_uniq_i in _gas_uniq_dummy $_gas_uniq_list ; do -- case $_gas_uniq_i in -- _gas_uniq_dummy) ;; -- *) case " $_gas_uniq_newlist " in -- *" $_gas_uniq_i "*) ;; -- *) _gas_uniq_newlist="$_gas_uniq_newlist $_gas_uniq_i" ;; -- esac ;; -- esac - done --canon_targets=$_gas_uniq_newlist - --fi -+done -+IFS=$as_save_IFS - --emulations="" - --for this_target in $target $canon_targets ; do -+fi - -- targ=${this_target} -- . ${srcdir}/configure.tgt -+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 - -- case ${target_cpu} in -- crisv32) -+else -+ ac_cv_path_GREP=$GREP -+fi - --cat >>confdefs.h <<_ACEOF --#define DEFAULT_CRIS_ARCH $arch --_ACEOF - -- ;; -- esac -+fi -+{ 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 ${this_target} = $target ; then -- target_cpu_type=${cpu_type} -- elif test ${target_cpu_type} != ${cpu_type} ; then -- continue -+ -+{ 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 - -- generic_target=${cpu_type}-${target_vendor}-${target_os} -- case ${generic_target} in -- i386-*-sco3.2v5*) -- if test ${this_target} = $target; then - --cat >>confdefs.h <<\_ACEOF --#define SCO_ELF 1 --_ACEOF -+ $ac_path_EGREP_found && break 3 -+ done -+done - -- fi -- ;; -+done -+IFS=$as_save_IFS - -- i386-*-msdosdjgpp* \ -- | i386-*-go32* \ -- | i386-go32-rtems*) - --cat >>confdefs.h <<\_ACEOF --#define STRICTCOFF 1 --_ACEOF -+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 - -- i860-*-*) -- { echo "$as_me:$LINENO: WARNING: GAS support for ${generic_target} is preliminary and a work in progress" >&5 --echo "$as_me: WARNING: GAS support for ${generic_target} is preliminary and a work in progress" >&2;} -- ;; -+else -+ ac_cv_path_EGREP=$EGREP -+fi - -- mips-sony-bsd*) -- ;; -- mips-*-bsd*) -- { { echo "$as_me:$LINENO: error: Unknown vendor for mips-bsd configuration." >&5 --echo "$as_me: error: Unknown vendor for mips-bsd configuration." >&2;} -- { (exit 1); exit 1; }; } -- ;; - -- ppc-*-aix5.*) -+ 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" - --cat >>confdefs.h <<\_ACEOF --#define AIX_WEAK_SUPPORT 1 -+ -+{ 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 <stdlib.h> -+#include <stdarg.h> -+#include <string.h> -+#include <float.h> - -- ;; -- ppc-*-linux-*) -- case "$endian" in -- big) ;; -- *) { { echo "$as_me:$LINENO: error: GNU/Linux must be configured big endian" >&5 --echo "$as_me: error: GNU/Linux must be configured big endian" >&2;} -- { (exit 1); exit 1; }; } ;; -- esac -- ;; -- ppc-*-solaris*) -- if test ${this_target} = $target; then -+int -+main () -+{ - --cat >>confdefs.h <<\_ACEOF --#define TARGET_SOLARIS_COMMENT 1 -+ ; -+ 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 - -- fi -- if test x${endian} = xbig; then -- { { echo "$as_me:$LINENO: error: Solaris must be configured little endian" >&5 --echo "$as_me: error: Solaris must be configured little endian" >&2;} -- { (exit 1); exit 1; }; } -- fi -- ;; -+ ac_cv_header_stdc=no -+fi - -- sh*-*-symbianelf*) -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - --cat >>confdefs.h <<\_ACEOF --#define TARGET_SYMBIAN 1 -+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 <string.h> - -- ;; -- esac -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "memchr" >/dev/null 2>&1; then -+ : -+else -+ ac_cv_header_stdc=no -+fi -+rm -f conftest* - -- if test ${this_target} = $target ; then -- endian_def= -- if test x${endian} = xbig; then -- endian_def=1 -- elif test x${endian} = xlittle; then -- endian_def=0 -- fi -- if test x${endian_def} != x; then -+fi - --cat >>confdefs.h <<_ACEOF --#define TARGET_BYTES_BIG_ENDIAN $endian_def -+if test $ac_cv_header_stdc = yes; then -+ # ISC 2.0.2 stdlib.h does not declare free, 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 <stdlib.h> - -- fi -- fi -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "free" >/dev/null 2>&1; then -+ : -+else -+ ac_cv_header_stdc=no -+fi -+rm -f conftest* - --# Other random stuff. -+fi - -- case ${cpu_type} in -- mips) -- # Set mips_cpu to the name of the default CPU. -- case ${target_cpu} in -- mips | mipsbe | mipseb | mipsle | mipsel | mips64 | mips64el) -- mips_cpu=from-abi -- ;; -- mipsisa32 | mipsisa32el) -- mips_cpu=mips32 -- ;; -- mipsisa32r2 | mipsisa32r2el) -- mips_cpu=mips32r2 -- ;; -- mipsisa64 | mipsisa64el) -- mips_cpu=mips64 -- ;; -- mipsisa64r2 | mipsisa64r2el) -- mips_cpu=mips64r2 -- ;; -- mipstx39 | mipstx39el) -- mips_cpu=r3900 -- ;; -- mips64vr | mips64vrel) -- mips_cpu=vr4100 -- ;; -- mipsisa32r2* | mipsisa64r2*) -- mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..r2//' -e 's/el$//'` -- ;; -- mips64* | mipsisa64* | mipsisa32*) -- mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..//' -e 's/el$//'` -- ;; -- *) -- { { echo "$as_me:$LINENO: error: $target_cpu isn't a supported MIPS CPU name" >&5 --echo "$as_me: error: $target_cpu isn't a supported MIPS CPU name" >&2;} -- { (exit 1); exit 1; }; } -- ;; -- esac -- # See whether it's appropriate to set E_MIPS_ABI_O32 for o32 -- # binaries. It's a GNU extension that some OSes don't understand. -- # The value only matters on ELF targets. -- case ${target} in -- *-*-irix*) -- use_e_mips_abi_o32=0 -- ;; -- *) -- use_e_mips_abi_o32=1 -- ;; -- esac -- # Decide whether to generate 32-bit or 64-bit code by default. -- # Used to resolve -march=from-abi when an embedded ABI is selected. -- case ${target} in -- mips64*-*-* | mipsisa64*-*-*) -- mips_default_64bit=1 -- ;; -- *) -- mips_default_64bit=0 -- ;; -- esac -- # Decide which ABI to target by default. -- case ${target} in -- mips64*-linux* | mips-sgi-irix6*) -- mips_default_abi=N32_ABI -- ;; -- mips*-linux*) -- mips_default_abi=O32_ABI -- ;; -- mips64*-openbsd*) -- mips_default_abi=N64_ABI -- ;; -- *) -- mips_default_abi=NO_ABI -- ;; -- esac -+if test $ac_cv_header_stdc = yes; then -+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -+ if test "$cross_compiling" = yes; then -+ : -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include <ctype.h> -+#include <stdlib.h> -+#if ((' ' & 0x0FF) == 0x020) -+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -+#else -+# define ISLOWER(c) \ -+ (('a' <= (c) && (c) <= 'i') \ -+ || ('j' <= (c) && (c) <= 'r') \ -+ || ('s' <= (c) && (c) <= 'z')) -+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -+#endif - --cat >>confdefs.h <<_ACEOF --#define MIPS_CPU_STRING_DEFAULT "$mips_cpu" -+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -+int -+main () -+{ -+ int i; -+ for (i = 0; i < 256; i++) -+ if (XOR (islower (i), ISLOWER (i)) -+ || toupper (i) != TOUPPER (i)) -+ return 2; -+ return 0; -+} - _ACEOF -+rm -f 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>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_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 -+ : -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -+( exit $ac_status ) -+ac_cv_header_stdc=no -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi - --cat >>confdefs.h <<_ACEOF --#define USE_E_MIPS_ABI_O32 $use_e_mips_abi_o32 --_ACEOF - -+fi -+fi -+{ 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 --#define MIPS_DEFAULT_64BIT $mips_default_64bit -+cat >>confdefs.h <<\_ACEOF -+#define STDC_HEADERS 1 - _ACEOF - -+fi - --cat >>confdefs.h <<_ACEOF --#define MIPS_DEFAULT_ABI $mips_default_abi --_ACEOF -+# On IRIX 5.3, sys/types and inttypes.h are conflicting. - -- ;; -- esac - -- # Do we need the opcodes library? -- case ${cpu_type} in -- vax | i386 | tic30) -- ;; - -- *) -- need_opcodes=yes - -- case "${enable_shared}" in -- yes) shared_opcodes=true ;; -- *opcodes*) shared_opcodes=true ;; -- *) shared_opcodes=false ;; -- esac -- ;; -- esac - -- # Any other special object files needed ? -- case ${cpu_type} in - -- bfin) -- echo ${extra_objects} | grep -s "bfin-parse.o" -- if test $? -ne 0 ; then -- extra_objects="$extra_objects bfin-parse.o" -- fi - -- echo ${extra_objects} | grep -s "bfin-lex.o" -- if test $? -ne 0 ; then -- extra_objects="$extra_objects bfin-lex.o" -- fi -- ;; - -- fr30 | ip2k | iq2000 | m32r | openrisc) -- using_cgen=yes -- ;; - -- m32c) -- using_cgen=yes -- ;; -- frv) -- using_cgen=yes -- ;; -- m68k) -- case ${extra_objects} in -- *m68k-parse.o*) ;; -- *) extra_objects="$extra_objects m68k-parse.o" ;; -- esac -- ;; -+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.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 { 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 -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default - -- mips) -- echo ${extra_objects} | grep -s "itbl-parse.o" -- if test $? -ne 0 ; then -- extra_objects="$extra_objects itbl-parse.o" -- fi -+#include <$ac_header> -+_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 -+ eval "$as_ac_Header=yes" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -- echo ${extra_objects} | grep -s "itbl-lex.o" -- if test $? -ne 0 ; then -- extra_objects="$extra_objects itbl-lex.o" -- fi -+ eval "$as_ac_Header=no" -+fi - -- echo ${extra_objects} | grep -s "itbl-ops.o" -- if test $? -ne 0 ; then -- extra_objects="$extra_objects itbl-ops.o" -- fi -- ;; -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+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 -+_ACEOF - -- mt) -- using_cgen=yes -- ;; -+fi - -- i386 | s390 | sparc) -- if test $this_target = $target ; then -+done - --cat >>confdefs.h <<_ACEOF --#define DEFAULT_ARCH "${arch}" -+ -+{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 -+echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; } -+if test "${ac_cv_c_bigendian+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ # See if sys/param.h defines the BYTE_ORDER macro. -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ - _ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include <sys/types.h> -+#include <sys/param.h> - -- fi -- ;; -+int -+main () -+{ -+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \ -+ && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) -+ bogus endian macros -+#endif - -- xstormy16) -- using_cgen=yes -- ;; -+ ; -+ 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 -+ # It does; now see whether it defined to BIG_ENDIAN or not. -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include <sys/types.h> -+#include <sys/param.h> - -- xc16x) -- using_cgen=yes -- ;; -+int -+main () -+{ -+#if BYTE_ORDER != BIG_ENDIAN -+ not big endian -+#endif - -- xtensa) -- echo ${extra_objects} | grep -s "xtensa-relax.o" -- if test $? -ne 0 ; then -- extra_objects="$extra_objects xtensa-relax.o" -- fi -- ;; -+ ; -+ 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_c_bigendian=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -- *) -- ;; -- esac -+ ac_cv_c_bigendian=no -+fi - -- if test $using_cgen = yes ; then -- case "x${extra_objects}" in -- *cgen.o*) ;; -- *) extra_objects="$extra_objects cgen.o" ;; -- esac -- fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# See if we really can support this configuration with the emulation code. -+ # It does not; compile a test program. -+if test "$cross_compiling" = yes; then -+ # try to guess the endianness by grepping values into an object file -+ ac_cv_c_bigendian=unknown -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; -+short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; -+void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } -+short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; -+short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; -+void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } -+int -+main () -+{ -+ _ascii (); _ebcdic (); -+ ; -+ 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 -+ if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then -+ ac_cv_c_bigendian=yes -+fi -+if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then -+ if test "$ac_cv_c_bigendian" = unknown; then -+ ac_cv_c_bigendian=no -+ else -+ # finding both strings is unlikely to happen, but who knows? -+ ac_cv_c_bigendian=unknown -+ fi -+fi -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - -- if test $this_target = $target ; then -- obj_format=$fmt -- te_file=$em -- fi - --# From target name and format, produce a list of supported emulations. -+fi - -- case ${generic_target}-${fmt} in -- mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;; -- mips*-*-linux*-*) case "$endian" in -- big) emulation="mipsbelf mipslelf mipself" ;; -- *) emulation="mipslelf mipsbelf mipself" ;; -- esac ;; -- mips-*-lnews*-ecoff) ;; -- mips-*-*-ecoff) case "$endian" in -- big) emulation="mipsbecoff mipslecoff mipsecoff" ;; -- *) emulation="mipslecoff mipsbecoff mipsecoff" ;; -- esac ;; -- mips-*-*-elf) case "$endian" in -- big) emulation="mipsbelf mipslelf mipself" ;; -- *) emulation="mipslelf mipsbelf mipself" ;; -- esac ;; -- mips-*-sysv4*MP*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;; -- # i386-pc-pe-coff != i386-pc-coff. -- i386-*-pe-coff) ;; -- # Uncommenting the next line will turn on support for i386 AOUT -- # for the default linux configuration -- # i386-*-linux*-elf) emulation="i386elf i386aout" ;; -- # -- i386-*-aout) emulation="i386aout" ;; -- i386-*-coff) emulation="i386coff" ;; -- i386-*-elf) emulation="i386elf" ;; -- -- # Always all formats. The first stated emulation becomes the default. -- cris-*-*aout*) emulation="crisaout criself" ;; -- cris-*-*) emulation="criself crisaout" ;; -- esac -- -- emulations="$emulations $emulation" -- --done -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+else -+ 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 -+int -+main () -+{ - --# Turn on all targets if possible --if test ${all_targets} = "yes"; then -- case ${target_cpu_type} in -- i386) -- case ${obj_format} in -- aout) -- emulations="$emulations i386coff i386elf" -- ;; -- coff) -- emulations="$emulations i386aout i386elf" -- ;; -- elf) -- emulations="$emulations i386aout i386coff" -- ;; -- esac -- ;; -- esac --fi -+ /* Are we little or big endian? From Harbison&Steele. */ -+ union -+ { -+ long int l; -+ char c[sizeof (long int)]; -+ } u; -+ u.l = 1; -+ return u.c[sizeof (long int) - 1] == 1; - --# Assign floating point type. Most processors with FP support --# IEEE FP. On those that don't support FP at all, usually IEEE --# is emulated. --case ${target_cpu} in -- vax | tahoe ) atof=${target_cpu} ;; -- pdp11) atof=vax ;; -- *) atof=ieee ;; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; - esac -- --case "${obj_format}" in -- "") { { echo "$as_me:$LINENO: error: GAS does not know what format to use for target ${target}" >&5 --echo "$as_me: error: GAS does not know what format to use for target ${target}" >&2;} -- { (exit 1); exit 1; }; } ;; -+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' -+ { (case "(($ac_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 -+ ac_cv_c_bigendian=no -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 - --# Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU). --cgen_cpu_prefix="" --if test $using_cgen = yes ; then -- case ${target_cpu} in -- *) cgen_cpu_prefix=${target_cpu} ;; -- esac -- -- --cat >>confdefs.h <<\_ACEOF --#define USING_CGEN 1 --_ACEOF -- -+( exit $ac_status ) -+ac_cv_c_bigendian=yes -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext - fi - - --if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then -- { { echo "$as_me:$LINENO: error: GAS does not support target CPU ${target_cpu_type}" >&5 --echo "$as_me: error: GAS does not support target CPU ${target_cpu_type}" >&2;} -- { (exit 1); exit 1; }; } - fi - --if test ! -r ${srcdir}/config/obj-${obj_format}.c; then -- { { echo "$as_me:$LINENO: error: GAS does not have support for object file format ${obj_format}" >&5 --echo "$as_me: error: GAS does not have support for object file format ${obj_format}" >&2;} -- { (exit 1); exit 1; }; } -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi -+{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 -+echo "${ECHO_T}$ac_cv_c_bigendian" >&6; } -+case $ac_cv_c_bigendian in -+ yes) - --# Some COFF configurations want these random other flags set. --case ${obj_format} in -- coff) -- case ${target_cpu_type} in -- i386) --cat >>confdefs.h <<\_ACEOF --#define I386COFF 1 --_ACEOF -- ;; -- m68k) --cat >>confdefs.h <<\_ACEOF --#define M68KCOFF 1 --_ACEOF -- ;; -- m88k) - cat >>confdefs.h <<\_ACEOF --#define M88KCOFF 1 -+#define WORDS_BIGENDIAN 1 - _ACEOF - ;; -- esac -- ;; -+ no) -+ ;; -+ *) -+ { { echo "$as_me:$LINENO: error: unknown endianness -+presetting ac_cv_c_bigendian=no (or yes) will help" >&5 -+echo "$as_me: error: unknown endianness -+presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} -+ { (exit 1); exit 1; }; } ;; - esac - --# Getting this done right is going to be a bitch. Each configuration specified --# with --enable-targets=... should be checked for environment, format, cpu --# setting. --# --# For each configuration, the necessary object file support code must be linked --# in. This might be only one, it might be up to four. The necessary emulation --# code needs to be provided, too. --# --# And then there's "--enable-targets=all".... --# --# For now, just always do it for MIPS ELF or ECOFF configurations. Sigh. - --formats="${obj_format}" --emfiles="" --EMULATIONS="" --_gas_uniq_list="$emulations" --_gas_uniq_newlist="" --for _gas_uniq_i in _gas_uniq_dummy $_gas_uniq_list ; do -- case $_gas_uniq_i in -- _gas_uniq_dummy) ;; -- *) case " $_gas_uniq_newlist " in -- *" $_gas_uniq_i "*) ;; -- *) _gas_uniq_newlist="$_gas_uniq_newlist $_gas_uniq_i" ;; -- esac ;; -- esac --done --emulations=$_gas_uniq_newlist -+te_file=generic - --for em in . $emulations ; do -- case $em in -- .) continue ;; -- mipsbelf | mipslelf | mipself) -- fmt=elf file=mipself ;; -- mipsbecoff | mipslecoff | mipsecoff) -- fmt=ecoff file=mipsecoff ;; -- *coff) -- fmt=coff file=$em ;; -- *aout) -- fmt=aout file=$em ;; -- *elf) -- fmt=elf file=$em ;; -- esac -- formats="$formats $fmt" -- emfiles="$emfiles e-$file.o" -- EMULATIONS="$EMULATIONS &$em," --done --_gas_uniq_list="$formats" --_gas_uniq_newlist="" --for _gas_uniq_i in _gas_uniq_dummy $_gas_uniq_list ; do -- case $_gas_uniq_i in -- _gas_uniq_dummy) ;; -- *) case " $_gas_uniq_newlist " in -- *" $_gas_uniq_i "*) ;; -- *) _gas_uniq_newlist="$_gas_uniq_newlist $_gas_uniq_i" ;; -- esac ;; -- esac --done --formats=$_gas_uniq_newlist -+# Makefile target for installing gas in $(tooldir)/bin. -+install_tooldir=install-exec-tooldir - --_gas_uniq_list="$emfiles" -+canon_targets="" -+all_targets=no -+if test -n "$enable_targets" ; then -+ for t in `echo $enable_targets | sed 's/,/ /g'`; do -+ if test $t = "all"; then -+ all_targets=yes -+ continue -+ fi -+ result=`$ac_config_sub $t 2>/dev/null` -+ if test -n "$result" ; then -+ canon_targets="$canon_targets $result" -+# else -+# # Permit "all", etc. We don't support it yet though. -+# canon_targets="$canon_targets $t" -+ fi -+ done -+ _gas_uniq_list="$canon_targets" - _gas_uniq_newlist="" - for _gas_uniq_i in _gas_uniq_dummy $_gas_uniq_list ; do - case $_gas_uniq_i in -@@ -5034,883 +5702,871 @@ - esac ;; - esac - done --emfiles=$_gas_uniq_newlist -+canon_targets=$_gas_uniq_newlist - --if test `set . $formats ; shift ; echo $#` -gt 1 ; then -- for fmt in $formats ; do -- case $fmt in -- aout) --cat >>confdefs.h <<\_ACEOF --#define OBJ_MAYBE_AOUT 1 -+fi -+ -+emulations="" -+ -+for this_target in $target $canon_targets ; do -+ -+ targ=${this_target} -+ . ${srcdir}/configure.tgt -+ -+ case ${target_cpu} in -+ crisv32) -+ -+cat >>confdefs.h <<_ACEOF -+#define DEFAULT_CRIS_ARCH $arch - _ACEOF -- ;; -- bout) -+ -+ ;; -+ esac -+ -+ if test ${this_target} = $target ; then -+ target_cpu_type=${cpu_type} -+ elif test ${target_cpu_type} != ${cpu_type} ; then -+ continue -+ fi -+ -+ generic_target=${cpu_type}-${target_vendor}-${target_os} -+ case ${generic_target} in -+ i386-*-sco3.2v5*) -+ if test ${this_target} = $target; then -+ - cat >>confdefs.h <<\_ACEOF --#define OBJ_MAYBE_BOUT 1 -+#define SCO_ELF 1 - _ACEOF -- ;; -- coff) -+ -+ fi -+ ;; -+ -+ i386-*-msdosdjgpp* \ -+ | i386-*-go32* \ -+ | i386-go32-rtems*) -+ - cat >>confdefs.h <<\_ACEOF --#define OBJ_MAYBE_COFF 1 -+#define STRICTCOFF 1 - _ACEOF -- ;; -- ecoff) --cat >>confdefs.h <<\_ACEOF --#define OBJ_MAYBE_ECOFF 1 --_ACEOF -- ;; -- elf) --cat >>confdefs.h <<\_ACEOF --#define OBJ_MAYBE_ELF 1 --_ACEOF -- ;; -- generic) --cat >>confdefs.h <<\_ACEOF --#define OBJ_MAYBE_GENERIC 1 --_ACEOF -- ;; -- ieee) --cat >>confdefs.h <<\_ACEOF --#define OBJ_MAYBE_IEEE 1 --_ACEOF -- ;; -- som) --cat >>confdefs.h <<\_ACEOF --#define OBJ_MAYBE_SOM 1 --_ACEOF -- ;; -- esac -- extra_objects="$extra_objects obj-$fmt.o" -- done -- obj_format=multi --fi --if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then -- DEFAULT_EMULATION=`set . $emulations ; echo $2` -- # e-mips* has more than one emulation per file, e-i386* has just one at the -- # moment. If only one emulation is specified, then don't define -- # USE_EMULATIONS or include any of the e-files as they will only be bloat. -- case "${obj_format}${emfiles}" in -- multi* | *mips*) -- extra_objects="$extra_objects $emfiles" - --cat >>confdefs.h <<\_ACEOF --#define USE_EMULATIONS 1 --_ACEOF -- ;; -- esac --fi -+ ;; - -+ i860-*-*) -+ { echo "$as_me:$LINENO: WARNING: GAS support for ${generic_target} is preliminary and a work in progress" >&5 -+echo "$as_me: WARNING: GAS support for ${generic_target} is preliminary and a work in progress" >&2;} -+ ;; - --cat >>confdefs.h <<_ACEOF --#define EMULATIONS $EMULATIONS --_ACEOF -+ mips-sony-bsd*) -+ ;; -+ mips-*-bsd*) -+ { { echo "$as_me:$LINENO: error: Unknown vendor for mips-bsd configuration." >&5 -+echo "$as_me: error: Unknown vendor for mips-bsd configuration." >&2;} -+ { (exit 1); exit 1; }; } -+ ;; - -+ ppc-*-aix5.*) - --cat >>confdefs.h <<_ACEOF --#define DEFAULT_EMULATION "$DEFAULT_EMULATION" -+cat >>confdefs.h <<\_ACEOF -+#define AIX_WEAK_SUPPORT 1 - _ACEOF - -+ ;; -+ ppc-*-linux-*) -+ case "$endian" in -+ big) ;; -+ *) { { echo "$as_me:$LINENO: error: GNU/Linux must be configured big endian" >&5 -+echo "$as_me: error: GNU/Linux must be configured big endian" >&2;} -+ { (exit 1); exit 1; }; } ;; -+ esac -+ ;; -+ ppc-*-solaris*) -+ if test ${this_target} = $target; then - --reject_dev_configs=yes -+cat >>confdefs.h <<\_ACEOF -+#define TARGET_SOLARIS_COMMENT 1 -+_ACEOF - --case ${reject_dev_configs}-${dev} in -- yes-yes) # Oops. -- { { echo "$as_me:$LINENO: error: GAS does not support the ${generic_target} configuration." >&5 --echo "$as_me: error: GAS does not support the ${generic_target} configuration." >&2;} -+ fi -+ if test x${endian} = xbig; then -+ { { echo "$as_me:$LINENO: error: Solaris must be configured little endian" >&5 -+echo "$as_me: error: Solaris must be configured little endian" >&2;} - { (exit 1); exit 1; }; } -- ;; --esac -- -- -- -- -- -- -- --# do we need the opcodes library? --case "${need_opcodes}" in --yes) -- OPCODES_LIB=../opcodes/libopcodes.la -- ;; --esac -+ fi -+ ;; - --BFDLIB=../bfd/libbfd.la --BFDVER_H=../bfd/bfdver.h --ALL_OBJ_DEPS="$ALL_OBJ_DEPS"' ../bfd/bfd.h $(INCDIR)/symcat.h' -+ sh*-*-symbianelf*) - -+cat >>confdefs.h <<\_ACEOF -+#define TARGET_SYMBIAN 1 -+_ACEOF - -+ ;; -+ esac - -+ if test ${this_target} = $target ; then -+ endian_def= -+ if test x${endian} = xbig; then -+ endian_def=1 -+ elif test x${endian} = xlittle; then -+ endian_def=0 -+ fi -+ if test x${endian_def} != x; then - -+cat >>confdefs.h <<_ACEOF -+#define TARGET_BYTES_BIG_ENDIAN $endian_def -+_ACEOF - -+ fi -+ fi - -+# Other random stuff. - -+ case ${cpu_type} in -+ mips) -+ # Set mips_cpu to the name of the default CPU. -+ case ${target_cpu} in -+ mips | mipsbe | mipseb | mipsle | mipsel | mips64 | mips64el) -+ mips_cpu=from-abi -+ ;; -+ mipsisa32 | mipsisa32el) -+ mips_cpu=mips32 -+ ;; -+ mipsisa32r2 | mipsisa32r2el) -+ mips_cpu=mips32r2 -+ ;; -+ mipsisa64 | mipsisa64el) -+ mips_cpu=mips64 -+ ;; -+ mipsisa64r2 | mipsisa64r2el) -+ mips_cpu=mips64r2 -+ ;; -+ mipstx39 | mipstx39el) -+ mips_cpu=r3900 -+ ;; -+ mips64vr | mips64vrel) -+ mips_cpu=vr4100 -+ ;; -+ mipsisa32r2* | mipsisa64r2*) -+ mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..r2//' -e 's/el$//'` -+ ;; -+ mips64* | mipsisa64* | mipsisa32*) -+ mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..//' -e 's/el$//'` -+ ;; -+ *) -+ { { echo "$as_me:$LINENO: error: $target_cpu isn't a supported MIPS CPU name" >&5 -+echo "$as_me: error: $target_cpu isn't a supported MIPS CPU name" >&2;} -+ { (exit 1); exit 1; }; } -+ ;; -+ esac -+ # See whether it's appropriate to set E_MIPS_ABI_O32 for o32 -+ # binaries. It's a GNU extension that some OSes don't understand. -+ # The value only matters on ELF targets. -+ case ${target} in -+ *-*-irix*) -+ use_e_mips_abi_o32=0 -+ ;; -+ *) -+ use_e_mips_abi_o32=1 -+ ;; -+ esac -+ # Decide whether to generate 32-bit or 64-bit code by default. -+ # Used to resolve -march=from-abi when an embedded ABI is selected. -+ case ${target} in -+ mips64*-*-* | mipsisa64*-*-*) -+ mips_default_64bit=1 -+ ;; -+ *) -+ mips_default_64bit=0 -+ ;; -+ esac -+ # Decide which ABI to target by default. -+ case ${target} in -+ mips64*-linux* | mips-sgi-irix6*) -+ mips_default_abi=N32_ABI -+ ;; -+ mips*-linux*) -+ mips_default_abi=O32_ABI -+ ;; -+ mips64*-openbsd*) -+ mips_default_abi=N64_ABI -+ ;; -+ *) -+ mips_default_abi=NO_ABI -+ ;; -+ esac - - cat >>confdefs.h <<_ACEOF --#define TARGET_ALIAS "${target_alias}" -+#define MIPS_CPU_STRING_DEFAULT "$mips_cpu" - _ACEOF - - - cat >>confdefs.h <<_ACEOF --#define TARGET_CANONICAL "${target}" -+#define USE_E_MIPS_ABI_O32 $use_e_mips_abi_o32 - _ACEOF - - - cat >>confdefs.h <<_ACEOF --#define TARGET_CPU "${target_cpu}" -+#define MIPS_DEFAULT_64BIT $mips_default_64bit - _ACEOF - - - cat >>confdefs.h <<_ACEOF --#define TARGET_VENDOR "${target_vendor}" -+#define MIPS_DEFAULT_ABI $mips_default_abi - _ACEOF - -+ ;; -+ esac - --cat >>confdefs.h <<_ACEOF --#define TARGET_OS "${target_os}" --_ACEOF -+ # Do we need the opcodes library? -+ case ${cpu_type} in -+ vax | i386 | tic30) -+ ;; - -+ *) -+ need_opcodes=yes - --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 --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 --if test "${ac_cv_prog_CC+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- if test -n "$CC"; then -- ac_cv_prog_CC="$CC" # Let the user override the test. --else --as_save_IFS=$IFS; IFS=$PATH_SEPARATOR --for as_dir in $PATH --do -- IFS=$as_save_IFS -- test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -- if $as_executable_p "$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 -+ case "${enable_shared}" in -+ yes) shared_opcodes=true ;; -+ *opcodes*) shared_opcodes=true ;; -+ *) shared_opcodes=false ;; -+ esac -+ ;; -+ esac - --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 -+ # Any other special object files needed ? -+ case ${cpu_type} in - --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 --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="gcc" -- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -- break 2 -- fi --done --done -+ bfin) -+ echo ${extra_objects} | grep -s "bfin-parse.o" -+ if test $? -ne 0 ; then -+ extra_objects="$extra_objects bfin-parse.o" -+ fi - --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 --else -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 --fi -+ echo ${extra_objects} | grep -s "bfin-lex.o" -+ if test $? -ne 0 ; then -+ extra_objects="$extra_objects bfin-lex.o" -+ fi -+ ;; - -- CC=$ac_ct_CC --else -- CC="$ac_cv_prog_CC" --fi -+ fr30 | ip2k | iq2000 | m32r | openrisc) -+ using_cgen=yes -+ ;; - --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. --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 --if test "${ac_cv_prog_CC+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- if test -n "$CC"; then -- ac_cv_prog_CC="$CC" # Let the user override the test. --else --as_save_IFS=$IFS; IFS=$PATH_SEPARATOR --for as_dir in $PATH --do -- IFS=$as_save_IFS -- test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -- if $as_executable_p "$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 -+ m32c) -+ using_cgen=yes -+ ;; -+ frv) -+ using_cgen=yes -+ ;; -+ m68k) -+ case ${extra_objects} in -+ *m68k-parse.o*) ;; -+ *) extra_objects="$extra_objects m68k-parse.o" ;; -+ esac -+ ;; - --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 -+ mips) -+ echo ${extra_objects} | grep -s "itbl-parse.o" -+ if test $? -ne 0 ; then -+ extra_objects="$extra_objects itbl-parse.o" -+ 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 -+ echo ${extra_objects} | grep -s "itbl-lex.o" -+ if test $? -ne 0 ; then -+ extra_objects="$extra_objects itbl-lex.o" -+ fi - --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 --else -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 --fi -+ echo ${extra_objects} | grep -s "itbl-ops.o" -+ if test $? -ne 0 ; then -+ extra_objects="$extra_objects itbl-ops.o" -+ fi -+ ;; - -- CC=$ac_ct_CC --else -- CC="$ac_cv_prog_CC" --fi -+ mt) -+ using_cgen=yes -+ ;; -+ -+ i386 | s390 | sparc) -+ if test $this_target = $target ; then -+ -+cat >>confdefs.h <<_ACEOF -+#define DEFAULT_ARCH "${arch}" -+_ACEOF -+ -+ fi -+ ;; -+ -+ xstormy16) -+ using_cgen=yes -+ ;; -+ -+ xc16x) -+ using_cgen=yes -+ ;; -+ -+ xtensa) -+ echo ${extra_objects} | grep -s "xtensa-relax.o" -+ if test $? -ne 0 ; then -+ extra_objects="$extra_objects xtensa-relax.o" -+ fi -+ ;; -+ -+ *) -+ ;; -+ esac -+ -+ if test $using_cgen = yes ; then -+ case "x${extra_objects}" in -+ *cgen.o*) ;; -+ *) extra_objects="$extra_objects cgen.o" ;; -+ esac -+ fi -+ -+# See if we really can support this configuration with the emulation code. -+ -+ if test $this_target = $target ; then -+ obj_format=$fmt -+ te_file=$em -+ fi -+ -+# From target name and format, produce a list of supported emulations. -+ -+ case ${generic_target}-${fmt} in -+ mips-*-irix5*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;; -+ mips*-*-linux*-*) case "$endian" in -+ big) emulation="mipsbelf mipslelf mipself" ;; -+ *) emulation="mipslelf mipsbelf mipself" ;; -+ esac ;; -+ mips-*-lnews*-ecoff) ;; -+ mips-*-*-ecoff) case "$endian" in -+ big) emulation="mipsbecoff mipslecoff mipsecoff" ;; -+ *) emulation="mipslecoff mipsbecoff mipsecoff" ;; -+ esac ;; -+ mips-*-*-elf) case "$endian" in -+ big) emulation="mipsbelf mipslelf mipself" ;; -+ *) emulation="mipslelf mipsbelf mipself" ;; -+ esac ;; -+ mips-*-sysv4*MP*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;; -+ # i386-pc-pe-coff != i386-pc-coff. -+ i386-*-pe-coff) ;; -+ # Uncommenting the next line will turn on support for i386 AOUT -+ # for the default linux configuration -+ # i386-*-linux*-elf) emulation="i386elf i386aout" ;; -+ # -+ i386-*-aout) emulation="i386aout" ;; -+ i386-*-coff) emulation="i386coff" ;; -+ i386-*-elf) emulation="i386elf" ;; -+ -+ # Always all formats. The first stated emulation becomes the default. -+ cris-*-*aout*) emulation="crisaout criself" ;; -+ cris-*-*) emulation="criself crisaout" ;; -+ esac -+ -+ emulations="$emulations $emulation" - --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 --if test "${ac_cv_prog_CC+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- if test -n "$CC"; then -- ac_cv_prog_CC="$CC" # Let the user override the test. --else -- ac_prog_rejected=no --as_save_IFS=$IFS; IFS=$PATH_SEPARATOR --for as_dir in $PATH --do -- IFS=$as_save_IFS -- test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then -- ac_prog_rejected=yes -- continue -- fi -- ac_cv_prog_CC="cc" -- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -- break 2 -- fi --done - done - --if test $ac_prog_rejected = yes; then -- # We found a bogon in the path, so make sure we never use it. -- set dummy $ac_cv_prog_CC -- shift -- if test $# != 0; then -- # We chose a different compiler from the bogus one. -- # However, it has the same basename, so the bogon will be chosen -- # first if we set CC to just the basename; use the full file name. -- shift -- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" -- fi --fi -+# Turn on all targets if possible -+if test ${all_targets} = "yes"; then -+ case ${target_cpu_type} in -+ i386) -+ case ${obj_format} in -+ aout) -+ emulations="$emulations i386coff i386elf" -+ ;; -+ coff) -+ emulations="$emulations i386aout i386elf" -+ ;; -+ elf) -+ emulations="$emulations i386aout i386coff" -+ ;; -+ esac -+ ;; -+ esac - fi -+ -+# Assign floating point type. Most processors with FP support -+# IEEE FP. On those that don't support FP at all, usually IEEE -+# is emulated. -+case ${target_cpu} in -+ vax | tahoe ) atof=${target_cpu} ;; -+ pdp11) atof=vax ;; -+ *) atof=ieee ;; -+esac -+ -+case "${obj_format}" in -+ "") { { echo "$as_me:$LINENO: error: GAS does not know what format to use for target ${target}" >&5 -+echo "$as_me: error: GAS does not know what format to use for target ${target}" >&2;} -+ { (exit 1); exit 1; }; } ;; -+esac -+ -+# Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU). -+cgen_cpu_prefix="" -+if test $using_cgen = yes ; then -+ case ${target_cpu} in -+ *) cgen_cpu_prefix=${target_cpu} ;; -+ esac -+ -+ -+cat >>confdefs.h <<\_ACEOF -+#define USING_CGEN 1 -+_ACEOF -+ - 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 -+ -+ -+if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then -+ { { echo "$as_me:$LINENO: error: GAS does not support target CPU ${target_cpu_type}" >&5 -+echo "$as_me: error: GAS does not support target CPU ${target_cpu_type}" >&2;} -+ { (exit 1); exit 1; }; } - fi - -+if test ! -r ${srcdir}/config/obj-${obj_format}.c; then -+ { { echo "$as_me:$LINENO: error: GAS does not have support for object file format ${obj_format}" >&5 -+echo "$as_me: error: GAS does not have support for object file format ${obj_format}" >&2;} -+ { (exit 1); exit 1; }; } - fi --if test -z "$CC"; then -- if test -n "$ac_tool_prefix"; then -- for ac_prog in cl -- 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 --if test "${ac_cv_prog_CC+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- if test -n "$CC"; then -- ac_cv_prog_CC="$CC" # Let the user override the test. --else --as_save_IFS=$IFS; IFS=$PATH_SEPARATOR --for as_dir in $PATH --do -- IFS=$as_save_IFS -- test -z "$as_dir" && as_dir=. -- for ac_exec_ext in '' $ac_executable_extensions; do -- if $as_executable_p "$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 -+ -+# Some COFF configurations want these random other flags set. -+case ${obj_format} in -+ coff) -+ case ${target_cpu_type} in -+ i386) -+cat >>confdefs.h <<\_ACEOF -+#define I386COFF 1 -+_ACEOF -+ ;; -+ m68k) -+cat >>confdefs.h <<\_ACEOF -+#define M68KCOFF 1 -+_ACEOF -+ ;; -+ m88k) -+cat >>confdefs.h <<\_ACEOF -+#define M88KCOFF 1 -+_ACEOF -+ ;; -+ esac -+ ;; -+esac -+ -+# Getting this done right is going to be a bitch. Each configuration specified -+# with --enable-targets=... should be checked for environment, format, cpu -+# setting. -+# -+# For each configuration, the necessary object file support code must be linked -+# in. This might be only one, it might be up to four. The necessary emulation -+# code needs to be provided, too. -+# -+# And then there's "--enable-targets=all".... -+# -+# For now, just always do it for MIPS ELF or ECOFF configurations. Sigh. -+ -+formats="${obj_format}" -+emfiles="" -+EMULATIONS="" -+_gas_uniq_list="$emulations" -+_gas_uniq_newlist="" -+for _gas_uniq_i in _gas_uniq_dummy $_gas_uniq_list ; do -+ case $_gas_uniq_i in -+ _gas_uniq_dummy) ;; -+ *) case " $_gas_uniq_newlist " in -+ *" $_gas_uniq_i "*) ;; -+ *) _gas_uniq_newlist="$_gas_uniq_newlist $_gas_uniq_i" ;; -+ esac ;; -+ esac - done -+emulations=$_gas_uniq_newlist -+ -+for em in . $emulations ; do -+ case $em in -+ .) continue ;; -+ mipsbelf | mipslelf | mipself) -+ fmt=elf file=mipself ;; -+ mipsbecoff | mipslecoff | mipsecoff) -+ fmt=ecoff file=mipsecoff ;; -+ *coff) -+ fmt=coff file=$em ;; -+ *aout) -+ fmt=aout file=$em ;; -+ *elf) -+ fmt=elf file=$em ;; -+ esac -+ formats="$formats $fmt" -+ emfiles="$emfiles e-$file.o" -+ EMULATIONS="$EMULATIONS &$em," - done -+_gas_uniq_list="$formats" -+_gas_uniq_newlist="" -+for _gas_uniq_i in _gas_uniq_dummy $_gas_uniq_list ; do -+ case $_gas_uniq_i in -+ _gas_uniq_dummy) ;; -+ *) case " $_gas_uniq_newlist " in -+ *" $_gas_uniq_i "*) ;; -+ *) _gas_uniq_newlist="$_gas_uniq_newlist $_gas_uniq_i" ;; -+ esac ;; -+ esac -+done -+formats=$_gas_uniq_newlist - -+_gas_uniq_list="$emfiles" -+_gas_uniq_newlist="" -+for _gas_uniq_i in _gas_uniq_dummy $_gas_uniq_list ; do -+ case $_gas_uniq_i in -+ _gas_uniq_dummy) ;; -+ *) case " $_gas_uniq_newlist " in -+ *" $_gas_uniq_i "*) ;; -+ *) _gas_uniq_newlist="$_gas_uniq_newlist $_gas_uniq_i" ;; -+ esac ;; -+ esac -+done -+emfiles=$_gas_uniq_newlist -+ -+if test `set . $formats ; shift ; echo $#` -gt 1 ; then -+ for fmt in $formats ; do -+ case $fmt in -+ aout) -+cat >>confdefs.h <<\_ACEOF -+#define OBJ_MAYBE_AOUT 1 -+_ACEOF -+ ;; -+ bout) -+cat >>confdefs.h <<\_ACEOF -+#define OBJ_MAYBE_BOUT 1 -+_ACEOF -+ ;; -+ coff) -+cat >>confdefs.h <<\_ACEOF -+#define OBJ_MAYBE_COFF 1 -+_ACEOF -+ ;; -+ ecoff) -+cat >>confdefs.h <<\_ACEOF -+#define OBJ_MAYBE_ECOFF 1 -+_ACEOF -+ ;; -+ elf) -+cat >>confdefs.h <<\_ACEOF -+#define OBJ_MAYBE_ELF 1 -+_ACEOF -+ ;; -+ generic) -+cat >>confdefs.h <<\_ACEOF -+#define OBJ_MAYBE_GENERIC 1 -+_ACEOF -+ ;; -+ ieee) -+cat >>confdefs.h <<\_ACEOF -+#define OBJ_MAYBE_IEEE 1 -+_ACEOF -+ ;; -+ som) -+cat >>confdefs.h <<\_ACEOF -+#define OBJ_MAYBE_SOM 1 -+_ACEOF -+ ;; -+ esac -+ extra_objects="$extra_objects obj-$fmt.o" -+ done -+ obj_format=multi - 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 -+if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then -+ DEFAULT_EMULATION=`set . $emulations ; echo $2` -+ # e-mips* has more than one emulation per file, e-i386* has just one at the -+ # moment. If only one emulation is specified, then don't define -+ # USE_EMULATIONS or include any of the e-files as they will only be bloat. -+ case "${obj_format}${emfiles}" in -+ multi* | *mips*) -+ extra_objects="$extra_objects $emfiles" -+ -+cat >>confdefs.h <<\_ACEOF -+#define USE_EMULATIONS 1 -+_ACEOF -+ ;; -+ esac - fi - -- test -n "$CC" && break -- done --fi --if test -z "$CC"; then -- ac_ct_CC=$CC -- for ac_prog in cl --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 --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="$ac_prog" -- 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 --else -- echo "$as_me:$LINENO: result: no" >&5 --echo "${ECHO_T}no" >&6 --fi -+cat >>confdefs.h <<_ACEOF -+#define EMULATIONS $EMULATIONS -+_ACEOF - -- test -n "$ac_ct_CC" && break --done - -- CC=$ac_ct_CC --fi -+cat >>confdefs.h <<_ACEOF -+#define DEFAULT_EMULATION "$DEFAULT_EMULATION" -+_ACEOF - --fi - -+reject_dev_configs=yes - --test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH --See \`config.log' for more details." >&5 --echo "$as_me: error: no acceptable C compiler found in \$PATH --See \`config.log' for more details." >&2;} -+case ${reject_dev_configs}-${dev} in -+ yes-yes) # Oops. -+ { { echo "$as_me:$LINENO: error: GAS does not support the ${generic_target} configuration." >&5 -+echo "$as_me: error: GAS does not support the ${generic_target} configuration." >&2;} - { (exit 1); exit 1; }; } -+ ;; -+esac - --# Provide some information about the compiler. --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 </dev/null >&5\"") >&5 -- (eval $ac_compiler --version </dev/null >&5) 2>&5 -- ac_status=$? -- echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } --{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 -- (eval $ac_compiler -v </dev/null >&5) 2>&5 -- ac_status=$? -- echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } --{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 -- (eval $ac_compiler -V </dev/null >&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 --if test "${ac_cv_c_compiler_gnu+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. */ - --int --main () --{ --#ifndef __GNUC__ -- choke me --#endif - -- ; -- return 0; --} -+ -+ -+ -+# do we need the opcodes library? -+case "${need_opcodes}" in -+yes) -+ OPCODES_LIB=../opcodes/libopcodes.la -+ ;; -+esac -+ -+BFDLIB=../bfd/libbfd.la -+BFDVER_H=../bfd/bfdver.h -+ALL_OBJ_DEPS="$ALL_OBJ_DEPS"' ../bfd/bfd.h $(INCDIR)/symcat.h' -+ -+ -+ -+ -+ -+ -+ -+ -+cat >>confdefs.h <<_ACEOF -+#define TARGET_ALIAS "${target_alias}" - _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_compiler_gnu=yes --else -- echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 - --ac_compiler_gnu=no --fi --rm -f 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 --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 --if test "${ac_cv_prog_cc_g+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ -+cat >>confdefs.h <<_ACEOF -+#define TARGET_CANONICAL "${target}" - _ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ - --int --main () --{ - -- ; -- return 0; --} -+cat >>confdefs.h <<_ACEOF -+#define TARGET_CPU "${target_cpu}" - _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_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 --/* confdefs.h. */ -+ -+cat >>confdefs.h <<_ACEOF -+#define TARGET_VENDOR "${target_vendor}" - _ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include <stdarg.h> --#include <stdio.h> --#include <sys/types.h> --#include <sys/stat.h> --/* 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; --} -+cat >>confdefs.h <<_ACEOF -+#define TARGET_OS "${target_os}" - _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 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 -+ -+ -+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 -+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; } -+if test "${ac_cv_prog_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_CC="${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; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ - - fi --rm -f conftest.err conftest.$ac_objext -+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; } -+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 { 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 --rm -f conftest.$ac_ext conftest.$ac_objext --CC=$ac_save_CC -+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; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+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" ;; -+ 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 - --# 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 <stdlib.h> --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 -- : -+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. -+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; } -+if test "${ac_cv_prog_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_CC="${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 - --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 -+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: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi - -+ -+ fi - fi --rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+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; } -+if test "${ac_cv_prog_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+ ac_prog_rejected=no -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then -+ ac_prog_rejected=yes -+ continue -+ fi -+ ac_cv_prog_CC="cc" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi - 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 -+done -+IFS=$as_save_IFS - -+if test $ac_prog_rejected = yes; then -+ # We found a bogon in the path, so make sure we never use it. -+ set dummy $ac_cv_prog_CC -+ shift -+ if test $# != 0; then -+ # We chose a different compiler from the bogus one. -+ # However, it has the same basename, so the bogon will be chosen -+ # first if we set CC to just the basename; use the full file name. -+ shift -+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" -+ fi -+fi -+fi -+fi -+CC=$ac_cv_prog_CC -+if test -n "$CC"; then -+ { echo "$as_me:$LINENO: result: $CC" >&5 -+echo "${ECHO_T}$CC" >&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; } - 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 - - --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 --if test "${ac_cv_prog_YACC+set}" = set; then -+fi -+if test -z "$CC"; then -+ if test -n "$ac_tool_prefix"; then -+ 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; } -+if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- if test -n "$YACC"; then -- ac_cv_prog_YACC="$YACC" # Let the user override the test. -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH -@@ -5918,40 +6574,43 @@ - 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_YACC="$ac_prog" -+ 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 --YACC=$ac_cv_prog_YACC --if test -n "$YACC"; then -- echo "$as_me:$LINENO: result: $YACC" >&5 --echo "${ECHO_T}$YACC" >&6 -+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 -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } - fi - -- test -n "$YACC" && break --done --test -n "$YACC" || YACC="yacc" - --for ac_prog in flex lex -+ test -n "$CC" && break -+ done -+fi -+if test -z "$CC"; then -+ ac_ct_CC=$CC -+ 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 --if test "${ac_cv_prog_LEX+set}" = set; then -+{ 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 "$LEX"; then -- ac_cv_prog_LEX="$LEX" # Let the user override the test. -+ 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 -@@ -5959,277 +6618,432 @@ - 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_LEX="$ac_prog" -+ 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 --LEX=$ac_cv_prog_LEX --if test -n "$LEX"; then -- 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 -+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; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+ test -n "$ac_ct_CC" && break -+done -+ -+ 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 - -- 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 -+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -+See \`config.log' for more details." >&5 -+echo "$as_me: error: no acceptable C compiler found in \$PATH -+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 -+ac_compiler=`set X $ac_compile; echo $2` -+{ (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); } -+{ (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); } -+{ (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; } -+if test "${ac_cv_c_compiler_gnu+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 -+ 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 (); -+#ifndef __GNUC__ -+ choke me -+#endif -+ - ; - 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 -+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_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_fl_yywrap=yes -+ (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_cv_lib_fl_yywrap=no -+ ac_compiler_gnu=no - fi --rm -f conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext --LIBS=$ac_check_lib_save_LIBS -+ -+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_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_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 -+{ 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 -- ac_check_lib_save_LIBS=$LIBS --LIBS="-ll $LIBS" --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 - 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; - } - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 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 -+ (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_exeext' -- { (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 -- ac_cv_lib_l_yywrap=yes -+ (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_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 - -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - 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; }; } -+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: 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 --if test "${ac_cv_prog_lex_yytext_pointer+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 -- # POSIX says lex can declare yytext either as a pointer or an array; the --# 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" -+ ac_cv_prog_cc_c89=no -+ac_save_CC=$CC - cat >conftest.$ac_ext <<_ACEOF --`cat $LEX_OUTPUT_ROOT.c` -+/* confdefs.h. */ - _ACEOF --rm -f conftest.$ac_objext conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -- (eval $ac_link) 2>conftest.er1 -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include <stdarg.h> -+#include <stdio.h> -+#include <sys/types.h> -+#include <sys/stat.h> -+/* 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 () -+{ -+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; -+ ; -+ return 0; -+} -+_ACEOF -+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_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_prog_lex_yytext_pointer=yes -+ (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_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 --if test $ac_cv_prog_lex_yytext_pointer = yes; then - --cat >>confdefs.h <<\_ACEOF --#define YYTEXT_POINTER 1 --_ACEOF -+rm -f core conftest.err conftest.$ac_objext -+ test "x$ac_cv_prog_cc_c89" != "xno" && break -+done -+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 - --fi --if test "$LEX" = :; then -- LEX=${am_missing_run}flex --fi - --ALL_LINGUAS="fr tr es rw" --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 --if test "${ac_cv_prog_RANLIB+set}" = set; then -+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 -+ -+ -+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; } -+if test "${ac_cv_prog_YACC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- if test -n "$RANLIB"; then -- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -+ if test -n "$YACC"; then -+ ac_cv_prog_YACC="$YACC" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH -@@ -6237,37 +7051,42 @@ - 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_RANLIB="${ac_tool_prefix}ranlib" -+ 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 --RANLIB=$ac_cv_prog_RANLIB --if test -n "$RANLIB"; then -- echo "$as_me:$LINENO: result: $RANLIB" >&5 --echo "${ECHO_T}$RANLIB" >&6 -+YACC=$ac_cv_prog_YACC -+if test -n "$YACC"; then -+ { 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 - --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 --if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then -+ -+ test -n "$YACC" && break -+done -+test -n "$YACC" || YACC="yacc" -+ -+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; } -+if test "${ac_cv_prog_LEX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -- if test -n "$ac_ct_RANLIB"; then -- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -+ if test -n "$LEX"; then -+ ac_cv_prog_LEX="$LEX" # Let the user override the test. - else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR - for as_dir in $PATH -@@ -6275,449 +7094,295 @@ - 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_RANLIB="ranlib" -+ 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 - -- 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 -+LEX=$ac_cv_prog_LEX -+if test -n "$LEX"; then -+ { 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 - -- RANLIB=$ac_ct_RANLIB --else -- RANLIB="$ac_cv_prog_RANLIB" --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 --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= --fi --if test -z "$CPP"; then -- if test "${ac_cv_prog_CPP+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- # Double quotes because CPP needs to be expanded -- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" -- do -- ac_preproc_ok=false --for ac_c_preproc_warn_flag in '' yes --do -- # Use a header file that comes with gcc, so configuring glibc -- # with a fresh cross-compiler works. -- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since -- # <limits.h> exists even on freestanding compilers. -- # On the NeXT, cc -E runs the code through the compiler's parser, -- # not just through cpp. "Syntax error" is here to catch this case. -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#ifdef __STDC__ --# include <limits.h> --#else --# include <assert.h> -+ test -n "$LEX" && break -+done -+test -n "$LEX" || LEX=":" -+ -+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 -- Syntax error -+int -+main (void) -+{ -+ return ! yylex () + ! yywrap (); -+} - _ACEOF --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+{ (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=$? -- 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); } -+{ 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 -- -- # 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 -- # can be detected and how. -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include <ac_nonexistent.h> --_ACEOF --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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 -- # Broken: success on invalid input. --continue -+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: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- # Passes both tests. --ac_preproc_ok=: --break -+ { { 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_ext -- --done --# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. --rm -f conftest.err conftest.$ac_ext --if $ac_preproc_ok; then -- break - fi -+{ 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 - -- done -- ac_cv_prog_CPP=$CPP -- --fi -- CPP=$ac_cv_prog_CPP --else -- ac_cv_prog_CPP=$CPP --fi --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 -- # Use a header file that comes with gcc, so configuring glibc -- # with a fresh cross-compiler works. -- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since -- # <limits.h> exists even on freestanding compilers. -- # On the NeXT, cc -E runs the code through the compiler's parser, -- # not just through cpp. "Syntax error" is here to catch this case. -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#ifdef __STDC__ --# include <limits.h> --#else --# include <assert.h> --#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 -- ac_status=$? -- 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 -- : -+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 -- echo "$as_me: failed program was:" >&5 --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 -- # can be detected and how. -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include <ac_nonexistent.h> -+ 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 --if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+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); } >/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 -- # Broken: success on invalid input. --continue -+ (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 - -- # Passes both tests. --ac_preproc_ok=: --break --fi --rm -f conftest.err conftest.$ac_ext - --done --# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. --rm -f conftest.err conftest.$ac_ext --if $ac_preproc_ok; then -- : --else -- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check --See \`config.log' for more details." >&5 --echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check --See \`config.log' for more details." >&2;} -- { (exit 1); exit 1; }; } - fi - --ac_ext=c --ac_cpp='$CPP $CPPFLAGS' --ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' --ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' --ac_compiler_gnu=$ac_cv_c_compiler_gnu -- -+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 - --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 $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' -- 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: 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 <stdlib.h> --#include <stdarg.h> --#include <string.h> --#include <float.h> -+{ 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 - --int --main () --{ - -- ; -- return 0; --} -+{ 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 -+# not all implementations provide the %pointer and %array declarations. -+ac_cv_prog_lex_yytext_pointer=no -+ac_save_LIBS=$LIBS -+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 --if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>conftest.er1 -+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 -- ac_cv_header_stdc=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_prog_lex_yytext_pointer=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 <string.h> - --_ACEOF --if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -- $EGREP "memchr" >/dev/null 2>&1; then -- : --else -- ac_cv_header_stdc=no - fi --rm -f conftest* -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_save_LIBS - - fi -+{ 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 - --if test $ac_cv_header_stdc = yes; then -- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -- cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ -+cat >>confdefs.h <<\_ACEOF -+#define YYTEXT_POINTER 1 - _ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include <stdlib.h> - --_ACEOF --if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -- $EGREP "free" >/dev/null 2>&1; then -- : --else -- ac_cv_header_stdc=no - fi --rm -f conftest* -+rm -f conftest.l $LEX_OUTPUT_ROOT.c - - fi -+if test "$LEX" = :; then -+ LEX=${am_missing_run}flex -+fi - --if test $ac_cv_header_stdc = yes; then -- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -- if test "$cross_compiling" = yes; then -- : -+ALL_LINGUAS="fr tr es rw" -+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; } -+if test "${ac_cv_prog_RANLIB+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 <ctype.h> --#if ((' ' & 0x0FF) == 0x020) --# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') --# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) --#else --# define ISLOWER(c) \ -- (('a' <= (c) && (c) <= 'i') \ -- || ('j' <= (c) && (c) <= 'r') \ -- || ('s' <= (c) && (c) <= 'z')) --# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) --#endif -- --#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) --int --main () --{ -- int i; -- for (i = 0; i < 256; i++) -- if (XOR (islower (i), ISLOWER (i)) -- || toupper (i) != TOUPPER (i)) -- exit(2); -- exit (0); --} --_ACEOF --rm -f conftest$ac_exeext --if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&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 -- ac_status=$? -- echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); }; }; then -- : -+ if test -n "$RANLIB"; then -+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. - else -- echo "$as_me: program exited with status $ac_status" >&5 --echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS - --( 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 - fi -+RANLIB=$ac_cv_prog_RANLIB -+if test -n "$RANLIB"; then -+ { 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; } - fi -+ -+ - fi --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 -+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; } -+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_RANLIB"; then -+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_RANLIB="ranlib" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS - --cat >>confdefs.h <<\_ACEOF --#define STDC_HEADERS 1 --_ACEOF -+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; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi - -+ 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 - --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 -@@ -6735,10 +7400,10 @@ - #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}; -@@ -6747,16 +7412,17 @@ - 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}; -@@ -6775,7 +7441,9 @@ - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; -+ if (!foo) return 0; - } -+ return !cs[0] && !zero.x; - #endif - - ; -@@ -6783,38 +7451,34 @@ - } - _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 -@@ -6823,8 +7487,8 @@ - - 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 -@@ -6844,39 +7508,37 @@ - - _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 -@@ -6894,80 +7556,8 @@ - ;; - esac - --# On IRIX 5.3, sys/types and inttypes.h are conflicting. -- -- -- -- -- -- -- -- -- --for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.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 $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. */ --$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 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && -- { ac_try='test -z "$ac_c_werror_flag" -- || test ! -s conftest.err' -- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&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 -- eval "$as_ac_Header=yes" --else -- echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- --eval "$as_ac_Header=no" --fi --rm -f 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 --if test `eval echo '${'$as_ac_Header'}'` = yes; then -- cat >>confdefs.h <<_ACEOF --#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 --_ACEOF -- --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 -@@ -6978,62 +7568,59 @@ - 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 -@@ -7044,64 +7631,61 @@ - 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 -@@ -7116,44 +7700,42 @@ - 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 -@@ -7162,8 +7744,8 @@ - - 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 -@@ -7180,7 +7762,7 @@ - # include <malloc.h> - # define alloca _alloca - # else --# if HAVE_ALLOCA_H -+# ifdef HAVE_ALLOCA_H - # include <alloca.h> - # else - # ifdef _AIX -@@ -7198,44 +7780,42 @@ - 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 - -@@ -7249,15 +7829,15 @@ - # 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 -@@ -7267,7 +7847,7 @@ - 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 -@@ -7283,14 +7863,14 @@ - 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 -@@ -7316,68 +7896,60 @@ - - #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 -@@ -7390,8 +7962,8 @@ - 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 -@@ -7404,6 +7976,7 @@ - cat confdefs.h >>conftest.$ac_ext - cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ -+$ac_includes_default - int - find_stack_direction () - { -@@ -7421,17 +7994,26 @@ - 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 -@@ -7444,11 +8026,13 @@ - ( 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 -@@ -7462,18 +8046,19 @@ - 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 -@@ -7484,41 +8069,37 @@ - #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 -@@ -7527,24 +8108,22 @@ - /* 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 -@@ -7552,9 +8131,10 @@ - - 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 -@@ -7578,25 +8158,19 @@ - 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 -@@ -7612,9 +8186,9 @@ - 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 -@@ -7640,68 +8214,60 @@ - - #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 -@@ -7710,8 +8276,8 @@ - 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 -@@ -7753,21 +8319,21 @@ - #include <fcntl.h> - #include <sys/mman.h> - --#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 <sys/param.h> - # ifdef EXEC_PAGESIZE - # define getpagesize() EXEC_PAGESIZE -@@ -7806,15 +8372,15 @@ - /* 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 -@@ -7822,17 +8388,17 @@ - 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 -@@ -7841,24 +8407,33 @@ - *(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 -@@ -7871,11 +8446,13 @@ - ( 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 -@@ -7899,18 +8476,19 @@ - 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 -@@ -7921,41 +8499,37 @@ - #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 -@@ -7964,24 +8538,22 @@ - /* 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 -@@ -7989,9 +8561,10 @@ - - 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 -@@ -8015,25 +8588,19 @@ - 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 -@@ -8059,9 +8626,9 @@ - __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 -@@ -8087,68 +8654,60 @@ - - #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 -@@ -8163,9 +8722,9 @@ - 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 -@@ -8191,68 +8750,60 @@ - - #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 -@@ -8271,8 +8822,8 @@ - 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 -@@ -8292,39 +8843,36 @@ - } - _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 -@@ -8333,34 +8881,34 @@ - - 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 -@@ -8369,17 +8917,17 @@ - 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 -@@ -8390,41 +8938,37 @@ - #include <libintl.h> - _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 -@@ -8433,24 +8977,22 @@ - /* end confdefs.h. */ - #include <libintl.h> - _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 -@@ -8458,9 +9000,10 @@ - - 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 -@@ -8484,30 +9027,23 @@ - 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 -@@ -8527,43 +9063,40 @@ - } - _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 -@@ -8576,59 +9109,56 @@ - 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 -@@ -8648,39 +9178,36 @@ - } - _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 -@@ -8694,8 +9221,8 @@ - - # 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 -@@ -8721,20 +9248,20 @@ - 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 -@@ -8760,68 +9287,60 @@ - - #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 -@@ -8832,8 +9351,8 @@ - - # 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 -@@ -8848,32 +9367,33 @@ - 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 -@@ -8899,11 +9419,11 @@ - 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 -@@ -8923,37 +9443,34 @@ - } - _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 -@@ -8975,8 +9492,8 @@ - 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 -@@ -9002,17 +9519,17 @@ - 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 -@@ -9027,32 +9544,33 @@ - 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 -@@ -9078,11 +9596,11 @@ - 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 - - -@@ -9101,8 +9619,8 @@ - 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 -@@ -9151,8 +9669,8 @@ - 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 -@@ -9160,8 +9678,8 @@ - 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 -@@ -9180,17 +9698,17 @@ - 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 -@@ -9201,41 +9719,37 @@ - #include <linux/version.h> - _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 -@@ -9244,24 +9758,22 @@ - /* end confdefs.h. */ - #include <linux/version.h> - _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 -@@ -9269,9 +9781,10 @@ - - 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 -@@ -9295,25 +9808,18 @@ - 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 -@@ -9363,17 +9869,17 @@ - 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 -@@ -9401,18 +9907,19 @@ - for ac_header in string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.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 -@@ -9423,41 +9930,37 @@ - #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 -@@ -9466,24 +9969,22 @@ - /* 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 -@@ -9491,9 +9992,10 @@ - - 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 -@@ -9517,25 +10019,19 @@ - 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 -@@ -9550,8 +10046,8 @@ - - # Put this here so that autoconf's "cross-compiling" message doesn't confuse - # people who are not cross-compiling but are compiling cross-assemblers. --echo "$as_me:$LINENO: checking whether compiling a cross-assembler" >&5 --echo $ECHO_N "checking whether compiling a cross-assembler... $ECHO_C" >&6 -+{ echo "$as_me:$LINENO: checking whether compiling a cross-assembler" >&5 -+echo $ECHO_N "checking whether compiling a cross-assembler... $ECHO_C" >&6; } - if test "${host}" = "${target}"; then - cross_gas=no - else -@@ -9562,13 +10058,13 @@ - _ACEOF - - fi --echo "$as_me:$LINENO: result: $cross_gas" >&5 --echo "${ECHO_T}$cross_gas" >&6 -+{ echo "$as_me:$LINENO: result: $cross_gas" >&5 -+echo "${ECHO_T}$cross_gas" >&6; } - - # 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 -@@ -9583,44 +10079,42 @@ - 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 -@@ -9629,8 +10123,8 @@ - - 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 -@@ -9647,7 +10141,7 @@ - # include <malloc.h> - # define alloca _alloca - # else --# if HAVE_ALLOCA_H -+# ifdef HAVE_ALLOCA_H - # include <alloca.h> - # else - # ifdef _AIX -@@ -9665,44 +10159,42 @@ - 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 - -@@ -9716,15 +10208,15 @@ - # 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 -@@ -9734,7 +10226,7 @@ - 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 -@@ -9750,14 +10242,14 @@ - 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 -@@ -9783,68 +10275,60 @@ - - #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 -@@ -9857,8 +10341,8 @@ - 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 -@@ -9871,6 +10355,7 @@ - cat confdefs.h >>conftest.$ac_ext - cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ -+$ac_includes_default - int - find_stack_direction () - { -@@ -9888,17 +10373,26 @@ - 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 -@@ -9911,11 +10405,13 @@ - ( 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 -@@ -9924,8 +10420,8 @@ - - 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 -@@ -9945,39 +10441,37 @@ - - _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 -@@ -10002,9 +10496,9 @@ - for ac_func in unlink remove - 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 -@@ -10030,68 +10524,60 @@ - - #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 -@@ -10106,9 +10592,9 @@ - for ac_func in sbrk - 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 -@@ -10134,68 +10620,60 @@ - - #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 -@@ -10215,8 +10693,8 @@ - # on darwin the libm is a symbolic link to libSystem.dylib - ;; - *-ncr-sysv4.3*) -- echo "$as_me:$LINENO: checking for _mwvalidcheckl in -lmw" >&5 --echo $ECHO_N "checking for _mwvalidcheckl in -lmw... $ECHO_C" >&6 -+ { echo "$as_me:$LINENO: checking for _mwvalidcheckl in -lmw" >&5 -+echo $ECHO_N "checking for _mwvalidcheckl in -lmw... $ECHO_C" >&6; } - if test "${ac_cv_lib_mw__mwvalidcheckl+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -@@ -10229,62 +10707,59 @@ - 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 _mwvalidcheckl (); - int - main () - { --_mwvalidcheckl (); -+return _mwvalidcheckl (); - ; - 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_mw__mwvalidcheckl=yes - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --ac_cv_lib_mw__mwvalidcheckl=no -+ ac_cv_lib_mw__mwvalidcheckl=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_mw__mwvalidcheckl" >&5 --echo "${ECHO_T}$ac_cv_lib_mw__mwvalidcheckl" >&6 -+{ echo "$as_me:$LINENO: result: $ac_cv_lib_mw__mwvalidcheckl" >&5 -+echo "${ECHO_T}$ac_cv_lib_mw__mwvalidcheckl" >&6; } - if test $ac_cv_lib_mw__mwvalidcheckl = yes; then - LIBM="-lmw" - fi - -- echo "$as_me:$LINENO: checking for main in -lm" >&5 --echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6 -+ { echo "$as_me:$LINENO: checking for main in -lm" >&5 -+echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6; } - if test "${ac_cv_lib_m_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -@@ -10301,54 +10776,51 @@ - int - main () - { --main (); -+return main (); - ; - 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_m_main=yes - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --ac_cv_lib_m_main=no -+ ac_cv_lib_m_main=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_m_main" >&5 --echo "${ECHO_T}$ac_cv_lib_m_main" >&6 -+{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5 -+echo "${ECHO_T}$ac_cv_lib_m_main" >&6; } - if test $ac_cv_lib_m_main = yes; then - LIBM="$LIBM -lm" - fi - - ;; - *) -- echo "$as_me:$LINENO: checking for main in -lm" >&5 --echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6 -+ { echo "$as_me:$LINENO: checking for main in -lm" >&5 -+echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6; } - if test "${ac_cv_lib_m_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -@@ -10365,46 +10837,43 @@ - int - main () - { --main (); -+return main (); - ; - 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_m_main=yes - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --ac_cv_lib_m_main=no -+ ac_cv_lib_m_main=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_m_main" >&5 --echo "${ECHO_T}$ac_cv_lib_m_main" >&6 -+{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5 -+echo "${ECHO_T}$ac_cv_lib_m_main" >&6; } - if test $ac_cv_lib_m_main = yes; then - LIBM="-lm" - fi -@@ -10419,8 +10888,8 @@ - # Some non-ANSI preprocessors botch requoting inside strings. That's bad - # enough, but on some of those systems, the assert macro relies on requoting - # working properly! --echo "$as_me:$LINENO: checking for working assert macro" >&5 --echo $ECHO_N "checking for working assert macro... $ECHO_C" >&6 -+{ echo "$as_me:$LINENO: checking for working assert macro" >&5 -+echo $ECHO_N "checking for working assert macro... $ECHO_C" >&6; } - if test "${gas_cv_assert_ok+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -@@ -10449,39 +10918,36 @@ - } - _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 - gas_cv_assert_ok=yes - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --gas_cv_assert_ok=no -+ gas_cv_assert_ok=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: $gas_cv_assert_ok" >&5 --echo "${ECHO_T}$gas_cv_assert_ok" >&6 -+{ echo "$as_me:$LINENO: result: $gas_cv_assert_ok" >&5 -+echo "${ECHO_T}$gas_cv_assert_ok" >&6; } - test $gas_cv_assert_ok = yes || - cat >>confdefs.h <<\_ACEOF - #define BROKEN_ASSERT 1 -@@ -10514,8 +10980,8 @@ - # Does errno.h declare errno, or do we have to add a separate declaration - # for it? - --echo "$as_me:$LINENO: checking whether declaration is required for errno" >&5 --echo $ECHO_N "checking whether declaration is required for errno... $ECHO_C" >&6 -+{ echo "$as_me:$LINENO: checking whether declaration is required for errno" >&5 -+echo $ECHO_N "checking whether declaration is required for errno... $ECHO_C" >&6; } - if test "${gas_cv_decl_needed_errno+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -@@ -10543,39 +11009,36 @@ - } - _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 - gas_cv_decl_needed_errno=no - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --gas_cv_decl_needed_errno=yes -+ gas_cv_decl_needed_errno=yes - 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: $gas_cv_decl_needed_errno" >&5 --echo "${ECHO_T}$gas_cv_decl_needed_errno" >&6 -+{ echo "$as_me:$LINENO: result: $gas_cv_decl_needed_errno" >&5 -+echo "${ECHO_T}$gas_cv_decl_needed_errno" >&6; } - if test $gas_cv_decl_needed_errno = yes; then - - cat >>confdefs.h <<\_ACEOF -@@ -10585,8 +11048,8 @@ - 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 "${gas_cv_decl_getopt_unistd_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -@@ -10606,39 +11069,35 @@ - } - _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 - gas_cv_decl_getopt_unistd_h=yes - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --gas_cv_decl_getopt_unistd_h=no -+ gas_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: $gas_cv_decl_getopt_unistd_h" >&5 --echo "${ECHO_T}$gas_cv_decl_getopt_unistd_h" >&6 -+{ echo "$as_me:$LINENO: result: $gas_cv_decl_getopt_unistd_h" >&5 -+echo "${ECHO_T}$gas_cv_decl_getopt_unistd_h" >&6; } - if test $gas_cv_decl_getopt_unistd_h = yes; then - - cat >>confdefs.h <<\_ACEOF -@@ -10648,8 +11107,8 @@ - fi - - --echo "$as_me:$LINENO: checking whether declaration is required for environ" >&5 --echo $ECHO_N "checking whether declaration is required for environ... $ECHO_C" >&6 -+{ echo "$as_me:$LINENO: checking whether declaration is required for environ" >&5 -+echo $ECHO_N "checking whether declaration is required for environ... $ECHO_C" >&6; } - if test "${gas_cv_decl_needed_environ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -@@ -10673,39 +11132,36 @@ - } - _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 - gas_cv_decl_needed_environ=no - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --gas_cv_decl_needed_environ=yes -+ gas_cv_decl_needed_environ=yes - 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: $gas_cv_decl_needed_environ" >&5 --echo "${ECHO_T}$gas_cv_decl_needed_environ" >&6 -+{ echo "$as_me:$LINENO: result: $gas_cv_decl_needed_environ" >&5 -+echo "${ECHO_T}$gas_cv_decl_needed_environ" >&6; } - if test $gas_cv_decl_needed_environ = yes; then - - cat >>confdefs.h <<\_ACEOF -@@ -10715,8 +11171,8 @@ - fi - - --echo "$as_me:$LINENO: checking whether declaration is required for ffs" >&5 --echo $ECHO_N "checking whether declaration is required for ffs... $ECHO_C" >&6 -+{ echo "$as_me:$LINENO: checking whether declaration is required for ffs" >&5 -+echo $ECHO_N "checking whether declaration is required for ffs... $ECHO_C" >&6; } - if test "${gas_cv_decl_needed_ffs+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -@@ -10740,39 +11196,36 @@ - } - _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 - gas_cv_decl_needed_ffs=no - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --gas_cv_decl_needed_ffs=yes -+ gas_cv_decl_needed_ffs=yes - 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: $gas_cv_decl_needed_ffs" >&5 --echo "${ECHO_T}$gas_cv_decl_needed_ffs" >&6 -+{ echo "$as_me:$LINENO: result: $gas_cv_decl_needed_ffs" >&5 -+echo "${ECHO_T}$gas_cv_decl_needed_ffs" >&6; } - if test $gas_cv_decl_needed_ffs = yes; then - - cat >>confdefs.h <<\_ACEOF -@@ -10782,8 +11235,8 @@ - fi - - --echo "$as_me:$LINENO: checking whether declaration is required for free" >&5 --echo $ECHO_N "checking whether declaration is required for free... $ECHO_C" >&6 -+{ echo "$as_me:$LINENO: checking whether declaration is required for free" >&5 -+echo $ECHO_N "checking whether declaration is required for free... $ECHO_C" >&6; } - if test "${gas_cv_decl_needed_free+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -@@ -10807,39 +11260,36 @@ - } - _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 - gas_cv_decl_needed_free=no - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --gas_cv_decl_needed_free=yes -+ gas_cv_decl_needed_free=yes - 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: $gas_cv_decl_needed_free" >&5 --echo "${ECHO_T}$gas_cv_decl_needed_free" >&6 -+{ echo "$as_me:$LINENO: result: $gas_cv_decl_needed_free" >&5 -+echo "${ECHO_T}$gas_cv_decl_needed_free" >&6; } - if test $gas_cv_decl_needed_free = yes; then - - cat >>confdefs.h <<\_ACEOF -@@ -10849,8 +11299,8 @@ - fi - - --echo "$as_me:$LINENO: checking whether declaration is required for malloc" >&5 --echo $ECHO_N "checking whether declaration is required for malloc... $ECHO_C" >&6 -+{ echo "$as_me:$LINENO: checking whether declaration is required for malloc" >&5 -+echo $ECHO_N "checking whether declaration is required for malloc... $ECHO_C" >&6; } - if test "${gas_cv_decl_needed_malloc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -@@ -10874,39 +11324,36 @@ - } - _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 - gas_cv_decl_needed_malloc=no - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --gas_cv_decl_needed_malloc=yes -+ gas_cv_decl_needed_malloc=yes - 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: $gas_cv_decl_needed_malloc" >&5 --echo "${ECHO_T}$gas_cv_decl_needed_malloc" >&6 -+{ echo "$as_me:$LINENO: result: $gas_cv_decl_needed_malloc" >&5 -+echo "${ECHO_T}$gas_cv_decl_needed_malloc" >&6; } - if test $gas_cv_decl_needed_malloc = yes; then - - cat >>confdefs.h <<\_ACEOF -@@ -10916,8 +11363,8 @@ - fi - - --echo "$as_me:$LINENO: checking whether declaration is required for sbrk" >&5 --echo $ECHO_N "checking whether declaration is required for sbrk... $ECHO_C" >&6 -+{ echo "$as_me:$LINENO: checking whether declaration is required for sbrk" >&5 -+echo $ECHO_N "checking whether declaration is required for sbrk... $ECHO_C" >&6; } - if test "${gas_cv_decl_needed_sbrk+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -@@ -10941,39 +11388,36 @@ - } - _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 - gas_cv_decl_needed_sbrk=no - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --gas_cv_decl_needed_sbrk=yes -+ gas_cv_decl_needed_sbrk=yes - 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: $gas_cv_decl_needed_sbrk" >&5 --echo "${ECHO_T}$gas_cv_decl_needed_sbrk" >&6 -+{ echo "$as_me:$LINENO: result: $gas_cv_decl_needed_sbrk" >&5 -+echo "${ECHO_T}$gas_cv_decl_needed_sbrk" >&6; } - if test $gas_cv_decl_needed_sbrk = yes; then - - cat >>confdefs.h <<\_ACEOF -@@ -10983,8 +11427,8 @@ - fi - - --echo "$as_me:$LINENO: checking whether declaration is required for strstr" >&5 --echo $ECHO_N "checking whether declaration is required for strstr... $ECHO_C" >&6 -+{ echo "$as_me:$LINENO: checking whether declaration is required for strstr" >&5 -+echo $ECHO_N "checking whether declaration is required for strstr... $ECHO_C" >&6; } - if test "${gas_cv_decl_needed_strstr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else -@@ -11008,39 +11452,36 @@ - } - _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 - gas_cv_decl_needed_strstr=no - else - echo "$as_me: failed program was:" >&5 - sed 's/^/| /' conftest.$ac_ext >&5 - --gas_cv_decl_needed_strstr=yes -+ gas_cv_decl_needed_strstr=yes - 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: $gas_cv_decl_needed_strstr" >&5 --echo "${ECHO_T}$gas_cv_decl_needed_strstr" >&6 -+{ echo "$as_me:$LINENO: result: $gas_cv_decl_needed_strstr" >&5 -+echo "${ECHO_T}$gas_cv_decl_needed_strstr" >&6; } - if test $gas_cv_decl_needed_strstr = yes; then - - cat >>confdefs.h <<\_ACEOF -@@ -11050,8 +11491,8 @@ - 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 -@@ -11066,7 +11507,7 @@ - main () - { - #ifndef vsnprintf -- char *p = (char *) vsnprintf; -+ (void) vsnprintf; - #endif - - ; -@@ -11074,38 +11515,34 @@ - } - _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 -@@ -11129,9 +11566,9 @@ - - - -- ac_config_files="$ac_config_files Makefile doc/Makefile po/Makefile.in:po/Make-in" -+ac_config_files="$ac_config_files Makefile doc/Makefile po/Makefile.in:po/Make-in" - -- ac_config_commands="$ac_config_commands default" -+ac_config_commands="$ac_config_commands default" - - - cat >confcache <<\_ACEOF -@@ -11152,39 +11589,58 @@ - - # 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 -@@ -11193,32 +11649,18 @@ - # 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 - -@@ -11270,17 +11712,45 @@ - ## 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 -@@ -11290,8 +11760,43 @@ - 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='+ ' -@@ -11305,18 +11810,19 @@ - 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 -@@ -11324,159 +11830,120 @@ - - - # 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=: -@@ -11485,7 +11952,28 @@ - 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'" -@@ -11493,32 +11981,15 @@ - # Sed expression to map a string onto a valid variable name. - 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 -@@ -11526,30 +11997,20 @@ - 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. -@@ -11557,7 +12018,7 @@ - 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 -@@ -11576,19 +12037,21 @@ - $config_commands - - Report bugs to <bug-autoconf@gnu.org>." --_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 -@@ -11599,39 +12062,24 @@ - 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 -@@ -11641,18 +12089,24 @@ - $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 -@@ -11668,17 +12122,28 @@ - _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" - target_cpu_type=${target_cpu_type} - cgen_cpu_prefix=${cgen_cpu_prefix} -@@ -11687,27 +12152,28 @@ - - _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. -- "gdb.ini" ) CONFIG_FILES="$CONFIG_FILES gdb.ini:gdbinit.in" ;; -- ".gdbinit" ) CONFIG_FILES="$CONFIG_FILES .gdbinit:gdbinit.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" ;; -- "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" ;; -+ "gdb.ini") CONFIG_FILES="$CONFIG_FILES gdb.ini:gdbinit.in" ;; -+ ".gdbinit") CONFIG_FILES="$CONFIG_FILES .gdbinit:gdbinit.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 -@@ -11719,388 +12185,493 @@ - 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,@GDBINIT@,$GDBINIT,;t t --s,@cgen_cpu_prefix@,$cgen_cpu_prefix,;t t --s,@extra_objects@,$extra_objects,;t t --s,@target_cpu_type@,$target_cpu_type,;t t --s,@obj_format@,$obj_format,;t t --s,@te_file@,$te_file,;t t --s,@install_tooldir@,$install_tooldir,;t t --s,@atof@,$atof,;t t --s,@BFDLIB@,$BFDLIB,;t t --s,@OPCODES_LIB@,$OPCODES_LIB,;t t --s,@BFDVER_H@,$BFDVER_H,;t t --s,@ALL_OBJ_DEPS@,$ALL_OBJ_DEPS,;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,@LIBM@,$LIBM,;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 -+GDBINIT!$GDBINIT$ac_delim -+CPP!$CPP$ac_delim -+GREP!$GREP$ac_delim -+EGREP!$EGREP$ac_delim -+cgen_cpu_prefix!$cgen_cpu_prefix$ac_delim -+extra_objects!$extra_objects$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 <conf$$subs.sed -+rm -f conf$$subs.sed -+cat >>$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 -+target_cpu_type!$target_cpu_type$ac_delim -+obj_format!$obj_format$ac_delim -+te_file!$te_file$ac_delim -+install_tooldir!$install_tooldir$ac_delim -+atof!$atof$ac_delim -+BFDLIB!$BFDLIB$ac_delim -+OPCODES_LIB!$OPCODES_LIB$ac_delim -+BFDVER_H!$BFDVER_H$ac_delim -+ALL_OBJ_DEPS!$ALL_OBJ_DEPS$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 -+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 -+LIBM!$LIBM$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` = 41; 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 <conf$$subs.sed -+rm -f conf$$subs.sed -+cat >>$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 -@@ -12108,248 +12679,130 @@ - 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 <<CEOF' >>$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 <<CEOF' >>$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 -@@ -12360,135 +12813,39 @@ - _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. -@@ -12498,18 +12855,29 @@ - # 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 -@@ -12531,49 +12899,76 @@ - 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 ) rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h -+ "default":C) rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h - echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h - echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h - echo '#include "te-'"${te_file}"'.h"' > targ-env.h -@@ -12583,11 +12978,10 @@ - fi - - 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 -Index: binutils-2.17/gas/configure.tgt -=================================================================== ---- binutils-2.17.orig/gas/configure.tgt 2007-06-28 09:19:34.396007464 +0200 -+++ binutils-2.17/gas/configure.tgt 2007-06-28 09:19:36.631667592 +0200 -@@ -33,6 +33,7 @@ +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 ;; @@ -57627,7 +46158,7 @@ Index: binutils-2.17/gas/configure.tgt bfin*) cpu_type=bfin endian=little ;; c4x*) cpu_type=tic4x ;; crisv32) cpu_type=cris arch=crisv32 ;; -@@ -122,6 +123,9 @@ +@@ -122,6 +123,9 @@ case ${generic_target} in bfin-*-*) fmt=elf bfd_gas=yes ;; bfin-*elf) fmt=elf ;; @@ -57637,10 +46168,9 @@ Index: binutils-2.17/gas/configure.tgt cris-*-linux-* | crisv32-*-linux-*) fmt=multi em=linux ;; cris-*-* | crisv32-*-*) fmt=multi ;; -Index: binutils-2.17/gas/doc/all.texi -=================================================================== ---- binutils-2.17.orig/gas/doc/all.texi 2007-06-28 09:19:34.401006704 +0200 -+++ binutils-2.17/gas/doc/all.texi 2007-06-28 09:19:36.631667592 +0200 +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 @@ -57649,11 +46179,945 @@ Index: binutils-2.17/gas/doc/all.texi @set BFIN @set CRIS @set D10V -Index: binutils-2.17/gas/doc/as.texinfo -=================================================================== ---- binutils-2.17.orig/gas/doc/as.texinfo 2007-06-28 09:19:34.407005792 +0200 -+++ binutils-2.17/gas/doc/as.texinfo 2007-06-28 09:19:36.634667136 +0200 -@@ -6182,6 +6182,9 @@ +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 @@ -57663,7 +47127,7 @@ Index: binutils-2.17/gas/doc/as.texinfo @ifset BFIN * BFIN-Dependent:: BFIN Dependent Features @end ifset -@@ -6298,6 +6301,10 @@ +@@ -6298,6 +6301,10 @@ subject, see the hardware manufacturer's @include c-arm.texi @end ifset @@ -57674,11 +47138,10 @@ Index: binutils-2.17/gas/doc/as.texinfo @ifset BFIN @include c-bfin.texi @end ifset -Index: binutils-2.17/gas/doc/c-avr32.texi -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/doc/c-avr32.texi 2007-06-28 09:19:36.634667136 +0200 -@@ -0,0 +1,247 @@ +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. @@ -57728,6 +47191,13 @@ Index: binutils-2.17/gas/doc/c-avr32.texi +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 + + @@ -57926,11 +47396,10 @@ Index: binutils-2.17/gas/doc/c-avr32.texi +deleting any superfluous constant pool- and GOT-entries. + +@end table -Index: binutils-2.17/gas/doc/Makefile.am -=================================================================== ---- binutils-2.17.orig/gas/doc/Makefile.am 2007-06-28 09:19:34.416004424 +0200 -+++ binutils-2.17/gas/doc/Makefile.am 2007-06-28 09:19:36.635666984 +0200 -@@ -29,6 +29,7 @@ +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 \ @@ -57938,85 +47407,10 @@ Index: binutils-2.17/gas/doc/Makefile.am c-bfin.texi \ c-d10v.texi \ c-cris.texi \ -Index: binutils-2.17/gas/doc/Makefile.in -=================================================================== ---- binutils-2.17.orig/gas/doc/Makefile.in 2007-06-28 09:19:34.422003512 +0200 -+++ binutils-2.17/gas/doc/Makefile.in 2007-06-28 09:19:36.635666984 +0200 -@@ -97,6 +97,7 @@ - GDBINIT = @GDBINIT@ - GMOFILES = @GMOFILES@ - GMSGFMT = @GMSGFMT@ -+GREP = @GREP@ - GT_NO = @GT_NO@ - GT_YES = @GT_YES@ - INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -@@ -146,9 +147,8 @@ - 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@ -@@ -167,6 +167,7 @@ - datadir = @datadir@ - datarootdir = @datarootdir@ - docdir = @docdir@ -+dvidir = @dvidir@ - exec_prefix = @exec_prefix@ - extra_objects = @extra_objects@ - host = @host@ -@@ -182,13 +183,16 @@ - l = @l@ - libdir = @libdir@ - libexecdir = @libexecdir@ -+localedir = @localedir@ - localstatedir = @localstatedir@ - mandir = @mandir@ - mkdir_p = @mkdir_p@ - obj_format = @obj_format@ - oldincludedir = @oldincludedir@ -+pdfdir = @pdfdir@ - prefix = @prefix@ - program_transform_name = @program_transform_name@ -+psdir = @psdir@ - sbindir = @sbindir@ - sharedstatedir = @sharedstatedir@ - sysconfdir = @sysconfdir@ -@@ -218,6 +222,7 @@ - c-alpha.texi \ - c-arc.texi \ - c-arm.texi \ -+ c-avr32.texi \ - c-bfin.texi \ - c-d10v.texi \ - c-cris.texi \ -@@ -384,10 +389,13 @@ - $(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 - -Index: binutils-2.17/gas/Makefile.am -=================================================================== ---- binutils-2.17.orig/gas/Makefile.am 2007-06-28 09:19:34.428002600 +0200 -+++ binutils-2.17/gas/Makefile.am 2007-06-28 09:19:36.636666832 +0200 -@@ -45,6 +45,7 @@ +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 \ @@ -58024,7 +47418,7 @@ Index: binutils-2.17/gas/Makefile.am bfin \ cris \ crx \ -@@ -229,6 +230,7 @@ +@@ -229,6 +230,7 @@ TARGET_CPU_CFILES = \ config/tc-arc.c \ config/tc-arm.c \ config/tc-avr.c \ @@ -58032,7 +47426,7 @@ Index: binutils-2.17/gas/Makefile.am config/tc-bfin.c \ config/tc-cris.c \ config/tc-crx.c \ -@@ -280,6 +282,7 @@ +@@ -280,6 +282,7 @@ TARGET_CPU_HFILES = \ config/tc-arc.h \ config/tc-arm.h \ config/tc-avr.h \ @@ -58040,7 +47434,7 @@ Index: binutils-2.17/gas/Makefile.am config/tc-bfin.h \ config/tc-cris.h \ config/tc-crx.h \ -@@ -1046,6 +1049,11 @@ +@@ -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 @@ -58052,7 +47446,7 @@ Index: binutils-2.17/gas/Makefile.am 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 @@ +@@ -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 @@ -58064,7 +47458,7 @@ Index: binutils-2.17/gas/Makefile.am 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 @@ +@@ -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 @@ -58074,119 +47468,9 @@ Index: binutils-2.17/gas/Makefile.am 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 \ -Index: binutils-2.17/gas/Makefile.in -=================================================================== ---- binutils-2.17.orig/gas/Makefile.in 2007-06-28 09:19:34.433001840 +0200 -+++ binutils-2.17/gas/Makefile.in 2007-06-28 09:19:36.638666528 +0200 -@@ -143,6 +143,7 @@ - GDBINIT = @GDBINIT@ - GMOFILES = @GMOFILES@ - GMSGFMT = @GMSGFMT@ -+GREP = @GREP@ - GT_NO = @GT_NO@ - GT_YES = @GT_YES@ - INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -@@ -192,9 +193,8 @@ - WARN_CFLAGS = @WARN_CFLAGS@ - XGETTEXT = @XGETTEXT@ - YACC = `if [ -f ../bison/bison ] ; then echo ../bison/bison -y -L../bison/bison ; else echo @YACC@ ; fi` -+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@ -@@ -213,6 +213,7 @@ - datadir = @datadir@ - datarootdir = @datarootdir@ - docdir = @docdir@ -+dvidir = @dvidir@ - exec_prefix = @exec_prefix@ - extra_objects = @extra_objects@ - host = @host@ -@@ -228,13 +229,16 @@ - l = @l@ - libdir = @libdir@ - libexecdir = @libexecdir@ -+localedir = @localedir@ - localstatedir = @localstatedir@ - mandir = @mandir@ - mkdir_p = @mkdir_p@ - obj_format = @obj_format@ - oldincludedir = @oldincludedir@ -+pdfdir = @pdfdir@ - prefix = @prefix@ - program_transform_name = @program_transform_name@ -+psdir = @psdir@ - sbindir = @sbindir@ - sharedstatedir = @sharedstatedir@ - sysconfdir = @sysconfdir@ -@@ -276,6 +280,7 @@ - arc \ - arm \ - avr \ -+ avr32 \ - bfin \ - cris \ - crx \ -@@ -458,6 +463,7 @@ - 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 \ -@@ -509,6 +515,7 @@ - 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 \ -@@ -798,6 +805,12 @@ - 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 \ -@@ -1491,6 +1504,12 @@ - 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 -@@ -2066,6 +2085,10 @@ - $(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 - -Index: binutils-2.17/gas/testsuite/gas/avr32/aliases.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/aliases.d 2007-06-28 09:19:36.638666528 +0200 +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 @@ -58207,10 +47491,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/aliases.d + 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 -Index: binutils-2.17/gas/testsuite/gas/avr32/aliases.s -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/aliases.s 2007-06-28 09:19:36.639666376 +0200 +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 @@ -58226,10 +47509,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/aliases.s + st.b r12, r0 + st.h r12, r0 + st.w r12, r0 -Index: binutils-2.17/gas/testsuite/gas/avr32/allinsn.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/allinsn.d 2007-06-28 09:19:36.641666072 +0200 +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 @@ -61131,20 +50413,18 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/allinsn.d + *[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 -Index: binutils-2.17/gas/testsuite/gas/avr32/allinsn.exp -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/allinsn.exp 2007-06-28 09:19:36.642665920 +0200 +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" +} -Index: binutils-2.17/gas/testsuite/gas/avr32/allinsn.s -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/allinsn.s 2007-06-28 09:19:36.643665768 +0200 +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 @@ -64388,10 +53668,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/allinsn.s + bfins pc,pc,31,0 + bfins r7,r8,15,16 + bfins r8,r7,16,15 -Index: binutils-2.17/gas/testsuite/gas/avr32/avr32.exp -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/avr32.exp 2007-06-28 09:19:36.643665768 +0200 +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 -*- + @@ -64416,10 +53695,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/avr32.exp + run_dump_test "symdiff" + run_dump_test "symdiff_linkrelax" +} -Index: binutils-2.17/gas/testsuite/gas/avr32/call_nopic.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/call_nopic.d 2007-06-28 09:19:36.644665616 +0200 +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: @@ -64457,10 +53735,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/call_nopic.d + +00000000 <different_section>: + 0: e2 c0 00 00 sub r0,r1,0 -Index: binutils-2.17/gas/testsuite/gas/avr32/call_nopic_linkrelax.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/call_nopic_linkrelax.d 2007-06-28 09:19:36.644665616 +0200 +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 @@ -64505,10 +53782,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/call_nopic_linkrelax.d + +00000000 <different_section>: + 0: e2 c0 00 00 sub r0,r1,0 -Index: binutils-2.17/gas/testsuite/gas/avr32/call_pic.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/call_pic.d 2007-06-28 09:19:36.644665616 +0200 +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 @@ -64546,10 +53822,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/call_pic.d + +00000000 <different_section>: + 0: e2 c0 00 00 sub r0,r1,0 -Index: binutils-2.17/gas/testsuite/gas/avr32/call_pic_linkrelax.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/call_pic_linkrelax.d 2007-06-28 09:19:36.644665616 +0200 +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 @@ -64598,10 +53873,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/call_pic_linkrelax.d + +00000000 <different_section>: + 0: e2 c0 00 00 sub r0,r1,0 -Index: binutils-2.17/gas/testsuite/gas/avr32/call.s -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/call.s 2007-06-28 09:19:36.645665464 +0200 +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 @@ -64633,10 +53907,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/call.s + .section .text.init,"ax",@progbits +different_section: + sub r0, r1, 0 -Index: binutils-2.17/gas/testsuite/gas/avr32/dwarf2.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/dwarf2.d 2007-06-28 09:19:36.645665464 +0200 +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 @@ -64680,10 +53953,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/dwarf2.d + 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 -Index: binutils-2.17/gas/testsuite/gas/avr32/dwarf2.s -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/dwarf2.s 2007-06-28 09:19:36.645665464 +0200 +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. + @@ -64752,10 +54024,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/dwarf2.s + .uleb128 0, 0 + + .byte 0 -Index: binutils-2.17/gas/testsuite/gas/avr32/fpinsn.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/fpinsn.d 2007-06-28 09:19:36.645665464 +0200 +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 @@ -65028,10 +54299,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/fpinsn.d + *[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 -Index: binutils-2.17/gas/testsuite/gas/avr32/fpinsn.s -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/fpinsn.s 2007-06-28 09:19:36.646665312 +0200 +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 @@ -65299,10 +54569,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/fpinsn.s + fcastd.s fr0, fr15 + fcastd.s fr8, fr7 + fcastd.s fr6, fr8 -Index: binutils-2.17/gas/testsuite/gas/avr32/hwrd-lwrd.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/hwrd-lwrd.d 2007-06-28 09:19:36.646665312 +0200 +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 @@ -65351,10 +54620,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/hwrd-lwrd.d + 58: R_AVR32_LO16 \.text\+0x60 + 5c: e0 10 00 00 andl r0,0x0 + 5c: R_AVR32_LO16 extsym1 -Index: binutils-2.17/gas/testsuite/gas/avr32/hwrd-lwrd.s -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/hwrd-lwrd.s 2007-06-28 09:19:36.646665312 +0200 +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 @@ -65395,10 +54663,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/hwrd-lwrd.s + andl r0, lo(extsym1) + +sym2: -Index: binutils-2.17/gas/testsuite/gas/avr32/jmptable.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/jmptable.d 2007-06-28 09:19:36.646665312 +0200 +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: @@ -65420,10 +54687,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/jmptable.d + 12: d7 03 nop + 14: d7 03 nop + 16: d7 03 nop -Index: binutils-2.17/gas/testsuite/gas/avr32/jmptable_linkrelax.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/jmptable_linkrelax.d 2007-06-28 09:19:36.646665312 +0200 +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 @@ -65450,10 +54716,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/jmptable_linkrelax.d + 12: d7 03 nop + 14: d7 03 nop + 16: d7 03 nop -Index: binutils-2.17/gas/testsuite/gas/avr32/jmptable.s -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/jmptable.s 2007-06-28 09:19:36.647665160 +0200 +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 @@ -65469,10 +54734,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/jmptable.s +1: nop +2: nop +3: nop -Index: binutils-2.17/gas/testsuite/gas/avr32/lda_nopic.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/lda_nopic.d 2007-06-28 09:19:36.647665160 +0200 +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: @@ -65506,10 +54770,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/lda_nopic.d + ... +0001001c <toofar_positive>: + 1001c: fe ce 00 00 sub lr,pc,0 -Index: binutils-2.17/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d 2007-06-28 09:19:36.647665160 +0200 +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 @@ -65552,10 +54815,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d + \.\.\. +00010020 <toofar_positive>: + 10020: fe ce 00 00 sub lr,pc,0 -Index: binutils-2.17/gas/testsuite/gas/avr32/lda_pic.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/lda_pic.d 2007-06-28 09:19:36.648665008 +0200 +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 @@ -65589,10 +54851,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/lda_pic.d + ... +00010014 <toofar_positive>: + 10014: fe ce 00 00 sub lr,pc,0 -Index: binutils-2.17/gas/testsuite/gas/avr32/lda_pic_linkrelax.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/lda_pic_linkrelax.d 2007-06-28 09:19:36.648665008 +0200 +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 @@ -65634,10 +54895,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/lda_pic_linkrelax.d + ... +0001002c <toofar_positive>: + 1002c: fe ce 00 00 sub lr,pc,0 -Index: binutils-2.17/gas/testsuite/gas/avr32/lda.s -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/lda.s 2007-06-28 09:19:36.648665008 +0200 +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 @@ -65669,10 +54929,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/lda.s + .data +different_section: + .long 0x12345678 -Index: binutils-2.17/gas/testsuite/gas/avr32/pcrel.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/pcrel.d 2007-06-28 09:19:36.648665008 +0200 +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 @@ -65738,10 +54997,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/pcrel.d + e: d7 03 nop + 10: e0 a0 .. .. rcall [0-9a-f]+ <.*> + 10: R_AVR32_22H_PCREL \.text\+0xc -Index: binutils-2.17/gas/testsuite/gas/avr32/pcrel.s -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/pcrel.s 2007-06-28 09:19:36.649664856 +0200 +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 @@ -65800,10 +55058,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/pcrel.s + rcall test_rcall2 + nop + rcall test_rcall2 -Index: binutils-2.17/gas/testsuite/gas/avr32/pico.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/pico.d 2007-06-28 09:19:36.649664856 +0200 +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 @@ -65954,10 +55211,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/pico.d + *[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 -Index: binutils-2.17/gas/testsuite/gas/avr32/pico.s -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/pico.s 2007-06-28 09:19:36.649664856 +0200 +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 @@ -66103,10 +55359,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/pico.s + picostm.w --r0, coeff1_a + picostm.w --r7, config + picostm.w --r8, coeff1_a-vmu2_out -Index: binutils-2.17/gas/testsuite/gas/avr32/pic_reloc.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/pic_reloc.d 2007-06-28 09:19:36.649664856 +0200 +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 @@ -66135,10 +55390,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/pic_reloc.d + 18: R_AVR32_GOT16S \.L4 + 1c: ec f0 00 00 ld.w r0,r6\[0\] + 1c: R_AVR32_GOT16S ldw_got -Index: binutils-2.17/gas/testsuite/gas/avr32/pic_reloc.s -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/pic_reloc.s 2007-06-28 09:19:36.649664856 +0200 +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 @@ -66158,10 +55412,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/pic_reloc.s + ld.w r0,r6[.L4@got] + ld.w r0,r6[ldw_got@got] +.L4: -Index: binutils-2.17/gas/testsuite/gas/avr32/symdiff.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/symdiff.d 2007-06-28 09:19:36.650664704 +0200 +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: @@ -66187,10 +55440,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/symdiff.d + a: d7 03 nop + c: d7 03 nop + e: d7 03 nop -Index: binutils-2.17/gas/testsuite/gas/avr32/symdiff_linkrelax.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/symdiff_linkrelax.d 2007-06-28 09:19:36.650664704 +0200 +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 @@ -66220,10 +55472,9 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/symdiff_linkrelax.d + a: d7 03 nop + c: d7 03 nop + e: d7 03 nop -Index: binutils-2.17/gas/testsuite/gas/avr32/symdiff.s -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/gas/testsuite/gas/avr32/symdiff.s 2007-06-28 09:19:36.650664704 +0200 +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 @@ -66244,11 +55495,10 @@ Index: binutils-2.17/gas/testsuite/gas/avr32/symdiff.s +.L1: nop + nop +.L2: nop -Index: binutils-2.17/gas/write.c -=================================================================== ---- binutils-2.17.orig/gas/write.c 2007-06-28 09:19:34.590977824 +0200 -+++ binutils-2.17/gas/write.c 2007-06-28 09:19:36.651664552 +0200 -@@ -126,7 +126,9 @@ +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); @@ -66258,7 +55508,7 @@ Index: binutils-2.17/gas/write.c 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 @@ +@@ -1684,6 +1686,10 @@ relax_frag (segT segment, fragS *fragP, #endif /* defined (TC_GENERIC_RELAX_TABLE) */ @@ -66269,7 +55519,7 @@ Index: binutils-2.17/gas/write.c /* 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 @@ +@@ -1703,6 +1709,7 @@ relax_align (register relax_addressT add #endif return (new_address - address); } @@ -66277,7 +55527,7 @@ Index: binutils-2.17/gas/write.c /* Now we have a segment, not a crowd of sub-segments, we can make fr_address values. -@@ -1746,7 +1753,7 @@ +@@ -1746,7 +1753,7 @@ relax_segment (struct frag *segment_frag case rs_align_code: case rs_align_test: { @@ -66286,7 +55536,7 @@ Index: binutils-2.17/gas/write.c if (fragP->fr_subtype != 0 && offset > fragP->fr_subtype) offset = 0; -@@ -1922,10 +1929,10 @@ +@@ -1922,10 +1929,10 @@ relax_segment (struct frag *segment_frag { addressT oldoff, newoff; @@ -66301,11 +55551,10 @@ Index: binutils-2.17/gas/write.c if (fragP->fr_subtype != 0) { -Index: binutils-2.17/include/dis-asm.h -=================================================================== ---- binutils-2.17.orig/include/dis-asm.h 2007-06-28 09:19:34.596976912 +0200 -+++ binutils-2.17/include/dis-asm.h 2007-06-28 09:19:36.651664552 +0200 -@@ -223,6 +223,7 @@ +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 *); @@ -66313,7 +55562,7 @@ Index: binutils-2.17/include/dis-asm.h 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 @@ +@@ -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 *); @@ -66323,10 +55572,9 @@ Index: binutils-2.17/include/dis-asm.h 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 **); -Index: binutils-2.17/include/elf/avr32.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/include/elf/avr32.h 2007-06-28 09:19:36.652664400 +0200 +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. @@ -66423,10 +55671,9 @@ Index: binutils-2.17/include/elf/avr32.h + +/* The total size in bytes of the Global Offset Table */ +#define DT_AVR32_GOTSZ 0x70000001 -Index: binutils-2.17/include/elf/common.h -=================================================================== ---- binutils-2.17.orig/include/elf/common.h 2007-06-28 09:19:34.607975240 +0200 -+++ binutils-2.17/include/elf/common.h 2007-06-28 09:19:36.652664400 +0200 +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 @@ -66437,10 +55684,20 @@ Index: binutils-2.17/include/elf/common.h /* old S/390 backend magic number. Written in the absence of an ABI. */ #define EM_S390_OLD 0xa390 -Index: binutils-2.17/ld/config.in -=================================================================== ---- binutils-2.17.orig/ld/config.in 2007-06-28 09:19:34.612974480 +0200 -+++ binutils-2.17/ld/config.in 2007-06-28 09:19:36.653664248 +0200 +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 @@ -66461,10 +55718,9 @@ Index: binutils-2.17/ld/config.in -/* Define to `unsigned' if <sys/types.h> does not define. */ +/* Define to `unsigned int' if <sys/types.h> does not define. */ #undef size_t -Index: binutils-2.17/ld/configure -=================================================================== ---- binutils-2.17.orig/ld/configure 2007-06-28 09:19:35.046908512 +0200 -+++ binutils-2.17/ld/configure 2007-06-28 09:19:36.664662576 +0200 +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. @@ -66526,7 +55782,7 @@ Index: binutils-2.17/ld/configure # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -@@ -29,8 +58,43 @@ +@@ -29,8 +58,43 @@ else fi @@ -66571,7 +55827,7 @@ Index: binutils-2.17/ld/configure PS1='$ ' PS2='> ' PS4='+ ' -@@ -44,18 +108,19 @@ +@@ -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 @@ -66594,7 +55850,7 @@ Index: binutils-2.17/ld/configure as_basename=basename else as_basename=false -@@ -63,157 +128,388 @@ +@@ -63,157 +128,388 @@ fi # Name of the executable. @@ -67081,7 +56337,7 @@ Index: binutils-2.17/ld/configure if mkdir -p . 2>/dev/null; then as_mkdir_p=: -@@ -222,7 +518,28 @@ +@@ -222,7 +518,28 @@ else as_mkdir_p=false fi @@ -67111,7 +56367,7 @@ Index: binutils-2.17/ld/configure # 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 @@ +@@ -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'" @@ -67154,7 +56410,7 @@ Index: binutils-2.17/ld/configure # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= -@@ -275,42 +580,191 @@ +@@ -275,42 +580,191 @@ ac_unique_file="ldmain.c" # Factoring default headers for most tests. ac_includes_default="\ #include <stdio.h> @@ -67360,7 +56616,7 @@ Index: binutils-2.17/ld/configure # Initialize some variables set by options. ac_init_help= -@@ -337,34 +791,48 @@ +@@ -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. @@ -67416,7 +56672,7 @@ Index: binutils-2.17/ld/configure -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -@@ -386,33 +854,45 @@ +@@ -386,33 +854,45 @@ do --config-cache | -C) cache_file=config.cache ;; @@ -67475,7 +56731,7 @@ Index: binutils-2.17/ld/configure -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ -@@ -439,6 +919,12 @@ +@@ -439,6 +919,12 @@ do -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; @@ -67488,7 +56744,7 @@ Index: binutils-2.17/ld/configure -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -@@ -463,13 +949,16 @@ +@@ -463,13 +949,16 @@ do | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; @@ -67509,7 +56765,7 @@ Index: binutils-2.17/ld/configure localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) -@@ -534,6 +1023,16 @@ +@@ -534,6 +1023,16 @@ do | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; @@ -67526,7 +56782,7 @@ Index: binutils-2.17/ld/configure -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -@@ -586,24 +1085,20 @@ +@@ -586,24 +1085,20 @@ do -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. @@ -67557,7 +56813,7 @@ Index: binutils-2.17/ld/configure --x) # Obsolete; use --with-x. -@@ -634,8 +1129,7 @@ +@@ -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; }; } @@ -67567,7 +56823,7 @@ Index: binutils-2.17/ld/configure export $ac_envvar ;; *) -@@ -655,27 +1149,19 @@ +@@ -655,27 +1149,19 @@ if test -n "$ac_prev"; then { (exit 1); exit 1; }; } fi @@ -67605,7 +56861,7 @@ Index: binutils-2.17/ld/configure done # There might be people who depend on the old broken behavior: `$host' -@@ -702,74 +1188,76 @@ +@@ -702,74 +1188,76 @@ test -n "$host_alias" && ac_tool_prefix= test "$silent" = yes && exec 6>/dev/null @@ -67737,7 +56993,7 @@ Index: binutils-2.17/ld/configure # # Report the --help message. -@@ -798,9 +1286,6 @@ +@@ -798,9 +1286,6 @@ Configuration: -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] @@ -67747,7 +57003,7 @@ Index: binutils-2.17/ld/configure Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] -@@ -818,15 +1303,22 @@ +@@ -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] @@ -67773,7 +57029,7 @@ Index: binutils-2.17/ld/configure _ACEOF cat <<\_ACEOF -@@ -878,126 +1370,100 @@ +@@ -878,126 +1370,100 @@ Some influential environment variables: CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir> @@ -67956,7 +57212,7 @@ Index: binutils-2.17/ld/configure { cat <<_ASUNAME ## --------- ## -@@ -1016,7 +1482,7 @@ +@@ -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` @@ -67965,7 +57221,7 @@ Index: binutils-2.17/ld/configure /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 @@ +@@ -1030,6 +1496,7 @@ do test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done @@ -67973,7 +57229,7 @@ Index: binutils-2.17/ld/configure } >&5 -@@ -1051,7 +1518,6 @@ +@@ -1051,7 +1518,6 @@ _ACEOF ac_configure_args= ac_configure_args0= ac_configure_args1= @@ -67981,7 +57237,7 @@ Index: binutils-2.17/ld/configure ac_must_keep_next=false for ac_pass in 1 2 do -@@ -1062,7 +1528,7 @@ +@@ -1062,7 +1528,7 @@ do -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; @@ -67990,7 +57246,7 @@ Index: binutils-2.17/ld/configure ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in -@@ -1084,9 +1550,7 @@ +@@ -1084,9 +1550,7 @@ do -* ) ac_must_keep_next=true ;; esac fi @@ -68001,7 +57257,7 @@ Index: binutils-2.17/ld/configure ;; esac done -@@ -1097,8 +1561,8 @@ +@@ -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. @@ -68012,7 +57268,7 @@ Index: binutils-2.17/ld/configure trap 'exit_status=$? # Save into config.log some information that might help in debugging. { -@@ -1111,20 +1575,34 @@ +@@ -1111,20 +1575,34 @@ trap 'exit_status=$? _ASBOX echo # The following way of writing the cache mishandles newlines in values, @@ -68057,7 +57313,7 @@ Index: binutils-2.17/ld/configure echo cat <<\_ASBOX -@@ -1135,22 +1613,28 @@ +@@ -1135,22 +1613,28 @@ _ASBOX echo for ac_var in $ac_subst_vars do @@ -68093,7 +57349,7 @@ Index: binutils-2.17/ld/configure done | sort echo fi -@@ -1162,26 +1646,24 @@ +@@ -1162,26 +1646,24 @@ _ASBOX ## ----------- ## _ASBOX echo @@ -68125,7 +57381,7 @@ Index: binutils-2.17/ld/configure # Predefined preprocessor variables. -@@ -1212,14 +1694,17 @@ +@@ -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. @@ -68150,7 +57406,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -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 @@ -68161,7 +57417,7 @@ Index: binutils-2.17/ld/configure esac fi else -@@ -1248,12 +1733,11 @@ +@@ -1248,12 +1733,11 @@ fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -68177,7 +57433,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -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 @@ -68187,7 +57443,7 @@ Index: binutils-2.17/ld/configure *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in -@@ -1296,12 +1779,6 @@ +@@ -1296,12 +1779,6 @@ echo "$as_me: error: run \`make distclea { (exit 1); exit 1; }; } fi @@ -68200,7 +57456,7 @@ Index: binutils-2.17/ld/configure -@@ -1318,108 +1795,163 @@ +@@ -1318,108 +1795,163 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -68416,7 +57672,7 @@ Index: binutils-2.17/ld/configure # The aliases save the names the user supplied, while $host etc. -@@ -1436,8 +1968,8 @@ +@@ -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 @@ -68427,7 +57683,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1450,32 +1982,34 @@ +@@ -1450,32 +1982,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -68469,7 +57725,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1488,36 +2022,51 @@ +@@ -1488,36 +2022,51 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -68531,7 +57787,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1530,74 +2079,34 @@ +@@ -1530,74 +2079,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -68615,7 +57871,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1611,7 +2120,7 @@ +@@ -1611,7 +2120,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -68624,7 +57880,7 @@ Index: binutils-2.17/ld/configure if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue -@@ -1622,6 +2131,7 @@ +@@ -1622,6 +2131,7 @@ do fi done done @@ -68632,7 +57888,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -1639,22 +2149,23 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -68663,7 +57919,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1667,36 +2178,38 @@ +@@ -1667,36 +2178,38 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -68710,7 +57966,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1709,29 +2222,45 @@ +@@ -1709,29 +2222,45 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -68762,7 +58018,7 @@ Index: binutils-2.17/ld/configure fi fi -@@ -1744,21 +2273,35 @@ +@@ -1744,21 +2273,35 @@ See \`config.log' for more details." >&2 { (exit 1); exit 1; }; } # Provide some information about the compiler. @@ -68806,7 +58062,7 @@ Index: binutils-2.17/ld/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -@@ -1783,47 +2326,77 @@ +@@ -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. @@ -68906,7 +58162,7 @@ Index: binutils-2.17/ld/configure echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -@@ -1835,19 +2408,21 @@ +@@ -1835,19 +2408,21 @@ See \`config.log' for more details." >&2 fi ac_exeext=$ac_cv_exeext @@ -68935,7 +58191,7 @@ Index: binutils-2.17/ld/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -1866,22 +2441,27 @@ +@@ -1866,22 +2441,27 @@ See \`config.log' for more details." >&2 fi fi fi @@ -68975,7 +58231,7 @@ Index: binutils-2.17/ld/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then -@@ -1892,9 +2472,8 @@ +@@ -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 @@ -68986,7 +58242,7 @@ Index: binutils-2.17/ld/configure break;; * ) break;; esac -@@ -1908,14 +2487,14 @@ +@@ -1908,14 +2487,14 @@ See \`config.log' for more details." >&2 fi rm -f conftest$ac_cv_exeext @@ -69005,7 +58261,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1935,14 +2514,20 @@ +@@ -1935,14 +2514,20 @@ main () } _ACEOF rm -f conftest.o conftest.obj @@ -69030,7 +58286,7 @@ Index: binutils-2.17/ld/configure *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac -@@ -1960,12 +2545,12 @@ +@@ -1960,12 +2545,12 @@ fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi @@ -69047,7 +58303,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1988,50 +2573,49 @@ +@@ -1988,50 +2573,49 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -69121,7 +58377,7 @@ Index: binutils-2.17/ld/configure /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext -@@ -2047,38 +2631,118 @@ +@@ -2047,38 +2631,118 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -69256,7 +58512,7 @@ Index: binutils-2.17/ld/configure if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then -@@ -2094,12 +2758,12 @@ +@@ -2094,12 +2758,12 @@ else CFLAGS= fi fi @@ -69273,7 +58529,7 @@ Index: binutils-2.17/ld/configure ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -2133,12 +2797,17 @@ +@@ -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 @@ -69293,7 +58549,7 @@ Index: binutils-2.17/ld/configure int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; -@@ -2153,335 +2822,144 @@ +@@ -2153,335 +2822,144 @@ return f (e, argv, 0) != argv[0] || f return 0; } _ACEOF @@ -69716,7 +58972,7 @@ Index: binutils-2.17/ld/configure fi -@@ -2501,8 +2979,8 @@ +@@ -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. @@ -69727,7 +58983,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -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 @@ -69736,7 +58992,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -2543,21 +3021,22 @@ case $as_dir/ in ;; esac done @@ -69764,7 +59020,7 @@ Index: binutils-2.17/ld/configure # 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 @@ +@@ -2567,8 +3046,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' @@ -69775,7 +59031,7 @@ Index: binutils-2.17/ld/configure # Just in case sleep 1 echo timestamp > conftest.file -@@ -2610,20 +3089,20 @@ +@@ -2610,20 +3089,20 @@ echo "$as_me: error: newly created file Check your system clock" >&2;} { (exit 1); exit 1; }; } fi @@ -69801,7 +59057,7 @@ Index: binutils-2.17/ld/configure # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` -@@ -2675,8 +3154,8 @@ +@@ -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 @@ -69812,7 +59068,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -2689,54 +3168,57 @@ +@@ -2689,54 +3168,57 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -69891,7 +59147,7 @@ Index: binutils-2.17/ld/configure SET_MAKE="MAKE=${MAKE-make}" fi -@@ -2751,7 +3233,7 @@ +@@ -2751,7 +3233,7 @@ rmdir .tst 2>/dev/null DEPDIR="${am__leading_dot}deps" @@ -69900,7 +59156,7 @@ Index: binutils-2.17/ld/configure am_make=${MAKE-make} -@@ -2761,8 +3243,8 @@ +@@ -2761,8 +3243,8 @@ am__doit: .PHONY: am__doit END # If we don't find an include directive, just comment out the code. @@ -69911,7 +59167,7 @@ Index: binutils-2.17/ld/configure am__include="#" am__quote= _am_result=none -@@ -2789,15 +3271,15 @@ +@@ -2789,15 +3271,15 @@ if test "$am__include" = "#"; then fi @@ -69932,7 +59188,7 @@ Index: binutils-2.17/ld/configure if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' -@@ -2872,8 +3354,8 @@ +@@ -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 @@ -69943,7 +59199,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -2886,32 +3368,34 @@ +@@ -2886,32 +3368,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -69985,7 +59241,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -2924,27 +3408,41 @@ +@@ -2924,27 +3408,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -70034,7 +59290,7 @@ Index: binutils-2.17/ld/configure else STRIP="$ac_cv_prog_STRIP" fi -@@ -2965,8 +3463,8 @@ +@@ -2965,8 +3463,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am depcc="$CC" am_compiler_list= @@ -70045,7 +59301,7 @@ Index: binutils-2.17/ld/configure if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3055,8 +3553,8 @@ +@@ -3055,8 +3553,8 @@ else fi fi @@ -70056,7 +59312,7 @@ Index: binutils-2.17/ld/configure CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type -@@ -3074,10 +3572,9 @@ +@@ -3074,10 +3572,9 @@ fi @@ -70069,7 +59325,7 @@ Index: binutils-2.17/ld/configure case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; -@@ -3095,11 +3592,11 @@ +@@ -3095,11 +3592,11 @@ no) enable_shared=no ;; esac else enable_shared=yes @@ -70085,7 +59341,7 @@ Index: binutils-2.17/ld/configure case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; -@@ -3117,11 +3614,11 @@ +@@ -3117,11 +3614,11 @@ no) enable_static=no ;; esac else enable_static=yes @@ -70101,7 +59357,7 @@ Index: binutils-2.17/ld/configure case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; -@@ -3139,20 +3636,21 @@ +@@ -3139,20 +3636,21 @@ no) enable_fast_install=no ;; esac else enable_fast_install=yes @@ -70130,7 +59386,7 @@ Index: binutils-2.17/ld/configure case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw -@@ -3181,11 +3679,11 @@ +@@ -3181,11 +3679,11 @@ echo $ECHO_N "checking for ld used by GC ;; esac elif test "$with_gnu_ld" = yes; then @@ -70146,7 +59402,7 @@ Index: binutils-2.17/ld/configure fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 -@@ -3214,17 +3712,17 @@ +@@ -3214,17 +3712,17 @@ fi LD="$lt_cv_path_LD" if test -n "$LD"; then @@ -70170,7 +59426,7 @@ Index: binutils-2.17/ld/configure if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3235,25 +3733,25 @@ +@@ -3235,25 +3733,25 @@ else lt_cv_prog_gnu_ld=no fi fi @@ -70204,7 +59460,7 @@ Index: binutils-2.17/ld/configure if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3288,22 +3786,22 @@ +@@ -3288,22 +3786,22 @@ fi fi NM="$lt_cv_path_NM" @@ -70237,7 +59493,7 @@ Index: binutils-2.17/ld/configure if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3465,8 +3963,8 @@ +@@ -3465,8 +3963,8 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) esac fi @@ -70248,7 +59504,7 @@ Index: binutils-2.17/ld/configure file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method -@@ -3476,8 +3974,8 @@ +@@ -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 @@ -70259,7 +59515,7 @@ Index: binutils-2.17/ld/configure if test "${lt_cv_sys_max_cmd_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3528,11 +4026,11 @@ +@@ -3528,11 +4026,11 @@ else fi if test -n "$lt_cv_sys_max_cmd_len" ; then @@ -70275,7 +59531,7 @@ Index: binutils-2.17/ld/configure fi -@@ -3540,8 +4038,8 @@ +@@ -3540,8 +4038,8 @@ fi case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then @@ -70286,7 +59542,7 @@ Index: binutils-2.17/ld/configure if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3595,17 +4093,17 @@ +@@ -3595,17 +4093,17 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then @@ -70310,7 +59566,7 @@ Index: binutils-2.17/ld/configure if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3659,11 +4157,11 @@ +@@ -3659,11 +4157,11 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then @@ -70326,7 +59582,7 @@ Index: binutils-2.17/ld/configure fi else -@@ -3678,8 +4176,8 @@ +@@ -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 @@ -70337,7 +59593,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3692,32 +4190,34 @@ +@@ -3692,32 +4190,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -70379,7 +59635,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3730,27 +4230,41 @@ +@@ -3730,27 +4230,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -70428,7 +59684,7 @@ Index: binutils-2.17/ld/configure else RANLIB="$ac_cv_prog_RANLIB" fi -@@ -3758,8 +4272,8 @@ +@@ -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 @@ -70439,7 +59695,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3772,32 +4286,34 @@ +@@ -3772,32 +4286,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -70481,7 +59737,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3810,27 +4326,41 @@ +@@ -3810,27 +4326,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -70530,7 +59786,7 @@ Index: binutils-2.17/ld/configure else STRIP="$ac_cv_prog_STRIP" fi -@@ -3845,22 +4375,22 @@ +@@ -3845,22 +4375,22 @@ test "$GCC" = yes && libtool_flags="$lib test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" @@ -70560,7 +59816,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -3869,7 +4399,7 @@ test x"$pic_mode" = xno && libtool_flags case $host in *-*-irix6*) # Find out which ABI we are using. @@ -70569,7 +59825,7 @@ Index: binutils-2.17/ld/configure if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? -@@ -3974,13 +4504,12 @@ +@@ -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" @@ -70585,7 +59841,7 @@ Index: binutils-2.17/ld/configure ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -@@ -4003,35 +4532,32 @@ +@@ -4003,35 +4532,32 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -70636,7 +59892,7 @@ Index: binutils-2.17/ld/configure conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' -@@ -4040,8 +4566,8 @@ +@@ -4040,8 +4566,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLA ac_compiler_gnu=$ac_cv_c_compiler_gnu fi @@ -70647,7 +59903,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -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. @@ -70722,7 +59978,7 @@ Index: binutils-2.17/ld/configure fi fi rm -f confcache -@@ -4129,8 +4674,8 @@ +@@ -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 @@ -70733,7 +59989,7 @@ Index: binutils-2.17/ld/configure esac fi else -@@ -4157,15 +4702,14 @@ +@@ -4157,15 +4702,14 @@ exec 5>>./config.log @@ -70755,7 +60011,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -4173,10 +4717,10 @@ echo "$as_me: error: enable-targets opti no) enable_targets= ;; *) enable_targets=$enableval ;; esac @@ -70769,7 +60025,7 @@ Index: binutils-2.17/ld/configure yes) want64=true ;; no) want64=false ;; *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for 64-bit-bfd option" >&5 -@@ -4185,12 +4729,12 @@ +@@ -4185,12 +4729,12 @@ echo "$as_me: error: bad value ${enablev esac else want64=false @@ -70786,7 +60042,7 @@ Index: binutils-2.17/ld/configure case ${with_sysroot} in yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_alias}/sys-root' ;; *) TARGET_SYSTEM_ROOT=$with_sysroot ;; -@@ -4222,7 +4766,8 @@ +@@ -4222,7 +4766,8 @@ else TARGET_SYSTEM_ROOT= TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"\"' @@ -70796,7 +60052,7 @@ Index: binutils-2.17/ld/configure -@@ -4230,17 +4775,17 @@ +@@ -4230,17 +4775,17 @@ fi; GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" @@ -70818,7 +60074,7 @@ Index: binutils-2.17/ld/configure # Enable -Werror by default when using gcc if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then -@@ -4257,10 +4802,9 @@ +@@ -4257,10 +4802,9 @@ if test "${GCC}" = yes ; then WARN_CFLAGS="${GCC_WARN_CFLAGS}" fi @@ -70831,7 +60087,7 @@ Index: binutils-2.17/ld/configure yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; no) if test "${GCC}" = yes ; then WARN_CFLAGS="-w" -@@ -4271,7 +4815,8 @@ +@@ -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 @@ -70841,7 +60097,7 @@ Index: binutils-2.17/ld/configure if test x"$silent" != x"yes" && test x"$WARN_CFLAGS" != x""; then echo "Setting warning flags = $WARN_CFLAGS" 6>&1 -@@ -4281,7 +4826,7 @@ +@@ -4281,7 +4826,7 @@ fi @@ -70850,7 +60106,7 @@ Index: binutils-2.17/ld/configure if test -z "$target" ; then -@@ -4305,8 +4850,8 @@ +@@ -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 @@ -70861,7 +60117,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4319,32 +4864,34 @@ +@@ -4319,32 +4864,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -70903,7 +60159,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4357,36 +4904,51 @@ +@@ -4357,36 +4904,51 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -70965,7 +60221,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4399,74 +4961,34 @@ +@@ -4399,74 +4961,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -71049,7 +60305,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4480,7 +5002,7 @@ +@@ -4480,7 +5002,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -71058,7 +60314,7 @@ Index: binutils-2.17/ld/configure if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue -@@ -4491,6 +5013,7 @@ +@@ -4491,6 +5013,7 @@ do fi done done @@ -71066,7 +60322,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -4508,22 +5031,23 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -71097,7 +60353,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4536,36 +5060,38 @@ +@@ -4536,36 +5060,38 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -71144,7 +60400,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4578,29 +5104,45 @@ +@@ -4578,29 +5104,45 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -71196,7 +60452,7 @@ Index: binutils-2.17/ld/configure fi fi -@@ -4613,27 +5155,41 @@ +@@ -4613,27 +5155,41 @@ See \`config.log' for more details." >&2 { (exit 1); exit 1; }; } # Provide some information about the compiler. @@ -71248,7 +60504,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4656,50 +5212,49 @@ +@@ -4656,50 +5212,49 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -71322,7 +60578,7 @@ Index: binutils-2.17/ld/configure /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext -@@ -4715,59 +5270,139 @@ +@@ -4715,59 +5270,139 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -71505,7 +60761,7 @@ Index: binutils-2.17/ld/configure ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -4801,12 +5436,17 @@ +@@ -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 @@ -71525,7 +60781,7 @@ Index: binutils-2.17/ld/configure int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; -@@ -4821,205 +5461,57 @@ +@@ -4821,205 +5461,57 @@ return f (e, argv, 0) != argv[0] || f return 0; } _ACEOF @@ -71761,7 +61017,7 @@ Index: binutils-2.17/ld/configure ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -@@ -5039,8 +5531,8 @@ +@@ -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. @@ -71772,7 +61028,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -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 @@ -71781,7 +61037,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -5081,21 +5573,22 @@ case $as_dir/ in ;; esac done @@ -71809,7 +61065,7 @@ Index: binutils-2.17/ld/configure # 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 @@ +@@ -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 @@ -71820,7 +61076,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5124,32 +5617,34 @@ +@@ -5124,32 +5617,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -71862,7 +61118,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5162,27 +5657,41 @@ +@@ -5162,27 +5657,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -71911,7 +61167,7 @@ Index: binutils-2.17/ld/configure else RANLIB="$ac_cv_prog_RANLIB" fi -@@ -5192,8 +5701,8 @@ +@@ -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 @@ -71922,7 +61178,7 @@ Index: binutils-2.17/ld/configure # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= -@@ -5227,24 +5736,22 @@ +@@ -5227,24 +5736,22 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF @@ -71958,7 +61214,7 @@ Index: binutils-2.17/ld/configure : else echo "$as_me: failed program was:" >&5 -@@ -5253,9 +5760,10 @@ +@@ -5253,9 +5760,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi @@ -71970,7 +61226,7 @@ Index: binutils-2.17/ld/configure # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -5265,24 +5773,22 @@ +@@ -5265,24 +5773,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF @@ -72006,7 +61262,7 @@ Index: binutils-2.17/ld/configure # Broken: success on invalid input. continue else -@@ -5293,6 +5799,7 @@ +@@ -5293,6 +5799,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi @@ -72014,7 +61270,7 @@ Index: binutils-2.17/ld/configure rm -f conftest.err conftest.$ac_ext done -@@ -5310,8 +5817,8 @@ +@@ -5310,8 +5817,8 @@ fi else ac_cv_prog_CPP=$CPP fi @@ -72025,7 +61281,7 @@ Index: binutils-2.17/ld/configure ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do -@@ -5334,24 +5841,22 @@ +@@ -5334,24 +5841,22 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF @@ -72061,7 +61317,7 @@ Index: binutils-2.17/ld/configure : else echo "$as_me: failed program was:" >&5 -@@ -5360,9 +5865,10 @@ +@@ -5360,9 +5865,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi @@ -72073,7 +61329,7 @@ Index: binutils-2.17/ld/configure # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -5372,24 +5878,22 @@ +@@ -5372,24 +5878,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF @@ -72109,7 +61365,7 @@ Index: binutils-2.17/ld/configure # Broken: success on invalid input. continue else -@@ -5400,6 +5904,7 @@ +@@ -5400,6 +5904,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi @@ -72117,7 +61373,7 @@ Index: binutils-2.17/ld/configure rm -f conftest.err conftest.$ac_ext done -@@ -5422,79 +5927,222 @@ +@@ -5422,79 +5927,222 @@ ac_link='$CC -o conftest$ac_exeext $CFLA ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -72403,7 +61659,7 @@ Index: binutils-2.17/ld/configure /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext -@@ -5546,6 +6194,7 @@ +@@ -5546,6 +6194,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ctype.h> @@ -72411,7 +61667,7 @@ Index: binutils-2.17/ld/configure #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -@@ -5565,18 +6214,27 @@ +@@ -5565,18 +6214,27 @@ main () for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) @@ -72445,7 +61701,7 @@ Index: binutils-2.17/ld/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -5589,12 +6247,14 @@ +@@ -5589,12 +6247,14 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi @@ -72463,7 +61719,7 @@ Index: binutils-2.17/ld/configure if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF -@@ -5603,8 +6263,8 @@ +@@ -5603,8 +6263,8 @@ _ACEOF fi @@ -72474,7 +61730,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5622,10 +6282,10 @@ +@@ -5622,10 +6282,10 @@ main () #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; @@ -72488,7 +61744,7 @@ Index: binutils-2.17/ld/configure /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; -@@ -5634,16 +6294,17 @@ +@@ -5634,16 +6294,17 @@ main () an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; @@ -72510,7 +61766,7 @@ Index: binutils-2.17/ld/configure } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; -@@ -5662,7 +6323,9 @@ +@@ -5662,7 +6323,9 @@ main () } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; @@ -72520,7 +61776,7 @@ Index: binutils-2.17/ld/configure #endif ; -@@ -5670,38 +6333,34 @@ +@@ -5670,38 +6333,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -72575,7 +61831,7 @@ Index: binutils-2.17/ld/configure if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF -@@ -5710,8 +6369,8 @@ +@@ -5710,8 +6369,8 @@ _ACEOF fi @@ -72586,7 +61842,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5731,39 +6390,37 @@ +@@ -5731,39 +6390,37 @@ $ac_kw foo_t foo () {return 0; } _ACEOF rm -f conftest.$ac_objext @@ -72644,7 +61900,7 @@ Index: binutils-2.17/ld/configure case $ac_cv_c_inline in -@@ -5795,9 +6452,9 @@ +@@ -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` @@ -72657,7 +61913,7 @@ Index: binutils-2.17/ld/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -5811,38 +6468,35 @@ +@@ -5811,38 +6468,35 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -72713,7 +61969,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -5853,8 +6507,8 @@ fi done @@ -72724,7 +61980,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5865,62 +6519,59 @@ +@@ -5865,62 +6519,59 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -72809,7 +62065,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5931,64 +6582,61 @@ +@@ -5931,64 +6582,61 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -72896,7 +62152,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6003,44 +6651,42 @@ +@@ -6003,44 +6651,42 @@ int main () { char *p = (char *) alloca (2 * sizeof (int)); @@ -72959,7 +62215,7 @@ Index: binutils-2.17/ld/configure if test $ac_cv_working_alloca_h = yes; then cat >>confdefs.h <<\_ACEOF -@@ -6049,8 +6695,8 @@ +@@ -6049,8 +6695,8 @@ _ACEOF fi @@ -72970,7 +62226,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6067,7 +6713,7 @@ +@@ -6067,7 +6713,7 @@ cat >>conftest.$ac_ext <<_ACEOF # include <malloc.h> # define alloca _alloca # else @@ -72979,7 +62235,7 @@ Index: binutils-2.17/ld/configure # include <alloca.h> # else # ifdef _AIX -@@ -6085,44 +6731,42 @@ +@@ -6085,44 +6731,42 @@ int main () { char *p = (char *) alloca (1); @@ -73042,7 +62298,7 @@ Index: binutils-2.17/ld/configure if test $ac_cv_func_alloca_works = yes; then -@@ -6136,15 +6780,15 @@ +@@ -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. @@ -73061,7 +62317,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6154,7 +6798,7 @@ +@@ -6154,7 +6798,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -73070,7 +62326,7 @@ Index: binutils-2.17/ld/configure webecray #else wenotbecray -@@ -6170,14 +6814,14 @@ +@@ -6170,14 +6814,14 @@ fi rm -f conftest* fi @@ -73090,7 +62346,7 @@ Index: binutils-2.17/ld/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -6203,68 +6847,60 @@ +@@ -6203,68 +6847,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -73182,7 +62438,7 @@ Index: binutils-2.17/ld/configure if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF -@@ -6277,8 +6913,8 @@ +@@ -6277,8 +6913,8 @@ fi done fi @@ -73193,7 +62449,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6291,6 +6927,7 @@ +@@ -6291,6 +6927,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -73201,7 +62457,7 @@ Index: binutils-2.17/ld/configure int find_stack_direction () { -@@ -6308,17 +6945,26 @@ +@@ -6308,17 +6945,26 @@ find_stack_direction () int main () { @@ -73233,7 +62489,7 @@ Index: binutils-2.17/ld/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -6331,11 +6977,13 @@ +@@ -6331,11 +6977,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi @@ -73250,7 +62506,7 @@ Index: binutils-2.17/ld/configure cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction -@@ -6349,18 +6997,19 @@ +@@ -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` @@ -73278,7 +62534,7 @@ Index: binutils-2.17/ld/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -6371,41 +7020,37 @@ +@@ -6371,41 +7020,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -73338,7 +62594,7 @@ Index: binutils-2.17/ld/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -6414,24 +7059,22 @@ +@@ -6414,24 +7059,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF @@ -73374,7 +62630,7 @@ Index: binutils-2.17/ld/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -6439,9 +7082,10 @@ +@@ -6439,9 +7082,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -73387,7 +62643,7 @@ Index: binutils-2.17/ld/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -6465,25 +7109,19 @@ +@@ -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;} @@ -73420,7 +62676,7 @@ Index: binutils-2.17/ld/configure fi if test `eval echo '${'$as_ac_Header'}'` = yes; then -@@ -6499,9 +7137,9 @@ +@@ -6499,9 +7137,9 @@ done for ac_func in getpagesize do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -73433,7 +62689,7 @@ Index: binutils-2.17/ld/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -6527,68 +7165,60 @@ +@@ -6527,68 +7165,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -73525,7 +62781,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -6597,8 +7227,8 @@ _ACEOF fi done @@ -73536,7 +62792,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6640,21 +7270,21 @@ +@@ -6640,21 +7270,21 @@ $ac_includes_default #include <fcntl.h> #include <sys/mman.h> @@ -73562,7 +62818,7 @@ Index: binutils-2.17/ld/configure # include <sys/param.h> # ifdef EXEC_PAGESIZE # define getpagesize() EXEC_PAGESIZE -@@ -6693,15 +7323,15 @@ +@@ -6693,15 +7323,15 @@ main () /* First, make a file with some known garbage in it. */ data = (char *) malloc (pagesize); if (!data) @@ -73581,7 +62837,7 @@ Index: binutils-2.17/ld/configure close (fd); /* Next, try to mmap the file at a fixed address which already has -@@ -6709,17 +7339,17 @@ +@@ -6709,17 +7339,17 @@ main () we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) @@ -73604,7 +62860,7 @@ Index: binutils-2.17/ld/configure /* 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 @@ +@@ -6728,24 +7358,33 @@ main () *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) @@ -73646,7 +62902,7 @@ Index: binutils-2.17/ld/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -6758,11 +7397,13 @@ +@@ -6758,11 +7397,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_mmap_fixed_mapped=no fi @@ -73663,7 +62919,7 @@ Index: binutils-2.17/ld/configure if test $ac_cv_func_mmap_fixed_mapped = yes; then cat >>confdefs.h <<\_ACEOF -@@ -6786,18 +7427,19 @@ +@@ -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` @@ -73691,7 +62947,7 @@ Index: binutils-2.17/ld/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -6808,41 +7450,37 @@ +@@ -6808,41 +7450,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -73751,7 +63007,7 @@ Index: binutils-2.17/ld/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -6851,24 +7489,22 @@ +@@ -6851,24 +7489,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF @@ -73787,7 +63043,7 @@ Index: binutils-2.17/ld/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -6876,9 +7512,10 @@ +@@ -6876,9 +7512,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -73800,7 +63056,7 @@ Index: binutils-2.17/ld/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -6902,25 +7539,19 @@ +@@ -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;} @@ -73833,7 +63089,7 @@ Index: binutils-2.17/ld/configure fi if test `eval echo '${'$as_ac_Header'}'` = yes; then -@@ -6946,9 +7577,9 @@ +@@ -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` @@ -73846,7 +63102,7 @@ Index: binutils-2.17/ld/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -6974,68 +7605,60 @@ +@@ -6974,68 +7605,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -73938,7 +63194,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -7050,9 +7673,9 @@ done for ac_func in stpcpy do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -73951,7 +63207,7 @@ Index: binutils-2.17/ld/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -7078,68 +7701,60 @@ +@@ -7078,68 +7701,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -74043,7 +63299,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -7158,8 +7773,8 @@ _ACEOF fi if test $ac_cv_header_locale_h = yes; then @@ -74054,7 +63310,7 @@ Index: binutils-2.17/ld/configure if test "${am_cv_val_LC_MESSAGES+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7179,39 +7794,36 @@ +@@ -7179,39 +7794,36 @@ return LC_MESSAGES } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -74111,7 +63367,7 @@ Index: binutils-2.17/ld/configure if test $am_cv_val_LC_MESSAGES = yes; then cat >>confdefs.h <<\_ACEOF -@@ -7220,34 +7832,34 @@ +@@ -7220,34 +7832,34 @@ _ACEOF fi fi @@ -74162,7 +63418,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -7256,17 +7868,17 @@ echo "${ECHO_T}$nls_cv_force_use_gnu_get CATOBJEXT= if test "${ac_cv_header_libintl_h+set}" = set; then @@ -74186,7 +63442,7 @@ Index: binutils-2.17/ld/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -7277,41 +7889,37 @@ +@@ -7277,41 +7889,37 @@ $ac_includes_default #include <libintl.h> _ACEOF rm -f conftest.$ac_objext @@ -74246,7 +63502,7 @@ Index: binutils-2.17/ld/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -7320,24 +7928,22 @@ +@@ -7320,24 +7928,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <libintl.h> _ACEOF @@ -74282,7 +63538,7 @@ Index: binutils-2.17/ld/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -7345,9 +7951,10 @@ +@@ -7345,9 +7951,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -74295,7 +63551,7 @@ Index: binutils-2.17/ld/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -7371,30 +7978,23 @@ +@@ -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;} @@ -74333,7 +63589,7 @@ Index: binutils-2.17/ld/configure if test "${gt_cv_func_gettext_libc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7414,43 +8014,40 @@ +@@ -7414,43 +8014,40 @@ return (int) gettext ("") } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -74396,7 +63652,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7463,59 +8060,56 @@ +@@ -7463,59 +8060,56 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -74479,7 +63735,7 @@ Index: binutils-2.17/ld/configure if test "${gt_cv_func_gettext_libintl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7535,39 +8129,36 @@ +@@ -7535,39 +8129,36 @@ return (int) gettext ("") } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -74536,7 +63792,7 @@ Index: binutils-2.17/ld/configure fi fi -@@ -7581,8 +8172,8 @@ +@@ -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 @@ -74547,7 +63803,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7608,20 +8199,20 @@ +@@ -7608,20 +8199,20 @@ esac fi MSGFMT="$ac_cv_path_MSGFMT" if test -n "$MSGFMT"; then @@ -74575,7 +63831,7 @@ Index: binutils-2.17/ld/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -7647,68 +8238,60 @@ +@@ -7647,68 +8238,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -74667,7 +63923,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -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 @@ -74678,7 +63934,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7735,32 +8318,33 @@ +@@ -7735,32 +8318,33 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -74720,7 +63976,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7786,11 +8370,11 @@ +@@ -7786,11 +8370,11 @@ esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test -n "$XGETTEXT"; then @@ -74736,7 +63992,7 @@ Index: binutils-2.17/ld/configure fi cat >conftest.$ac_ext <<_ACEOF -@@ -7810,37 +8394,34 @@ +@@ -7810,37 +8394,34 @@ extern int _nl_msg_cat_cntr; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -74789,7 +64045,7 @@ Index: binutils-2.17/ld/configure conftest$ac_exeext conftest.$ac_ext INSTOBJEXT=.mo fi -@@ -7862,8 +8443,8 @@ +@@ -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 @@ -74800,7 +64056,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7889,17 +8470,17 @@ +@@ -7889,17 +8470,17 @@ esac fi MSGFMT="$ac_cv_path_MSGFMT" if test -n "$MSGFMT"; then @@ -74824,7 +64080,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7914,32 +8495,33 @@ +@@ -7914,32 +8495,33 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -74866,7 +64122,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7965,11 +8547,11 @@ +@@ -7965,11 +8547,11 @@ esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test -n "$XGETTEXT"; then @@ -74882,7 +64138,7 @@ Index: binutils-2.17/ld/configure fi -@@ -7988,8 +8570,8 @@ +@@ -7988,8 +8570,8 @@ fi if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else @@ -74893,7 +64149,7 @@ Index: binutils-2.17/ld/configure XGETTEXT=":" fi fi -@@ -8038,8 +8620,8 @@ +@@ -8038,8 +8620,8 @@ _ACEOF if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else @@ -74904,7 +64160,7 @@ Index: binutils-2.17/ld/configure NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in -@@ -8047,8 +8629,8 @@ +@@ -8047,8 +8629,8 @@ echo $ECHO_N "checking for catalogs to b esac done LINGUAS=$NEW_LINGUAS @@ -74915,7 +64171,7 @@ Index: binutils-2.17/ld/configure fi if test -n "$LINGUAS"; then -@@ -8067,17 +8649,17 @@ +@@ -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 @@ -74939,7 +64195,7 @@ Index: binutils-2.17/ld/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8088,41 +8670,37 @@ +@@ -8088,41 +8670,37 @@ $ac_includes_default #include <linux/version.h> _ACEOF rm -f conftest.$ac_objext @@ -74999,7 +64255,7 @@ Index: binutils-2.17/ld/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8131,24 +8709,22 @@ +@@ -8131,24 +8709,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <linux/version.h> _ACEOF @@ -75035,7 +64291,7 @@ Index: binutils-2.17/ld/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -8156,9 +8732,10 @@ +@@ -8156,9 +8732,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -75048,7 +64304,7 @@ Index: binutils-2.17/ld/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -8182,25 +8759,18 @@ +@@ -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;} @@ -75079,7 +64335,7 @@ Index: binutils-2.17/ld/configure fi if test $ac_cv_header_linux_version_h = yes; then -@@ -8256,8 +8826,8 @@ +@@ -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 @@ -75090,7 +64346,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_YACC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8270,25 +8840,27 @@ +@@ -8270,25 +8840,27 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -75123,7 +64379,7 @@ Index: binutils-2.17/ld/configure test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" -@@ -8297,8 +8869,8 @@ +@@ -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 @@ -75134,7 +64390,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_prog_LEX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8311,253 +8883,182 @@ +@@ -8311,253 +8883,182 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -75488,7 +64744,7 @@ Index: binutils-2.17/ld/configure if test $ac_cv_prog_lex_yytext_pointer = yes; then cat >>confdefs.h <<\_ACEOF -@@ -8565,23 +9066,24 @@ +@@ -8565,23 +9066,24 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi @@ -75521,7 +64777,7 @@ Index: binutils-2.17/ld/configure if test $USE_MAINTAINER_MODE = yes; then -@@ -8611,18 +9113,19 @@ +@@ -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` @@ -75549,7 +64805,7 @@ Index: binutils-2.17/ld/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8633,41 +9136,37 @@ +@@ -8633,41 +9136,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -75609,7 +64865,7 @@ Index: binutils-2.17/ld/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8676,24 +9175,22 @@ +@@ -8676,24 +9175,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF @@ -75645,7 +64901,7 @@ Index: binutils-2.17/ld/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -8701,9 +9198,10 @@ +@@ -8701,9 +9198,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -75658,7 +64914,7 @@ Index: binutils-2.17/ld/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -8727,25 +9225,19 @@ +@@ -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;} @@ -75691,7 +64947,7 @@ Index: binutils-2.17/ld/configure fi if test `eval echo '${'$as_ac_Header'}'` = yes; then -@@ -8763,9 +9255,9 @@ +@@ -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` @@ -75704,7 +64960,7 @@ Index: binutils-2.17/ld/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -8791,68 +9283,60 @@ +@@ -8791,68 +9283,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -75796,7 +65052,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -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` @@ -75809,7 +65065,7 @@ Index: binutils-2.17/ld/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -8893,38 +9377,35 @@ +@@ -8893,38 +9377,35 @@ return 0; } _ACEOF rm -f conftest.$ac_objext @@ -75865,7 +65121,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -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 @@ -75881,7 +65137,7 @@ Index: binutils-2.17/ld/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8950,126 +9430,83 @@ +@@ -8950,126 +9430,83 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -76051,7 +65307,7 @@ Index: binutils-2.17/ld/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -9077,123 +9514,81 @@ +@@ -9077,123 +9514,81 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -76218,7 +65474,7 @@ Index: binutils-2.17/ld/configure if test "${ld_cv_decl_getopt_unistd_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9213,39 +9608,35 @@ +@@ -9213,39 +9608,35 @@ extern int getopt (int, char *const*, co } _ACEOF rm -f conftest.$ac_objext @@ -76274,7 +65530,7 @@ Index: binutils-2.17/ld/configure if test $ld_cv_decl_getopt_unistd_h = yes; then cat >>confdefs.h <<\_ACEOF -@@ -9264,8 +9655,8 @@ +@@ -9264,8 +9655,8 @@ _ACEOF ;; esac @@ -76285,7 +65541,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_have_decl_strstr+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9280,7 +9671,7 @@ +@@ -9280,7 +9671,7 @@ int main () { #ifndef strstr @@ -76294,7 +65550,7 @@ Index: binutils-2.17/ld/configure #endif ; -@@ -9288,38 +9679,34 @@ +@@ -9288,38 +9679,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -76349,7 +65605,7 @@ Index: binutils-2.17/ld/configure if test $ac_cv_have_decl_strstr = yes; then cat >>confdefs.h <<_ACEOF -@@ -9334,8 +9721,8 @@ +@@ -9334,8 +9721,8 @@ _ACEOF fi @@ -76360,7 +65616,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_have_decl_free+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9350,7 +9737,7 @@ +@@ -9350,7 +9737,7 @@ int main () { #ifndef free @@ -76369,7 +65625,7 @@ Index: binutils-2.17/ld/configure #endif ; -@@ -9358,38 +9745,34 @@ +@@ -9358,38 +9745,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -76424,7 +65680,7 @@ Index: binutils-2.17/ld/configure if test $ac_cv_have_decl_free = yes; then cat >>confdefs.h <<_ACEOF -@@ -9404,8 +9787,8 @@ +@@ -9404,8 +9787,8 @@ _ACEOF fi @@ -76435,7 +65691,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_have_decl_sbrk+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9420,7 +9803,7 @@ +@@ -9420,7 +9803,7 @@ int main () { #ifndef sbrk @@ -76444,7 +65700,7 @@ Index: binutils-2.17/ld/configure #endif ; -@@ -9428,38 +9811,34 @@ +@@ -9428,38 +9811,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -76499,7 +65755,7 @@ Index: binutils-2.17/ld/configure if test $ac_cv_have_decl_sbrk = yes; then cat >>confdefs.h <<_ACEOF -@@ -9474,8 +9853,8 @@ +@@ -9474,8 +9853,8 @@ _ACEOF fi @@ -76510,7 +65766,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_have_decl_getenv+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9490,7 +9869,7 @@ +@@ -9490,7 +9869,7 @@ int main () { #ifndef getenv @@ -76519,7 +65775,7 @@ Index: binutils-2.17/ld/configure #endif ; -@@ -9498,38 +9877,34 @@ +@@ -9498,38 +9877,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -76574,7 +65830,7 @@ Index: binutils-2.17/ld/configure if test $ac_cv_have_decl_getenv = yes; then cat >>confdefs.h <<_ACEOF -@@ -9544,8 +9919,8 @@ +@@ -9544,8 +9919,8 @@ _ACEOF fi @@ -76585,7 +65841,7 @@ Index: binutils-2.17/ld/configure if test "${ac_cv_have_decl_environ+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9560,7 +9935,7 @@ +@@ -9560,7 +9935,7 @@ int main () { #ifndef environ @@ -76594,7 +65850,7 @@ Index: binutils-2.17/ld/configure #endif ; -@@ -9568,38 +9943,34 @@ +@@ -9568,38 +9943,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -76649,7 +65905,7 @@ Index: binutils-2.17/ld/configure if test $ac_cv_have_decl_environ = yes; then cat >>confdefs.h <<_ACEOF -@@ -9623,8 +9994,8 @@ +@@ -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. @@ -76660,7 +65916,7 @@ Index: binutils-2.17/ld/configure if test "${ld_cv_string_concatenation+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -9644,39 +10015,35 @@ +@@ -9644,39 +10015,35 @@ char *a = "a" "a"; } _ACEOF rm -f conftest.$ac_objext @@ -76716,7 +65972,7 @@ Index: binutils-2.17/ld/configure if test "$ld_cv_string_concatenation" = "yes"; then STRINGIFY=astring.sed else -@@ -9801,8 +10168,10 @@ +@@ -9801,8 +10168,10 @@ fi @@ -76729,7 +65985,7 @@ Index: binutils-2.17/ld/configure 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 @@ +@@ -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. @@ -76804,7 +66060,7 @@ Index: binutils-2.17/ld/configure fi fi rm -f confcache -@@ -9862,32 +10250,18 @@ +@@ -9862,32 +10250,18 @@ test "x$prefix" = xNONE && prefix=$ac_de # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' @@ -76843,7 +66099,7 @@ Index: binutils-2.17/ld/configure done LIBOBJS=$ac_libobjs -@@ -9939,17 +10313,45 @@ +@@ -9939,17 +10313,45 @@ cat >>$CONFIG_STATUS <<\_ACEOF ## M4sh Initialization. ## ## --------------------- ## @@ -76893,7 +66149,7 @@ Index: binutils-2.17/ld/configure # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -@@ -9959,8 +10361,43 @@ +@@ -9959,8 +10361,43 @@ else fi @@ -76938,7 +66194,7 @@ Index: binutils-2.17/ld/configure PS1='$ ' PS2='> ' PS4='+ ' -@@ -9974,18 +10411,19 @@ +@@ -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 @@ -76961,7 +66217,7 @@ Index: binutils-2.17/ld/configure as_basename=basename else as_basename=false -@@ -9993,159 +10431,120 @@ +@@ -9993,159 +10431,120 @@ fi # Name of the executable. @@ -77192,7 +66448,7 @@ Index: binutils-2.17/ld/configure if mkdir -p . 2>/dev/null; then as_mkdir_p=: -@@ -10154,7 +10553,28 @@ +@@ -10154,7 +10553,28 @@ else as_mkdir_p=false fi @@ -77222,7 +66478,7 @@ Index: binutils-2.17/ld/configure # 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 @@ +@@ -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'" @@ -77258,7 +66514,7 @@ Index: binutils-2.17/ld/configure CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS -@@ -10195,30 +10598,20 @@ +@@ -10195,30 +10598,20 @@ generated by GNU Autoconf 2.59. Invocat CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ @@ -77297,7 +66553,7 @@ Index: binutils-2.17/ld/configure ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. -@@ -10226,7 +10619,7 @@ +@@ -10226,7 +10619,7 @@ current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit @@ -77306,7 +66562,7 @@ Index: binutils-2.17/ld/configure -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 @@ +@@ -10245,19 +10638,21 @@ Configuration commands: $config_commands Report bugs to <bug-autoconf@gnu.org>." @@ -77334,7 +66590,7 @@ Index: binutils-2.17/ld/configure _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -@@ -10268,39 +10663,24 @@ +@@ -10268,39 +10663,24 @@ while test $# != 0 do case $1 in --*=*) @@ -77380,7 +66636,7 @@ Index: binutils-2.17/ld/configure debug=: ;; --file | --fil | --fi | --f ) $ac_shift -@@ -10310,18 +10690,24 @@ +@@ -10310,18 +10690,24 @@ Try \`$0 --help' for more information." $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; @@ -77410,7 +66666,7 @@ Index: binutils-2.17/ld/configure esac shift -@@ -10337,39 +10723,51 @@ +@@ -10337,39 +10723,51 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then @@ -77475,7 +66731,7 @@ Index: binutils-2.17/ld/configure # 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 @@ +@@ -10381,640 +10779,634 @@ if $ac_need_defaults; then fi # Have a temporary directory for convenience. Make it in the build tree @@ -78661,7 +67917,7 @@ Index: binutils-2.17/ld/configure # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do -@@ -11025,135 +11417,39 @@ +@@ -11025,135 +11417,39 @@ for _am_header in $config_headers :; do _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done @@ -78823,7 +68079,7 @@ Index: binutils-2.17/ld/configure # 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 @@ +@@ -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 @@ -78861,7 +68117,7 @@ Index: binutils-2.17/ld/configure else continue fi -@@ -11196,54 +11503,80 @@ +@@ -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 @@ -78972,11 +68228,10 @@ Index: binutils-2.17/ld/configure { (exit 0); exit 0; } _ACEOF -Index: binutils-2.17/ld/configure.tgt -=================================================================== ---- binutils-2.17.orig/ld/configure.tgt 2007-06-28 09:19:34.623972808 +0200 -+++ binutils-2.17/ld/configure.tgt 2007-06-28 09:19:36.665662424 +0200 -@@ -81,8 +81,10 @@ +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 @@ -78984,19 +68239,19 @@ Index: binutils-2.17/ld/configure.tgt - ;; + targ_extra_emuls="avr1 avr3 avr4 avr5" ;; +avr32-*-none) targ_emul=avr32elf_ap7000 -+ targ_extra_emuls="avr32elf_uc3a0512" ;; ++ 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 -Index: binutils-2.17/ld/emulparams/avr32elf_ap7000.sh -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/ld/emulparams/avr32elf_ap7000.sh 2007-06-28 09:19:36.665662424 +0200 -@@ -0,0 +1,34 @@ +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 @@ -79010,7 +68265,7 @@ Index: binutils-2.17/ld/emulparams/avr32elf_ap7000.sh +BSS_ALIGNMENT=8 + +INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH -+ . = . & 0x1fffffff;" ++ . = . & 0x9fffffff;" + +MEMORY="MEMORY + { @@ -79028,14 +68283,14 @@ Index: binutils-2.17/ld/emulparams/avr32elf_ap7000.sh +DATA_SEGMENT_END="__heap_start__ = ALIGN(8); + . = ${STACK_ADDR}; + __heap_end__ = .;" -Index: binutils-2.17/ld/emulparams/avr32elf.sh -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/ld/emulparams/avr32elf.sh 2007-06-28 09:19:36.665662424 +0200 -@@ -0,0 +1,24 @@ +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 @@ -79044,7 +68299,7 @@ Index: binutils-2.17/ld/emulparams/avr32elf.sh +EMBEDDED=yes +NOP=0xd703d703 +INITIAL_READONLY_SECTIONS=".reset : AT(0x0) { *(.reset) } -+ . = . & 0x1fffffff;" ++ . = . & 0x9fffffff;" +DATA_START_SYMBOLS="__data_init_start__ = .; + __data_init_end__ = .; + __data_start__ = .;" @@ -79057,14 +68312,14 @@ Index: binutils-2.17/ld/emulparams/avr32elf.sh + +STACK_ADDR=0x82000000 + -Index: binutils-2.17/ld/emulparams/avr32elf_uc3a0512.sh -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/ld/emulparams/avr32elf_uc3a0512.sh 2007-06-28 09:19:36.666662272 +0200 -@@ -0,0 +1,34 @@ +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 @@ -79077,13 +68332,14 @@ Index: binutils-2.17/ld/emulparams/avr32elf_uc3a0512.sh +DATA_SEGMENT_ALIGN=8 +BSS_ALIGNMENT=8 + -+INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH -+ . = . & 0x1fffffff;" ++INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH" + +MEMORY="MEMORY + { -+ FLASH (rxai) : ORIGIN = 0x80000000, LENGTH = 0x80000 -+ INTRAM (rwxa) : ORIGIN = 0x00000000, LENGTH = 0x10000 ++ 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" @@ -79096,14 +68352,496 @@ Index: binutils-2.17/ld/emulparams/avr32elf_uc3a0512.sh +DATA_SEGMENT_END="__heap_start__ = ALIGN(8); + . = ${STACK_ADDR}; + __heap_end__ = .;" -Index: binutils-2.17/ld/emulparams/avr32linux.sh -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/ld/emulparams/avr32linux.sh 2007-06-28 09:19:36.666662272 +0200 -@@ -0,0 +1,13 @@ ++ ++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 @@ -79114,37 +68852,20743 @@ Index: binutils-2.17/ld/emulparams/avr32linux.sh +# 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 -Index: binutils-2.17/ld/Makefile.am -=================================================================== ---- binutils-2.17.orig/ld/Makefile.am 2007-06-28 09:19:35.795794664 +0200 -+++ binutils-2.17/ld/Makefile.am 2007-06-28 09:19:36.667662120 +0200 -@@ -133,6 +133,9 @@ +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 <<EOF ++ ++#include "libbfd.h" ++#include "elf32-avr32.h" ++ ++/* Whether to allow direct references (sub or mov) to SEC_DATA and ++ !SEC_CONTENTS sections when optimizing. Not enabled by default ++ since it might cause link errors. */ ++static int direct_data_refs = 0; ++ ++static void avr32_elf_after_open (void) ++{ ++ bfd_elf32_avr32_set_options (&link_info, direct_data_refs); ++ gld${EMULATION_NAME}_after_open (); ++} ++ ++EOF ++ ++# Define some shell vars to insert bits of code into the standard elf ++# parse_args and list_options functions. ++# ++PARSE_AND_LIST_PROLOGUE=' ++#define OPTION_DIRECT_DATA 300 ++#define OPTION_NO_DIRECT_DATA 301 ++' ++ ++PARSE_AND_LIST_LONGOPTS=' ++ { "direct-data", no_argument, NULL, OPTION_DIRECT_DATA }, ++ { "no-direct-data", no_argument, NULL, OPTION_NO_DIRECT_DATA }, ++' ++ ++PARSE_AND_LIST_OPTIONS=' ++ fprintf (file, _(" --direct-data\t\tAllow direct data references when optimizing\n")); ++ fprintf (file, _(" --no-direct-data\tDo not allow direct data references when optimizing\n")); ++' ++ ++PARSE_AND_LIST_ARGS_CASES=' ++ case OPTION_DIRECT_DATA: ++ direct_data_refs = 1; ++ break; ++ case OPTION_NO_DIRECT_DATA: ++ direct_data_refs = 0; ++ break; ++' ++ ++# Replace some of the standard ELF functions with our own versions. ++# ++LDEMUL_AFTER_OPEN=avr32_elf_after_open +diff -Nrup binutils-2.17/ld/ld.info binutils-2.17.atmel.1.3.0/ld/ld.info +--- binutils-2.17/ld/ld.info 2006-06-23 20:19:51.000000000 +0200 ++++ binutils-2.17.atmel.1.3.0/ld/ld.info 2007-09-28 10:30:45.000000000 +0200 +@@ -1,5 +1,7 @@ +-This is .././ld/ld.info, produced by makeinfo version 4.8 from +-.././ld/ld.texinfo. ++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. +@@ -4192,6 +4194,8 @@ not listed. + + * ARM:: `ld' and the ARM family + ++* AVR32:: `ld' and AVR32 processors ++ + * HPPA ELF32:: `ld' and HPPA 32-bit ELF + + * MMIX:: `ld' and MMIX +@@ -4285,7 +4289,7 @@ target subroutine is a leaf routine (tha + not itself call any subroutines). + + +-File: ld.info, Node: ARM, Next: HPPA ELF32, Prev: i960, Up: Machine Dependent +++File: ld.info, Node: ARM, Next: AVR32, Prev: i960, Up: Machine Dependent + + 4.3 `ld' and the ARM family + =========================== +@@ -4351,9 +4355,33 @@ entry. This should lead to such calls ex + to specify it if you are using that target. + + +-File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: ARM, Up: Machine Dependent ++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.4 `ld' and HPPA 32-bit ELF Support ++4.5 `ld' and HPPA 32-bit ELF Support + ==================================== + + When generating a shared library, `ld' will by default generate import +@@ -4384,7 +4412,7 @@ large, it may not be possible for a bran + + File: ld.info, Node: MMIX, Next: MSP430, Prev: HPPA ELF32, Up: Machine Dependent + +-4.5 `ld' and MMIX ++4.6 `ld' and MMIX + ================= + + For MMIX, there is a choice of generating `ELF' object files or `mmo' +@@ -4412,7 +4440,7 @@ 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 ++4.7 `ld' and MSP430 + =================== + + For the MSP430 it is possible to select the MPU architecture. The flag +@@ -4446,7 +4474,7 @@ specific: + + File: ld.info, Node: PowerPC ELF32, Next: PowerPC64 ELF64, Prev: MSP430, Up: Machine Dependent + +-4.7 `ld' and PowerPC 32-bit ELF Support ++4.8 `ld' and PowerPC 32-bit ELF Support + ======================================= + + Branches on PowerPC processors are limited to a signed 26-bit +@@ -4577,7 +4605,7 @@ File: ld.info, Node: PowerPC64 ELF64, + + File: ld.info, Node: TI COFF, Next: WIN32, Prev: PowerPC64 ELF64, Up: Machine Dependent + +-4.9 `ld''s Support for Various TI COFF Versions ++4.10 `ld''s Support for Various TI COFF Versions + =============================================== + + The `--format' switch allows selection of one of the various TI COFF +@@ -4589,7 +4617,7 @@ depends on the default specified by the + + File: ld.info, Node: WIN32, Next: Xtensa, Prev: TI COFF, Up: Machine Dependent + +-4.10 `ld' and WIN32 (cygwin/mingw) ++4.11 `ld' and WIN32 (cygwin/mingw) + ================================== + + This section describes some of the win32 specific `ld' issues. See +@@ -4986,7 +5014,7 @@ _weak externals_ + + File: ld.info, Node: Xtensa, Prev: WIN32, Up: Machine Dependent + +-4.11 `ld' and Xtensa Processors ++4.12 `ld' and Xtensa Processors + =============================== + + The default `ld' behavior for Xtensa processors is to interpret +@@ -5954,6 +5982,7 @@ Index + * --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) +@@ -6016,6 +6045,7 @@ Index + * --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) +@@ -6200,6 +6230,7 @@ Index + * 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) +@@ -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 `<string><basename>.dll' in preference to ++ `lib<basename>.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 '<var>' 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 `<dll name>.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 <output> <objectfiles> <dll name>.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 <name>' command indicates the _internal_ ++ name of the output DLL. If `<name>' 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 <name>' command shoud be used ++ instead of `LIBRARY'. If `<name>' does not include a suffix, ++ the default executable suffix, `.EXE' is appended. ++ ++ With either `LIBRARY <name>' or `NAME <name>' the optional ++ specification `BASE = <number>' may be used to specify a ++ non-default base address for the image. ++ ++ If neither `LIBRARY <name>' nor `NAME <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 ++ ( ( ( <name1> [ = <name2> ] ) ++ | ( <name1> = <module-name> . <external-name>)) ++ [ @ <integer> ] [NONAME] [DATA] [CONSTANT] [PRIVATE] ) * ++ ++ Declares `<name1>' as an exported symbol from the DLL, or ++ declares `<name1>' as an exported alias for `<name2>'; or ++ declares `<name1>' as a "forward" alias for the symbol ++ `<external-name>' in the DLL `<module-name>'. Optionally, ++ the symbol may be exported by the specified ordinal ++ `<integer>' 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 <file>' 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 '<var>' 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 ++ `<prefix>xxx.dll', where `<prefix>' is set by the `ld' option ++ `--dll-search-prefix=<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 `<prefix>'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 ++***** ++ ++ ++* 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 `<string><basename>.dll' in preference to ++ `lib<basename>.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 '<var>' 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 `<dll name>.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 <output> <objectfiles> <dll name>.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 <name>' command indicates the _internal_ ++ name of the output DLL. If `<name>' 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 <name>' command shoud be used ++ instead of `LIBRARY'. If `<name>' does not include a suffix, ++ the default executable suffix, `.EXE' is appended. ++ ++ With either `LIBRARY <name>' or `NAME <name>' the optional ++ specification `BASE = <number>' may be used to specify a ++ non-default base address for the image. ++ ++ If neither `LIBRARY <name>' nor `NAME <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 ++ ( ( ( <name1> [ = <name2> ] ) ++ | ( <name1> = <module-name> . <external-name>)) ++ [ @ <integer> ] [NONAME] [DATA] [CONSTANT] [PRIVATE] ) * ++ ++ Declares `<name1>' as an exported symbol from the DLL, or ++ declares `<name1>' as an exported alias for `<name2>'; or ++ declares `<name1>' as a "forward" alias for the symbol ++ `<external-name>' in the DLL `<module-name>'. Optionally, ++ the symbol may be exported by the specified ordinal ++ `<integer>' 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 <file>' 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 '<var>' 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 ++ `<prefix>xxx.dll', where `<prefix>' is set by the `ld' option ++ `--dll-search-prefix=<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 `<prefix>'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 ++***** ++ ++ ++* 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 `<string><basename>.dll' in preference to ++ `lib<basename>.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 '<var>' 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 `<dll name>.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 <output> <objectfiles> <dll name>.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 <name>' command indicates the _internal_ ++ name of the output DLL. If `<name>' 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 <name>' command shoud be used ++ instead of `LIBRARY'. If `<name>' does not include a suffix, ++ the default executable suffix, `.EXE' is appended. ++ ++ With either `LIBRARY <name>' or `NAME <name>' the optional ++ specification `BASE = <number>' may be used to specify a ++ non-default base address for the image. ++ ++ If neither `LIBRARY <name>' nor `NAME <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 ++ ( ( ( <name1> [ = <name2> ] ) ++ | ( <name1> = <module-name> . <external-name>)) ++ [ @ <integer> ] [NONAME] [DATA] [CONSTANT] [PRIVATE] ) * ++ ++ Declares `<name1>' as an exported symbol from the DLL, or ++ declares `<name1>' as an exported alias for `<name2>'; or ++ declares `<name1>' as a "forward" alias for the symbol ++ `<external-name>' in the DLL `<module-name>'. Optionally, ++ the symbol may be exported by the specified ordinal ++ `<integer>' 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 <file>' 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 '<var>' 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 ++ `<prefix>xxx.dll', where `<prefix>' is set by the `ld' option ++ `--dll-search-prefix=<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 `<prefix>'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 ++***** ++ ++ ++* 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 +598,15 @@ +@@ -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)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ $(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)/scripttempl/elf_xip.sc ${GEN_DEPENDS} ++ $(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)/scripttempl/elf.sc ${GEN_DEPENDS} ++ $(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 +1812,9 @@ +@@ -1800,7 +1870,9 @@ install-exec-local: ld-new$(EXEEXT) || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ fi @@ -79155,11 +89599,10 @@ Index: binutils-2.17/ld/Makefile.am $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts for f in ldscripts/*; do \ $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \ -Index: binutils-2.17/ld/Makefile.in -=================================================================== ---- binutils-2.17.orig/ld/Makefile.in 2007-06-28 09:19:35.796794512 +0200 -+++ binutils-2.17/ld/Makefile.in 2007-06-28 09:19:36.668661968 +0200 -@@ -145,6 +145,7 @@ +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@ @@ -79167,7 +89610,7 @@ Index: binutils-2.17/ld/Makefile.in GT_NO = @GT_NO@ GT_YES = @GT_YES@ HDEFINES = @HDEFINES@ -@@ -213,9 +214,8 @@ +@@ -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` @@ -79178,7 +89621,7 @@ Index: binutils-2.17/ld/Makefile.in am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__include = @am__include@ -@@ -232,6 +232,7 @@ +@@ -232,6 +232,7 @@ build_vendor = @build_vendor@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ @@ -79186,7 +89629,7 @@ Index: binutils-2.17/ld/Makefile.in exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ -@@ -245,12 +246,15 @@ +@@ -245,12 +246,15 @@ install_sh = @install_sh@ l = @l@ libdir = @libdir@ libexecdir = @libexecdir@ @@ -79202,7 +89645,7 @@ Index: binutils-2.17/ld/Makefile.in sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ -@@ -263,7 +267,6 @@ +@@ -263,7 +267,6 @@ use_sysroot = @use_sysroot@ AUTOMAKE_OPTIONS = cygnus dejagnu SUBDIRS = po tooldir = $(exec_prefix)/$(target_alias) @@ -79210,7 +89653,7 @@ Index: binutils-2.17/ld/Makefile.in AM_CFLAGS = $(WARN_CFLAGS) # We put the scripts in the directory $(scriptdir)/ldscripts. -@@ -357,6 +360,9 @@ +@@ -357,6 +360,9 @@ ALL_EMULATIONS = \ eavr3.o \ eavr4.o \ eavr5.o \ @@ -79220,7 +89663,7 @@ Index: binutils-2.17/ld/Makefile.in ecoff_i860.o \ ecoff_sparc.o \ ecrisaout.o \ -@@ -878,10 +884,13 @@ +@@ -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; \ @@ -79238,7 +89681,7 @@ Index: binutils-2.17/ld/Makefile.in done; \ done -@@ -1406,6 +1415,15 @@ +@@ -1406,6 +1415,15 @@ eavr5.c: $(srcdir)/emulparams/avr5.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/avr.sc \ ${GEN_DEPENDS} ${GENSCRIPTS} avr5 "$(tdir_avr2)" @@ -79254,7 +89697,7 @@ Index: binutils-2.17/ld/Makefile.in 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 @@ +@@ -2587,7 +2605,9 @@ install-exec-local: ld-new$(EXEEXT) || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \ fi @@ -79265,10 +89708,9 @@ Index: binutils-2.17/ld/Makefile.in $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts for f in ldscripts/*; do \ $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \ -Index: binutils-2.17/ld/scripttempl/elf_xip.sc -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/ld/scripttempl/elf_xip.sc 2007-06-28 09:19:36.669661816 +0200 +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: @@ -79726,10 +90168,9 @@ Index: binutils-2.17/ld/scripttempl/elf_xip.sc + ${RELOCATING+${STACKNOTE}} +} +EOF -Index: binutils-2.17/ld/testsuite/ld-auto-import/client.c -=================================================================== ---- binutils-2.17.orig/ld/testsuite/ld-auto-import/client.c 2007-06-28 09:19:34.662966880 +0200 -+++ binutils-2.17/ld/testsuite/ld-auto-import/client.c 2007-06-28 09:19:36.669661816 +0200 +diff -Nrup binutils-2.17/ld/testsuite/ld-auto-import/client.c binutils-2.17.atmel.1.3.0/ld/testsuite/ld-auto-import/client.c +--- binutils-2.17/ld/testsuite/ld-auto-import/client.c 2002-12-18 17:05:10.000000000 +0100 ++++ binutils-2.17.atmel.1.3.0/ld/testsuite/ld-auto-import/client.c 2007-03-26 10:19:37.000000000 +0200 @@ -1,55 +1,55 @@ -#include <stdio.h> - @@ -79841,10 +90282,9 @@ Index: binutils-2.17/ld/testsuite/ld-auto-import/client.c + + return 0; +} -Index: binutils-2.17/ld/testsuite/ld-auto-import/dll.c -=================================================================== ---- binutils-2.17.orig/ld/testsuite/ld-auto-import/dll.c 2007-06-28 09:19:34.669965816 +0200 -+++ binutils-2.17/ld/testsuite/ld-auto-import/dll.c 2007-06-28 09:19:36.670661664 +0200 +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; @@ -79886,10 +90326,9 @@ Index: binutils-2.17/ld/testsuite/ld-auto-import/dll.c +} + +void (* func_ptr)(void) = print_foo; -Index: binutils-2.17/ld/testsuite/ld-avr32/avr32.exp -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/ld/testsuite/ld-avr32/avr32.exp 2007-06-28 09:19:36.670661664 +0200 +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. @@ -79916,10 +90355,9 @@ Index: binutils-2.17/ld/testsuite/ld-avr32/avr32.exp +} + +run_dump_test "pcrel" -Index: binutils-2.17/ld/testsuite/ld-avr32/pcrel.d -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/ld/testsuite/ld-avr32/pcrel.d 2007-06-28 09:19:36.670661664 +0200 +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 @@ -79995,10 +90433,9 @@ Index: binutils-2.17/ld/testsuite/ld-avr32/pcrel.d +Disassembly of section \.text\.pcrel21: +a0200000 <extsym21>: +a0200000: d7 03 nop -Index: binutils-2.17/ld/testsuite/ld-avr32/pcrel.ld -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/ld/testsuite/ld-avr32/pcrel.ld 2007-06-28 09:19:36.670661664 +0200 +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 @@ -80023,10 +90460,9 @@ Index: binutils-2.17/ld/testsuite/ld-avr32/pcrel.ld + *(.text.pcrel21) + } +} -Index: binutils-2.17/ld/testsuite/ld-avr32/symbols.s -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/ld/testsuite/ld-avr32/symbols.s 2007-06-28 09:19:36.670661664 +0200 +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 @@ -80048,17 +90484,16 @@ Index: binutils-2.17/ld/testsuite/ld-avr32/symbols.s + .global extsym21 +extsym21: + nop -Index: binutils-2.17/opcodes/aclocal.m4 -=================================================================== ---- binutils-2.17.orig/opcodes/aclocal.m4 2007-06-28 09:19:34.693962168 +0200 -+++ binutils-2.17/opcodes/aclocal.m4 2007-06-28 09:19:36.671661512 +0200 +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 @@ +@@ -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], @@ -80067,10 +90502,9 @@ Index: binutils-2.17/opcodes/aclocal.m4 # AM_AUX_DIR_EXPAND -*- Autoconf -*- -Index: binutils-2.17/opcodes/avr32-asm.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/opcodes/avr32-asm.c 2007-06-28 09:19:36.671661512 +0200 +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. @@ -80336,10 +90770,9 @@ Index: binutils-2.17/opcodes/avr32-asm.c + { cr_table, AVR32_NR_CPREGS, NULL, N_("coprocessor register expected") }, + }; +#endif -Index: binutils-2.17/opcodes/avr32-asm.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/opcodes/avr32-asm.h 2007-06-28 09:19:36.672661360 +0200 +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. @@ -80383,10 +90816,9 @@ Index: binutils-2.17/opcodes/avr32-asm.h +avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8); + +#endif /* __OPCODES_AVR32_ASM_H */ -Index: binutils-2.17/opcodes/avr32-dis.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/opcodes/avr32-dis.c 2007-06-28 09:19:36.672661360 +0200 +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. @@ -81159,7 +91591,7 @@ Index: binutils-2.17/opcodes/avr32-dis.c + if (i) + info->fprintf_func(info->stream, ","); + else -+ info->fprintf_func(info->stream, " "); ++ info->fprintf_func(info->stream, "\t"); + next_field += op->print(op, info, &fields[next_field]); + } +} @@ -81279,10 +91711,9 @@ Index: binutils-2.17/opcodes/avr32-dis.c +{ + +} -Index: binutils-2.17/opcodes/avr32-opc.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/opcodes/avr32-opc.c 2007-06-28 09:19:36.677660600 +0200 +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. @@ -87424,10 +97855,9 @@ Index: binutils-2.17/opcodes/avr32-opc.c +#undef NORMAL_MNEMONIC +#undef ALIAS_MNEMONIC +#undef FP_MNEMONIC -Index: binutils-2.17/opcodes/avr32-opc.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ binutils-2.17/opcodes/avr32-opc.h 2007-06-28 09:19:36.679660296 +0200 +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. @@ -89084,10 +99514,9 @@ Index: binutils-2.17/opcodes/avr32-opc.h + AVR32_PARSER__END_ + }; +#define AVR32_NR_PARSERS AVR32_PARSER__END_ -Index: binutils-2.17/opcodes/config.in -=================================================================== ---- binutils-2.17.orig/opcodes/config.in 2007-06-28 09:19:34.719958216 +0200 -+++ binutils-2.17/opcodes/config.in 2007-06-28 09:19:36.679660296 +0200 +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 @@ -89108,10 +99537,9 @@ Index: binutils-2.17/opcodes/config.in -/* Define to `unsigned' if <sys/types.h> does not define. */ +/* Define to `unsigned int' if <sys/types.h> does not define. */ #undef size_t -Index: binutils-2.17/opcodes/configure -=================================================================== ---- binutils-2.17.orig/opcodes/configure 2007-06-28 09:19:35.051907752 +0200 -+++ binutils-2.17/opcodes/configure 2007-06-28 09:19:36.690658624 +0200 +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. @@ -89173,7 +99601,7 @@ Index: binutils-2.17/opcodes/configure # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -@@ -29,8 +58,43 @@ +@@ -29,8 +58,43 @@ else fi @@ -89218,7 +99646,7 @@ Index: binutils-2.17/opcodes/configure PS1='$ ' PS2='> ' PS4='+ ' -@@ -44,18 +108,19 @@ +@@ -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 @@ -89241,7 +99669,7 @@ Index: binutils-2.17/opcodes/configure as_basename=basename else as_basename=false -@@ -63,157 +128,388 @@ +@@ -63,157 +128,388 @@ fi # Name of the executable. @@ -89728,7 +100156,7 @@ Index: binutils-2.17/opcodes/configure if mkdir -p . 2>/dev/null; then as_mkdir_p=: -@@ -222,7 +518,28 @@ +@@ -222,7 +518,28 @@ else as_mkdir_p=false fi @@ -89758,7 +100186,7 @@ Index: binutils-2.17/opcodes/configure # 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 @@ +@@ -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'" @@ -89801,7 +100229,7 @@ Index: binutils-2.17/opcodes/configure # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= -@@ -275,42 +580,187 @@ +@@ -275,42 +580,187 @@ ac_unique_file="z8k-dis.c" # Factoring default headers for most tests. ac_includes_default="\ #include <stdio.h> @@ -90003,7 +100431,7 @@ Index: binutils-2.17/opcodes/configure # Initialize some variables set by options. ac_init_help= -@@ -337,34 +787,48 @@ +@@ -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. @@ -90059,7 +100487,7 @@ Index: binutils-2.17/opcodes/configure -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -@@ -386,33 +850,45 @@ +@@ -386,33 +850,45 @@ do --config-cache | -C) cache_file=config.cache ;; @@ -90118,7 +100546,7 @@ Index: binutils-2.17/opcodes/configure -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ -@@ -439,6 +915,12 @@ +@@ -439,6 +915,12 @@ do -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; @@ -90131,7 +100559,7 @@ Index: binutils-2.17/opcodes/configure -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -@@ -463,13 +945,16 @@ +@@ -463,13 +945,16 @@ do | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; @@ -90152,7 +100580,7 @@ Index: binutils-2.17/opcodes/configure localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) -@@ -534,6 +1019,16 @@ +@@ -534,6 +1019,16 @@ do | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; @@ -90169,7 +100597,7 @@ Index: binutils-2.17/opcodes/configure -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -@@ -586,24 +1081,20 @@ +@@ -586,24 +1081,20 @@ do -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. @@ -90200,7 +100628,7 @@ Index: binutils-2.17/opcodes/configure --x) # Obsolete; use --with-x. -@@ -634,8 +1125,7 @@ +@@ -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; }; } @@ -90210,7 +100638,7 @@ Index: binutils-2.17/opcodes/configure export $ac_envvar ;; *) -@@ -655,27 +1145,19 @@ +@@ -655,27 +1145,19 @@ if test -n "$ac_prev"; then { (exit 1); exit 1; }; } fi @@ -90248,7 +100676,7 @@ Index: binutils-2.17/opcodes/configure done # There might be people who depend on the old broken behavior: `$host' -@@ -702,74 +1184,76 @@ +@@ -702,74 +1184,76 @@ test -n "$host_alias" && ac_tool_prefix= test "$silent" = yes && exec 6>/dev/null @@ -90380,7 +100808,7 @@ Index: binutils-2.17/opcodes/configure # # Report the --help message. -@@ -798,9 +1282,6 @@ +@@ -798,9 +1282,6 @@ Configuration: -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] @@ -90390,7 +100818,7 @@ Index: binutils-2.17/opcodes/configure Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] -@@ -818,15 +1299,22 @@ +@@ -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] @@ -90416,7 +100844,7 @@ Index: binutils-2.17/opcodes/configure _ACEOF cat <<\_ACEOF -@@ -878,126 +1366,95 @@ +@@ -878,126 +1366,95 @@ Some influential environment variables: CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir> @@ -90594,7 +101022,7 @@ Index: binutils-2.17/opcodes/configure { cat <<_ASUNAME ## --------- ## -@@ -1016,7 +1473,7 @@ +@@ -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` @@ -90603,7 +101031,7 @@ Index: binutils-2.17/opcodes/configure /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 @@ +@@ -1030,6 +1487,7 @@ do test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done @@ -90611,7 +101039,7 @@ Index: binutils-2.17/opcodes/configure } >&5 -@@ -1051,7 +1509,6 @@ +@@ -1051,7 +1509,6 @@ _ACEOF ac_configure_args= ac_configure_args0= ac_configure_args1= @@ -90619,7 +101047,7 @@ Index: binutils-2.17/opcodes/configure ac_must_keep_next=false for ac_pass in 1 2 do -@@ -1062,7 +1519,7 @@ +@@ -1062,7 +1519,7 @@ do -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; @@ -90628,7 +101056,7 @@ Index: binutils-2.17/opcodes/configure ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in -@@ -1084,9 +1541,7 @@ +@@ -1084,9 +1541,7 @@ do -* ) ac_must_keep_next=true ;; esac fi @@ -90639,7 +101067,7 @@ Index: binutils-2.17/opcodes/configure ;; esac done -@@ -1097,8 +1552,8 @@ +@@ -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. @@ -90650,7 +101078,7 @@ Index: binutils-2.17/opcodes/configure trap 'exit_status=$? # Save into config.log some information that might help in debugging. { -@@ -1111,20 +1566,34 @@ +@@ -1111,20 +1566,34 @@ trap 'exit_status=$? _ASBOX echo # The following way of writing the cache mishandles newlines in values, @@ -90695,7 +101123,7 @@ Index: binutils-2.17/opcodes/configure echo cat <<\_ASBOX -@@ -1135,22 +1604,28 @@ +@@ -1135,22 +1604,28 @@ _ASBOX echo for ac_var in $ac_subst_vars do @@ -90731,7 +101159,7 @@ Index: binutils-2.17/opcodes/configure done | sort echo fi -@@ -1162,26 +1637,24 @@ +@@ -1162,26 +1637,24 @@ _ASBOX ## ----------- ## _ASBOX echo @@ -90763,7 +101191,7 @@ Index: binutils-2.17/opcodes/configure # Predefined preprocessor variables. -@@ -1212,14 +1685,17 @@ +@@ -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. @@ -90788,7 +101216,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -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 @@ -90799,7 +101227,7 @@ Index: binutils-2.17/opcodes/configure esac fi else -@@ -1248,12 +1724,11 @@ +@@ -1248,12 +1724,11 @@ fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -90815,7 +101243,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -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 @@ -90825,7 +101253,7 @@ Index: binutils-2.17/opcodes/configure *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in -@@ -1296,12 +1770,6 @@ +@@ -1296,12 +1770,6 @@ echo "$as_me: error: run \`make distclea { (exit 1); exit 1; }; } fi @@ -90838,7 +101266,7 @@ Index: binutils-2.17/opcodes/configure -@@ -1318,109 +1786,164 @@ +@@ -1318,109 +1786,164 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -91055,7 +101483,7 @@ Index: binutils-2.17/opcodes/configure # The aliases save the names the user supplied, while $host etc. -@@ -1437,8 +1960,8 @@ +@@ -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 @@ -91066,7 +101494,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1451,32 +1974,34 @@ +@@ -1451,32 +1974,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -91108,7 +101536,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1489,36 +2014,51 @@ +@@ -1489,36 +2014,51 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -91170,7 +101598,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1531,74 +2071,34 @@ +@@ -1531,74 +2071,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -91254,7 +101682,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1612,7 +2112,7 @@ +@@ -1612,7 +2112,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -91263,7 +101691,7 @@ Index: binutils-2.17/opcodes/configure if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue -@@ -1623,6 +2123,7 @@ +@@ -1623,6 +2123,7 @@ do fi done done @@ -91271,7 +101699,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -1640,22 +2141,23 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -91302,7 +101730,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1668,36 +2170,38 @@ +@@ -1668,36 +2170,38 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -91349,7 +101777,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1710,29 +2214,45 @@ +@@ -1710,29 +2214,45 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -91401,7 +101829,7 @@ Index: binutils-2.17/opcodes/configure fi fi -@@ -1745,21 +2265,35 @@ +@@ -1745,21 +2265,35 @@ See \`config.log' for more details." >&2 { (exit 1); exit 1; }; } # Provide some information about the compiler. @@ -91445,7 +101873,7 @@ Index: binutils-2.17/opcodes/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -@@ -1784,47 +2318,77 @@ +@@ -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. @@ -91545,7 +101973,7 @@ Index: binutils-2.17/opcodes/configure echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -@@ -1836,19 +2400,21 @@ +@@ -1836,19 +2400,21 @@ See \`config.log' for more details." >&2 fi ac_exeext=$ac_cv_exeext @@ -91574,7 +102002,7 @@ Index: binutils-2.17/opcodes/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -1867,22 +2433,27 @@ +@@ -1867,22 +2433,27 @@ See \`config.log' for more details." >&2 fi fi fi @@ -91614,7 +102042,7 @@ Index: binutils-2.17/opcodes/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then -@@ -1893,9 +2464,8 @@ +@@ -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 @@ -91625,7 +102053,7 @@ Index: binutils-2.17/opcodes/configure break;; * ) break;; esac -@@ -1909,14 +2479,14 @@ +@@ -1909,14 +2479,14 @@ See \`config.log' for more details." >&2 fi rm -f conftest$ac_cv_exeext @@ -91644,7 +102072,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1936,14 +2506,20 @@ +@@ -1936,14 +2506,20 @@ main () } _ACEOF rm -f conftest.o conftest.obj @@ -91669,7 +102097,7 @@ Index: binutils-2.17/opcodes/configure *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac -@@ -1961,12 +2537,12 @@ +@@ -1961,12 +2537,12 @@ fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi @@ -91686,7 +102114,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -1989,50 +2565,49 @@ +@@ -1989,50 +2565,49 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -91760,7 +102188,7 @@ Index: binutils-2.17/opcodes/configure /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext -@@ -2048,38 +2623,118 @@ +@@ -2048,38 +2623,118 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -91895,7 +102323,7 @@ Index: binutils-2.17/opcodes/configure if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then -@@ -2095,12 +2750,12 @@ +@@ -2095,12 +2750,12 @@ else CFLAGS= fi fi @@ -91912,7 +102340,7 @@ Index: binutils-2.17/opcodes/configure ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -2134,12 +2789,17 @@ +@@ -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 @@ -91932,7 +102360,7 @@ Index: binutils-2.17/opcodes/configure int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; -@@ -2154,335 +2814,144 @@ +@@ -2154,335 +2814,144 @@ return f (e, argv, 0) != argv[0] || f return 0; } _ACEOF @@ -92355,7 +102783,7 @@ Index: binutils-2.17/opcodes/configure fi -@@ -2506,8 +2975,8 @@ +@@ -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. @@ -92366,7 +102794,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -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 @@ -92375,7 +102803,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -2548,21 +3017,22 @@ case $as_dir/ in ;; esac done @@ -92403,7 +102831,7 @@ Index: binutils-2.17/opcodes/configure # 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 @@ +@@ -2572,8 +3042,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' @@ -92414,7 +102842,7 @@ Index: binutils-2.17/opcodes/configure # Just in case sleep 1 echo timestamp > conftest.file -@@ -2615,20 +3085,20 @@ +@@ -2615,20 +3085,20 @@ echo "$as_me: error: newly created file Check your system clock" >&2;} { (exit 1); exit 1; }; } fi @@ -92440,7 +102868,7 @@ Index: binutils-2.17/opcodes/configure # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` -@@ -2680,8 +3150,8 @@ +@@ -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 @@ -92451,7 +102879,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -2694,54 +3164,57 @@ +@@ -2694,54 +3164,57 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -92530,7 +102958,7 @@ Index: binutils-2.17/opcodes/configure SET_MAKE="MAKE=${MAKE-make}" fi -@@ -2756,7 +3229,7 @@ +@@ -2756,7 +3229,7 @@ rmdir .tst 2>/dev/null DEPDIR="${am__leading_dot}deps" @@ -92539,7 +102967,7 @@ Index: binutils-2.17/opcodes/configure am_make=${MAKE-make} -@@ -2766,8 +3239,8 @@ +@@ -2766,8 +3239,8 @@ am__doit: .PHONY: am__doit END # If we don't find an include directive, just comment out the code. @@ -92550,7 +102978,7 @@ Index: binutils-2.17/opcodes/configure am__include="#" am__quote= _am_result=none -@@ -2794,15 +3267,15 @@ +@@ -2794,15 +3267,15 @@ if test "$am__include" = "#"; then fi @@ -92571,7 +102999,7 @@ Index: binutils-2.17/opcodes/configure if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' -@@ -2877,8 +3350,8 @@ +@@ -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 @@ -92582,7 +103010,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -2891,32 +3364,34 @@ +@@ -2891,32 +3364,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -92624,7 +103052,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -2929,27 +3404,41 @@ +@@ -2929,27 +3404,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -92673,7 +103101,7 @@ Index: binutils-2.17/opcodes/configure else STRIP="$ac_cv_prog_STRIP" fi -@@ -2970,8 +3459,8 @@ +@@ -2970,8 +3459,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am depcc="$CC" am_compiler_list= @@ -92684,7 +103112,7 @@ Index: binutils-2.17/opcodes/configure if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3060,8 +3549,8 @@ +@@ -3060,8 +3549,8 @@ else fi fi @@ -92695,7 +103123,7 @@ Index: binutils-2.17/opcodes/configure CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type -@@ -3082,8 +3571,8 @@ +@@ -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 @@ -92706,7 +103134,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3096,32 +3585,34 @@ +@@ -3096,32 +3585,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -92748,7 +103176,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_ac_ct_AR+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3134,26 +3625,41 @@ +@@ -3134,26 +3625,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -92796,7 +103224,7 @@ Index: binutils-2.17/opcodes/configure else AR="$ac_cv_prog_AR" fi -@@ -3161,8 +3667,8 @@ +@@ -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 @@ -92807,7 +103235,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3175,32 +3681,34 @@ +@@ -3175,32 +3681,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -92849,7 +103277,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3213,36 +3721,49 @@ +@@ -3213,36 +3721,49 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -92909,7 +103337,7 @@ Index: binutils-2.17/opcodes/configure case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; -@@ -3260,12 +3781,12 @@ +@@ -3260,12 +3781,12 @@ no) enable_shared=no ;; esac else enable_shared=no @@ -92926,7 +103354,7 @@ Index: binutils-2.17/opcodes/configure case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; -@@ -3283,11 +3804,11 @@ +@@ -3283,11 +3804,11 @@ no) enable_static=no ;; esac else enable_static=yes @@ -92942,7 +103370,7 @@ Index: binutils-2.17/opcodes/configure case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; -@@ -3305,20 +3826,21 @@ +@@ -3305,20 +3826,21 @@ no) enable_fast_install=no ;; esac else enable_fast_install=yes @@ -92971,7 +103399,7 @@ Index: binutils-2.17/opcodes/configure case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw -@@ -3347,11 +3869,11 @@ +@@ -3347,11 +3869,11 @@ echo $ECHO_N "checking for ld used by GC ;; esac elif test "$with_gnu_ld" = yes; then @@ -92987,7 +103415,7 @@ Index: binutils-2.17/opcodes/configure fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 -@@ -3380,17 +3902,17 @@ +@@ -3380,17 +3902,17 @@ fi LD="$lt_cv_path_LD" if test -n "$LD"; then @@ -93011,7 +103439,7 @@ Index: binutils-2.17/opcodes/configure if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3401,25 +3923,25 @@ +@@ -3401,25 +3923,25 @@ else lt_cv_prog_gnu_ld=no fi fi @@ -93045,7 +103473,7 @@ Index: binutils-2.17/opcodes/configure if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3454,22 +3976,22 @@ +@@ -3454,22 +3976,22 @@ fi fi NM="$lt_cv_path_NM" @@ -93078,7 +103506,7 @@ Index: binutils-2.17/opcodes/configure if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3631,8 +4153,8 @@ +@@ -3631,8 +4153,8 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) esac fi @@ -93089,7 +103517,7 @@ Index: binutils-2.17/opcodes/configure file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method -@@ -3642,8 +4164,8 @@ +@@ -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 @@ -93100,7 +103528,7 @@ Index: binutils-2.17/opcodes/configure if test "${lt_cv_sys_max_cmd_len+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3694,11 +4216,11 @@ +@@ -3694,11 +4216,11 @@ else fi if test -n "$lt_cv_sys_max_cmd_len" ; then @@ -93116,7 +103544,7 @@ Index: binutils-2.17/opcodes/configure fi -@@ -3706,8 +4228,8 @@ +@@ -3706,8 +4228,8 @@ fi case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then @@ -93127,7 +103555,7 @@ Index: binutils-2.17/opcodes/configure if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3761,17 +4283,17 @@ +@@ -3761,17 +4283,17 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then @@ -93151,7 +103579,7 @@ Index: binutils-2.17/opcodes/configure if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3825,11 +4347,11 @@ +@@ -3825,11 +4347,11 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then @@ -93167,7 +103595,7 @@ Index: binutils-2.17/opcodes/configure fi else -@@ -3844,8 +4366,8 @@ +@@ -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 @@ -93178,7 +103606,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3858,32 +4380,34 @@ +@@ -3858,32 +4380,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -93220,7 +103648,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3896,27 +4420,41 @@ +@@ -3896,27 +4420,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -93269,7 +103697,7 @@ Index: binutils-2.17/opcodes/configure else RANLIB="$ac_cv_prog_RANLIB" fi -@@ -3924,8 +4462,8 @@ +@@ -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 @@ -93280,7 +103708,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3938,32 +4476,34 @@ +@@ -3938,32 +4476,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -93322,7 +103750,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -3976,27 +4516,41 @@ +@@ -3976,27 +4516,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -93371,7 +103799,7 @@ Index: binutils-2.17/opcodes/configure else STRIP="$ac_cv_prog_STRIP" fi -@@ -4011,22 +4565,22 @@ +@@ -4011,22 +4565,22 @@ test "$GCC" = yes && libtool_flags="$lib test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" @@ -93401,7 +103829,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -4035,7 +4589,7 @@ test x"$pic_mode" = xno && libtool_flags case $host in *-*-irix6*) # Find out which ABI we are using. @@ -93410,7 +103838,7 @@ Index: binutils-2.17/opcodes/configure if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? -@@ -4140,13 +4694,12 @@ +@@ -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" @@ -93426,7 +103854,7 @@ Index: binutils-2.17/opcodes/configure ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -@@ -4169,35 +4722,32 @@ +@@ -4169,35 +4722,32 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -93477,7 +103905,7 @@ Index: binutils-2.17/opcodes/configure conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' -@@ -4206,8 +4756,8 @@ +@@ -4206,8 +4756,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLA ac_compiler_gnu=$ac_cv_c_compiler_gnu fi @@ -93488,7 +103916,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -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. @@ -93563,7 +103991,7 @@ Index: binutils-2.17/opcodes/configure fi fi rm -f confcache -@@ -4295,8 +4864,8 @@ +@@ -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 @@ -93574,7 +104002,7 @@ Index: binutils-2.17/opcodes/configure esac fi else -@@ -4322,10 +4891,9 @@ +@@ -4322,10 +4891,9 @@ exec 5>>./config.log @@ -93587,7 +104015,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -4333,31 +4901,32 @@ echo "$as_me: error: enable-targets opti no) enable_targets= ;; *) enable_targets=$enableval ;; esac @@ -93628,7 +104056,7 @@ Index: binutils-2.17/opcodes/configure # Enable -Werror by default when using gcc if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then -@@ -4374,10 +4943,9 @@ +@@ -4374,10 +4943,9 @@ if test "${GCC}" = yes ; then WARN_CFLAGS="${GCC_WARN_CFLAGS}" fi @@ -93641,7 +104069,7 @@ Index: binutils-2.17/opcodes/configure yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; no) if test "${GCC}" = yes ; then WARN_CFLAGS="-w" -@@ -4388,7 +4956,8 @@ +@@ -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 @@ -93651,7 +104079,7 @@ Index: binutils-2.17/opcodes/configure if test x"$silent" != x"yes" && test x"$WARN_CFLAGS" != x""; then echo "Setting warning flags = $WARN_CFLAGS" 6>&1 -@@ -4398,7 +4967,7 @@ +@@ -4398,7 +4967,7 @@ fi @@ -93660,7 +104088,7 @@ Index: binutils-2.17/opcodes/configure if test -z "$target" ; then -@@ -4407,17 +4976,17 @@ +@@ -4407,17 +4976,17 @@ echo "$as_me: error: Unrecognized target { (exit 1); exit 1; }; } fi @@ -93686,7 +104114,7 @@ Index: binutils-2.17/opcodes/configure if test $USE_MAINTAINER_MODE = yes; then -@@ -4446,21 +5015,21 @@ +@@ -4446,21 +5015,21 @@ esac *) target_noncanonical=${target_alias} ;; esac @@ -93716,7 +104144,7 @@ Index: binutils-2.17/opcodes/configure if test $install_libbfd_p = yes; then -@@ -4499,8 +5068,8 @@ +@@ -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 @@ -93727,7 +104155,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4513,32 +5082,34 @@ +@@ -4513,32 +5082,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -93769,7 +104197,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4551,36 +5122,51 @@ +@@ -4551,36 +5122,51 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -93831,7 +104259,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4593,74 +5179,34 @@ +@@ -4593,74 +5179,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -93915,7 +104343,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4674,7 +5220,7 @@ +@@ -4674,7 +5220,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -93924,7 +104352,7 @@ Index: binutils-2.17/opcodes/configure if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue -@@ -4685,6 +5231,7 @@ +@@ -4685,6 +5231,7 @@ do fi done done @@ -93932,7 +104360,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -4702,22 +5249,23 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -93963,7 +104391,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4730,36 +5278,38 @@ +@@ -4730,36 +5278,38 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -94010,7 +104438,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4772,29 +5322,45 @@ +@@ -4772,29 +5322,45 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -94062,7 +104490,7 @@ Index: binutils-2.17/opcodes/configure fi fi -@@ -4807,27 +5373,41 @@ +@@ -4807,27 +5373,41 @@ See \`config.log' for more details." >&2 { (exit 1); exit 1; }; } # Provide some information about the compiler. @@ -94114,7 +104542,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -4850,50 +5430,49 @@ +@@ -4850,50 +5430,49 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -94188,7 +104616,7 @@ Index: binutils-2.17/opcodes/configure /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext -@@ -4909,59 +5488,139 @@ +@@ -4909,59 +5488,139 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -94364,7 +104792,7 @@ Index: binutils-2.17/opcodes/configure ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -4995,12 +5654,17 @@ +@@ -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 @@ -94384,7 +104812,7 @@ Index: binutils-2.17/opcodes/configure int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; -@@ -5015,205 +5679,57 @@ +@@ -5015,205 +5679,57 @@ return f (e, argv, 0) != argv[0] || f return 0; } _ACEOF @@ -94620,7 +105048,7 @@ Index: binutils-2.17/opcodes/configure ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -@@ -5225,8 +5741,8 @@ +@@ -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 @@ -94631,7 +105059,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5239,32 +5755,34 @@ +@@ -5239,32 +5755,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -94673,7 +105101,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5277,27 +5795,41 @@ +@@ -5277,27 +5795,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -94722,7 +105150,7 @@ Index: binutils-2.17/opcodes/configure else RANLIB="$ac_cv_prog_RANLIB" fi -@@ -5307,8 +5839,8 @@ +@@ -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 @@ -94733,7 +105161,7 @@ Index: binutils-2.17/opcodes/configure # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= -@@ -5342,24 +5874,22 @@ +@@ -5342,24 +5874,22 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF @@ -94769,7 +105197,7 @@ Index: binutils-2.17/opcodes/configure : else echo "$as_me: failed program was:" >&5 -@@ -5368,9 +5898,10 @@ +@@ -5368,9 +5898,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi @@ -94781,7 +105209,7 @@ Index: binutils-2.17/opcodes/configure # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -5380,24 +5911,22 @@ +@@ -5380,24 +5911,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF @@ -94817,7 +105245,7 @@ Index: binutils-2.17/opcodes/configure # Broken: success on invalid input. continue else -@@ -5408,6 +5937,7 @@ +@@ -5408,6 +5937,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi @@ -94825,7 +105253,7 @@ Index: binutils-2.17/opcodes/configure rm -f conftest.err conftest.$ac_ext done -@@ -5425,8 +5955,8 @@ +@@ -5425,8 +5955,8 @@ fi else ac_cv_prog_CPP=$CPP fi @@ -94836,7 +105264,7 @@ Index: binutils-2.17/opcodes/configure ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do -@@ -5449,24 +5979,22 @@ +@@ -5449,24 +5979,22 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF @@ -94872,7 +105300,7 @@ Index: binutils-2.17/opcodes/configure : else echo "$as_me: failed program was:" >&5 -@@ -5475,9 +6003,10 @@ +@@ -5475,9 +6003,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi @@ -94884,7 +105312,7 @@ Index: binutils-2.17/opcodes/configure # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ -@@ -5487,24 +6016,22 @@ +@@ -5487,24 +6016,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF @@ -94920,7 +105348,7 @@ Index: binutils-2.17/opcodes/configure # Broken: success on invalid input. continue else -@@ -5515,6 +6042,7 @@ +@@ -5515,6 +6042,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi @@ -94928,7 +105356,7 @@ Index: binutils-2.17/opcodes/configure rm -f conftest.err conftest.$ac_ext done -@@ -5537,79 +6065,222 @@ +@@ -5537,79 +6065,222 @@ ac_link='$CC -o conftest$ac_exeext $CFLA ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -95213,7 +105641,7 @@ Index: binutils-2.17/opcodes/configure /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext -@@ -5661,6 +6332,7 @@ +@@ -5661,6 +6332,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ctype.h> @@ -95221,7 +105649,7 @@ Index: binutils-2.17/opcodes/configure #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -@@ -5680,18 +6352,27 @@ +@@ -5680,18 +6352,27 @@ main () for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) @@ -95255,7 +105683,7 @@ Index: binutils-2.17/opcodes/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -5704,12 +6385,14 @@ +@@ -5704,12 +6385,14 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi @@ -95273,7 +105701,7 @@ Index: binutils-2.17/opcodes/configure if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF -@@ -5718,8 +6401,8 @@ +@@ -5718,8 +6401,8 @@ _ACEOF fi @@ -95284,7 +105712,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5737,10 +6420,10 @@ +@@ -5737,10 +6420,10 @@ main () #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; @@ -95298,7 +105726,7 @@ Index: binutils-2.17/opcodes/configure /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; -@@ -5749,16 +6432,17 @@ +@@ -5749,16 +6432,17 @@ main () an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; @@ -95320,7 +105748,7 @@ Index: binutils-2.17/opcodes/configure } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; -@@ -5777,7 +6461,9 @@ +@@ -5777,7 +6461,9 @@ main () } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; @@ -95330,7 +105758,7 @@ Index: binutils-2.17/opcodes/configure #endif ; -@@ -5785,38 +6471,34 @@ +@@ -5785,38 +6471,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -95385,7 +105813,7 @@ Index: binutils-2.17/opcodes/configure if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF -@@ -5825,8 +6507,8 @@ +@@ -5825,8 +6507,8 @@ _ACEOF fi @@ -95396,7 +105824,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5846,39 +6528,37 @@ +@@ -5846,39 +6528,37 @@ $ac_kw foo_t foo () {return 0; } _ACEOF rm -f conftest.$ac_objext @@ -95454,7 +105882,7 @@ Index: binutils-2.17/opcodes/configure case $ac_cv_c_inline in -@@ -5910,9 +6590,9 @@ +@@ -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` @@ -95467,7 +105895,7 @@ Index: binutils-2.17/opcodes/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -5926,38 +6606,35 @@ +@@ -5926,38 +6606,35 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -95523,7 +105951,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -5968,8 +6645,8 @@ fi done @@ -95534,7 +105962,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_type_off_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -5980,62 +6657,59 @@ +@@ -5980,62 +6657,59 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -95619,7 +106047,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6046,64 +6720,61 @@ +@@ -6046,64 +6720,61 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @@ -95706,7 +106134,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_working_alloca_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6118,44 +6789,42 @@ +@@ -6118,44 +6789,42 @@ int main () { char *p = (char *) alloca (2 * sizeof (int)); @@ -95769,7 +106197,7 @@ Index: binutils-2.17/opcodes/configure if test $ac_cv_working_alloca_h = yes; then cat >>confdefs.h <<\_ACEOF -@@ -6164,8 +6833,8 @@ +@@ -6164,8 +6833,8 @@ _ACEOF fi @@ -95780,7 +106208,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_func_alloca_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6182,7 +6851,7 @@ +@@ -6182,7 +6851,7 @@ cat >>conftest.$ac_ext <<_ACEOF # include <malloc.h> # define alloca _alloca # else @@ -95789,7 +106217,7 @@ Index: binutils-2.17/opcodes/configure # include <alloca.h> # else # ifdef _AIX -@@ -6200,44 +6869,42 @@ +@@ -6200,44 +6869,42 @@ int main () { char *p = (char *) alloca (1); @@ -95852,7 +106280,7 @@ Index: binutils-2.17/opcodes/configure if test $ac_cv_func_alloca_works = yes; then -@@ -6251,15 +6918,15 @@ +@@ -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. @@ -95871,7 +106299,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_os_cray+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6269,7 +6936,7 @@ +@@ -6269,7 +6936,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -95880,7 +106308,7 @@ Index: binutils-2.17/opcodes/configure webecray #else wenotbecray -@@ -6285,14 +6952,14 @@ +@@ -6285,14 +6952,14 @@ fi rm -f conftest* fi @@ -95900,7 +106328,7 @@ Index: binutils-2.17/opcodes/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -6318,68 +6985,60 @@ +@@ -6318,68 +6985,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -95992,7 +106420,7 @@ Index: binutils-2.17/opcodes/configure if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF -@@ -6392,8 +7051,8 @@ +@@ -6392,8 +7051,8 @@ fi done fi @@ -96003,7 +106431,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_c_stack_direction+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6406,6 +7065,7 @@ +@@ -6406,6 +7065,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -96011,7 +106439,7 @@ Index: binutils-2.17/opcodes/configure int find_stack_direction () { -@@ -6423,17 +7083,26 @@ +@@ -6423,17 +7083,26 @@ find_stack_direction () int main () { @@ -96043,7 +106471,7 @@ Index: binutils-2.17/opcodes/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -6446,11 +7115,13 @@ +@@ -6446,11 +7115,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_stack_direction=-1 fi @@ -96060,7 +106488,7 @@ Index: binutils-2.17/opcodes/configure cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction -@@ -6464,18 +7135,19 @@ +@@ -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` @@ -96088,7 +106516,7 @@ Index: binutils-2.17/opcodes/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -6486,41 +7158,37 @@ +@@ -6486,41 +7158,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -96148,7 +106576,7 @@ Index: binutils-2.17/opcodes/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -6529,24 +7197,22 @@ +@@ -6529,24 +7197,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF @@ -96184,7 +106612,7 @@ Index: binutils-2.17/opcodes/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -6554,9 +7220,10 @@ +@@ -6554,9 +7220,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -96197,7 +106625,7 @@ Index: binutils-2.17/opcodes/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -6580,25 +7247,19 @@ +@@ -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;} @@ -96230,7 +106658,7 @@ Index: binutils-2.17/opcodes/configure fi if test `eval echo '${'$as_ac_Header'}'` = yes; then -@@ -6614,9 +7275,9 @@ +@@ -6614,9 +7275,9 @@ done for ac_func in getpagesize do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -96243,7 +106671,7 @@ Index: binutils-2.17/opcodes/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -6642,68 +7303,60 @@ +@@ -6642,68 +7303,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -96335,7 +106763,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -6712,8 +7365,8 @@ _ACEOF fi done @@ -96346,7 +106774,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -6755,21 +7408,21 @@ +@@ -6755,21 +7408,21 @@ $ac_includes_default #include <fcntl.h> #include <sys/mman.h> @@ -96372,7 +106800,7 @@ Index: binutils-2.17/opcodes/configure # include <sys/param.h> # ifdef EXEC_PAGESIZE # define getpagesize() EXEC_PAGESIZE -@@ -6808,15 +7461,15 @@ +@@ -6808,15 +7461,15 @@ main () /* First, make a file with some known garbage in it. */ data = (char *) malloc (pagesize); if (!data) @@ -96391,7 +106819,7 @@ Index: binutils-2.17/opcodes/configure close (fd); /* Next, try to mmap the file at a fixed address which already has -@@ -6824,17 +7477,17 @@ +@@ -6824,17 +7477,17 @@ main () we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) @@ -96414,7 +106842,7 @@ Index: binutils-2.17/opcodes/configure /* 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 @@ +@@ -6843,24 +7496,33 @@ main () *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) @@ -96456,7 +106884,7 @@ Index: binutils-2.17/opcodes/configure ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then -@@ -6873,11 +7535,13 @@ +@@ -6873,11 +7535,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_func_mmap_fixed_mapped=no fi @@ -96473,7 +106901,7 @@ Index: binutils-2.17/opcodes/configure if test $ac_cv_func_mmap_fixed_mapped = yes; then cat >>confdefs.h <<\_ACEOF -@@ -6901,18 +7565,19 @@ +@@ -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` @@ -96501,7 +106929,7 @@ Index: binutils-2.17/opcodes/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -6923,41 +7588,37 @@ +@@ -6923,41 +7588,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -96561,7 +106989,7 @@ Index: binutils-2.17/opcodes/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -6966,24 +7627,22 @@ +@@ -6966,24 +7627,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF @@ -96597,7 +107025,7 @@ Index: binutils-2.17/opcodes/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -6991,9 +7650,10 @@ +@@ -6991,9 +7650,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -96610,7 +107038,7 @@ Index: binutils-2.17/opcodes/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -7017,25 +7677,19 @@ +@@ -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;} @@ -96643,7 +107071,7 @@ Index: binutils-2.17/opcodes/configure fi if test `eval echo '${'$as_ac_Header'}'` = yes; then -@@ -7061,9 +7715,9 @@ +@@ -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` @@ -96656,7 +107084,7 @@ Index: binutils-2.17/opcodes/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -7089,68 +7743,60 @@ +@@ -7089,68 +7743,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -96748,7 +107176,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -7165,9 +7811,9 @@ done for ac_func in stpcpy do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -96761,7 +107189,7 @@ Index: binutils-2.17/opcodes/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -7193,68 +7839,60 @@ +@@ -7193,68 +7839,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -96853,7 +107281,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -7273,8 +7911,8 @@ _ACEOF fi if test $ac_cv_header_locale_h = yes; then @@ -96864,7 +107292,7 @@ Index: binutils-2.17/opcodes/configure if test "${am_cv_val_LC_MESSAGES+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7294,39 +7932,36 @@ +@@ -7294,39 +7932,36 @@ return LC_MESSAGES } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -96921,7 +107349,7 @@ Index: binutils-2.17/opcodes/configure if test $am_cv_val_LC_MESSAGES = yes; then cat >>confdefs.h <<\_ACEOF -@@ -7335,34 +7970,34 @@ +@@ -7335,34 +7970,34 @@ _ACEOF fi fi @@ -96972,7 +107400,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -7371,17 +8006,17 @@ echo "${ECHO_T}$nls_cv_force_use_gnu_get CATOBJEXT= if test "${ac_cv_header_libintl_h+set}" = set; then @@ -96996,7 +107424,7 @@ Index: binutils-2.17/opcodes/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -7392,41 +8027,37 @@ +@@ -7392,41 +8027,37 @@ $ac_includes_default #include <libintl.h> _ACEOF rm -f conftest.$ac_objext @@ -97056,7 +107484,7 @@ Index: binutils-2.17/opcodes/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -7435,24 +8066,22 @@ +@@ -7435,24 +8066,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <libintl.h> _ACEOF @@ -97092,7 +107520,7 @@ Index: binutils-2.17/opcodes/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -7460,9 +8089,10 @@ +@@ -7460,9 +8089,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -97105,7 +107533,7 @@ Index: binutils-2.17/opcodes/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -7486,30 +8116,23 @@ +@@ -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;} @@ -97143,7 +107571,7 @@ Index: binutils-2.17/opcodes/configure if test "${gt_cv_func_gettext_libc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7529,43 +8152,40 @@ +@@ -7529,43 +8152,40 @@ return (int) gettext ("") } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -97206,7 +107634,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7578,59 +8198,56 @@ +@@ -7578,59 +8198,56 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @@ -97289,7 +107717,7 @@ Index: binutils-2.17/opcodes/configure if test "${gt_cv_func_gettext_libintl+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7650,39 +8267,36 @@ +@@ -7650,39 +8267,36 @@ return (int) gettext ("") } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -97346,7 +107774,7 @@ Index: binutils-2.17/opcodes/configure fi fi -@@ -7696,8 +8310,8 @@ +@@ -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 @@ -97357,7 +107785,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7723,20 +8337,20 @@ +@@ -7723,20 +8337,20 @@ esac fi MSGFMT="$ac_cv_path_MSGFMT" if test -n "$MSGFMT"; then @@ -97385,7 +107813,7 @@ Index: binutils-2.17/opcodes/configure echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -@@ -7762,68 +8376,60 @@ +@@ -7762,68 +8376,60 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func @@ -97477,7 +107905,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -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 @@ -97488,7 +107916,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7850,32 +8456,33 @@ +@@ -7850,32 +8456,33 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -97530,7 +107958,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -7901,11 +8508,11 @@ +@@ -7901,11 +8508,11 @@ esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test -n "$XGETTEXT"; then @@ -97546,7 +107974,7 @@ Index: binutils-2.17/opcodes/configure fi cat >conftest.$ac_ext <<_ACEOF -@@ -7925,37 +8532,34 @@ +@@ -7925,37 +8532,34 @@ extern int _nl_msg_cat_cntr; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext @@ -97599,7 +108027,7 @@ Index: binutils-2.17/opcodes/configure conftest$ac_exeext conftest.$ac_ext INSTOBJEXT=.mo fi -@@ -7977,8 +8581,8 @@ +@@ -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 @@ -97610,7 +108038,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8004,17 +8608,17 @@ +@@ -8004,17 +8608,17 @@ esac fi MSGFMT="$ac_cv_path_MSGFMT" if test -n "$MSGFMT"; then @@ -97634,7 +108062,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8029,32 +8633,33 @@ +@@ -8029,32 +8633,33 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do @@ -97676,7 +108104,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8080,11 +8685,11 @@ +@@ -8080,11 +8685,11 @@ esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test -n "$XGETTEXT"; then @@ -97692,7 +108120,7 @@ Index: binutils-2.17/opcodes/configure fi -@@ -8103,8 +8708,8 @@ +@@ -8103,8 +8708,8 @@ fi if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else @@ -97703,7 +108131,7 @@ Index: binutils-2.17/opcodes/configure XGETTEXT=":" fi fi -@@ -8153,8 +8758,8 @@ +@@ -8153,8 +8758,8 @@ _ACEOF if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else @@ -97714,7 +108142,7 @@ Index: binutils-2.17/opcodes/configure NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in -@@ -8162,8 +8767,8 @@ +@@ -8162,8 +8767,8 @@ echo $ECHO_N "checking for catalogs to b esac done LINGUAS=$NEW_LINGUAS @@ -97725,7 +108153,7 @@ Index: binutils-2.17/opcodes/configure fi if test -n "$LINGUAS"; then -@@ -8182,17 +8787,17 @@ +@@ -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 @@ -97749,7 +108177,7 @@ Index: binutils-2.17/opcodes/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8203,41 +8808,37 @@ +@@ -8203,41 +8808,37 @@ $ac_includes_default #include <linux/version.h> _ACEOF rm -f conftest.$ac_objext @@ -97809,7 +108237,7 @@ Index: binutils-2.17/opcodes/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8246,24 +8847,22 @@ +@@ -8246,24 +8847,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <linux/version.h> _ACEOF @@ -97845,7 +108273,7 @@ Index: binutils-2.17/opcodes/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -8271,9 +8870,10 @@ +@@ -8271,9 +8870,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -97858,7 +108286,7 @@ Index: binutils-2.17/opcodes/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -8297,25 +8897,18 @@ +@@ -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;} @@ -97889,7 +108317,7 @@ Index: binutils-2.17/opcodes/configure fi if test $ac_cv_header_linux_version_h = yes; then -@@ -8380,8 +8973,8 @@ +@@ -8380,8 +8973,8 @@ fi if test "x$cross_compiling" = "xno"; then EXEEXT_FOR_BUILD='$(EXEEXT)' else @@ -97900,7 +108328,7 @@ Index: binutils-2.17/opcodes/configure if test "${bfd_cv_build_exeext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8398,8 +8991,8 @@ +@@ -8398,8 +8991,8 @@ else rm -f conftest* test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no fi @@ -97911,7 +108339,7 @@ Index: binutils-2.17/opcodes/configure EXEEXT_FOR_BUILD="" test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext} fi -@@ -8419,8 +9012,8 @@ +@@ -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. @@ -97922,7 +108350,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -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 @@ -97931,7 +108359,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -8461,21 +9054,22 @@ case $as_dir/ in ;; esac done @@ -97959,7 +108387,7 @@ Index: binutils-2.17/opcodes/configure # 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 @@ +@@ -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` @@ -97987,7 +108415,7 @@ Index: binutils-2.17/opcodes/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8514,41 +9109,37 @@ +@@ -8514,41 +9109,37 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -98047,7 +108475,7 @@ Index: binutils-2.17/opcodes/configure cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF -@@ -8557,24 +9148,22 @@ +@@ -8557,24 +9148,22 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF @@ -98083,7 +108511,7 @@ Index: binutils-2.17/opcodes/configure ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 -@@ -8582,9 +9171,10 @@ +@@ -8582,9 +9171,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi @@ -98096,7 +108524,7 @@ Index: binutils-2.17/opcodes/configure # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -@@ -8608,25 +9198,19 @@ +@@ -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;} @@ -98129,7 +108557,7 @@ Index: binutils-2.17/opcodes/configure fi if test `eval echo '${'$as_ac_Header'}'` = yes; then -@@ -8639,8 +9223,8 @@ +@@ -8639,8 +9223,8 @@ fi done @@ -98140,7 +108568,7 @@ Index: binutils-2.17/opcodes/configure if test "${ac_cv_have_decl_basename+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else -@@ -8655,7 +9239,7 @@ +@@ -8655,7 +9239,7 @@ int main () { #ifndef basename @@ -98149,7 +108577,7 @@ Index: binutils-2.17/opcodes/configure #endif ; -@@ -8663,38 +9247,34 @@ +@@ -8663,38 +9247,34 @@ main () } _ACEOF rm -f conftest.$ac_objext @@ -98204,7 +108632,7 @@ Index: binutils-2.17/opcodes/configure if test $ac_cv_have_decl_basename = yes; then cat >>confdefs.h <<_ACEOF -@@ -8715,10 +9295,9 @@ +@@ -8715,10 +9295,9 @@ fi cgen_maint=no cgendir='$(srcdir)/../cgen' @@ -98217,7 +108645,7 @@ Index: binutils-2.17/opcodes/configure yes) cgen_maint=yes ;; no) cgen_maint=no ;; *) -@@ -8729,7 +9308,8 @@ +@@ -8729,7 +9308,8 @@ if test "${enable_cgen_maint+set}" = set cgendir=${cgen_maint}/lib/cgen ;; esac @@ -98227,7 +108655,7 @@ Index: binutils-2.17/opcodes/configure if test x${cgen_maint} = xyes; then CGEN_MAINT_TRUE= -@@ -8805,6 +9385,7 @@ +@@ -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" ;; @@ -98235,7 +108663,7 @@ Index: binutils-2.17/opcodes/configure 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 @@ +@@ -8922,9 +9503,9 @@ fi @@ -98247,7 +108675,7 @@ Index: binutils-2.17/opcodes/configure cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure -@@ -8944,39 +9525,58 @@ +@@ -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. @@ -98322,7 +108750,7 @@ Index: binutils-2.17/opcodes/configure fi fi rm -f confcache -@@ -8985,32 +9585,18 @@ +@@ -8985,32 +9585,18 @@ test "x$prefix" = xNONE && prefix=$ac_de # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' @@ -98361,7 +108789,7 @@ Index: binutils-2.17/opcodes/configure done LIBOBJS=$ac_libobjs -@@ -9076,17 +9662,45 @@ +@@ -9076,17 +9662,45 @@ cat >>$CONFIG_STATUS <<\_ACEOF ## M4sh Initialization. ## ## --------------------- ## @@ -98411,7 +108839,7 @@ Index: binutils-2.17/opcodes/configure # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -@@ -9096,8 +9710,43 @@ +@@ -9096,8 +9710,43 @@ else fi @@ -98456,7 +108884,7 @@ Index: binutils-2.17/opcodes/configure PS1='$ ' PS2='> ' PS4='+ ' -@@ -9111,18 +9760,19 @@ +@@ -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 @@ -98479,7 +108907,7 @@ Index: binutils-2.17/opcodes/configure as_basename=basename else as_basename=false -@@ -9130,159 +9780,120 @@ +@@ -9130,159 +9780,120 @@ fi # Name of the executable. @@ -98710,7 +109138,7 @@ Index: binutils-2.17/opcodes/configure if mkdir -p . 2>/dev/null; then as_mkdir_p=: -@@ -9291,7 +9902,28 @@ +@@ -9291,7 +9902,28 @@ else as_mkdir_p=false fi @@ -98740,7 +109168,7 @@ Index: binutils-2.17/opcodes/configure # 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 @@ +@@ -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'" @@ -98776,7 +109204,7 @@ Index: binutils-2.17/opcodes/configure CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS -@@ -9332,30 +9947,20 @@ +@@ -9332,30 +9947,20 @@ generated by GNU Autoconf 2.59. Invocat CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ @@ -98815,7 +109243,7 @@ Index: binutils-2.17/opcodes/configure ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. -@@ -9363,7 +9968,7 @@ +@@ -9363,7 +9968,7 @@ current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit @@ -98824,7 +109252,7 @@ Index: binutils-2.17/opcodes/configure -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 @@ +@@ -9382,19 +9987,21 @@ Configuration commands: $config_commands Report bugs to <bug-autoconf@gnu.org>." @@ -98852,7 +109280,7 @@ Index: binutils-2.17/opcodes/configure _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -@@ -9405,39 +10012,24 @@ +@@ -9405,39 +10012,24 @@ while test $# != 0 do case $1 in --*=*) @@ -98898,7 +109326,7 @@ Index: binutils-2.17/opcodes/configure debug=: ;; --file | --fil | --fi | --f ) $ac_shift -@@ -9447,18 +10039,24 @@ +@@ -9447,18 +10039,24 @@ Try \`$0 --help' for more information." $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; @@ -98928,7 +109356,7 @@ Index: binutils-2.17/opcodes/configure esac shift -@@ -9474,40 +10072,52 @@ +@@ -9474,40 +10072,52 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then @@ -98994,7 +109422,7 @@ Index: binutils-2.17/opcodes/configure # 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 @@ +@@ -9519,635 +10129,623 @@ if $ac_need_defaults; then fi # Have a temporary directory for convenience. Make it in the build tree @@ -100164,7 +110592,7 @@ Index: binutils-2.17/opcodes/configure # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do -@@ -10158,135 +10756,39 @@ +@@ -10158,135 +10756,39 @@ for _am_header in $config_headers :; do _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done @@ -100326,7 +110754,7 @@ Index: binutils-2.17/opcodes/configure # 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 @@ +@@ -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 @@ -100364,7 +110792,7 @@ Index: binutils-2.17/opcodes/configure else continue fi -@@ -10329,54 +10842,80 @@ +@@ -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 @@ -100475,11 +110903,10 @@ Index: binutils-2.17/opcodes/configure { (exit 0); exit 0; } _ACEOF -Index: binutils-2.17/opcodes/configure.in -=================================================================== ---- binutils-2.17.orig/opcodes/configure.in 2007-06-28 09:19:34.730956544 +0200 -+++ binutils-2.17/opcodes/configure.in 2007-06-28 09:19:36.691658472 +0200 -@@ -157,6 +157,7 @@ +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" ;; @@ -100487,10 +110914,9 @@ Index: binutils-2.17/opcodes/configure.in 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" ;; -Index: binutils-2.17/opcodes/disassemble.c -=================================================================== ---- binutils-2.17.orig/opcodes/disassemble.c 2007-06-28 09:19:34.735955784 +0200 -+++ binutils-2.17/opcodes/disassemble.c 2007-06-28 09:19:36.691658472 +0200 +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 @@ -100499,7 +110925,7 @@ Index: binutils-2.17/opcodes/disassemble.c #define ARCH_bfin #define ARCH_cris #define ARCH_crx -@@ -121,6 +122,11 @@ +@@ -121,6 +122,11 @@ disassembler (abfd) disassemble = print_insn_avr; break; #endif @@ -100511,7 +110937,7 @@ Index: binutils-2.17/opcodes/disassemble.c #ifdef ARCH_bfin case bfd_arch_bfin: disassemble = print_insn_bfin; -@@ -433,6 +439,9 @@ +@@ -433,6 +439,9 @@ disassembler_usage (stream) #ifdef ARCH_powerpc print_ppc_disassembler_options (stream); #endif @@ -100521,11 +110947,10 @@ Index: binutils-2.17/opcodes/disassemble.c return; } -Index: binutils-2.17/opcodes/Makefile.am -=================================================================== ---- binutils-2.17.orig/opcodes/Makefile.am 2007-06-28 09:19:34.741954872 +0200 -+++ binutils-2.17/opcodes/Makefile.am 2007-06-28 09:19:36.692658320 +0200 -@@ -29,6 +29,7 @@ +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 \ @@ -100533,7 +110958,7 @@ Index: binutils-2.17/opcodes/Makefile.am fr30-desc.h fr30-opc.h \ frv-desc.h frv-opc.h \ h8500-opc.h \ -@@ -58,6 +59,9 @@ +@@ -58,6 +59,9 @@ CFILES = \ arc-ext.c \ arm-dis.c \ avr-dis.c \ @@ -100543,7 +110968,7 @@ Index: binutils-2.17/opcodes/Makefile.am bfin-dis.c \ cgen-asm.c \ cgen-bitset.c \ -@@ -200,6 +204,9 @@ +@@ -200,6 +204,9 @@ ALL_MACHINES = \ arc-ext.lo \ arm-dis.lo \ avr-dis.lo \ @@ -100553,7 +110978,7 @@ Index: binutils-2.17/opcodes/Makefile.am bfin-dis.lo \ cgen-asm.lo \ cgen-bitset.lo \ -@@ -624,6 +631,15 @@ +@@ -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 @@ -100569,10 +110994,9 @@ Index: binutils-2.17/opcodes/Makefile.am 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 \ -Index: binutils-2.17/opcodes/Makefile.in -=================================================================== ---- binutils-2.17.orig/opcodes/Makefile.in 2007-06-28 09:19:34.747953960 +0200 -+++ binutils-2.17/opcodes/Makefile.in 2007-06-28 09:19:36.693658168 +0200 +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. @@ -100588,7 +111012,7 @@ Index: binutils-2.17/opcodes/Makefile.in srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ -@@ -132,6 +130,7 @@ +@@ -132,6 +130,7 @@ EXEEXT = @EXEEXT@ EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ @@ -100596,7 +111020,7 @@ Index: binutils-2.17/opcodes/Makefile.in GT_NO = @GT_NO@ GT_YES = @GT_YES@ HDEFINES = @HDEFINES@ -@@ -180,10 +179,7 @@ +@@ -180,10 +179,7 @@ WARN_CFLAGS = @WARN_CFLAGS@ WIN32LDFLAGS = @WIN32LDFLAGS@ WIN32LIBADD = @WIN32LIBADD@ XGETTEXT = @XGETTEXT@ @@ -100607,7 +111031,7 @@ Index: binutils-2.17/opcodes/Makefile.in am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__include = @am__include@ -@@ -202,6 +198,9 @@ +@@ -202,6 +198,9 @@ build_os = @build_os@ build_vendor = @build_vendor@ cgendir = @cgendir@ datadir = @datadir@ @@ -100617,7 +111041,7 @@ Index: binutils-2.17/opcodes/Makefile.in exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ -@@ -209,18 +208,22 @@ +@@ -209,18 +208,22 @@ host_cpu = @host_cpu@ host_noncanonical = @host_noncanonical@ host_os = @host_os@ host_vendor = @host_vendor@ @@ -100640,7 +111064,7 @@ Index: binutils-2.17/opcodes/Makefile.in sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ -@@ -247,6 +250,7 @@ +@@ -247,6 +250,7 @@ LIBIBERTY = ../libiberty/libiberty.a # Header files. HFILES = \ cgen-ops.h cgen-types.h \ @@ -100648,7 +111072,7 @@ Index: binutils-2.17/opcodes/Makefile.in fr30-desc.h fr30-opc.h \ frv-desc.h frv-opc.h \ h8500-opc.h \ -@@ -277,6 +281,9 @@ +@@ -277,6 +281,9 @@ CFILES = \ arc-ext.c \ arm-dis.c \ avr-dis.c \ @@ -100658,7 +111082,7 @@ Index: binutils-2.17/opcodes/Makefile.in bfin-dis.c \ cgen-asm.c \ cgen-bitset.c \ -@@ -419,6 +426,9 @@ +@@ -419,6 +426,9 @@ ALL_MACHINES = \ arc-ext.lo \ arm-dis.lo \ avr-dis.lo \ @@ -100668,7 +111092,7 @@ Index: binutils-2.17/opcodes/Makefile.in bfin-dis.lo \ cgen-asm.lo \ cgen-bitset.lo \ -@@ -1166,6 +1176,15 @@ +@@ -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 @@ -100684,24 +111108,14 @@ Index: binutils-2.17/opcodes/Makefile.in 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 \ -Index: binutils-2.17/config.sub -=================================================================== ---- binutils-2.17.orig/config.sub 2007-06-28 09:19:34.753953048 +0200 -+++ binutils-2.17/config.sub 2007-06-28 09:19:36.694658016 +0200 -@@ -241,6 +241,7 @@ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ -+ | avr32 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ -@@ -317,7 +318,7 @@ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ -- | avr-* \ -+ | avr-* | avr32-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | craynv-* | cydra-* \ +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 +@@ -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 --git a/toolchain/binutils/patches/2.17/501-avr32-fix-pool-alignment.patch b/toolchain/binutils/patches/2.17/501-avr32-fix-pool-alignment.patch new file mode 100644 index 0000000..bd519a1 --- /dev/null +++ b/toolchain/binutils/patches/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/patches/2.17/501-avr32-sreldyn-fix.patch b/toolchain/binutils/patches/2.17/501-avr32-sreldyn-fix.patch deleted file mode 100644 index 84e295b..0000000 --- a/toolchain/binutils/patches/2.17/501-avr32-sreldyn-fix.patch +++ /dev/null @@ -1,103 +0,0 @@ -Index: binutils-2.17/bfd/elf32-avr32.c -=================================================================== ---- binutils-2.17.orig/bfd/elf32-avr32.c 2007-06-28 09:19:36.580675344 +0200 -+++ binutils-2.17/bfd/elf32-avr32.c 2007-06-28 09:19:38.494384416 +0200 -@@ -298,7 +298,7 @@ - /* Shortcuts to get to dynamic linker sections. */ - asection *sgot; - asection *srelgot; -- asection *sreldyn; -+ /* asection *sreldyn; */ - asection *sstub; - - /* We use a variation of Pigeonhole Sort to sort the GOT. After the -@@ -506,14 +506,14 @@ - if (!avr32_elf_create_got_section (dynobj, info)) - return FALSE; - -- if (!htab->sreldyn) -+ /* if (!htab->sreldyn) - htab->sreldyn = create_dynamic_section(dynobj, ".rela.dyn", -- flags | SEC_READONLY, 2); -+ flags | SEC_READONLY, 2); */ - if (!htab->sstub) - htab->sstub = create_dynamic_section(dynobj, ".stub", - flags | SEC_READONLY | SEC_CODE, 2); - -- if (!htab->sreldyn || !htab->sstub) -+ if (/* !htab->sreldyn || */ !htab->sstub) - return FALSE; - - return TRUE; -@@ -669,12 +669,12 @@ - if ((info->shared || h != NULL) - && (sec->flags & SEC_ALLOC)) - { -- if (htab->sreldyn == NULL) -+ if (htab->srelgot == NULL) - { -- htab->sreldyn = create_dynamic_section(dynobj, ".rela.dyn", -+ htab->srelgot = create_dynamic_section(dynobj, ".rela.got", - bed->dynamic_sec_flags - | SEC_READONLY, 2); -- if (htab->sreldyn == NULL) -+ if (htab->srelgot == NULL) - return FALSE; - } - -@@ -1062,7 +1062,7 @@ - { - pr_debug("Allocating %d dynamic reloc against symbol %s...\n", - havr->possibly_dynamic_relocs, h->root.root.string); -- htab->sreldyn->size += (havr->possibly_dynamic_relocs -+ htab->srelgot->size += (havr->possibly_dynamic_relocs - * sizeof(Elf32_External_Rela)); - } - -@@ -1156,7 +1156,7 @@ - /* Allocate space for local sym dynamic relocs */ - BFD_ASSERT(htab->local_dynamic_relocs == 0 || info->shared); - if (htab->local_dynamic_relocs) -- htab->sreldyn->size += (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 -@@ -3191,7 +3191,6 @@ - struct got_entry **local_got_ents; - asection *sgot; - asection *srelgot; -- asection *sreldyn; - - pr_debug("(6) relocate section %s:<%s> (size 0x%lx)\n", - input_bfd->filename, input_section->name, input_section->size); -@@ -3207,7 +3206,6 @@ - local_got_ents = elf_local_got_ents(input_bfd); - sgot = htab->sgot; - srelgot = htab->srelgot; -- sreldyn = htab->sreldyn; - - relend = relocs + input_section->reloc_count; - for (rel = relocs; rel < relend; rel++) -@@ -3444,15 +3442,15 @@ - } - } - -- pr_debug("sreldyn reloc_count: %d, size %lu\n", -- sreldyn->reloc_count, sreldyn->size); -+ pr_debug("srelgot reloc_count: %d, size %lu\n", -+ srelgot->reloc_count, srelgot->size); - -- loc = sreldyn->contents; -- loc += sreldyn->reloc_count++ * sizeof(Elf32_External_Rela); -+ loc = srelgot->contents; -+ loc += srelgot->reloc_count++ * sizeof(Elf32_External_Rela); - bfd_elf32_swap_reloca_out(output_bfd, &outrel, loc); - -- BFD_ASSERT(sreldyn->reloc_count * sizeof(Elf32_External_Rela) -- <= sreldyn->size); -+ BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela) -+ <= srelgot->size); - - if (!relocate) - continue; diff --git a/toolchain/binutils/patches/2.17/502-avr32-bfd-dont-allow-direct-refs-to-bss.patch b/toolchain/binutils/patches/2.17/502-avr32-bfd-dont-allow-direct-refs-to-bss.patch deleted file mode 100644 index 847f269..0000000 --- a/toolchain/binutils/patches/2.17/502-avr32-bfd-dont-allow-direct-refs-to-bss.patch +++ /dev/null @@ -1,19 +0,0 @@ -Index: binutils-2.17/bfd/elf32-avr32.c -=================================================================== ---- binutils-2.17.orig/bfd/elf32-avr32.c 2007-06-28 09:19:38.494384416 +0200 -+++ binutils-2.17/bfd/elf32-avr32.c 2007-06-28 09:19:38.682355840 +0200 -@@ -2449,9 +2449,13 @@ - 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. */ -+ 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 - && !(sym_sec->flags & SEC_DATA) -+ && (sym_sec->flags & SEC_HAS_CONTENTS) - && next_state->direct) - { - next_state = &relax_state[next_state->direct]; diff --git a/toolchain/binutils/patches/2.17/503-avr32-fix-got-offset-init.patch b/toolchain/binutils/patches/2.17/503-avr32-fix-got-offset-init.patch deleted file mode 100644 index f35550d..0000000 --- a/toolchain/binutils/patches/2.17/503-avr32-fix-got-offset-init.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: binutils-2.17/bfd/elf32-avr32.c -=================================================================== ---- binutils-2.17.orig/bfd/elf32-avr32.c 2007-06-28 09:19:38.682355840 +0200 -+++ binutils-2.17/bfd/elf32-avr32.c 2007-06-28 09:19:38.869327416 +0200 -@@ -395,6 +395,8 @@ - /* 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; - } |