haiku: pass the stackpointer from the startup code. this adjust stacktop to be closer to the actual stacktop, and fixes shallow stacktraces

git-svn-id: trunk@40843 -
This commit is contained in:
Károly Balogh 2019-01-11 19:40:08 +00:00
parent 04f9d8b350
commit d3c0762af0
3 changed files with 11 additions and 0 deletions

View File

@ -21,6 +21,7 @@ implementation
{ Bindings to RTL }
var
initialstkptr: pointer; public name '__stkptr';
argc: longint; public name 'operatingsystem_parameter_argc';
argv: pointer; public name 'operatingsystem_parameter_argv';
envp: pointer; public name 'operatingsystem_parameter_envp';
@ -43,6 +44,7 @@ procedure __exit(status: longint); cdecl; external libc name 'exit';
function _FPC_proc_start(_argc: longint; _argv: pointer; _envp: pointer): longint; cdecl; public name '_start';
begin
initialstkptr:=get_frame;
argc:=_argc;
argv:=_argv;
envp:=_envp;

View File

@ -22,6 +22,7 @@ implementation
{ Bindings to RTL }
var
initialstkptr: pointer; public name '__stkptr';
argc: longint; public name 'operatingsystem_parameter_argc';
argv: pointer; public name 'operatingsystem_parameter_argv';
envp: pointer; public name 'operatingsystem_parameter_envp';
@ -42,6 +43,7 @@ procedure __exit(status: longint); cdecl; external libc name 'exit';
procedure _FPC_shared_lib_start; cdecl; public name 'initialize_after';
begin
initialstkptr:=get_frame;
argc:=__libc_argc;
argv:=__libc_argv;
envp:=environ;

View File

@ -24,6 +24,9 @@ interface
implementation
var
initialstkptr : Pointer; external name '__stkptr';
procedure debugger(s : PChar); cdecl; external 'root' name 'debugger';
function disable_debugger(state : integer): integer; cdecl; external 'root' name 'disable_debugger';
@ -272,7 +275,11 @@ end;
begin
IsConsole := TRUE;
StackLength := CheckInitialStkLen(InitialStkLen);
{$if FPC_FULLVERSION >= 30301}
StackBottom := initialstkptr - StackLength;
{$else}
StackBottom := Sptr - StackLength;
{$endif}
ReturnNilIfGrowHeapFails := False;
{ Set up signals handlers }