I noticed that gdbarch_skip_solib_resolver() invokes
glibc_skip_solib_resolver() on x86, mips, and sh to identify
that gdb is stepping into _dl_runtime_resolve.
On PowerPC, gdbarch_skip_solib_resolver() always returns a zero.
I don't see any problem with gdb stopping in _dl_runtime_resolve
or not stepping over the routine.
So, what does this mean? Is calling glibc_skip_solib_resolver()
optional? Or is the handle_inferior_event() code so convoluted
or intelligent that it works even when pieces are missing?
If I remember correctly, gdbarch_skip_solib_resolver() is just an
optimization. If it returns an address where GDB can set a breakpoint
that gets hit upon return from the dynamic linker. If
gdbarch_skip_solib_resolver() returns zero GDB just single-steps through
the dynamic linker, which works, but is a bit slower.