首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在程序上使用llvm传递时,错误:无法执行命令:分段错误(核心转储)

在程序上使用llvm传递时,错误:无法执行命令:分段错误(核心转储)
EN

Stack Overflow用户
提问于 2018-10-18 16:23:36
回答 2查看 2.4K关注 0票数 2

一个简单的LLVM传递示例,用于LLVM-7.0.0。当我试图运行时,我会得到这个错误:

clang -i~/clang_llvm2/包括-Xclang -load -Xclang build/骨架/libSkeletonPass.* test/a.cpp

我看到一个叫main的函数!

..。

clang-7:错误:无法执行命令:分段错误(核心转储) clang-7:由于信号(使用-v查看调用) clang版本7.0.0 (标记/释放_700/最终)目标:x86_64-未知-linux-gnu线程模型: posix clang-7:注意:诊断msg:请向https://bugs.llvm.org/提交错误报告,并包含崩溃回溯、预处理源和相关运行脚本。clang-7:错误:无法执行命令:分段错误(核心转储) clang-7:注意:诊断信息:生成预处理源的错误。

LLVM-7.0.0的简单LLVM通行证

代码语言:javascript
复制
#include "llvm/Pass.h"
#include "llvm/IR/Function.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/Transforms/IPO/PassManagerBuilder.h"
using namespace llvm;

namespace {
  struct SkeletonPass : public FunctionPass {
    static char ID;
    SkeletonPass() : FunctionPass(ID) {}

    bool runOnFunction(Function &F) {
      errs() << "I saw a function called " << F.getName() << "!\n";
      return false;
    }
  };
}

char SkeletonPass::ID = 0;

// Automatically enable the pass.
// http://adriansampson.net/blog/clangpass.html
static void registerSkeletonPass(const PassManagerBuilder &,
                         legacy::PassManagerBase &PM) {
  PM.add(new SkeletonPass());
}
static RegisterStandardPasses
  RegisterMyPass(PassManagerBuilder::EP_EarlyAsPossible,
                 registerSkeletonPass);

a.cpp程序是一个简单的hello world程序。正确设置了LLVM_HOME。使用预先构建的llvm文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-29 14:35:16

并不是只有您有此错误(bug.cgi?id=34573),从LLVM 5开始使用RegisterStandardPasses时,LLVM似乎会在程序结束时崩溃。

根据这个答案:https://github.com/sampsyo/llvm-pass-skeleton/issues/7#issuecomment-401834287,一个解决方案是在链接程序时将-Wl,-znodelete添加到编译器标志中。对我起作用了。

票数 1
EN

Stack Overflow用户

发布于 2020-04-01 03:39:32

如果您正在开发源代码中的pass (在LLVM源代码树中),则必须从源代码中编译LLVM。在开发源代码外传递的情况下,它也可以方便,因为它可以让您完全控制编译选项。例如,与优化的相比,-- LLVM的调试构建--使用要容易得多。llvm通行证教程

我只是遇到了类似的问题。似乎优化的clang构建(从apt installpre-built binaries获得的构建)不支持源传递。我目前所知道的唯一选择是从源构建llvm和clang。

LLVM下载页面

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

https://stackoverflow.com/questions/52878513

复制
相关文章

相似问题

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