Support parsing symbol table in dynamic segment.

Unlike SymbolTableSection, this patch reads from DT_SYMTAB, and
DT_STRTAB in PT_DYNAMIC segment.  It heuristically determines the end of
DT_STRTAB by finding the next higher pointer in the same segment.  GNU
libc (dl-addr.c) assumes that DT_STRTAB comes after DT_SYMTAB.
Can you explain what's going on here in a comment at the top of the function?