From: George Rimar Date: Tue, 12 Feb 2019 09:50:04 +0000 (+0000) Subject: [llvm-readobj] - Simplify .gnu.version_r dumping a bit. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=16007333e98d27bfe3886a3ee80aa89b94b047ca;p=llvm [llvm-readobj] - Simplify .gnu.version_r dumping a bit. Current implementation takes "Number of needed versions" from DT_VERNEEDNUM dynamic tag entry. Though it would be a bit simpler to take it from sh_info section header field directly: https://docs.oracle.com/cd/E19683-01/816-1386/chapter6-94076/index.html Differential revision: https://reviews.llvm.org/D58048 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353814 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/llvm-readobj/ELFDumper.cpp b/tools/llvm-readobj/ELFDumper.cpp index 2c9b159575b..ba56e76403f 100644 --- a/tools/llvm-readobj/ELFDumper.cpp +++ b/tools/llvm-readobj/ELFDumper.cpp @@ -711,19 +711,12 @@ static void printVersionDependencySection(ELFDumper *Dumper, if (!Sec) return; - unsigned VerNeedNum = 0; - for (const typename ELFO::Elf_Dyn &Dyn : Dumper->dynamic_table()) { - if (Dyn.d_tag == DT_VERNEEDNUM) { - VerNeedNum = Dyn.d_un.d_val; - break; - } - } - const uint8_t *SecData = (const uint8_t *)Obj->base() + Sec->sh_offset; const typename ELFO::Elf_Shdr *StrTab = unwrapOrError(Obj->getSection(Sec->sh_link)); const uint8_t *P = SecData; + unsigned VerNeedNum = Sec->sh_info; for (unsigned I = 0; I < VerNeedNum; ++I) { const VerNeed *Need = reinterpret_cast(P); DictScope Entry(W, "Dependency");