From eb263680bb4e01371e38f4063b7bdbf156ee7e72 Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Tue, 20 Feb 1996 16:26:19 +0000 Subject: [PATCH] Ported to CW8 --- Mac/mwerks/macuseshlstart.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Mac/mwerks/macuseshlstart.c b/Mac/mwerks/macuseshlstart.c index d26a89fd3a1..32b808a50a7 100644 --- a/Mac/mwerks/macuseshlstart.c +++ b/Mac/mwerks/macuseshlstart.c @@ -7,15 +7,30 @@ #include +#ifdef PRE_CW8 extern jmp_buf __program_exit; /* exit() does a longjmp() to here */ extern void (*__atexit_hook)(void); /* atexit() sets this up if it is ever called */ extern void (*___atexit_hook)(void); /* _atexit() sets this up if it is ever called */ extern int __aborting; /* abort() sets this and longjmps to __program_exit */ +#endif + +/* + * clear_stackframe_backlink - set 0(SP) to 0 + * + */ + +static asm void clear_stackframe_backlink(void) +{ + li r3,0 + stw r3,0(SP) + blr +} void __start(void) { char *argv = 0; +#ifdef PRE_CW8 if (setjmp(__program_exit) == 0) { // set up jmp_buf for exit() main(0, &argv); // call main(argc, argv) if (__atexit_hook) @@ -26,4 +41,9 @@ void __start(void) ___atexit_hook(); // call _atexit() procs } // ExitToShell(); +#else + clear_stackframe_backlink(); + main(0, &argv); + exit(0); +#endif }