Leer Laar via llvm-dev
2021-Aug-22 01:22 UTC
[llvm-dev] Error running clang++ generated bitcode in lli
I am trying to generate a bit code from a c++ source code and running it through the just-in-time compiler. When I compile through the clang++ and generate binary executable it runs perfectly but when I generated the bitcode and tried running through the JIT with lli command it generated a run-time error. Could you please help me understand what's going on. For example: Let example.cpp contains the following code: #include <iostream> int main(){ std::cout << "\nHello World!"; return 0; } I am using the following command to generate executable which runs perfectly fine. clang++ example.cpp I am using the following command to generate the bitcode: clang++ -S -emit-llvm example.cpp And then running through the JIT using the following command which generates run-time error: lli example.ll I am getting the following access violation error: Stack dump:0. Program arguments: lli example.ll #0 0x00000000025fd9af llvm::sys::PrintStackTrace(llvm::raw_ostream&) /home/xpc/llvm/llvm-project1/llvm-project/llvm/lib/Support/Unix/Signals.inc:564:0 #1 0x00000000025fda42 PrintStackTraceSignalHandler(void*) /home/xpc/llvm/llvm-project1/llvm-project/llvm/lib/Support/Unix/Signals.inc:625:0 #2 0x00000000025fb7ca llvm::sys::RunSignalHandlers() /home/xpc/llvm/llvm-project1/llvm-project/llvm/lib/Support/Signals.cpp:68:0 #3 0x00000000025fd329 SignalHandler(int) /home/xpc/llvm/llvm-project1/llvm-project/llvm/lib/Support/Unix/Signals.inc:406:0 #4 0x00007fa75dbdc390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)Segmentation fault (core dumped) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210821/88a2c396/attachment.html>
David Blaikie via llvm-dev
2021-Aug-25 00:58 UTC
[llvm-dev] Error running clang++ generated bitcode in lli
I /think/ this might be because lli doesn't support global ctors (Lang - can you confirm?) & so c++'s iostreams haven't been initialized. Maybe try a C-style printf hello world, and maybe try printf printing in a global ctor, see if that executes? C style hello world is just generally simpler/doesn't need to exercise quite so many complicated things as C++ iostream's hello world, so would be a good place to start to narrow down the problem space in any case. On Tue, Aug 24, 2021 at 5:01 PM Leer Laar via llvm-dev < llvm-dev at lists.llvm.org> wrote:> I am trying to generate a bit code from a c++ source code and running it > through the just-in-time compiler. When I compile through the clang++ and > generate binary executable it runs perfectly but when I generated the > bitcode and tried running through the JIT with lli command it generated a > run-time error. Could you please help me understand what's going on. > > For example: Let example.cpp contains the following code: > > #include <iostream> > > int main(){ > std::cout << "\nHello World!"; > return 0; > } > > I am using the following command to generate executable which runs > perfectly fine. > > clang++ example.cpp > > I am using the following command to generate the bitcode: > > clang++ -S -emit-llvm example.cpp > > And then running through the JIT using the following command which > generates run-time error: > > lli example.ll > > I am getting the following access violation error: > > Stack dump:0. Program arguments: lli example.ll > #0 0x00000000025fd9af llvm::sys::PrintStackTrace(llvm::raw_ostream&) /home/xpc/llvm/llvm-project1/llvm-project/llvm/lib/Support/Unix/Signals.inc:564:0 > #1 0x00000000025fda42 PrintStackTraceSignalHandler(void*) /home/xpc/llvm/llvm-project1/llvm-project/llvm/lib/Support/Unix/Signals.inc:625:0 > #2 0x00000000025fb7ca llvm::sys::RunSignalHandlers() /home/xpc/llvm/llvm-project1/llvm-project/llvm/lib/Support/Signals.cpp:68:0 > #3 0x00000000025fd329 SignalHandler(int) /home/xpc/llvm/llvm-project1/llvm-project/llvm/lib/Support/Unix/Signals.inc:406:0 > #4 0x00007fa75dbdc390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)Segmentation fault (core dumped) > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210824/d1e24c14/attachment.html>
Lang Hames via llvm-dev
2021-Sep-06 04:31 UTC
[llvm-dev] Error running clang++ generated bitcode in lli
Hi Leer, David, Leer -- I would try Dave's suggestion. LLI is still isn't set up to handle arbitrary C++. That's likely to change in the near future though: LLI will probably be upgraded to use the ORC runtime in the next release or so, and that does handle most C++ (including iostreams, at least in the cases that I have tested). -- Lang. On Wed, Aug 25, 2021 at 10:58 AM David Blaikie <dblaikie at gmail.com> wrote:> I /think/ this might be because lli doesn't support global ctors (Lang - > can you confirm?) & so c++'s iostreams haven't been initialized. Maybe try > a C-style printf hello world, and maybe try printf printing in a global > ctor, see if that executes? > > C style hello world is just generally simpler/doesn't need to exercise > quite so many complicated things as C++ iostream's hello world, so would be > a good place to start to narrow down the problem space in any case. > > On Tue, Aug 24, 2021 at 5:01 PM Leer Laar via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> I am trying to generate a bit code from a c++ source code and running it >> through the just-in-time compiler. When I compile through the clang++ and >> generate binary executable it runs perfectly but when I generated the >> bitcode and tried running through the JIT with lli command it generated a >> run-time error. Could you please help me understand what's going on. >> >> For example: Let example.cpp contains the following code: >> >> #include <iostream> >> >> int main(){ >> std::cout << "\nHello World!"; >> return 0; >> } >> >> I am using the following command to generate executable which runs >> perfectly fine. >> >> clang++ example.cpp >> >> I am using the following command to generate the bitcode: >> >> clang++ -S -emit-llvm example.cpp >> >> And then running through the JIT using the following command which >> generates run-time error: >> >> lli example.ll >> >> I am getting the following access violation error: >> >> Stack dump:0. Program arguments: lli example.ll >> #0 0x00000000025fd9af llvm::sys::PrintStackTrace(llvm::raw_ostream&) /home/xpc/llvm/llvm-project1/llvm-project/llvm/lib/Support/Unix/Signals.inc:564:0 >> #1 0x00000000025fda42 PrintStackTraceSignalHandler(void*) /home/xpc/llvm/llvm-project1/llvm-project/llvm/lib/Support/Unix/Signals.inc:625:0 >> #2 0x00000000025fb7ca llvm::sys::RunSignalHandlers() /home/xpc/llvm/llvm-project1/llvm-project/llvm/lib/Support/Signals.cpp:68:0 >> #3 0x00000000025fd329 SignalHandler(int) /home/xpc/llvm/llvm-project1/llvm-project/llvm/lib/Support/Unix/Signals.inc:406:0 >> #4 0x00007fa75dbdc390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)Segmentation fault (core dumped) >> >> >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210906/8a59817a/attachment.html>