* due to an apparent bug in the clang assembler for COFF when assembling ADRP instructions we can't use symbols that are offset into their section

git-svn-id: trunk@44948 -
This commit is contained in:
svenbarth 2020-04-21 06:06:31 +00:00
parent 042aae2455
commit b88107fa1d

View File

@ -1148,7 +1148,9 @@ implementation
class function ttai_typedconstbuilder.get_string_symofs(typ: tstringtype; winlikewidestring: boolean): pint;
begin
{ darwin's linker does not support negative offsets }
if not(target_info.system in systems_darwin) then
if not(target_info.system in systems_darwin) and
{ it seems that clang's assembler has a bug with the ADRP instruction... }
(target_info.system<>system_aarch64_win64) then
result:=0
else
result:=get_string_header_size(typ,winlikewidestring);
@ -1158,7 +1160,9 @@ implementation
class function ttai_typedconstbuilder.get_dynarray_symofs:pint;
begin
{ darwin's linker does not support negative offsets }
if not (target_info.system in systems_darwin) then
if not (target_info.system in systems_darwin) and
{ it seems that clang's assembler has a bug with the ADRP instruction... }
(target_info.system<>system_aarch64_win64) then
result:=0
else
result:=get_dynarray_header_size;