From e6ee481bdfec4776cdbb795511adafd2869ef62a Mon Sep 17 00:00:00 2001 From: Krzysztof Parzyszek Date: Mon, 25 Apr 2016 12:49:47 +0000 Subject: [PATCH] [Hexagon] Correctly set "Flags" in ELF header llvm-svn: 267397 --- llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp | 10 +++++++--- llvm/test/MC/Hexagon/elf-flags.ll | 9 +++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 llvm/test/MC/Hexagon/elf-flags.ll diff --git a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp index 7997198..86d0f77 100644 --- a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp +++ b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp @@ -157,10 +157,14 @@ public: HexagonTargetELFStreamer(MCStreamer &S, MCSubtargetInfo const &STI) : HexagonTargetStreamer(S) { auto Bits = STI.getFeatureBits(); - unsigned Flags; - if (Bits.to_ullong() & llvm::Hexagon::ArchV5) + unsigned Flags = 0; + if (Bits[Hexagon::ArchV60]) + Flags = ELF::EF_HEXAGON_MACH_V60; + else if (Bits[Hexagon::ArchV55]) + Flags = ELF::EF_HEXAGON_MACH_V55; + else if (Bits[Hexagon::ArchV5]) Flags = ELF::EF_HEXAGON_MACH_V5; - else + else if (Bits[Hexagon::ArchV4]) Flags = ELF::EF_HEXAGON_MACH_V4; getStreamer().getAssembler().setELFHeaderEFlags(Flags); } diff --git a/llvm/test/MC/Hexagon/elf-flags.ll b/llvm/test/MC/Hexagon/elf-flags.ll new file mode 100644 index 0000000..ec1d22b --- /dev/null +++ b/llvm/test/MC/Hexagon/elf-flags.ll @@ -0,0 +1,9 @@ +; RUN: llc -march=hexagon -mcpu=hexagonv4 --filetype=obj %s -o - | llvm-readobj -file-headers -elf-output-style=GNU | FileCheck --check-prefix=CHECK-V4 %s +; RUN: llc -march=hexagon -mcpu=hexagonv5 --filetype=obj %s -o - | llvm-readobj -file-headers -elf-output-style=GNU | FileCheck --check-prefix=CHECK-V5 %s +; RUN: llc -march=hexagon -mcpu=hexagonv55 --filetype=obj %s -o - | llvm-readobj -file-headers -elf-output-style=GNU | FileCheck --check-prefix=CHECK-V55 %s +; RUN: llc -march=hexagon -mcpu=hexagonv60 --filetype=obj %s -o - | llvm-readobj -file-headers -elf-output-style=GNU | FileCheck --check-prefix=CHECK-V60 %s + +; CHECK-V4: Flags: 0x3 +; CHECK-V5: Flags: 0x4 +; CHECK-V55: Flags: 0x5 +; CHECK-V60: Flags: 0x60 -- 2.7.4