diff options
author | Fred Fish <fnf@specifix.com> | 1992-03-19 02:26:25 +0000 |
---|---|---|
committer | Fred Fish <fnf@specifix.com> | 1992-03-19 02:26:25 +0000 |
commit | dc52fc71183fc32594388a619c4fa55e83648ced (patch) | |
tree | c5ac41b6a6f12a4ee0232f4f05e66f38719bb588 /gdb/tm-sysv4.h | |
parent | 2cd999854048fb4e3cd5c8762f40427221eb4112 (diff) | |
download | gdb-dc52fc71183fc32594388a619c4fa55e83648ced.zip gdb-dc52fc71183fc32594388a619c4fa55e83648ced.tar.gz gdb-dc52fc71183fc32594388a619c4fa55e83648ced.tar.bz2 |
Add and use definition for IN_SOLIB_TRAMPOLINE which allows wait_for_inferior
to test whether or not it has stepped into the glue that binds an
application to a shared library routine.
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)) |