libgcc: Dont define __do_global_dtors_aux if it will be empty
authorJozef Lawrynowicz <jozef.l@mittosystems.com>
Mon, 9 Dec 2019 11:41:07 +0000 (11:41 +0000)
committerJozef Lawrynowicz <jozefl@gcc.gnu.org>
Mon, 9 Dec 2019 11:41:07 +0000 (11:41 +0000)
2019-12-09  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* crtstuff.c (__do_global_dtors_aux): Wrap in #if so it's only defined
if it will have contents.

From-SVN: r279123

libgcc/ChangeLog
libgcc/crtstuff.c

index 78aefe8b437475417c96bd1f91d7565f12cb87f6..0359f3a31167b67a6244ccdb2241021678942620 100644 (file)
@@ -1,3 +1,8 @@
+2019-12-09  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+       * crtstuff.c (__do_global_dtors_aux): Wrap in #if so it's only defined
+       if it will have contents.
+
 2019-12-05  Georg-Johann Lay  <avr@gjlay.de>
 
        PR target/92055
index ae6328d317de8381c0a15c9a8b9d1043ae484281..80cc78d0dcda0c5fb97d943801322f16dc799f75 100644 (file)
@@ -364,8 +364,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)
 {
@@ -451,6 +455,8 @@ __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 defined(USE_EH_FRAME_REGISTRY) || USE_TM_CLONE_REGISTRY
 /* Stick a call to __register_frame_info into the .init section.  For some