Prechádzať zdrojové kódy

Use two parameter versions of get_caller_frame and get_caller_addr to get correct results for MIPS

git-svn-id: trunk@21843 -
pierre 13 rokov pred
rodič
commit
bc1ecc2e94
1 zmenil súbory, kde vykonal 6 pridanie a 3 odobranie
  1. 6 3
      rtl/inc/except.inc

+ 6 - 3
rtl/inc/except.inc

@@ -102,6 +102,7 @@ var
   frames      : PPointer;
   prev_frame,
   curr_frame,
+  curr_addr,
   caller_frame,
   caller_addr : Pointer;
 begin
@@ -119,15 +120,16 @@ begin
 
   { Backtrace }
   curr_frame:=AFrame;
-  prev_frame:=get_frame;
+  curr_addr:=AnAddr;
+  prev_frame:=get_caller_frame(curr_addr, curr_frame);
   frames:=nil;
   framebufsize:=0;
   framecount:=0;
   while (framecount<RaiseMaxFrameCount) and (curr_frame > prev_frame) and
         (curr_frame<(StackBottom + StackLength)) do
    Begin
-     caller_addr := get_caller_addr(curr_frame);
-     caller_frame := get_caller_frame(curr_frame);
+     caller_addr := get_caller_addr(curr_frame, curr_addr);
+     caller_frame := get_caller_frame(curr_frame, curr_addr);
      if (caller_addr=nil) or
         (caller_frame=nil) then
        break;
@@ -139,6 +141,7 @@ begin
      frames[framecount]:=caller_addr;
      inc(framecount);
      prev_frame:=curr_frame;
+     curr_addr:=caller_addr;
      curr_frame:=caller_frame;
    End;
   NewObj^.framecount:=framecount;