diff --git a/compiler/assemble.pas b/compiler/assemble.pas index 118a0aed00..6712714202 100644 --- a/compiler/assemble.pas +++ b/compiler/assemble.pas @@ -1647,7 +1647,13 @@ Implementation end; {$ifdef i8086} aitconst_farptr : - ObjData.writereloc(Tai_const(hp).symofs,sizeof(longint),Objdata.SymbolRef(tai_const(hp).sym),RELOC_FARPTR); + if assigned(tai_const(hp).sym) and + not assigned(tai_const(hp).endsym) then + ObjData.writereloc(Tai_const(hp).symofs,tai_const(hp).size,Objdata.SymbolRef(tai_const(hp).sym),RELOC_FARPTR) + else if relative_reloc then + internalerror(2015040601) + else + ObjData.writebytes(Tai_const(hp).value,tai_const(hp).size); {$endif i8086} {$ifdef arm} aitconst_got: