mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-16 16:49:12 +02:00
GdbmiDebugger: fix target registers for AVR. Patch by Christo Crause
git-svn-id: trunk@61552 -
This commit is contained in:
parent
9be3a4b216
commit
e31b6f3a1c
@ -116,7 +116,7 @@ type
|
|||||||
dfSetBreakPending
|
dfSetBreakPending
|
||||||
);
|
);
|
||||||
|
|
||||||
TTargetRegisterIdent = (r0, r1, r2);
|
TTargetRegisterIdent = (r0, r1, r2, rBreakErrNo);
|
||||||
// Target info
|
// Target info
|
||||||
TGDBMITargetInfo = record
|
TGDBMITargetInfo = record
|
||||||
TargetPID: Integer;
|
TargetPID: Integer;
|
||||||
@ -2590,9 +2590,10 @@ begin
|
|||||||
TargetInfo^.TargetRegisters[r2] := '$x2';
|
TargetInfo^.TargetRegisters[r2] := '$x2';
|
||||||
end;
|
end;
|
||||||
12: begin // avr
|
12: begin // avr
|
||||||
TargetInfo^.TargetRegisters[r0] := '$r0';
|
TargetInfo^.TargetRegisters[r0] := '$r24+$r25*256'; // Not valid for FPC_BREAK_ERROR
|
||||||
TargetInfo^.TargetRegisters[r1] := '$r1';
|
TargetInfo^.TargetRegisters[rBreakErrNo] := '$r22+$r23*256+$r24*65536+$r25*16777216';
|
||||||
TargetInfo^.TargetRegisters[r2] := '$r2';
|
TargetInfo^.TargetRegisters[r1] := '0';
|
||||||
|
TargetInfo^.TargetRegisters[r2] := '0';
|
||||||
end;
|
end;
|
||||||
else
|
else
|
||||||
TargetInfo^.TargetRegisters[r0] := '';
|
TargetInfo^.TargetRegisters[r0] := '';
|
||||||
@ -5887,7 +5888,11 @@ function TGDBMIDebuggerCommandExecute.ProcessStopped(const AParams: String;
|
|||||||
FTheDebugger.QueueExecuteLock;
|
FTheDebugger.QueueExecuteLock;
|
||||||
try
|
try
|
||||||
if tfRTLUsesRegCall in TargetInfo^.TargetFlags
|
if tfRTLUsesRegCall in TargetInfo^.TargetFlags
|
||||||
|
then begin
|
||||||
|
if TargetInfo^.TargetRegisters[rBreakErrNo] = ''
|
||||||
then ErrorNo := GetIntValue(TargetInfo^.TargetRegisters[r0], [])
|
then ErrorNo := GetIntValue(TargetInfo^.TargetRegisters[r0], [])
|
||||||
|
else ErrorNo := GetIntValue(TargetInfo^.TargetRegisters[rBreakErrNo], [])
|
||||||
|
end
|
||||||
else ErrorNo := Integer(GetData('$fp+%d', [TargetInfo^.TargetPtrSize * 2]));
|
else ErrorNo := Integer(GetData('$fp+%d', [TargetInfo^.TargetPtrSize * 2]));
|
||||||
ErrorNo := ErrorNo and $FFFF;
|
ErrorNo := ErrorNo and $FFFF;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user