<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div dir="ltr">
<div dir="ltr">
<div>Hi All,</div>
<div><br>
</div>
<div>I have a clang-based tool that links to the LLVM/clang static libraries. It was building without issues with LLVM 5 and 6. Today I upgraded to LLVM 7.0.0 with homebrew, and I'm suddenly getting linker errors:</div>
<div><br>
</div>
<div>Undefined symbols for architecture x86_64:<br>
"llvm::yaml::MappingTraits<clang::tooling::IncludeStyle::IncludeCategory>::mapping(llvm::yaml::IO&, clang::tooling::IncludeStyle::IncludeCategory&)", referenced from:<br>
std::__1::enable_if<has_SequenceTraits<std::__1::vector<clang::tooling::IncludeStyle::IncludeCategory, std::__1::allocator<clang::tooling::IncludeStyle::IncludeCategory> > >::value, void>::type llvm::yaml::yamlize<std::__1::vector<clang::tooling::IncludeStyle::IncludeCategory,
std::__1::allocator<clang::tooling::IncludeStyle::IncludeCategory> >, llvm::yaml::EmptyContext>(llvm::yaml::IO&, std::__1::vector<clang::tooling::IncludeStyle::IncludeCategory, std::__1::allocator<clang::tooling::IncludeStyle::IncludeCategory> >&, bool, llvm::yaml::EmptyContext&)
in libclangFormat.a(Format.cpp.o)<br>
"llvm::yaml::ScalarEnumerationTraits<clang::tooling::IncludeStyle::IncludeBlocksStyle>::enumeration(llvm::yaml::IO&, clang::tooling::IncludeStyle::IncludeBlocksStyle&)", referenced from:<br>
void llvm::yaml::IO::processKey<clang::tooling::IncludeStyle::IncludeBlocksStyle, llvm::yaml::EmptyContext>(char const*, clang::tooling::IncludeStyle::IncludeBlocksStyle&, bool, llvm::yaml::EmptyContext&) in libclangFormat.a(Format.cpp.o)<br>
"clang::tooling::IncludeCategoryManager::IncludeCategoryManager(clang::tooling::IncludeStyle const&, llvm::StringRef)", referenced from:<br>
clang::format::sortCppIncludes(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, llvm::StringRef, clang::tooling::Replacements&, unsigned int*) in libclangFormat.a(Format.cpp.o)<br>
"clang::tooling::IncludeCategoryManager::getIncludePriority(llvm::StringRef, bool) const", referenced from:<br>
clang::format::sortCppIncludes(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, llvm::StringRef, clang::tooling::Replacements&, unsigned int*) in libclangFormat.a(Format.cpp.o)<br>
ld: symbol(s) not found for architecture x86_64<br>
clang: error: linker command failed with exit code 1 (use -v to see invocation)</div>
<div><br>
</div>
<div>All of my source files compiled without any issues. A quick look through the LLVM online documentation suggests that these functions still exist in the LLVM codebase. But I'm at a loss as to how to explain these missing symbols.</div>
<div><br>
</div>
<div>Any suggestions would be much appreciated.</div>
<div><br>
</div>
<div>Scott Constable<br>
</div>
</div>
</div>
</body>
</html>