foss-for-synopsys-dwc-arc-processors/gdb — pull request #15 by anthony-kolesov (2013-12-19 11:58:38+00:00)
Title: ARC: Fix broken solib resolver

arc_linux_skip_solib_resolver was broken. It it is supposed to return
address of instruction in outer frame where application will return after
executing function in shared library. However in our case it was always
returning zero, meaning that address of current function can not be
resolved, and GDB was forced to step through function in shared library with
single-instruction step commands. It was happening because
lookup_symbol_global was returning zero on all occasions. I'm not sure why,
maybe VAR_DOMAIN argument was invalid? Also comment there told that
lookup_minimal_symbol "doesn't work for some reason", but for me it worked,
thus I've used it in my patch.

This patch fixes this, now arc_linux_skip_solib_resolver will skip function
in shared libraries without debug symbols with temporary breakpoint and
resume, instead of multiple of single-instruction step sub-commands. This
improves performance of GDB command "step" over the function in shared
library without debug symbols (like printf()) tremendously: in my case
before patch "step in" printf took around 80 seconds, and after patch this
time was reduced to 7 seconds.

Signed-off-by: Anton Kolesov