Skip to content

Commit

Permalink
[DPWBS-1153] feat(ELFStreamer): set E_FLAGS depending on selected arc…
Browse files Browse the repository at this point in the history
…hitecture

add E_FLAGS test for different architectures
  • Loading branch information
gargaroff committed Feb 13, 2020
1 parent 7f51e2b commit 967ad13
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 9 deletions.
15 changes: 10 additions & 5 deletions llvm/lib/Target/TriCore/MCTargetDesc/TriCoreELFStreamer.cpp
Expand Up @@ -12,6 +12,7 @@
//===----------------------------------------------------------------------===//

#include "TriCoreELFStreamer.h"
#include "MCTargetDesc/TriCoreMCTargetDesc.h"
#include "llvm/BinaryFormat/ELF.h"
#include "llvm/MC/MCSubtargetInfo.h"

Expand All @@ -26,11 +27,15 @@ TriCoreTargetELFStreamer::TriCoreTargetELFStreamer(MCStreamer &S,
unsigned EFlags = MCA.getELFHeaderEFlags();
assert((EFlags == 0) && "expected e_flags to be 0");

// FIXME: Once we support different architectures via subtarget-features,
// we need to check the selected architecture here and emit the
// correct e_flag

EFlags |= ELF::EF_TRICORE_V1_6_1;
// Select E_FLAG based on the selected architecture
if (STI.hasFeature(TriCore::HasTC18Ops))
EFlags |= ELF::EF_TRICORE_V1_8;
else if (STI.hasFeature(TriCore::HasTC162Ops))
EFlags |= ELF::EF_TRICORE_V1_6_2;
else if (STI.hasFeature(TriCore::HasTC161Ops))
EFlags |= ELF::EF_TRICORE_V1_6_1;
else
llvm_unreachable("Unknown subtarget");

MCA.setELFHeaderEFlags(EFlags);
}
Expand Down
22 changes: 20 additions & 2 deletions llvm/test/MC/TriCore/elf-flags.s
@@ -1,6 +1,24 @@
# RUN: llvm-mc -triple=tricore -filetype=obj < %s | llvm-readobj \
# RUN: --file-headers - | FileCheck -check-prefixes=DEFAULT %s
# RUN: llvm-mc -triple=tricore -mcpu=tc4xx -filetype=obj < %s | llvm-readobj \
# RUN: --file-headers - | FileCheck -check-prefixes=TC18 %s
# RUN: llvm-mc -triple=tricore -mcpu=tc3xx -filetype=obj < %s | llvm-readobj \
# RUN: --file-headers - | FileCheck -check-prefixes=TC162 %s
# RUN: llvm-mc -triple=tricore -mcpu=tc2xx -filetype=obj < %s | llvm-readobj \
# RUN: --file-headers - | FileCheck -check-prefixes=TC161 %s

# DEFAULT: Flags [ (0x200000)
# DEFAULT-NEXT: EF_TRICORE_V1_6_1 (0x200000)
# DEFAULT: Flags [ (0x80000)
# DEFAULT-NEXT: EF_TRICORE_V1_8 (0x80000)
# DEFAULT-NEXT: ]

# TC18: Flags [ (0x80000)
# TC18-NEXT: EF_TRICORE_V1_8 (0x80000)
# TC18-NEXT: ]

# TC162: Flags [ (0x100000)
# TC162-NEXT: EF_TRICORE_V1_6_2 (0x100000)
# TC162-NEXT: ]

# TC161: Flags [ (0x200000)
# TC161-NEXT: EF_TRICORE_V1_6_1 (0x200000)
# TC161-NEXT: ]
4 changes: 2 additions & 2 deletions llvm/test/MC/TriCore/elf-header.s
Expand Up @@ -16,7 +16,7 @@
# TC: Type: Relocatable (0x1)
# TC: Machine: EM_TRICORE (0x2C)
# TC: Version: 1
# TC: Flags [ (0x200000)
# TC: EF_TRICORE_V1_6_1 (0x200000)
# TC: Flags [ (0x80000)
# TC: EF_TRICORE_V1_8 (0x80000)
# TC: ]
# TC: }

0 comments on commit 967ad13

Please sign in to comment.