jjzjj

c++ - 如何告诉 clang 将调试符号放入可执行二进制文件中?

这个问题在这里已经有了答案:Whydoesa2-stagecommand-linebuildwithclangnotgenerateadSYMdirectory?(1个回答)关闭5年前。我的编译命令在macOSSierra中是clang-std=c11-g-Wall-Werror-fsanitize=address-file.c-ofile编译后,它还会生成一个额外的file.dSYM文件,其中包含所有调试符号。但是,当我使用WSL或其他*nix系统时,它不会生成这样的文件,调试符号被嵌入到可执行二进制文件中。所以我只是想知道有没有办法在macOS中使用clang做同样的事情。

c++ - CMake 和 Clang 工具链接错误(树外)

我正在尝试编译RecursiveASTVisitorexampleofClang使用CMake文件。构建项目进行得很顺利,但是,由于对LLVM和Clang库的多个undefinedreference,链接C++可执行文件失败。我正在LLVM/Clang源文件树之外构建示例。这是我的CMakeLists.txt(我正在使用FindClang.cmakeandFindLLVM.cmakefromthisproject):cmake_minimum_required(VERSION2.8.4)project(ifcount)set(CMAKE_MODULE_PATH${CMAKE_CURRE

c++ - 使用LLVM的libc++时__1符号从何而来?

我看到很多问题,例如AppleMach-OLinker(Id)Error和UndefinedsymbolsincryptoppatIOS64-bitproject.问题通常被描述为:Undefinedsymbolsforarchitecturei386:"std::__1::basic_ostream>::flush()",referencedfrom:cv::gpu::error(charconst*,charconst*,int,charconst*)inopencv2(gpumat.o)问题通常归结为混合/匹配-stdlib=libc++(LLVMC++运行时)和-stdlib=

c++ - "uses of target_link_libraries must be either all-keyword or all-plain"

我设法构建了llvm和clang,现在我正在尝试根据clangdocs创建一个ClangTool.但是当我尝试构建它时出现以下错误:CMakeErrorattools/clang/tools/loop-convert/CMakeLists.txt:6(target_link_libraries):Thekeywordsignaturefortarget_link_librarieshasalreadybeenusedwiththetarget"loop-convert".Allusesoftarget_link_librarieswithatargetmustbeeitherall-k

c++ - enable_shared_from_this 不适用于 xcode 5

#include#includetemplateclassTest:publicstd::enable_shared_from_this>{public:std::shared_ptr>getMe(){returnshared_from_this();};};intmain(intargc,constchar*argv[]){TestaTest;return0;}当我尝试在Xcode5上编译它时,我得到了Useofundeclaredidentifier'shared_from_this'我测试了它并在VisualStudio2010上运行。 最佳答案

c++ - 如何从 LLVM 中的 CallInst 获取函数名称?

我有一个CallInst类型的对象。我怎样才能得到被调用函数的名称(又名被调用者)。假设函数被直接调用(即没有间接函数调用)。 最佳答案 StringRefget_function_name(CallInst*call){Function*fun=call->getCalledFunction();if(fun)//thanks@AntonKorobeynikovreturnfun->getName();//inheritedfromllvm::ValueelsereturnStringRef("indirectcall");}无论

c++ - 使用 Clang AST 打印函数的参数

我想获取传递给函数的参数。例如,如果我接到电话printf("%d%d",i,j);输出应该是%d%dij我能够在RecursiveASTVisitor中使用VisitCallExpr()进行函数调用。还能够获取参数的数量和参数类型。但我不知道如何获取参数。boolMyRecursiveASTVisitor::VisitCallExpr(clang::CallExpr*E){for(inti=0,j=E->getNumArgs();igetArg(i)->getType().getAsString()输出:argType:char*argType:intargType:int请帮我获取

c++ - lli: LLVM 错误: 无法选择: X86ISD::WrapperRIP TargetGlobalTLSAddress:i64

在Linux(Debian)上使用clang++-S-emit-llvmmain.cpp&&llimain.ll运行以下代码#includeintmain(){returnstd::async([]{return1;}).get();}由于以下错误,无法在lli上运行:LLVMERROR:Cannotselect:0xd012e0:i64=X86ISD::WrapperRIPTargetGlobalTLSAddress:i640[TF=10]0xd020c0:i64=TargetGlobalTLSAddress0[TF=10]Infunction:_ZSt9call_onceIMNSt

c++ - LLVM 即时编译 : pass C++ exception through JIT code back to host application

我正在开发一个项目,我使用clang生成一些LLVMIR,然后在我的主机应用程序中进行JIT编译和运行。JIT代码调用宿主应用程序中的某些函数可能会引发异常。我希望通过JIT代码抛出异常并在主机应用程序中捕获。据我所知,这应该与LLVM一起使用,但不幸的是,我的测试应用程序总是因“在抛出‘int’实例后调用终止”而崩溃。让我举个简单的例子。我使用clang3.5将以下简单程序编译成LLVMIR:externvoidtest();extern"C"voidexec(void*){test();}与./clang-O0-S-emit-llvmtest.cpp-c结果为test.ll;Mod

c++ - 从 native C/C++ 生成并运行 LLVM 代码

是否可以从原生C或C++编译程序(gcc)中执行这些操作:调用clang并编译函数的给定C代码,作为constchar*传递。获取指针并在LLVM虚拟机中运行。在native程序中获取结果并继续。如何? 最佳答案 有关简约示例,请参阅Clanginterpreter.Cling是这种方法的更实际的例子。 关于c++-从nativeC/C++生成并运行LLVM代码,我们在StackOverflow上找到一个类似的问题: https://stackoverflow