W jakim stopniu Itanium ABI naprawdę określa wyściełanie i wyrównanie?

Zostało mi powiedziane:

[ABI] gwarantują dokładny układ struktury, przesunięcie bajtów każdego elementu, które bity są używane dla pól bitowych, gdzie i ile jest wypełnienia itd. ...

Ale zawsze wierzyłem, że dopełnienie i wyrównanie były nieokreślone i zawodne.

RobiItanium ABI (którego GCC używa) faktycznie określa te rzeczy (o ileI móc powiedzieć,nie wydaje się poza określeniem zakresów)?

A jeśli tak, to jak mają się opcje__attribute__ ((packed)) dopasować się do tego? Czy ostatecznie przełamują ABI, zmieniając wyrównanie rzeczy?

Lub, jak sugeruje cytat, pakowanie jest nieokreślone między narzędziami, ale w rzeczywistości niezawodne imożliwy do przewidzenia w ramach korzystania z pewnego ABI? A potem znowu, jak coś takiego__attribute__ ((packed)) dopasować się do tego?

questionAnswers(2)

yourAnswerToTheQuestion