diff --git a/rtl/inc/innr.inc b/rtl/inc/innr.inc index bdf611e57d..c33db3c28b 100644 --- a/rtl/inc/innr.inc +++ b/rtl/inc/innr.inc @@ -64,6 +64,9 @@ const fpc_in_slice = 53; fpc_in_move_x = 54; fpc_in_fillchar_x = 55; + fpc_in_get_frame = 56; + fpc_in_get_caller_addr = 57; + fpc_in_get_caller_frame = 58; { Internal constant functions } fpc_in_const_sqr = 100; diff --git a/rtl/inc/systemh.inc b/rtl/inc/systemh.inc index 71923fc317..04a9e74eab 100644 --- a/rtl/inc/systemh.inc +++ b/rtl/inc/systemh.inc @@ -608,9 +608,15 @@ Procedure getdir(drivenr:byte;var dir:ansistring); *****************************************************************************} { os independent calls to allow backtraces } +{$IFDEF INTERNAL_BACKTRACE} +function get_frame:pointer;[INTERNPROC:fpc_in_get_frame]; +function get_caller_addr(framebp:pointer):pointer;[INTERNPROC:fpc_in_get_caller_addr]; +function get_caller_frame(framebp:pointer):pointer;[INTERNPROC:fpc_in_get_caller_frame]; +{$ELSE} function get_frame:pointer;{$ifdef SYSTEMINLINE}inline;{$endif} function get_caller_addr(framebp:pointer):pointer;{$ifdef SYSTEMINLINE}inline;{$endif} function get_caller_frame(framebp:pointer):pointer;{$ifdef SYSTEMINLINE}inline;{$endif} +{$ENDIF} Function IOResult:Word;{$ifdef SYSTEMINLINE}inline;{$endif} Function Sptr:Pointer;{$ifdef SYSTEMINLINE}inline;{$endif}[internconst:fpc_in_const_ptr];