Até que ponto a ABI Itanium realmente especifica o preenchimento e o alinhamento?
Eu tenho dito:
[ABIs] garantem o layout exato da estrutura, byte offset de cada membro, quais bits são usados para campos bit, onde e quanto padding existe, etc ...
Mas sempre acreditei que o preenchimento e o alinhamento não eram especificados e não eram confiáveis.
Fazo Itanium ABI (que o GCC usa) de fato especificam essas coisas (até ondeI pode dizer,não parece além de especificar intervalos)?
E se isso acontecer, como opções como__attribute__ ((packed))
encaixar nisso? Eles acabam quebrando a ABI alterando o alinhamento das coisas?
Ou, como a citação implica, é embalagem meramente não especificada entre os porta-ferramentas, mas na verdade confiável eprevisível dentro do uso de uma determinada ABI? E então, novamente, como algo como__attribute__ ((packed))
encaixar nisso?