AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
AC_DEFINE_UNQUOTED(PLUGIN_LD, "$PLUGIN_LD", [Specify plugin linker])
+# Check to see if we are using gold instead of ld
+AC_MSG_CHECKING(whether we are using gold)
+ld_is_gold=no
+if test x$gcc_cv_ld != x; then
+ if $gcc_cv_ld --version 2>/dev/null | sed 1q \
+ | grep "GNU gold" > /dev/null; then
+ ld_is_gold=yes
+ fi
+fi
+AC_MSG_RESULT($ld_is_gold)
+
ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
AC_SUBST(ORIGINAL_LD_FOR_TARGET)
case "$ORIGINAL_LD_FOR_TARGET" in
changequote(,)dnl
if test $in_tree_ld != yes ; then
ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
- if echo "$ld_ver" | grep GNU > /dev/null; then
+ if test x"$ld_is_gold" = xyes; then
+ gcc_cv_ld_hidden=yes
+ elif echo "$ld_ver" | grep GNU > /dev/null; then
ld_vers=`echo $ld_ver | sed -n \
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
+ else
+ case "${target}" in
+ *-*-solaris2*)
+ #
+ # Solaris 2 ld -V output looks like this for a regular version:
+ #
+ # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1699
+ #
+ # but test versions add stuff at the end:
+ #
+ # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10
+ #
+ ld_ver=`$gcc_cv_ld -V 2>&1`
+ if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
+ ld_vers=`echo $ld_ver | sed -n \
+ -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
+ ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
+ ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
+ fi
+ ;;
+ esac
fi
fi
changequote([,])dnl
[elf,2,16,0], [--fatal-warnings],
[.section .text,"axG",%progbits,.foo,comdat])
fi
-if test $in_tree_ld = yes ; then
+if test x"$ld_is_gold" = xyes; then
+ comdat_group=yes
+elif test $in_tree_ld = yes ; then
comdat_group=no
if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
&& test $in_tree_ld_is_elf = yes; then
comdat_group=yes
fi
-elif test x"$ld_vers" != x; then
+elif echo "$ld_ver" | grep GNU > /dev/null; then
comdat_group=yes
if test 0"$ld_date" -lt 20050308; then
if test -n "$ld_date"; then
fi
fi
else
- # assume linkers other than GNU ld don't support COMDAT group
- comdat_group=no
+changequote(,)dnl
+ case "${target}" in
+ *-*-solaris2.1[1-9]*)
+ # Sun ld has COMDAT group support since Solaris 9, but it doesn't
+ # interoperate with GNU as until Solaris 11 build 130, i.e. ld
+ # version 1.688.
+ #
+ # FIXME: Maybe need to refine later when COMDAT group support with
+ # Sun as is implemented.
+ if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 1688; then
+ comdat_group=yes
+ else
+ comdat_group=no
+ fi
+ ;;
+ *)
+ # Assume linkers other than GNU ld don't support COMDAT group.
+ comdat_group=no
+ ;;
+ esac
+changequote([,])dnl
fi
+# Allow overriding the automatic COMDAT group tests above.
+AC_ARG_ENABLE(comdat,
+ [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
+ [comdat_group="$enable_comdat"])
if test $comdat_group = no; then
gcc_cv_as_comdat_group=no
gcc_cv_as_comdat_group_percent=no
;;
i[34567]86-*-*)
case "$target" in
- i[34567]86-*-solaris2.[56789]*)
+ i[34567]86-*-solaris2.[89]*)
# TLS was introduced in the Solaris 9 4/04 release but
# we do not enable it by default on Solaris 9 either.
if test "x$enable_tls" = xyes ; then
;;
sparc*-*-*)
case "$target" in
- sparc*-sun-solaris2.[56789]*)
+ sparc*-sun-solaris2.[89]*)
# TLS was introduced in the Solaris 9 4/04 release but
# we do not enable it by default on Solaris 9 either.
if test "x$enable_tls" = xyes ; then
xor %g1, %gdop_lox10(foo), %g1
ld [[%l7 + %g1]], %g2, %gdop(foo)],
[if test x$gcc_cv_ld != x \
- && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
- && (test x$gnu_ld_flag = xno \
- || (test x$gcc_cv_objdump != x \
- && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
- | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1)); then
- gcc_cv_as_sparc_gotdata_op=yes
+ && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
+ if $gcc_cv_ld -v | grep GNU >/dev/null 2>&1; then
+ if test x$gcc_cv_objdump != x; then
+ if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
+ | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
+ gcc_cv_as_sparc_gotdata_op=no
+ else
+ gcc_cv_as_sparc_gotdata_op=yes
+ fi
+ fi
+ else
+ gcc_cv_as_sparc_gotdata_op=yes
+ fi
fi
rm -f conftest],
[AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
AC_MSG_CHECKING([for -rdynamic])
${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1
if $gcc_cv_objdump -T conftest | grep foobar > /dev/null; then
+ plugin_rdynamic=yes
pluginlibs="-rdynamic"
else
+ plugin_rdynamic=no
enable_plugin=no
fi
+ AC_MSG_RESULT([$plugin_rdynamic])
fi
# Check -ldl