From: Hans Wennborg Date: Tue, 28 May 2019 11:24:20 +0000 (+0000) Subject: Fix some llvm-readelf tests after r361633 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ca8f172144cb287aa15e34abbd01c2c52525ced4;p=llvm Fix some llvm-readelf tests after r361633 They were failing on 32-bit Windows. In the cases where I've changed test expectations, I've checked that they match the output of GNU readelf. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361807 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/tools/llvm-readobj/mips-got.test b/test/tools/llvm-readobj/mips-got.test index b3424dbc6f1..ee5ba2bfdc2 100644 --- a/test/tools/llvm-readobj/mips-got.test +++ b/test/tools/llvm-readobj/mips-got.test @@ -405,7 +405,7 @@ GNU-GOT-EXE: PLT GOT: GNU-GOT-EXE: Reserved entries: GNU-GOT-EXE-NEXT: Address Initial Purpose GNU-GOT-EXE-NEXT: 00410854 00000000 PLT lazy resolver -GNU-GOT-EXE-NEXT: 00410894 80000000 Module pointer +GNU-GOT-EXE-NEXT: 00410858 00000000 Module pointer GNU-GOT-EXE: Entries: GNU-GOT-EXE-NEXT: Address Initial Sym.Val. Type Ndx Name diff --git a/test/tools/llvm-readobj/mips-plt.test b/test/tools/llvm-readobj/mips-plt.test index 64c1f785d03..b130a67d044 100644 --- a/test/tools/llvm-readobj/mips-plt.test +++ b/test/tools/llvm-readobj/mips-plt.test @@ -56,7 +56,7 @@ GNU-NEXT: PLT GOT: GNU: Reserved entries: GNU-NEXT: Address Initial Purpose GNU-NEXT: 00410814 00000000 PLT lazy resolver -GNU-NEXT: 00410854 80000000 Module pointer +GNU-NEXT: 00410818 00000000 Module pointer GNU: Entries: GNU-NEXT: Address Initial Sym.Val. Type Ndx Name diff --git a/tools/llvm-readobj/ELFDumper.cpp b/tools/llvm-readobj/ELFDumper.cpp index 48dd47d1082..8bc339eb379 100644 --- a/tools/llvm-readobj/ELFDumper.cpp +++ b/tools/llvm-readobj/ELFDumper.cpp @@ -3346,9 +3346,8 @@ template void GNUStyle::printDynamic(const ELFO *Obj) { OS << " Tag Type Name/Value\n"; for (auto Entry : Table) { uintX_t Tag = Entry.getTag(); - std::string TypeString = getTypeString(Obj->getHeader()->e_machine, Tag); - OS << format(" 0x%0*x %-20s ", Is64 ? 16 : 8, Tag, - ("(" + TypeString + ")").c_str()); + std::string TypeString = std::string("(") + getTypeString(Obj->getHeader()->e_machine, Tag) + ")"; + OS << " " << format_hex(Tag, Is64 ? 18 : 10) << format(" %-20s ", TypeString.c_str()); this->dumper()->printDynamicEntry(OS, Tag, Entry.getVal()); OS << "\n"; } @@ -4134,7 +4133,7 @@ void GNUStyle::printMipsPLT(const MipsGOTParser &Parser) { size_t Bias = ELFT::Is64Bits ? 8 : 0; auto PrintEntry = [&](const Elf_Addr *E, StringRef Purpose) { OS.PadToColumn(2); - OS << format_hex_no_prefix(Parser.getGotAddress(E), 8 + Bias); + OS << format_hex_no_prefix(Parser.getPltAddress(E), 8 + Bias); OS.PadToColumn(11 + Bias); OS << format_hex_no_prefix(*E, 8 + Bias); OS.PadToColumn(20 + 2 * Bias); @@ -4147,7 +4146,7 @@ void GNUStyle::printMipsPLT(const MipsGOTParser &Parser) { OS << " Address Initial Purpose\n"; PrintEntry(Parser.getPltLazyResolver(), "PLT lazy resolver"); if (Parser.getPltModulePointer()) - PrintEntry(Parser.getGotModulePointer(), "Module pointer"); + PrintEntry(Parser.getPltModulePointer(), "Module pointer"); if (!Parser.getPltEntries().empty()) { OS << "\n"; @@ -4159,7 +4158,7 @@ void GNUStyle::printMipsPLT(const MipsGOTParser &Parser) { Sym, this->dumper()->getDynamicStringTable(), false); OS.PadToColumn(2); - OS << to_string(format_hex_no_prefix(Parser.getGotAddress(&E), 8 + Bias)); + OS << to_string(format_hex_no_prefix(Parser.getPltAddress(&E), 8 + Bias)); OS.PadToColumn(11 + Bias); OS << to_string(format_hex_no_prefix(E, 8 + Bias)); OS.PadToColumn(20 + 2 * Bias); @@ -4919,6 +4918,7 @@ void LLVMStyle::printELFLinkerOptions(const ELFFile *Obj) { template void LLVMStyle::printMipsGOT(const MipsGOTParser &Parser) { auto PrintEntry = [&](const Elf_Addr *E) { + // XXX: here? W.printHex("Address", Parser.getGotAddress(E)); W.printNumber("Access", Parser.getGotOffset(E)); W.printHex("Initial", *E); @@ -4983,6 +4983,7 @@ void LLVMStyle::printMipsGOT(const MipsGOTParser &Parser) { template void LLVMStyle::printMipsPLT(const MipsGOTParser &Parser) { auto PrintEntry = [&](const Elf_Addr *E) { + // XXX: here? no. W.printHex("Address", Parser.getPltAddress(E)); W.printHex("Initial", *E); };