소스 검색

* more cfi support for aarch64

git-svn-id: trunk@48714 -
florian 4 년 전
부모
커밋
ef8d520e82
1개의 변경된 파일4개의 추가작업 그리고 0개의 파일을 삭제
  1. 4 0
      compiler/aarch64/cgcpu.pas

+ 4 - 0
compiler/aarch64/cgcpu.pas

@@ -1797,12 +1797,16 @@ implementation
             reference_reset_base(ref,NR_SP,-16,ctempposinvalid,16,[]);
             ref.addressmode:=AM_PREINDEXED;
             list.concat(taicpu.op_reg_reg_ref(A_STP,NR_FP,NR_LR,ref));
+            current_asmdata.asmcfi.cfa_def_cfa_offset(list,2*sizeof(pint));
+            current_asmdata.asmcfi.cfa_offset(list,NR_FP,-16);
+            current_asmdata.asmcfi.cfa_offset(list,NR_LR,-8);
             if target_info.system=system_aarch64_win64 then
               list.concat(cai_seh_directive.create_offset(ash_savefplr_x,16));
             { initialise frame pointer }
             if current_procinfo.procdef.proctypeoption<>potype_exceptfilter then
               begin
                 a_load_reg_reg(list,OS_ADDR,OS_ADDR,NR_SP,NR_FP);
+                current_asmdata.asmcfi.cfa_def_cfa_register(list,NR_FP);
                 if target_info.system=system_aarch64_win64 then
                   list.concat(cai_seh_directive.create(ash_setfp));
               end