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

    <tr>
        <th>Summary</th>
        <td>
            perf2bolt crashes using Amazon Linux 2 on AArch64
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </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 2 (AL2) using an AArch64  instance (AWS m7g.4xlarge), the `perf2bolt` command fails with an assertion error.

### Environment
- Operating System: Amazon Linux 2 (kernel: 5.10.228-219.884.amzn2.aarch64)
- Hardware: AWS m7g.4xlarge instance (ARM-based)
- BOLT version: d33a2c58112bdd74225b0ff4f07acc49bed7e6ea
- Application used: PostgreSQL (build locally)

### Steps to Reproduce
1. Build BOLT on Amazon Linux 2
```bash
# BOLT  Installation on AL2
sudo yum install -y gcc10 gcc10-*
export CC=`which gcc10-gcc`
export CXX=`which gcc10-g++`
export LD=`which gcc10-gcc`
export CMAKE_CXX_COMPILER=`which gcc10-g++`
export CMAKE_C_COMPILER=`which gcc10-gcc`
 
# CMAKE
curl -L "https://github.com/Kitware/CMake/releases/download/v3.31.2/cmake-3.31.2-linux-`uname -p`.tar.gz" | tar xzC /opt  && mv /opt/cmake-3.31.2-linux-`uname -p` /opt/cmake3
source <(echo 'export PATH="/opt/cmake3/bin:$PATH"' | tee -a ~/.bashrc) && cmake â€“version
 
# NINJA
curl -L https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux$([ `uname -m` == aarch64 ] && echo -`uname -m`).zip -o /opt/ninja-linux.zip && unzip /opt/ninja-linux.zip -d /opt
source <(echo 'export PATH="/opt/:$PATH"' | tee -a ~/.bashrc) && ninja --version

# BOLT
sudo yum install  -y perf 
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
```

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

