]> granicus.if.org Git - llvm/commitdiff
[llvm-readobj][RISCV] Pretty-print RISCV e_flags
authorAlex Bradbury <asb@lowrisc.org>
Tue, 3 Oct 2017 08:41:59 +0000 (08:41 +0000)
committerAlex Bradbury <asb@lowrisc.org>
Tue, 3 Oct 2017 08:41:59 +0000 (08:41 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314772 91177308-0d34-0410-b5e6-96231b3b80d8

test/Object/RISCV/elf-flags.yaml
tools/llvm-readobj/ELFDumper.cpp

index 0d613967e77ea22842361054dbbc4ad093e37712..ff8637f000a244af6979093409480fcbd5fd1965 100644 (file)
@@ -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
index c51fd28cb04a84f87a61bd4d8fc913fb2f28ac1f..dd32a8a2fbce3b23292d83d079e621730c1b6235 100644 (file)
@@ -1242,6 +1242,14 @@ static const EnumEntry<unsigned> ElfHeaderMipsFlags[] = {
   LLVM_READOBJ_ENUM_ENT(ELF, EF_MIPS_ARCH_64R6)
 };
 
+static const EnumEntry<unsigned> 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<unsigned> ElfSymOtherFlags[] = {
   LLVM_READOBJ_ENUM_ENT(ELF, STV_INTERNAL),
   LLVM_READOBJ_ENUM_ENT(ELF, STV_HIDDEN),
@@ -3552,6 +3560,8 @@ template <class ELFT> void LLVMStyle<ELFT>::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);