GDB is currently not doing ifunc resolving properly for static functions.
This can be demonstrated with the C++ compile test suite (gdb.compile/compile-cplus*.exp), in which a lot of tests are failing because the address of memcpy being passed to the compiler plug-in is actually the ifunc resolver function.
This happens because the (minimal) symbol for memcpy is not marked as an ifunc:
else if (sym->section->flags & SEC_CODE)
if (sym->flags & (BSF_GLOBAL | BSF_WEAK | BSF_GNU_UNIQUE))
if (sym->flags & BSF_GNU_INDIRECT_FUNCTION)
ms_type = mst_text_gnu_ifunc;
ms_type = mst_text;
The resolver function has flags BSF_LOCAL|BSF_GNU_INDIRECT_FUNCTION. Consequently, it is never noted as an indirect function, and GDB never attempts to find the "real" symbol.
It may be necessary to add mst_file_text_gnu_ifunc minsym type.