+ mark outmost frame in CFI

git-svn-id: branches/debug_eh@41286 -
This commit is contained in:
florian 2019-02-10 17:59:04 +00:00
parent 27ab140dd9
commit 65cece7657
2 changed files with 11 additions and 1 deletions

View File

@ -160,6 +160,7 @@ interface
procedure generate_code(list:TAsmList);virtual; procedure generate_code(list:TAsmList);virtual;
procedure start_frame(list:TAsmList);virtual; procedure start_frame(list:TAsmList);virtual;
procedure end_frame(list:TAsmList);virtual; procedure end_frame(list:TAsmList);virtual;
procedure outmost_frame(list:TAsmList);virtual;
procedure cfa_offset(list:TAsmList;reg:tregister;ofs:longint);virtual; procedure cfa_offset(list:TAsmList;reg:tregister;ofs:longint);virtual;
procedure cfa_restore(list:TAsmList;reg:tregister);virtual; procedure cfa_restore(list:TAsmList;reg:tregister);virtual;
procedure cfa_def_cfa_register(list:TAsmList;reg:tregister);virtual; procedure cfa_def_cfa_register(list:TAsmList;reg:tregister);virtual;
@ -285,6 +286,11 @@ implementation
end; end;
procedure TAsmCFI.outmost_frame(list: TAsmList);
begin
end;
procedure TAsmCFI.cfa_offset(list:TAsmList;reg:tregister;ofs:longint); procedure TAsmCFI.cfa_offset(list:TAsmList;reg:tregister;ofs:longint);
begin begin
end; end;
@ -674,7 +680,8 @@ initialization
memasmlists:=TMemDebug.create('AsmLists'); memasmlists:=TMemDebug.create('AsmLists');
memasmlists.stop; memasmlists.stop;
{$endif MEMDEBUG} {$endif MEMDEBUG}
CAsmCFI:=TAsmCFI; if not(assigned(CAsmCFI)) then
CAsmCFI:=TAsmCFI;
finalization finalization
{$ifdef MEMDEBUG} {$ifdef MEMDEBUG}

View File

@ -726,6 +726,9 @@ implementation
{ generate call frame marker for dwarf call frame info } { generate call frame marker for dwarf call frame info }
current_asmdata.asmcfi.start_frame(list); current_asmdata.asmcfi.start_frame(list);
if current_procinfo.procdef.proctypeoption=potype_proginit then
current_asmdata.asmcfi.outmost_frame(list);
{ All temps are know, write offsets used for information } { All temps are know, write offsets used for information }
if (cs_asm_source in current_settings.globalswitches) and if (cs_asm_source in current_settings.globalswitches) and
(current_procinfo.tempstart<>tg.lasttemp) then (current_procinfo.tempstart<>tg.lasttemp) then