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

    <tr>
        <th>Summary</th>
        <td>
            [BOLT] llvm-bolt crashes during Python 3.13.1 build with addDebugFilenameToUnit segmentation fault
        </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>
    Compiling python 3.13.1 with --enable-bolt on CachyOS with Clang-20git (7226b39926b5df6452d13e83f61e35a71dbe448d) and the patch below yields the following crash.

Analysis:

llvm-bolt crashes with a segmentation fault during the optimization phase. The crash occurs in the llvm::bolt::BinaryContext::addDebugFilenameToUnit function, suggesting an issue related to handling debug information.

```
BOLT-INFO: SCTC: patched 53 tail calls (53 forward) tail calls (0 backward) from a total of 53 while removing 11 double jumps and removing 59 basic blocks totalling 280 bytes of code. CTCs total execution count is 6035 and the number of times CTCs are taken is 5854
BOLT-INFO: FOP optimized 54 redundant load(s) and 0 unused store(s)
BOLT-INFO: Frequency of redundant loads is 139 and frequency of unused stores is 0
BOLT-INFO: Frequency of loads changed to use a register is 139 and frequency of loads changed to use an immediate is 0
BOLT-INFO: FOP deleted 38 load(s) (dyn count: 139) and 0 store(s)
BOLT-INFO: FRAME ANALYSIS: 5171 function(s) were not optimized.
BOLT-INFO: FRAME ANALYSIS: 703 function(s) (67.5% dyn cov) could not have its frame indices restored.
BOLT-INFO: Shrink wrapping moved 108 spills inserting load/stores and 3 spills inserting push/pops
BOLT-INFO: Shrink wrapping reduced 53877 store executions (0.4% total instructions executed, 4.1% store instructions)
BOLT-INFO: Shrink wrapping failed at reducing 0 store executions (0.0% total instructions executed, 0.0% store instructions)
BOLT-INFO: Allocation combiner: 97 empty spaces coalesced (dyn count: 70232).
#0 0x000064bed9145205 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) Signals.cpp:0:0
#1 0x000064bed91455fc SignalHandler(int) Signals.cpp:0:0
#2 0x000074ab0c9fc4b0 (/usr/lib/libc.so.6+0x4b4b0)
#3 0x000064bed9693b51 llvm::bolt::BinaryContext::addDebugFilenameToUnit(unsigned int, unsigned int, unsigned int) (/home/marcus/llvm20/bin/llvm-bolt+0x3c93b51)
#4 0x000064bed96a5251 (anonymous namespace)::BinaryEmitter::emitFunctionBody(llvm::bolt::BinaryFunction&, llvm::bolt::FunctionFragment&, bool) (.llvm.10412579348155975206) BinaryEmitter.cpp:0:0
#5 0x000064bed96a5abc (anonymous namespace)::BinaryEmitter::emitFunction(llvm::bolt::BinaryFunction&, llvm::bolt::FunctionFragment&) BinaryEmitter.cpp:0:0
#6 0x000064bed96a2f24 llvm::bolt::emitBinaryContext(llvm::MCStreamer&, llvm::bolt::BinaryContext&, llvm::StringRef) (/home/marcus/llvm20/bin/llvm-bolt+0x3ca2f24)
#7 0x000064bed91d7813 llvm::bolt::RewriteInstance::run() (/home/marcus/llvm20/bin/llvm-bolt+0x37d7813)
#8 0x000064bed853d234 main (/home/marcus/llvm20/bin/llvm-bolt+0x2b3d234)
#9 0x000074ab0c9db127 (/usr/lib/libc.so.6+0x2a127)
#10 0x000074ab0c9db1e4 __libc_start_main (/usr/lib/libc.so.6+0x2a1e4)
#11 0x000064bed8530241 _start (/home/marcus/llvm20/bin/llvm-bolt+0x2b30241)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
```

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

Flags used in `/etc/makepkg.conf`:

```
export CC=clang
export CXX=clang++
export CC_LD=lld
export CXX_LD=lld
export AR=llvm-ar
export NM=llvm-nm
export STRIP=llvm-strip
export OBJCOPY=llvm-objcopy
export OBJDUMP=llvm-objdump
export READELF=llvm-readelf
export RANLIB=llvm-ranlib
export HOSTCC=clang
export HOSTCXX=clang++
export HOSTAR=llvm-ar
export CPPFLAGS="-D_FORTIFY_SOURCE=0"
export CFLAGS="-O3 -march=native -mtune=native -fno-semantic-interposition -fcf-protection=none -mharden-sls=none -flto -fwhole-program-vtables -fdata-sections -ffunction-sections -w"
export CXXFLAGS="${CFLAGS} -Wp,-U_GLIBCXX_ASSERTIONS"
export LDFLAGS="-Wl,--lto-CGO3 -Wl,--gc-sections -Wl,--icf=all -Wl,--lto-O3,-O3,-Bsymbolic-functions,--as-needed -fcf-protection=none -mharden-sls=none -flto -fwhole-program-vtables -fuse-ld=lld -Wl,-zmax-page-size=0x200000 -Wl,--push-state -Wl,-whole-archive -lmimalloc -Wl,--pop-state -lpthread -lstdc++ -lm -ldl -Wl,-z,now -Wl,-z,relro -Wl,-z,pack-relative-relocs -Wl,--hash-style=gnu -Wl,--undefined-version"
export CCLDFLAGS="$LDFLAGS"
export CXXLDFLAGS="$LDFLAGS"
export ASFLAGS="-D__AVX__=1 -D__AVX2__=1 -D__FMA__=1"
```
BOLT_APPLY_FLAGS as found in the bolt.patch above:

