Простой пример прохождения LLVM для LLVM-7.0.0.Я получаю эту ошибку при попытке запустить:
clang -I ~ / clang_llvm2 / include -Xclang -load -Xclang build / skeleton / libSkeletonPass. * Test / a.cpp
Я видел функцию с именем main!
...
clang-7: ошибка: невозможно выполнить команду: ошибка сегментации (сброшено ядро) clang-7: ошибка: внешний интерфейс clangсбой команды из-за сигнала (используйте -v для просмотра вызова) clang версии 7.0.0 (tags / RELEASE_700 / final) Цель: x86_64-unknown-linux-gnu Модель потока: posix clang-7: примечание: диагностическое сообщение msg: ПОЖАЛУЙСТА, отправьтеотчет об ошибках https://bugs.llvm.org/ и включает в себя обратную трассировку сбоя, предварительно обработанный источник и связанный скрипт запуска.clang-7: ошибка: невозможно выполнить команду: ошибка сегментации (сброшено ядро) clang-7: примечание: диагностическое сообщение: ошибка создания предварительно обработанных источников.
Простой проход LLVM для LLVM-7.0.0
#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.