diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2012-11-25 15:14:49 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2012-11-25 15:14:49 +0000 |
commit | f4f14f68f6078ea6681ee27b5bf42719d7db3441 (patch) | |
tree | 008861973146b0c72963fbaec75f7e9cb8c64798 /lib/MC/MCDwarf.cpp | |
parent | a91eead943d9016fd25f92ab723d8e44ead34109 (diff) | |
download | external_llvm-f4f14f68f6078ea6681ee27b5bf42719d7db3441.zip external_llvm-f4f14f68f6078ea6681ee27b5bf42719d7db3441.tar.gz external_llvm-f4f14f68f6078ea6681ee27b5bf42719d7db3441.tar.bz2 |
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168565 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCDwarf.cpp')
-rw-r--r-- | lib/MC/MCDwarf.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/MC/MCDwarf.cpp b/lib/MC/MCDwarf.cpp index 4a07537..92ed6cc 100644 --- a/lib/MC/MCDwarf.cpp +++ b/lib/MC/MCDwarf.cpp @@ -938,6 +938,19 @@ void FrameEmitterImpl::EmitCFIInstruction(MCStreamer &Streamer, bool VerboseAsm = Streamer.isVerboseAsm(); switch (Instr.getOperation()) { + case MCCFIInstruction::OpRegister: { + unsigned Reg1 = Instr.getRegister(); + unsigned Reg2 = Instr.getRegister2(); + if (VerboseAsm) { + Streamer.AddComment("DW_CFA_register"); + Streamer.AddComment(Twine("Reg1 ") + Twine(Reg1)); + Streamer.AddComment(Twine("Reg2 ") + Twine(Reg2)); + } + Streamer.EmitIntValue(dwarf::DW_CFA_register, 1); + Streamer.EmitULEB128IntValue(Reg1); + Streamer.EmitULEB128IntValue(Reg2); + return; + } case MCCFIInstruction::OpUndefined: { unsigned Reg = Instr.getRegister(); if (VerboseAsm) { |