Как полностью интегрировать проход LLVM (часть инструмента + часть времени выполнения lib) в LLVM? - PullRequest
0 голосов
/ 06 декабря 2018

Я хочу что-то сделать с clang, и теперь я написал проход, который будет обрабатывать исходный код (вставлять некоторые вызовы функций в исходный код), например:

int main(){
     ...
     func1(para1, para2 ...);//func1 is inserted by pass, which is defined in my runtime library.
     ...
     return 0;
}

Я закончил всевсе вышеперечисленное и, как правило, если мы хотим выполнить наш проход, мы просто делаем следующее:

  1. clang++ -S -emit-llvm xx.cpp -o xx.ll
  2. opt -load xx.so -xx xx.ll -o xx.ll
  3. ... -o xx.o
  4. ... xx.o -L/runtime_library_path -lxx(.a or .so) -o xxx

Но теперь я хочу завершить все вышеперечисленные шаги, передав флаг для лязга.например: clang++ -useMypassAndrtlib xx.cpp, и тогда он выполнит мой проход во время периода компиляции и свяжет мою библиотеку времени выполнения во время периода соединения.

До сих пор я достиг половины своих целей.
Я могу выполнить свой проходпросто передав флаг clang, но мне все еще нужно иметь явную ссылку на мой rt-lib.
, например: clang++ -useMyPass xx.cpp -L/runtime_library_path -lmyrtlib -o xxx

Итак, что я должен сделать, чтобы интегрировать свой пропуск (включая rt-Lib часть) в LLVM полностью?

какой исходный файл я должен изменить?Изменить что?Я просто хочу использовать " clang ++ -useMyPassAndrtlib xx.cpp " для запуска моего прохода и автоматического использования моего rt-lib.

...