In assembly files, omitting .type foo,@function is common. Such functions have
type STT_NOTYPE and llvm-symbolizer reports ?? for them.
An ifunc symbol usually has an associated resolver symbol which is defined at
the same address. Returning either one is fine for symbolization. The resolver
symbol may not end up in the symbol table if (object file) .L is used (linked
image) .symtab is stripped while .dynsym is retained.
This patch allows non SymbolRef::ST_Data non SymbolRef::ST_Function symbols,
thus allowing ELF STT_NOTYPE/STT_GNU_IFUNC symbols for .symtab symbolization.
I have left TODO in the test files for an unimplemented STT_FILE heuristic.