ZS-86 issue in parsing dynsym section.
The dynsym section is parsed by objdump/grep. It's terrible and needs to be implemented in C++ to reduce dependence on external tools knowing what they are doing.
In this case, the terrible pattern matching with grep caused a symbol
defined in the binary to be missed, because grep -v UND
was used
to determine whether a symbol "mattered". 1) symbol names might have
UND and get eliminated accidentally, but 2) (what really happened)
was that the symbol was defined in a section without a "link" field
in the dynsym section, thus objdump displayed the section name as UND
and thus the code skipped the symbol. Don't use objdump to parse ELF
files!