From 58675d4f847ad19095c74771616f9f01c102d4e1 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Wed, 17 Jun 2015 15:14:35 +0000 Subject: [MC/Dwarf] Encode DW_CFA_advance_loc in target endianess. This matches GNU as output. llvm-svn: 239911 --- llvm/lib/MC/MCDwarf.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'llvm/lib/MC/MCDwarf.cpp') 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(OS).write(AddrDelta); + else + support::endian::Writer(OS).write(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(OS).write(AddrDelta); + else + support::endian::Writer(OS).write(AddrDelta); } } -- cgit v1.2.3