[C++] fix the ctors initialization issue

This commit is contained in:
Bernard Xiong
2014-11-01 14:12:58 +08:00
parent 38be10cf89
commit 1974bec8bf
4 changed files with 68 additions and 3 deletions

View File

@@ -0,0 +1,24 @@
#include <rtthread.h>
int cplusplus_system_init(void)
{
#if defined(__GNUC__) && !defined(__CC_ARM)
extern unsigned char __ctors_start__;
extern unsigned char __ctors_end__;
typedef void (*func)(void);
/* .ctors initalization */
func *ctors_func;
for (ctors_func = (func *)&__ctors_start__;
ctors_func < (func *)&__ctors_end__;
ctors_func ++)
{
(*ctors_func)();
}
#endif
return 0;
}
INIT_COMPONENT_EXPORT(cplusplus_system_init);