|
@@ -1554,7 +1554,7 @@ implementation
|
|
|
end;
|
|
|
{ write rtti data; make sure that the alignment matches the corresponding data structure
|
|
|
in the code that uses it (if alignment is required). }
|
|
|
- tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable]);
|
|
|
+ tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_data_force_indirect]);
|
|
|
{ use TConstPtrUInt packrecords to ensure good alignment }
|
|
|
tcb.begin_anonymous_record('',defaultpacking,reqalign,
|
|
|
targetinfos[target_info.system]^.alignment.recordalignmin,
|
|
@@ -1609,7 +1609,7 @@ implementation
|
|
|
tcb.end_anonymous_record;
|
|
|
|
|
|
tabledef:=tcb.end_anonymous_record;
|
|
|
- rttilab:=current_asmdata.DefineAsmSymbol(Tstoreddef(def).rtti_mangledname(rt)+'_o2s',AB_GLOBAL,AT_DATA_FORCEINDIRECT,tabledef);
|
|
|
+ rttilab:=current_asmdata.DefineAsmSymbol(Tstoreddef(def).rtti_mangledname(rt)+'_o2s',AB_GLOBAL,AT_DATA_NOINDIRECT,tabledef);
|
|
|
current_asmdata.asmlists[al_rtti].concatlist(tcb.get_final_asmlist(
|
|
|
rttilab,tabledef,sec_rodata,
|
|
|
rttilab.name,sizeof(pint)));
|
|
@@ -1631,7 +1631,7 @@ implementation
|
|
|
tabledef: tdef;
|
|
|
begin
|
|
|
{ write rtti data }
|
|
|
- tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable]);
|
|
|
+ tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_data_force_indirect]);
|
|
|
{ begin of Tstring_to_ord }
|
|
|
tcb.begin_anonymous_record('',defaultpacking,min(reqalign,sizeof(pointer)),
|
|
|
targetinfos[target_info.system]^.alignment.recordalignmin,
|
|
@@ -1656,7 +1656,7 @@ implementation
|
|
|
end;
|
|
|
tcb.end_anonymous_record;
|
|
|
tabledef:=tcb.end_anonymous_record;
|
|
|
- rttilab:=current_asmdata.DefineAsmSymbol(Tstoreddef(def).rtti_mangledname(rt)+'_s2o',AB_GLOBAL,AT_DATA_FORCEINDIRECT,tabledef);
|
|
|
+ rttilab:=current_asmdata.DefineAsmSymbol(Tstoreddef(def).rtti_mangledname(rt)+'_s2o',AB_GLOBAL,AT_DATA_NOINDIRECT,tabledef);
|
|
|
current_asmdata.asmlists[al_rtti].concatlist(tcb.get_final_asmlist(
|
|
|
rttilab,tabledef,sec_rodata,
|
|
|
rttilab.name,sizeof(pint)));
|
|
@@ -1802,7 +1802,7 @@ implementation
|
|
|
{ write first all dependencies }
|
|
|
write_child_rtti_data(def,rt);
|
|
|
{ write rtti data }
|
|
|
- tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable]);
|
|
|
+ tcb:=ctai_typedconstbuilder.create([tcalo_make_dead_strippable,tcalo_data_force_indirect]);
|
|
|
tcb.begin_anonymous_record(
|
|
|
internaltypeprefixName[itp_rttidef]+tstoreddef(def).rtti_mangledname(rt),
|
|
|
defaultpacking,reqalign,
|
|
@@ -1811,7 +1811,7 @@ implementation
|
|
|
);
|
|
|
write_rtti_data(tcb,def,rt);
|
|
|
rttidef:=tcb.end_anonymous_record;
|
|
|
- rttilab:=current_asmdata.DefineAsmSymbol(tstoreddef(def).rtti_mangledname(rt),AB_GLOBAL,AT_DATA_FORCEINDIRECT,rttidef);
|
|
|
+ rttilab:=current_asmdata.DefineAsmSymbol(tstoreddef(def).rtti_mangledname(rt),AB_GLOBAL,AT_DATA_NOINDIRECT,rttidef);
|
|
|
current_asmdata.AsmLists[al_rtti].concatList(
|
|
|
tcb.get_final_asmlist(rttilab,rttidef,sec_rodata,rttilab.name,min(target_info.alignment.maxCrecordalign,SizeOf(QWord))));
|
|
|
tcb.free;
|