<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/111530>111530</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
BOLT: clang segfault after instrumenting libclang-cpp.so or libLLVM.so when built with -DLLVM_LINK_{CLANG,LLVM}_DYLIB=ON
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang,
BOLT
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
joebonrichie
</td>
</tr>
</table>
<pre>
Tested as of db1a76206902e6926464e30cc47249e217405dab, this last worked with llvm-16
Repro:
```
$ export LDFLAGS="-Wl,--copy-dt-needed-entries -Wl,-O1 -Wl,-z,relro -Wl,-z,now -Wl,-z,max-page-size=0x1000 -Wl,-Bsymbolic-functions -Wl,--sort-common -Wl,-z,pack-relative-relocs -Wl,-q"
$ cmake -G Ninja -B stage1 -S llvm -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/lib64/ccache/bin/clang -DCMAKE_CXX_COMPILER=/usr/lib64/ccache/bin/clang++ -DCMAKE_ASM_COMPILER=/usr/lib64/ccache/bin/clang -DLLVM_ENABLE_PROJECTS="clang;lld;bolt" -DLLVM_ENABLE_RUNTIMES="compiler-rt" -DCOMPILER_RT_BUILD_SANITIZERS=OFF -DCOMPILER_RT_BUILD_XRAY=OFF -DCOMPILER_RT_BUILD_LIBFUZZER=OFF -DCMAKE_INSTALL_PREFIX=stage1/install -DLLVM_LINK_LLVM_DYLIB=ON -DCLANG_LINK_CLANG_DYLIB=ON
$ ninja -C stage1 install
$ ./stage1/install/bin/llvm-bolt -instrument /home/ninya/llvm-project/stage1/install/bin/../lib/libclang-cpp.so.20.0git -o /home/ninya/llvm-project/stage1/install/bin/../lib/libclang-cpp.so.20.0git.instr
BOLT-INFO: shared object or position-independent executable detected
BOLT-INFO: Target architecture: x86_64
BOLT-INFO: BOLT version: db1a76206902e6926464e30cc47249e217405dab
BOLT-INFO: first alloc address is 0x0
BOLT-INFO: creating new program header table at address 0x4200000, offset 0x4200000
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: enabling lite mode
BOLT-WARNING: Failed to analyze 16 relocations
BOLT-WARNING: 6 collisions detected while hashing binary objects. Use -v=1 to see the list.
BOLT-INFO: 0 out of 112356 functions in the binary (0.0%) have non-empty execution profile
BOLT-INSTRUMENTER: Number of indirect call site descriptors: 39341
BOLT-INSTRUMENTER: Number of indirect call target descriptors: 110954
BOLT-INSTRUMENTER: Number of function descriptors: 110954
BOLT-INSTRUMENTER: Number of branch counters: 1350926
BOLT-INSTRUMENTER: Number of ST leaf node counters: 656205
BOLT-INSTRUMENTER: Number of direct call counters: 0
BOLT-INSTRUMENTER: Total number of counters: 2007131
BOLT-INSTRUMENTER: Total size of counters: 16057048 bytes (static alloc memory)
BOLT-INSTRUMENTER: Total size of string table emitted: 16615228 bytes in file
BOLT-INSTRUMENTER: Total size of descriptors: 133046532 bytes in file
BOLT-INSTRUMENTER: Profile will be saved to file /tmp/prof.fdata
BOLT-INFO: 550535 instructions were shortened
BOLT-INFO: removed 4300 empty blocks
BOLT-INFO: UCE removed 80769 blocks and 4856578 bytes of code
BOLT-INFO: padding code to 0xac00000 to accommodate hot text
BOLT-INFO: output linked against instrumentation runtime library, lib entry point is 0xc93a7a0
BOLT-INFO: clear procedure is 0xc936340
BOLT-INFO: patched build-id (flipped last bit)
BOLT-INFO: setting __bolt_runtime_start to 0xc93a760
BOLT-INFO: setting __bolt_runtime_fini to 0xc93a7a0
BOLT-INFO: setting __hot_start to 0x4400000
BOLT-INFO: setting __hot_end to 0xab075d7
$ mv /home/ninya/llvm-project/stage1/install/bin/../lib/libclang-cpp.so.20.0git.instr /home/ninya/llvm-project/stage1/install/bin/../lib/libclang-cpp.so.20.0git
$ ./stage1/install/bin/clang -v
Segmentation fault (core dumped)
```
backstrace
```
Stack trace of thread 307074:
#0 0x00007fb7b7fd7043 elf_get_dynamic_info (ld-linux-x86-64.so.2 + 0x7043)
#1 0x00007fb7b7fd7fe1 _dl_map_object (ld-linux-x86-64.so.2 + 0x7fe1)
#2 0x00007fb7b7fd29b5 openaux (ld-linux-x86-64.so.2 + 0x29b5)
#3 0x00007fb7b7fd14dd __GI__dl_catch_exception (ld-linux-x86-64.so.2 + 0x14dd)
#4 0x00007fb7b7fd2d14 _dl_map_object_deps (ld-linux-x86-64.so.2 + 0x2d14)
#5 0x00007fb7b7ff2a7f dl_main (ld-linux-x86-64.so.2 + 0x22a7f)
#6 0x00007fb7b7fef343 _dl_sysdep_start (ld-linux-x86-64.so.2 + 0x1f343)
#7 0x00007fb7b7ff0c7e _dl_start_final (ld-linux-x86-64.so.2 + 0x20c7e)
#8 0x00007fb7b7fef988 _start (ld-linux-x86-64.so.2 + 0x1f988)
ELF object binary architecture: AMD x86-64
```
Lemme know if I can provide any more details.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WFtz4jgW_jXOi8qULN_gIQ8QoIsdQroSeqZnXlyydQzqyJJXkhOYX78l21zC0El2tmZTKcqyzvnORTqfjkyN4RsJcOvFEy-e3tDGbpW-_aEgV1LzYsvhJldsf7sGY4EhapAqEcsDmiYEJyNMIBmRJEoiCHFRRCmJRkCCNMIxo7lH7pDdcoMENRa9Kv0MDL1yu0VCvFR-kHh46uFx9_sItVZe2I-8BPf_3ZBECHa10hYtp_Pl-MuTF049QvzfhEfufL9Q9d5n1pcADJgP0moOBvXTD8Hh6U-P3GkQWp2_kOr1fFjRnV_TDfiG_wleOMW7AGN8kJiYfZUrwQu_bGRhuZJHM75R2vqFqiolzwFrWjz7GgS1_AXcgyqOOv_2CDmFWFT0GZD_Ba24_EGRP0HG0g0EyH9qU4b86XL56322Hj9-ma2fsvVDNvm2WE69cPp9mCB_enc__mXWvcvWv3-deeH0EQRQA8fJu-zu4f7rYjl7bFM4b4z2yFzwPIk8Mi8KWmzBI_OcSzcUVG5Oqt-__9fKHpl4ZHKEGD_d_x37bdSz1XiynGVfHx_-Nbtb9zugMxJOhGBeOMmVsB4hFxqP31brxf3soKGqmgvQvu5FD_5kj-s-dU_j1WK9-GP26FQe5vOrQt8fx7-_M71cTObf_vijDbOXaTOwWD2tx8tl9vVxNl9898Jpt8QemXNpLBXi4Pxysfola5-mvy8XEwezcijL8epLN9k9nmZPG0l2--fusH966JPAwCPzS8PHrLfV6VKJfDelmwqkRR6Zb1Xl1kZyuacHuVqrH1DY9_AGg26Fu992xfyirgdGDQge4A23yFf_KP6gjaMLf_KwXPuL1fzBC8fIbKkGhlTubCClUa0Md1Xtc8mgBslc6LCDorE0F4AYWCgssCtYa6o3YBHVxZY7oUaDe70bJlkSXZF3A_QC2nAl3fjTtPpXqJJrYxEVQhWIMqbBGMQNwjt8RbjQQC2XGyThFdVabTSt0BYoA426IKk9ouBdRLD7c2SuytKAPXt3Av9t_LharL60cUDebBCXpUKvXAiUAzJW87oGhkqtKmS3gHIuqd4P0DdHTU3NqAW_VfQN9LRqFXoGqBG3gytRgKS5cFG0hEqdCqoUg2vZUbpwkv6Ppqr9NkTjhdNKvYCbQ6dN3sK8Z0xwC5dmzkKfUy6AOc-ppGL_J6AgOXPQXNdKUKGE4KaN-rDB0OuWC0BbarbOcJevfqOaPm8vXjgNnDUD0GZVcHM1WRipxrqjOwhIGCfodHZxebYcyCNDPMAeiT0yQlv6Akgq6UNV231fBC7NtVYlF28z_bR-_HY_W60d343Rqqly0M4gl4xrV1uFozbj0sfAFJrXVmnjZMNRGAV_A8t25XaBFgR4FEefgjsk4X-AyDWVxRYVqpEWeu0wxiOSfEr9aY0E0BJJxeANSBInBMefwjhPyTkEfkd7rSwVSB4xzvUIxmkQvrcgnbbrji51gwTHKY6GKN9bMG43GVdSRc9MFVRK7z0y-jS44w256VkJKm4d87aGkiAm5GCIS_TBhnwLe7ngYYijJA7Jp-G-dhVw4jf60pV9-9Yjc1vVHpm7QhmUjFp6pSbjGMdh3JNPX42voAGZrdIW5NUzRoNjLYaiEGPU1WUuVPFsrsh-u5sd5Yc4TUa9KKKSoWgYJ3F6SGC7jle5s6aMuSVw0y5AvKNFy_0tyRVtt-vIG22VRRZ29gqGamzdWCS4dBcAuqEu5kvWRbqRlleOw3JN3Ta5c4_I9fJ7VCsubXekFaOQpvTqwSaAasdOBbBGw1E8CaNr4jW1xRYYyhsumM-Z26-l6M6p9saSc3u5WfuuAWx7gGaZ65Ky3vPMWKptl6TWyeSa1Z_ollzyM9Wr8Z1Ut8qeW4uiy-P4ugpI1q9hjtOYpad-sHr5P_Rf_6iJT_a2_Y3ipRN_gs1pA5a0Ea7NHRZKA2JNVQM7rv_lhbT9zWnxbKymBVwVQhd_T5YWz6iVdxVntxooQyFOcRodb76XSh4JMXKdHMY4LfM0T0uW4ihEIMpsAzZje0krXmRtw-WRoWC-4LLZ-bth4idRmyLk7mB45_SOEV0xFPzFUAkBypjIKlpnfZP8gYnSpf3nJsiFBTLKY6RqkLTZfQDtRE_QHgnDS3eDiDGUZV8WmfO5cPWdwa6Aul3f99Gd7nuOR5fGCAuii9xkDGrzURQsiN6zE1_YKQlNS9Sa4R_FQJzse-DJW2wowyhsYzB7w6DuOeWDRDmlN-uQXrqMixQ6WIfnuI2Kj1x3Ou-5PkSXvo-GQ_RJj0fD4U-xZ8v54f7Xd8GXN7jx_RR1qO9wwRKqCtCzVK-Il2iBCto2yi-cAaJyj6qWVMBSLszght2GbBSO6A3cBikZhqMwHYY329tyFI1ong9hFAZJjGlIcRBTSCnFQZGWwQ2_JZhEAcbDICQhDgdlHqR5wRIWF3RI4tyLMFSUi4Gj1oHSmxtuTAO3QRDEIb4RNAdh2u99h48nhHjkziPEHRxuEE9v9G33DaDZGC_C7lZhTniWWwG3rXR76DpCNbDp6JOWFs5vVN2l6Q1ju2u24Ply-eu9G71uQbZnsO2-DZ5__vDSSfuRwyN37qWXTs8_htw0Wtxura1dF-eRuUfmG263TT4oVNUfLn89Y9p0GI_M-4y83JL_BAAA___DNV-r">