diff --git a/compiler/aasmdata.pas b/compiler/aasmdata.pas index 7d313040d7..821dd6354d 100644 --- a/compiler/aasmdata.pas +++ b/compiler/aasmdata.pas @@ -160,6 +160,7 @@ interface procedure generate_code(list:TAsmList);virtual; procedure start_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_restore(list:TAsmList;reg:tregister);virtual; procedure cfa_def_cfa_register(list:TAsmList;reg:tregister);virtual; @@ -285,6 +286,11 @@ implementation end; + procedure TAsmCFI.outmost_frame(list: TAsmList); + begin + end; + + procedure TAsmCFI.cfa_offset(list:TAsmList;reg:tregister;ofs:longint); begin end; @@ -674,7 +680,8 @@ initialization memasmlists:=TMemDebug.create('AsmLists'); memasmlists.stop; {$endif MEMDEBUG} - CAsmCFI:=TAsmCFI; + if not(assigned(CAsmCFI)) then + CAsmCFI:=TAsmCFI; finalization {$ifdef MEMDEBUG} diff --git a/compiler/ncgutil.pas b/compiler/ncgutil.pas index 053a3bb249..fb734d2293 100644 --- a/compiler/ncgutil.pas +++ b/compiler/ncgutil.pas @@ -726,6 +726,9 @@ implementation { generate call frame marker for dwarf call frame info } 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 } if (cs_asm_source in current_settings.globalswitches) and (current_procinfo.tempstart<>tg.lasttemp) then