123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #include <stdlib.h>
- #undef GMON_SUPPORT
- #define SECTION(x) asm (".section " x )
- asm ("\n/*@HEADER_ENDS*/");
- extern void dummy (void (*foo) (void));
- void
- dummy (void (*foo) (void))
- {
- if (foo)
- (*foo) ();
- }
- asm ("\n/*@_init_PROLOG_BEGINS*/");
- #ifdef GMON_SUPPORT
- static void
- call_gmon_start(void)
- {
- extern void __gmon_start__ (void) __attribute__ ((weak));
- void (*gmon_start) (void) = __gmon_start__;
- if (gmon_start)
- gmon_start ();
- }
- #endif
- SECTION (".init");
- extern void _init (void);
- void
- _init (void)
- {
- #ifdef GMON_SUPPORT
-
- call_gmon_start ();
- #endif
- asm ("ALIGN");
- asm("END_INIT");
-
- asm ("\n/*@_init_PROLOG_ENDS*/");
- asm ("\n/*@_init_EPILOG_BEGINS*/");
- SECTION(".init");
- }
- asm ("END_INIT");
- asm ("\n/*@_init_EPILOG_ENDS*/");
- asm ("\n/*@_fini_PROLOG_BEGINS*/");
- SECTION (".fini");
- extern void _fini (void);
- void
- _fini (void)
- {
-
- asm ("ALIGN");
- asm ("END_FINI");
- asm ("\n/*@_fini_PROLOG_ENDS*/");
- {
-
- extern void i_am_not_a_leaf (void);
- i_am_not_a_leaf ();
- }
-
- asm ("\n/*@_fini_EPILOG_BEGINS*/");
- SECTION (".fini");
- }
- asm ("END_FINI");
- asm ("\n/*@_fini_EPILOG_ENDS*/");
- asm ("\n/*@TRAILER_BEGINS*/");
|