diff options
author | Pedro Alves <palves@redhat.com> | 2015-12-17 14:20:51 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2015-12-17 14:20:51 +0000 |
commit | 4a6ed09b0f70c79b11bc1e0973a7333d9316a287 (patch) | |
tree | ae9cc273c4c4d5239b525a2c2941b4671d7fc712 /gdb/linux-thread-db.c | |
parent | c3c874459bf57a70ccbf71a39a3a7dc3c472a201 (diff) | |
download | gdb-4a6ed09b0f70c79b11bc1e0973a7333d9316a287.zip gdb-4a6ed09b0f70c79b11bc1e0973a7333d9316a287.tar.gz gdb-4a6ed09b0f70c79b11bc1e0973a7333d9316a287.tar.bz2 |
Remove support for LinuxThreads and vendor 2.4 kernels w/ backported NPTL
Since we now rely on PTRACE_EVENT_CLONE being available (added in
Linux 2.5.46), we're relying on NPTL.
This commit removes the support for older LinuxThreads, as well as the
workarounds for vendor 2.4 kernels with NPTL backported.
- Rely on tkill being available.
- Assume gdb doesn't get cancel signals.
- Remove code that checks the LinuxThreads restart and cancel signals
in the inferior.
- Assume that __WALL is available.
- Assume that non-leader threads report WIFEXITED.
- Thus, no longer need to send signal 0 to check whether threads are
still alive.
- Update comments throughout.
Tested on x86_64 Fedora 20, native and gdbserver.
gdb/ChangeLog:
* configure.ac: Remove tkill checks.
* configure, config.in: Regenerate.
* linux-nat.c: Remove HAVE_TKILL_SYSCALL check. Update top level
comments.
(linux_nat_post_attach_wait): Remove 'cloned' parameter. Use
__WALL.
(attach_proc_task_lwp_callback): Don't set the cloned flag.
(linux_nat_attach): Adjust.
(kill_lwp): Remove HAVE_TKILL_SYSCALL check. No longer fall back
to 'kill'.
(linux_handle_extended_wait): Use __WALL. Don't set the cloned
flag.
(wait_lwp): Use __WALL. Update comments.
(running_callback, stop_and_resume_callback): Delete.
(linux_nat_filter_event): Don't stop and resume all lwps. Don't
check if the event LWP has previously exited.
(check_zombie_leaders): Update comments.
(linux_nat_wait_1): Use __WALL.
(kill_wait_callback): Don't handle clone processes separately.
Use __WALL instead.
(linux_thread_alive): Delete.
(linux_nat_thread_alive): Return true as long as the LWP is in the
LWP list.
(linux_nat_update_thread_list): Assume the kernel supports
PTRACE_EVENT_CLONE.
(get_signo): Delete.
(lin_thread_get_thread_signals): Remove LinuxThreads references.
No longer check __pthread_sig_restart / __pthread_sig_cancel in
the inferior.
* linux-nat.h (struct lwp_info) <cloned>: Delete field.
* linux-thread-db.c: Update comments.
(_initialize_thread_db): Remove LinuxThreads references.
* nat/linux-waitpid.c (my_waitpid): No longer emulate __WALL.
Pass down flags unmodified.
* linux-waitpid.h (my_waitpid): Update documentation.
gdb/gdbserver/ChangeLog:
* linux-low.c (linux_kill_one_lwp): Remove references to
LinuxThreads.
(kill_lwp): Remove HAVE_TKILL_SYSCALL check. No longer fall back
to 'kill'.
(linux_init_signals): Delete.
(initialize_low): Adjust.
* thread-db.c (thread_db_init): Remove LinuxThreads reference.
Diffstat (limited to 'gdb/linux-thread-db.c')
-rw-r--r-- | gdb/linux-thread-db.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c index 4e51c74..ce3f6a1 100644 --- a/gdb/linux-thread-db.c +++ b/gdb/linux-thread-db.c @@ -54,11 +54,12 @@ created, thread IDs (usually, the result of pthread_self), and thread-local variables. - The libthread_db interface originates on Solaris, where it is - both more powerful and more complicated. This implementation - only works for LinuxThreads and NPTL, the two glibc threading - libraries. It assumes that each thread is permanently assigned - to a single light-weight process (LWP). + The libthread_db interface originates on Solaris, where it is both + more powerful and more complicated. This implementation only works + for NPTL, the glibc threading library. It assumes that each thread + is permanently assigned to a single light-weight process (LWP). At + some point it also supported the older LinuxThreads library, but it + no longer does. libthread_db-specific information is stored in the "private" field of struct thread_info. When the field is NULL we do not yet have @@ -1717,10 +1718,9 @@ _initialize_thread_db (void) /* Defer loading of libthread_db.so until inferior is running. This allows gdb to load correct libthread_db for a given - executable -- there could be mutiple versions of glibc, - compiled with LinuxThreads or NPTL, and until there is - a running inferior, we can't tell which libthread_db is - the correct one to load. */ + executable -- there could be multiple versions of glibc, + and until there is a running inferior, we can't tell which + libthread_db is the correct one to load. */ libthread_db_search_path = xstrdup (LIBTHREAD_DB_SEARCH_PATH); |