mirror of
https://github.com/adtools/clib2.git
synced 2025-12-08 14:59:05 +00:00
- Changed the stack layout used for the StackSwap() call.
- Cleaned up the commented-out sections that deal with the SAS/C profiling code. git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14728 87f5fb63-7c3d-0410-a384-fd976d0f7a62
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: stdlib_main.c,v 1.1.1.1 2004-07-26 16:31:58 obarthel Exp $
|
||||
* $Id: stdlib_main.c,v 1.2 2004-09-18 09:03:30 obarthel Exp $
|
||||
*
|
||||
* :ts=4
|
||||
*
|
||||
@ -64,7 +64,10 @@ extern int main(int arg_c,char ** arg_v);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#if 0
|
||||
/* The SAS/C profiling hooks can be used to track call chains. Neat
|
||||
trick, but not always necessary. Don't enable this unless you know
|
||||
what you're doing... */
|
||||
#if defined(__USE_SAS_PROFILING_FOR_MONITORING)
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@ -100,7 +103,7 @@ _EPILOG(REG(a0,char * id))
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif
|
||||
#endif /* __USE_SAS_PROFILING_FOR_MONITORING */
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
@ -164,14 +167,25 @@ call_main(void)
|
||||
/* Go through the constructor list */
|
||||
_init();
|
||||
|
||||
//show_profile_names = TRUE;
|
||||
/* If the SAS/C profiling code is set up for printing function
|
||||
call chains, switch it on now. */
|
||||
#if defined(__USE_SAS_PROFILING_FOR_MONITORING)
|
||||
{
|
||||
show_profile_names = TRUE;
|
||||
}
|
||||
#endif /* __USE_SAS_PROFILING_FOR_MONITORING */
|
||||
|
||||
/* After all these preparations, get this show on the road... */
|
||||
exit(main((int)__argc,(char **)__argv));
|
||||
|
||||
out:
|
||||
|
||||
//show_profile_names = FALSE;
|
||||
/* Switch off function name printing, if it was enabled. */
|
||||
#if defined(__USE_SAS_PROFILING_FOR_MONITORING)
|
||||
{
|
||||
show_profile_names = FALSE;
|
||||
}
|
||||
#endif /* __USE_SAS_PROFILING_FOR_MONITORING */
|
||||
|
||||
/* If we end up here with the __stack_overflow variable
|
||||
* set then the stack overflow handler dropped into
|
||||
@ -398,8 +412,9 @@ _main(void)
|
||||
stack_size = (__stack_size + 15UL) & ~15UL;
|
||||
|
||||
/* We allocate a little more memory so that we can align
|
||||
the stack to a 128 bit boundary. */
|
||||
stk = AllocVec(sizeof(*stk) + 15 + stack_size,MEMF_PUBLIC|MEMF_ANY);
|
||||
the stack to a 128 bit boundary. The extra 20 bytes are
|
||||
to mimic the Task stack setup in dos.library/CreateProc. */
|
||||
stk = AllocVec(sizeof(*stk) + 15 + 20 + stack_size,MEMF_PUBLIC|MEMF_ANY);
|
||||
if(stk == NULL)
|
||||
goto out;
|
||||
|
||||
@ -410,9 +425,12 @@ _main(void)
|
||||
lower = (((ULONG)(stk+1)) + 15UL) & ~15UL;
|
||||
upper = lower + stack_size;
|
||||
|
||||
/* Fill in the lower and upper bounds, then take care of
|
||||
the stack pointer itself. This layout mimics the process
|
||||
creation code in dos.library. */
|
||||
stk->stk_Lower = (APTR)lower;
|
||||
stk->stk_Upper = upper;
|
||||
stk->stk_Pointer = (APTR)upper;
|
||||
stk->stk_Upper = upper - 4;
|
||||
stk->stk_Pointer = (APTR)(upper - 20);
|
||||
|
||||
/* If necessary, set up for stack size usage measurement. */
|
||||
__stack_usage_init(stk);
|
||||
|
||||
Reference in New Issue
Block a user