diff --git a/compiler/ncgrtti.pas b/compiler/ncgrtti.pas index 01a8b3f7b6..963a66cf39 100644 --- a/compiler/ncgrtti.pas +++ b/compiler/ncgrtti.pas @@ -1591,7 +1591,10 @@ implementation { total element count } tcb.emit_tai(Tai_const.Create_sizeint(asizeint(totalcount)),sizeuinttype); { last dimension element type } - tcb.emit_tai(Tai_const.Create_sym(get_rtti_label(curdef.elementdef,rt,true)),voidpointertype); + if is_objc_class_or_protocol(curdef.elementdef) then + tcb.emit_tai(Tai_const.Create_sym(get_rtti_label(voidpointertype,rt,true)),voidpointertype) + else + tcb.emit_tai(Tai_const.Create_sym(get_rtti_label(curdef.elementdef,rt,true)),voidpointertype); { dimension count } tcb.emit_ord_const(dimcount,u8inttype); finaldef:=def; @@ -2635,6 +2638,10 @@ implementation rttidef: tdef; s: TIDString; begin + { Objective-C has its own RTTI system } + if is_objc_class_or_protocol(def) then + exit; + { only write rtti of definitions from the current module } if not findunitsymtable(def.owner).iscurrentunit then exit;