diff options
author | Anthony Green <green@moxielogic.com> | 2003-06-06 16:07:57 +0000 |
---|---|---|
committer | Anthony Green <green@moxielogic.com> | 2003-06-06 16:07:57 +0000 |
commit | 045e4d2e0829b6c07ef10171bf5d00ab85cbb497 (patch) | |
tree | 36b49868598b46c77d7edeb97df54c291c5f881e /libgloss/iq2000/crt1.c | |
parent | 75d7d177004358ba5e410a2cd98f2249b6c4e1b3 (diff) | |
download | cygnal-045e4d2e0829b6c07ef10171bf5d00ab85cbb497.tar.gz cygnal-045e4d2e0829b6c07ef10171bf5d00ab85cbb497.tar.bz2 cygnal-045e4d2e0829b6c07ef10171bf5d00ab85cbb497.zip |
iq2000 port.
Diffstat (limited to 'libgloss/iq2000/crt1.c')
-rw-r--r-- | libgloss/iq2000/crt1.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/libgloss/iq2000/crt1.c b/libgloss/iq2000/crt1.c new file mode 100644 index 000000000..fb333a871 --- /dev/null +++ b/libgloss/iq2000/crt1.c @@ -0,0 +1,31 @@ + + +/* This object reserves enough space for an EH frame initialization +object. */ + +struct object { + void *reserve[7]; +}; + + +void _main () +{ + static int initialized; + static struct object object; + if (! initialized) + { + typedef void (*pfunc) (); + extern pfunc __ctors[]; + extern pfunc __ctors_end[]; + extern unsigned char __eh_frame_begin[]; + extern void __register_frame_info (void *, struct object *); + + pfunc *p; + + initialized = 1; + for (p = __ctors_end; p > __ctors; ) + (*--p) (); + + __register_frame_info (__eh_frame_begin, &object); + } +} |