This CL gave me a linker error that was basically not actionable on linux and mac, and only windows gives some reasonable hint. I'm worry when switching to lld that this kind of feedback would disappear. Hopefully this is a good example of where lld can improve and maybe we can improve linux/mac as well.
CL: https://chromium-review.googlesource.com/c/chromium/src/+/1028623/8
Linux:
/b/swarming/w/ir/cache/builder/src/out/Debug/../../third_party/llvm-build/Release+Asserts/bin/ld.lld: error: undefined symbol: vtable for blink::WebLayer
>>> referenced by web_layer.h:67 (../../third_party/blink/public/platform/web_layer.h:67)
>>> obj/cc/blink/blink/web_layer_impl.o:(blink::WebLayer::WebLayer())
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Mac:
Undefined symbols for architecture x86_64:
"vtable for blink::WebLayer", referenced from:
blink::WebLayer::WebLayer() in web_layer_impl.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
Windows:
web_layer_impl.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall blink::WebLayer::SetTouchEventHandlerRegion(class cc::TouchActionRegion const &)" (?SetTouchEventHandlerRegion@WebLayer@blink@@UAEXABVTouchActionRegion@cc@@@Z)
./cc_blink.dll : fatal error LNK1120: 1 unresolved externals
Comment 1 by thakis@chromium.org
, Apr 26 2018