| /* gcrt0.c |
| |
| Copyright 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
| |
| This file is part of Cygwin. |
| |
| This software is a copyrighted work licensed under the terms of the |
| Cygwin license. Please consult the file "CYGWIN_LICENSE" for |
| details. */ |
| |
| /* |
| * This file is taken from Cygwin distribution. Please keep it in sync. |
| * The differences should be within __MINGW32__ guard. |
| */ |
| |
| #include <sys/types.h> |
| #include <stdlib.h> |
| |
| #ifdef __MINGW32__ |
| #include <_bsd_types.h> |
| #endif |
| |
| extern u_char etext asm ("etext"); |
| extern u_char eprol asm ("__eprol"); |
| extern void _mcleanup (void); |
| extern void monstartup (size_t, size_t); |
| void _monstartup (void) __attribute__((__constructor__)); |
| |
| /* startup initialization for -pg support */ |
| |
| void |
| _monstartup (void) |
| { |
| static int called; |
| |
| /* Guard against multiple calls that may happen if DLLs are linked |
| with profile option set as well. Addede side benefit is that it |
| makes profiling backward compatible (GCC used to emit a call to |
| _monstartup when compiling main with profiling enabled). */ |
| if (called++) |
| return; |
| |
| monstartup ((size_t) &eprol, (size_t) &etext); |
| atexit (&_mcleanup); |
| } |
| |
| asm (".text"); |
| asm ("__eprol:"); |
| |