summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCDwarf.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2015-06-17 15:14:35 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2015-06-17 15:14:35 +0000
commit58675d4f847ad19095c74771616f9f01c102d4e1 (patch)
treef57dacf6fe4245a0f08a28f0414cb96936dba4e1 /llvm/lib/MC/MCDwarf.cpp
parentf712ede932b5e1931411266583f20d20dc64fa0d (diff)
downloadbcm5719-llvm-58675d4f847ad19095c74771616f9f01c102d4e1.tar.gz
bcm5719-llvm-58675d4f847ad19095c74771616f9f01c102d4e1.zip
[MC/Dwarf] Encode DW_CFA_advance_loc in target endianess.
This matches GNU as output. llvm-svn: 239911
Diffstat (limited to 'llvm/lib/MC/MCDwarf.cpp')
-rw-r--r--llvm/lib/MC/MCDwarf.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/llvm/lib/MC/MCDwarf.cpp b/llvm/lib/MC/MCDwarf.cpp
index 90f96e2cef5..c84c4865f51 100644
--- a/llvm/lib/MC/MCDwarf.cpp
+++ b/llvm/lib/MC/MCDwarf.cpp
@@ -1590,18 +1590,17 @@ void MCDwarfFrameEmitter::EncodeAdvanceLoc(MCContext &Context,
OS << uint8_t(dwarf::DW_CFA_advance_loc1);
OS << uint8_t(AddrDelta);
} else if (isUInt<16>(AddrDelta)) {
- // FIXME: check what is the correct behavior on a big endian machine.
OS << uint8_t(dwarf::DW_CFA_advance_loc2);
- OS << uint8_t( AddrDelta & 0xff);
- OS << uint8_t((AddrDelta >> 8) & 0xff);
+ if (Context.getAsmInfo()->isLittleEndian())
+ support::endian::Writer<support::little>(OS).write<uint16_t>(AddrDelta);
+ else
+ support::endian::Writer<support::big>(OS).write<uint16_t>(AddrDelta);
} else {
- // FIXME: check what is the correct behavior on a big endian machine.
assert(isUInt<32>(AddrDelta));
OS << uint8_t(dwarf::DW_CFA_advance_loc4);
- OS << uint8_t( AddrDelta & 0xff);
- OS << uint8_t((AddrDelta >> 8) & 0xff);
- OS << uint8_t((AddrDelta >> 16) & 0xff);
- OS << uint8_t((AddrDelta >> 24) & 0xff);
-
+ if (Context.getAsmInfo()->isLittleEndian())
+ support::endian::Writer<support::little>(OS).write<uint32_t>(AddrDelta);
+ else
+ support::endian::Writer<support::big>(OS).write<uint32_t>(AddrDelta);
}
}
OpenPOWER on IntegriCloud