#!/bin/sh
# genscripts.sh - generate the ld-emulation-target specific files
-# Copyright 2007 Free Software Foundation, Inc.
+# Copyright 2007, 2008 Free Software Foundation, Inc.
#
# This file is part of the Gnu Linker.
#
# sun3.xc [used when the linker is invoked with "-z combreloc"]
# sun3.xsc [used when the linker is invoked with "--shared"]
# sun3.xdc [used when the linker is invoked with "-pie"]
+# sun3.xa [used when the linker is invoked with "--enable-auto-import"]
#
# It also produced the C source file:
#
*:: | ::*) LIB_PATH=${LIB_PATH}${LIB_PATH2} ;;
*) LIB_PATH=${LIB_PATH}:${LIB_PATH2} ;;
esac
+
+ # For multilib'ed targets, ensure both ${target_alias}/lib${LIBPATH_SUFFIX}
+ # and ${TOOL_LIB}/lib${LIBPATH_SUFFIX} are in the default search path, because
+ # 64bit libraries may be in both places, depending on cross-development
+ # setup method (e.g.: /usr/s390x-linux/lib64 vs /usr/s390-linux/lib64)
+ case "${LIBPATH_SUFFIX}:${tool_lib}" in
+ :*) ;;
+ *:*${LIBPATH_SUFFIX}) ;;
+ *)
+ paths="${exec_prefix}/${target_alias}/lib${LIBPATH_SUFFIX}"
+ if [ x"${TOOL_LIB}" != x ]; then
+ paths="${paths} ${exec_prefix}/${TOOL_LIB}/lib${LIBPATH_SUFFIX}"
+ fi
+ for path in $paths; do
+ case :${LIB_PATH}: in
+ ::: | *:${path}:*) ;;
+ *) LIB_PATH=${path}:${LIB_PATH} ;;
+ esac
+ done
+ ;;
+ esac
fi
# Always search $(tooldir)/lib, aka /usr/local/TARGET/lib, except for
LD_FLAG=n
DATA_ALIGNMENT=${DATA_ALIGNMENT_n}
-TEXT_START_ADDR=${NONPAGED_TEXT_START_ADDR-${TEXT_START_ADDR}}
( echo "/* Script for -n: mix text and data on same page */"
. ${CUSTOMIZER_SCRIPT} ${EMULATION_NAME}
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
LD_FLAG=shared
DATA_ALIGNMENT=${DATA_ALIGNMENT_s-${DATA_ALIGNMENT_}}
CREATE_SHLIB=" "
- # Note that TEXT_START_ADDR is set to NONPAGED_TEXT_START_ADDR.
(
echo "/* Script for ld --shared: link shared library */"
. ${CUSTOMIZER_SCRIPT} ${EMULATION_NAME}
LD_FLAG=pie
DATA_ALIGNMENT=${DATA_ALIGNMENT_s-${DATA_ALIGNMENT_}}
CREATE_PIE=" "
- # Note that TEXT_START_ADDR is set to NONPAGED_TEXT_START_ADDR.
(
echo "/* Script for ld -pie: link position independent executable */"
. ${CUSTOMIZER_SCRIPT} ${EMULATION_NAME}
unset CREATE_PIE
fi
+if test -n "$GENERATE_AUTO_IMPORT_SCRIPT"; then
+ LD_FLAG=auto_import
+ DATA_ALIGNMENT=${DATA_ALIGNMENT_}
+ (
+ echo "/* Script for ld --enable-auto-import: Like the default script except read only data is placed into .data */"
+ . ${CUSTOMIZER_SCRIPT} ${EMULATION_NAME}
+ . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
+ ) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xa
+fi
+
case " $EMULATION_LIBPATH " in
*" ${EMULATION_NAME} "*) COMPILE_IN=true;;
esac
+# PR ld/5652:
+# Determine if the shell has support for the variable BASH_LINENO.
+# When it is the case, it is only available inside functions.
+has_lineno()
+{
+ test "x$BASH_LINENO" != "x"
+}
+
+# Enable accruate error source in the compiler error messages, if possible.
+if has_lineno; then
+ . ${srcdir}/genscrba.sh
+else
+ source_em()
+ {
+ . $1
+ }
+ fragment()
+ {
+ cat >> e${EMULATION_NAME}.c
+ }
+fi
+
# Generate e${EMULATION_NAME}.c.
-. ${srcdir}/emultempl/${TEMPLATE_NAME-generic}.em
+# Start with an empty file, then the sourced .em script
+# can use the "fragment" function to append.
+> e${EMULATION_NAME}.c
+source_em ${srcdir}/emultempl/${TEMPLATE_NAME-generic}.em