summaryrefslogtreecommitdiff
path: root/packages/gdbint
diff options
context:
space:
mode:
authorpierre <pierre@3ad0048d-3df7-0310-abae-a5850022a9f2>2015-03-04 17:37:57 +0000
committerpierre <pierre@3ad0048d-3df7-0310-abae-a5850022a9f2>2015-03-04 17:37:57 +0000
commit91c97f8061c4fe069c0c5b38de78ae75708e3fd0 (patch)
treebdbf66b8d565074a6e6a0e54c762f7be237df57e /packages/gdbint
parentb937c9ab4452ebaf5624d22fb1f1499e12d272fe (diff)
downloadfpc-91c97f8061c4fe069c0c5b38de78ae75708e3fd0.tar.gz
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: http://svn.freepascal.org/svn/fpc/trunk@30095 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/gdbint')
-rw-r--r--packages/gdbint/src/gdbint.pp11
1 files changed, 10 insertions, 1 deletions
diff --git a/packages/gdbint/src/gdbint.pp b/packages/gdbint/src/gdbint.pp
index 654271d23e..d7dabe0946 100644
--- a/packages/gdbint/src/gdbint.pp
+++ b/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}
@@ -2277,7 +2278,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)|');
@@ -2435,6 +2440,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);