[llvm-readobj] Fix output of MIPS GOT without local and global entries.
authorSimon Atanasyan <simon@atanasyan.com>
Sat, 5 Jul 2014 19:28:49 +0000 (19:28 +0000)
committerSimon Atanasyan <simon@atanasyan.com>
Sat, 5 Jul 2014 19:28:49 +0000 (19:28 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212374 91177308-0d34-0410-b5e6-96231b3b80d8

test/tools/llvm-readobj/Inputs/got-empty.exe.mipsel [new file with mode: 0755]
test/tools/llvm-readobj/mips-got.test
tools/llvm-readobj/ELFDumper.cpp

diff --git a/test/tools/llvm-readobj/Inputs/got-empty.exe.mipsel b/test/tools/llvm-readobj/Inputs/got-empty.exe.mipsel
new file mode 100755 (executable)
index 0000000..b578745
Binary files /dev/null and b/test/tools/llvm-readobj/Inputs/got-empty.exe.mipsel differ
index 76db3c845eb48705c84e8b24259133aa410cdea8..20215871ef0b571bb69d15a1eb006c53d5f1e5a8 100644 (file)
@@ -6,6 +6,8 @@ RUN: llvm-readobj -mips-plt-got %p/Inputs/dynamic-table-so.mips | \
 RUN:   FileCheck %s -check-prefix GOT-SO
 RUN: llvm-readobj -mips-plt-got %p/Inputs/got-tls.so.elf-mips64el | \
 RUN:   FileCheck %s -check-prefix GOT-TLS
+RUN: llvm-readobj -mips-plt-got %p/Inputs/got-empty.exe.mipsel | \
+RUN:   FileCheck %s -check-prefix GOT-EMPTY
 
 GOT-OBJ: Cannot find PLTGOT dynamic table tag.
 
@@ -304,3 +306,26 @@ GOT-TLS-NEXT:     }
 GOT-TLS-NEXT:   ]
 GOT-TLS-NEXT:   Number of TLS and multi-GOT entries: 4
 GOT-TLS-NEXT: }
+
+GOT-EMPTY:      Primary GOT {
+GOT-EMPTY-NEXT:   Canonical gp value: 0x409FF0
+GOT-EMPTY-NEXT:   Reserved entries [
+GOT-EMPTY-NEXT:     Entry {
+GOT-EMPTY-NEXT:       Address: 0x402000
+GOT-EMPTY-NEXT:       Access: -32752
+GOT-EMPTY-NEXT:       Initial: 0x0
+GOT-EMPTY-NEXT:       Purpose: Lazy resolver
+GOT-EMPTY-NEXT:     }
+GOT-EMPTY-NEXT:     Entry {
+GOT-EMPTY-NEXT:       Address: 0x402004
+GOT-EMPTY-NEXT:       Access: -32748
+GOT-EMPTY-NEXT:       Initial: 0x80000000
+GOT-EMPTY-NEXT:       Purpose: Module pointer (GNU extension)
+GOT-EMPTY-NEXT:     }
+GOT-EMPTY-NEXT:   ]
+GOT-EMPTY-NEXT:   Local entries [
+GOT-EMPTY-NEXT:   ]
+GOT-EMPTY-NEXT:   Global entries [
+GOT-EMPTY-NEXT:   ]
+GOT-EMPTY-NEXT:   Number of TLS and multi-GOT entries: 2
+GOT-EMPTY-NEXT: }
index 502c7197ddb21cb55d6dd999ab9d2cc1ad5ce6ce..5df51e250d216ffed82ce1743a57b2104f91a4cd 100644 (file)
@@ -1087,7 +1087,7 @@ void MipsGOTParser<ELFT>::parseGOT(const Elf_Shdr &GOTShdr) {
   Elf_Sym_Iter DynSymEnd = Obj->end_dynamic_symbols();
   std::size_t DynSymTotal = std::size_t(std::distance(DynSymBegin, DynSymEnd));
 
-  if (DtGotSym + 1 > DynSymTotal) {
+  if (DtGotSym > DynSymTotal) {
     W.startLine() << "MIPS_GOTSYM exceeds a number of dynamic symbols.\n";
     return;
   }