Так все, что я пытаюсь сделать, это получить имена функций, вызываемых командами вызова: Это мой простой код:Не удалось получить имена функций, вызываемых командами вызовов в LLVM проходят
for(Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB)
{
for(BasicBlock::iterator BI = BB->begin(), BE = BB->end(); BI != BE; ++BI){
if(isa<CallInst>(&(*BI))) {
StringRef fname = cast<CallInst>(&(*BI))->getCalledFunction()->getName();
}
}
}
Это Насти ошибка:
0 libLLVM-3.4.so.1 0x40f8150f LLVM :: SYS :: PrintStackTrace (_IO_FILE *) + 47
1 libLLVM-3.4.so.1 0x40f 8177f
2 libLLVM-3.4.so.1 0x40f812ec
3 0x40022400 __kernel_sigreturn + 0
4 libLLVM-3.4.so.1 0x40899c74 LLVM :: Значение :: GetName() Const + 20
5 SkeletonPass.so 0x40027786
Stack свалка: 0. аргументы программы:/USR/бен/лязг -cc1 -triple i386-ПК-Linux-гну -emit-OBJ -disable свободной -disable-llvm- verifier -main-file-name test_atomics.cc -mrelocation-model pic -pic-le vel 2 -fmath-errno -masm-verbose -mconstructor-aliases -fuse-init-array -target-cpu pentium4 -target-linker-version 2.24 -momit-leaf-frame-pointer -g -coverage-file/home/датский /Desktop/Owl/llvm/llvm-3.4/lib/Transforms/SyncProf/testing/masstree-beta-master/test_atomics.o -resource-dir /usr/bin/../lib/clang/3.4 -dependency-файл. deps/test_atomics.d -MT test_atomics.o -sys-header-deps -MP -include config.h -D NDEBUG -D _GNU_SOURCE -D __STDC_CONSTANT_MACROS -D __STDC_FORMAT_MACROS -D __STDC_LIMIT_MACROS -D NDEBUG -D _GNU_SOURCE -D __STDC_CONSTANT_MACROS -D __STDC_FORMAT_MACROS -D __STDC_LIMIT_MACROS -D NDEBUG -D _GNU_SOURCE -D __STDC_CONSTANT_MACROS -D __STDC_FORMAT_MACROS -D __STDC_LIMIT_MACROS -I /usr/lib/llvm-3.4/include -I /usr/lib/llvm-3.4/include -I/usr/lib/llvm -3.4/include -internal-isystem /usr/include//c++/4.8 -internal-isystem /usr/include//c++/4.8/i386-linux-gnu -internal-isystem /usr/include//c++/4.8/ backward-internal-isystem /usr/include//i386-linux-gnu/c++/4.8 -internal-is ystem /usr/bin/../lib/gcc/i686-linux-gnu/4.8/../../../../include/c++/4.8 -internal-isystem /usr/bin/../ lib/gcc/i686-linux-gnu/4.8 /../../../../ include/C++/4.8/i686-linux-gnu -internal-isystem /usr/bin/../lib/gcc /i686-linux-gnu/4.8/../../../../include/c++/4.8/backward -internal-isystem /usr/bin/../lib/gcc/i686-linux-gnu/ 4.8 /../../../../ include/i686-linux-gnu/C++/4.8 -internal-isystem/usr/local/include -internal-isystem /usr/bin/../lib/clang /3.4/include -internal-externc-isystem /usr/bin/../lib/gcc/i686-linux-gnu/4.8/include -internal-externc-isystem/usr/include/i386-linux-gnu -internal- externc-isystem/include -internal-externc-isystem/usr/include -O3 -Woverloaded-virtual -Wcast-qual -W -Wall -std = C++ 11 -fdeprecated-macro -fdebug-compilation-dir/home/датский /Desktop/Owl/llvm/llvm-3.4/lib/Transforms/SyncProf/testing/masstree-beta-master -ferror-limit 19 -fmessage-length 80 -fvisibility-inlines-hidden -mstackrealign -fobjc-runtime = gcc -fdiagnostics -show-option -fcolor-diagnostics -vecto rize-loops -vectorize-slp -load /home/danish/Desktop/Owl/llvm/llvm-3.4/Release+Asserts/lib/SkeletonPass.so -o test_atomics.o -x C++ test_atomics.куб.см
анализатор в конце файла
Per-функции оптимизации
Running проход 'Skeleton Pass' на функцию '@ _Z9test_jsonv' лязг: ошибка: не удалось выполнить команду: Сегментация fault (core dumped) clang: ошибка: команда clang frontend завершилась неудачно из-за сигнала (используйте -v для вызова вызова) Ubuntu clang version 3.4-1ubuntu3 (теги/RELEASE_34/final) (на основе LLVM 3.4) Цель: i386- pc-linux-gnu Модель темы: posix clang: note: diagnostic msg: ПОЖАЛУЙСТА, отправьте отчет об ошибке в http://bugs.debian.org/ и включите обратную трассировку сбоя, предварительно обработанный источник и связанный сценарий запуска. лязга: Примечание: диагностическая Сообщ:
Приложите следующие файлы отчет об ошибке: препроцессированных источник (ов) и связанный с ними запустить скрипт (ы) расположены по адресу: звона: Примечание: диагностики тзд: /tmp/test_atomics-128b00.cpp лязга: примечание: диагностическая сообщ: /tmp/test_atomics-128b00.sh лязга: примечание: диагностическая сообщ:
Марка: *** [test_atomics. o] Ошибка 254
Эта ошибка появилась, когда я добавил часть ->getName()
для извлечения имен функций. Помощь!
'getCalledFunction' может возвращать значение null, если вызов является косвенным вызовом с помощью указателя на функцию. –