Inwieweit spezifiziert der Itanium ABI wirklich die Polsterung und Ausrichtung?

Mir wurde gesagt:

[ABIs] garantieren das exakte Layout der Struktur, den Byte-Offset jedes Members, welche Bits für Bitfelder verwendet werden, wo und wie viel Auffüllung vorhanden ist, etc ...

Aber ich habe immer geglaubt, dass Polsterung und Ausrichtung nicht spezifiziert und unzuverlässig waren.

Tutdas Itanium ABI (welche GCC verwendet) spezifizieren tatsächlich diese Dinge (soweitI kann sagen,es scheint nicht zu außerhalb der angegebenen Bereiche)?

Und wenn ja, wie sehen die Optionen aus?__attribute__ ((packed)) dazu passen? Brechen sie letztendlich den ABI, indem sie die Ausrichtung der Dinge verändern?

Oder, wie das Zitat andeutet, ist das Verpacken zwischen Werkzeugketten lediglich nicht spezifiziert, aber tatsächlich zuverlässig und zuverlässigvorhersagbar im Rahmen eines bestimmten ABI? Und dann wieder, wie geht so etwas__attribute__ ((packed)) dazu passen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage