переводчик не смог материализовать символы - PullRequest
0 голосов
/ 07 января 2020

Я новичок в наборе инструментов LLVM, и я пытаюсь получить очень простую программу C ++ «hello-world» для компиляции в LLVM IR, а затем запустить ее с помощью инструмента lli.

Итак, вот код программы (привет. cpp):

#include <iostream>

int main (int argc, char *argv[])
{
   std::cout << "Hello World!\n";
   return 0;
}

Ниже приведены шаги, которые я делаю для достижения этой цели:

1) clang++.exe hello.cpp -S -emit-llvm -o hello.ll (produces hello.ll about 307KB in size)
2) llvm-link.exe hello.ll -o hello.bc (produces the bit-code file about 79KB in size).
3) lli.exe hello.bc (terminates with a segmentation fault). The dump is below.

Я понимаю, что некоторые символы не загружен (символы стандартной библиотеки C ++). Я не уверен, как я могу указать расположение этих символов для инструмента lli (я пробовал опцию –extra-object, но безрезультатно).

Может кто-нибудь сообщить мне, что я скучаю или делаю неправильно? Любая помощь очень ценится !!!

- Спасибо, Игорь

Дамп стека:

0.      Program arguments: C:\dev\llvm-project\build\Debug\bin\lli.exe .\hello.bc

0x0000000000000000 (0x0000000000000010 0xCCCCCCCCCCCCCCCC 0x000000575B18D640 0x00007FF68DEF6186) <unknown module>

0x000001AF8A3004F6 (0xCCCCCCCCCCCCCCCC 0x000000575B18D640 0x00007FF68DEF6186 0x000001AF8A4B0000) <unknown module>

0x0000000000000010 (0x000000575B18D640 0x00007FF68DEF6186 0x000001AF8A4B0000 0xFFFFFFFFFFFFFFFE) <unknown module>

0xCCCCCCCCCCCCCCCC (0x00007FF68DEF6186 0x000001AF8A4B0000 0xFFFFFFFFFFFFFFFE 0x000000575B18D6A0) <unknown module>

0x000000575B18D640 (0x000001AF8A4B0000 0xFFFFFFFFFFFFFFFE 0x000000575B18D6A0 0x000001AF8A300032) <unknown module>

0x00007FF68DEF6186 (0x000001AF8A85B410 0x000000575B18D678 0xCCCCCCCCCCCCCCCC 0x000001AF8A4B0000), std::_Construct_in_place<std::_Container_proxy,std::_Container_base12
*>() + 0x56 bytes(s), C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\xmemory, line 205

0x00007FF68DEF45E8 (0x0000000000000000 0x000000005B18D6B1 0xFFFFFFFFFFFFFFFE 0x000000575B18DB80), std::_Container_base12::_Alloc_proxy<std::allocator<std::_Container_proxy>
>() + 0x58 bytes(s), C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\xmemory, line 1100

0x00007FF68DF36634 (0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC 0x0000000000000001), std::vector<llvm::GenericValue,std::allocator<llvm::GenericValue>
>::vector<llvm::GenericValue,std::allocator<llvm::GenericValue> >() + 0x54 bytes(s), C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vector, line 446

0x00007FF68E06B048 (0x000001AF8A6A3058 0x0000000000000001 0xCCCCCCCCCCCCCCCC 0xCCCCCCCCCCCCCCCC), llvm::APInt::getZExtValue() + 0x28 bytes(s), C:\dev\llvm-project\llvm\include\llvm\ADT\APInt.h, line 1589 + 0xA byte(s)

0x00007FF68ED9E0F0 (0x000001AF8A563310 0x000000575B18DB88 0x000001AF8A583F18 0x000000575B18DBC0), llvm::MCJIT::runFunction() + 0x480 bytes(s), C:\dev\llvm-project\llvm\lib\ExecutionEngine\MCJIT\MCJIT.cpp, line 550
+ 0x16 byte(s)

0x00007FF68EC09680 (0x000001AF8A563310 0x000001AF8A583F18 0x00007FF6920964A0 0x000001AF8A532460), llvm::ExecutionEngine::runFunctionAsMain() + 0x410 bytes(s), C:\dev\llvm-project\llvm\lib\ExecutionEngine\ExecutionEngine.cpp, line 470 + 0x65 byte(s)

0x00007FF68DEE4200 (0x0000000000000002 0x000001AF8A5515B0 0x000001AF8A532460 0x00007FF6909C0A7D), main() + 0x1D10 bytes(s), C:\dev\llvm-project\llvm\tools\lli\lli.cpp, line 614 + 0x4D byte(s)

0x00007FF6909C1A29 (0x00007FF690C2C000 0x00007FF690C2FE30 0x0000000000000000 0x0000000000000000), invoke_main() + 0x39 bytes(s), d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl, line 79

0x00007FF6909C190E (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), __scrt_common_main_seh() + 0x12E bytes(s), d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl, line 288 + 0x5 byte(s)

0x00007FF6909C17CE (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), __scrt_common_main() + 0xE bytes(s), d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl, line 331

0x00007FF6909C1AB9 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), mainCRTStartup() + 0x9 bytes(s), d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp, line 17

0x00007FFC76417BD4 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), BaseThreadInitThunk() + 0x14 bytes(s)

0x00007FFC7746CED1 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), RtlUserThreadStart() + 0x21 bytes(s)
...