[PATCH] D67547: [llvm-readobj/llvm-objdump] - Improve how tool locate the dynamic table and report warnings about that.

George Rimar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 16 05:20:40 PDT 2019


grimar marked an inline comment as done.
grimar added inline comments.


================
Comment at: tools/llvm-readobj/ELFDumper.cpp:1500
                   DynamicSec->sh_size, sizeof(Elf_Dyn), ObjF->getFileName()});
-    parseDynamicTable();
+    IsSecTableValid = !FromSec.getAsArrayRef<Elf_Dyn>().empty();
   }
----------------
MaskRay wrote:
> The logic is:
> 
> ```
> findDynamic
>   find PT_DYNAMIC
>   find .dynamic
>   if p_offset is out of bounds
>     reportWarning
>   if both PT_DYNAMIC and .dynamic exist
>     check if the information matches
> 
> loadDynamicTable
>   findDynamic()
>   if PT_DYNAMIC exists
>     IsPhdrTableValid = PT_DYNAMIC's DynRegionInfo is not empty
>   if .dynamic exists
>     IsSecTableValid = .dynamic's DynRegionInfo is not empty
>   if either does not exist
>     if (IsPhdrTableValid && IsSecTableValid)
>       parseDynamicTable()
>     else
>       warn
>     return
> 
>   validate information matches
>   ...
> ```
> 
> Shall we check whether p_offset is out of bounds and whether DynRegionInfo of PT_DYNAMIC is empty together?
> 
> ```
> findDynamic
>   find PT_DYNAMIC
>   IsPhdrTableValid = whether PT_DYNAMIC exists
>   if p_offset is out of bounds or DynRegionInfo not empty
>     reportWarning
>     IsPhdrTableValid = false
> 
>   find .dynamic
>   validate .dynamic
> 
>   if either does not exist
>     if ((DynamicPhdr && IsPhdrTableValid) || (DynamicSec && IsSecTableValid))
>       parseDynamicTable()
>     else
>       warn
>     return
> 
>   ...
>   validate information matches
>   parseDynamicTable()
> ```
I am not sure I understand what you suggest, sorry, Do you want to merge 2 existing methods into one large one?
(I do not understand why your `findDynamic` might call `arseDynamicTable()` for example).


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D67547/new/

https://reviews.llvm.org/D67547





More information about the llvm-commits mailing list