# Run perf2bolt cmd
sudo ~/build/bin/perf2bolt -p perf.data -o perf.boltdata --nl /path/to/postgres
```
    

### Error Message
```bash
sudo ~/build/bin/perf2bolt -p perf.data -o perf.boltdata --nl  /home/ec2-user/usr/bin/postgres
PERF2BOLT: Starting data aggregation job for perf.data
PERF2BOLT: spawning perf job to read events without LBR
PERF2BOLT: spawning perf job to read mem events
PERF2BOLT: spawning perf job to read process events
PERF2BOLT: spawning perf job to read task events
BOLT-INFO: Target architecture: aarch64
BOLT-INFO: BOLT version: d33a2c58112bdd74225b0ff4f07acc49bed7e6ea
BOLT-INFO: first alloc address is 0x400000
BOLT-INFO: creating new program header table at address 0xe00000, offset 0xa00000
BOLT-INFO: enabling relocation mode
BOLT-INFO: enabling strict relocation mode for aggregation purposes
BOLT-WARNING: ignoring symbol __bss_start at 0xc88a5a, which lies outside .bss
BOLT-WARNING: ignoring symbol __bss_start__ at 0xc88a5a, which lies outside .bss
BOLT-INFO: pre-processing profile using perf data aggregator
BOLT-INFO: binary build-id is:     cced2a14ed88302024b2d4d7e74d98246ba9a86a
PERF2BOLT: spawning perf job to read buildid list
PERF2BOLT: matched build-id and file name
PERF2BOLT: waiting for perf mmap events collection to finish...
PERF2BOLT: parsing perf-script mmap events output
PERF2BOLT: waiting for perf task events collection to finish...
PERF2BOLT: parsing perf-script task events output
PERF2BOLT: input binary is associated with 11987 PID(s)
PERF2BOLT: waiting for perf events collection to finish...
PERF2BOLT: parsing basic events (without LBR)...
PERF2BOLT: waiting for perf mem events collection to finish...
perf2bolt: /home/ec2-user/llvm-project/bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp:785: bool {anonymous}::AArch64MCPlusBuilder::analyzeIndirectBranchFragment(const llvm::MCInst&, llvm::DenseMap<const llvm::MCInst*, llvm::SmallVector<llvm::MCInst*, 4> >&, const llvm::MCExpr*&, int64_t&, int64_t&, llvm::MCInst*&) const: Assertion `DefJTBaseAdd->getOpcode() == AArch64::ADDXri && "Failed to match jump table base address pattern! (1)"' failed.
#0 0x0000000000e40df0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (.localalias) (/home/ec2-user/build/bin/perf2bolt+0xe40df0)
#1 0x0000000000e3e89c SignalHandler(int) (/home/ec2-user/build/bin/perf2bolt+0xe3e89c)
#2 0x0000ffff96ce8850 (linux-vdso.so.1+0x850)
#3 0x0000ffff96807834 raise (/lib64/libc.so.6+0x32834)
#4 0x0000ffff96809140 abort (/lib64/libc.so.6+0x34140)
#5 0x0000ffff96800780 __assert_fail_base (/lib64/libc.so.6+0x2b780)
#6 0x0000ffff968007fc (/lib64/libc.so.6+0x2b7fc)
#7 0x0000000001584ecc (anonymous namespace)::AArch64MCPlusBuilder::analyzeIndirectBranch(llvm::MCInst&, llvm::bolt::MCPlusBuilder::InstructionIterator, llvm::bolt::MCPlusBuilder::InstructionIterator, unsigned int, llvm::MCInst*&, unsigned int&, unsigned int&, long&, llvm::MCExpr const*&, llvm::MCInst*&, llvm::MCInst*&) const (/home/ec2-user/build/bin/perf2bolt+0x1584ecc)
#8 0x00000000015e087c llvm::bolt::BinaryFunction::processIndirectBranch(llvm::MCInst&, unsigned int, unsigned long, unsigned long&) (.localalias) (/home/ec2-user/build/bin/perf2bolt+0x15e087c)
#9 0x00000000015f428c llvm::bolt::BinaryFunction::handleIndirectBranch(llvm::MCInst&, unsigned long, unsigned long) (.localalias) (/home/ec2-user/build/bin/perf2bolt+0x15f428c)
#10 0x00000000015f5458 llvm::bolt::BinaryFunction::disassemble() (/home/ec2-user/build/bin/perf2bolt+0x15f5458)
#11 0x0000000000ef2a94 llvm::bolt::RewriteInstance::disassembleFunctions() (.localalias) (/home/ec2-user/build/bin/perf2bolt+0xef2a94)
#12 0x0000000000f211e4 llvm::bolt::RewriteInstance::run() (/home/ec2-user/build/bin/perf2bolt+0xf211e4)
#13 0x000000000040aae0 main (/home/ec2-user/build/bin/perf2bolt+0x40aae0)
#14 0x0000ffff967f4da4 __libc_start_main (/lib64/libc.so.6+0x1fda4)
#15 0x0000000000484bd0 _start (/home/ec2-user/build/bin/perf2bolt+0x484bd0)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/ec2-user/build/bin/perf2bolt -p perf.data -o perf.boltdata --nl /home/ec2-user/usr/bin/postgres
Aborted
```
    
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysWVtz2zjP_jXMDUcaiZJt-SIX8qmb3Zy-JN9u3ysPRUI2W0rUkFQOvXh_-zuk5GOcbpI2k2ljCXjwEABBgKbGiFUNcI4GEzSYndHWrpU-N1Q-Uqs0cNEIsFqdFYq_nKMoRyTpfvEMDNOisULVKMr_WUONqbVQNVbUK2wVbg3gyc3lA1Y1ziv6Q9X4UtTtMyYYkSy_JIiMcWucNK1xnmu2HqYYi9pYWjPwQv_c42q0CtNnSfUKEBkjMsV2DRgNowZ0SQolLRpGmKmqojXHJRXS4Cdh1w6UGgPaMcSgtdKhW8D-Gub1o9CqrqC2KMoDfNOApp7__YuxUKEkP0H9O-gapHs3COMoJCQLSDwOsywNafWjJiGlfi2OrkP9g2r-RDV4tMMVHa727iooqAG-UfTeewRtnI-THPMkoYQNsjgmBeejlJBBEZVlWkYjylg6LoCPYAjUK-dNIwWjfvWtA01yfKuMXWm4_79LZ69oheRYKkalfOlsHnjn3kJjXCTvoNGKtwxQlMchnni906F1AMOo-y2oWXeAnTC-cIuVsuPkVC-dvGm5wi9t1flCShy84BVjcdT9GyDiaMFzo7TF0ylKZmgYPa0FW_cCK8acwZ3M168nhBCZuN99wcvZO8Cu8r_my-nXr8vpzdXtxeX87n3Yvd7PtDaWcO8kr4KinLVa4sCFiKytbQxKckQWiCxWwq7bImSqQmTxl7A-qchiekW_u_81SKAGDCILrp5qqShHZPGYhEkcEkQWrKLfIeg-BtLFK0DDqK1pBTho0DAKLdXh6gciBKPRFFuq8fOPKUZkoRqLMSJDRIa4euyfvAfySDRx8VatdgmfTBHJgK0VRmTUe-02f_jDeYqQYz2yKETtPZF6IScx6mgC4IDi_yKyCF3KaeYKS0_Wa2M0JyiL0DjZbKad068vrv_M95z-E4_Xov5GA79rNp_e9nocxiSMt1reN4ikiGRoMME7J1XeSYnLRNzXDYwGsw1_75_gUByRcfhDNDhQO-_uWfHvevW27j68IRXwzbsPh-XjofDGcRDsYrBXHE7VAVcIXJF3oVoJi5lUNfwsQFI-bv4LGq2-AbOhU3QA1XcuNO5K3jaVMeObRy4FfK4EX_C1ZxqGR1j9RxzMLi__vlo-5Hdf5g_3y4eb5eT_L7paQsjXbIiSSX-auZ0UzLpS4GWWD_-5naNkdtclzQZqfp1PLufL_P5-fvdwcXN9j5LZzfXR29u7mz_n04f7zo4_-Iirn51f_ee94tu5l4T4rq39iVkqKdWTO9v6s9L58HS1_gK2c7yoS6Ur2p_xPkD-uQamNMcBYPbCJLhwtBgHLW66A8a43HSSIaeWupQIAmwkQIOTKML-Zxd_x3B7mGNW8Y0tl0eb7eZ2P1nsxIJm30Bvzb3pHgS1dKndULtGZGGV-7vnduSlAy6bvsB1C_gKjKErOOGk38HO0VuryhVuYCRoDWhEFq3RO7gd4dv53YL4fZLk-N5S7ZsUD0ZXKw2r7kz9pgpcKr2zfaxqGvpUO1UfRiduFdZAOYZHqG3XOanW4svJ3ft1K6h6_ffrNFoxMObDepaa7zslJx9cXC9unNKD66gsdkVUWGC27VquTTd2JP0LzdUBTim0sZhKqRimnGu3KGFw9JxG7udYnGnoOswanpwTVppWeA2Ug8aWFhIwtVuc6Bk6EDLFqiwNWBw905O4UNNCOlwNrqPz6VApDm_KGasFs8fiPn32U6ppdaMMbJ39T353fXH9xUGJVa20h3qpCiXxclkYszQuO90iomeWZXRAHfmu75ECDFatNYIDDgvzQdDl8oOwmzU3GoI-33xOaVUKCf3s4TPsYCcpfQxQiJrql-6oCATHwlU8X8UYA05onALPsiQiEUkLwlM-glHKxxlJhwUd02z4gY3ojQiOpTD2WKuilq2B74j4kcetxXUHx9JPVPhM21QEXFW02Wx0pqQE5kNsFS5FLcw6DMNjjIbqrZeCbuA7gFGtbdpXPF9Z3tu1v2J5H-a0ZVE3rd3ESxg3ASomqAXeDYVxPM5G-PZihkhmupnn58w_R7qgRrCNLiLZflkl4xOKr2O1rak_sb0bgZP89Hly1L90XcNCigKRRVcvEVlsu5XNX1fTW9kaP-eBDlnToCQfZQO_FZSSGI0mtFb1S6Vag0Yz10kk-Snd7g2tqXz5ARc1FxqYnWhas_VC05UfvEnGVG0s9t2bl7-auknR92jTvcczqA1c0QYl07c08kON-4pK-Tcwt6WT6RviKUrmGCXz3t5r6Plzo72sfy9qO0yX9uSnkxaGrgf2qP4CYHslgYbRDMo_HybUQM55gJL5CuxNw1zVJpnvnLu5YBOfzs2z2VctNh0sImRBhQTuUsOXB_ytrZr-KClcj7k5TBpqLegakdhlZOwvU3znXnqAsOuAIhw9R9sfSCNeRnvrMi-m--NWi9reW8q-P2jKHOGdkKZPS2WsBlrt3NRNAlno7xuoFNT0T07m7RuNFSKT6Lkj1V9YkCQ-ZJxANmb4XqxqKv-gNZcOL9sR-Lg5j7g1R3pzZVmW4yGDLBu4KTfrpt9HblRolJv8JtFzNtjRTA70smiUJSnWVBjoWUlR-D0oRcEcxNBDJCRL0i1IegQyjtMI08LNaD8FSeN0x2RwBBKNsggvl91l2dJlw9Inzs8QSTHKdojDV4gl-zf1cufS0X4E40GWAvPq2xrjjzfT-Dwbf6raHOTnG_WlL6Re4BWq09Ctr8IXFrTvEn5Zu6399Svv9sfb9eNY8q1HUtWrE6XIFbC-Am0B3zb1L0XsU3uoD-o24tlhxCHKRuykLyf-JF-0tfdd96xv5d4b4GMnbz933nr1YPj7KlW_su2yx4fLLlOSvX_Za1_MPrzqN1b5-5boV7GrxtHRGgfpIHv3GrkwrgxVhdwegZ_j5KzuOB0dESWh4_Qkpzt40sLCRX8r_4rUhq3ZsfsdB5ontKNLDuiWJI7hA3R1W_-C7zprOy7JAZc0ohQiXFFRfwq909-hH55nozLlNMXLpTss-plvz9TpoyQuOd3jOzjkm6UFj3A_lH6KsUfoJ4XLeX4_x6YtKmExxUXrxm1_Q2rVBy8mEVkIY1p_b-zHOFEz2XLwd3VMU7PGBWXfrWuuXGvmWy3M26rp7u2isLtGu-2vEKhetZW_FXlrFPi1m7R3X1XlrhsBfuKW7YyfJ3ycjOkZnMejJB25WYycrc-T8TiGYhAXlCQk4zQmWTmmI2AjxthokJ6JczdZx4REcZaMBiQkRZmywaAcQhRHnCcojaCiQobOxaHSqzPv3POYRKOMnElagDT-S05CanjC_q1rfwezM33u41K0K4PSyI3dZgdjhZVwvnc76SIDpr87OPpuUG2_xjxrtTz_fEL0tB_Pyf8CAAD__22UHgA">