126 Commits

Author SHA1 Message Date
Sylvestre Ledru
bf8acb65ac Fix a typo (the the => the)
llvm-svn: 160621
2012-07-23 08:51:15 +00:00
Rafael Espindola
13084dd6a3 Fix a FIXME: DwarfRequiresRelocationForSectionOffset is the same as
DwarfUsesRelocationsAcrossSections.

llvm-svn: 158992
2012-06-22 13:24:07 +00:00
Jim Grosbach
289783c78d Tidy up. Trailing whitespace.
llvm-svn: 156602
2012-05-11 01:41:30 +00:00
Benjamin Kramer
3a0f5a0df3 Compute hashes directly with hash_combine instead of taking a detour through FoldingSetNodeID.
llvm-svn: 154495
2012-04-11 14:06:39 +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
Eric Christopher
3975f7b73a Grammar-o.
llvm-svn: 151418
2012-02-25 01:02:44 +00:00
Craig Topper
639b152ca5 Convert assert(0) to llvm_unreachable
llvm-svn: 149967
2012-02-07 05:05:23 +00:00
Rafael Espindola
9f3a003d3c Add support for .cfi_signal_frame. Fixes pr11762.
llvm-svn: 148733
2012-01-23 21:51:52 +00:00
Benjamin Kramer
320f5ae35d Add missing breaks to switch.
Found by the clang static analyzer.

llvm-svn: 148543
2012-01-20 14:42:37 +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
Kevin Enderby
75f4b470f9 Various crash reporting tools have a problem with the dwarf generated for
assembly source when it generates the TAG_subprogram dwarf debug info for
the labels that have nothing between them as in this bit of assembly source:

% cat ZeroLength.s 
_func1:
_func2:
 nop

One solution would be to not emit the subsequent labels with the same address
and use the next label with a different address or the end of the section for
the AT_high_pc value of the TAG_subprogram.

Turns out in llvm-mc it is not possible in all cases to determine of two
symbols have the same value at the point we put out the TAG_subprogram dwarf
debug info.

So we will have llvm-mc instead of putting out TAG_subprogram's put out
DW_TAG_label's.  And the DW_TAG_label does not have a AT_high_pc value which
avoids the problem.

This commit is only the functional change to make the diffs clear as to what is
really being changed.  The next commit will be to clean up the names of such
things like MCGenDwarfSubprogramEntry to something like MCGenDwarfLabelEntry.

rdar://10666925

llvm-svn: 147860
2012-01-10 17:52:29 +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
Bill Wendling
cb4ed696ef Re-re-enable compact unwind after fixing a failure in SingleSource/Benchmarks/Shootout-C++/except.cpp and friends. It was encoding the stored registers in the wrong order.
llvm-svn: 146617
2011-12-15 00:14:24 +00:00
Bill Wendling
0ee400172b Disable to review some failures.
llvm-svn: 146545
2011-12-14 02:16:54 +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
a4163dadb8 Re-enable compact unwind. It seems to work now. <rdar://problem/10441838>
llvm-svn: 145977
2011-12-06 22:18:12 +00:00
Bob Wilson
f76590b3c5 Disable generation of compact unwind encodings. <rdar://problem/10441578>
This still seems to be causing some failures.  It needs more testing before
it gets enabled again.

llvm-svn: 144543
2011-11-14 18:21:07 +00:00
Bob Wilson
c6ab8ce742 Remove FIXME comment that should have been removed with r144351.
llvm-svn: 144392
2011-11-11 17:34:14 +00:00
Bill Wendling
b26a165225 Reenable compact unwinding now that <rdar://problem/10430076> is fixed.
llvm-svn: 144351
2011-11-11 01:03:50 +00:00
Bill Wendling
7f1e8b3b0e Disable compact unwind generation until I can solve the codegen problems.
llvm-svn: 144346
2011-11-11 00:28:42 +00:00
Benjamin Kramer
1eb240810e Simplify code. No functionality change.
llvm-svn: 144186
2011-11-09 13:19:15 +00:00
Bill Wendling
3b4008b8e4 Emit the compact unwind *if* we have a compact unwind encoding.
*headdesk*

llvm-svn: 144138
2011-11-08 22:23:43 +00:00
Benjamin Kramer
89ebc7ab4b Simplify some uses of utohexstr.
As a side effect hex is printed lowercase instead of uppercase now.

llvm-svn: 144013
2011-11-07 21:00:59 +00:00
Bill Wendling
32608b1900 As a first step, emit both the compact unwind and CIE/FDEs for a function.
llvm-svn: 139152
2011-09-06 18:37:11 +00:00
Evan Cheng
7bfc442b2d Some autoconf tests use module level inline asm to test compiler's handling of
.cfi_startproc. e.g. libffi:

 $ cat confopt.c 
asm (".cfi_startproc\n\t.cfi_endproc");

