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

    <tr>
        <th>Summary</th>
        <td>
            llvm-bolt fails to instrument rustc_driver on aarch64
        </td>
    </tr>

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

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

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

<pre>
    ```sh
$ llvm-bolt --version
LLVM (http://llvm.org/):
  LLVM version 18.1.1
 Optimized build.
BOLT revision <unknown>

  Registered Targets:
 aarch64    - AArch64 (little endian)
    aarch64_32 - AArch64 (little endian ILP32)
    aarch64_be - AArch64 (big endian)
    arm64      - ARM64 (little endian)
    arm64_32   - ARM64 (little endian ILP32)

$ llvm-bolt librustc_driver.so -instrument -o librustc_driver-instrumented.so
BOLT-INFO: shared object or position-independent executable detected
BOLT-INFO: Target architecture: aarch64
BOLT-INFO: BOLT version: <unknown>
BOLT-INFO: first alloc address is 0x0
BOLT-INFO: creating new program header table at address 0x3600000, offset 0x3600000
BOLT-WARNING: debug info will be stripped from the binary. Use -update-debug-sections to keep it.
BOLT-INFO: enabling relocation mode
BOLT-INFO: forcing -jump-tables=move for instrumentation
BOLT-INFO: disabling -align-macro-fusion on non-x86 platform
 #0 0x000000000091b0d0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/rustroot/bin/llvm-bolt+0x91b0d0)
 #1 0x0000000000919040 SignalHandler(int) Signals.cpp:0:0
 #2 0x0000ffff67384800 (linux-vdso.so.1+0x800)
 #3 0x00000000009e2e80 llvm::bolt::readDWARFExpressionTargetReg(llvm::StringRef) (/rustroot/bin/llvm-bolt+0x9e2e80)
 #4 0x0000000000f6d448 llvm::bolt::(anonymous namespace)::CFISnapshot::advanceTo(int) BinaryFunction.cpp:0:0
 #5 0x0000000000f6f200 llvm::bolt::BinaryFunction::unwindCFIState(int, int, llvm::bolt::BinaryBasicBlock*, __gnu_cxx::__normal_iterator<llvm::MCInst*, std::vector<llvm::MCInst, std::allocator<llvm::MCInst>>>&) (/rustroot/bin/llvm-bolt+0xf6f200)
 #6 0x0000000000f70754 llvm::bolt::BinaryFunction::normalizeCFIState() (/rustroot/bin/llvm-bolt+0xf70754)
 #7 0x0000000000f768ac llvm::bolt::BinaryFunction::buildCFG(unsigned short) (/rustroot/bin/llvm-bolt+0xf768ac)
 #8 0x0000000000969700 std::_Function_handler<void (llvm::bolt::BinaryFunction&, unsigned short), llvm::bolt::RewriteInstance::buildFunctionsCFG()::'lambda'(llvm::bolt::BinaryFunction&, unsigned short)>::_M_invoke(std::_Any_data const&, llvm::bolt::BinaryFunction&, unsigned short&&) RewriteInstance.cpp:0:0
 #9 0x0000000000fa7c2c std::_Function_handler<void (), std::_Bind<llvm::bolt::ParallelUtilities::runOnEachFunctionWithUniqueAllocId(llvm::bolt::BinaryContext&, llvm::bolt::ParallelUtilities::SchedulingPolicy, std::function<void (llvm::bolt::BinaryFunction&, unsigned short)>, std::function<bool (llvm::bolt::BinaryFunction const&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, unsigned int)::'lambda'(std::_Rb_tree_iterator<std::pair<unsigned long const, llvm::bolt::BinaryFunction>>, std::_Rb_tree_iterator<std::pair<unsigned long const, llvm::bolt::BinaryFunction>>, unsigned short) (std::_Rb_tree_iterator<std::pair<unsigned long const, llvm::bolt::BinaryFunction>>, std::_Rb_tree_iterator<std::pair<unsigned long const, llvm::bolt::BinaryFunction>>, unsigned int)>>::_M_invoke(std::_Any_data const&) ParallelUtilities.cpp:0:0
#10 0x00000000009bbe08 std::_Function_handler<void (), llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()>::_M_invoke(std::_Any_data const&) (/rustroot/bin/llvm-bolt+0x9bbe08)
#11 0x0000000001b04c2c llvm::ThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) (/rustroot/bin/llvm-bolt+0x1b04c2c)
#12 0x0000000001b053bc void* llvm::thread::ThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::'lambda'()>>(void*) ThreadPool.cpp:0:0
#13 0x0000ffff66e16798 start_thread (/lib64/libc.so.6+0x96798)
#14 0x0000ffff66e81b4c thread_start (/lib64/libc.so.6+0x101b4c)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWM1y4joWfhqxUUEZ2RizYEFI6ElVujuVpKeXLlk62OrIkkeSCblPPyXb_Jh2crl3pmYzFF0drKPvfOfXOqLWilwBLNHsBs1uR7R2hTZLyPN3KkeZ5u9LFAft1xYouEXBCpEIS7krx5mWDo_HOzBWaNUuPjz88ytGJCmcq1C4QmSDyMZLT7TJm18L_7iRxbiR7vbjaTKZTqbd0vfKiVL8ARxntZB80j6--f7wgg3sRLMBhetavSr9plB413HrgJ8gF9aBAY5fqMnB2ZNWSg0r4ghjjMd4tWp_IJJI4ZwEDIoLqjzPDgsfdqQh-WQHvn94DMngvgz6-zKRD6oxZUurIfb09U9peXlP6mP5C1JDAZQiM7V1LOVG7MBMrMZjoawzdQnK4bG-lDhbBT6x-hSa8f23zXcUrrAtqHe9zn4Bc1gbXGkrnNBqLBSHChT30LAHVjuaScAcHDAHfACrjR_2rhReqDbgH3e-HdjQJMkhKcPVUJr05LfCWIeplJphyrkBa7GwONgHA8LMAHVC5VjBG66Mzg0tcQGUg8GtKdQdUYJ9GAf-g8ga6-3Wgjt7dgL_uXr6dv_ti8fnkNU5Fmqr8ZuQEmeArTOiqoDjrdEldgXgTChq3if4hwU8ritOHYybjWMLzLvZYqfxK0CFhZsMWAGKZtJbYUBqRv0WXGoOQ97RhnnJ8a-6rMaNiRaFt6XegV_Dp2RoYAYQuLCdtjGVIlfjkjKjx9u6KWKtsNJqvE9iXEnqttqUXYYjEgY-CsfPYpoFPGhS11dzuLLvtv3j0Qjlnh1lry-GMvBVcBQy9C3V1hmgJSKxj4RQDpGFrxVENj6zjdYOkU0mVNesmspA5CbYtzpPZYdIOL0gtQiiAD-LXFH5D6q4BINI0uloH9sJq3w3DJp_RyDSAW232208D5MoCYK2glW9H--41ROrJ9OGRxL0SYR9EkAgOfdMw781Hyi__bl62tztK5-UQqu2op4g7_np2Rmh8ifYXu-bRmuPVtSjtY15FCWDtBBJqNLqvdS1xYqWYKsmcIt2eb25f1a0soXu5CnfUcXgRZ98e9NUwaZWTcoPu3h2wWdLgmE39cHaZ7V6E4p7Ko46OCju8mf9CcwNtYLdSM1eEVl50TTNVZ2y_b6VSlOlTUllKhwY6rRB4fqE9nV9r6zrdlrH26c7YB8Jnkk1XewjxPCu-_oyuDLGrct6MY77Pp0H81l0tU9bw8UfcObW68k0unpk5hdk4oSyq8k0R4v15gsiSa2agxDHttDm-vbQKuwxSvqVGS_mQXAKUHpgkBZdrwjXOy047tXih7TbBvYb2Y_S8QnejHDgo--r58zqA6JtzT8WHiJzScuMU0Tm_xkln2qNxV9ToXb61Uf65IaVek85dRQz3eRw_HlF_Ym2uEvpC3uHe8KinzJ0zgi7LkCdp0-yN0LxXqWdeD9SQ6UE-cMJKZyA7k1lavVd3VFWHNT8FK74ocS_alj52r3nn3p9rZWD_Wf--kDvMyuA1_4t_KilYO89O7bHqvhv5KJvMMPgmdbyOvCztPgNMPWNdDrtAHyrTW3z7kLhmhXU9IT9g9QZKvwE0C5fwJ23zMN6K-Lp9kxsXzyDhXJi95SlzgCc9_bjYkWFaY6jHaDUKj-YelX6H7n9r_UN9sf_G6MPgb_7611tgX-ryN_bkj9VXpx1swyC5C-1pZNlL4U_9T369G2LwA8t8ELt60rxTd2MUGe0B8r_UHbDyf632vu1h8rG8NPESsJp78A9zYLIN-yPra2MZmCtN9f2ms1J0K99MbqumlPWlcw6zT1q5ILaLMwY9k5EZHVG0TWaeyyM3r-fZ62rKwm9d8mlXbnRb8fT76dxuUMk6Uh4605Aw5kXns8hMUzj-cJnHjUubYl3_pEii6P2f-Ynk7gNmBfvOSXq4yXTLGK4RUob2E_xpoGXPwI-Ptytnu-wrbNSOEyxH48NVNo4P-MWzlX2eM-UC1fU2YTpsgveIYaV0b-A-cAKa2uwiGwwVb6umaw5NEM1M9QWOKPs1fkZshubj7dfI74M-SJc0BEsp_NpOJ8mYTAbFUvOo_lsm5CYLICFswVlEWOEE8JJwGZ0OxJLEpAoiMh0Gs-m0WyymGXzOOZZxukiivgcRQGUVMjJ4Z5s1LBcJotZtBhJmoG0zQUdIX6wRoSg2e3ILNv0rHOLokAK6-wJwAknYXm65NlSIZtLgbObnfM7HT-Gdzcqo9rI5d_3a0P63wEAAP__jxk7gw">