mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-05 22:10:27 +02:00
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:
parent
04f9d8b350
commit
d3c0762af0
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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 }
|
||||
|
Loading…
Reference in New Issue
Block a user