diff options
author | Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | 2011-06-09 07:08:00 +0000 |
---|---|---|
committer | Rainer Orth <ro@gcc.gnu.org> | 2011-06-09 07:08:00 +0000 |
commit | ee610fcd4d08b101e426b13827d70b8a387e0498 (patch) | |
tree | facd661921ca763f2c6699b2804e74acd1049588 | |
parent | 8f2e22ff77819ca19eff4da9e2430943f95d5947 (diff) | |
download | gcc-ee610fcd4d08b101e426b13827d70b8a387e0498.zip gcc-ee610fcd4d08b101e426b13827d70b8a387e0498.tar.gz gcc-ee610fcd4d08b101e426b13827d70b8a387e0498.tar.bz2 |
configure.ac (gcc_cv_as_hidden): Enable on *-*-darwin*.
* configure.ac (gcc_cv_as_hidden): Enable on *-*-darwin*.
(gcc_cv_ld_hidden): Likewise.
* configure: Regenerate.
* config/i386/i386.c (USE_HIDDEN_LINKONCE): Remove TARGET_MACHO.
(ix86_stack_protect_fail): Mark unused.
(TARGET_STACK_PROTECT_FAIL) [TARGET_MACHO]: Don't redefine.
* config/rs6000/rs6000.c (rs6000_assemble_visibility)
[TARGET_MACHO]: Don't define.
(TARGET_ASM_ASSEMBLE_VISIBILITY): Likewise.
(TARGET_STACK_PROTECT_FAIL): Likewise.
(rs6000_stack_protect_fail): Mark unused.
* dwarf2asm.c (dw2_output_indirect_constant_1): Mark decl hidden if
USE_LINKONCE_INDIRECT.
Don't emit .hidden expicitly.
From-SVN: r174837
-rw-r--r-- | gcc/ChangeLog | 17 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 10 | ||||
-rwxr-xr-x | gcc/configure | 10 | ||||
-rw-r--r-- | gcc/configure.ac | 10 | ||||
-rw-r--r-- | gcc/dwarf2asm.c | 7 |
6 files changed, 50 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1c9fa02..4f12db9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,20 @@ +2011-06-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * configure.ac (gcc_cv_as_hidden): Enable on *-*-darwin*. + (gcc_cv_ld_hidden): Likewise. + * configure: Regenerate. + * config/i386/i386.c (USE_HIDDEN_LINKONCE): Remove TARGET_MACHO. + (ix86_stack_protect_fail): Mark unused. + (TARGET_STACK_PROTECT_FAIL) [TARGET_MACHO]: Don't redefine. + * config/rs6000/rs6000.c (rs6000_assemble_visibility) + [TARGET_MACHO]: Don't define. + (TARGET_ASM_ASSEMBLE_VISIBILITY): Likewise. + (TARGET_STACK_PROTECT_FAIL): Likewise. + (rs6000_stack_protect_fail): Mark unused. + * dwarf2asm.c (dw2_output_indirect_constant_1): Mark decl hidden if + USE_LINKONCE_INDIRECT. + Don't emit .hidden expicitly. + 2011-06-08 Andi Kleen <ak@linux.intel.com> * varasm.c (get_section): Print location of other conflict diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index db6a0d6..0bcb2db 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -8725,7 +8725,7 @@ ix86_setup_frame_addresses (void) } #ifndef USE_HIDDEN_LINKONCE -# if (defined(HAVE_GAS_HIDDEN) && (SUPPORTS_ONE_ONLY - 0)) || TARGET_MACHO +# if defined(HAVE_GAS_HIDDEN) && (SUPPORTS_ONE_ONLY - 0) # define USE_HIDDEN_LINKONCE 1 # else # define USE_HIDDEN_LINKONCE 0 @@ -32207,7 +32207,7 @@ ix86_mangle_type (const_tree type) __stack_chk_fail directly. 64-bit code doesn't need to setup any PIC register, so it is better to call __stack_chk_fail directly. */ -static tree +static tree ATTRIBUTE_UNUSED ix86_stack_protect_fail (void) { return TARGET_64BIT @@ -35407,8 +35407,10 @@ ix86_autovectorize_vector_sizes (void) #undef TARGET_MANGLE_TYPE #define TARGET_MANGLE_TYPE ix86_mangle_type +#ifndef TARGET_MACHO #undef TARGET_STACK_PROTECT_FAIL #define TARGET_STACK_PROTECT_FAIL ix86_stack_protect_fail +#endif #undef TARGET_SUPPORTS_SPLIT_STACK #define TARGET_SUPPORTS_SPLIT_STACK ix86_supports_split_stack diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index a21d85d..4827c26 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -884,7 +884,7 @@ static bool legitimate_lo_sum_address_p (enum machine_mode, rtx, int); static struct machine_function * rs6000_init_machine_status (void); static bool rs6000_assemble_integer (rtx, unsigned int, int); static bool no_global_regs_above (int, bool); -#ifdef HAVE_GAS_HIDDEN +#if defined (HAVE_GAS_HIDDEN) && !defined (TARGET_MACHO) static void rs6000_assemble_visibility (tree, int); #endif static int rs6000_ra_ever_killed (void); @@ -1349,7 +1349,7 @@ static const struct default_options rs6000_option_optimization_table[] = #undef TARGET_ASM_INTEGER #define TARGET_ASM_INTEGER rs6000_assemble_integer -#ifdef HAVE_GAS_HIDDEN +#if defined (HAVE_GAS_HIDDEN) && !defined (TARGET_MACHO) #undef TARGET_ASM_ASSEMBLE_VISIBILITY #define TARGET_ASM_ASSEMBLE_VISIBILITY rs6000_assemble_visibility #endif @@ -1558,8 +1558,10 @@ static const struct default_options rs6000_option_optimization_table[] = #define TARGET_DEFAULT_TARGET_FLAGS \ (TARGET_DEFAULT) +#ifndef TARGET_MACHO #undef TARGET_STACK_PROTECT_FAIL #define TARGET_STACK_PROTECT_FAIL rs6000_stack_protect_fail +#endif /* MPC604EUM 3.5.2 Weak Consistency between Multiple Processors The PowerPC architecture requires only weak consistency among @@ -16390,7 +16392,7 @@ rs6000_assemble_integer (rtx x, unsigned int size, int aligned_p) return default_assemble_integer (x, size, aligned_p); } -#ifdef HAVE_GAS_HIDDEN +#if defined (HAVE_GAS_HIDDEN) && !defined (TARGET_MACHO) /* Emit an assembler directive to set symbol visibility for DECL to VISIBILITY_TYPE. */ @@ -27323,7 +27325,7 @@ invalid_arg_for_unprototyped_fn (const_tree typelist, const_tree funcdecl, const calling __stack_chk_fail directly. Otherwise it is better to call __stack_chk_fail directly. */ -static tree +static tree ATTRIBUTE_UNUSED rs6000_stack_protect_fail (void) { return (DEFAULT_ABI == ABI_V4 && TARGET_SECURE_PLT && flag_pic) diff --git a/gcc/configure b/gcc/configure index a373518..cc48431 100755 --- a/gcc/configure +++ b/gcc/configure @@ -21708,6 +21708,12 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_hidden" >&5 $as_echo "$gcc_cv_as_hidden" >&6; } +case "${target}" in + *-*-darwin*) + # Darwin as has some visibility support, though with a different syntax. + gcc_cv_as_hidden=yes + ;; +esac # gnu_indirect_function type is an extension proposed at # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime @@ -21812,6 +21818,10 @@ else fi else case "${target}" in + *-*-darwin*) + # Darwin ld has some visibility support. + gcc_cv_ld_hidden=yes + ;; hppa64*-*-hpux* | ia64*-*-hpux*) gcc_cv_ld_hidden=yes ;; diff --git a/gcc/configure.ac b/gcc/configure.ac index 5e41479..70b3dbc 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -2192,6 +2192,12 @@ EOF gcc_cv_as_hidden=yes ;; esac]) +case "${target}" in + *-*-darwin*) + # Darwin as has some visibility support, though with a different syntax. + gcc_cv_as_hidden=yes + ;; +esac # gnu_indirect_function type is an extension proposed at # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime @@ -2291,6 +2297,10 @@ else fi else case "${target}" in + *-*-darwin*) + # Darwin ld has some visibility support. + gcc_cv_ld_hidden=yes + ;; hppa64*-*-hpux* | ia64*-*-hpux*) gcc_cv_ld_hidden=yes ;; diff --git a/gcc/dwarf2asm.c b/gcc/dwarf2asm.c index a11470f..4c1b6d4e 100644 --- a/gcc/dwarf2asm.c +++ b/gcc/dwarf2asm.c @@ -1,5 +1,5 @@ /* Dwarf2 assembler output helper routines. - Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -915,14 +915,13 @@ dw2_output_indirect_constant_1 (splay_tree_node node, { TREE_PUBLIC (decl) = 1; make_decl_one_only (decl, DECL_ASSEMBLER_NAME (decl)); + if (USE_LINKONCE_INDIRECT) + DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN; } else TREE_STATIC (decl) = 1; sym_ref = gen_rtx_SYMBOL_REF (Pmode, sym); - sym = targetm.strip_name_encoding (sym); - if (TREE_PUBLIC (decl) && USE_LINKONCE_INDIRECT) - fprintf (asm_out_file, "\t.hidden %sDW.ref.%s\n", user_label_prefix, sym); assemble_variable (decl, 1, 1, 1); assemble_integer (sym_ref, POINTER_SIZE / BITS_PER_UNIT, POINTER_SIZE, 1); |