int main () { return 0; }

Teach MC / dwarf emission to handle these cfi directives which essentially
create an empty frame.

rdar://10017184

llvm-svn: 138504
2011-08-24 22:31:37 +00:00
Bill Wendling
d319d42aea Emit the __compact_unwind section first. If there are any frames which weren't
emitted, emit them next as CIE/FDEs.

llvm-svn: 135807
2011-07-22 21:18:59 +00:00
Evan Cheng
c9bc5a9011 Goodbye TargetAsmInfo. This eliminate last bit of CodeGen and Target in llvm-mc.
There is still a bit more refactoring left to do in Targets. But we are now very
close to fixing all the layering issues in MC.

llvm-svn: 135611
2011-07-20 19:50:42 +00:00
Evan Cheng
380dc98371 Add MCObjectFileInfo and sink the MCSections initialization code from
TargetLoweringObjectFileImpl down to MCObjectFileInfo.

TargetAsmInfo is done to one last method. It's *almost* gone!

llvm-svn: 135569
2011-07-20 05:58:47 +00:00
Bill Wendling
cd5cb5b44e Micro-opt: Only emit compact unwind if there is a compact unwind encoding to emit.
llvm-svn: 135452
2011-07-19 00:09:25 +00:00
Bill Wendling
8dd021da20 Use the CompactUnwindEncoding from the Frame, if it's defined.
llvm-svn: 135451
2011-07-19 00:06:12 +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
Evan Cheng
561d71ce7b Sink getDwarfRegNum, getLLVMRegNum, getSEHRegNum from TargetRegisterInfo down
to MCRegisterInfo. Also initialize the mapping at construction time.

This patch eliminate TargetRegisterInfo from TargetAsmInfo. It's another step
towards fixing the layering violation.

llvm-svn: 135424
2011-07-18 20:57:22 +00:00
Evan Cheng
1ae06d95e0 Move some parts of TargetAsmInfo down to MCAsmInfo. This is not the greatest
solution but it is a small step towards removing the horror that is
TargetAsmInfo.

llvm-svn: 135237
2011-07-15 02:09:41 +00:00
Bill Wendling
953f7ddcc2 Remove setting the bit for personality function. It should be set by the linker.
llvm-svn: 135236
2011-07-15 01:42:32 +00:00
Bill Wendling
6d36444dc5 Encode that we have a personality function.
llvm-svn: 135227
2011-07-15 00:07:31 +00:00
Bill Wendling
fb25bf95c9 * If we have an LSDA, we need to mark it in the encoding.
* The personality function should be encoded as an absolute pointer to the function.

llvm-svn: 135215
2011-07-14 23:34:45 +00:00
Evan Cheng
3d2be55d6c Unfortunately several files in MC are badly violating layering rule by using
TargetAsmInfo, which in turn pulls in TargetRegisterInfo, etc. :-( There are
other cases of violations, but this is probably the worst.

This patch is but one small step towards fixing this. 500 more steps to go. :-(

llvm-svn: 135131
2011-07-14 05:43:07 +00:00
Bill Wendling
e6de1eeb86 Don't emit the FDE end label if the last thing emitted was a compact unwind and
not the FDE

llvm-svn: 135020
2011-07-13 00:49:09 +00:00
Bill Wendling
ba39846c2b Add a target hook to encode the compact unwind information.
llvm-svn: 134577
2011-07-07 00:54:13 +00:00
Bill Wendling
fd3f4e7040 Clean up the #includes.
llvm-svn: 134557
2011-07-06 22:52:32 +00:00
Bill Wendling
770794cc60 Remove tabs.
llvm-svn: 134212
2011-06-30 23:59:38 +00:00
Bill Wendling
995ebcfd4c Improve comment: Show the register the DWARF label is added to.
llvm-svn: 134209
2011-06-30 23:47:40 +00:00
Bill Wendling
80c39ac9a5 Add one more comment to the FDE verbose asm output.
llvm-svn: 134200
2011-06-30 22:35:49 +00:00
Bill Wendling
834cb876e6 Add comments to the FDE.
llvm-svn: 134196
2011-06-30 22:02:20 +00:00
Bill Wendling
eace9970bd Add more comments to the ASM output for the CIE's "moves".
llvm-svn: 134194
2011-06-30 21:45:12 +00:00
Bill Wendling
7a94c43c7a Add comments to the ASM output to help understand the compact unwind and CIE tables.
llvm-svn: 134191
2011-06-30 21:25:51 +00:00
Bill Wendling
3080b09d31 * Use the proper size to output the range size.
* Rough in the compact encoding part.

llvm-svn: 134119
2011-06-30 00:30:52 +00:00
Bill Wendling
5a7a3562e0 Stupid error: If the LSDA and Personality functions aren't there, emit 0 instead
of the encoding.

llvm-svn: 134117
2011-06-29 23:53:16 +00:00