mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-21 22:50:26 +02:00
+ code to handle signals
This commit is contained in:
parent
4b6e96e915
commit
f60f6dccfc
@ -351,6 +351,7 @@ type
|
|||||||
got_error,
|
got_error,
|
||||||
reset_command,
|
reset_command,
|
||||||
call_reset,
|
call_reset,
|
||||||
|
signaled,
|
||||||
Debuggee_started : boolean;
|
Debuggee_started : boolean;
|
||||||
{ frames and frame info while recording a frame }
|
{ frames and frame info while recording a frame }
|
||||||
frames : ppframeentry;
|
frames : ppframeentry;
|
||||||
@ -365,6 +366,8 @@ type
|
|||||||
current_line_number,
|
current_line_number,
|
||||||
signal_start,
|
signal_start,
|
||||||
signal_end,
|
signal_end,
|
||||||
|
signal_name_start,
|
||||||
|
signal_name_end,
|
||||||
error_start,
|
error_start,
|
||||||
error_end,
|
error_end,
|
||||||
function_start,
|
function_start,
|
||||||
@ -375,6 +378,8 @@ type
|
|||||||
file_end,
|
file_end,
|
||||||
line_start,
|
line_start,
|
||||||
line_end : longint;
|
line_end : longint;
|
||||||
|
signal_name,
|
||||||
|
signal_string : pchar;
|
||||||
current_pc : CORE_ADDR;
|
current_pc : CORE_ADDR;
|
||||||
{ breakpoint }
|
{ breakpoint }
|
||||||
last_breakpoint_number,
|
last_breakpoint_number,
|
||||||
@ -412,6 +417,7 @@ type
|
|||||||
procedure DoStartSession;virtual;
|
procedure DoStartSession;virtual;
|
||||||
procedure DoBreakSession;virtual;
|
procedure DoBreakSession;virtual;
|
||||||
procedure DoEndSession(code:longint);virtual;
|
procedure DoEndSession(code:longint);virtual;
|
||||||
|
procedure DoUserSignal;virtual;
|
||||||
procedure DoDebuggerScreen;virtual;
|
procedure DoDebuggerScreen;virtual;
|
||||||
procedure DoUserScreen;virtual;
|
procedure DoUserScreen;virtual;
|
||||||
function AllowQuit : boolean;virtual;
|
function AllowQuit : boolean;virtual;
|
||||||
@ -1284,9 +1290,9 @@ procedure annotate_signal_name;cdecl;public;
|
|||||||
begin
|
begin
|
||||||
{$ifdef Verbose}
|
{$ifdef Verbose}
|
||||||
Debug('|signal_name|');
|
Debug('|signal_name|');
|
||||||
with curr_gdb^ do
|
|
||||||
signal_start:=gdboutputbuf.idx;
|
|
||||||
{$endif}
|
{$endif}
|
||||||
|
with curr_gdb^ do
|
||||||
|
signal_name_start:=gdboutputbuf.idx;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -1295,6 +1301,8 @@ begin
|
|||||||
{$ifdef Verbose}
|
{$ifdef Verbose}
|
||||||
Debug('|signal_name_end|');
|
Debug('|signal_name_end|');
|
||||||
{$endif}
|
{$endif}
|
||||||
|
with curr_gdb^ do
|
||||||
|
signal_name_end:=gdboutputbuf.idx;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -1303,10 +1311,14 @@ begin
|
|||||||
{$ifdef Verbose}
|
{$ifdef Verbose}
|
||||||
Debug('|signal_string|');
|
Debug('|signal_string|');
|
||||||
{$endif}
|
{$endif}
|
||||||
|
with curr_gdb^ do
|
||||||
|
signal_start:=gdboutputbuf.idx;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure annotate_signal_string_end;cdecl;public;
|
procedure annotate_signal_string_end;cdecl;public;
|
||||||
|
var
|
||||||
|
c : char;
|
||||||
begin
|
begin
|
||||||
{$ifdef Verbose}
|
{$ifdef Verbose}
|
||||||
Debug('|signal_string_end|');
|
Debug('|signal_string_end|');
|
||||||
@ -1314,17 +1326,28 @@ begin
|
|||||||
with curr_gdb^ do
|
with curr_gdb^ do
|
||||||
begin
|
begin
|
||||||
signal_end:=gdboutputbuf.idx;
|
signal_end:=gdboutputbuf.idx;
|
||||||
{
|
c:=gdboutputbuf.buf[signal_end];
|
||||||
signal = (char *)alloca(signal_end-signal_start+1);
|
gdboutputbuf.buf[signal_end]:=#0;
|
||||||
strncpy(signal,gdb_output_buffer+signal_start,signal_end-signal_start);
|
if assigned(signal_string) then
|
||||||
signal[signal_end-signal_start] = 0;
|
strdispose(signal_string);
|
||||||
if (user_screen_shown)
|
signal_string:=strnew(gdboutputbuf.buf+signal_start);
|
||||||
__DebuggerScreen();
|
gdboutputbuf.buf[signal_end]:=c;
|
||||||
_UserWarning(WARN_SIGNALED,signal);
|
c:=gdboutputbuf.buf[signal_name_end];
|
||||||
__UserScreen();
|
gdboutputbuf.buf[signal_name_end]:=#0;
|
||||||
|
if assigned(signal_name) then
|
||||||
|
strdispose(signal_name);
|
||||||
|
signal_name:=strnew(gdboutputbuf.buf+signal_name_start);
|
||||||
|
gdboutputbuf.buf[signal_name_end]:=c;
|
||||||
|
if (user_screen_shown) then
|
||||||
|
begin
|
||||||
|
DebuggerScreen;
|
||||||
|
DoUserSignal;
|
||||||
|
UserScreen;
|
||||||
|
end
|
||||||
else
|
else
|
||||||
_UserWarning(WARN_SIGNALED,signal); }
|
DoUserSignal;
|
||||||
call_reset:=true;
|
call_reset:=true;
|
||||||
|
signaled:=false;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1334,6 +1357,8 @@ begin
|
|||||||
{$ifdef Verbose}
|
{$ifdef Verbose}
|
||||||
Debug('|signal|');
|
Debug('|signal|');
|
||||||
{$endif}
|
{$endif}
|
||||||
|
with curr_gdb^ do
|
||||||
|
signaled:=true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -2305,6 +2330,12 @@ begin
|
|||||||
{$endif}
|
{$endif}
|
||||||
{$endif}
|
{$endif}
|
||||||
DoEndSession(code);
|
DoEndSession(code);
|
||||||
|
if assigned(signal_name) then
|
||||||
|
strdispose(signal_name);
|
||||||
|
signal_name:=nil;
|
||||||
|
if assigned(signal_string) then
|
||||||
|
strdispose(signal_string);
|
||||||
|
signal_string:=nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -2362,6 +2393,10 @@ procedure tgdbinterface.DoEndSession(code:longint);
|
|||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure tgdbinterface.DoUserSignal;
|
||||||
|
begin
|
||||||
|
end;
|
||||||
|
|
||||||
procedure tgdbinterface.DoDebuggerScreen;
|
procedure tgdbinterface.DoDebuggerScreen;
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
@ -2524,7 +2559,10 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.2 2002-02-05 11:03:59 marco
|
Revision 1.3 2002-02-06 14:42:45 pierre
|
||||||
|
+ code to handle signals
|
||||||
|
|
||||||
|
Revision 1.2 2002/02/05 11:03:59 marco
|
||||||
* library fix, and define GDB_V502 for BSD
|
* library fix, and define GDB_V502 for BSD
|
||||||
|
|
||||||
Revision 1.1 2002/01/29 17:54:49 peter
|
Revision 1.1 2002/01/29 17:54:49 peter
|
||||||
|
Loading…
Reference in New Issue
Block a user