From: ro@138bc75d-0d04-0410-961f-82ee72b054a4 Date: Wed, 24 Mar 2010 18:49:49 +0000 (+0000) Subject: * configure.ac (i[34567]86-*-*): Handle Solaris 2/x86 TLS support X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=eca87a93f3e4482e01ffcbce86525bbd87dc7993 * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157705 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1bbb9d8f9d8..bff16dc5d19 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,46 @@ 2010-03-24 Rainer Orth + * 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 + * config/i386/i386.c (override_options): Don't accept -mtls-dialect=sun any longer. * config/i386/i386.h (TARGET_SUN_TLS): Define as 0. diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h index addaf81df36..70c8a8f6744 100644 --- a/gcc/config/i386/sol2.h +++ b/gcc/config/i386/sol2.h @@ -96,6 +96,43 @@ along with GCC; see the file COPYING3. If not see #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 diff --git a/gcc/config/sol2.h b/gcc/config/sol2.h index 98e54e6a92c..a20c3b983f6 100644 --- a/gcc/config/sol2.h +++ b/gcc/config/sol2.h @@ -174,16 +174,12 @@ along with GCC; see the file COPYING3. If not see #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.) */ @@ -258,10 +254,6 @@ __enable_execute_stack (void *addr) \ { "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 @@ -292,11 +284,6 @@ __enable_execute_stack (void *addr) \ } \ 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; diff --git a/gcc/configure b/gcc/configure index 8013a15079a..f5cb4fec813 100755 --- a/gcc/configure +++ b/gcc/configure @@ -671,8 +671,6 @@ subdirs slibdir dollar gcc_tooldir -LTO_USE_LIBELF -LTO_BINARY_READER enable_lto MAINT zlibinc @@ -895,7 +893,6 @@ enable_initfini_array enable_sjlj_exceptions with_system_libunwind enable_secureplt -enable_leading_mingw64_underscores enable_cld enable_win32_registry enable_static @@ -903,7 +900,6 @@ with_pic enable_fast_install enable_libtool_lock with_plugin_ld -enable_comdat enable_gnu_unique_object enable_linker_build_id with_long_double_128 @@ -1593,8 +1589,6 @@ Optional Features: --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 @@ -1608,7 +1602,6 @@ Optional Features: --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 @@ -8431,59 +8424,6 @@ fi 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 -#include -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; } @@ -10688,17 +10628,6 @@ if test "${enable_secureplt+set}" = set; then : 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; @@ -17108,7 +17037,7 @@ else 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 @@ -17214,7 +17143,7 @@ else 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 @@ -20680,19 +20609,6 @@ cat >>confdefs.h <<_ACEOF _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 @@ -21258,35 +21174,7 @@ foobar:' > conftest.s $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 <