aboutsummaryrefslogtreecommitdiff
path: root/contrib/gcc
diff options
context:
space:
mode:
authorRui Paulo <rpaulo@FreeBSD.org>2010-08-24 00:23:40 +0000
committerRui Paulo <rpaulo@FreeBSD.org>2010-08-24 00:23:40 +0000
commit0c898ccd3003dd0b5403eb0f6d116a41944430d2 (patch)
tree02c2062feb8017cbc3f382d15dd6300a14349d07 /contrib/gcc
parent25faff346c8453b8248f99c7cff71708262faa37 (diff)
downloadsrc-0c898ccd3003dd0b5403eb0f6d116a41944430d2.tar.gz
src-0c898ccd3003dd0b5403eb0f6d116a41944430d2.zip
Mark the following static variables as __used__ instead of __unused__:
o force_to_data o __CTOR_LIST__ o __do_global_dtors_aux_fini_array_entry o __frame_dummy_init_array_entry This is necessary because Clang is smart enough to optimize out these variables was they were marked as __unused__ (and they are also static). The end result was programs segfaulting because these symbols weren't present. This follows the upstream revision 159228 and the author of that revision (Jan Hubicka <jh at suse.de>) allowed us to backport this to our GPLv2 GCC. Discussed with: core
Notes
Notes: svn path=/head/; revision=211729
Diffstat (limited to 'contrib/gcc')
-rw-r--r--contrib/gcc/crtstuff.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/contrib/gcc/crtstuff.c b/contrib/gcc/crtstuff.c
index 8fdc021d019f..706528060caf 100644
--- a/contrib/gcc/crtstuff.c
+++ b/contrib/gcc/crtstuff.c
@@ -175,14 +175,14 @@ CTOR_LIST_BEGIN;
#elif defined(CTORS_SECTION_ASM_OP)
/* Hack: force cc1 to switch to .data section early, so that assembling
__CTOR_LIST__ does not undo our behind-the-back change to .ctors. */
-static func_ptr force_to_data[1] __attribute__ ((__unused__)) = { };
+static func_ptr force_to_data[1] __attribute__ ((__used__)) = { };
asm (CTORS_SECTION_ASM_OP);
STATIC func_ptr __CTOR_LIST__[1]
- __attribute__ ((__unused__, aligned(sizeof(func_ptr))))
+ __attribute__ ((__used__, aligned(sizeof(func_ptr))))
= { (func_ptr) (-1) };
#else
STATIC func_ptr __CTOR_LIST__[1]
- __attribute__ ((__unused__, section(".ctors"), aligned(sizeof(func_ptr))))
+ __attribute__ ((__used__, section(".ctors"), aligned(sizeof(func_ptr))))
= { (func_ptr) (-1) };
#endif /* __CTOR_LIST__ alternatives */
@@ -308,7 +308,7 @@ __do_global_dtors_aux (void)
CRT_CALL_STATIC_FUNCTION (FINI_SECTION_ASM_OP, __do_global_dtors_aux)
#else /* !defined(FINI_SECTION_ASM_OP) */
static func_ptr __do_global_dtors_aux_fini_array_entry[]
- __attribute__ ((__unused__, section(".fini_array")))
+ __attribute__ ((__used__, section(".fini_array")))
= { __do_global_dtors_aux };
#endif /* !defined(FINI_SECTION_ASM_OP) */
@@ -348,7 +348,7 @@ frame_dummy (void)
CRT_CALL_STATIC_FUNCTION (INIT_SECTION_ASM_OP, frame_dummy)
#else /* defined(INIT_SECTION_ASM_OP) */
static func_ptr __frame_dummy_init_array_entry[]
- __attribute__ ((__unused__, section(".init_array")))
+ __attribute__ ((__used__, section(".init_array")))
= { frame_dummy };
#endif /* !defined(INIT_SECTION_ASM_OP) */
#endif /* USE_EH_FRAME_REGISTRY || JCR_SECTION_NAME */
@@ -456,7 +456,7 @@ CTOR_LIST_END;
#elif defined(CTORS_SECTION_ASM_OP)
/* Hack: force cc1 to switch to .data section early, so that assembling
__CTOR_LIST__ does not undo our behind-the-back change to .ctors. */
-static func_ptr force_to_data[1] __attribute__ ((__unused__)) = { };
+static func_ptr force_to_data[1] __attribute__ ((__used__)) = { };
asm (CTORS_SECTION_ASM_OP);
STATIC func_ptr __CTOR_END__[1]
__attribute__((aligned(sizeof(func_ptr))))