From: Alex Bradbury Date: Tue, 3 Oct 2017 08:41:59 +0000 (+0000) Subject: [llvm-readobj][RISCV] Pretty-print RISCV e_flags X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7ef69e2f260b5333b85756e3d48468ac9e9a6c8a;p=llvm [llvm-readobj][RISCV] Pretty-print RISCV e_flags git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314772 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/Object/RISCV/elf-flags.yaml b/test/Object/RISCV/elf-flags.yaml index 0d613967e77..ff8637f000a 100644 --- a/test/Object/RISCV/elf-flags.yaml +++ b/test/Object/RISCV/elf-flags.yaml @@ -1,6 +1,13 @@ # RUN: yaml2obj %s > %t +# RUN: llvm-readobj -file-headers %t | FileCheck -check-prefix=OBJ %s # RUN: obj2yaml %t | FileCheck -check-prefix=YAML %s +# OBJ: Flags [ (0xD) +# OBJ-NEXT: EF_RISCV_FLOAT_ABI_DOUBLE (0x4) +# OBJ-NEXT: EF_RISCV_RVC (0x1) +# OBJ-NEXT: EF_RISCV_RVE (0x8) +# OBJ-NEXT: ] + # YAML: FileHeader: # YAML-NEXT: Class: ELFCLASS32 # YAML-NEXT: Data: ELFDATA2LSB diff --git a/tools/llvm-readobj/ELFDumper.cpp b/tools/llvm-readobj/ELFDumper.cpp index c51fd28cb04..dd32a8a2fbc 100644 --- a/tools/llvm-readobj/ELFDumper.cpp +++ b/tools/llvm-readobj/ELFDumper.cpp @@ -1242,6 +1242,14 @@ static const EnumEntry ElfHeaderMipsFlags[] = { LLVM_READOBJ_ENUM_ENT(ELF, EF_MIPS_ARCH_64R6) }; +static const EnumEntry ElfHeaderRISCVFlags[] = { + LLVM_READOBJ_ENUM_ENT(ELF, EF_RISCV_RVC), + LLVM_READOBJ_ENUM_ENT(ELF, EF_RISCV_FLOAT_ABI_SINGLE), + LLVM_READOBJ_ENUM_ENT(ELF, EF_RISCV_FLOAT_ABI_DOUBLE), + LLVM_READOBJ_ENUM_ENT(ELF, EF_RISCV_FLOAT_ABI_QUAD), + LLVM_READOBJ_ENUM_ENT(ELF, EF_RISCV_RVE) +}; + static const EnumEntry ElfSymOtherFlags[] = { LLVM_READOBJ_ENUM_ENT(ELF, STV_INTERNAL), LLVM_READOBJ_ENUM_ENT(ELF, STV_HIDDEN), @@ -3552,6 +3560,8 @@ template void LLVMStyle::printFileHeaders(const ELFO *Obj) { W.printFlags("Flags", e->e_flags, makeArrayRef(ElfHeaderMipsFlags), unsigned(ELF::EF_MIPS_ARCH), unsigned(ELF::EF_MIPS_ABI), unsigned(ELF::EF_MIPS_MACH)); + else if (e->e_machine == EM_RISCV) + W.printFlags("Flags", e->e_flags, makeArrayRef(ElfHeaderRISCVFlags)); else W.printFlags("Flags", e->e_flags); W.printNumber("HeaderSize", e->e_ehsize);