Linking issues after upgrading 6.0.0 -> 7.0.0 with homebrew

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Linking issues after upgrading 6.0.0 -> 7.0.0 with homebrew

via cfe-dev
Hi All,

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:

Undefined symbols for architecture x86_64:
  "llvm::yaml::MappingTraits<clang::tooling::IncludeStyle::IncludeCategory>::mapping(llvm::yaml::IO&, clang::tooling::IncludeStyle::IncludeCategory&)", referenced from:
      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)
  "llvm::yaml::ScalarEnumerationTraits<clang::tooling::IncludeStyle::IncludeBlocksStyle>::enumeration(llvm::yaml::IO&, clang::tooling::IncludeStyle::IncludeBlocksStyle&)", referenced from:
      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)
  "clang::tooling::IncludeCategoryManager::IncludeCategoryManager(clang::tooling::IncludeStyle const&, llvm::StringRef)", referenced from:
      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)
  "clang::tooling::IncludeCategoryManager::getIncludePriority(llvm::StringRef, bool) const", referenced from:
      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)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

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.

Any suggestions would be much appreciated.

Scott Constable

_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: Linking issues after upgrading 6.0.0 -> 7.0.0 with homebrew

via cfe-dev
On 10/08/2018 07:16 PM, Scott Douglas Constable via cfe-dev wrote:
> Hi All,
>
> 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:
>

It looks like these symbols were moved to libclangToolingInclusions.a,
so you will need to add that to your linker invocation.

-Tom

> Undefined symbols for architecture x86_64:
>   "llvm::yaml::MappingTraits<clang::tooling::IncludeStyle::IncludeCategory>::mapping(llvm::yaml::IO&, clang::tooling::IncludeStyle::IncludeCategory&)", referenced from:
>       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)
>   "llvm::yaml::ScalarEnumerationTraits<clang::tooling::IncludeStyle::IncludeBlocksStyle>::enumeration(llvm::yaml::IO&, clang::tooling::IncludeStyle::IncludeBlocksStyle&)", referenced from:
>       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)
>   "clang::tooling::IncludeCategoryManager::IncludeCategoryManager(clang::tooling::IncludeStyle const&, llvm::StringRef)", referenced from:
>       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)
>   "clang::tooling::IncludeCategoryManager::getIncludePriority(llvm::StringRef, bool) const", referenced from:
>       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)
> ld: symbol(s) not found for architecture x86_64
> clang: error: linker command failed with exit code 1 (use -v to see invocation)
>
> 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.
>
> Any suggestions would be much appreciated.
>
> Scott Constable
>
>
> _______________________________________________
> cfe-dev mailing list
> [hidden email]
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>

_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev