Explorar el Código

Merged revision 30095 from http://svn.freepascal.org/svn/fpc/trunk
This merge fixes disassembly error from Stack Window
------------------------------------------------------------------------
r30095 | pierre | 2015-03-04 18:37:57 +0100 (Wed, 04 Mar 2015) | 3 lines
Changed paths:
M /trunk/packages/gdbint/src/gdbint.pp

Add missing gdbarch field for annotate_frame_begin for version 7.0 or above
Try to cope with buffering problems to catch complete argument list

------------------------------------------------------------------------

git-svn-id: branches/fixes_3_0@30098 -

pierre hace 10 años
padre
commit
f08a8522be
Se han modificado 1 ficheros con 10 adiciones y 1 borrados
  1. 10 1
      packages/gdbint/src/gdbint.pp

+ 10 - 1
packages/gdbint/src/gdbint.pp

@@ -215,6 +215,7 @@ interface
   {$define GDB_TARGET_CLOSE_HAS_PTARGET_ARG}
   {$define GDB_HAS_BP_NONE}
   {$define GDB_USE_XSTRVPRINTF}
+  {$define GDB_ANNOTATE_FRAME_BEGIN_HAS_GDBARCH_FIELD}
 {$endif def GDB_V7}
 
 
@@ -2272,7 +2273,11 @@ begin
 end;
 
 
-procedure annotate_frame_begin(level:longint;pc:CORE_ADDR);cdecl;public;
+procedure annotate_frame_begin(level:longint;
+{$ifdef GDB_ANNOTATE_FRAME_BEGIN_HAS_GDBARCH_FIELD}
+  gdbarch : pointer;
+{$endif GDB_ANNOTATE_FRAME_BEGIN_HAS_GDBARCH_FIELD}
+pc:CORE_ADDR);cdecl;public;
 begin
 {$ifdef Verbose}
   Debug('|frame_begin(%d,%ld)|');
@@ -2430,6 +2435,10 @@ begin
         begin
           if (gdboutputbuf.buf[args_end-1]=#10) then
            dec(args_end);
+          { Flushing is not always correct for args,
+            try to move on to next closing brace }
+          while (args_end<file_start) and (gdboutputbuf.buf[args_end-1]<>')') do
+            inc(args_end);
           c:=gdboutputbuf.buf[args_end];
           gdboutputbuf.buf[args_end]:=#0;
           fe^.args:=strnew(gdboutputbuf.buf+args_start);