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

    <tr>
        <th>Summary</th>
        <td>
            BOLT fails to instrument clang on AArch64 host
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            BOLT
      </td>
    </tr>

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

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

<pre>
    I am not sure if this issue is a bug or more of a "not expected to work yet" issue, as I recall seeing somewhere that BOLT instrumentation was only supported for x86_64 but I did not get an immediate error and I see `AArch64` throughout `bolt/` so I figured I would report it and let someone close it if it is a known issue.

On an AArch64 host (the one I tested on uses an Ampere Altra Q80-30), `llvm-bolt` fails to instrument `clang`. My reproduction steps at cfb8169059c807ed5fbfb66b3ed558b7b6eb2833:

```
$ cmake \
-B build/stage1 \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=/usr/bin/clang \
-DCMAKE_CXX_COMPILER=/usr/bin/clang++ \
-DCMAKE_EXE_LINKER_FLAGS=-Wl,-q \
-DLLVM_ENABLE_TERMINFO=OFF \
-DLLVM_ENABLE_PROJECTS="clang;bolt" \
-DLLVM_TARGETS_TO_BUILD=host \
-DLLVM_USE_LINKER=/usr/bin/ld.lld \
-S llvm

$ ninja -C build/stage1 clang llvm-bolt

$ build/stage1/bin/llvm-bolt \
--instrument \
--instrumentation-file=$PWD/build/clang.fdata \
-o build/stage1/bin/clang.inst \
build/stage1/bin/clang-15
BOLT-INFO: Target architecture: aarch64
BOLT-INFO: BOLT version: cfb8169059c807ed5fbfb66b3ed558b7b6eb2833
BOLT-INFO: first alloc address is 0x200000
BOLT-INFO: creating new program header table at address 0x5000000, offset 0x4e00000
BOLT-INFO: enabling relocation mode
BOLT-INFO: forcing -jump-tables=move for instrumentation
BOLT-INFO: disabling -align-macro-fusion on non-x86 platform
=======================================
BOLT is unable to proceed because it couldn't properly understand this function.
If you are running the most recent version of BOLT, you may want to report this and paste this dump.
Please check that there is no sensitive contents being shared in this dump.

Offending function: __do_global_dtors_aux/1

Function contents (
  0000: 3F2303D5 FD7BBEA9 FD030091 F30B00F9  |?#...{..........|
  0010: B3CF0190 60824739 80000035 DDFFFF97  |....`.G9...5....|
  0020: 20008052 60820739 F30B40F9 FD7BC2A8  | ..R`..9..@..{..|
  0030: BF2303D5 C0035FD6 1F2003D5 1F2003D5  |.#...._.. ... ..|
)

Binary Function "__do_global_dtors_aux/1"  {
  Number      : 7
  State       : disassembled
  Address     : 0x13cc550
  Size        : 0x38
  MaxSize     : 0x40
  Offset      : 0x11bc550
  Section     : .text
  Orc Section : .local.text.__do_global_dtors_aux/1
  LSDA        : 0x0
  IsSimple    : 1
  IsMultiEntry: 0
  IsSplit     : 0
  BB Count    : 0
}
.LBB06:
    00000000:   hint    #25
    00000004:   stp     x29, x30, [sp, #-0x20]!
    00000008:   mov     x29, sp
    0000000c:   str     x19, [sp, #0x10]
    00000010:   adrp    x19, "completed.0/1"
    00000014:   ldrb    w0, [x19, :lo12:"completed.0/1"]
    00000018:   cbnz    w0, .Ltmp4 # Offset: 24
    0000001c:   bl      "deregister_tm_clones/1" # Offset: 28
    00000020:   mov     w0, #0x1
    00000024:   strb    w0, [x19, :lo12:"completed.0/1"]
.Ltmp4:
    00000028:   ldr     x19, [sp, #0x10]
    0000002c:   ldp     x29, x30, [sp], #0x20
    00000030:   hint    #29
    00000034:   ret     x30 # Offset: 52
DWARF CFI Instructions:
    <empty>
End of Function "__do_global_dtors_aux/1"

ERROR: unable to fill CFI.
=======================================
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzFV91z4jgS_2ucFxUu-QvwAw8Y8BS3JGRJ9mb2iZJtGTwjS5wtT8j-9dct20CA7O7VPayLOLa7-9ef6pYSlb1PloSVRCpN6qbipMiJ3hc1Keq6gbeaMJI0O6IqUiogqxw-WK6L_Px44KnmGdGKvKnqB3nnGkitqOXOCKvJklQ8ZUKQmvNC7kitSv6254Ck90yTaL16JYWsddWUXGqmCyXJG8gpKd7BoMNBVaghB_3H8XA79MEaDahZkRmbd1wTJklRljwrmOaEVxXwMpkBE-gk1pBOp1W6H_rwBEor1ez2CjDgNVECDI6RUCvgz4sdhAAl31QjMjAd1ZNCGzwBqtB8JTlJhao5EiBceMcw_ZDqTbbO2xadW3Ta3tcSLeyMIHtVg253rPcQTEBaEs1rdBEcb2peG97ygBGaCl0x8uuYDjxquSFGFEwV4mc5MJaD2TkrRI3xP8cQeVLB5A7-2-TxHb2oVNakJrag6gA6NEnzZOwMQxqE6ZiOeBbkSZ4Mh4kHj8E4GSVDnrhjz7O86aUzANr92lfXJ2nJfkCcg1n7aRBBigqRQWBrzXbcuSB9IU-F_M4uvsxnj9NfFtvot-Vqvn39_XlhefMNF5zV_JZrtp2tH5-Xq8UGuAC_qSu4J4WEu3H5jsi3b38lZLkR_G5FF98W29Xy6ZfFZhuvpl9eQHzwVUAWBv-5ZF6t_v24XTxNo9Vi-7rYPC6f4jWwruP4M67nzfpfi9nri7HHbW3worYY3Ruh1-nmy-L1Zfu6bqMEUm0NXfH99tKbe-unyGwB9XwWeSFYRh8SC5mUJjmD2XUC29ieC-9K7CP3WWnPf6F3cFmn976aDjDIC8GNF_7zV_Sl12AMsfOM6csaUp9Z0LIj-Jn7z1gHTtAyYVsatImckldWmS4D67fQ0PCgReBnxtqucitgmtpPXtXgCr7_7aV2C5UXFRgP_VOlhGVZxWvszIQeXYrXHYm04hBDSJfkbwQW_q6C7r7nLOMV0SwRHBd_D0WPAW2BoLeoPK_BT3r0-WfgXAICglccLGq7dakyfs9yVaXIOfjelIeB0VxDSkv1k5tufpXyOwhZUXfaBkwUOzkoWVqpQd5gXLFdSqgUGArkIJgGyL6cvfk_8DuZj-lppAk0tGVIQMqhuScwBJt2YqQ4WqDkRhqp0Ohh0DUS0gMVCVPGDN-8kaZdd3NkmZN31UAFclI1UmJIcHyU2AZgvOJi6soN5zNagflEkZK9wzgFOtjSTTOjADUdGAyD9jWDHHW6ntvem-55-qOd0dqMa-CSCiaqrAtdQA5TJTUorsE1M9f3DCdnIW8AuyGY51xmyNn7hinebjO13QmVMLHNtKrqLWuOsBqdS9G4EzirhPHZkggxhQpIXux61JsHJJ6PomgxDeGBepSGDok9GlEah4RYo5nlxZbr2bZtjSL7dCHhBOgYwMibxdQJKRnSseuPvJCMzarwAjKfx3CFIwNoxGHSfgnhIbgBcw0YrtYxDVwDRhEMjfLRKLR35k7HBozY9gbBbACzfNpZ-QHQa63r3Z2hRfF8SJwYlOCX04OxrnXW3to2YOPfCQx3FBdRjgrJqndyCjaMos-zA2MK0KPeqqemTKC9mAutG_WEF41bsjMBl3Rd8xJWR9bzTLte1PPQo-OlaRDQE0jxR4_RMXin9D-y44nc0vyT3LrtZ5fATvIBmLeu9gy25kd9kq7SE4MhYsMThsX-i7IlZPUyn340-aR0Wb8U5UHwnuScCY-N0MVC6urdyFxIHEShz2A9IYrITDVSXxGsUdeO7FUU0eFpA4dstLuQnZB90Qm7nhvcMPktU60PRvWx3YEePTMsrCCqD-bB9QY4jqwABrVzAzJuQaDtX4KA6DVj2mtr6-johNdqIH9Gy5Wk0znDsupwKQk7K4WBhr21TbuqvZHtfBRZleDXt963HsSbCuW4GMK7cHes6RxOE_nHGdFe6fLgoxNdVZqm4N8Id0FIRFc6rgtzge8KaNTVVpdbOHZIGKPdEryCG1_DufRj8DvvTCRveE_Z_v8i0Xp6p-bc8SnU_2OC3bSX_LwQsfg6DJdeA3h3yj28YeoCUHUtA-CvAhx05TP_Ot3EZBYvydLsYUyPqD-4bHkzXh40rONF-3EB8xZG89_trpeNebHZrDeo_7yrgO2xQAP6CfvP7XhOx8GHbOJloReyB11owSdmK3TvdNqeJdTHA_FDU4nJXuuDCSOcyN14V-h9k9hQat1Roj9RwKbpO_RleDVHbVwN0NNp8LCfwHqmqe-HPAuDxE08mnhe6DHPyUZ-4Gbpg2AJF_UEagaC3O6TsHQfiolLXZf6cHc8L6B2OhwN8xBmNQtZ7vsODGNegjc2mmCravdQTdrzTbOrgShgidZnIgw52LBybjQBPmv0XlUTyWBDJVP84w_G-okx_b8va-Gc">