| Index: gcc/gcc/config/elfos.h
|
| diff --git a/gcc/gcc/config/elfos.h b/gcc/gcc/config/elfos.h
|
| index 2d818d145d555a1a837b742409e1c76009e09439..6818f6600fe2069dcf7878d357b1513c3eb9cbfb 100644
|
| --- a/gcc/gcc/config/elfos.h
|
| +++ b/gcc/gcc/config/elfos.h
|
| @@ -1,7 +1,7 @@
|
| /* elfos.h -- operating system specific defines to be used when
|
| targeting GCC for some generic ELF system
|
| Copyright (C) 1991, 1994, 1995, 1999, 2000, 2001, 2002, 2003, 2004,
|
| - 2007, 2009 Free Software Foundation, Inc.
|
| + 2007, 2009, 2010 Free Software Foundation, Inc.
|
| Based on svr4.h contributed by Ron Guilmette (rfg@netcom.com).
|
|
|
| This file is part of GCC.
|
| @@ -289,24 +289,39 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
|
| /* Write the extra assembler code needed to declare an object properly. */
|
|
|
| -#define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \
|
| - do \
|
| - { \
|
| - HOST_WIDE_INT size; \
|
| - \
|
| - 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); \
|
| - } \
|
| +#ifdef HAVE_GAS_GNU_UNIQUE_OBJECT
|
| +#define USE_GNU_UNIQUE_OBJECT 1
|
| +#else
|
| +#define USE_GNU_UNIQUE_OBJECT 0
|
| +#endif
|
| +
|
| +#define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \
|
| + do \
|
| + { \
|
| + HOST_WIDE_INT size; \
|
| + \
|
| + /* For template static data member instantiations or \
|
| + inline fn local statics and their guard variables, use \
|
| + gnu_unique_object so that they will be combined even under \
|
| + RTLD_LOCAL. Don't use gnu_unique_object for typeinfo, \
|
| + vtables and other read-only artificial decls. */ \
|
| + if (USE_GNU_UNIQUE_OBJECT && DECL_ONE_ONLY (DECL) \
|
| + && (!DECL_ARTIFICIAL (DECL) || !TREE_READONLY (DECL))) \
|
| + ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "gnu_unique_object"); \
|
| + 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)
|
|
|
| /* Output the size directive for a decl in rest_of_decl_compilation
|
|
|