0,0 → 1,64 |
/* |
* crt1.c |
* This file has no copyright assigned and is placed in the Public Domain. |
* This file is a part of the mingw-runtime package. |
* No warranty is given; refer to the file DISCLAIMER within the package. |
* |
* Source code for the startup proceedures used by all programs. This code |
* is compiled to make crt1.o, which should be located in the library path. |
* |
*/ |
|
/* Hide the declaration of _fmode with dllimport attribute in stdlib.h to |
avoid problems with older GCC. */ |
|
#include <newlib.h> |
#include <stdint.h> |
#include <stdlib.h> |
#include <string.h> |
#include <stdio.h> |
|
|
typedef void (*ctp)(); |
static void __do_global_ctors () |
{ |
extern int __CTOR_LIST__; |
int *c = &__CTOR_LIST__; |
c++; |
while (*c) |
{ |
ctp d = (ctp)*c; |
(d)(); |
c++; |
} |
} |
|
void *load_libc(); |
void __main (){}; |
|
void* get_entry_point(void *raw); |
|
void _pei386_runtime_relocator (void){}; |
|
void __attribute__((noreturn)) |
__crt_startup (void) |
{ |
struct app_hdr *header; |
void *img; |
void __attribute__((noreturn)) (*entry)(void *img); |
|
// _pei386_runtime_relocator(); |
|
img = load_libc(); |
|
if(img == NULL) |
{ |
asm ("int $0x40" ::"a"(-1)); |
}; |
|
entry = get_entry_point(img); |
entry(img); |
} |
|
|
|