aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>2011-06-09 07:08:00 +0000
committerRainer Orth <ro@gcc.gnu.org>2011-06-09 07:08:00 +0000
commitee610fcd4d08b101e426b13827d70b8a387e0498 (patch)
treefacd661921ca763f2c6699b2804e74acd1049588
parent8f2e22ff77819ca19eff4da9e2430943f95d5947 (diff)
downloadgcc-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/ChangeLog17
-rw-r--r--gcc/config/i386/i386.c6
-rw-r--r--gcc/config/rs6000/rs6000.c10
-rwxr-xr-xgcc/configure10
-rw-r--r--gcc/configure.ac10
-rw-r--r--gcc/dwarf2asm.c7
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);