Author: rengolin Date: Wed Jan 20 12:01:05 2016 New Revision: 258326 URL: http://llvm.org/viewvc/llvm-project?rev=258326&view=rev Log: Merging r258308: [AArch64] Fix two bugs in the .inst directive
Modified: llvm/branches/release_38/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp llvm/branches/release_38/test/MC/AArch64/inst-directive.s Modified: llvm/branches/release_38/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_38/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp?rev=258326&r1=258325&r2=258326&view=diff ============================================================================== --- llvm/branches/release_38/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp (original) +++ llvm/branches/release_38/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp Wed Jan 20 12:01:05 2016 @@ -112,9 +112,21 @@ public: MCELFStreamer::EmitInstruction(Inst, STI); } + /// Emit a 32-bit value as an instruction. This is only used for the .inst + /// directive, EmitInstruction should be used in other cases. void emitInst(uint32_t Inst) { + char Buffer[4]; + + // We can't just use EmitIntValue here, as that will emit a data mapping + // symbol, and swap the endianness on big-endian systems (instructions are + // always little-endian). + for (unsigned I = 0; I < 4; ++I) { + Buffer[I] = uint8_t(Inst); + Inst >>= 8; + } + EmitA64MappingSymbol(); - MCELFStreamer::EmitIntValue(Inst, 4); + MCELFStreamer::EmitBytes(StringRef(Buffer, 4)); } /// This is one of the functions used to emit data into an ELF section, so the Modified: llvm/branches/release_38/test/MC/AArch64/inst-directive.s URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_38/test/MC/AArch64/inst-directive.s?rev=258326&r1=258325&r2=258326&view=diff ============================================================================== --- llvm/branches/release_38/test/MC/AArch64/inst-directive.s (original) +++ llvm/branches/release_38/test/MC/AArch64/inst-directive.s Wed Jan 20 12:01:05 2016 @@ -1,7 +1,14 @@ // RUN: llvm-mc %s -triple=aarch64-none-linux-gnu -filetype=asm -o - \ // RUN: | FileCheck %s --check-prefix=CHECK-ASM -// RUN: llvm-mc %s -triple=aarch64-none-linux-gnu -filetype=obj -o - \ -// RUN: | llvm-readobj -s -sd | FileCheck %s --check-prefix=CHECK-OBJ +// RUN: llvm-mc %s -triple=aarch64-none-linux-gnu -filetype=obj -o %t +// RUN: llvm-readobj -s -sd %t | FileCheck %s --check-prefix=CHECK-OBJ +// RUN: llvm-objdump -t %t | FileCheck %s --check-prefix=CHECK-SYMS + +// RUN: llvm-mc %s -triple=aarch64_be-none-linux-gnu -filetype=asm -o - \ +// RUN: | FileCheck %s --check-prefix=CHECK-ASM +// RUN: llvm-mc %s -triple=aarch64_be-none-linux-gnu -filetype=obj -o %t +// RUN: llvm-readobj -s -sd %t | FileCheck %s --check-prefix=CHECK-OBJ +// RUN: llvm-objdump -t %t | FileCheck %s --check-prefix=CHECK-SYMS .section .inst.aarch64_inst @@ -22,3 +29,7 @@ aarch64_inst: // CHECK-OBJ: SectionData ( // CHECK-OBJ-NEXT: 0000: 2040105E // CHECK-OBJ-NEXT: ) + +// CHECK-SYMS-NOT: 0000000000000000 .inst.aarch64_inst 00000000 $d +// CHECK-SYMS: 0000000000000000 .inst.aarch64_inst 00000000 $x +// CHECK-SYMS-NOT: 0000000000000000 .inst.aarch64_inst 00000000 $d _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits