<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62883>62883</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Segmentation fault when llvm-bolt compiles aarch64 binary on x86_64/aarch64 cpu
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jt387
</td>
</tr>
</table>
<pre>
Hi all, i want to use bolt to optimize performance of aarch64 binary, i have installed llvm on x86_64 and aarch64 ubuntu. When i try to execute the command on x86_84 machine: llvm-bolt demo3 -instrument -o demo3-instrument, i get the segmentation fault as below:
BOLT-INFO: Target architecture: aarch64
BOLT-INFO: BOLT version: 2713781b0cdc1af647048ec97d40101664673dee
BOLT-INFO: first alloc address is 0x400000
BOLT-INFO: creating new program header table at address 0x600000, offset 0x200000
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
BOLT-INFO: number of removed linker-inserted veneers: 0
BOLT-INFO: 0 out of 16 functions in the binary (0.0%) have non-empty execution profile
BOLT-INFO: UCE removed 0 blocks and 0 bytes of code.
BOLT-INFO: Starting stub-insertion pass
BOLT-INFO: Inserted 0 stubs in the hot area and 0 stubs in the cold area. Shared 0 times, iterated 1 times.
#0 0x00007fc339baacaf llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/root/jiangtao_workspace/soft/build/bin/../lib/libLLVMSupport.so.17git+0x1cbcaf)
#1 0x00007fc339ba83d4 SignalHandler(int) Signals.cpp:0:0
#2 0x00007fc3396300c0 (/lib/x86_64-linux-gnu/libc.so.6+0x430c0)
#3 0x00007fc336a7f620 llvm::bolt::InstrumentationRuntimeLibrary::emitBinary(llvm::bolt::BinaryContext&, llvm::MCStreamer&) (/root/jiangtao_workspace/soft/build/bin/../lib/../lib/libLLVMBOLTRuntimeLibs.so.17git+0x8620)
#4 0x00007fc3366c8022 llvm::bolt::emitBinaryContext(llvm::MCStreamer&, llvm::bolt::BinaryContext&, llvm::StringRef) (/root/jiangtao_workspace/soft/build/bin/../lib/../lib/libLLVMBOLTCore.so.17git+0x6f022)
#5 0x00007fc33a75a7c0 llvm::bolt::RewriteInstance::emitAndLink() (/root/jiangtao_workspace/soft/build/bin/../lib/libLLVMBOLTRewrite.so.17git+0xe97c0)
#6 0x00007fc33a76134f llvm::bolt::RewriteInstance::run() (/root/jiangtao_workspace/soft/build/bin/../lib/libLLVMBOLTRewrite.so.17git+0xf034f)
#7 0x0000561181032cfe main (llvm-bolt+0x3cfe)
#8 0x00007fc3396110b3 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x240b3)
#9 0x00005611810341fe _start (llvm-bolt+0x51fe)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: llvm-bolt demo3 -instrument -o demo3-instrument
Segmentation fault (core dumped)
And i try it on aarch64 machine, get the same error:
BOLT-INFO: Target architecture: aarch64
BOLT-INFO: BOLT version: <unknown>
BOLT-INFO: first alloc address is 0x400000
BOLT-INFO: creating new program header table at address 0x600000, offset 0x200000
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
BOLT-INFO: number of removed linker-inserted veneers: 0
BOLT-INFO: 0 out of 16 functions in the binary (0.0%) have non-empty execution profile
BOLT-INFO: UCE removed 0 blocks and 0 bytes of code.
BOLT-INFO: Starting stub-insertion pass
BOLT-INFO: Inserted 0 stubs in the hot area and 0 stubs in the cold area. Shared 0 times, iterated 1 times.
#0 0x0000ffff81c944f0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/local/bin/../lib/libLLVMSupport.so.16+0x1c44f0)
#1 0x0000ffff81c92638 llvm::sys::RunSignalHandlers() (/usr/local/bin/../lib/libLLVMSupport.so.16+0x1c2638)
#2 0x0000ffff81c927d4 SignalHandler(int) Signals.cpp:0:0
#3 0x0000ffff839e97c0 (linux-vdso.so.1+0x7c0)
#4 0x0000ffff7ef11e6c llvm::bolt::InstrumentationRuntimeLibrary::emitBinary(llvm::bolt::BinaryContext&, llvm::MCStreamer&) (/usr/local/bin/../lib/../lib/libLLVMBOLTRuntimeLibs.so.16+0x6e6c)
#5 0x0000ffff7eb6c0e0 llvm::bolt::emitBinaryContext(llvm::MCStreamer&, llvm::bolt::BinaryContext&, llvm::StringRef) (/usr/local/bin/../lib/../lib/libLLVMBOLTCore.so.16+0x640e0)
#6 0x0000ffff8295f3d0 llvm::bolt::RewriteInstance::emitAndLink() (/usr/local/bin/../lib/libLLVMBOLTRewrite.so.16+0xd33d0)
#7 0x0000ffff829645e8 llvm::bolt::RewriteInstance::run() (/usr/local/bin/../lib/libLLVMBOLTRewrite.so.16+0xd85e8)
#8 0x0000aaaabeb03860 main (/usr/local/bin/llvm-bolt+0x3860)
#9 0x0000ffff8177ed50 __libc_start_main /build/glibc-70LW9c/glibc-2.31/csu/../csu/libc-start.c:342:3
#10 0x0000aaaabeb04844 _start (/usr/local/bin/llvm-bolt+0x4844)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: llvm-bolt demo3 -instrument -o demo3-instrument
Segmentation fault (core dumped)
Any suggestion will be appreciated, thanks! llvm version: 16.0.4
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWF1v2zoS_TXKC2GBImVKfvCDm9Z7C-T2Fknv9jGgyJHMRiIFkkqc_fULUoq_qt0Nsr0fDw1QWxY1M2fODIen4s6pRgOsk-W7ZPn-ig9-Z-z6m6dlcVUZ-bz-RSHetgm5Rgo9ce2RN2hwgCrTxmvTe9WpfwHqwdbGdlwLQKZGnFuxYzmqlOb2ebTf8UdASjvP2xYkatvHDhmN9iW7ZzniWh6shmrQfkjR1x1opJC3zyEW7EEMHpDfARKm64LFZF_mqONipzQkdBM9LyJCCZ2haBGC2qED7dHCjDdP7o3oGvDRs4Mm3OReGY1qPrQecYcqaM1TQjcJfp_gzbvfbr4sPn7a_haifeE22AboyoPwg40gplxmDMIP9AjWKaPDb1JktCizCgspMl6zvMB5CWJVyBxnOGMsZwWVADOuamWdDxUyAnEpLTiHlEN4n-PwN2MhLHCvdIM0PKHemsbyDu2AS7DI86oFxP3BFd6z0Q-5RqauHXiE9-TS9dfN7aePn_4RvEuohgYpXRv0pNoWVYCct6rvQaLami4yPPZEin53gBZDL7mHRTRcOBCBdheq_QDQI-XTmRxA86oNOVhojRgr1Rk5S5CxIjy5-DZ0_SIm6BL6vjOPENbQsQuimxkPUrkp2oK3qtGLjgtrFvUQyhf6Txu92JcM9S33YQvM-NBDV4EN-8JCCC1Rq_QD2NCEYD1I9AgawLrw8FzVMDKDD_YZQ_WgJ5aUPuETJaTEKU7IMiGrca8FZND1_nnaOgFwb02t2jmqfr_-cICHUdUa8eDirsSoevbgQnhhJMxV5M5zG7vK-aGasorRuHMzj398SRtHg0MmOxP2EfAp7NmaMK2Miym623Ebjb3qwMXt68Hy4DAb700YUUIoRngfGraoBaWrinPB6zghwm6mG_fsxovPVml_57l4-GK5gISUx4csf7o3zlvgXUJYDBjGxipwnpCtNcYnZPtNcd14bu6fjH1wfXSydaYOa9WgWhm-lU7INk0Tsm1VNX7e3Pzz17uh7431qTNpVjTKJ-Qd3meiErxOyOqYTXaRTUllju5Uo3n7C9eyBZuQcgI33nap6PuEbnD8d3BEzhwxirHAUzojsHEsL1qlh_2i0cO4IAJCFtHlFAt8Bo6e-mS8qBnBJ1SHiTxefTzfdbeDDlW7UZUNh0V8BDrl302HRznnY1y8NtrD3k9VOT736_VdLFfgg_2YSn1ftNDTR-zuvHglI-fs5GfsMFFiQmbZOaZ-yK78j5ldz7r47-Tceat0cwv1H0nMtbFwzgirMSFnlCxPKeHFkhdivmFu4ckqD6FvgsI48rTR8kbph5jED9yOsbJjzPMcYFVcND07z4FlNK9fn4Md9J-GvcY0P58mxYR9ybKszDAlogbUcaXR1HJRRUVjKmo4sy3PB0iW4Yqi-_swI-5dOA7uXxy9fqSQHFf0LMrqAmGe1YBG_99jXGYnGD_ffNjcfUBuqDrlEUdBmFgIQzaoi533fRz8ZJuQbaP8bqhSYboAKdRu_Fr01nwDEVhXzg3hrNnGs0lp0Q5ykqKWux2quHjw4eCYjp54kiA5dP1BNeIUxb_Pk-ritokz0L1Fs45BvteqCSmFsRAjgzywcfq5CQlEUa18EDAvqvtFQZProxjmHSCw1tg_SPsm9HrQD9o86YR--ClwfwrcnwL3rQK3ruu6zMQqz2v8gwXu4GyYiEbw9pUalk0CNoCZFbAvaAmj5Rza20GfyVp3dky-HVCIdwaIXAIq3qio6akjuopKIZ5R8bh7lM5EIBHHpYjIT2wLqLMMmPh7Kef_wfjrxPFYBAZMzMrAMfuKCQzzMvCvUMZvSvwgfqeMcwzzqjE2C1ktayp_gPJ93ba4FIgjRkmpxLPqcMLI8iWUb1e2_xe2cgnlrPrknPMKKkxLhtGJ4JyLdiFoS4ZnpeY4CIoC5BLPCtqDAm_C2qLAN19X4vCTpDRLyFa44SXB8TIuRj-pSOiG5iR8TrqM0AxfZJSXeX6idF-VU7D5WwvgBK_-OvW70c_IDU0DLlq86Dfe9xaECqdrGAZ-x_WDS0iGxjfUJ2I1YylO8yu5pnJFV_wK1hkr8zLPGF1d7daV5DmryxpndV4UMgv_m5U1BwEVLYiAK7UmmFC8JDTLKF2uUsFELgsBeVbkUBd5kmPouGrTEDk1trmKrK8ZKUt61fIKWvfyrt6uR9KGxiU5bpXz7mjmlW9hPUPQ0w70CdvCdL1qwV28rz--lk_I9mVJ9MPVYNv12zsnpvHvAAAA__8PkJs7">