defaults.h (JCR_SECTION_NAME, [...]): Remove.

gcc/
	* defaults.h (JCR_SECTION_NAME, TARGET_USE_JCR_SECTION): Remove.
	* system.h (JCR_SECTION_NAME, TARGET_USE_JCR_SECTION): Poison.
	* doc/tm.texi.in (TARGET_USE_JCR_SECTION): Remove.
	* doc/tm.texi: Regenerated.
	* config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Remove.
	* config/i386/cygming.h (TARGET_USE_JCR_SECTION): Remove.
	* config/darwin.h (JCR_SECTION_NAME): Remove.
	* config/pa/pa64-hpux.h (JCR_SECTION_NAME): Remove.
	* config/rs6000/aix71.h (TARGET_USE_JCR_SECTION): Remove.
	* config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Remove.
	* config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Remove.
	* config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Remove.
	* config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Remove.
gcc/c-family/
	* c-cppbuiltin.c (c_cpp_builtins): Don't define
	__LIBGCC_JCR_SECTION_NAME__.
libgcc/
	* config/i386/cygming-crtbegin.c (_Jv_RegisterClasses): Remove.
	(__JCR_LIST__): Remove.
	(__gcc_register_frame): Don't attempt to _Jv_RegisterClasses.
	* config/i386/cygming-crtend.c (__JCR_END__): Remove.
	* config/ia64/crtbegin.S (__JCR_LIST__): Remove.
	* config/ia64/crtend.S (__JCR_END__): Remove.
	* crtstuff.c: Remove __LIBGCC_JCR_SECTION_NAME__ from preprocessor
	conditionals.
	(__JCR_LIST__, __JCR_END__): Remove.
	(frame_dummy): Don't attempt to _Jv_RegisterClasses.
	(__do_global_ctors_1): Likewise.

From-SVN: r240739
This commit is contained in:
Jakub Jelinek 2016-10-04 09:49:44 +02:00 committed by Jakub Jelinek
parent 4b3a7e03e5
commit 5a79befbf4
22 changed files with 41 additions and 160 deletions

View File

@ -1,3 +1,19 @@
2016-10-04 Jakub Jelinek <jakub@redhat.com>
* defaults.h (JCR_SECTION_NAME, TARGET_USE_JCR_SECTION): Remove.
* system.h (JCR_SECTION_NAME, TARGET_USE_JCR_SECTION): Poison.
* doc/tm.texi.in (TARGET_USE_JCR_SECTION): Remove.
* doc/tm.texi: Regenerated.
* config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Remove.
* config/i386/cygming.h (TARGET_USE_JCR_SECTION): Remove.
* config/darwin.h (JCR_SECTION_NAME): Remove.
* config/pa/pa64-hpux.h (JCR_SECTION_NAME): Remove.
* config/rs6000/aix71.h (TARGET_USE_JCR_SECTION): Remove.
* config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Remove.
* config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Remove.
* config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Remove.
* config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Remove.
2016-10-03 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> 2016-10-03 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
* ipa-cp.c (propagate_bits_accross_jump_function): Introduce space * ipa-cp.c (propagate_bits_accross_jump_function): Introduce space

View File

@ -1,3 +1,8 @@
2016-10-04 Jakub Jelinek <jakub@redhat.com>
* c-cppbuiltin.c (c_cpp_builtins): Don't define
__LIBGCC_JCR_SECTION_NAME__.
2016-10-03 Bernd Edlinger <bernd.edlinger@hotmail.de> 2016-10-03 Bernd Edlinger <bernd.edlinger@hotmail.de>
* c-common.c (c_common_truthvalue_conversion): Warn for suspicious * c-common.c (c_common_truthvalue_conversion): Warn for suspicious

View File

@ -1213,10 +1213,6 @@ c_cpp_builtins (cpp_reader *pfile)
builtin_define_with_value ("__LIBGCC_EH_FRAME_SECTION_NAME__", builtin_define_with_value ("__LIBGCC_EH_FRAME_SECTION_NAME__",
EH_FRAME_SECTION_NAME, 1); EH_FRAME_SECTION_NAME, 1);
#endif #endif
#ifdef JCR_SECTION_NAME
builtin_define_with_value ("__LIBGCC_JCR_SECTION_NAME__",
JCR_SECTION_NAME, 1);
#endif
#ifdef CTORS_SECTION_ASM_OP #ifdef CTORS_SECTION_ASM_OP
builtin_define_with_value ("__LIBGCC_CTORS_SECTION_ASM_OP__", builtin_define_with_value ("__LIBGCC_CTORS_SECTION_ASM_OP__",
CTORS_SECTION_ASM_OP, 1); CTORS_SECTION_ASM_OP, 1);

View File

@ -825,9 +825,6 @@ enum machopic_addr_class {
#define EH_FRAME_SECTION_NAME "__TEXT" #define EH_FRAME_SECTION_NAME "__TEXT"
#define EH_FRAME_SECTION_ATTR ",coalesced,no_toc+strip_static_syms+live_support" #define EH_FRAME_SECTION_ATTR ",coalesced,no_toc+strip_static_syms+live_support"
/* Java runtime class list. */
#define JCR_SECTION_NAME "__DATA,jcr,regular,no_dead_strip"
#undef ASM_PREFERRED_EH_DATA_FORMAT #undef ASM_PREFERRED_EH_DATA_FORMAT
#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \ #define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \
(((CODE) == 2 && (GLOBAL) == 1) \ (((CODE) == 2 && (GLOBAL) == 1) \

View File

@ -443,11 +443,6 @@ do { \
#endif /* HAVE_GAS_WEAK */ #endif /* HAVE_GAS_WEAK */
/* FIXME: SUPPORTS_WEAK && TARGET_HAVE_NAMED_SECTIONS is true,
but for .jcr section to work we also need crtbegin and crtend
objects. */
#define TARGET_USE_JCR_SECTION 1
/* Decide whether it is safe to use a local alias for a virtual function /* Decide whether it is safe to use a local alias for a virtual function
when constructing thunks. */ when constructing thunks. */
#undef TARGET_USE_LOCAL_THUNK_ALIAS_P #undef TARGET_USE_LOCAL_THUNK_ALIAS_P

View File

@ -239,9 +239,6 @@ do { \
#undef TARGET_N_FORMAT_TYPES #undef TARGET_N_FORMAT_TYPES
#define TARGET_N_FORMAT_TYPES 3 #define TARGET_N_FORMAT_TYPES 3
/* Let defaults.h definition of TARGET_USE_JCR_SECTION apply. */
#undef TARGET_USE_JCR_SECTION
#define HAVE_ENABLE_EXECUTE_STACK #define HAVE_ENABLE_EXECUTE_STACK
#undef CHECK_EXECUTE_STACK_ENABLED #undef CHECK_EXECUTE_STACK_ENABLED
#define CHECK_EXECUTE_STACK_ENABLED flag_setstackexecutable #define CHECK_EXECUTE_STACK_ENABLED flag_setstackexecutable

View File

@ -170,8 +170,6 @@ along with GCC; see the file COPYING3. If not see
#define DATA_SECTION_ASM_OP "\t.data" #define DATA_SECTION_ASM_OP "\t.data"
#define BSS_SECTION_ASM_OP "\t.section\t.bss" #define BSS_SECTION_ASM_OP "\t.section\t.bss"
#define JCR_SECTION_NAME ".jcr"
#define HP_INIT_ARRAY_SECTION_ASM_OP "\t.section\t.init" #define HP_INIT_ARRAY_SECTION_ASM_OP "\t.section\t.init"
#define GNU_INIT_ARRAY_SECTION_ASM_OP "\t.section\t.init_array" #define GNU_INIT_ARRAY_SECTION_ASM_OP "\t.section\t.init_array"
#define HP_FINI_ARRAY_SECTION_ASM_OP "\t.section\t.fini" #define HP_FINI_ARRAY_SECTION_ASM_OP "\t.section\t.fini"
@ -382,8 +380,8 @@ do { \
initializers specified here. */ initializers specified here. */
/* We need to add frame_dummy to the initializer list if EH_FRAME_SECTION_NAME /* We need to add frame_dummy to the initializer list if EH_FRAME_SECTION_NAME
or JCR_SECTION_NAME is defined. */ is defined. */
#if defined(EH_FRAME_SECTION_NAME) || defined(JCR_SECTION_NAME) #if defined(EH_FRAME_SECTION_NAME)
#define PA_INIT_FRAME_DUMMY_ASM_OP ".dword P%frame_dummy" #define PA_INIT_FRAME_DUMMY_ASM_OP ".dword P%frame_dummy"
#else #else
#define PA_INIT_FRAME_DUMMY_ASM_OP "" #define PA_INIT_FRAME_DUMMY_ASM_OP ""

View File

@ -163,8 +163,6 @@ do { \
/* This target defines SUPPORTS_WEAK and TARGET_ASM_NAMED_SECTION, /* This target defines SUPPORTS_WEAK and TARGET_ASM_NAMED_SECTION,
but does not have crtbegin/end. */ but does not have crtbegin/end. */
#define TARGET_USE_JCR_SECTION 0
#define TARGET_AIX_VERSION 51 #define TARGET_AIX_VERSION 51
#undef TARGET_LIBC_HAS_FUNCTION #undef TARGET_LIBC_HAS_FUNCTION

View File

@ -176,6 +176,4 @@ extern long long int atoll(const char *);
/* This target defines SUPPORTS_WEAK and TARGET_ASM_NAMED_SECTION, /* This target defines SUPPORTS_WEAK and TARGET_ASM_NAMED_SECTION,
but does not have crtbegin/end. */ but does not have crtbegin/end. */
#define TARGET_USE_JCR_SECTION 0
#define TARGET_AIX_VERSION 52 #define TARGET_AIX_VERSION 52

View File

@ -177,6 +177,4 @@ extern long long int atoll(const char *);
/* This target defines SUPPORTS_WEAK and TARGET_ASM_NAMED_SECTION, /* This target defines SUPPORTS_WEAK and TARGET_ASM_NAMED_SECTION,
but does not have crtbegin/end. */ but does not have crtbegin/end. */
#define TARGET_USE_JCR_SECTION 0
#define TARGET_AIX_VERSION 53 #define TARGET_AIX_VERSION 53

View File

@ -210,6 +210,4 @@ extern long long int atoll(const char *);
/* This target defines SUPPORTS_WEAK and TARGET_ASM_NAMED_SECTION, /* This target defines SUPPORTS_WEAK and TARGET_ASM_NAMED_SECTION,
but does not have crtbegin/end. */ but does not have crtbegin/end. */
#define TARGET_USE_JCR_SECTION 0
#define TARGET_AIX_VERSION 61 #define TARGET_AIX_VERSION 61

View File

@ -210,8 +210,6 @@ extern long long int atoll(const char *);
/* This target defines SUPPORTS_WEAK and TARGET_ASM_NAMED_SECTION, /* This target defines SUPPORTS_WEAK and TARGET_ASM_NAMED_SECTION,
but does not have crtbegin/end. */ but does not have crtbegin/end. */
#define TARGET_USE_JCR_SECTION 0
#define TARGET_AIX_VERSION 71 #define TARGET_AIX_VERSION 71
/* AIX 7.1 supports DWARF3 debugging, but XCOFF remains the default. */ /* AIX 7.1 supports DWARF3 debugging, but XCOFF remains the default. */

View File

@ -392,27 +392,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define MASK_RETURN_ADDR NULL_RTX #define MASK_RETURN_ADDR NULL_RTX
#endif #endif
/* If we have named section and we support weak symbols, then use the
.jcr section for recording java classes which need to be registered
at program start-up time. */
#if defined (TARGET_ASM_NAMED_SECTION) && SUPPORTS_WEAK
#ifndef JCR_SECTION_NAME
#define JCR_SECTION_NAME ".jcr"
#endif
#endif
/* This decision to use a .jcr section can be overridden by defining
USE_JCR_SECTION to 0 in target file. This is necessary if target
can define JCR_SECTION_NAME but does not have crtstuff or
linker support for .jcr section. */
#ifndef TARGET_USE_JCR_SECTION
#ifdef JCR_SECTION_NAME
#define TARGET_USE_JCR_SECTION 1
#else
#define TARGET_USE_JCR_SECTION 0
#endif
#endif
/* Number of hardware registers that go into the DWARF-2 unwind info. /* Number of hardware registers that go into the DWARF-2 unwind info.
If not defined, equals FIRST_PSEUDO_REGISTER */ If not defined, equals FIRST_PSEUDO_REGISTER */

View File

@ -11598,12 +11598,6 @@ conversion rules.
This is currently used only by the C and C++ front ends. This is currently used only by the C and C++ front ends.
@end deftypefn @end deftypefn
@defmac TARGET_USE_JCR_SECTION
This macro determines whether to use the JCR section to register Java
classes. By default, TARGET_USE_JCR_SECTION is defined to 1 if both
SUPPORTS_WEAK and TARGET_HAVE_NAMED_SECTIONS are true, else 0.
@end defmac
@defmac OBJC_JBLEN @defmac OBJC_JBLEN
This macro determines the size of the objective C jump buffer for the This macro determines the size of the objective C jump buffer for the
NeXT runtime. By default, OBJC_JBLEN is defined to an innocuous value. NeXT runtime. By default, OBJC_JBLEN is defined to an innocuous value.

View File

@ -8186,12 +8186,6 @@ and scanf formatter settings.
@hook TARGET_CONVERT_TO_TYPE @hook TARGET_CONVERT_TO_TYPE
@defmac TARGET_USE_JCR_SECTION
This macro determines whether to use the JCR section to register Java
classes. By default, TARGET_USE_JCR_SECTION is defined to 1 if both
SUPPORTS_WEAK and TARGET_HAVE_NAMED_SECTIONS are true, else 0.
@end defmac
@defmac OBJC_JBLEN @defmac OBJC_JBLEN
This macro determines the size of the objective C jump buffer for the This macro determines the size of the objective C jump buffer for the
NeXT runtime. By default, OBJC_JBLEN is defined to an innocuous value. NeXT runtime. By default, OBJC_JBLEN is defined to an innocuous value.

View File

@ -987,7 +987,8 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
CALLER_SAVE_PROFITABLE LARGEST_EXPONENT_IS_NORMAL \ CALLER_SAVE_PROFITABLE LARGEST_EXPONENT_IS_NORMAL \
ROUND_TOWARDS_ZERO SF_SIZE DF_SIZE XF_SIZE TF_SIZE LIBGCC2_TF_CEXT \ ROUND_TOWARDS_ZERO SF_SIZE DF_SIZE XF_SIZE TF_SIZE LIBGCC2_TF_CEXT \
LIBGCC2_LONG_DOUBLE_TYPE_SIZE STRUCT_VALUE \ LIBGCC2_LONG_DOUBLE_TYPE_SIZE STRUCT_VALUE \
EH_FRAME_IN_DATA_SECTION TARGET_FLT_EVAL_METHOD_NON_DEFAULT EH_FRAME_IN_DATA_SECTION TARGET_FLT_EVAL_METHOD_NON_DEFAULT \
JCR_SECTION_NAME TARGET_USE_JCR_SECTION
/* Hooks that are no longer used. */ /* Hooks that are no longer used. */
#pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \ #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \

View File

@ -1,3 +1,17 @@
2016-10-04 Jakub Jelinek <jakub@redhat.com>
* config/i386/cygming-crtbegin.c (_Jv_RegisterClasses): Remove.
(__JCR_LIST__): Remove.
(__gcc_register_frame): Don't attempt to _Jv_RegisterClasses.
* config/i386/cygming-crtend.c (__JCR_END__): Remove.
* config/ia64/crtbegin.S (__JCR_LIST__): Remove.
* config/ia64/crtend.S (__JCR_END__): Remove.
* crtstuff.c: Remove __LIBGCC_JCR_SECTION_NAME__ from preprocessor
conditionals.
(__JCR_LIST__, __JCR_END__): Remove.
(frame_dummy): Don't attempt to _Jv_RegisterClasses.
(__do_global_ctors_1): Likewise.
2015-09-28 Uros Bizjak <ubizjak@gmail.com> 2015-09-28 Uros Bizjak <ubizjak@gmail.com>
* config/i386/cpuinfo.c (__get_cpuid_output): Remove. * config/i386/cpuinfo.c (__get_cpuid_output): Remove.

View File

@ -73,18 +73,6 @@ __deregister_frame_info (__attribute__((unused)) const void *p)
#endif #endif
#endif /* DWARF2_UNWIND_INFO */ #endif /* DWARF2_UNWIND_INFO */
#if TARGET_USE_JCR_SECTION
extern void _Jv_RegisterClasses (__attribute__((unused)) const void *)
TARGET_ATTRIBUTE_WEAK;
#ifdef __x86_64__
TARGET_ATTRIBUTE_WEAK void
_Jv_RegisterClasses (__attribute__((unused)) const void *p)
{
}
#endif
#endif /* TARGET_USE_JCR_SECTION */
#if defined(HAVE_LD_RO_RW_SECTION_MIXING) #if defined(HAVE_LD_RO_RW_SECTION_MIXING)
# define EH_FRAME_SECTION_CONST const # define EH_FRAME_SECTION_CONST const
#else #else
@ -105,12 +93,6 @@ HANDLE hmod_libgcc;
static void * (*deregister_frame_fn) (const void *) = NULL; static void * (*deregister_frame_fn) (const void *) = NULL;
#endif #endif
#if TARGET_USE_JCR_SECTION
static void *__JCR_LIST__[]
__attribute__ ((used, section(__LIBGCC_JCR_SECTION_NAME__), aligned(4)))
= { };
#endif
#ifdef __CYGWIN__ #ifdef __CYGWIN__
/* Declare the __dso_handle variable. It should have a unique value /* Declare the __dso_handle variable. It should have a unique value
in every shared-object; in a main program its value is zero. The in every shared-object; in a main program its value is zero. The
@ -163,22 +145,6 @@ __gcc_register_frame (void)
register_frame_fn (__EH_FRAME_BEGIN__, &obj); register_frame_fn (__EH_FRAME_BEGIN__, &obj);
#endif #endif
#if TARGET_USE_JCR_SECTION
if (__JCR_LIST__[0])
{
void (*register_class_fn) (const void *);
HANDLE h = GetModuleHandle (LIBGCJ_SONAME);
if (h)
register_class_fn = (void (*) (const void *))
GetProcAddress (h, "_Jv_RegisterClasses");
else
register_class_fn = _Jv_RegisterClasses;
if (register_class_fn)
register_class_fn (__JCR_LIST__);
}
#endif
#if DEFAULT_USE_CXA_ATEXIT #if DEFAULT_USE_CXA_ATEXIT
/* If we use the __cxa_atexit method to register C++ dtors /* If we use the __cxa_atexit method to register C++ dtors
at object construction, also use atexit to register eh frame at object construction, also use atexit to register eh frame

View File

@ -53,14 +53,6 @@ static EH_FRAME_SECTION_CONST int __FRAME_END__[]
= { 0 }; = { 0 };
#endif #endif
#if TARGET_USE_JCR_SECTION
/* Null terminate the .jcr section array. */
static void *__JCR_END__[1]
__attribute__ ((used, section(__LIBGCC_JCR_SECTION_NAME__),
aligned(sizeof(void *))))
= { 0 };
#endif
extern void __gcc_register_frame (void); extern void __gcc_register_frame (void);
extern void __gcc_deregister_frame (void); extern void __gcc_deregister_frame (void);

View File

@ -34,10 +34,6 @@ __CTOR_LIST__:
__DTOR_LIST__: __DTOR_LIST__:
data8 -1 data8 -1
.section .jcr,"aw","progbits"
.align 8
__JCR_LIST__:
.section .sdata .section .sdata
.type dtor_ptr,@object .type dtor_ptr,@object
.size dtor_ptr,8 .size dtor_ptr,8

View File

@ -34,11 +34,6 @@ __CTOR_END__:
__DTOR_END__: __DTOR_END__:
data8 0 data8 0
.section .jcr,"aw","progbits"
.align 8
__JCR_END__:
data8 0
#if HAVE_INITFINI_ARRAY_SUPPORT #if HAVE_INITFINI_ARRAY_SUPPORT
.global __do_global_ctors_aux .global __do_global_ctors_aux
.hidden __do_global_ctors_aux .hidden __do_global_ctors_aux

View File

@ -266,15 +266,6 @@ STATIC EH_FRAME_SECTION_CONST char __EH_FRAME_BEGIN__[]
= { }; = { };
#endif /* USE_EH_FRAME_REGISTRY */ #endif /* USE_EH_FRAME_REGISTRY */
#ifdef __LIBGCC_JCR_SECTION_NAME__
/* Stick a label at the beginning of the java class registration info
so we can register them properly. */
STATIC void *__JCR_LIST__[]
__attribute__ ((used, section(__LIBGCC_JCR_SECTION_NAME__),
aligned(sizeof(void*))))
= { };
#endif /* __LIBGCC_JCR_SECTION_NAME__ */
#if USE_TM_CLONE_REGISTRY #if USE_TM_CLONE_REGISTRY
STATIC func_ptr __TMC_LIST__[] STATIC func_ptr __TMC_LIST__[]
__attribute__((used, section(".tm_clone_table"), aligned(sizeof(void*)))) __attribute__((used, section(".tm_clone_table"), aligned(sizeof(void*))))
@ -449,7 +440,6 @@ CRT_CALL_STATIC_FUNCTION (__LIBGCC_INIT_SECTION_ASM_OP__,
#endif #endif
#if defined(USE_EH_FRAME_REGISTRY) \ #if defined(USE_EH_FRAME_REGISTRY) \
|| defined(__LIBGCC_JCR_SECTION_NAME__) \
|| defined(USE_TM_CLONE_REGISTRY) || defined(USE_TM_CLONE_REGISTRY)
/* Stick a call to __register_frame_info into the .init section. For some /* Stick a call to __register_frame_info into the .init section. For some
reason calls with no arguments work more reliably in .init, so stick the reason calls with no arguments work more reliably in .init, so stick the
@ -472,18 +462,6 @@ frame_dummy (void)
#endif /* CRT_GET_RFIB_DATA */ #endif /* CRT_GET_RFIB_DATA */
#endif /* USE_EH_FRAME_REGISTRY */ #endif /* USE_EH_FRAME_REGISTRY */
#ifdef __LIBGCC_JCR_SECTION_NAME__
void **jcr_list;
__asm ("" : "=g" (jcr_list) : "0" (__JCR_LIST__));
if (__builtin_expect (*jcr_list != NULL, 0))
{
void (*register_classes) (void *) = _Jv_RegisterClasses;
__asm ("" : "+r" (register_classes));
if (register_classes)
register_classes (jcr_list);
}
#endif /* __LIBGCC_JCR_SECTION_NAME__ */
#if USE_TM_CLONE_REGISTRY #if USE_TM_CLONE_REGISTRY
register_tm_clones (); register_tm_clones ();
#endif /* USE_TM_CLONE_REGISTRY */ #endif /* USE_TM_CLONE_REGISTRY */
@ -496,7 +474,7 @@ static func_ptr __frame_dummy_init_array_entry[]
__attribute__ ((__used__, section(".init_array"), aligned(sizeof(func_ptr)))) __attribute__ ((__used__, section(".init_array"), aligned(sizeof(func_ptr))))
= { frame_dummy }; = { frame_dummy };
#endif /* !defined(__LIBGCC_INIT_SECTION_ASM_OP__) */ #endif /* !defined(__LIBGCC_INIT_SECTION_ASM_OP__) */
#endif /* USE_EH_FRAME_REGISTRY || __LIBGCC_JCR_SECTION_NAME__ || USE_TM_CLONE_REGISTRY */ #endif /* USE_EH_FRAME_REGISTRY || USE_TM_CLONE_REGISTRY */
#else /* OBJECT_FORMAT_ELF */ #else /* OBJECT_FORMAT_ELF */
@ -564,7 +542,6 @@ __do_global_dtors (void)
} }
#if defined(USE_EH_FRAME_REGISTRY) \ #if defined(USE_EH_FRAME_REGISTRY) \
|| defined(__LIBGCC_JCR_SECTION_NAME__) \
|| defined(USE_TM_CLONE_REGISTRY) || defined(USE_TM_CLONE_REGISTRY)
/* A helper function for __do_global_ctors, which is in crtend.o. Here /* A helper function for __do_global_ctors, which is in crtend.o. Here
in crtbegin.o, we can reference a couple of symbols not visible there. in crtbegin.o, we can reference a couple of symbols not visible there.
@ -579,23 +556,11 @@ __do_global_ctors_1(void)
__register_frame_info (__EH_FRAME_BEGIN__, &object); __register_frame_info (__EH_FRAME_BEGIN__, &object);
#endif #endif
#ifdef __LIBGCC_JCR_SECTION_NAME__
void **jcr_list;
__asm ("" : "=g" (jcr_list) : "0" (__JCR_LIST__));
if (__builtin_expect (*jcr_list != NULL, 0))
{
void (*register_classes) (void *) = _Jv_RegisterClasses;
__asm ("" : "+r" (register_classes));
if (register_classes)
register_classes (jcr_list);
}
#endif
#if USE_TM_CLONE_REGISTRY #if USE_TM_CLONE_REGISTRY
register_tm_clones (); register_tm_clones ();
#endif /* USE_TM_CLONE_REGISTRY */ #endif /* USE_TM_CLONE_REGISTRY */
} }
#endif /* USE_EH_FRAME_REGISTRY || __LIBGCC_JCR_SECTION_NAME__ || USE_TM_CLONE_REGISTRY */ #endif /* USE_EH_FRAME_REGISTRY || USE_TM_CLONE_REGISTRY */
#else /* ! __LIBGCC_INIT_SECTION_ASM_OP__ && ! HAS_INIT_SECTION */ #else /* ! __LIBGCC_INIT_SECTION_ASM_OP__ && ! HAS_INIT_SECTION */
#error "What are you doing with crtstuff.c, then?" #error "What are you doing with crtstuff.c, then?"
@ -671,14 +636,6 @@ STATIC EH_FRAME_SECTION_CONST int32 __FRAME_END__[]
= { 0 }; = { 0 };
#endif /* __LIBGCC_EH_FRAME_SECTION_NAME__ */ #endif /* __LIBGCC_EH_FRAME_SECTION_NAME__ */
#ifdef __LIBGCC_JCR_SECTION_NAME__
/* Null terminate the .jcr section array. */
STATIC void *__JCR_END__[1]
__attribute__ ((used, section(__LIBGCC_JCR_SECTION_NAME__),
aligned(sizeof(void *))))
= { 0 };
#endif /* __LIBGCC_JCR_SECTION_NAME__ */
#if USE_TM_CLONE_REGISTRY #if USE_TM_CLONE_REGISTRY
# ifndef HAVE_GAS_HIDDEN # ifndef HAVE_GAS_HIDDEN
static static
@ -757,7 +714,6 @@ __do_global_ctors (void)
{ {
func_ptr *p; func_ptr *p;
#if defined(USE_EH_FRAME_REGISTRY) \ #if defined(USE_EH_FRAME_REGISTRY) \
|| defined(__LIBGCC_JCR_SECTION_NAME__) \
|| defined(USE_TM_CLONE_REGISTRY) || defined(USE_TM_CLONE_REGISTRY)
__do_global_ctors_1(); __do_global_ctors_1();
#endif #endif