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

    <tr>
        <th>Summary</th>
        <td>
            [BOLT] Crash and FDE Mismatches when trying to BOLT glibc 2.40 on x86_64
        </td>
    </tr>

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

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

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

<pre>
    With 3def49cb64ec1298290724081bd37dbdeb2ea5f8, I am seeing the following crash and FDE mismatches when trying to BOLT Glibc 2.40 (7648e3c8e80b3f1b3b43506b2fbe370e4824ab97). For further details, see the trace at the end.

I am using this PKGBUILD on CachyOS:

[PKGBUILD.bolt.txt](https://github.com/user-attachments/files/18403403/PKGBUILD.bolt.txt)

Even if I reduce the BOLT options further down to just `dyna-stats`, the crash remains.

This is the output of `objdump -drwC /tmp/makepkg/glibc/src/tmp-root/usr/lib/libc.so.6` 

[objdump-glibc.txt](https://github.com/user-attachments/files/18403435/objdump-glibc.txt)

This is the output of `readelf -w /tmp/makepkg/glibc/src/tmp-root/usr/lib/libc.so.6`

[readelf-glibc.txt](https://github.com/user-attachments/files/18403446/readelf-glibc.txt)

`Compiler: gcc 14.2.1 20240910`

CPU: Intel 14700KF

```
CFLAGS="-O2 -march=native -mtune=native -falign-functions=32 -mtls-dialect=gnu2 -fcf-protection=none -mharden-sls=none -w -fno-reorder-blocks-and-partition -fPIC"
CXXFLAGS="$CFLAGS -Wp,-U_GLIBCXX_ASSERTIONS"
LDFLAGS="-Wl,-O3,--as-needed,--sort-common -Wl,-z,now -Wl,--emit-relocs"
CCLDFLAGS="$LDFLAGS"
CXXLDFLAGS="$LDFLAGS"
FFLAGS="$CFLAGS"
FCFLAGS="$CFLAGS"
GOAMD64="v3"
ASFLAGS="-D__AVX__=1 -D__AVX2__=1 -msse2avx -D__FMA__=1"
```

```
BOLT-INFO: shared object or position-independent executable detected
PERF2BOLT: Starting data aggregation job for /tmp/makepkg/glibc/src/glibc-build/perf.data
PERF2BOLT: spawning perf job to read branch events
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: x86_64
BOLT-INFO: BOLT version: 3def49cb64ec1298290724081bd37dbdeb2ea5f8
BOLT-INFO: first alloc address is 0x0
BOLT-INFO: creating new program header table at address 0x200000, offset 0x200000
BOLT-INFO: enabling relocation mode
BOLT-INFO: enabling strict relocation mode for aggregation purposes
BOLT-ERROR: function __restore_rt/1 is in conflict with FDE [3aa4f, 3aa59). Skipping.
BOLT-WARNING: sizes differ for function __setcontext/1. FDE : 332; symbol table : 352. Using max size.
BOLT-WARNING: sizes differ for function setcontext. FDE : 332; symbol table : 352. Using max size.
BOLT-WARNING: sizes differ for function __GI___clone/1. FDE : 52; symbol table : 95. Using max size.
BOLT-WARNING: sizes differ for function clone. FDE : 52; symbol table : 95. Using max size.
BOLT-WARNING: sizes differ for function __clone. FDE : 52; symbol table : 95. Using max size.
BOLT-WARNING: sizes differ for function __clone3/1. FDE : 27; symbol table : 71. Using max size.
BOLT-WARNING: sizes differ for function __GI___clone3/1. FDE : 27; symbol table : 71. Using max size.
BOLT-WARNING: FDE [0x3fbec, 0x3fc00) conflicts with function __setcontext/1(*2)
BOLT-WARNING: FDE [0xfe04e, 0xfe05e) conflicts with function __GI___clone/1(*3)
BOLT-WARNING: FDE [0xfe05e, 0xfe06f) conflicts with function __GI___clone/1(*3)
BOLT-WARNING: FDE [0xfe205, 0xfe216) conflicts with function __clone3/1(*2)
BOLT-WARNING: FDE [0xfe216, 0xfe227) conflicts with function __clone3/1(*2)
BOLT-ERROR: symbol seen in the middle of the function __BOLT_FDE_FUNCat3aa4f. Skipping.
BOLT-INFO: pre-processing profile using perf data aggregator
BOLT-INFO: binary build-id is: 0d57a2dbb20b38d7381aae0c7b25f4a0625509ad
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 87 PID(s)
PERF2BOLT: waiting for perf events collection to finish...
PERF2BOLT: parse branch events...
PERF2BOLT: read 98826 samples and 3057341 LBR entries
PERF2BOLT: 0 samples (0.0%) were ignored
PERF2BOLT: traces mismatching disassembled function contents: 138 (0.0%)
PERF2BOLT: out of range traces involving unknown regions: 281115 (9.5%)
PERF2BOLT: waiting for perf mem events collection to finish...
BOLT-INFO: fixed PIC indirect branch detected in __GI___res_context_query/1(*2) at 0x119e65 referencing data at 0x187320 the destination value is 0x11a18b
 #0 0x000057f646b7a9c5 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) Signals.cpp:0:0
 #1 0x000057f646b7adbc SignalHandler(int) Signals.cpp:0:0
 #2 0x000071235506aa50 __restore_rt libc_sigaction.c:0:0
 #3 0x000057f64712057e llvm::bolt::BinaryFunction::disassemble() (/home/marcus/llvm20/bin/llvm-bolt+0x3d2057e)
 #4 0x000057f646c1c6c5 llvm::bolt::RewriteInstance::disassembleFunctions() RewriteInstance.cpp:0:0
 #5 0x000057f646c0ca04 llvm::bolt::RewriteInstance::run() (/home/marcus/llvm20/bin/llvm-bolt+0x380ca04)
 #6 0x000057f645f31191 main (/home/marcus/llvm20/bin/llvm-bolt+0x2b31191)
 #7 0x0000712355054f6b __libc_start_call_main libc-start.c:0:0
 #8 0x0000712355055029 __libc_start_main@GLIBC_2.2.5 (/tmp/makepkg/glibc/src/tmp-root/usr/lib/libc.so.6+0x25029)
 #9 0x000057f645f241e1 _start (/home/marcus/llvm20/bin/llvm-bolt+0x2b241e1)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: perf2bolt /tmp/makepkg/glibc/src/tmp-root/usr/lib/libc.so.6 -p /tmp/makepkg/glibc/src/glibc-build/perf.data -o /tmp/makepkg/glibc/src/glibc-build/perf.fdata
/home/marcus/Downloads/glibc/PKGBUILD: Zeile 49: 2245828 Speicherzugriffsfehler  (Speicherabzug geschrieben) perf2bolt "${srcdir}"/tmp-root/usr/lib/libc.so.6 -p "${srcdir}"/glibc-build/perf.data -o "${srcdir}"/glibc-build/perf.fdata
Error: perf2bolt failed to process the perf data
```

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy8WVtT2zrX_jXiRmOPLB_iXHAREtyP2ezCQPu1895kZHk5UbElv5JMoL_-HcnOEUqPezMtRLb0POukpbUUZoxYSYBzlF6gdHHGertW-rw10SQ_K1X1fP5J2DWOK6iTKS-zBHhEpzmdkglNSB6VVTypygpKCiytc0Tn-AqzFhsAIVfYrgHXqmnUxo24ZmaNmaxwsbjErTAts3wNBm_WILHVz36Jwhc31x_wu0aUHNMwIRjRfJIlOcQ8h5yUcR2VcZnEKclKWpcQTwgkOU1YOZ0gOg1xoTSue23XoHEFlonGOMEMgBfIasYBM-sHIKsQkRkiMy93bwaxhcG3f727-Hh1vcBK4jnj6-ebexTPhrkovdi-DkvV2NA-WZQuEM3X1nbGzaMFosVK2HVfhly1iBa9AR0waxlftyCtQbSoRQPub5QnJE5IjGjxEpdOB9LLR5BY1PgKa6h6PijjbaU6K5Q0e6XVRjpDfumNxSgj1bNkgbHMGpQRZwq3cvCGhpYJaUYbfHCKC-Pfq952vcWqdgiq_FL1bYeDSm_mGNHCth2iRcseoHtYOU2duxAtjObD20ArZb3WGtGiEeXwm4dGhRnKCN5ZcsQOPMSfsWScIlq8xN1a8ptqamAVNDUONn9Ex52KI-6fVDHJEC1e4m5VRBmZq7YTDWgUz_CKcxwlIQ0jTAlNyDQiO_nmtx_dlCtpocFRMiHkr2IHMv4js3lxPXt3j-IFojS4oThomeZrFC8ks-IRcNDaXsLBuGaNWMmg7iX30YniReyW2cYElWANcIvixUr2FAc1r4NOKwt-qgNR0kGuma5ABqYxu2cbHNRSBRqUrkAHZaP4gwmYrIKOaSvcehzUt1dzRKkT-_PnA8ERTQY9cPCpQ3QefFy-u766mH_-vJzd31_efbi6eX8_LLxeHCr8qXGzb2L3O2AmkAAVVH5klLYBV23riId5XxGdS7XZDgNohQ00NIqbUar5ETyiyXa8FfrN98VrKo2v5t9-9-5m9vciS4Z3j_HwcHZ_qOdiuZz9_-flEsWLCI8juh22xgBlj0_-RfH3bHg-wByGysnQpajg6n1x46LMrJmGCqvyC3CLlcadMt5pgZAVdCArkBbDE_DesrIBl8CBW6gQmd1e3hXUoTmge-vcLVe4YpZhtlppWDHv_S-qxLXS39_BfhSUvWgqRIsOdB06sFMm07GNdExuhke3Crudh0vNJF9jePQ79IeXtdD-9JpOKw7G_PQ6y8zDftGRKz4wvQKL3TYWzsa9Bvf4Kc-WWXI62Z8zj6CN35-zH68ITnBqoY3FrGkUx6yqtNNJGEyeXkQK18C8gyVsnPorzVq8dglP4yE0mN1BkCdK3I873FRdG7D7Rye4IFnZOFy_IYeQaVUF35xnrBbcnk73IXYYdl2vO2VgZ-bLu7ubO6_ymAHxcqnBWKVhqd2pETnFhcRcybpxDBtXarnSCKUXMWNJ7bSJGUunvqy5fxBdJ-Qq3DJ8mt29v3r_zgeA-AoGV6KuQXvJDkgNWK6khSdPGg4MzoUxRfEFNs9tqZrRpP55SkP80RdCLXvy0D9HuSf8F8iWy3dXy-WSN0rCsX7p64zT9PcIPdM_zjJq9G_xxMemo5NXySbRn_PVn2Qc9wx5iusSuNs17iN36WC6215m2F_f3BiI5ojO6FBBfZOhBpLAwFADSeFthuPQHBji7zOke4as_icYKEm3DDTK3mbYe-tHLeQhR3Q6-XX0XQYdw8KAa4CkL9tbUVUNuLLd95h7QLdyWSwul8XH93NmfR59JXdus3ynIRjPVn9-auXK7LEP9KfpUX2h9ClAKSTTz9hXEYGosHAFPSZVOmG0KktKyjivJnEeMQaET0qa1gkjGU1TMmUvqpo3ag1HICrcCGNPVw19dLUXwvXYXg_JWjidvWHCn6tua3qatmXdWCNgrppmqMIdcy2kMOswDE8xOqZ3FgoM16KzRzBDV_Vd5oPq5HeYD2FeZxbSNXmjr4TBzBjFBbNQDRGZT_DtlWvJzBB_b4v98xLDca34yizv5Gme0wwb1nYNGO_FmKSTOInw9cUdBmm1gBfFH9ktQDQnIUE0dXtuAxqwWEmlXxbP_grE7K5gfBktDDMG2rKB6uCwc_nR1Y7xDEdxfsRwCqqGNlozuYItg5CPqnl0-L18kGojsYbV0A3OMM2jKEod5jRMX8d8Gau72vkN859UnE9Q4durORayEtq1HaMvtq2FyyljJtVgluOZsPxvD_r5ODO5kpM8RdEUshRrqEGD5PsmxL_MJzElPitVYKyQQ3X4yJoehko3iliUl4jMMKIxcaUvISSd1FmSlRM25SlumscWxTMUz8yzGT7caiHtvWX84YOzLKL5fpJmm6UyVgNrEfWpV0jrpL0XK8kaE_KuQ_GM-P8DbXRKW5V8nP5_TFYNaETz76LQEWUS0ThNScZYSo6qXOw6rKURK-b9FPITgPhQjElESTqBA-1L1djh04XfucUYlsOzg4j1Hppi_6dYqxZ816d5bxAtHB4liBalkOMw8MjUVQyVJx1Cz4mUHFmGRzw7cshepDvYaGHhShrLJIcXMhW7i49BuJP5r5gzPaYmnJHkx6l1L3_DDLln25shO5QlreMomka4ZUL-Cjot_fo9-uQ4cNKkzkq8XA7R4hr7JWdNs_R8vkn3D1-ET34CkxI6PYZxCCgh_pJnSUMapqP8v3m357VydHudpscWo0kEER7E-DWbeYQxJ15fzu4vsenLVljMcNm79rVT2rrU98Y1oo-eEbrT6gtwp5MwpvdXif6IEZI3fQUHl8Il4w8-gbtk6pMOrvq2G66_SYj9z-3YkjO96tvtGeFyNHU6_P79KQ66X77CwYH6pbX1eP_zirMWaiMbxSpzgLO9q3ea_wdcvZVM_cFGkzSnOb7vQPA16K_9Sou6NjWsG9DYhcP2FSu_9iu8AsPXWkAJ0m3gQytSRBM0uTCaV0KjyXCt94PGe33tmzb74SVbU11qrfSx62smXBFh1e7WyoXWrpg-uR48q87jahpP2RmcR5M4yyM6TaKz9XlNkmmZTqdlHWUTYDTPaEYTTt0oT1l2Js4poSmJooQQQmkUJlFURnEc8yohQBNACYGWiSZ08R8qvTrzkX8eUZrT_KxhJTTGf_VFh4qDUpQuzvT5sBX7lUEJcQW32SNYYRv_dZlfkC7w_Ohbrb_f_lZrtf9WS8nxqu2s1835r-_hUZnHc_q_AAAA__9D36TY">