diff options
Diffstat (limited to 'gdb/tm-sysv4.h')
-rw-r--r-- | gdb/tm-sysv4.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gdb/tm-sysv4.h b/gdb/tm-sysv4.h index 4d95ea0..9e92d92 100644 --- a/gdb/tm-sysv4.h +++ b/gdb/tm-sysv4.h @@ -19,3 +19,17 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "solib.h" /* Support for shared libraries. */ + +/* For SVR4 shared libraries, each call to a library routine goes through + a small piece of trampoline code in the ".init" section. Although each + of these fragments is labeled with the name of the routine being called, + the gdb symbol reading code deliberately ignores them so it won't confuse + them with the real functions. It does however know about the label that + precedes all of the fragments, which is "_init". Thus when we lookup a + function that corresponds to a PC value which is in one of the trampoline + fragments, we'll appear to be in the function "_init". The following + macro will evaluate to nonzero when NAME is valid and matches "_init". + The horribly ugly wait_for_inferior() routine uses this macro to detect + when we have stepped into one of these fragments. */ + +#define IN_SOLIB_TRAMPOLINE(pc,name) ((name) && (strcmp ("_init", name) == 0)) |