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

    <tr>
        <th>Summary</th>
        <td>
            [BOLT][AArch64] unsupported CFI opcode on Ubuntu 24.04 and AL2023
        </td>
    </tr>

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

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

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

<pre>
    
### Description
When attempting to use BOLT on Amazon Linux 2023 (AL2023) and Ubuntu24.04 using an AArch64  instance (AWS m7g.4xlarge), `llvm-bolt` command fails with "unsupported CFI opcode" error. This happen especially when I am trying to use long perf profile ( > 120 seconds).

### Environment
- Operating System: Amazon Linux 2023
- Hardware: AWS m7g.4xlarge instance (ARM-based)
- BOLT version: d33a2c58112bdd74225b0ff4f07acc49bed7e6ea
- Application used: PostgreSQL (build locally)

### Steps to Reproduce
1. Compile Postgres 16.4:
```bash
export CFLAGS="-g -O2 -fstack-protector-strong -fno-omit-frame-pointer -moutline-atomics -fno-reorder-blocks-and-partition"
export CPPFLAGS="-D_FORTIFY_SOURCE=2"
export LDFLAGS="-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--emit-relocs"

## Compile it
./configure --disable-rpath --enable-debug --enable-dtrace --enable-tap-tests --enable-thread-safety --with-gnu-ld --with-icu --with-tcl --with-perl --with-python --with-openssl --with-libxml --with-libxslt --prefix=\${HOME}/usr/  
make -j\$(nproc)
sudo make install
```

2. Build BOLT on Amazon Linux 2023:
```bash
# BOLT  Installation on AL2023
sudo yum install  -y perf cmake ninja-build 
git clone https://github.com/llvm/llvm-project.git  
mkdir build   &&  cd build 
cmake -G Ninja ../llvm-project/llvm -DLLVM_TARGETS_TO_BUILD="X86;AArch64" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PROJECTS="bolt"
ninja bolt
```

3. Run the following command:
```bash
# Get perf information
sudo perf record -e cycles:u  -u postgres -o perf.data -a -- sleep 600      

# Run perf2bolt cmd
sudo ~/build/bin/perf2bolt -p perf.data -o perf.boltdata --nl ${HOME}/usr/bin/postgres

# Run BOLT
sudo ~/build/bin/llvm-bolt ${HOME}/usr/bin/postgres -o ${HOME}/usr/bin/postgres.bolt --data perf.boltdata --reorder-blocks ext-tsp --reorder-functions hfsort --split-functions --split-all-cold --split-eh --update-debug-sections --dyno-stats --print-profile-stats  
```
    

