From 352a2fa1e765943fde9d622313a0977fe2c3a607 Mon Sep 17 00:00:00 2001 From: "Diogo N. Sampaio" Date: Thu, 11 Oct 2018 14:10:32 +0000 Subject: [PATCH] [AARCH64][FIX] Emit data symbol for constant pool data The ARM64 elf emitter would omit printing data symbol for zero filled constant data. This patch overrides the emitFill method as to enforce that the symbol is correctly printed. Differential revision: https://reviews.llvm.org/D53132 llvm-svn: 344248 --- .../AArch64/MCTargetDesc/AArch64ELFStreamer.cpp | 5 +++++ llvm/test/MC/AArch64/CheckDataSymbol.s | 15 +++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 llvm/test/MC/AArch64/CheckDataSymbol.s diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp index c0ef8b670286..a09ac6b94c17 100644 --- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp +++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp @@ -154,6 +154,11 @@ public: MCELFStreamer::EmitValueImpl(Value, Size, Loc); } + void emitFill(const MCExpr &NumBytes, uint64_t FillValue, + SMLoc Loc) override { + EmitDataMappingSymbol(); + MCObjectStreamer::emitFill(NumBytes, FillValue, Loc); + } private: enum ElfMappingSymbol { EMS_None, diff --git a/llvm/test/MC/AArch64/CheckDataSymbol.s b/llvm/test/MC/AArch64/CheckDataSymbol.s new file mode 100644 index 000000000000..ea3ed7b28732 --- /dev/null +++ b/llvm/test/MC/AArch64/CheckDataSymbol.s @@ -0,0 +1,15 @@ +# RUN: llvm-mc -filetype=obj -assemble \ +# RUN: -triple=aarch64- %s -o - \ +# RUN: | llvm-readobj -s -t - | FileCheck %s +# CHECK: Name: $d.1 ({{[1-9][0-9]+}}) +# CHECK-NEXT: Value: 0x4 +# CHECK-NEXT: Size: 0 +# CHECK-NEXT: Binding: Local (0x0) +# CHECK-NEXT: Type: None (0x0) +# CHECK-NEXT: Other: 0 +# CHECK-NEXT: Section: .text (0x2) +# CHECK-NEXT: } + +.text +nop +.zero 4