<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/65590>65590</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang] link error with -fforce-emit-vtables in StaticAnalyzer
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang,
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
vient
</td>
</tr>
</table>
<pre>
Errors look like this
```
ld.lld: error: undefined symbol: clang::ento::ObjCMethodCall::~ObjCMethodCall()
>>> referenced by CallEvent.h:1426 (/test/work/llvm-project/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1426)
>>> tools/clang/lib/StaticAnalyzer/Core/CMakeFiles/obj.clangStaticAnalyzerCore.dir/ExprEngineObjC.cpp.o:(clang::ento::ExprEngine::VisitObjCMessage(clang::ObjCMessageExpr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&))
>>> referenced by CallEvent.h:1426 (/test/work/llvm-project/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1426)
>>> tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/obj.clangStaticAnalyzerCheckers.dir/RetainCountChecker/RetainCountDiagnostics.cpp.o:(generateDiagnosticsForCallLike(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::LocationContext const*, clang::ento::retaincountchecker::RefVal const&, clang::ento::SymExpr const*&, clang::Stmt const*, llvm::raw_string_ostream&))
>>> did you mean: clang::ento::ObjCMethodCall::~ObjCMethodCall()
>>> defined in: tools/clang/lib/StaticAnalyzer/Core/CMakeFiles/obj.clangStaticAnalyzerCore.dir/CallEvent.cpp.o
ld.lld: error: undefined symbol: clang::ento::CXXDestructorCall::~CXXDestructorCall()
>>> referenced by CallEvent.h:1426 (/test/work/llvm-project/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h:1426)
>>> tools/clang/lib/StaticAnalyzer/Core/CMakeFiles/obj.clangStaticAnalyzerCore.dir/ExprEngineCXX.cpp.o:(clang::ento::ExprEngine::VisitCXXDestructor(clang::QualType, clang::ento::MemRegion const*, clang::Stmt const*, bool, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&, clang::ento::EvalCallOptions&))
>>> did you mean: clang::ento::CXXDestructorCall::~CXXDestructorCall()
>>> defined in: tools/clang/lib/StaticAnalyzer/Core/CMakeFiles/obj.clangStaticAnalyzerCore.dir/CallEvent.cpp.o
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
```
I did not understand this yet — lld complains about undefined symbol referenced by CallEvent.h and then suggests this exact symbol from the same static library that sits in associated CallEvent.cpp.o file?
Creating the issue partially as a note, hope I'll be able to fix this myself a bit later.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsV8Fu4zYQ_Rr6QsSQJduxDz54ZRtYYLebJsUit8VIHEkTU6RBjhy7h357QUlB7CRuF5suemgNHaThDDnz5s2zBN5TaRAXYvJBTFYDaLiybrEnNDzIrDou1s5Z56W2dis1bVFyRV5EKxEtxTTqr_ZRq6HWSiRLiSEm3DRGYUEGlfTHOrM62HINphTJUiRLNGy7uy_ZQ_oZubIqBa072x8vjPFMxPP-5GTdXdJhgQ5NjkpmRxn81ns0PKxEshyN46lswzaMnkW8ebRuK-KN1vv6aufsA-bB2mUUb8jkulF4YrljYMqXBvTxd3Qi3qTWhfUb4OoOjSemfXh-fe4bqZ7_2FrtT47SlP3Fgeln2OKGNIYQmz0M27Bz7-A6VBSi1oedW5uSDAYMh_luN2yBjmdvov_s3j1_JU_coe89lHged7IQAmVuTQB3KeL07eauDzttFapfbAD3-_zukEWH4n-w5xXmW3T-e_veu_e9v0UGMqltDPcr58YVQWmsZ8r9KTFKNOiA8WR5Y10o8hNtAwMCgF2fPhp2jac93mKRGr5hJ5L0zY7eOFs6qEO-2PMkWb_o_yebA5M1qTWMB_57Orm2ljzUkvcFtvZbLL6CfoqfXoy_O9YvePvS947r8zyea3fw-M2zI1N-s54dQn2RpoqUPNpG1gjmnxe-J2Gldu-fqibPTO_40mXybs1P7-9X6Nk1OXdE66t_bf9f-X9A-dP7-x8T_jP8zyN_bUD_dtzhxdn6jPUtlmTNpTF-NVqZtfqn_HNcct2DDk37sgui4983ve-k8L89w_1JH8J1OsKazBaDQNY1GCULII1KPhJXEg8U-qdQjsKANR7l1V6ylR5Rktn3Yv5c7Pk74scWV2O5lQnnOewf3ijlEVmKdSxmkZiPpdYqHL_TQMZLyGzDr4TlsgLIblc00jdliZ59dwYeIOen6MLZOjhJDzVK3wInNWUO3FFyBSw9sZdkJHhvcwJGJV_AKAvSKJLNqSSmDoHJlO3e5H2DcgeOCbQ-SvASQvntBFV2h_KjiK-1lhlKyDQGJAs6dOnWR4-6kCAzYqmB0Q0HapGoeTKHAS5G0_k4mkVRMhtUi_FoWkAEAGqUQzTL83g0g2ScRDOYjZRSA1rEUZxE8-g6mo-vR7MhZPPrSE0iiNQcRsVcjCOsgfQwaOTQunLQJr-YTibzaKAhQ-3bz4Q47nkTizgVcWzwsaszWCargVu0Kps1pRfjSJNn_7wnE-v2a6PbY7JqydZRr2PYVVFYl-MV1sRXew6otF04p_agcXpRMe98K28bEW9K4qrJhrmte6F_rfdtmmFg2qL-DAAA__98Ci5Q">