diff options
author | Joel Brobecker <brobecker@gnat.com> | 2006-10-19 19:58:23 +0000 |
---|---|---|
committer | Joel Brobecker <brobecker@gnat.com> | 2006-10-19 19:58:23 +0000 |
commit | 6612ad7f9f2fb352fc1bb76a669d2b64fa0b24e2 (patch) | |
tree | 8b52617bd8839509cd3c9aaf57ff1b72de5e8b61 /gdb/solib.c | |
parent | d674a25c2bff6d69229a91f50c9c54b4ce94fef2 (diff) | |
download | gdb-6612ad7f9f2fb352fc1bb76a669d2b64fa0b24e2.zip gdb-6612ad7f9f2fb352fc1bb76a669d2b64fa0b24e2.tar.gz gdb-6612ad7f9f2fb352fc1bb76a669d2b64fa0b24e2.tar.bz2 |
* solib.c (libpthread_solib_p): New function.
(solib_add): Always read the symbols from the libpthread library.
Diffstat (limited to 'gdb/solib.c')
-rw-r--r-- | gdb/solib.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/gdb/solib.c b/gdb/solib.c index c26a000..4fa9fce 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -615,6 +615,17 @@ update_solib_list (int from_tty, struct target_ops *target) } } +/* Return non-zero if SO is the libpthread shared library. + + Uses a fairly simplistic heuristic approach where we check + the file name against "/libpthread". This can lead to false + positives, but this should be good enough in practice. */ + +static int +libpthread_solib_p (struct so_list *so) +{ + return (strstr (so->so_name, "/libpthread") != NULL); +} /* GLOBAL FUNCTION @@ -661,8 +672,16 @@ solib_add (char *pattern, int from_tty, struct target_ops *target, int readsyms) for (gdb = so_list_head; gdb; gdb = gdb->next) if (! pattern || re_exec (gdb->so_name)) { + /* Normally, we would read the symbols from that library + only if READSYMS is set. However, we're making a small + exception for the pthread library, because we sometimes + need the library symbols to be loaded in order to provide + thread support (x86-linux for instance). */ + const int add_this_solib = + (readsyms || libpthread_solib_p (gdb)); + any_matches = 1; - if (readsyms && solib_read_symbols (gdb, from_tty)) + if (add_this_solib && solib_read_symbols (gdb, from_tty)) loaded_any_symbols = 1; } |