diff --git a/compiler/aggas.pas b/compiler/aggas.pas index 2c17e85ef7..68c69aba48 100644 --- a/compiler/aggas.pas +++ b/compiler/aggas.pas @@ -1029,14 +1029,13 @@ implementation else if (constdef in ait_unaligned_consts) and (target_info.system in use_ua_elf_systems) then AsmWrite(ait_ua_elf_const2str[constdef]) - else if not(target_info.system in systems_aix) or - (constdef<>aitconst_64bit) then - AsmWrite(ait_const2str[constdef]) + { we can also have unaligned pointers in packed record + constants, which don't get translated into + unaligned tai -> always use vbyte } + else if target_info.system in systems_aix then + AsmWrite(#9'.vbyte'#9+tostr(tai_const(hp).size)+',') else - { can't use .llong, because that forces 8 byte - alignnment and we sometimes store addresses on - 4-byte aligned addresses (e.g. in the RTTI) } - AsmWrite('.vbyte'#9'8,'); + AsmWrite(ait_const2str[constdef]); l:=0; t := ''; repeat