Manman Ren
b9bd895a06
Dwarf: support for LTO where a single object file can have multiple line tables
...
We generate one line table for each compilation unit in the object file.
Reviewed by Eric and Kevin.
rdar://problem/13067005
llvm-svn: 174445
2013-02-05 21:52:47 +00:00
Chandler Carruth
ca305491f6
Sort the #include lines for the include/... tree with the script.
...
AKA: Recompile *ALL* the source code!
This one went much better. No manual edits here. I spot-checked for
silliness and grep-checked for really broken edits and everything seemed
good. It all still compiles. Yell if you see something that looks goofy.
llvm-svn: 169133
2012-12-03 17:02:12 +00:00
Rafael Espindola
81ee486113
Add support for .cfi_register now that it is easy to extent the representation
...
to support it. Original patch with the parsing and plumbing by the PaX team and
Roman Divacky. I added the bits in MCDwarf.cpp and the test.
llvm-svn: 168565
2012-11-25 15:14:49 +00:00
Rafael Espindola
9e5a89375e
Further cleanups. Thanks for Sean Silva for noticing it.
...
llvm-svn: 168556
2012-11-25 02:50:32 +00:00
Rafael Espindola
6ac5a44d45
Change the representation of MCCFIInstruction.
...
We now store the Register and Offset directly. MachineLocation is gone (from
this file)!
llvm-svn: 168536
2012-11-24 04:33:48 +00:00
Rafael Espindola
0291ef94b9
Give each MCCFIInstruction its own opcode.
...
This untangles the switch cases of the old Move and RelMove opcodes a bit
and makes it clear how to add new instructions.
llvm-svn: 168534
2012-11-24 03:10:54 +00:00
Rafael Espindola
edc8307796
Refactor how MCCFIInstructions are created.
...
Give MCCFIInstruction a single, private constructor and add helper static
methods that create each type of cfi instruction. This is is preparation
for changing its representation. The representation with a pair
MachineLocations older than MC and has been abused quiet a bit to support
more cfi instructions.
llvm-svn: 168532
2012-11-24 02:01:08 +00:00
Rafael Espindola
a6e1d5393f
Implement .cfi_undefined. Based on a patch from PaX team, updated by
...
Roman Divacky. I just added the testcase.
llvm-svn: 168520
2012-11-23 16:59:41 +00:00
Craig Topper
dfe55636a3
Use LLVM_DELETED_FUNCTION in place of 'DO NOT IMPLEMENT' comments.
...
llvm-svn: 163969
2012-09-15 16:22:27 +00:00
Dmitri Gribenko
93c7ec80b7
Fix Doxygen issues:
...
* wrap code blocks in \code ... \endcode;
* refer to parameter names in paragraphs correctly (\arg is not what most
people want -- it starts a new paragraph);
* use \param instead of \arg to document parameters in order to be consistent
with the rest of the codebase.
llvm-svn: 163902
2012-09-14 14:57:36 +00:00
Craig Topper
d6b8bfa795
Make use of the LLVM_DELETED_FUNCTION macro.
...
llvm-svn: 162828
2012-08-29 06:28:46 +00:00
Craig Topper
76f7896f49
Prune some includes and forward declarations.
...
llvm-svn: 153429
2012-03-26 06:58:25 +00:00
Rafael Espindola
646dff508a
On ELF, create relocations to the abbreviation and line sections when producing
...
debug info for assembly files. We were already doing the right thing when
producing debug info for C/C++.
ELF linkers don't know dwarf, so they depend on these relocations to produce
valid dwarf output.
llvm-svn: 151655
2012-02-28 21:13:05 +00:00
Rafael Espindola
9f3a003d3c
Add support for .cfi_signal_frame. Fixes pr11762.
...
llvm-svn: 148733
2012-01-23 21:51:52 +00:00
Kevin Enderby
21c229f1fb
This is the matching change for the data structure name changes for the
...
functional change in r147860 to use DW_TAG_label's instead TAG_subprogram's.
This only changes names and updates comments. No functional change.
llvm-svn: 147877
2012-01-10 21:12:34 +00:00
Rafael Espindola
db7319d272
Implement cfi_restore. Patch by Brian Anderson!
...
llvm-svn: 147356
2011-12-29 21:43:03 +00:00
Rafael Espindola
bc8c3d0ca0
Rename Remember and Restore to RememberState and RestoreState for consistency.
...
llvm-svn: 147354
2011-12-29 21:09:08 +00:00
Rafael Espindola
27298c6f33
Implement .cfi_escape. Patch by Brian Anderson!
...
llvm-svn: 147352
2011-12-29 20:24:47 +00:00
Kevin Enderby
63cf89d532
The second part of support for generating dwarf for assembly source files. This
...
generates the dwarf Compile Unit DIE and a dwarf subprogram DIE for each
non-temporary label.
The next part will be to get the clang driver to enable this when assembling
a .s file. rdar://9275556
llvm-svn: 146262
2011-12-09 18:09:40 +00:00
Bill Wendling
408386e3ef
Add a field for the compact unwind encoding.
...
llvm-svn: 135446
2011-07-19 00:00:05 +00:00
Evan Cheng
10c6820ff4
Move getInitialFrameState from TargetFrameInfo to MCAsmInfo (suggestions for
...
better location welcome).
llvm-svn: 135438
2011-07-18 22:29:13 +00:00
Rafael Espindola
b7c942431f
Add support for producing .deubg_frame sections.
...
llvm-svn: 131121
2011-05-10 03:54:12 +00:00
Rafael Espindola
0baeced1f4
Don't force relaxation of AdvanceLoc instructions on OS X. gdb is happy with
...
the smaller encoding and this cuts 270336 bytes from a release version of
clang and 1246272 bytes from a debug build.
llvm-svn: 131067
2011-05-08 14:35:21 +00:00
Rafael Espindola
003a45810d
Switch Darwin to the generic CIE/FDE printer.
...
llvm-svn: 131031
2011-05-06 22:29:04 +00:00
Rafael Espindola
eb5d0cb4f4
GCC uses a different encoding of pointers in the FDE when using
...
-fno-dwarf2-cfi-asm. Implement the same behavior.
llvm-svn: 130637
2011-05-01 04:49:54 +00:00
Rafael Espindola
a664fdf4cd
Add an alternative implementation of CIE and FDE emission that outputs them
...
in the same order as the one in CodeGen.
llvm-svn: 130471
2011-04-29 02:42:28 +00:00
Rafael Espindola
7bc992c8d3
Add a small temporary hack for producing identical eh_frame sections on OS X.
...
This removes one of the main advantages of moving eh_frame to MC, but
makes the transition a lot easier to debug (run md5).
llvm-svn: 130379
2011-04-28 04:04:14 +00:00
Rafael Espindola
133c684456
Factor a bit of code to MCStreamer::EmitLabel. Keep track of the last
...
non private symbol. This will be use for handling
foo:
.cfi_startproc
...
On OS X where we have to create a foo.eh symbol.
llvm-svn: 130305
2011-04-27 15:21:19 +00:00
Rafael Espindola
5c5bb3e9a6
Fix the case of a .cfi_rel_offset before any .cfi_def_cfa_offset.
...
llvm-svn: 129362
2011-04-12 16:12:03 +00:00
Rafael Espindola
7c4de15c7b
Implement .cfi_same_value.
...
llvm-svn: 129361
2011-04-12 15:31:05 +00:00
Rafael Espindola
3fdd045643
Implement .cfi_remember_state and .cfi_restore_state.
...
llvm-svn: 122602
2010-12-28 18:36:23 +00:00
Rafael Espindola
c97d642bf7
Relax address updates in the eh_frame section.
...
llvm-svn: 122591
2010-12-28 05:39:27 +00:00
Rafael Espindola
0552cb0638
Start adding basic support for emitting the call frame instructions.
...
llvm-svn: 122590
2010-12-28 04:15:37 +00:00
Rafael Espindola
12c30aed07
Add support for .cfi_lsda.
...
llvm-svn: 122584
2010-12-27 15:56:22 +00:00
Rafael Espindola
e7e67fce10
Add support for the same encodings of the personality function that gnu as
...
supports.
llvm-svn: 122577
2010-12-27 00:36:05 +00:00
Rafael Espindola
0e665e502d
Fixed version of 121434 with no new memory leaks.
...
llvm-svn: 121471
2010-12-10 07:39:47 +00:00
Rafael Espindola
011e168728
Revert my previous patch to make the valgrind bots happy.
...
llvm-svn: 121461
2010-12-10 04:01:09 +00:00
Rafael Espindola
03ad1e8f1f
Initial support for the cfi directives. This is just enough to get
...
f:
.cfi_startproc
nop
.cfi_endproc
assembled (on ELF).
llvm-svn: 121434
2010-12-09 23:48:29 +00:00
Rafael Espindola
1bf8d261f1
Remember the contents of leb and dwarfline fragments when relaxing. This avoids
...
having to evaluate the expression again when writing.
llvm-svn: 120920
2010-12-04 21:58:52 +00:00
Rafael Espindola
50b6170457
Next step: Only pad debug_line when the target is darwin. Add a FIXME to avoid
...
doing that if the target is darwin10 or newer.
This fixes
*) Direct object emission was producing objects without the workaround on
darwin9.
*) Assembly printing was producing objects with the workaround on linux.
llvm-svn: 120866
2010-12-04 00:31:13 +00:00
Rafael Espindola
3e119b0bb4
Try to resolve symbol differences early, and if successful create a plain
...
data fragment. This reduces the time to assemble the test in 8711 from 60s to
54s.
llvm-svn: 120767
2010-12-03 00:55:40 +00:00
Devang Patel
77a1457f1a
It may not be an option to skip .debug_line if there are file reference in already emitted debug info. So, for now, emit dummy line table entry to make older linker and assemblers happy. This is not a new behavior, original AsmPrinter emitted similar line table entries.
...
llvm-svn: 120760
2010-12-03 00:10:48 +00:00
Rafael Espindola
5f582e980e
Remove some #includes.
...
llvm-svn: 119967
2010-11-22 11:53:17 +00:00
Rafael Espindola
7c6bd9e0f9
Add a MCLineSectionOrder vector so that we produce the line tables in a
...
deterministic order.
llvm-svn: 119795
2010-11-19 07:41:23 +00:00
Rafael Espindola
b33e5e07e1
Change some methods in MCDwarf.cpp to be able to handle an arbitrary
...
MCStreamer instead of just MCObjectStreamer. Address changes cannot
be as efficient as we have to use DW_LNE_set_addres, but at least
most of the logic is shared.
This will be used so that, with CodeGen still using EmitDwarfLocDirective,
llvm-gcc is able to produce debug_line sections without needing an
assembler that supports .loc.
llvm-svn: 119777
2010-11-19 02:26:16 +00:00
Rafael Espindola
857b73093c
Add const.
...
llvm-svn: 119380
2010-11-16 20:56:23 +00:00
Rafael Espindola
00c5605efc
Parse and remember discriminators in .loc line. I try to output them with
...
another patch.
This lets us parse a bit more of the gcc 4.5 output.
llvm-svn: 118975
2010-11-13 03:18:27 +00:00
Kevin Enderby
f3d8ed8368
Did my commit for the last patch for the .loc directory from the wrong place and
...
missed a bunch of files. Here the rest. Sorry about that.
llvm-svn: 115173
2010-09-30 17:16:09 +00:00
Benjamin Kramer
739963f98e
Remove noisy semicolon.
...
llvm-svn: 112673
2010-08-31 23:38:13 +00:00
Kevin Enderby
cc1c9257f6
This is the second of three patches to implement support for the .loc directive
...
and output the dwarf line number tables. This takes the current loc info after
an instruction is assembled and saves the needed info into an object that has
vector and for each section. These objects will be used for the final patch to
build and emit the encoded dwarf line number tables. Again for now this is only
in the Mach-O streamer but at some point will move to a more generic place.
llvm-svn: 112668
2010-08-31 22:55:11 +00:00