This repository was archived by the owner on Mar 4, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
This repository was archived by the owner on Mar 4, 2025. It is now read-only.
Segmentation Fault while compiling toy example #6
Copy link
Copy link
Closed
Description
Hi,
I just managed to compile the project. However, I am not able to compile a simple toy example with it. Here is the code of the toy example I used:
#include <cstdio>
#include <time.h>
#include <stdlib.h>
class A {
public:
virtual void virtual_fct() {
printf("A\n");
}
private:
int x = 0x41;
};
class B : public A {
private:
int y = 5;
public:
virtual void virtual_fct() {
printf("B\n");
}
virtual void virtual_only_B_fct() {
printf("only B fct\n");
}
};
A * return_object(int what) {
if(what == 0) {
return new A;
}
else {
return new B;
}
}
void take_object(A *base_ptr, int what) {
if(what == 0) {
static_cast<A*>(base_ptr)->virtual_fct();
}
else {
static_cast<B*>(base_ptr)->virtual_only_B_fct();
}
}
int main() {
srand(time(NULL));
int r = rand() % 2;
A *base_ptr = return_object(r);
take_object(base_ptr, r);
return 0;
}I get the following output if I try to compile it with your modified compiler:
sqall@de0b:~/work/tests/toy/new$ /media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang++ toy.cpp
toy.cpp:14:8: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
int x = 0x41;
^
toy.cpp:22:8: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
int y = 5;
^
#0 0x0000000000ee89e8 llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0xee89e8)
#1 0x0000000000ee90c6 SignalHandler(int) (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0xee90c6)
#2 0x00007fd5d1bd1390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)
#3 0x000000000083db43 (anonymous namespace)::X86MCCodeEmitter::encodeInstruction(llvm::MCInst const&, llvm::raw_ostream&, llvm::SmallVectorImpl<llvm::MCFixup>&, llvm::MCSubtargetInfo const&) const (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0x83db43)
#4 0x0000000000d26f2b llvm::MCELFStreamer::EmitInstToData(llvm::MCInst const&, llvm::MCSubtargetInfo const&) (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0xd26f2b)
#5 0x00000000006ec9de llvm::X86AsmPrinter::EmitInstruction(llvm::MachineInstr const*) (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0x6ec9de)
#6 0x00000000013ba90e llvm::AsmPrinter::EmitFunctionBody() (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0x13ba90e)
#7 0x00000000006e4a85 llvm::X86AsmPrinter::runOnMachineFunction(llvm::MachineFunction&) (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0x6e4a85)
#8 0x00000000009be38c llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0x9be38c)
#9 0x0000000000bc40a3 llvm::FPPassManager::runOnFunction(llvm::Function&) (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0xbc40a3)
#10 0x0000000000bc428b llvm::FPPassManager::runOnModule(llvm::Module&) (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0xbc428b)
#11 0x0000000000bc467c llvm::legacy::PassManagerImpl::run(llvm::Module&) (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0xbc467c)
#12 0x000000000101b20a clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout const&, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0x101b20a)
#13 0x00000000015d1918 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0x15d1918)
#14 0x00000000019440a6 clang::ParseAST(clang::Sema&, bool, bool) (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0x19440a6)
#15 0x000000000133cdac clang::FrontendAction::Execute() (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0x133cdac)
#16 0x0000000001306b18 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0x1306b18)
#17 0x00000000013b64db clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0x13b64db)
#18 0x00000000006e007d cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0x6e007d)
#19 0x00000000006df53e main (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0x6df53e)
#20 0x00007fd5d0726830 __libc_start_main /build/glibc-Cl5G7W/glibc-2.23/csu/../csu/libc-start.c:325:0
#21 0x00000000006dc4f9 _start (/media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9+0x6dc4f9)
Stack dump:
0. Program arguments: /media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/clang-3.9 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name toy.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -resource-dir /media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/../lib/clang/3.9.1 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/x86_64-linux-gnu/c++/5.4.0 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/x86_64-linux-gnu/c++/5.4.0 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/backward -internal-isystem /usr/local/include -internal-isystem /media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin/../lib/clang/3.9.1/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -fdebug-compilation-dir /home/sqall/work/tests/toy/new -ferror-limit 19 -fmessage-length 134 -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/toy-521b7c.o -x c++ toy.cpp
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'toy.cpp'.
4. Running pass 'X86 Assembly / Object Emitter' on function '@_ZN1AC2Ev'
clang-3.9: error: unable to execute command: Segmentation fault (core dumped)
clang-3.9: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 3.9.1 (tags/RELEASE_391/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /media/sqall/27B98FA87615EE0A/cfixx/CFIXX/release-build/bin
clang-3.9: note: diagnostic msg: PLEASE submit a bug report to http://llvm.org/bugs/ and include the crash backtrace, preprocessed source, and associated run script.
clang-3.9: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-3.9: note: diagnostic msg: /tmp/toy-d75b6c.cpp
clang-3.9: note: diagnostic msg: /tmp/toy-d75b6c.sh
clang-3.9: note: diagnostic msg:
********************How do I compile a binary with your approach? Do I need a special argument for the compiler to activate your pass? Since no description is given in the README.md, I do not know if something is missing.
Cheers,
Andre
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels