[llvm-dev] LLVM Kaleidoscope : Compiling to Object Code (original) (raw)

[llvm-dev] LLVM Kaleidoscope : Compiling to Object Code - Segmentation Fault

preejackie via llvm-dev llvm-dev at lists.llvm.org
Fri Jan 25 11:37:55 PST 2019


Hi David

On 25/01/19 4:12 AM, David Blaikie wrote:

Still haven't had much luck reproducing this On Thu, Jan 24, 2019 at 1:19 PM preejackie <praveenvelliengiri at gmail.com <mailto:praveenvelliengiri at gmail.com>> wrote:

Hi David! Thanks for reaching out, the codegen part of the tutorial is fine, but when I try to generate the object code file, it throws segfault. Also please note that I'm using release build of llvm, actually I don't know whether that is the root cause or not. I also run through valgrind, it seems like a invalid read from stack. |||Error Summary: | |1 errors in context 1 of 1: ==4153== Invalid read of size 1 ==4153==    at 0x4AFEE0: llvm::optionaldetail::OptionalStorage<llvm::Reloc::Model,_ _true>::OptionalStorage(llvm::optionaldetail::OptionalStorage<llvm::Reloc::Model,_ _true> const&) (in /home/preejackie/kld/toy) ==4153==    by 0x4B098D: llvm::RegisterTargetMachinellvm::X86TargetMachine::Allocator(llvm::Target const&, llvm::Triple const&, llvm::StringRef, llvm::StringRef, llvm::TargetOptions const&, llvm::Optionalllvm::Reloc::Model, llvm::Optionalllvm::CodeModel::Model, llvm::CodeGenOpt::Level, bool) (in /home/preejackie/kld/toy) ==4153==    by 0x46CE5B: createTargetMachine (TargetRegistry.h:397) ==4153==    by 0x46CE5B: main (kjit.cpp:1337) ==4153==  Address 0x4 is not stack'd, malloc'd or (recently) free'd | Source compile command : clang++ -g -O3 kjit.cpp llvm-config_ _--cxxflags --ldflags --system-libs --libs all -o toy Please, let me know that if you need some additional information :) Thanks a lot

Oh, hmm, this might be that ABI problem https://bugs.llvm.org/showbug.cgi?id=39427 - if the release you're using was built with GCC and you're building your code with Clang, that could be it. Maybe try building with GCC?   Yes, I tried to compile with GCC it works fine.

  Thanks a lot

On 25/01/19 1:47 AM, David Blaikie wrote:

Hi there!

Sorry to hear you're having trouble with the examples & thanks for reaching out. I'm having some difficulty reproducing the failure mode you described. From the code sample, it sounds like you're in Chapter 8 and I just took a look at Chapter 8 in my debug build and got this result: $ ./bin/Kaleidoscope-Ch8 ready> def average(x y) (x + y) * 0.5; Read function definition: define double @average(double %x, double %y) { entry: %y2 = alloca double %x1 = alloca double store double %x, double* %x1 store double %y, double* %y2 %x3 = load double, double* %x1 %y4 = load double, double* %y2 %addtmp = fadd double %x3, %y4 %multmp = fmul double %addtmp, 5.000000e-01 ret double %multmp }

Any  ideas what you might be doing differently that I could do to try to reproduce the failure you're seeing? On Thu, Jan 24, 2019 at 9:36 AM preejackie via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: Hi all :) I'm new to llvm! I'm going through the kaleidoscope : compiling llvm IR to object code tutorial, code in the listings breaks and causes a segmentation fault. After some investigation through gdb, probably this constructor call, causing the segfault. |Program received signal SIGSEGV, Segmentation fault.|| ||0x00000000004afee0 in llvm::optionaldetail::OptionalStorage<llvm::Reloc::Model,_ _true>::OptionalStorage(llvm::optionaldetail::OptionalStorage<llvm::Reloc::Model,_ _true> const&) ()| |Source code: | TargetOptions opt; autoRM =OptionalReloc::Model(); autoTheTargetMachine = Target->createTargetMachine(TargetTriple, CPU, Features, opt, RM); Whether this behavior is already notified and is there any workaround available for it ? I would be great to know the root cause for this behavior. Of course, the kaleidoscope is friendly and good introduction to llvm for beginners, thank you very much for developing :) Thanks for your kind help


LLVM Developers mailing list llvm-dev at lists.llvm.org <mailto: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/20190126/be2fbe94/attachment-0001.html>



More information about the llvm-dev mailing list