+ also take the segment portion of the address in lnfodwrf.ParseCompilationUnit

git-svn-id: trunk@39067 -
This commit is contained in:
nickysn 2018-05-20 17:20:29 +00:00
parent 4ce5db5188
commit 1d3ad2b078

View File

@ -150,9 +150,7 @@ type
{ state record for the line info state machine }
TMachineState = record
address : QWord;
{$ifdef CPUI8086}
segment : Word;
{$endif CPUI8086}
segment : TSegment;
file_id : DWord;
line : QWord;
column : DWord;
@ -565,9 +563,7 @@ procedure InitStateRegisters(var state : TMachineState; const aIs_Stmt : Bool8);
begin
with state do begin
address := 0;
{$ifdef CPUI8086}
segment := 0;
{$endif CPUI8086}
file_id := 1;
line := 1;
column := 0;
@ -884,14 +880,18 @@ begin
DEBUG_COMMENT ' epilouge_begin = ', state.epilouge_begin, ' isa = ', state.isa);
if (first_row) then begin
if (state.address > addr) then
if (state.segment > segment) or
((state.segment = segment) and
(state.address > addr)) then
break;
first_row := false;
end;
{ when we have found the address we need to return the previous
line because that contains the call instruction }
if (state.address >= addr) then
if (state.segment > segment) or
((state.segment = segment) and
(state.address >= addr)) then
found:=true
else
begin