`BOLT_APPLY_FLAGS=" -update-debug-sections -reorder-blocks=ext-tsp -reorder-functions=cdsort -split-functions -icf=1 -inline-all -split-eh -reorder-functions-use-hot-size -peepholes=none -jump-tables=aggressive -inline-ap -indirect-call-promotion=all -dyno-stats -use-gnu-stack -frame-opt=hot -infer-stale-profile=1 -split-strategy=cdsplit --skip-funcs=sre_ucs1_match/1,_PyEval_EvalFrameDefault.localalias/1 "`
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0WN9y27qPfhrlhiOPREn-c5ELx47PLztpk4nTPe2VhyIhmw1Fakkqifv0O6BkW07S9kzP7kzqSgD48QMIkBCZc3KrAS6j4ioqlhes9TtjL2uXTqYXpRH7y4WpG6mk3pJm73dGk2yUZqOUvEi_I3EMmpUK4tIoT4wmC8Z3-7t1p10oprcxTbbSk4hOJ5SOy2w2o-OyENU4L6hIM5hm1TiFrGCTVJSQ51MR0RlhWhC_A9Iwz3ekBGVeyF6CEi6IK6OUeUFS3DK3G0XJPErmc83U3kkXZfNOoNRz3VELZuA6Xow42NagPfPSaFKxVnkiWot4iG4aL2v5o9M2O-ZgRB530IEQw3lrHZE62OIUOF82x3m6pyupmd0vjPbw2ouYEEso2-1KKtCshkfzRUtPqlZznCWiC-La7RacRxJME-lcC8SCYh4E8YbsmBZhGQTiEKkrY-tAsfc-Gif9XzK_urt9jG8-r-6ibE7Wi8cF_h9iCYIUGfFMKsKZUg4XpshIZewLsyH057qElIw_HXSVNTVhxBvPFDEVQr3spEKitXlGdmlKhGlLBeR7WzcuLORRWcxIyZzkpFSGP7kOJzgVJtp7cIjKjYARWTwuegsCr8DbsBrctNoT6cg4yYpjlui2LsHiUC9rcN1QZoF49gQYS1JMi_xtXFZ394elxqjkxIJotWDaE2WYiOjUHVIxIa1uHQjivLHQa97hWfifFjTfI5FzLIcc0qwDq4Z2Q9xg9W75zmA7ML5jetulReuAMGJhK50H-9NpPh6niaxrEJJ5-Hjqu3siQAGmYDY9i0pEp2LfrweaptnsFKxfRulh_umazD_Pb7-tb9YoKdJJOqiEDv8FLBBt_GmFRr9HmiTZO6CITseTURHRgnSEn1HKTatEwN-xZyDSO1JZVgORWkgOjlgITryfdb2zUj-RF8uaBjO3Ns8gSJpMiWskFo3UDmwo4y5eq35tMTTZe6OmdbuIrhrTuN9NhTnFQwFPJ5MuyKfS6Kp1lKOjXdVI7bxteafs7EDgTpOPUrTqAIZWHyzXWw4VkwoEYb5jg6LkJ1SSf0Clt_pHVOZKGc76baAupQaL4tmEQN34PXENw5XjhilwGKe3OTpJaEYjOgsbJs0SkrwmSZKM8xLELM0LmhSD_dztXfdwb6X2a8_406NlHPP6ZGTZy8Y4b4HVER2jR1J7TLC13Gqm3Ig3TZTNk_AvzJq-nbWoeG_9H9ziwUZ0-jsQ2oNMclYmfFbxvEzQ3YiuWmcjulKy7H75yJnROKJXyWte5mXSxTWiWXbGYzzLyiL9d6dZRKetDu2E6KKwIL9-n_WUd6aGiK5qZnnrkLZ6rmkS0VUpdf8aTvHgRcYD1aMf-bkfrKBFirhMG72vTesIMgy5gWMGLl3X0vuQQ1E2h1r6Vb91XBmxP1vlt8FYHfeYsOQfGR5MVpaFVqM3LY1RveMjHDZKkzylxWSW5dO0KGaTgiZjNDij-D4Birdes5L_S6__Xzz-rSPjN47QiuYfwiPV81Qc8v20WIcixOr5KcM3w9_YrT02gA9Q_XFiBvLHxJycF7qYTNPsQ1oP8GKlhxvtPNMc-o2l1YHDn1GZhNmOVKZDKtMiE1g2NZP6T8BpGcYfwWfne5EoUzr57V5EWUonR4g0eYcBOdlscMzGeWb9ZsD2l6hwIpamb9xOaJ6SDu8PHUeEDv_-9nq-viauLWvpCSPYk1tojPWhWfe-CacHXUV0tZV-15Yjbuoe8wDdWPMduI_oKrT7yCC0CVJz1QoIvW330YFNuMfTZ_Sm08e_4go5jkJ_P_KvPiqWEZ3-gkPrwMbMe8Z3WKk4byVVmD-d0nE6Ho8xBuegXViT-UqxrSOha8UlGWO4wPMQxidonrYjbnSF8sNn2JAvvIYYLRZRtuT4fTiQff16FNIr_BuYb26XUbZUSpzZfyCdPwTJcx0ze5J-_nSQ6vokXT8-3NwfFM5b2Zx0d1f_tbi7_3bQmvI7N83-TL_88ul-oBdtPRj_cD1fXt-uDnoLTICqBvr559ubq6OaaUzoo_Y_d-vHj2IU5D-PE6o_DsDi_n51O_9rHWXLiNJ4uVndPTzerL5t1ndfHhbXUbZMIkoH9kPru4zEWCO7KFtq5uUzkLj2rYbBe6VN7KBm2kseS-3BNsbJ0K3FFa8w1z10Z0i21EYjxI5ZATp2yh1llfKGxNXLzijAMVvL6vjZs1KBI3ElmGexg76TjKtDtz-QvZz78fXrwJOI5tHkqvdtsiTx301EF_GXzV-3N1eYT_P1-vrh8ebu8_oM5XY5DMffCgfFypt48RfGphds-YBGL5O8irIlU4oMh91l-Nj9Xrl9XRoleXxwxgU75mINIED8X8avdRAr0dXMgdGPmr3GDdtC7OQPXNLkleK2mRwp4zdK7Dx-JvaiDh9TIiy-qmXNsD0_DTHNYYRq_A7Tn8TKecG7nMUxJFbiGJcfEV1o8zJ8taCsGQoaxp_icCcinwEfDD9FescCyb1CF7a6PSpaLaCSGkT8DNaFJmaYIIuzxY1ofnh_k0b_xGy-Pi-yzfy_v242UbZMSf9GB6-rT_PurcN4e4Gzmd_f337bBETCHKlMG86GcCycNmfCSvMMw8327eCODonbRjAPcbhAGmSqBWMF2Li7lImyJbz62LvmpDklZrbkwqGnsWuU9CcN6TM9JbHUSmqIQ853VrD7ACvGXNwZH7KOxA1Ag0l1SuXvbd3EXeZiCW23FpwL6XaYocFHIS1wH3OmFCZ8bfoaCfOLPW5LnnlHwnxb3eIrfyJx-N6PTeOjbLkzHqEqsKjtKgdPxM6hzgnnLfOw3XcxQBGJY_ckm-ASUnQWNi136abGdcHDNKKLzf3--pmpDf6scMolhAvHEX7MKqYkC8cuwRwYJxfiMhOzbMYu4DKdZEWW5tPp9GJ3OZuNy3TC6bSiheDVpOD5RDBGaVHlvGDFhbyk2J1QOkmLIs-no9lYiGosqtmMsXya0ShPoGZSdd8dxm4vQtNxmdKUptmFYiUoF-6BKcUMQkLF8sJedl1Qu3VRnijpvDsheOlVuDsOA4oleX_j2t-r3p9dHpetVKK_jP34ZvT9De1Fa9XlnzdWvZvPl_R_AwAA__8vvUvb">