> The primary bit of rfc here is the hunk that applies to ada/types.h > with respect to Fat_Pointer. Given that the Ada type, as defined in > s-stratt.ads, does not include alignment, I can't imagine why the C > type should have it.
See gcc-interface/utils.c:finish_fat_pointer_type. > This causes problems with the AArch64 calling convention, which honors > this alignment in the set of registers it chooses to pass the struct. > One can see this difference in create_concat_name vs > Exp_Dbug.Get_External_Name_With_Suffix. This should not happen though, since String is passed as a fat pointer too. > Similarly with the HAVE_GNAT_ALTERNATE_STACK stuff. There aren't any > linux hosts that don't support sigaltstack, so why is this > conditionalized? Because we don't want to use it if we can avoid it, as this generally makes things less robust. It's mandatory for x86 and x86-64, but I'm not sure why PowerPC is in the list. I'll try and remove it. Given that aarch32 works without it, I don't think that we should add it for aarch64. This may make some stack checking tests fail, but that's OK since there is no stack checking support in the aarch64 back-end AFAIK. -- Eric Botcazou