// (2)
maxarg = 0;
- stksize = 0;
+ stksize = initstksize;
snprint(namebuf, sizeof(namebuf), "init_%s_function", filename);
EXTERN int32 vargen;
EXTERN int32 exportgen;
EXTERN int32 maxarg;
-EXTERN int32 stksize;
+EXTERN int32 stksize; // stack size for current frame
+EXTERN int32 initstksize; // stack size for init function
EXTERN ushort blockgen; // max block number
EXTERN ushort block; // current block number
* declarations
*/
xdcl:
- common_dcl
+ { stksize = initstksize; } common_dcl
+ {
+ $$ = $2;
+ initstksize = stksize;
+ }
| xfndcl
{
$$ = N;
{
$$ = N;
}
-| LEXPORT { exportadj = 1; } common_dcl
+| LEXPORT { exportadj = 1; stksize = initstksize; } common_dcl
{
$$ = $3;
exportadj = 0;
+ initstksize = stksize;
}
| LEXPORT '(' export_list_r ')'
{