[rtems-tools] record does not compile with llvm9

list at c-mauderer.de list at c-mauderer.de
Tue Dec 17 14:48:16 UTC 2019


Hello,

if I try to compile the rtems-tools on my Arch Linux system with a llvm
library version 9 I get the error at the end of the mail. It seems that
the API for symbolizeCode changed between version 8 and 9 of llvm.

I created a patch (see follow up mail) that uses the same adaption like
in llvm-symbolizer.cpp in the official llvm sources:

https://github.com/llvm/llvm-project/commit/b2c4b8bded3ff2efaaebe0d8b33c65116f9ef8de#diff-50901f5ee3b98d3dd5cab7c8edf984faR216

It compiles on llvm9 but I didn't test it on llvm7 or 8. Beneath that
it's an untested change.

Best regards

Christian


Error message:

[240/255] Compiling trace/record/record-client.c
[241/255] Compiling trace/record/record-main-lttng.cc
[242/255] Compiling trace/record/record-text.c
[243/255] Compiling trace/record/record-client-base.cc
[244/255] Linking build/rtemstoolkit/librld.a
[245/255] Linking build/linkers/rtems-ld
[246/255] Linking build/linkers/rtems-addr2line
[247/255] Linking build/tester/covoar/libccovoar.a
[248/255] Linking build/linkers/rtems-ra
[249/255] Linking build/tester/covoar/trace-converter
../trace/record/record-main-lttng.cc: In member function 'std::map<long unsigned int, std::vector<char, std::allocator<char> > >::iterator LTTNGClient::ResolveAddress(const ClientItem&)':
../trace/record/record-main-lttng.cc:329:69: error: no matching function for call to 'llvm::symbolize::LLVMSymbolizer::symbolizeCode(std::string&, const uint64_t&)'
  329 |     auto res_or_err = symbolizer_.symbolizeCode(elf_file_, item.data);
      |                                                                     ^
In file included from ../trace/record/record-main-lttng.cc:45:
/usr/include/llvm/DebugInfo/Symbolize/Symbolize.h:55:24: note: candidate: 'llvm::Expected<llvm::DILineInfo> llvm::symbolize::LLVMSymbolizer::symbolizeCode(const llvm::object::ObjectFile&, llvm::object::SectionedAddress)'
   55 |   Expected<DILineInfo> symbolizeCode(const ObjectFile &Obj,
      |                        ^~~~~~~~~~~~~
/usr/include/llvm/DebugInfo/Symbolize/Symbolize.h:55:56: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'const llvm::object::ObjectFile&'
   55 |   Expected<DILineInfo> symbolizeCode(const ObjectFile &Obj,
      |                                      ~~~~~~~~~~~~~~~~~~^~~
/usr/include/llvm/DebugInfo/Symbolize/Symbolize.h:57:24: note: candidate: 'llvm::Expected<llvm::DILineInfo> llvm::symbolize::LLVMSymbolizer::symbolizeCode(const string&, llvm::object::SectionedAddress)'
   57 |   Expected<DILineInfo> symbolizeCode(const std::string &ModuleName,
      |                        ^~~~~~~~~~~~~
/usr/include/llvm/DebugInfo/Symbolize/Symbolize.h:58:63: note:   no known conversion for argument 2 from 'const uint64_t' {aka 'const long unsigned int'} to 'llvm::object::SectionedAddress'
   58 |                                      object::SectionedAddress ModuleOffset);
      |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~





More information about the devel mailing list