### Error Message
```bash
BOLT-INFO: Starting stub-insertion pass
BOLT-INFO: Inserted 470 stubs in the hot area and 216 stubs in the cold area. Shared 0 times, iterated 3 times.
unsupported CFI opcode
UNREACHABLE executed at /home/ec2-user/llvm-project/bolt/lib/Core/BinaryFunction.cpp:2591!
 #0 0x0000000000e3d810 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/ec2-user/build/bin/llvm-bolt+0xe3d810)
 #1 0x0000000000e3b77c llvm::sys::RunSignalHandlers() (/home/ec2-user/build/bin/llvm-bolt+0xe3b77c)
 #2 0x0000000000e3b8a8 SignalHandler(int) Signals.cpp:0:0
 #3 0x0000ffffbe05d830 (linux-vdso.so.1+0x830)
 #4 0x0000ffffbda83554 __pthread_kill_implementation (/lib64/libc.so.6+0x92554)
 #5 0x0000ffffbda3a3e0 gsignal (/lib64/libc.so.6+0x493e0)
 #6 0x0000ffffbda21224 abort (/lib64/libc.so.6+0x30224)
 #7 0x0000000000dda54c (/home/ec2-user/build/bin/llvm-bolt+0xdda54c)
 #8 0x00000000015d5a44 llvm::bolt::(anonymous namespace)::CFISnapshot::advanceTo(int) BinaryFunction.cpp:0:0
 #9 0x00000000015d80b0 llvm::bolt::BinaryFunction::unwindCFIState(int, int, llvm::bolt::BinaryBasicBlock*, __gnu_cxx::__normal_iterator<llvm::MCInst*, std::vector<llvm::MCInst, std::allocator<llvm::MCInst>>>&) (/home/ec2-user/build/bin/llvm-bolt+0x15d80b0)
#10 0x00000000015da5e0 llvm::bolt::BinaryFunction::finalizeCFIState() (/home/ec2-user/build/bin/llvm-bolt+0x15da5e0)
#11 0x000000000147a15c std::_Function_handler<void (llvm::bolt::BinaryFunction&), llvm::bolt::FinalizeFunctions::runOnFunctions(llvm::bolt::BinaryContext&)::'lambda'(llvm::bolt::BinaryFunction&)>::_M_invoke(std::_Any_data const&, llvm::bolt::BinaryFunction&) BinaryPasses.cpp:0:0
#12 0x00000000016345c8 std::_Function_handler<void (), std::_Bind<llvm::bolt::ParallelUtilities::runOnEachFunction(llvm::bolt::BinaryContext&, llvm::bolt::ParallelUtilities::SchedulingPolicy, std::function<void (llvm::bolt::BinaryFunction&)>, 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>>) (std::_Rb_tree_iterator<std::pair<unsigned long const, llvm::bolt::BinaryFunction>>, std::_Rb_tree_iterator<std::pair<unsigned long const, llvm::bolt::BinaryFunction>>)>>::_M_invoke(std::_Any_data const&) ParallelUtilities.cpp:0:0
#13 0x0000000000f1ff68 std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<std::function<void ()>>>, void>>::_M_invoke(std::_Any_data const&) (/home/ec2-user/build/bin/llvm-bolt+0xf1ff68)
#14 0x0000000000f2074c std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) (/home/ec2-user/build/bin/llvm-bolt+0xf2074c)
#15 0x0000ffffbda86980 __pthread_once_slow (/lib64/libc.so.6+0x95980)
#16 0x0000000000f205bc std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<std::function<void ()>>>, void>::_M_complete_async() (/home/ec2-user/build/bin/llvm-bolt+0xf205bc)
#17 0x0000000000f24eec std::_Function_handler<void (), std::shared_future<void> llvm::ThreadPoolInterface::asyncImpl<void>(std::function<void ()>, llvm::ThreadPoolTaskGroup*)::'lambda'()>::_M_invoke(std::_Any_data const&) (/home/ec2-user/build/bin/llvm-bolt+0xf24eec)
#18 0x00000000023f057c llvm::StdThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) (/home/ec2-user/build/bin/llvm-bolt+0x23f057c)
#19 0x00000000023f1104 void* llvm::thread::ThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::'lambda'()>>(void*) ThreadPool.cpp:0:0
#20 0x0000ffffbda81934 start_thread (/lib64/libc.so.6+0x90934)
#21 0x0000ffffbda25e5c thread_start (/lib64/libc.so.6+0x34e5c)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Aborted
```
    
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWV1zozjW_jXKjQoXCPDHRS6IP7rzvulONk7P7FxRAg62JkJiJZHEc7G_fUsC2-A4mXSmdmtru9JlkI6OnvOco0cCqNZsIwAuUXyF4sUFbcxWqktN-RM1UkHBagZGyYtMFrtL5CeIhO0fXoDOFasNkwL5ya9bEJgaA1VtmNhgI3GjAV_d3jxgKXBS0T-kwDdMNC-Y-CTEiEyTG3uFyAxTUeAfWSNMQ6KRH-FGWx9U4CRR-XYcYcyENlTk4Mb9usbVZDOKXjhVG0Bkhsgco7HP-VPlZZIbNPZxLqvK-i0p4xo_M7PFiJBG6KaupTJQ4PnqGss6lwUgQjAoJdUIP2yZxlta1yAw6BpyRjnf4Wcb3zWmFTZq1wuQS7HBNagS10qWjDuAGIVLHBAfa8ilKDQis5Hlrk_fUjwxJUUFwiA_8fBtDYo66tY7baBCYfKaNWf5larimSpwFkMqhjTdf_MyqqGwBNmBLhlPoLRNWZjgIgwpyeNpEJCsKCYRIXHml2VU-hOa59Esg2ICY6BucFLXnOXUptsGXlgHd1KbjYL1327sfFnDeIG5zC1h7ZyDiNcGam15u4dayaLJAflJMMJzWdWWuM6bxsF4FKHQDR777V9G9Rb5CbzY1OH56ib5skbhAhHibbB3S7BXakPzR69W0kBupPK0UTY3XimkJytmvFLRCrxaMmFAYa-SjeFMgEeNrFiuW0sFUhWgvIzL_FF7VBReTZVhrswJ6WG4u-ujWKSr2_uH69Vv6fr2x_18icIFGdjfLPrmv3JE5t6V3lWZ5Cz3ykbkdgqNu64_EJkr4EruGzywMSjgMtet4wO5BwaZLaURIqtcipJtGgXY8wqmacbBUzU1W-x5INxtAVmz6d0aRXM43htaewa00b2mrQJaeJqWYHbY8-yS8jai8Xixv2N5s780Od9f1qCO1zuzlWJ_J2sQWh86OcteqsGd5gZ7Xq2gZC-WuniOSIQmV19vvy3RZIHIqtEKkRXGyE8q-gjY-70zIlNRK5m3haibQmLX71YI5_3iarkkI3zlKvhNzTpfkzYBbgi-bl23a8Q6uOnWrJt911T7yTH2dq1o5A6TYOJ36rXrB_nJhhmccykAb42ptZ2WrBBZbZjZNtkolxUiK6t13Y8t-t8hNyM70BHxWDCFW38YIzJGZIxxXuDDFO283hf83U6NR6MTV90t9hY3N798Sx-S-y_Lh3X6cJte_bi-WbRV_PfpGIVXnURbCfUW82_J_y9bm_Thtzu7DO6BA9Wwd7X8nlzdLNNkvV7eP1zffrcr4vb7Se_d_e3_LecP3Wpxiu5K3hGF3f2r_IUjfN8IbLaAS8m5fLZa2m0Cb2fuC5g2E0yUUlW0285cxly7glyqAnuA813OwWajwdhrcL2XK6-1HBXUUOxR7HlYc4Aaj30fu3-HxeoQWmMXE86rYj_XPxFZuezYXyYQWR3NvLo_QTeb7WkbPMHx-VXROeqADlHYkn178sNO-iHPFtRH7EZtOJ7DfRrFUHkxvBjP6LrXcdTIbamtpHqerrkV9qN4di2Ucy-XTpfaBrDK19QFNZ3yeRoOY4qdkJ421IldrZgwXreZd634pNoGOd3v5_b4gL-B1nQDZ4rN8u1df1_d2o1zbeyeIjZYmybzmNCgnGjUVOtT22vXCwWOJr6z15i1Zb6VBlMF1B2fSDAe9rr4bfcIr7dUQYF9bFgF2h6WmLGnDShw2LbZ48kbRyM_-fH9fpnMv9qVieEF8sZaUFsaq62sAJEV5MRrNKjXKtKu3RVnGSKruVTW-ooJqnarLmujvK5RmJB4FiASWHYRCX3sv_iHfxAW08DHTvLCBIWJ3un24s5ma213_ge7fyEyPRop-pxKbRTQykngHDNh7GkTkelZ6G8sAUSu_JcWQruZWIDBCcBsMsnPAbxvxJptBOVfqSg4KO0m_ywGO8sRAznFMKVTPJgNkWkXc9usO7J997_1EnZeyrIsM_DjYhr6Fh63-573VGg50nIUOATTsEdB1B9Y0GkYxxFO07o9J6SPjPOUVTUHe8ZtN8U2as4yu1_Y39z6HjvfMxLH0dF7PPQe0hB8vNEujHf9RLMQeijHQz8kICTCNLP68Z6X0Cekh2YyoLooaBzln8phO_ToeNp3HMRFTKOoV0dunLtCZEqFFLtKNhoLWoGuXcHP2u756notaK23srOnxZN9EHiQxxo4u-76pTA7ATP1M_8smKGntq0Rz0wUFoehBvazdotu_o6bK6pZfmVVH5HEmqbpRjRp_vLSWqWpsDszT1vRkgqF86O3b3N77OpGalO0rU_uGeCsYc-Kcvu08oZhuOz-rHZ8bsF2FHbPQiQM_BOCaQwfJ7hkgnL2B_Qo_gvA7NRHYAM5C6IJDeL8yFO6B5JuO10J50-SFXigt2-idwS-VQOrLqq9daebqhG34tj23jxzKQy8mG6abrFMOK2ygiIy-RmMNuEu4G8pE0_y0XJ8ZCERu9QdVnLpKmn8fl0PfXer745qDacybDMwEPNgHEZxPv1YBjpyj7ZXzJ545-eQ3VFFOQf-wzDODIM-20uab4-YP0j4eQLemGadb6FoOBObO_vUuxvALg_F_vO1ZVfpeVeZlPxjrnpZfeUwtWoUBJ0Dq1epNoqJDQrn-ZaqgbFtSI2izOh994m7vu7s-1sTC9f-NsK9lyu6I8vZqj6iu89SowD6AnnorCmz9weH7oVVF-qHqveA7T87nxO2__EQ93vMT0nODL9aXWfkJBwcWMqgLMd_IieHzkawfzSQ1mbQmqZlYxoFaUY17EkC3XDTtgyXy_u2bcsCOBg79fKsip3x8UD1Y6rBmL8GuFOY14v851APBreH3s7m2iVygMY0NYd-wxm561WEc74H-YkS-cyhoC2S45kgGpYQ8SdR_j5b7ljiGn4hB8iFtCnrQ-6F_l9QdJbr5Ki9yafpcwQd6Tt5gJmOZ1O_93gkRQ6p5vL5_YeieDbtHdPGpymJsz9JyQJKUAqKVLsjY78i_50V2-U-l_b5z0BK9U7kf-HA2oZ6JGJyQkQE8MHz6qnOaPdupGPuqAw9GX9wRN1Jya-FAVXax652G7dBXVc17wvK2TI_4WuwSxzdW3n7omRTt1V4dtP_1Cn1s5xbVo-cDx5VSVj68eCVx9oUx1C6jVLJHLS2cQ2P8G_G_CmgHZYj0tkJ0iDwo7Y2SdJD3F8BHSIlX3bnFsG7YW6UfD48Zb-bNVsfHQ4b7NHR6x2c-Cf6EczCCGtDlUlb4O8Lhz8LowMjJDh5CxJDnONOiZzP91-GRBB39N7dLJP1Eusmq5jBFGfNBitwX7iM_MnvFYismNYNaERW7h0mEzlvCmhfXyqqtzij-aP7MjVCfpJk7uXkmZexF8VlWMzCGb2Ay2ASRrOpPw4nF9tLPw6zAvwwDzIIgryMYxIFUVhEfjiDIPMv2CXxSRQQWzV-GI9HRTGhZVSUExiPZwHJUORDRRkfWeQjqTYXDvNlQPzZjFxwmgHX7vM5Ie6dOiEoXlyoy7ZGm41Gkc-ZNvrowTDD3Sd3NyBeoPjwFSVe4PPvYbEU3Sdy3H4jt4S1X5guGsUvP099F8nTJflXAAAA__-4V9yx">