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?

questionAnswers(2)

yourAnswerToTheQuestion