首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LLVM Pass: Demangle库未与pass库链接

LLVM Pass: Demangle库未与pass库链接
EN

Stack Overflow用户
提问于 2019-08-10 04:49:34
回答 2查看 141关注 0票数 0

我目前正在编写一个使用demangle功能(来自Demangle/Demangle.h的Demangle())的pass,当我用

$ opt -load $(MYPASS) -myPass test.ll > testInstrumented.ll

我得到以下错误:

代码语言:javascript
复制
dyld: lazy symbol binding failed: Symbol not found: __ZN4llvm8demangleERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE
  Referenced from: $(LLVM_BUILD)/lib/LLVMMyVectorAnalysis.dylib
  Expected in: flat namespace 

似乎demangle库没有链接到我为我的pass创建的共享库。我想知道怎么解决这个问题?我想这可能与我的pass的CMakeLists.txt更改有关,但我看不到确切的更改是什么。

我的CMakeLists.txt的内容:

代码语言:javascript
复制
if( NOT LLVM_REQUIRES_RTTI )
  if( NOT LLVM_REQUIRES_EH )
    set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/MyVectorAnalysis.exports)
  endif()
endif()

if(WIN32 OR CYGWIN)
  set(LLVM_LINK_COMPONENTS Core Support)
endif()

add_llvm_library( LLVMMyVectorAnalysis MODULE BUILDTREE_ONLY
  MyVectorAnalysis.cpp

  DEPENDS
  intrinsics_gen
  PLUGIN_TOOL
  opt
  ) 
EN

回答 2

Stack Overflow用户

发布于 2019-08-30 03:34:05

在不访问所有代码的情况下很难进行诊断,但我认为您可能遗漏了以下内容:

代码语言:javascript
复制
llvm_map_components_to_libnames(MY_PASS_LINK_COMPONENTS Demangle)
target_link_libraries(LLVMMyVectorAnalysis ${MY_PASS_LINK_COMPONENTS})

Demangle是您希望链接器链接的库,llvm_map_components_to_libnames是自解释的。最后,target_link_libraries告诉CMakeDemangle库(实际库的名称会有所不同)链接到pass。

免责声明:我已经针对LLVM-8验证了这一点。

票数 0
EN

Stack Overflow用户

发布于 2020-06-15 13:39:27

添加

代码语言:javascript
复制
set(LLVM_LINK_COMPONENTS
         Demangle
)

进入CMakeList.txt。我对你也有同样的问题,这对我很有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57436959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档