From 967262117f0c838fe8a9226484bf6e014c86f0ba Mon Sep 17 00:00:00 2001 From: Jozef Lawrynowicz Date: Tue, 29 Oct 2019 13:02:08 +0000 Subject: [PATCH 2/3] libgcc: Dont define __do_global_dtors_aux if it will be empty libgcc/ChangeLog: 2019-11-06 Jozef Lawrynowicz * crtstuff.c (__do_global_dtors_aux): Wrap in #if so it's only defined if it will have contents. --- libgcc/crtstuff.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c index 9a3247b7848..0b0a0b865fe 100644 --- a/libgcc/crtstuff.c +++ b/libgcc/crtstuff.c @@ -368,8 +368,12 @@ extern void __cxa_finalize (void *) TARGET_ATTRIBUTE_WEAK; On some systems, this routine is run more than once from the .fini, when exit is called recursively, so we arrange to remember where in the list we left off processing, and we resume at that point, - should we be re-invoked. */ + should we be re-invoked. + This routine does not need to be run if none of the following clauses are + true, as it will not do anything, so can be removed. */ +#if defined(CRTSTUFFS_O) || !defined(FINI_ARRAY_SECTION_ASM_OP) \ + || USE_TM_CLONE_REGISTRY || USE_EH_FRAME_REGISTRY static void __attribute__((used)) __do_global_dtors_aux (void) { @@ -455,6 +459,9 @@ __do_global_dtors_aux_1 (void) CRT_CALL_STATIC_FUNCTION (__LIBGCC_INIT_SECTION_ASM_OP__, __do_global_dtors_aux_1) #endif +#endif /* defined(CRTSTUFFS_O) || !defined(FINI_ARRAY_SECTION_ASM_OP) + || defined(USE_TM_CLONE_REGISTRY) || defined(USE_EH_FRAME_REGISTRY) */ + #if USE_EH_FRAME_REGISTRY || USE_TM_CLONE_REGISTRY /* Stick a call to __register_frame_info into the .init section. For some -- 2.17.1