2010-03-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+ * configure.ac (i[34567]86-*-*): Handle Solaris 2/x86 TLS support
+ and Sun as TLS syntax.
+ (TLS_SECTION_ASM_FLAG) [on_solaris && !gas_flag]: Define.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+ * varasm.c (TLS_SECTION_ASM_FLAG): Define default.
+ (default_elf_asm_named_section): Use it.
+ * config/i386/i386.c (output_pic_addr_const): Lowercase @DTPOFF.
+ (i386_output_dwarf_dtprel): Likewise.
+ (output_addr_const_extra): Likewise.
+ (output_pic_addr_const): Lowercase @GOTTPOFF.
+ (output_addr_const_extra): Likewise.
+ (output_pic_addr_const): Lowercase @GOTNTPOFF.
+ (output_addr_const_extra): Likewise.
+ (output_pic_addr_const): Lowercase @INDNTPOFF.
+ (output_addr_const_extra): Likewise.
+ (output_pic_addr_const): Lowercase @NTPOFF.
+ (output_addr_const_extra): Likewise.
+ (output_pic_addr_const): Lowercase @TPOFF.
+ (output_addr_const_extra): Likewise.
+ * config/i386/i386.md (*tls_global_dynamic_32_gnu): Lowercase
+ @TLSGD.
+ (*tls_global_dynamic_64): Likewise.
+ (*tls_local_dynamic_base_32_gnu): Lowercase @TLSLDM.
+ (*tls_local_dynamic_base_64): Lowercase @TLSLD.
+
+ * defaults.h (TLS_COMMON_ASM_OP): Provide default.
+ (ASM_OUTPUT_TLS_COMMON): Use it.
+ * config/i386/sol2-gas.h (TLS_COMMON_ASM_OP): Undef.
+
+ PR target/38118
+ * config.gcc (sparc*-*-solaris2*) [$gas=yes]: Add usegas.h to
+ tm_file.
+ * config/sparc/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Move ...
+ * config/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): ... here.
+ * config/i386/sol2-10.h (ASM_OUTPUT_ALIGNED_COMMON): Redefine.
+ * config/i386/sol2.h (TARGET_SUN_TLS): Redefine.
+ (ASM_DECLARE_OBJECT_NAME) [!USE_GAS]: Redefine.
+
+2010-03-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
* config/i386/i386.c (override_options): Don't accept
-mtls-dialect=sun any longer.
* config/i386/i386.h (TARGET_SUN_TLS): Define as 0.
#undef TARGET_SUN_TLS
#define TARGET_SUN_TLS 1
+/* Follow Sun requirements for TLS code sequences and use Sun assembler TLS
+ syntax. */
+#undef TARGET_SUN_TLS
+#define TARGET_SUN_TLS 1
+
+/* The Sun assembler uses .tcomm for TLS common sections. */
+#define TLS_COMMON_ASM_OP ".tcomm"
+
+/* Similar to the Sun assembler on SPARC, the native assembler requires
+ TLS objects to be declared as @tls_obj (not @tls_object). Unlike SPARC,
+ gas doesn't understand this variant. */
+#ifndef USE_GAS
+#undef ASM_DECLARE_OBJECT_NAME
+#define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \
+ do \
+ { \
+ HOST_WIDE_INT size; \
+ \
+ if (targetm.have_tls && DECL_THREAD_LOCAL_P (DECL)) \
+ ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "tls_obj"); \
+ else \
+ ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object"); \
+ \
+ size_directive_output = 0; \
+ if (!flag_inhibit_size_directive \
+ && (DECL) && DECL_SIZE (DECL)) \
+ { \
+ size_directive_output = 1; \
+ size = int_size_in_bytes (TREE_TYPE (DECL)); \
+ ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, size); \
+ } \
+ \
+ ASM_OUTPUT_LABEL (FILE, NAME); \
+ } \
+ while (0)
+#endif
+
/* The Solaris assembler cannot grok .stabd directives. */
#undef NO_DBX_BNSYM_ENSYM
#define NO_DBX_BNSYM_ENSYM 1
#define LINK_SPEC \
"%{h*} %{v:-V} \
%{b} \
- %{!shared:%{!static:%{rdynamic: " RDYNAMIC_SPEC "}}} \
%{static:-dn -Bstatic} \
%{shared:-G -dy %{!mimpure-text:-z text}} \
%{symbolic:-Bsymbolic -G -dy -z text} \
%(link_arch) \
%{Qy:} %{!Qn:-Qy}"
-/* With Sun ld, -rdynamic is a no-op. */
-#define RDYNAMIC_SPEC ""
-
/* The Solaris linker doesn't understand constructor priorities. (The
GNU linker does support constructor priorities, so GNU ld
configuration files for Solaris override this setting.) */
{ "init", 0, 0, true, false, false, NULL }, \
{ "fini", 0, 0, true, false, false, NULL }
-/* Solaris/x86 as and gas support the common ELF .section/.pushsection
- syntax. */
-#define PUSHSECTION_FORMAT "\t.pushsection\t%s\n"
-
/* This is how to declare the size of a function. For Solaris, we output
any .init or .fini entries here. */
#undef ASM_DECLARE_FUNCTION_SIZE
} \
while (0)
-#ifndef USE_GAS
-#undef TARGET_ASM_ASSEMBLE_VISIBILITY
-#define TARGET_ASM_ASSEMBLE_VISIBILITY solaris_assemble_visibility
-#endif
-
extern GTY(()) tree solaris_pending_aligns;
extern GTY(()) tree solaris_pending_inits;
extern GTY(()) tree solaris_pending_finis;
slibdir
dollar
gcc_tooldir
-LTO_USE_LIBELF
-LTO_BINARY_READER
enable_lto
MAINT
zlibinc
enable_sjlj_exceptions
with_system_libunwind
enable_secureplt
-enable_leading_mingw64_underscores
enable_cld
enable_win32_registry
enable_static
enable_fast_install
enable_libtool_lock
with_plugin_ld
-enable_comdat
enable_gnu_unique_object
enable_linker_build_id
with_long_double_128
--enable-sjlj-exceptions
arrange to use setjmp/longjmp exception handling
--enable-secureplt enable -msecure-plt by default for PowerPC
- --enable-leading-mingw64-underscores
- Enable leading underscores on 64 bit mingw targets
--enable-cld enable -mcld by default for 32bit x86
--disable-win32-registry
disable lookup of installation paths in the
--enable-fast-install[=PKGS]
optimize for fast installation [default=yes]
--disable-libtool-lock avoid locking (might break parallel builds)
- --enable-comdat enable COMDAT group support
--enable-gnu-unique-object enable the use of the @gnu_unique_object ELF extension on
glibc systems
--enable-linker-build-id
done
-save_CPPFLAGS="$CPPFLAGS"
-save_LIBS="$LIBS"
-LIBS="$LIBS $LIBELFLIBS"
-for ac_func in elf_getshdrstrndx
-do :
- ac_fn_c_check_func "$LINENO" "elf_getshdrstrndx" "ac_cv_func_elf_getshdrstrndx"
-if test "x$ac_cv_func_elf_getshdrstrndx" = x""yes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ELF_GETSHDRSTRNDX 1
-_ACEOF
-
-else
- for ac_func in elf_getshstrndx
-do :
- ac_fn_c_check_func "$LINENO" "elf_getshstrndx" "ac_cv_func_elf_getshstrndx"
-if test "x$ac_cv_func_elf_getshstrndx" = x""yes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ELF_GETSHSTRNDX 1
-_ACEOF
- if test "$cross_compiling" = yes; then :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot run test program while cross compiling
-See \`config.log' for more details." "$LINENO" 5; }
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <libelf.h>
-int main()
-{
- return elf_getshstrndx (NULL, 0) == 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-$as_echo "#define HAVE_ELF_GETSHSTRNDX_GABI 1" >>confdefs.h
-
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-done
-
-
-fi
-done
-
-LIBS="$save_LIBS"
-CPPFLAGS="$save_CPPFLAGS"
-
if test x$ac_cv_func_mbstowcs = xyes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbstowcs works" >&5
$as_echo_n "checking whether mbstowcs works... " >&6; }
fi
-# Check whether --enable-leading-mingw64-underscores was given.
-if test "${enable_leading_mingw64_underscores+set}" = set; then :
- enableval=$enable_leading_mingw64_underscores;
-fi
-
-if test x"$enable_leading_mingw64_underscores" = xyes ; then :
-
-$as_echo "#define USE_MINGW64_LEADING_UNDERSCORES 1" >>confdefs.h
-
-fi
-
# Check whether --enable-cld was given.
if test "${enable_cld+set}" = set; then :
enableval=$enable_cld;
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 17111 "configure"
+#line 17040 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 17217 "configure"
+#line 17146 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
_ACEOF
-# Check to see if we are using gold instead of ld
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using gold" >&5
-$as_echo_n "checking whether we are using gold... " >&6; }
-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
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_is_gold" >&5
-$as_echo "$ld_is_gold" >&6; }
-
ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
case "$ORIGINAL_LD_FOR_TARGET" in
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then
-
-# Solaris 9/x86 as incorrectly emits an alias for a hidden symbol with
-# STV_HIDDEN, so disable .hidden support if so.
-case "${target}" in
- i?86-*-solaris2*)
- if test x$gcc_cv_as != x && test x$gcc_cv_objdump != x; then
- cat > conftest.s <<EOF
-.globl hidden
- .hidden hidden
-hidden:
-.globl default
- .set default,hidden
-EOF
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
- && $gcc_cv_objdump -t conftest.o 2>/dev/null | \
- grep '\.hidden default' > /dev/null; then
- gcc_cv_as_hidden=no
- else
- gcc_cv_as_hidden=yes
- fi
- else
- # Assume bug is present if objdump is missing.
- gcc_cv_as_hidden=no
- fi
- ;;
- *)
- gcc_cv_as_hidden=yes
- ;;
-esac
+ gcc_cv_as_hidden=yes
else
echo "configure: failed program was" >&5
cat conftest.s >&5
if test $in_tree_ld != yes ; then
ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
- if test x"$ld_is_gold" = xyes; then
- gcc_cv_ld_hidden=yes
- elif echo "$ld_ver" | grep GNU > /dev/null; then
+ if 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
gcc_cv_ld_hidden=yes
;;
*-*-solaris2.9* | *-*-solaris2.1[0-9]*)
- # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
- # .symbolic was only added in Solaris 9 12/02.
gcc_cv_ld_hidden=yes
;;
*)
$as_echo "$gcc_cv_as_comdat_group_percent" >&6; }
fi
-if test x"$ld_is_gold" = xyes; then
- comdat_group=yes
-elif test $in_tree_ld = yes ; then
+if 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 echo "$ld_ver" | grep GNU > /dev/null; then
+elif test x"$ld_vers" != x; then
comdat_group=yes
if test 0"$ld_date" -lt 20050308; then
if test -n "$ld_date"; then
fi
fi
else
- 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
-fi
-# Allow overriding the automatic COMDAT group tests above.
-# Check whether --enable-comdat was given.
-if test "${enable_comdat+set}" = set; then :
- enableval=$enable_comdat; comdat_group="$enable_comdat"
+ # assume linkers other than GNU ld don't support COMDAT group
+ comdat_group=no
fi
-
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.[89]*)
+ i[34567]86-*-solaris2.[56789]*)
# 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.[89]*)
+ sparc*-sun-solaris2.[56789]*)
# 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
test $ac_status = 0; }; }
then
if test x$gcc_cv_ld != x \
- && $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
+ && $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
fi
rm -f conftest
else
$as_echo "#define HAVE_GAS_PE_SECREL32_RELOC 1" >>confdefs.h
fi
- # Test if the assembler supports the extended form of the .section
- # directive that specifies section alignment. LTO support uses this,
- # but normally only after installation, so we warn but don't fail the
- # configure if LTO is enabled but the assembler does not support it.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .section with alignment" >&5
-$as_echo_n "checking assembler for .section with alignment... " >&6; }
-if test "${gcc_cv_as_section_has_align+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- gcc_cv_as_section_has_align=no
- if test $in_tree_gas = yes; then
- if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 20 \) \* 1000 + 1`
- then gcc_cv_as_section_has_align=yes
-fi
- elif test x$gcc_cv_as != x; then
- echo '.section lto_test,"dr0"' > conftest.s
- if { ac_try='$gcc_cv_as $gcc_cv_as_flags -fatal-warnings -o conftest.o conftest.s >&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
- then
- gcc_cv_as_section_has_align=yes
- else
- echo "configure: failed program was" >&5
- cat conftest.s >&5
- fi
- rm -f conftest.o conftest.s
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_section_has_align" >&5
-$as_echo "$gcc_cv_as_section_has_align" >&6; }
-
- if test x$gcc_cv_as_section_has_align != xyes; then
- case ",$enable_languages," in
- *,lto,*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded." >&5
-$as_echo "$as_me: WARNING: LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded." >&2;}
- ;;
- esac
- fi
;;
esac
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .quad directive" >&5
-$as_echo_n "checking assembler for .quad directive... " >&6; }
-if test "${gcc_cv_as_ix86_quad+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- gcc_cv_as_ix86_quad=no
- if test x$gcc_cv_as != x; then
- echo '.quad 0' > conftest.s
- if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
- then
- gcc_cv_as_ix86_quad=yes
- else
- echo "configure: failed program was" >&5
- cat conftest.s >&5
- fi
- rm -f conftest.o conftest.s
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_ix86_quad" >&5
-$as_echo "$gcc_cv_as_ix86_quad" >&6; }
-if test $gcc_cv_as_ix86_quad = yes; then
-
-$as_echo "#define HAVE_AS_IX86_QUAD 1" >>confdefs.h
-
-fi
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for sahf mnemonic" >&5
$as_echo_n "checking assembler for sahf mnemonic... " >&6; }
if test "${gcc_cv_as_ix86_sahf+set}" = set; then :
else
gcc_cv_as_ix86_sahf=no
if test x$gcc_cv_as != x; then
- echo '.code64
- sahf' > conftest.s
+ echo 'sahf' > conftest.s
if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
fi
- # These two are used unconditionally by i386.[ch]; it is to be defined
+ # This one is used unconditionally by i386.[ch]; it is to be defined
# to 1 if the feature is present, 0 otherwise.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for GOTOFF in data" >&5
$as_echo_n "checking assembler for GOTOFF in data... " >&6; }
#define HAVE_AS_GOTOFF_IN_DATA `if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`
_ACEOF
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for rep and lock prefix" >&5
-$as_echo_n "checking assembler for rep and lock prefix... " >&6; }
-if test "${gcc_cv_as_ix86_rep_lock_prefix+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- gcc_cv_as_ix86_rep_lock_prefix=no
- if test x$gcc_cv_as != x; then
- echo 'rep movsl
- lock orl $0, (%esp)' > conftest.s
- if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
- then
- gcc_cv_as_ix86_rep_lock_prefix=yes
- else
- echo "configure: failed program was" >&5
- cat conftest.s >&5
- fi
- rm -f conftest.o conftest.s
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_ix86_rep_lock_prefix" >&5
-$as_echo "$gcc_cv_as_ix86_rep_lock_prefix" >&6; }
-
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_AS_IX86_REP_LOCK_PREFIX `if test $gcc_cv_as_ix86_rep_lock_prefix = yes; then echo 1; else echo 0; fi`
-_ACEOF
-
-
;;
ia64*-*-*)
if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
| grep "gc-sections option ignored" > /dev/null; then
gcc_cv_ld_eh_gc_sections=no
- elif $gcc_cv_objdump -h conftest 2> /dev/null \
- | grep gcc_except_table > /dev/null; then
+ elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
gcc_cv_ld_eh_gc_sections=yes
# If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
if test x$gcc_cv_as_comdat_group != xyes; then
if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
| grep "gc-sections option ignored" > /dev/null; then
gcc_cv_ld_eh_gc_sections=no
- elif $gcc_cv_objdump -h conftest 2> /dev/null \
- | grep gcc_except_table > /dev/null; then
+ elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
gcc_cv_ld_eh_gc_sections=yes
fi
fi
enable_lto=yes
- # LTO needs to speak the platform's object file format, and has a
- # number of implementations of the required binary file access APIs.
- # ELF is the most common, and default. We only link libelf if ELF
- # is indeed the selected format.
- LTO_BINARY_READER=${lto_binary_reader}
- LTO_USE_LIBELF=-lelf
- if test "x$lto_binary_reader" != "xlto-elf" ; then
- LTO_USE_LIBELF=
- fi
-
-
;;
*) ;;
esac
pluginlibs=
if test x"$enable_plugin" = x"yes"; then
- case "${host}" in
- *-*-darwin*)
- export_sym_check="$gcc_cv_nm -g"
- ;;
- *)
- export_sym_check="$gcc_cv_objdump -T"
- ;;
- esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exported symbols" >&5
$as_echo_n "checking for exported symbols... " >&6; }
echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1
- if $export_sym_check conftest | grep foobar > /dev/null; then
+ if $gcc_cv_objdump -T conftest | grep foobar > /dev/null; then
: # No need to use a flag
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -rdynamic" >&5
$as_echo_n "checking for -rdynamic... " >&6; }
${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1
- if $export_sym_check conftest | grep foobar > /dev/null; then
- plugin_rdynamic=yes
+ if $gcc_cv_objdump -T conftest | grep foobar > /dev/null; then
pluginlibs="-rdynamic"
else
- plugin_rdynamic=no
enable_plugin=no
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $plugin_rdynamic" >&5
-$as_echo "$plugin_rdynamic" >&6; }
fi
# Check -ldl
# Check that we can build shared objects with -fPIC -shared
saved_LDFLAGS="$LDFLAGS"
- case "${host}" in
- *-*-darwin*)
- LDFLAGS="$LDFLAGS -fPIC -shared -undefined dynamic_lookup"
- ;;
- *)
- LDFLAGS="$LDFLAGS -fPIC -shared"
- ;;
- esac
+ LDFLAGS="$LDFLAGS -fPIC -shared"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fPIC -shared" >&5
$as_echo_n "checking for -fPIC -shared... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
gettimeofday mbstowcs wcswidth mmap mincore setlocale \
gcc_UNLOCKED_FUNCS)
-save_CPPFLAGS="$CPPFLAGS"
-save_LIBS="$LIBS"
-LIBS="$LIBS $LIBELFLIBS"
-AC_CHECK_FUNCS(elf_getshdrstrndx,,
- [AC_CHECK_FUNCS(elf_getshstrndx,
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
-#include <libelf.h>
-int main()
-{
- return elf_getshstrndx (NULL, 0) == 0;
-}]])], AC_DEFINE(HAVE_ELF_GETSHSTRNDX_GABI, 1,
- [Define if elf_getshstrndx has gABI conformant return values.]))])]
- )
-LIBS="$save_LIBS"
-CPPFLAGS="$save_CPPFLAGS"
-
if test x$ac_cv_func_mbstowcs = xyes; then
AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
[ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
[ --enable-secureplt enable -msecure-plt by default for PowerPC],
[], [])
-AC_ARG_ENABLE(leading-mingw64-underscores,
- AS_HELP_STRING([--enable-leading-mingw64-underscores],
- [Enable leading underscores on 64 bit mingw targets]),
- [],[])
-AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
- [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
- [Define if we should use leading underscore on 64 bit mingw targets])])
-
AC_ARG_ENABLE(cld,
[ --enable-cld enable -mcld by default for 32bit x86], [],
[enable_cld=no])
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
gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
[elf,2,13,0],,
[ .hidden foobar
-foobar:],[
-# Solaris 9/x86 as incorrectly emits an alias for a hidden symbol with
-# STV_HIDDEN, so disable .hidden support if so.
-case "${target}" in
- i?86-*-solaris2*)
- if test x$gcc_cv_as != x && test x$gcc_cv_objdump != x; then
- cat > conftest.s <<EOF
-.globl hidden
- .hidden hidden
-hidden:
-.globl default
- .set default,hidden
-EOF
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
- && $gcc_cv_objdump -t conftest.o 2>/dev/null | \
- grep '\.hidden default' > /dev/null; then
- gcc_cv_as_hidden=no
- else
- gcc_cv_as_hidden=yes
- fi
- else
- # Assume bug is present if objdump is missing.
- gcc_cv_as_hidden=no
- fi
- ;;
- *)
- gcc_cv_as_hidden=yes
- ;;
-esac])
+foobar:])
changequote(,)dnl
if test $in_tree_ld != yes ; then
ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
- if test x"$ld_is_gold" = xyes; then
- gcc_cv_ld_hidden=yes
- elif echo "$ld_ver" | grep GNU > /dev/null; then
+ if 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
gcc_cv_ld_hidden=yes
;;
*-*-solaris2.9* | *-*-solaris2.1[0-9]*)
- # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
- # .symbolic was only added in Solaris 9 12/02.
gcc_cv_ld_hidden=yes
;;
*)
[elf,2,16,0], [--fatal-warnings],
[.section .text,"axG",%progbits,.foo,comdat])
fi
-if test x"$ld_is_gold" = xyes; then
- comdat_group=yes
-elif test $in_tree_ld = yes ; then
+if 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 echo "$ld_ver" | grep GNU > /dev/null; then
+elif test x"$ld_vers" != x; then
comdat_group=yes
if test 0"$ld_date" -lt 20050308; then
if test -n "$ld_date"; then
fi
fi
else
-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
+ # assume linkers other than GNU ld don't support COMDAT group
+ comdat_group=no
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.[89]*)
+ i[34567]86-*-solaris2.[56789]*)
# 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.[89]*)
+ sparc*-sun-solaris2.[56789]*)
# 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; 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
+ && $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
fi
rm -f conftest],
[AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
rm -f conftest],
[AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
[Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
- # Test if the assembler supports the extended form of the .section
- # directive that specifies section alignment. LTO support uses this,
- # but normally only after installation, so we warn but don't fail the
- # configure if LTO is enabled but the assembler does not support it.
- gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
- [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
- if test x$gcc_cv_as_section_has_align != xyes; then
- case ",$enable_languages," in
- *,lto,*)
- AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
- ;;
- esac
- fi
;;
esac
[AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
[Define if your assembler supports the ffreep mnemonic.])])
- gcc_GAS_CHECK_FEATURE([.quad directive],
- gcc_cv_as_ix86_quad,,,
- [.quad 0],,
- [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
- [Define if your assembler supports the .quad directive.])])
-
gcc_GAS_CHECK_FEATURE([sahf mnemonic],
gcc_cv_as_ix86_sahf,,,
- [.code64
- sahf],,
+ [sahf],,
[AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
- [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
+ [Define if your assembler supports the sahf mnemonic.])])
gcc_GAS_CHECK_FEATURE([swap suffix],
gcc_cv_as_ix86_swap,,,
[AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
[Define if your assembler supports the subtraction of symbols in different sections.])])
- # These two are used unconditionally by i386.[ch]; it is to be defined
+ # This one is used unconditionally by i386.[ch]; it is to be defined
# to 1 if the feature is present, 0 otherwise.
gcc_GAS_CHECK_FEATURE([GOTOFF in data],
gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
[`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
[Define true if the assembler supports '.long foo@GOTOFF'.])
-
- gcc_GAS_CHECK_FEATURE([rep and lock prefix],
- gcc_cv_as_ix86_rep_lock_prefix,,,
- [rep movsl
- lock orl $0, (%esp)])
- AC_DEFINE_UNQUOTED(HAVE_AS_IX86_REP_LOCK_PREFIX,
- [`if test $gcc_cv_as_ix86_rep_lock_prefix = yes; then echo 1; else echo 0; fi`],
- [Define true if the assembler supports 'rep <insn>, lock <insn>'.])
-
;;
ia64*-*-*)
if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
| grep "gc-sections option ignored" > /dev/null; then
gcc_cv_ld_eh_gc_sections=no
- elif $gcc_cv_objdump -h conftest 2> /dev/null \
- | grep gcc_except_table > /dev/null; then
+ elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
gcc_cv_ld_eh_gc_sections=yes
# If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
if test x$gcc_cv_as_comdat_group != xyes; then
if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
| grep "gc-sections option ignored" > /dev/null; then
gcc_cv_ld_eh_gc_sections=no
- elif $gcc_cv_objdump -h conftest 2> /dev/null \
- | grep gcc_except_table > /dev/null; then
+ elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
gcc_cv_ld_eh_gc_sections=yes
fi
fi
AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
enable_lto=yes
AC_SUBST(enable_lto)
- # LTO needs to speak the platform's object file format, and has a
- # number of implementations of the required binary file access APIs.
- # ELF is the most common, and default. We only link libelf if ELF
- # is indeed the selected format.
- LTO_BINARY_READER=${lto_binary_reader}
- LTO_USE_LIBELF=-lelf
- if test "x$lto_binary_reader" != "xlto-elf" ; then
- LTO_USE_LIBELF=
- fi
- AC_SUBST(LTO_BINARY_READER)
- AC_SUBST(LTO_USE_LIBELF)
;;
*) ;;
esac
pluginlibs=
if test x"$enable_plugin" = x"yes"; then
- case "${host}" in
- *-*-darwin*)
- export_sym_check="$gcc_cv_nm -g"
- ;;
- *)
- export_sym_check="$gcc_cv_objdump -T"
- ;;
- esac
AC_MSG_CHECKING([for exported symbols])
echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1
- if $export_sym_check conftest | grep foobar > /dev/null; then
+ if $gcc_cv_objdump -T conftest | grep foobar > /dev/null; then
: # No need to use a flag
else
AC_MSG_CHECKING([for -rdynamic])
${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1
- if $export_sym_check conftest | grep foobar > /dev/null; then
- plugin_rdynamic=yes
+ if $gcc_cv_objdump -T conftest | grep foobar > /dev/null; then
pluginlibs="-rdynamic"
else
- plugin_rdynamic=no
enable_plugin=no
fi
- AC_MSG_RESULT([$plugin_rdynamic])
fi
# Check -ldl
# Check that we can build shared objects with -fPIC -shared
saved_LDFLAGS="$LDFLAGS"
- case "${host}" in
- *-*-darwin*)
- LDFLAGS="$LDFLAGS -fPIC -shared -undefined dynamic_lookup"
- ;;
- *)
- LDFLAGS="$LDFLAGS -fPIC -shared"
- ;;
- esac
+ LDFLAGS="$LDFLAGS -fPIC -shared"
AC_MSG_CHECKING([for -fPIC -shared])
AC_TRY_LINK(
[extern int X;],[return X == 0;],
gcc_unreachable ();
}
+#ifndef TLS_SECTION_ASM_FLAG
+#define TLS_SECTION_ASM_FLAG 'T'
+#endif
+
void
default_elf_asm_named_section (const char *name, unsigned int flags,
tree decl ATTRIBUTE_UNUSED)
if (flags & SECTION_STRINGS)
*f++ = 'S';
if (flags & SECTION_TLS)
- *f++ = 'T';
+ *f++ = TLS_SECTION_ASM_FLAG;
if (HAVE_COMDAT_GROUP && (flags & SECTION_LINKONCE))
*f++ = 'G';
*f = '\0';