diff options
-rw-r--r-- | packages/compiler/ngenutil.pas | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/packages/compiler/ngenutil.pas b/packages/compiler/ngenutil.pas index c9d8b2f8e3..a9b81d16f9 100644 --- a/packages/compiler/ngenutil.pas +++ b/packages/compiler/ngenutil.pas @@ -964,14 +964,17 @@ implementation var ResourceInfo : TAsmList; begin - if (target_res.id in [res_elf,res_macho,res_xcoff]) then + if (target_res.id in [res_elf,res_macho,res_xcoff]) or + { generate the FPC_RESLOCATION symbol even when using external resources, + because in SysInit we can only reference it unconditionally } + ((target_res.id=res_ext) and (target_info.system in systems_darwin)) then begin ResourceInfo:=TAsmList.Create; maybe_new_object_file(ResourceInfo); new_section(ResourceInfo,sec_data,'FPC_RESLOCATION',sizeof(aint)); ResourceInfo.concat(Tai_symbol.Createname_global('FPC_RESLOCATION',AT_DATA,0)); - if ResourcesUsed then + if ResourcesUsed and (target_res.id<>res_ext) then { Valid pointer to resource information } ResourceInfo.concat(Tai_const.Createname('FPC_RESSYMBOL',0)) else |