Tool/software: Code Composer Studio
Hi,
I am debugging a code using CCS v.7.1.0 and sometimes during the code execution the debug window shows a code whose name is exit.c.
I am a little apprehensive that it is a problem from my code.
What does exactly it mean?
The exit.c code is bellow.
#include <stdlib.h>
#include <_lock.h>
#include <pprof.h>
#include <stdio.h>
#ifdef __TI_RTS_BUILD
/*---------------------------------------------------------------------------*/
/* __TI_default_exit indicates that the default TI exit routine is being */
/* used. The linker makes assumptions about what exit does when this symbol */
/* is seen. This symbols should NOT be defined if a customized exit routine */
/* is used. */
/*---------------------------------------------------------------------------*/
__asm("__TI_default_exit .set 1");
#endif
extern void (*__TI_cleanup_ptr)(void);
extern void (*__TI_dtors_ptr)(int);
typedef void (*PTRFUNC)();
int __TI_enable_exit_profile_output = 1;
/****************************************************************************/
/* EXIT() - NORMAL PROGRAM TERMINATION. */
/****************************************************************************/
void exit(int status)
{
/*----------------------------------------------------------------------*/
/* Output profile info if we have a valid path profile output handler */
/*----------------------------------------------------------------------*/
if (__TI_enable_exit_profile_output &&
_symval(&__TI_pprof_out_hndl) != (unsigned long)-1)
{
PTRFUNC ppfunc = (PTRFUNC)(&__TI_pprof_out_hndl);
(ppfunc)();
}
/*-------------------------------------------------------------------*/
/* MUST LOCK WHEN ACCESSING GLOBALS, like __TI_dtors_ptr, */
/* __TI_cleanup_ptr */
/*-------------------------------------------------------------------*/
_lock();
/*-------------------------------------------------------------------*/
/* BOTH ATEXIT FUNCTIONS AND STATIC OBJECT DESTRUCTORS ARE */
/* REGISTERED IN A LINK LIST POINTED BY __TI_dtors_ptr, NOW WALK */
/* THROUGH THIS LIST TO CALL THEM. */
/*-------------------------------------------------------------------*/
if (__TI_dtors_ptr) (*__TI_dtors_ptr)(status);
/*-------------------------------------------------------------------*/
/* IF FILES ARE POSSIBLY OPEN, __TI_cleanup_ptr() WILL BE SETUP TO */
/* CLOSE THEM. */
/*-------------------------------------------------------------------*/
if (__TI_cleanup_ptr) (*__TI_cleanup_ptr)();
_unlock();
abort();
}
/****************************************************************************/
/* ABORT - ABNORMAL PROGRAM TERMINATION. CURRENTLY JUST HALTS EXECUTION. */
/****************************************************************************/
void abort(void)
{
/*-------------------------------------------------------------------*/
/* SET C$$EXIT LABEL SO THE DEBUGGER KNOWS WHEN THE C++ PROGRAM HAS */
/* COMPLETED. THIS CAN BE REMOVED IF THE DEBUGGER IS NOT USED. */
/*-------------------------------------------------------------------*/
__asm(" .global C$$EXIT");
__asm("C$$EXIT: nop");
for (;;); /* SPINS FOREVER */
}