Mercurial > hg > CbC > CbC_gcc
diff gcc/config/sol2.h @ 63:b7f97abdc517 gcc-4.6-20100522
update gcc from gcc-4.5.0 to gcc-4.6
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 24 May 2010 12:47:05 +0900 |
parents | 77e2b8dfacca |
children | f6334be47118 |
line wrap: on
line diff
--- a/gcc/config/sol2.h Fri Feb 12 23:41:23 2010 +0900 +++ b/gcc/config/sol2.h Mon May 24 12:47:05 2010 +0900 @@ -1,6 +1,7 @@ /* Operating system specific defines to be used when targeting GCC for any Solaris 2 system. - Copyright 2002, 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright 2002, 2003, 2004, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. This file is part of GCC. @@ -173,12 +174,16 @@ #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.) */ @@ -253,6 +258,10 @@ { "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 @@ -265,6 +274,29 @@ } \ while (0) +/* Solaris 'as' has a bug: a .common directive in .tbss section + behaves as .tls_common rather than normal non-TLS .common. */ +#undef ASM_OUTPUT_ALIGNED_COMMON +#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \ + do \ + { \ + if (TARGET_SUN_TLS \ + && in_section \ + && ((in_section->common.flags & (SECTION_TLS | SECTION_BSS)) \ + == (SECTION_TLS | SECTION_BSS))) \ + switch_to_section (bss_section); \ + fprintf ((FILE), "%s", COMMON_ASM_OP); \ + assemble_name ((FILE), (NAME)); \ + fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n", \ + (SIZE), (ALIGN) / BITS_PER_UNIT); \ + } \ + 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;