<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/117103>117103</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Sections containing instructions should be aligned to the architecture's instruction alignment
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          pcc
      </td>
    </tr>
</table>

<pre>
    When assembling the following for AArch64:
```
        .section .text.unlikely,"ax",@progbits
.Ltmp4:
        b .Ltmp4
```
LLVM's section headers:
```
Section Headers:
  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            0000000000000000 000000 000000 00      0   0  0
  [ 1] .strtab           STRTAB 0000000000000000 000078 000029 00      0   0  1
  [ 2] .text PROGBITS        0000000000000000 000040 000000 00  AX  0   0  4
  [ 3] .text.unlikely    PROGBITS        0000000000000000 000040 000004 00  AX  0 0  1
  [ 4] .symtab           SYMTAB          0000000000000000 000048 000030 18      1   2  8
```
GNU as section headers:
```
Section Headers:
  [Nr] Name              Type            Address          Off Size   ES Flg Lk Inf Al
  [ 0]                   NULL 0000000000000000 000000 000000 00      0   0  0
  [ 1] .text PROGBITS        0000000000000000 000040 000000 00  AX  0   0  1
  [ 2] .data             PROGBITS        0000000000000000 000040 000000 00  WA  0 0  1
  [ 3] .bss              NOBITS          0000000000000000 000040 000000 00  WA  0   0  1
  [ 4] .text.unlikely    PROGBITS 0000000000000000 000040 000004 00  AX  0   0  4
  [ 5] .symtab SYMTAB          0000000000000000 000048 000090 18      6   6  8
  [ 6] .strtab           STRTAB          0000000000000000 0000d8 000004 00      0 0  1
  [ 7] .shstrtab         STRTAB          0000000000000000 0000dc 00003b 00      0   0  1
```
As a result of the LLVM behavior, we can end up misaligning the `.text.unlikely` section (e.g. if a preceding section contains data of size not a multiple of 4) and causing a crash at runtime.

I think the GNU as behavior makes more sense, and we should adopt that behavior.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVt9znDYQ_mvEy04YIeC4e-ABx73UMxe7EztN-yhg71AtJEYSdty_viPgbIwvbtz0IZrjhKTVt7sfn35wa8VBIeYkPSPpecB712iTd1UVlLp-yL80qIBbi20phTqAaxD2Wkp971t7baAoTNWsEhIXhJ4TWpAVnX5DE6YSWqyc0ApCh19d2CspblE-EPaeMMa_Esb8a0I7ow-lcHacHe5c2z1hH8FKmAZOedztfv9IWGbh6LFBXqOx34rwejL7dWEGQNKzS0PSc7jkLcKzcvPQPesp6tqgtU8dV_u9r67F397ul2vYygPsbuFC7aGQMw9AvYeX5fLzbjdv00WBZTWZjQ-de4i8h9A643g5Q7y--XRTnJ0GztZDxTZL4GgOzAZg_0Hht09XH84ubq5fDTd5Fm7xxyNqMkeNH1EfZeIR3-QhmXlYRp2MdDy0Czr-_OjpeJ3wZOQlphCtR7MIABjA-qS2Plx-Bv4TKPEHZfjD2vsfJHJCeDV3_Fmw_8HDl-KUREYJlnMaBzKu5uhvwH-ZQfIvIv9udb9cP-lc329R9eZJ1avxWc9xV69uI697qNfzyEexLCnJRvxm4eH78KtxXZbf2K8WK62wwMGg7aUDvR9ONX9sQIkNvxPaEPYe7hEqrgBVDX0HrbBcioM6HoJkRRcn2Yo-rnPC1hgeQhB74NAZrLD2847DlVaOC2VhELDeg_XLU2kHHNpeOtFJ9N0JYRvgqoaK99YDcKgMtw1wB6ZXTrQYTukN_xfgGqFuh_imneeYELT8Fi202iBYVBZ9hh76HsE2upc18Fp3DlzD3eOsMKjzuN7EGx5gHmUxi9KMZWnQ5BWrEZNkE2G15hXP4iyJ2GYV1ZTu44gmgcgZZUkUsYiyJEvTkJbrMqZVlKSbEilLSUKx5UKGUt61oTaHQFjbYx5FWUTjQPISpR2uJYwpvIdh1F8T0vPA5H7Su7I_WJJQKayzTzBOOIn5tJfaI9mePqGsM_3UP2VdIgzfFWtwemCOm6oRDivXGxzuEbNpo22LygW9kXnjXDds02xL2PYgXNOXYaVbwrY-nKl61xn9F1aOsO2QhCVsO2V5l7N_AgAA___G824d">