<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/55935>55935</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[pseudo] clangPseudoCXX link time error due to missing symbol in Debug build
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jmciver
</td>
</tr>
</table>
<pre>
I am seeing the following link time error when building in `Debug` mode on `main` in the clang pseudoparser:
```
[1/4] Linking CXX shared library lib/libclangPseudoCXX.so.15git
FAILED: lib/libclangPseudoCXX.so.15git
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wmisleading-indentation -fdiagnostics-color -fno-common -Woverloaded-virtual -fno-strict-aliasing -g -Wl,-z,defs -Wl,-z,nodelete -fuse-ld=gold -shared -Wl,-soname,libclangPseudoCXX.so.15git -o lib/libclangPseudoCXX.so.15git tools/clang/tools/extra/pseudo/lib/cxx/CMakeFiles/obj.clangPseudoCXX.dir/CXX.cpp.o -Wl,-rpath,"\$ORIGIN/../lib" lib/libclangPseudoGrammar.so.15git -Wl,-rpath-link,/work/jmciver/llvmLatest/build/Debug/lib && :
tools/clang/tools/extra/pseudo/lib/cxx/CMakeFiles/obj.clangPseudoCXX.dir/CXX.cpp.o:CXX.cpp:llvm::VerifyEnableABIBreakingChecks: error: undefined reference to 'llvm::EnableABIBreakingChecks'
collect2: error: ld returned 1 exit status
```
The following CMake options are being used to build:
```
cmake \
-GNinja \
-DCMAKE_BUILD_TYPE=Debug \
-DLLVM_USE_LINKER=gold \
-DLLVM_ENABLE_PROJECTS="clang;llvm;clang-tools-extra" \
-DLLVM_TARGETS_TO_BUILD=X86 \
-DBUILD_SHARED_LIBS=ON ../../llvm-project/llvm
```
The link error in `Debug` mode is due to an undefined reference to `llvm::EnableABIBreakingChecks`, which is defined in the `LLVMSupport` library. Adding this library to the `clangPseudoCXX` target link libraries resolves the issue. `Release` mode does not have this issue as ABI breaking checks are not enabled by default. The link time dependency was created sometime after commit d4609ae47d16.
I have provided a possible patch here: https://reviews.llvm.org/D127271
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy9VklT4zgU_jXJReVU4mzkkEM2mEyngQJ6mRMlW8-xaNnySDIh_Pr5JBvoTNPDbapcWp--t7_nRIvjfMt4wSyRLPfM5cQyrZQ--J2S5Q_mZEGMjNGGHXIqWVJLJfytLFln0l9TUu8xs0ILYjqcFVyW_ggUHjBVHOSVpVroihtLpjNcdPrrTn8BqvZrtuPloBOfjzrjNduBuWez-v6d2ZwbEpAnMdwc_QwqjAH5OgCDrGd1bzDeS9eAnS-2u80arD6kZy13kHbiCT5M57U1GBNoEp-nnXiJj0XZ9Xb1OpY6slTw0sk0kqUjU2krnYQNouxRWplIJd0RV7Aj2SiXQsB-0bdgzM5wLbijKJg3-saV8jdPznDMQK7L2pKIYC9eELBxejASD6wzMIvFPuXWRX_XXDUvCmktbqJMkhLgClG4ks9kQFuRCHI2lEqDzA_YyqJSMpUuyiCCy42u93mLx48JQY43JNFcwIrWRgVUT1OytjmEf-rSM4kK_UjNWYVbWchnL9XbaanpKaXKRe5Y-SNBCgriuIwepXHQJxJOe4Vtvd8TdMRTY6Ro36e6KKh02EBjRdwHI9SFbR1vrS8k35faQmELcuXBsvalv__mAZXmAgZuWbbuhG1TF0FZ7k3Joj0DterEq-gZg6DM_rwvdSM7HsNZkRJw6l4rmKkN2JbW6hJOxOo_QjDSH4ep01pZH47-HvPLPoQN5ibFGgxP9vSEcfWZ_6BzqchT6uSh9y90IX2c-1VaVT39qrCpuMux6MRxZ4xxdHWzvdhegrbXe2ERs3eFvkDMFty8CX6CGfmyEoDPD9pgdf5QpBIe8TjqsdghLazzuecrDeamxAQmr_n5UkD-D5OAWbvGykvouQ8XX8nI7LgpeaJosdwuDXFfsFY5pT-sryVtni8YEoMy1ADBDGVkqEwJvoQu0ze03-HE00ZRhLGi1MUnwMojutp46AGjJ5jaIglq-351DePdSYkPpmC68oljGYKWJaER-OLjZWx88JtynRb-sY-OsIWbLy5l-cBPjtarz4tPm_vll-1ufX_31_UGSRI8ekq12339fP_ldnO_215-2ty8ZNKvNJvLxXK3ub--ufpzs7q7BSHisHH_cNnYcxm2UYiFqI2E-B2ou8XNxebu9v7uqhEPWN_PJqeEjdy3fyxuNmvItvQMry5ZyIEmEcAyqox-gHfa7QfWD2216ajv9VBpmahDgPDyt6Ez6X8cOuAcr9C0ZZoH0Bao7cq49ka4ratKG-e5t-21xxZCND8DePXSc8G0fXWaLP6h42ZPrtGroZdkIbDV6hEL_w69qaaef36DksktvaorNEhK7VjO0SECz0DMuGXQiSWtUiwNWoUY9eQUtBYsOXrNeK1cj71aN3RVQRX5tpAe2QFgKYAcHliNhurveeb7qm8KyBsxmvRnnEZTMZj0fvbYthEMHn5ECxKMM7R5NHeFM-5g2hxu8cmYO1f5vEcQ4DP0KOlge95NPW18bVoP4mk8HfwM3oxdMR-K2XDGu046RXP8BrV1C_9Bp-b-5Z-sDZW2-TN7LBKtvI-bHAv5262Nmp-Kh6qc10kPyr_E7C-RHLzgK-R4PBuOu_lcjGZ8MIsHozTLRqOzKR8lRHwmxv00zkbTQVfxhJT14iPfSjo0jgwNZN2V87gfx_1J_6w_GU_G_d5wREl2Np2NkiFNadTvjPr4pZDq1WRdMw8iQQ-LSyWte7NnF_8gcl9SsJbH57XLtZm3vaQbWM-D6P8AGzaP1A">