* config/msp430/msp430.md (msp430_refsym_need_exit): New.
* config/msp430/msp430.c (msp430_expand_epilogue): Call it
whenever main() has an epilogue.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207334
138bc75d-0d04-0410-961f-
82ee72b054a4
+2014-01-30 DJ Delorie <dj@redhat.com>
+
+ * config/msp430/msp430.h (LIB_SPEC): Add -lcrt
+ * config/msp430/msp430.md (msp430_refsym_need_exit): New.
+ * config/msp430/msp430.c (msp430_expand_epilogue): Call it
+ whenever main() has an epilogue.
+
2014-01-30 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/rs6000.c (rs6000_expand_vector_init): Remove
emit_insn (gen_epilogue_start_marker ());
+ if (cfun->decl && strcmp (IDENTIFIER_POINTER (DECL_NAME (cfun->decl)), "main") == 0)
+ emit_insn (gen_msp430_refsym_need_exit ());
+
if (is_wakeup_func ())
/* Clear the SCG1, SCG0, OSCOFF and CPUOFF bits in the saved copy of the
status register current residing on the stack. When this function
--start-group \
-lc \
-lgcc \
+-lcrt \
%{msim:-lsim} \
%{!msim:-lnosys} \
--end-group \
UNS_POP_INTR
UNS_BIC_SR
UNS_BIS_SR
+
+ UNS_REFSYM_NEED_EXIT
])
(include "predicates.md")
"; start of epilogue"
)
+;; This makes the linker add a call to exit() after the call to main()
+;; in crt0
+(define_insn "msp430_refsym_need_exit"
+ [(unspec_volatile [(const_int 0)] UNS_REFSYM_NEED_EXIT)]
+ ""
+ ".refsym\t__crt0_call_exit"
+ )
+
;;------------------------------------------------------------
;; Jumps