aboutsummaryrefslogtreecommitdiffstats
path: root/lib/MC/MCObjectWriter.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2011-11-05 11:52:44 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2011-11-05 11:52:44 +0000
commitc25c90897781f116d5dbabab170bafcf65900fa7 (patch)
treea6624495facbcb2075f51f1f14ef453fab1b8a22 /lib/MC/MCObjectWriter.cpp
parent336b88dac8054d6ed6cda6d6198b7d4bb026b3e1 (diff)
downloadexternal_llvm-c25c90897781f116d5dbabab170bafcf65900fa7.zip
external_llvm-c25c90897781f116d5dbabab170bafcf65900fa7.tar.gz
external_llvm-c25c90897781f116d5dbabab170bafcf65900fa7.tar.bz2
Add an option to pad an uleb128 to MCObjectWriter and remove the uleb128 encoding from the DWARF asm printer.
As a side effect we now print dwarf ulebs with .ascii directives. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143809 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCObjectWriter.cpp')
-rw-r--r--lib/MC/MCObjectWriter.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/MC/MCObjectWriter.cpp b/lib/MC/MCObjectWriter.cpp
index efe9f68..1888739 100644
--- a/lib/MC/MCObjectWriter.cpp
+++ b/lib/MC/MCObjectWriter.cpp
@@ -33,14 +33,22 @@ void MCObjectWriter::EncodeSLEB128(int64_t Value, raw_ostream &OS) {
}
/// Utility function to encode a ULEB128 value.
-void MCObjectWriter::EncodeULEB128(uint64_t Value, raw_ostream &OS) {
+void MCObjectWriter::EncodeULEB128(uint64_t Value, raw_ostream &OS,
+ unsigned Padding) {
do {
uint8_t Byte = Value & 0x7f;
Value >>= 7;
- if (Value != 0)
+ if (Value != 0 || Padding != 0)
Byte |= 0x80; // Mark this byte that that more bytes will follow.
OS << char(Byte);
} while (Value != 0);
+
+ // Pad with 0x80 and emit a null byte at the end.
+ if (Padding != 0) {
+ for (; Padding != 1; --Padding)
+ OS << '\x80';
+ OS << '\x00';
+ }
}
bool