title: How to interpret the dynamic symbol table in an ELF executable?
body: <p>I was looking at interpreting the dynamic symbol table (<code>.dynsym</code>) of an ELF executable file. I could successfully interpret the symbol table <code>.symtab</code> (16 bytes for each symbol) using the <code>value</code> attribute to denote the address of the symbol and <code>name</code> attribute to denote the offset of the start of string in <code>.strtab</code> section. But I'm unable to interpret the dynamic symbol table (<code>.dynsym</code>) using the same method. I used Ali's blog [1] for reference.</p>
  
  <p>I looked at another blog of Ali's [2] but I'm not understand as to how to interpret the dynamic symbol table using the hash table. Clearly it isn't the same mapping as used by the symbol table. How should I interpret the dynamic symbol table (.dynsym)?</p>
  
  <p>Also, the ELF executable which I'm looking at has two sections, namely <code>.hash</code> and <code>.gnu.hash</code>. Which section do I refer for the hash values?</p>
  
  <p>[1] <a href="http://blogs.oracle.com/ali/entry/inside_elf_symbol_tables" rel="nofollow noreferrer">http://blogs.oracle.com/ali/entry/inside_elf_symbol_tables</a><br>
  [2] <a href="http://blogs.oracle.com/ali/entry/gnu_hash_elf_sections" rel="nofollow noreferrer">http://blogs.oracle.com/ali/entry/gnu_hash_elf_sections</a></p>