[Mips] Support DT_MIPS_OPTIONS dynamic section tag in the llvm-readobj
authorSimon Atanasyan <simon@atanasyan.com>
Mon, 20 Apr 2015 05:34:48 +0000 (05:34 +0000)
committerSimon Atanasyan <simon@atanasyan.com>
Mon, 20 Apr 2015 05:34:48 +0000 (05:34 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235285 91177308-0d34-0410-b5e6-96231b3b80d8

test/tools/llvm-readobj/Inputs/mips-options.elf-mips64el [new file with mode: 0755]
test/tools/llvm-readobj/mips-options.test [new file with mode: 0644]
tools/llvm-readobj/ELFDumper.cpp

diff --git a/test/tools/llvm-readobj/Inputs/mips-options.elf-mips64el b/test/tools/llvm-readobj/Inputs/mips-options.elf-mips64el
new file mode 100755 (executable)
index 0000000..4b65257
Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/mips-options.elf-mips64el differ
diff --git a/test/tools/llvm-readobj/mips-options.test b/test/tools/llvm-readobj/mips-options.test
new file mode 100644 (file)
index 0000000..7a2959d
--- /dev/null
@@ -0,0 +1,22 @@
+# Check DT_MIPS_OPTIONS .dynamic section tag reading
+
+RUN: llvm-readobj -dynamic-table %p/Inputs/mips-options.elf-mips64el | \
+RUN:   FileCheck %s
+
+CHECK:      DynamicSection [ (14 entries)
+CHECK-NEXT:   Tag                Type                 Name/Value
+CHECK-NEXT:   0x0000000000000004 HASH                 0x158
+CHECK-NEXT:   0x0000000000000005 STRTAB               0x1C0
+CHECK-NEXT:   0x0000000000000006 SYMTAB               0x178
+CHECK-NEXT:   0x000000000000000A STRSZ                7 (bytes)
+CHECK-NEXT:   0x000000000000000B SYMENT               24 (bytes)
+CHECK-NEXT:   0x0000000070000001 MIPS_RLD_VERSION     1
+CHECK-NEXT:   0x0000000070000005 MIPS_FLAGS           NOTPOT 
+CHECK-NEXT:   0x0000000070000006 MIPS_BASE_ADDRESS    0x0
+CHECK-NEXT:   0x000000007000000A MIPS_LOCAL_GOTNO     2
+CHECK-NEXT:   0x0000000070000011 MIPS_SYMTABNO        3
+CHECK-NEXT:   0x0000000070000013 MIPS_GOTSYM          0x3
+CHECK-NEXT:   0x0000000000000003 PLTGOT               0x2000
+CHECK-NEXT:   0x0000000070000029 MIPS_OPTIONS         0x1000
+CHECK-NEXT:   0x0000000000000000 NULL                 0x0
+CHECK-NEXT: ]
index 39fb065810f9048f3409adaa8c1e69948df30ad8..7f85fa46534096ee1414d36e2d3837aaa2ac0318 100644 (file)
@@ -782,6 +782,7 @@ static const char *getTypeString(uint64_t Type) {
   LLVM_READOBJ_TYPE_CASE(MIPS_GOTSYM);
   LLVM_READOBJ_TYPE_CASE(MIPS_RLD_MAP);
   LLVM_READOBJ_TYPE_CASE(MIPS_PLTGOT);
+  LLVM_READOBJ_TYPE_CASE(MIPS_OPTIONS);
   default: return "unknown";
   }
 }
@@ -873,6 +874,7 @@ static void printValue(const ELFFile<ELFT> *O, uint64_t Type, uint64_t Value,
   case DT_MIPS_GOTSYM:
   case DT_MIPS_RLD_MAP:
   case DT_MIPS_PLTGOT:
+  case DT_MIPS_OPTIONS:
     OS << format("0x%" PRIX64, Value);
     break;
   case DT_RELCOUNT: