static Elf_Sym *find_tosym(struct elf_info *elf, Elf_Addr addr, Elf_Sym *sym)
 {
+       Elf_Sym *new_sym;
+
        /* If the supplied symbol has a valid name, return it */
        if (is_valid_name(elf, sym))
                return sym;
         * Strive to find a better symbol name, but the resulting name may not
         * match the symbol referenced in the original code.
         */
-       return symsearch_find_nearest(elf, addr, get_secindex(elf, sym),
-                                     true, 20);
+       new_sym = symsearch_find_nearest(elf, addr, get_secindex(elf, sym),
+                                        true, 20);
+       return new_sym ? new_sym : sym;
 }
 
 static bool is_executable_section(struct elf_info *elf, unsigned int secndx)