Wed May 29 00:57:37 1996 David Mosberger-Tang <davidm@azstarnet.com>
authorroland <roland>
Sun, 2 Jun 1996 18:48:56 +0000 (18:48 +0000)
committerroland <roland>
Sun, 2 Jun 1996 18:48:56 +0000 (18:48 +0000)
* csu/initfini.c (_fini): Tell gcc that _fini is not a leaf
  function by having it contain a dummy function call.

csu/initfini.c

index a91c3de..2727596 100644 (file)
@@ -99,6 +99,15 @@ _fini (void)
      to crtn.s-new, followed by the function epilogue.  */
   asm ("\nEOF.crti.fini\
 \n\
+cat > /dev/null <<\\EOF.fini.skip");
+
+  /* Let GCC know that _fini is not a leaf function by having a dummy
+     function call here.  We arrange for this call to be omitted from
+     either crt file.  */
+  i_am_not_a_leaf();
+
+  asm ("\nEOF.fini.skip\
+\n\
        fgrep .fini crti.s-new >>crtn.s-new\n\
        cat >> crtn.s-new <<\\EOF.crtn.fini");
 }