- Aug 07, 2010
-
-
Dan Gohman authored
out of PassManager.cpp and into Core.cpp with the rest of the C binding code. llvm-svn: 110494
-
- Jul 16, 2010
-
-
Eli Friedman authored
llvm-svn: 108520
-
- Apr 15, 2010
-
-
Dan Gohman authored
llvm-svn: 101342
-
- Sep 21, 2009
-
-
Reid Kleckner authored
feature, either build the JIT in debug mode to enable it by default or pass -jit-emit-debug to lli. Right now, the only debug information that this communicates to GDB is call frame information, since it's already being generated to support exceptions in the JIT. Eventually, when DWARF generation isn't tied so tightly to AsmPrinter, it will be easy to push that information to GDB through this interface. Here's a step-by-step breakdown of how the feature works: - The JIT generates the machine code and DWARF call frame info (.eh_frame/.debug_frame) for a function into memory. - The JIT copies that info into an in-memory ELF file with a symbol for the function. - The JIT creates a code entry pointing to the ELF buffer and adds it to a linked list hanging off of a global descriptor at a special symbol that GDB knows about. - The JIT calls a function marked noinline that GDB knows about and has put an internal breakpoint in. - GDB catches the breakpoint and reads the global descriptor to look for new code. - When sees there is new code, it reads the ELF from the inferior's memory and adds it to itself as an object file. - The JIT continues, and the next time we stop the program, we are able to produce a proper backtrace. Consider running the following program through the JIT: #include <stdio.h> void baz(short z) { long w = z + 1; printf("%d, %x\n", w, *((int*)NULL)); // SEGFAULT here } void bar(short y) { int z = y + 1; baz(z); } void foo(char x) { short y = x + 1; bar(y); } int main(int argc, char** argv) { char x = 1; foo(x); } Here is a backtrace before this patch: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x2aaaabdfbd10 (LWP 25476)] 0x00002aaaabe7d1a8 in ?? () (gdb) bt #0 0x00002aaaabe7d1a8 in ?? () #1 0x0000000000000003 in ?? () #2 0x0000000000000004 in ?? () #3 0x00032aaaabe7cfd0 in ?? () #4 0x00002aaaabe7d12c in ?? () #5 0x00022aaa00000003 in ?? () #6 0x00002aaaabe7d0aa in ?? () #7 0x01000002abe7cff0 in ?? () #8 0x00002aaaabe7d02c in ?? () #9 0x0100000000000001 in ?? () #10 0x00000000014388e0 in ?? () #11 0x00007fff00000001 in ?? () #12 0x0000000000b870a2 in llvm::JIT::runFunction (this=0x1405b70, F=0x14024e0, ArgValues=@0x7fffffffe050) at /home/rnk/llvm-gdb/lib/ExecutionEngine/JIT/JIT.cpp:395 #13 0x0000000000baa4c5 in llvm::ExecutionEngine::runFunctionAsMain (this=0x1405b70, Fn=0x14024e0, argv=@0x13f06f8, envp=0x7fffffffe3b0) at /home/rnk/llvm-gdb/lib/ExecutionEngine/ExecutionEngine.cpp:377 #14 0x00000000007ebd52 in main (argc=2, argv=0x7fffffffe398, envp=0x7fffffffe3b0) at /home/rnk/llvm-gdb/tools/lli/lli.cpp:208 And a backtrace after this patch: Program received signal SIGSEGV, Segmentation fault. 0x00002aaaabe7d1a8 in baz () (gdb) bt #0 0x00002aaaabe7d1a8 in baz () #1 0x00002aaaabe7d12c in bar () #2 0x00002aaaabe7d0aa in foo () #3 0x00002aaaabe7d02c in main () #4 0x0000000000b870a2 in llvm::JIT::runFunction (this=0x1405b70, F=0x14024e0, ArgValues=...) at /home/rnk/llvm-gdb/lib/ExecutionEngine/JIT/JIT.cpp:395 #5 0x0000000000baa4c5 in llvm::ExecutionEngine::runFunctionAsMain (this=0x1405b70, Fn=0x14024e0, argv=..., envp=0x7fffffffe3c0) at /home/rnk/llvm-gdb/lib/ExecutionEngine/ExecutionEngine.cpp:377 #6 0x00000000007ebd52 in main (argc=2, argv=0x7fffffffe3a8, envp=0x7fffffffe3c0) at /home/rnk/llvm-gdb/tools/lli/lli.cpp:208 llvm-svn: 82418
-
- Aug 22, 2009
-
-
Chris Lattner authored
llvm-svn: 79777
-
Chris Lattner authored
llvm-svn: 79763
-
- Aug 13, 2009
-
-
Bruno Cardoso Lopes authored
Use MCSectionELF methods as much as possible, removing some ELFWriter methods which are now unused llvm-svn: 78940
-
- Aug 10, 2009
-
-
Bruno Cardoso Lopes authored
add support for PtrToInt, Add, Mul. llvm-svn: 78552
-
- Aug 08, 2009
-
-
Bruno Cardoso Lopes authored
Handle large integers, x86_fp80, ConstantAggregateZero, and two more ConstantExpr: GetElementPtr and IntToPtr Set SHF_MERGE bit for mergeable strings Avoid zero initialized strings to be classified as a bss symbol Don't allow common symbols to be classified as STB_WEAK Add a constant to be used as a global value offset in data relocations llvm-svn: 78476
-
- Aug 05, 2009
-
-
Bruno Cardoso Lopes authored
a dirty hack and isn't need anymore since the last x86 code emitter patch) - Add a target-dependent modifier to addend calculation - Use R_X86_64_32S relocation for X86::reloc_absolute_word_sext - Use getELFSectionFlags whenever possible - fix getTextSection to use TLOF and emit the right text section - Handle global emission for static ctors, dtors and Type::PointerTyID - Some minor fixes llvm-svn: 78176
-
- Jul 31, 2009
-
-
Chris Lattner authored
initialize method, which can be called when an MCContext is available. llvm-svn: 77687
-
- Jul 27, 2009
-
-
Bruno Cardoso Lopes authored
llvm-svn: 77238
-
Bruno Cardoso Lopes authored
llvm-svn: 77232
-
Chris Lattner authored
instead and drive things based off of that. llvm-svn: 77184
-
- Jul 21, 2009
-
-
Bruno Cardoso Lopes authored
global declared symbols are initialized with references from other global symbols. llvm-svn: 76540
-
- Jul 20, 2009
-
-
Bruno Cardoso Lopes authored
are referenced, ignore the relocation entry and patch the relocatable field with the computed symbol offset directly llvm-svn: 76414
-
- Jul 19, 2009
-
-
Bruno Cardoso Lopes authored
Use R_X86_64_32S to handle Jump Table Index relocation entries. Hide TAI usage inside getSection* functions llvm-svn: 76347
-
- Jul 18, 2009
-
-
Bruno Cardoso Lopes authored
Use proper relocation type to build relocations for JumpTables (rodata sections). llvm-svn: 76326
-
- Jul 16, 2009
-
-
Bruno Cardoso Lopes authored
llvm-svn: 75898
-
- Jul 15, 2009
-
-
Bruno Cardoso Lopes authored
we care more about random access than insertion/deletion of elements. llvm-svn: 75828
-
- Jul 14, 2009
-
-
Bruno Cardoso Lopes authored
llvm-svn: 75537
-
- Jul 13, 2009
-
-
Daniel Dunbar authored
llvm-svn: 75454
-
- Jul 06, 2009
-
-
Bruno Cardoso Lopes authored
llvm-svn: 74821
-
- Jul 03, 2009
-
-
Bruno Cardoso Lopes authored
llvm-svn: 74760
-
- Jul 02, 2009
-
-
Bruno Cardoso Lopes authored
llvm-svn: 74718
-
- Jun 25, 2009
-
-
Bruno Cardoso Lopes authored
Add section symbols to the symbol table llvm-svn: 74170
-
- Jun 23, 2009
-
-
Bruno Cardoso Lopes authored
Only pad when the section size > 0 and move the code that deals with globals initializers to a place we know for sure the global is initialized. llvm-svn: 73944
-
- Jun 22, 2009
-
-
Bruno Cardoso Lopes authored
llvm-svn: 73895
-
Bruno Cardoso Lopes authored
Support for .text relocations, implementing TargetELFWriter overloaded methods for x86/x86_64. Use a map to track global values to their symbol table indexes Code cleanup and small fixes llvm-svn: 73894
-
- Jun 14, 2009
-
-
Bruno Cardoso Lopes authored
Introduce new BinaryObject (blob) class, ELF Writer modified to use it. BinaryObject.h by Aaron Gray llvm-svn: 73333
-
- Jun 11, 2009
-
-
Bruno Cardoso Lopes authored
Emission for globals, using the correct data sections Function alignment can be computed for each target using TargetELFWriterInfo Some small fixes llvm-svn: 73201
-
- Jun 07, 2009
-
-
Bruno Cardoso Lopes authored
relocation sections. llvm-svn: 73038
-
- Jun 06, 2009
-
-
Bruno Cardoso Lopes authored
llvm-svn: 72982
-
- Jun 05, 2009
-
-
Bruno Cardoso Lopes authored
MachO Writer. This will change with the arrival of ObjectCodeEmitter and BinaryObject llvm-svn: 72906
-
- Aug 21, 2008
-
-
Owen Anderson authored
llvm-svn: 55092
-
- Mar 22, 2008
-
-
Dan Gohman authored
adding <map> to many files that actually do need it. llvm-svn: 48667
-
- Dec 29, 2007
-
-
Chris Lattner authored
llvm-svn: 45418
-
- Jul 05, 2007
-
-
Gabor Greif authored
Almost all occurrences of "bytecode" in the sources have been eliminated. llvm-svn: 37913
-
- May 03, 2007
-
-
Devang Patel authored
llvm-svn: 36662
-
- May 02, 2007
-
-
Devang Patel authored
Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. llvm-svn: 36652
-