summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add documentation on how to use enable debug information in the JIT and use ↵Reid Kleckner2009-09-212-0/+174
| | | | | | it with GDB. llvm-svn: 82425
* fix a FileCheck bug where:Chris Lattner2009-09-212-4/+3
| | | | | | | | | | ; CHECK: foo ; CHECK-NOT: foo ; CHECK: bar would always fail. llvm-svn: 82424
* Start mangling expressions.Anders Carlsson2009-09-212-4/+54
| | | | llvm-svn: 82423
* Move ARM and X86 specific AsmParser tests into separate subdirectories, and onlyDaniel Dunbar2009-09-217-3/+11
| | | | | | run if appropriate target is supported. llvm-svn: 82419
* Implement the JIT side of the GDB JIT debugging interface. To enable thisReid Kleckner2009-09-2010-18/+405
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Work around FileCheck -NOT restriction.Daniel Dunbar2009-09-201-0/+4
| | | | llvm-svn: 82417
* Work around a FileCheck bug, for now.Daniel Dunbar2009-09-201-0/+1
| | | | llvm-svn: 82416
* simplify as daniel suggestsChris Lattner2009-09-201-16/+9
| | | | llvm-svn: 82415
* write rfind in terms of npos as daniel requestedChris Lattner2009-09-201-6/+4
| | | | llvm-svn: 82414
* remove a dead method.Chris Lattner2009-09-201-7/+0
| | | | llvm-svn: 82413
* grammaroChris Lattner2009-09-201-1/+1
| | | | llvm-svn: 82412
* Revert r82404, it is causing a bootstrap miscompile. This is very very Chris Lattner2009-09-202-40/+1
| | | | | | scary, as it indicates a lurking bug. yay. llvm-svn: 82411
* rewrite CountNumNewlinesBetween to be in terms of StringRef.Chris Lattner2009-09-201-13/+15
| | | | llvm-svn: 82410
* this was not supposed to be committedChris Lattner2009-09-201-21/+0
| | | | llvm-svn: 82409
* implement and document support for CHECK-NOTChris Lattner2009-09-203-8/+101
| | | | llvm-svn: 82408
* rewrite FileCheck in terms of StringRef instead of manual pointer pairs.Chris Lattner2009-09-201-68/+37
| | | | llvm-svn: 82407
* Switch TestRunner.sh to just use 'lit'.Daniel Dunbar2009-09-201-127/+8
| | | | | | - Does people use this? llvm-svn: 82406
* Switch to using the new LLVM lit test runner by default.Daniel Dunbar2009-09-201-1/+1
| | | | llvm-svn: 82405
* improve memdep to eliminate bitcasts (and aliases, and noop geps) Chris Lattner2009-09-202-1/+40
| | | | | | | early for the stated reasons: this allows it to find more equivalences and depend less on code layout. llvm-svn: 82404
* Move CoerceAvailableValueToLoadType earlier in GVN.cpp. Hook it upChris Lattner2009-09-202-108/+203
| | | | | | | | so that nonlocal and partially redundant loads can use it as well. The testcase shows examples of craziness this can handle. This triggers *many* times in 176.gcc. llvm-svn: 82403
* change the interface to CoerceAvailableValueToLoadType to be Chris Lattner2009-09-201-15/+21
| | | | | | more generic. llvm-svn: 82402
* Include LLVM {src,obj} root in lit.site.cfg, to support non-standard layouts.Daniel Dunbar2009-09-204-13/+18
| | | | llvm-svn: 82401
* Teach 'make check-all' to build the site configuration for clang, if it is ↵Daniel Dunbar2009-09-201-5/+15
| | | | | | in tree. llvm-svn: 82400
* enhance GVN to forward substitute a stored value to a loadChris Lattner2009-09-202-15/+248
| | | | | | | | (and load -> load) when the base pointers must alias but when they are different types. This occurs very very frequently in 176.gcc and other code that uses bitfields a lot. llvm-svn: 82399
* update an entry, delete an entry which has been fixed.Chris Lattner2009-09-201-36/+15
| | | | llvm-svn: 82398
* tidy upChris Lattner2009-09-201-3/+3
| | | | llvm-svn: 82397
* --- Reverse-merging r82282 into '.':Bill Wendling2009-09-203-58/+22
| | | | | | | | | | | | | U lib/CodeGen/AsmPrinter/DwarfException.cpp U lib/CodeGen/AsmPrinter/DwarfException.h --- Reverse-merging r82274 into '.': U lib/Target/TargetLoweringObjectFile.cpp G lib/CodeGen/AsmPrinter/DwarfException.cpp These revisions were breaking everything. llvm-svn: 82396
* remove a temporary hack.Chris Lattner2009-09-202-4/+2
| | | | llvm-svn: 82395
* rename X86ATTAsmPrinter.cpp -> X86AsmPrinter.cpp likewise the .h file.Chris Lattner2009-09-205-958/+941
| | | | llvm-svn: 82394
* move target registry stuff to X86ATTAsmPrinter.cppChris Lattner2009-09-202-27/+25
| | | | llvm-svn: 82393
* simplify this now that createX86CodePrinterPass is trivialChris Lattner2009-09-201-14/+2
| | | | llvm-svn: 82392
* rename X86ATTAsmPrinter class -> X86AsmPrinterChris Lattner2009-09-205-37/+35
| | | | llvm-svn: 82391
* remove the asmstring, it is now dead. Improve comment.Chris Lattner2009-09-201-3/+4
| | | | llvm-svn: 82390
* Peer through zext and sext to eliminate them when it is safe to do so.Nick Lewycky2009-09-203-22/+19
| | | | llvm-svn: 82389
* kill off printPICLabel now, it's specialness is handled byChris Lattner2009-09-205-18/+2
| | | | | | | the MachineInstr ->MCInst lowering process, not in the asmprinter. llvm-svn: 82388
* delete X86IntelAsmPrinter! Now -x86-asm-syntax just switchesChris Lattner2009-09-205-815/+5
| | | | | | the instruction syntax, not the entire asmprinter. llvm-svn: 82387
* Fold 'icmp eq (icmp), true' into an xor(icmp).Nick Lewycky2009-09-202-0/+23
| | | | llvm-svn: 82386
* Add an intel syntax MCInstPrinter implementation. You can nowChris Lattner2009-09-208-13/+250
| | | | | | transcode from AT&T to intel syntax with "llvm-mc foo.s -output-asm-variant=1" llvm-svn: 82385
* tidy upChris Lattner2009-09-201-1/+1
| | | | llvm-svn: 82384
* Rewrite this check so that it checks what it's supposed to and doesn't useNick Lewycky2009-09-201-27/+20
| | | | | | CHECK-NOT. llvm-svn: 82383
* eliminate a use of strtoul.Chris Lattner2009-09-201-12/+2
| | | | llvm-svn: 82382
* split random COFF asmprinter state out to X86COFFMachineModuleInfo.h.Chris Lattner2009-09-206-137/+238
| | | | | | Make dllexport directives come out in determinstic order. llvm-svn: 82381
* Correct the comment; this applies to fcmp too.Nick Lewycky2009-09-201-1/+1
| | | | llvm-svn: 82380
* Remove tab, again.Nick Lewycky2009-09-201-1/+1
| | | | llvm-svn: 82379
* Teach the constant folder how to not a cmpinst.Nick Lewycky2009-09-202-0/+20
| | | | llvm-svn: 82378
* smallvectorize getExtraOptionNamesChris Lattner2009-09-202-8/+7
| | | | llvm-svn: 82377
* add a helper method.Chris Lattner2009-09-201-0/+7
| | | | llvm-svn: 82376
* minor cleanups.Chris Lattner2009-09-201-22/+24
| | | | llvm-svn: 82375
* Add 'make check-all', which runs the LLVM tests along with the clang tests ifDaniel Dunbar2009-09-202-0/+29
| | | | | | its in the standard location. llvm-svn: 82374
* Follow googletest logic for suppressing warnings in unittests/UnitTestMain.Daniel Dunbar2009-09-202-2/+4
| | | | llvm-svn: 82373
OpenPOWER on IntegriCloud