Automatic date update in version.in
[external/binutils.git] / gdb / linux-thread-db.c
1 /* libthread_db assisted debugging support, generic parts.
2
3    Copyright (C) 1999-2018 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include <dlfcn.h>
22 #include "gdb_proc_service.h"
23 #include "nat/gdb_thread_db.h"
24 #include "gdb_vecs.h"
25 #include "bfd.h"
26 #include "command.h"
27 #include "gdbcmd.h"
28 #include "gdbthread.h"
29 #include "inferior.h"
30 #include "infrun.h"
31 #include "symfile.h"
32 #include "objfiles.h"
33 #include "target.h"
34 #include "regcache.h"
35 #include "solib.h"
36 #include "solib-svr4.h"
37 #include "gdbcore.h"
38 #include "observable.h"
39 #include "linux-nat.h"
40 #include "nat/linux-procfs.h"
41 #include "nat/linux-ptrace.h"
42 #include "nat/linux-osdata.h"
43 #include "auto-load.h"
44 #include "cli/cli-utils.h"
45 #include <signal.h>
46 #include <ctype.h>
47 #include "nat/linux-namespaces.h"
48 #include <algorithm>
49 #include "common/pathstuff.h"
50 #include "valprint.h"
51
52 /* GNU/Linux libthread_db support.
53
54    libthread_db is a library, provided along with libpthread.so, which
55    exposes the internals of the thread library to a debugger.  It
56    allows GDB to find existing threads, new threads as they are
57    created, thread IDs (usually, the result of pthread_self), and
58    thread-local variables.
59
60    The libthread_db interface originates on Solaris, where it is both
61    more powerful and more complicated.  This implementation only works
62    for NPTL, the glibc threading library.  It assumes that each thread
63    is permanently assigned to a single light-weight process (LWP).  At
64    some point it also supported the older LinuxThreads library, but it
65    no longer does.
66
67    libthread_db-specific information is stored in the "private" field
68    of struct thread_info.  When the field is NULL we do not yet have
69    information about the new thread; this could be temporary (created,
70    but the thread library's data structures do not reflect it yet)
71    or permanent (created using clone instead of pthread_create).
72
73    Process IDs managed by linux-thread-db.c match those used by
74    linux-nat.c: a common PID for all processes, an LWP ID for each
75    thread, and no TID.  We save the TID in private.  Keeping it out
76    of the ptid_t prevents thread IDs changing when libpthread is
77    loaded or unloaded.  */
78
79 static const target_info thread_db_target_info = {
80   "multi-thread",
81   N_("multi-threaded child process."),
82   N_("Threads and pthreads support.")
83 };
84
85 class thread_db_target final : public target_ops
86 {
87 public:
88   const target_info &info () const override
89   { return thread_db_target_info; }
90
91   strata stratum () const override { return thread_stratum; }
92
93   void detach (inferior *, int) override;
94   ptid_t wait (ptid_t, struct target_waitstatus *, int) override;
95   void resume (ptid_t, int, enum gdb_signal) override;
96   void mourn_inferior () override;
97   void update_thread_list () override;
98   const char *pid_to_str (ptid_t) override;
99   CORE_ADDR get_thread_local_address (ptid_t ptid,
100                                       CORE_ADDR load_module_addr,
101                                       CORE_ADDR offset) override;
102   const char *extra_thread_info (struct thread_info *) override;
103   ptid_t get_ada_task_ptid (long lwp, long thread) override;
104
105   thread_info *thread_handle_to_thread_info (const gdb_byte *thread_handle,
106                                              int handle_len,
107                                              inferior *inf) override;
108 };
109
110 static char *libthread_db_search_path;
111
112 /* Set to non-zero if thread_db auto-loading is enabled
113    by the "set auto-load libthread-db" command.  */
114 static int auto_load_thread_db = 1;
115
116 /* Set to non-zero if load-time libthread_db tests have been enabled
117    by the "maintenence set check-libthread-db" command.  */
118 static int check_thread_db_on_load = 0;
119
120 /* "show" command for the auto_load_thread_db configuration variable.  */
121
122 static void
123 show_auto_load_thread_db (struct ui_file *file, int from_tty,
124                           struct cmd_list_element *c, const char *value)
125 {
126   fprintf_filtered (file, _("Auto-loading of inferior specific libthread_db "
127                             "is %s.\n"),
128                     value);
129 }
130
131 static void
132 set_libthread_db_search_path (const char *ignored, int from_tty,
133                               struct cmd_list_element *c)
134 {
135   if (*libthread_db_search_path == '\0')
136     {
137       xfree (libthread_db_search_path);
138       libthread_db_search_path = xstrdup (LIBTHREAD_DB_SEARCH_PATH);
139     }
140 }
141
142 /* If non-zero, print details of libthread_db processing.  */
143
144 static unsigned int libthread_db_debug;
145
146 static void
147 show_libthread_db_debug (struct ui_file *file, int from_tty,
148                          struct cmd_list_element *c, const char *value)
149 {
150   fprintf_filtered (file, _("libthread-db debugging is %s.\n"), value);
151 }
152
153 /* If we're running on GNU/Linux, we must explicitly attach to any new
154    threads.  */
155
156 /* This module's target vector.  */
157 static thread_db_target the_thread_db_target;
158
159 /* Non-zero if we have determined the signals used by the threads
160    library.  */
161 static int thread_signals;
162 static sigset_t thread_stop_set;
163 static sigset_t thread_print_set;
164
165 struct thread_db_info
166 {
167   struct thread_db_info *next;
168
169   /* Process id this object refers to.  */
170   int pid;
171
172   /* Handle from dlopen for libthread_db.so.  */
173   void *handle;
174
175   /* Absolute pathname from gdb_realpath to disk file used for dlopen-ing
176      HANDLE.  It may be NULL for system library.  */
177   char *filename;
178
179   /* Structure that identifies the child process for the
180      <proc_service.h> interface.  */
181   struct ps_prochandle proc_handle;
182
183   /* Connection to the libthread_db library.  */
184   td_thragent_t *thread_agent;
185
186   /* True if we need to apply the workaround for glibc/BZ5983.  When
187      we catch a PTRACE_O_TRACEFORK, and go query the child's thread
188      list, nptl_db returns the parent's threads in addition to the new
189      (single) child thread.  If this flag is set, we do extra work to
190      be able to ignore such stale entries.  */
191   int need_stale_parent_threads_check;
192
193   /* Pointers to the libthread_db functions.  */
194
195   td_init_ftype *td_init_p;
196   td_ta_new_ftype *td_ta_new_p;
197   td_ta_map_lwp2thr_ftype *td_ta_map_lwp2thr_p;
198   td_ta_thr_iter_ftype *td_ta_thr_iter_p;
199   td_thr_get_info_ftype *td_thr_get_info_p;
200   td_thr_tls_get_addr_ftype *td_thr_tls_get_addr_p;
201   td_thr_tlsbase_ftype *td_thr_tlsbase_p;
202 };
203
204 /* List of known processes using thread_db, and the required
205    bookkeeping.  */
206 struct thread_db_info *thread_db_list;
207
208 static void thread_db_find_new_threads_1 (thread_info *stopped);
209 static void thread_db_find_new_threads_2 (thread_info *stopped,
210                                           bool until_no_new);
211
212 static void check_thread_signals (void);
213
214 static struct thread_info *record_thread
215   (struct thread_db_info *info, struct thread_info *tp,
216    ptid_t ptid, const td_thrhandle_t *th_p, const td_thrinfo_t *ti_p);
217
218 /* Add the current inferior to the list of processes using libpthread.
219    Return a pointer to the newly allocated object that was added to
220    THREAD_DB_LIST.  HANDLE is the handle returned by dlopen'ing
221    LIBTHREAD_DB_SO.  */
222
223 static struct thread_db_info *
224 add_thread_db_info (void *handle)
225 {
226   struct thread_db_info *info = XCNEW (struct thread_db_info);
227
228   info->pid = inferior_ptid.pid ();
229   info->handle = handle;
230
231   /* The workaround works by reading from /proc/pid/status, so it is
232      disabled for core files.  */
233   if (target_has_execution)
234     info->need_stale_parent_threads_check = 1;
235
236   info->next = thread_db_list;
237   thread_db_list = info;
238
239   return info;
240 }
241
242 /* Return the thread_db_info object representing the bookkeeping
243    related to process PID, if any; NULL otherwise.  */
244
245 static struct thread_db_info *
246 get_thread_db_info (int pid)
247 {
248   struct thread_db_info *info;
249
250   for (info = thread_db_list; info; info = info->next)
251     if (pid == info->pid)
252       return info;
253
254   return NULL;
255 }
256
257 /* When PID has exited or has been detached, we no longer want to keep
258    track of it as using libpthread.  Call this function to discard
259    thread_db related info related to PID.  Note that this closes
260    LIBTHREAD_DB_SO's dlopen'ed handle.  */
261
262 static void
263 delete_thread_db_info (int pid)
264 {
265   struct thread_db_info *info, *info_prev;
266
267   info_prev = NULL;
268
269   for (info = thread_db_list; info; info_prev = info, info = info->next)
270     if (pid == info->pid)
271       break;
272
273   if (info == NULL)
274     return;
275
276   if (info->handle != NULL)
277     dlclose (info->handle);
278
279   xfree (info->filename);
280
281   if (info_prev)
282     info_prev->next = info->next;
283   else
284     thread_db_list = info->next;
285
286   xfree (info);
287 }
288
289 /* Use "struct private_thread_info" to cache thread state.  This is
290    a substantial optimization.  */
291
292 struct thread_db_thread_info : public private_thread_info
293 {
294   /* Flag set when we see a TD_DEATH event for this thread.  */
295   bool dying = false;
296
297   /* Cached thread state.  */
298   td_thrhandle_t th {};
299   thread_t tid {};
300 };
301
302 static thread_db_thread_info *
303 get_thread_db_thread_info (thread_info *thread)
304 {
305   return static_cast<thread_db_thread_info *> (thread->priv.get ());
306 }
307
308 static const char *
309 thread_db_err_str (td_err_e err)
310 {
311   static char buf[64];
312
313   switch (err)
314     {
315     case TD_OK:
316       return "generic 'call succeeded'";
317     case TD_ERR:
318       return "generic error";
319     case TD_NOTHR:
320       return "no thread to satisfy query";
321     case TD_NOSV:
322       return "no sync handle to satisfy query";
323     case TD_NOLWP:
324       return "no LWP to satisfy query";
325     case TD_BADPH:
326       return "invalid process handle";
327     case TD_BADTH:
328       return "invalid thread handle";
329     case TD_BADSH:
330       return "invalid synchronization handle";
331     case TD_BADTA:
332       return "invalid thread agent";
333     case TD_BADKEY:
334       return "invalid key";
335     case TD_NOMSG:
336       return "no event message for getmsg";
337     case TD_NOFPREGS:
338       return "FPU register set not available";
339     case TD_NOLIBTHREAD:
340       return "application not linked with libthread";
341     case TD_NOEVENT:
342       return "requested event is not supported";
343     case TD_NOCAPAB:
344       return "capability not available";
345     case TD_DBERR:
346       return "debugger service failed";
347     case TD_NOAPLIC:
348       return "operation not applicable to";
349     case TD_NOTSD:
350       return "no thread-specific data for this thread";
351     case TD_MALLOC:
352       return "malloc failed";
353     case TD_PARTIALREG:
354       return "only part of register set was written/read";
355     case TD_NOXREGS:
356       return "X register set not available for this thread";
357 #ifdef THREAD_DB_HAS_TD_NOTALLOC
358     case TD_NOTALLOC:
359       return "thread has not yet allocated TLS for given module";
360 #endif
361 #ifdef THREAD_DB_HAS_TD_VERSION
362     case TD_VERSION:
363       return "versions of libpthread and libthread_db do not match";
364 #endif
365 #ifdef THREAD_DB_HAS_TD_NOTLS
366     case TD_NOTLS:
367       return "there is no TLS segment in the given module";
368 #endif
369     default:
370       snprintf (buf, sizeof (buf), "unknown thread_db error '%d'", err);
371       return buf;
372     }
373 }
374
375 /* Fetch the user-level thread id of PTID.  STOPPED is a stopped
376    thread that we can use to access memory.  */
377
378 static struct thread_info *
379 thread_from_lwp (thread_info *stopped, ptid_t ptid)
380 {
381   td_thrhandle_t th;
382   td_thrinfo_t ti;
383   td_err_e err;
384   struct thread_db_info *info;
385   struct thread_info *tp;
386
387   /* Just in case td_ta_map_lwp2thr doesn't initialize it completely.  */
388   th.th_unique = 0;
389
390   /* This ptid comes from linux-nat.c, which should always fill in the
391      LWP.  */
392   gdb_assert (ptid.lwp () != 0);
393
394   info = get_thread_db_info (ptid.pid ());
395
396   /* Access an lwp we know is stopped.  */
397   info->proc_handle.thread = stopped;
398   err = info->td_ta_map_lwp2thr_p (info->thread_agent, ptid.lwp (),
399                                    &th);
400   if (err != TD_OK)
401     error (_("Cannot find user-level thread for LWP %ld: %s"),
402            ptid.lwp (), thread_db_err_str (err));
403
404   err = info->td_thr_get_info_p (&th, &ti);
405   if (err != TD_OK)
406     error (_("thread_get_info_callback: cannot get thread info: %s"),
407            thread_db_err_str (err));
408
409   /* Fill the cache.  */
410   tp = find_thread_ptid (ptid);
411   return record_thread (info, tp, ptid, &th, &ti);
412 }
413 \f
414
415 /* See linux-nat.h.  */
416
417 int
418 thread_db_notice_clone (ptid_t parent, ptid_t child)
419 {
420   struct thread_db_info *info;
421
422   info = get_thread_db_info (child.pid ());
423
424   if (info == NULL)
425     return 0;
426
427   thread_info *stopped = find_thread_ptid (parent);
428
429   thread_from_lwp (stopped, child);
430
431   /* If we do not know about the main thread's pthread info yet, this
432      would be a good time to find it.  */
433   thread_from_lwp (stopped, parent);
434   return 1;
435 }
436
437 static void *
438 verbose_dlsym (void *handle, const char *name)
439 {
440   void *sym = dlsym (handle, name);
441   if (sym == NULL)
442     warning (_("Symbol \"%s\" not found in libthread_db: %s"),
443              name, dlerror ());
444   return sym;
445 }
446
447 /* Verify inferior's '\0'-terminated symbol VER_SYMBOL starts with "%d.%d" and
448    return 1 if this version is lower (and not equal) to
449    VER_MAJOR_MIN.VER_MINOR_MIN.  Return 0 in all other cases.  */
450
451 static int
452 inferior_has_bug (const char *ver_symbol, int ver_major_min, int ver_minor_min)
453 {
454   struct bound_minimal_symbol version_msym;
455   CORE_ADDR version_addr;
456   gdb::unique_xmalloc_ptr<char> version;
457   int err, got, retval = 0;
458
459   version_msym = lookup_minimal_symbol (ver_symbol, NULL, NULL);
460   if (version_msym.minsym == NULL)
461     return 0;
462
463   version_addr = BMSYMBOL_VALUE_ADDRESS (version_msym);
464   got = target_read_string (version_addr, &version, 32, &err);
465   if (err == 0 && memchr (version.get (), 0, got) == version.get () + got - 1)
466     {
467       int major, minor;
468
469       retval = (sscanf (version.get (), "%d.%d", &major, &minor) == 2
470                 && (major < ver_major_min
471                     || (major == ver_major_min && minor < ver_minor_min)));
472     }
473
474   return retval;
475 }
476
477 /* Similar as thread_db_find_new_threads_1, but try to silently ignore errors
478    if appropriate.
479
480    Return 1 if the caller should abort libthread_db initialization.  Return 0
481    otherwise.  */
482
483 static int
484 thread_db_find_new_threads_silently (thread_info *stopped)
485 {
486
487   TRY
488     {
489       thread_db_find_new_threads_2 (stopped, true);
490     }
491
492   CATCH (except, RETURN_MASK_ERROR)
493     {
494       if (libthread_db_debug)
495         exception_fprintf (gdb_stdlog, except,
496                            "Warning: thread_db_find_new_threads_silently: ");
497
498       /* There is a bug fixed between nptl 2.6.1 and 2.7 by
499            commit 7d9d8bd18906fdd17364f372b160d7ab896ce909
500          where calls to td_thr_get_info fail with TD_ERR for statically linked
501          executables if td_thr_get_info is called before glibc has initialized
502          itself.
503          
504          If the nptl bug is NOT present in the inferior and still thread_db
505          reports an error return 1.  It means the inferior has corrupted thread
506          list and GDB should fall back only to LWPs.
507
508          If the nptl bug is present in the inferior return 0 to silently ignore
509          such errors, and let gdb enumerate threads again later.  In such case
510          GDB cannot properly display LWPs if the inferior thread list is
511          corrupted.  For core files it does not apply, no 'later enumeration'
512          is possible.  */
513
514       if (!target_has_execution || !inferior_has_bug ("nptl_version", 2, 7))
515         {
516           exception_fprintf (gdb_stderr, except,
517                              _("Warning: couldn't activate thread debugging "
518                                "using libthread_db: "));
519           return 1;
520         }
521     }
522   END_CATCH
523
524   return 0;
525 }
526
527 /* Lookup a library in which given symbol resides.
528    Note: this is looking in GDB process, not in the inferior.
529    Returns library name, or NULL.  */
530
531 static const char *
532 dladdr_to_soname (const void *addr)
533 {
534   Dl_info info;
535
536   if (dladdr (addr, &info) != 0)
537     return info.dli_fname;
538   return NULL;
539 }
540
541 /* State for check_thread_db_callback.  */
542
543 struct check_thread_db_info
544 {
545   /* The libthread_db under test.  */
546   struct thread_db_info *info;
547
548   /* True if progress should be logged.  */
549   bool log_progress;
550
551   /* True if the callback was called.  */
552   bool threads_seen;
553
554   /* Name of last libthread_db function called.  */
555   const char *last_call;
556
557   /* Value returned by last libthread_db call.  */
558   td_err_e last_result;
559 };
560
561 static struct check_thread_db_info *tdb_testinfo;
562
563 /* Callback for check_thread_db.  */
564
565 static int
566 check_thread_db_callback (const td_thrhandle_t *th, void *arg)
567 {
568   gdb_assert (tdb_testinfo != NULL);
569   tdb_testinfo->threads_seen = true;
570
571 #define LOG(fmt, args...)                                               \
572   do                                                                    \
573     {                                                                   \
574       if (tdb_testinfo->log_progress)                                   \
575         {                                                               \
576           debug_printf (fmt, ## args);                                  \
577           gdb_flush (gdb_stdlog);                                       \
578         }                                                               \
579     }                                                                   \
580   while (0)
581
582 #define CHECK_1(expr, args...)                                          \
583   do                                                                    \
584     {                                                                   \
585       if (!(expr))                                                      \
586         {                                                               \
587           LOG (" ... FAIL!\n");                                         \
588           error (args);                                                 \
589         }                                                               \
590     }                                                                   \
591   while (0)
592
593 #define CHECK(expr)                                                     \
594   CHECK_1 (expr, "(%s) == false", #expr)
595
596 #define CALL_UNCHECKED(func, args...)                                   \
597   do                                                                    \
598     {                                                                   \
599       tdb_testinfo->last_call = #func;                                  \
600       tdb_testinfo->last_result                                         \
601         = tdb_testinfo->info->func ## _p (args);                        \
602     }                                                                   \
603   while (0)
604
605 #define CHECK_CALL()                                                    \
606   CHECK_1 (tdb_testinfo->last_result == TD_OK,                          \
607            _("%s failed: %s"),                                          \
608            tdb_testinfo->last_call,                                     \
609            thread_db_err_str (tdb_testinfo->last_result))               \
610
611 #define CALL(func, args...)                                             \
612   do                                                                    \
613     {                                                                   \
614       CALL_UNCHECKED (func, args);                                      \
615       CHECK_CALL ();                                                    \
616     }                                                                   \
617   while (0)
618
619   LOG ("  Got thread");
620
621   /* Check td_ta_thr_iter passed consistent arguments.  */
622   CHECK (th != NULL);
623   CHECK (arg == (void *) tdb_testinfo);
624   CHECK (th->th_ta_p == tdb_testinfo->info->thread_agent);
625
626   LOG (" %s", core_addr_to_string_nz ((CORE_ADDR) th->th_unique));
627
628   /* Check td_thr_get_info.  */
629   td_thrinfo_t ti;
630   CALL (td_thr_get_info, th, &ti);
631
632   LOG (" => %d", ti.ti_lid);
633
634   CHECK (ti.ti_ta_p == th->th_ta_p);
635   CHECK (ti.ti_tid == (thread_t) th->th_unique);
636
637   /* Check td_ta_map_lwp2thr.  */
638   td_thrhandle_t th2;
639   memset (&th2, 23, sizeof (td_thrhandle_t));
640   CALL_UNCHECKED (td_ta_map_lwp2thr, th->th_ta_p, ti.ti_lid, &th2);
641
642   if (tdb_testinfo->last_result == TD_ERR && !target_has_execution)
643     {
644       /* Some platforms require execution for td_ta_map_lwp2thr.  */
645       LOG (_("; can't map_lwp2thr"));
646     }
647   else
648     {
649       CHECK_CALL ();
650
651       LOG (" => %s", core_addr_to_string_nz ((CORE_ADDR) th2.th_unique));
652
653       CHECK (memcmp (th, &th2, sizeof (td_thrhandle_t)) == 0);
654     }
655
656   /* Attempt TLS access.  Assuming errno is TLS, this calls
657      thread_db_get_thread_local_address, which in turn calls
658      td_thr_tls_get_addr for live inferiors or td_thr_tlsbase
659      for core files.  This test is skipped if the thread has
660      not been recorded; proceeding in that case would result
661      in the test having the side-effect of noticing threads
662      which seems wrong.
663
664      Note that in glibc's libthread_db td_thr_tls_get_addr is
665      a thin wrapper around td_thr_tlsbase; this check always
666      hits the bulk of the code.
667
668      Note also that we don't actually check any libthread_db
669      calls are made, we just assume they were; future changes
670      to how GDB accesses TLS could result in this passing
671      without exercising the calls it's supposed to.  */
672   ptid_t ptid = ptid_t (tdb_testinfo->info->pid, ti.ti_lid, 0);
673   struct thread_info *thread_info = find_thread_ptid (ptid);
674   if (thread_info != NULL && thread_info->priv != NULL)
675     {
676       LOG ("; errno");
677
678       scoped_restore_current_thread restore_current_thread;
679       switch_to_thread (ptid);
680
681       expression_up expr = parse_expression ("(int) errno");
682       struct value *val = evaluate_expression (expr.get ());
683
684       if (tdb_testinfo->log_progress)
685         {
686           struct value_print_options opts;
687
688           get_user_print_options (&opts);
689           LOG (" = ");
690           value_print (val, gdb_stdlog, &opts);
691         }
692     }
693
694   LOG (" ... OK\n");
695
696 #undef LOG
697 #undef CHECK_1
698 #undef CHECK
699 #undef CALL_UNCHECKED
700 #undef CHECK_CALL
701 #undef CALL
702
703   return 0;
704 }
705
706 /* Run integrity checks on the dlopen()ed libthread_db described by
707    INFO.  Returns true on success, displays a warning and returns
708    false on failure.  Logs progress messages to gdb_stdlog during
709    the test if LOG_PROGRESS is true.  */
710
711 static bool
712 check_thread_db (struct thread_db_info *info, bool log_progress)
713 {
714   bool test_passed = true;
715
716   if (log_progress)
717     debug_printf (_("Running libthread_db integrity checks:\n"));
718
719   /* GDB avoids using td_ta_thr_iter wherever possible (see comment
720      in try_thread_db_load_1 below) so in order to test it we may
721      have to locate it ourselves.  */
722   td_ta_thr_iter_ftype *td_ta_thr_iter_p = info->td_ta_thr_iter_p;
723   if (td_ta_thr_iter_p == NULL)
724     {
725       void *thr_iter = verbose_dlsym (info->handle, "td_ta_thr_iter");
726       if (thr_iter == NULL)
727         return 0;
728
729       td_ta_thr_iter_p = (td_ta_thr_iter_ftype *) thr_iter;
730     }
731
732   /* Set up the test state we share with the callback.  */
733   gdb_assert (tdb_testinfo == NULL);
734   struct check_thread_db_info tdb_testinfo_buf;
735   tdb_testinfo = &tdb_testinfo_buf;
736
737   memset (tdb_testinfo, 0, sizeof (struct check_thread_db_info));
738   tdb_testinfo->info = info;
739   tdb_testinfo->log_progress = log_progress;
740
741   /* td_ta_thr_iter shouldn't be used on running processes.  Note that
742      it's possible the inferior will stop midway through modifying one
743      of its thread lists, in which case the check will spuriously
744      fail.  */
745   linux_stop_and_wait_all_lwps ();
746
747   TRY
748     {
749       td_err_e err = td_ta_thr_iter_p (info->thread_agent,
750                                        check_thread_db_callback,
751                                        tdb_testinfo,
752                                        TD_THR_ANY_STATE,
753                                        TD_THR_LOWEST_PRIORITY,
754                                        TD_SIGNO_MASK,
755                                        TD_THR_ANY_USER_FLAGS);
756
757       if (err != TD_OK)
758         error (_("td_ta_thr_iter failed: %s"), thread_db_err_str (err));
759
760       if (!tdb_testinfo->threads_seen)
761         error (_("no threads seen"));
762     }
763   CATCH (except, RETURN_MASK_ERROR)
764     {
765       if (warning_pre_print)
766         fputs_unfiltered (warning_pre_print, gdb_stderr);
767
768       exception_fprintf (gdb_stderr, except,
769                          _("libthread_db integrity checks failed: "));
770
771       test_passed = false;
772     }
773   END_CATCH
774
775   if (test_passed && log_progress)
776     debug_printf (_("libthread_db integrity checks passed.\n"));
777
778   tdb_testinfo = NULL;
779
780   linux_unstop_all_lwps ();
781
782   return test_passed;
783 }
784
785 /* Attempt to initialize dlopen()ed libthread_db, described by INFO.
786    Return 1 on success.
787    Failure could happen if libthread_db does not have symbols we expect,
788    or when it refuses to work with the current inferior (e.g. due to
789    version mismatch between libthread_db and libpthread).  */
790
791 static int
792 try_thread_db_load_1 (struct thread_db_info *info)
793 {
794   td_err_e err;
795
796   /* Initialize pointers to the dynamic library functions we will use.
797      Essential functions first.  */
798
799 #define TDB_VERBOSE_DLSYM(info, func)                   \
800   info->func ## _p = (func ## _ftype *) verbose_dlsym (info->handle, #func)
801
802 #define TDB_DLSYM(info, func)                   \
803   info->func ## _p = (func ## _ftype *) dlsym (info->handle, #func)
804
805 #define CHK(a)                                                          \
806   do                                                                    \
807     {                                                                   \
808       if ((a) == NULL)                                                  \
809         return 0;                                                       \
810   } while (0)
811
812   CHK (TDB_VERBOSE_DLSYM (info, td_init));
813
814   err = info->td_init_p ();
815   if (err != TD_OK)
816     {
817       warning (_("Cannot initialize libthread_db: %s"),
818                thread_db_err_str (err));
819       return 0;
820     }
821
822   CHK (TDB_VERBOSE_DLSYM (info, td_ta_new));
823
824   /* Initialize the structure that identifies the child process.  */
825   info->proc_handle.thread = inferior_thread ();
826
827   /* Now attempt to open a connection to the thread library.  */
828   err = info->td_ta_new_p (&info->proc_handle, &info->thread_agent);
829   if (err != TD_OK)
830     {
831       if (libthread_db_debug)
832         fprintf_unfiltered (gdb_stdlog, _("td_ta_new failed: %s\n"),
833                             thread_db_err_str (err));
834       else
835         switch (err)
836           {
837             case TD_NOLIBTHREAD:
838 #ifdef THREAD_DB_HAS_TD_VERSION
839             case TD_VERSION:
840 #endif
841               /* The errors above are not unexpected and silently ignored:
842                  they just mean we haven't found correct version of
843                  libthread_db yet.  */
844               break;
845             default:
846               warning (_("td_ta_new failed: %s"), thread_db_err_str (err));
847           }
848       return 0;
849     }
850
851   /* These are essential.  */
852   CHK (TDB_VERBOSE_DLSYM (info, td_ta_map_lwp2thr));
853   CHK (TDB_VERBOSE_DLSYM (info, td_thr_get_info));
854
855   /* These are not essential.  */
856   TDB_DLSYM (info, td_thr_tls_get_addr);
857   TDB_DLSYM (info, td_thr_tlsbase);
858
859   /* It's best to avoid td_ta_thr_iter if possible.  That walks data
860      structures in the inferior's address space that may be corrupted,
861      or, if the target is running, may change while we walk them.  If
862      there's execution (and /proc is mounted), then we're already
863      attached to all LWPs.  Use thread_from_lwp, which uses
864      td_ta_map_lwp2thr instead, which does not walk the thread list.
865
866      td_ta_map_lwp2thr uses ps_get_thread_area, but we can't use that
867      currently on core targets, as it uses ptrace directly.  */
868   if (target_has_execution
869       && linux_proc_task_list_dir_exists (inferior_ptid.pid ()))
870     info->td_ta_thr_iter_p = NULL;
871   else
872     CHK (TDB_VERBOSE_DLSYM (info, td_ta_thr_iter));
873
874 #undef TDB_VERBOSE_DLSYM
875 #undef TDB_DLSYM
876 #undef CHK
877
878   /* Run integrity checks if requested.  */
879   if (check_thread_db_on_load)
880     {
881       if (!check_thread_db (info, libthread_db_debug))
882         return 0;
883     }
884
885   if (info->td_ta_thr_iter_p == NULL)
886     {
887       struct lwp_info *lp;
888       int pid = inferior_ptid.pid ();
889       thread_info *curr_thread = inferior_thread ();
890
891       linux_stop_and_wait_all_lwps ();
892
893       ALL_LWPS (lp)
894         if (lp->ptid.pid () == pid)
895           thread_from_lwp (curr_thread, lp->ptid);
896
897       linux_unstop_all_lwps ();
898     }
899   else if (thread_db_find_new_threads_silently (inferior_thread ()) != 0)
900     {
901       /* Even if libthread_db initializes, if the thread list is
902          corrupted, we'd not manage to list any threads.  Better reject this
903          thread_db, and fall back to at least listing LWPs.  */
904       return 0;
905     }
906
907   printf_unfiltered (_("[Thread debugging using libthread_db enabled]\n"));
908
909   if (*libthread_db_search_path || libthread_db_debug)
910     {
911       struct ui_file *file;
912       const char *library;
913
914       library = dladdr_to_soname ((const void *) *info->td_ta_new_p);
915       if (library == NULL)
916         library = LIBTHREAD_DB_SO;
917
918       /* If we'd print this to gdb_stdout when debug output is
919          disabled, still print it to gdb_stdout if debug output is
920          enabled.  User visible output should not depend on debug
921          settings.  */
922       file = *libthread_db_search_path != '\0' ? gdb_stdout : gdb_stdlog;
923       fprintf_unfiltered (file, _("Using host libthread_db library \"%s\".\n"),
924                           library);
925     }
926
927   /* The thread library was detected.  Activate the thread_db target
928      if this is the first process using it.  */
929   if (thread_db_list->next == NULL)
930     push_target (&the_thread_db_target);
931
932   return 1;
933 }
934
935 /* Attempt to use LIBRARY as libthread_db.  LIBRARY could be absolute,
936    relative, or just LIBTHREAD_DB.  */
937
938 static int
939 try_thread_db_load (const char *library, int check_auto_load_safe)
940 {
941   void *handle;
942   struct thread_db_info *info;
943
944   if (libthread_db_debug)
945     fprintf_unfiltered (gdb_stdlog,
946                         _("Trying host libthread_db library: %s.\n"),
947                         library);
948
949   if (check_auto_load_safe)
950     {
951       if (access (library, R_OK) != 0)
952         {
953           /* Do not print warnings by file_is_auto_load_safe if the library does
954              not exist at this place.  */
955           if (libthread_db_debug)
956             fprintf_unfiltered (gdb_stdlog, _("open failed: %s.\n"),
957                                 safe_strerror (errno));
958           return 0;
959         }
960
961       if (!file_is_auto_load_safe (library, _("auto-load: Loading libthread-db "
962                                               "library \"%s\" from explicit "
963                                               "directory.\n"),
964                                    library))
965         return 0;
966     }
967
968   handle = dlopen (library, RTLD_NOW);
969   if (handle == NULL)
970     {
971       if (libthread_db_debug)
972         fprintf_unfiltered (gdb_stdlog, _("dlopen failed: %s.\n"), dlerror ());
973       return 0;
974     }
975
976   if (libthread_db_debug && strchr (library, '/') == NULL)
977     {
978       void *td_init;
979
980       td_init = dlsym (handle, "td_init");
981       if (td_init != NULL)
982         {
983           const char *const libpath = dladdr_to_soname (td_init);
984
985           if (libpath != NULL)
986             fprintf_unfiltered (gdb_stdlog, _("Host %s resolved to: %s.\n"),
987                                library, libpath);
988         }
989     }
990
991   info = add_thread_db_info (handle);
992
993   /* Do not save system library name, that one is always trusted.  */
994   if (strchr (library, '/') != NULL)
995     info->filename = gdb_realpath (library).release ();
996
997   if (try_thread_db_load_1 (info))
998     return 1;
999
1000   /* This library "refused" to work on current inferior.  */
1001   delete_thread_db_info (inferior_ptid.pid ());
1002   return 0;
1003 }
1004
1005 /* Subroutine of try_thread_db_load_from_pdir to simplify it.
1006    Try loading libthread_db in directory(OBJ)/SUBDIR.
1007    SUBDIR may be NULL.  It may also be something like "../lib64".
1008    The result is true for success.  */
1009
1010 static int
1011 try_thread_db_load_from_pdir_1 (struct objfile *obj, const char *subdir)
1012 {
1013   const char *obj_name = objfile_name (obj);
1014
1015   if (obj_name[0] != '/')
1016     {
1017       warning (_("Expected absolute pathname for libpthread in the"
1018                  " inferior, but got %s."), obj_name);
1019       return 0;
1020     }
1021
1022   std::string path = obj_name;
1023   size_t cp = path.rfind ('/');
1024   /* This should at minimum hit the first character.  */
1025   gdb_assert (cp != std::string::npos);
1026   path.resize (cp + 1);
1027   if (subdir != NULL)
1028     path = path + subdir + "/";
1029   path += LIBTHREAD_DB_SO;
1030
1031   return try_thread_db_load (path.c_str (), 1);
1032 }
1033
1034 /* Handle $pdir in libthread-db-search-path.
1035    Look for libthread_db in directory(libpthread)/SUBDIR.
1036    SUBDIR may be NULL.  It may also be something like "../lib64".
1037    The result is true for success.  */
1038
1039 static int
1040 try_thread_db_load_from_pdir (const char *subdir)
1041 {
1042   struct objfile *obj;
1043
1044   if (!auto_load_thread_db)
1045     return 0;
1046
1047   ALL_OBJFILES (obj)
1048     if (libpthread_name_p (objfile_name (obj)))
1049       {
1050         if (try_thread_db_load_from_pdir_1 (obj, subdir))
1051           return 1;
1052
1053         /* We may have found the separate-debug-info version of
1054            libpthread, and it may live in a directory without a matching
1055            libthread_db.  */
1056         if (obj->separate_debug_objfile_backlink != NULL)
1057           return try_thread_db_load_from_pdir_1 (obj->separate_debug_objfile_backlink,
1058                                                  subdir);
1059
1060         return 0;
1061       }
1062
1063   return 0;
1064 }
1065
1066 /* Handle $sdir in libthread-db-search-path.
1067    Look for libthread_db in the system dirs, or wherever a plain
1068    dlopen(file_without_path) will look.
1069    The result is true for success.  */
1070
1071 static int
1072 try_thread_db_load_from_sdir (void)
1073 {
1074   return try_thread_db_load (LIBTHREAD_DB_SO, 0);
1075 }
1076
1077 /* Try to load libthread_db from directory DIR of length DIR_LEN.
1078    The result is true for success.  */
1079
1080 static int
1081 try_thread_db_load_from_dir (const char *dir, size_t dir_len)
1082 {
1083   if (!auto_load_thread_db)
1084     return 0;
1085
1086   std::string path = std::string (dir, dir_len) + "/" + LIBTHREAD_DB_SO;
1087
1088   return try_thread_db_load (path.c_str (), 1);
1089 }
1090
1091 /* Search libthread_db_search_path for libthread_db which "agrees"
1092    to work on current inferior.
1093    The result is true for success.  */
1094
1095 static int
1096 thread_db_load_search (void)
1097 {
1098   int rc = 0;
1099
1100   std::vector<gdb::unique_xmalloc_ptr<char>> dir_vec
1101     = dirnames_to_char_ptr_vec (libthread_db_search_path);
1102
1103   for (const gdb::unique_xmalloc_ptr<char> &this_dir_up : dir_vec)
1104     {
1105       const char *this_dir = this_dir_up.get ();
1106       const int pdir_len = sizeof ("$pdir") - 1;
1107       size_t this_dir_len;
1108
1109       this_dir_len = strlen (this_dir);
1110
1111       if (strncmp (this_dir, "$pdir", pdir_len) == 0
1112           && (this_dir[pdir_len] == '\0'
1113               || this_dir[pdir_len] == '/'))
1114         {
1115           const char *subdir = NULL;
1116
1117           std::string subdir_holder;
1118           if (this_dir[pdir_len] == '/')
1119             {
1120               subdir_holder = std::string (this_dir + pdir_len + 1);
1121               subdir = subdir_holder.c_str ();
1122             }
1123           rc = try_thread_db_load_from_pdir (subdir);
1124           if (rc)
1125             break;
1126         }
1127       else if (strcmp (this_dir, "$sdir") == 0)
1128         {
1129           if (try_thread_db_load_from_sdir ())
1130             {
1131               rc = 1;
1132               break;
1133             }
1134         }
1135       else
1136         {
1137           if (try_thread_db_load_from_dir (this_dir, this_dir_len))
1138             {
1139               rc = 1;
1140               break;
1141             }
1142         }
1143     }
1144
1145   if (libthread_db_debug)
1146     fprintf_unfiltered (gdb_stdlog,
1147                         _("thread_db_load_search returning %d\n"), rc);
1148   return rc;
1149 }
1150
1151 /* Return non-zero if the inferior has a libpthread.  */
1152
1153 static int
1154 has_libpthread (void)
1155 {
1156   struct objfile *obj;
1157
1158   ALL_OBJFILES (obj)
1159     if (libpthread_name_p (objfile_name (obj)))
1160       return 1;
1161
1162   return 0;
1163 }
1164
1165 /* Attempt to load and initialize libthread_db.
1166    Return 1 on success.  */
1167
1168 static int
1169 thread_db_load (void)
1170 {
1171   struct thread_db_info *info;
1172
1173   info = get_thread_db_info (inferior_ptid.pid ());
1174
1175   if (info != NULL)
1176     return 1;
1177
1178   /* Don't attempt to use thread_db on executables not running
1179      yet.  */
1180   if (!target_has_registers)
1181     return 0;
1182
1183   /* Don't attempt to use thread_db for remote targets.  */
1184   if (!(target_can_run () || core_bfd))
1185     return 0;
1186
1187   if (thread_db_load_search ())
1188     return 1;
1189
1190   /* We couldn't find a libthread_db.
1191      If the inferior has a libpthread warn the user.  */
1192   if (has_libpthread ())
1193     {
1194       warning (_("Unable to find libthread_db matching inferior's thread"
1195                  " library, thread debugging will not be available."));
1196       return 0;
1197     }
1198
1199   /* Either this executable isn't using libpthread at all, or it is
1200      statically linked.  Since we can't easily distinguish these two cases,
1201      no warning is issued.  */
1202   return 0;
1203 }
1204
1205 static void
1206 check_thread_signals (void)
1207 {
1208   if (!thread_signals)
1209     {
1210       sigset_t mask;
1211       int i;
1212
1213       lin_thread_get_thread_signals (&mask);
1214       sigemptyset (&thread_stop_set);
1215       sigemptyset (&thread_print_set);
1216
1217       for (i = 1; i < NSIG; i++)
1218         {
1219           if (sigismember (&mask, i))
1220             {
1221               if (signal_stop_update (gdb_signal_from_host (i), 0))
1222                 sigaddset (&thread_stop_set, i);
1223               if (signal_print_update (gdb_signal_from_host (i), 0))
1224                 sigaddset (&thread_print_set, i);
1225               thread_signals = 1;
1226             }
1227         }
1228     }
1229 }
1230
1231 /* Check whether thread_db is usable.  This function is called when
1232    an inferior is created (or otherwise acquired, e.g. attached to)
1233    and when new shared libraries are loaded into a running process.  */
1234
1235 void
1236 check_for_thread_db (void)
1237 {
1238   /* Do nothing if we couldn't load libthread_db.so.1.  */
1239   if (!thread_db_load ())
1240     return;
1241 }
1242
1243 /* This function is called via the new_objfile observer.  */
1244
1245 static void
1246 thread_db_new_objfile (struct objfile *objfile)
1247 {
1248   /* This observer must always be called with inferior_ptid set
1249      correctly.  */
1250
1251   if (objfile != NULL
1252       /* libpthread with separate debug info has its debug info file already
1253          loaded (and notified without successful thread_db initialization)
1254          the time gdb::observers::new_objfile.notify is called for the library itself.
1255          Static executables have their separate debug info loaded already
1256          before the inferior has started.  */
1257       && objfile->separate_debug_objfile_backlink == NULL
1258       /* Only check for thread_db if we loaded libpthread,
1259          or if this is the main symbol file.
1260          We need to check OBJF_MAINLINE to handle the case of debugging
1261          a statically linked executable AND the symbol file is specified AFTER
1262          the exec file is loaded (e.g., gdb -c core ; file foo).
1263          For dynamically linked executables, libpthread can be near the end
1264          of the list of shared libraries to load, and in an app of several
1265          thousand shared libraries, this can otherwise be painful.  */
1266       && ((objfile->flags & OBJF_MAINLINE) != 0
1267           || libpthread_name_p (objfile_name (objfile))))
1268     check_for_thread_db ();
1269 }
1270
1271 static void
1272 check_pid_namespace_match (void)
1273 {
1274   /* Check is only relevant for local targets targets.  */
1275   if (target_can_run ())
1276     {
1277       /* If the child is in a different PID namespace, its idea of its
1278          PID will differ from our idea of its PID.  When we scan the
1279          child's thread list, we'll mistakenly think it has no threads
1280          since the thread PID fields won't match the PID we give to
1281          libthread_db.  */
1282       if (!linux_ns_same (inferior_ptid.pid (), LINUX_NS_PID))
1283         {
1284           warning (_ ("Target and debugger are in different PID "
1285                       "namespaces; thread lists and other data are "
1286                       "likely unreliable.  "
1287                       "Connect to gdbserver inside the container."));
1288         }
1289     }
1290 }
1291
1292 /* This function is called via the inferior_created observer.
1293    This handles the case of debugging statically linked executables.  */
1294
1295 static void
1296 thread_db_inferior_created (struct target_ops *target, int from_tty)
1297 {
1298   check_pid_namespace_match ();
1299   check_for_thread_db ();
1300 }
1301
1302 /* Update the thread's state (what's displayed in "info threads"),
1303    from libthread_db thread state information.  */
1304
1305 static void
1306 update_thread_state (thread_db_thread_info *priv,
1307                      const td_thrinfo_t *ti_p)
1308 {
1309   priv->dying = (ti_p->ti_state == TD_THR_UNKNOWN
1310                  || ti_p->ti_state == TD_THR_ZOMBIE);
1311 }
1312
1313 /* Record a new thread in GDB's thread list.  Creates the thread's
1314    private info.  If TP is NULL or TP is marked as having exited,
1315    creates a new thread.  Otherwise, uses TP.  */
1316
1317 static struct thread_info *
1318 record_thread (struct thread_db_info *info,
1319                struct thread_info *tp,
1320                ptid_t ptid, const td_thrhandle_t *th_p,
1321                const td_thrinfo_t *ti_p)
1322 {
1323   /* A thread ID of zero may mean the thread library has not
1324      initialized yet.  Leave private == NULL until the thread library
1325      has initialized.  */
1326   if (ti_p->ti_tid == 0)
1327     return tp;
1328
1329   /* Construct the thread's private data.  */
1330   thread_db_thread_info *priv = new thread_db_thread_info;
1331
1332   priv->th = *th_p;
1333   priv->tid = ti_p->ti_tid;
1334   update_thread_state (priv, ti_p);
1335
1336   /* Add the thread to GDB's thread list.  If we already know about a
1337      thread with this PTID, but it's marked exited, then the kernel
1338      reused the tid of an old thread.  */
1339   if (tp == NULL || tp->state == THREAD_EXITED)
1340     tp = add_thread_with_info (ptid, priv);
1341   else
1342     tp->priv.reset (priv);
1343
1344   if (target_has_execution)
1345     check_thread_signals ();
1346
1347   return tp;
1348 }
1349
1350 void
1351 thread_db_target::detach (inferior *inf, int from_tty)
1352 {
1353   delete_thread_db_info (inf->pid);
1354
1355   beneath ()->detach (inf, from_tty);
1356
1357   /* NOTE: From this point on, inferior_ptid is null_ptid.  */
1358
1359   /* If there are no more processes using libpthread, detach the
1360      thread_db target ops.  */
1361   if (!thread_db_list)
1362     unpush_target (this);
1363 }
1364
1365 ptid_t
1366 thread_db_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus,
1367                         int options)
1368 {
1369   struct thread_db_info *info;
1370
1371   ptid = beneath ()->wait (ptid, ourstatus, options);
1372
1373   switch (ourstatus->kind)
1374     {
1375     case TARGET_WAITKIND_IGNORE:
1376     case TARGET_WAITKIND_EXITED:
1377     case TARGET_WAITKIND_THREAD_EXITED:
1378     case TARGET_WAITKIND_SIGNALLED:
1379       return ptid;
1380     }
1381
1382   info = get_thread_db_info (ptid.pid ());
1383
1384   /* If this process isn't using thread_db, we're done.  */
1385   if (info == NULL)
1386     return ptid;
1387
1388   if (ourstatus->kind == TARGET_WAITKIND_EXECD)
1389     {
1390       /* New image, it may or may not end up using thread_db.  Assume
1391          not unless we find otherwise.  */
1392       delete_thread_db_info (ptid.pid ());
1393       if (!thread_db_list)
1394         unpush_target (&the_thread_db_target);
1395
1396       return ptid;
1397     }
1398
1399   /* Fill in the thread's user-level thread id and status.  */
1400   thread_from_lwp (find_thread_ptid (ptid), ptid);
1401
1402   return ptid;
1403 }
1404
1405 void
1406 thread_db_target::mourn_inferior ()
1407 {
1408   delete_thread_db_info (inferior_ptid.pid ());
1409
1410   beneath ()->mourn_inferior ();
1411
1412   /* Detach thread_db target ops.  */
1413   if (!thread_db_list)
1414     unpush_target (&the_thread_db_target);
1415 }
1416
1417 struct callback_data
1418 {
1419   struct thread_db_info *info;
1420   int new_threads;
1421 };
1422
1423 static int
1424 find_new_threads_callback (const td_thrhandle_t *th_p, void *data)
1425 {
1426   td_thrinfo_t ti;
1427   td_err_e err;
1428   struct thread_info *tp;
1429   struct callback_data *cb_data = (struct callback_data *) data;
1430   struct thread_db_info *info = cb_data->info;
1431
1432   err = info->td_thr_get_info_p (th_p, &ti);
1433   if (err != TD_OK)
1434     error (_("find_new_threads_callback: cannot get thread info: %s"),
1435            thread_db_err_str (err));
1436
1437   if (ti.ti_lid == -1)
1438     {
1439       /* A thread with kernel thread ID -1 is either a thread that
1440          exited and was joined, or a thread that is being created but
1441          hasn't started yet, and that is reusing the tcb/stack of a
1442          thread that previously exited and was joined.  (glibc marks
1443          terminated and joined threads with kernel thread ID -1.  See
1444          glibc PR17707.  */
1445       if (libthread_db_debug)
1446         fprintf_unfiltered (gdb_stdlog,
1447                             "thread_db: skipping exited and "
1448                             "joined thread (0x%lx)\n",
1449                             (unsigned long) ti.ti_tid);
1450       return 0;
1451     }
1452
1453   if (ti.ti_tid == 0)
1454     {
1455       /* A thread ID of zero means that this is the main thread, but
1456          glibc has not yet initialized thread-local storage and the
1457          pthread library.  We do not know what the thread's TID will
1458          be yet.  */
1459
1460       /* In that case, we're not stopped in a fork syscall and don't
1461          need this glibc bug workaround.  */
1462       info->need_stale_parent_threads_check = 0;
1463
1464       return 0;
1465     }
1466
1467   /* Ignore stale parent threads, caused by glibc/BZ5983.  This is a
1468      bit expensive, as it needs to open /proc/pid/status, so try to
1469      avoid doing the work if we know we don't have to.  */
1470   if (info->need_stale_parent_threads_check)
1471     {
1472       int tgid = linux_proc_get_tgid (ti.ti_lid);
1473
1474       if (tgid != -1 && tgid != info->pid)
1475         return 0;
1476     }
1477
1478   ptid_t ptid (info->pid, ti.ti_lid);
1479   tp = find_thread_ptid (ptid);
1480   if (tp == NULL || tp->priv == NULL)
1481     record_thread (info, tp, ptid, th_p, &ti);
1482
1483   return 0;
1484 }
1485
1486 /* Helper for thread_db_find_new_threads_2.
1487    Returns number of new threads found.  */
1488
1489 static int
1490 find_new_threads_once (struct thread_db_info *info, int iteration,
1491                        td_err_e *errp)
1492 {
1493   struct callback_data data;
1494   td_err_e err = TD_ERR;
1495
1496   data.info = info;
1497   data.new_threads = 0;
1498
1499   /* See comment in thread_db_update_thread_list.  */
1500   gdb_assert (info->td_ta_thr_iter_p != NULL);
1501
1502   TRY
1503     {
1504       /* Iterate over all user-space threads to discover new threads.  */
1505       err = info->td_ta_thr_iter_p (info->thread_agent,
1506                                     find_new_threads_callback,
1507                                     &data,
1508                                     TD_THR_ANY_STATE,
1509                                     TD_THR_LOWEST_PRIORITY,
1510                                     TD_SIGNO_MASK,
1511                                     TD_THR_ANY_USER_FLAGS);
1512     }
1513   CATCH (except, RETURN_MASK_ERROR)
1514     {
1515       if (libthread_db_debug)
1516         {
1517           exception_fprintf (gdb_stdlog, except,
1518                              "Warning: find_new_threads_once: ");
1519         }
1520     }
1521   END_CATCH
1522
1523   if (libthread_db_debug)
1524     {
1525       fprintf_unfiltered (gdb_stdlog,
1526                           _("Found %d new threads in iteration %d.\n"),
1527                           data.new_threads, iteration);
1528     }
1529
1530   if (errp != NULL)
1531     *errp = err;
1532
1533   return data.new_threads;
1534 }
1535
1536 /* Search for new threads, accessing memory through stopped thread
1537    PTID.  If UNTIL_NO_NEW is true, repeat searching until several
1538    searches in a row do not discover any new threads.  */
1539
1540 static void
1541 thread_db_find_new_threads_2 (thread_info *stopped, bool until_no_new)
1542 {
1543   td_err_e err = TD_OK;
1544   struct thread_db_info *info;
1545   int i, loop;
1546
1547   info = get_thread_db_info (stopped->ptid.pid ());
1548
1549   /* Access an lwp we know is stopped.  */
1550   info->proc_handle.thread = stopped;
1551
1552   if (until_no_new)
1553     {
1554       /* Require 4 successive iterations which do not find any new threads.
1555          The 4 is a heuristic: there is an inherent race here, and I have
1556          seen that 2 iterations in a row are not always sufficient to
1557          "capture" all threads.  */
1558       for (i = 0, loop = 0; loop < 4 && err == TD_OK; ++i, ++loop)
1559         if (find_new_threads_once (info, i, &err) != 0)
1560           {
1561             /* Found some new threads.  Restart the loop from beginning.  */
1562             loop = -1;
1563           }
1564     }
1565   else
1566     find_new_threads_once (info, 0, &err);
1567
1568   if (err != TD_OK)
1569     error (_("Cannot find new threads: %s"), thread_db_err_str (err));
1570 }
1571
1572 static void
1573 thread_db_find_new_threads_1 (thread_info *stopped)
1574 {
1575   thread_db_find_new_threads_2 (stopped, 0);
1576 }
1577
1578 /* Implement the to_update_thread_list target method for this
1579    target.  */
1580
1581 void
1582 thread_db_target::update_thread_list ()
1583 {
1584   struct thread_db_info *info;
1585
1586   prune_threads ();
1587
1588   for (inferior *inf : all_inferiors ())
1589     {
1590       struct thread_info *thread;
1591
1592       if (inf->pid == 0)
1593         continue;
1594
1595       info = get_thread_db_info (inf->pid);
1596       if (info == NULL)
1597         continue;
1598
1599       thread = any_live_thread_of_inferior (inf);
1600       if (thread == NULL || thread->executing)
1601         continue;
1602
1603       /* It's best to avoid td_ta_thr_iter if possible.  That walks
1604          data structures in the inferior's address space that may be
1605          corrupted, or, if the target is running, the list may change
1606          while we walk it.  In the latter case, it's possible that a
1607          thread exits just at the exact time that causes GDB to get
1608          stuck in an infinite loop.  To avoid pausing all threads
1609          whenever the core wants to refresh the thread list, we
1610          instead use thread_from_lwp immediately when we see an LWP
1611          stop.  That uses thread_db entry points that do not walk
1612          libpthread's thread list, so should be safe, as well as more
1613          efficient.  */
1614       if (target_has_execution_1 (thread->ptid))
1615         continue;
1616
1617       thread_db_find_new_threads_1 (thread);
1618     }
1619
1620   /* Give the beneath target a chance to do extra processing.  */
1621   this->beneath ()->update_thread_list ();
1622 }
1623
1624 const char *
1625 thread_db_target::pid_to_str (ptid_t ptid)
1626 {
1627   struct thread_info *thread_info = find_thread_ptid (ptid);
1628
1629   if (thread_info != NULL && thread_info->priv != NULL)
1630     {
1631       static char buf[64];
1632       thread_db_thread_info *priv = get_thread_db_thread_info (thread_info);
1633
1634       snprintf (buf, sizeof (buf), "Thread 0x%lx (LWP %ld)",
1635                 (unsigned long) priv->tid, ptid.lwp ());
1636
1637       return buf;
1638     }
1639
1640   return beneath ()->pid_to_str (ptid);
1641 }
1642
1643 /* Return a string describing the state of the thread specified by
1644    INFO.  */
1645
1646 const char *
1647 thread_db_target::extra_thread_info (thread_info *info)
1648 {
1649   if (info->priv == NULL)
1650     return NULL;
1651
1652   thread_db_thread_info *priv = get_thread_db_thread_info (info);
1653
1654   if (priv->dying)
1655     return "Exiting";
1656
1657   return NULL;
1658 }
1659
1660 /* Return pointer to the thread_info struct which corresponds to
1661    THREAD_HANDLE (having length HANDLE_LEN).  */
1662
1663 thread_info *
1664 thread_db_target::thread_handle_to_thread_info (const gdb_byte *thread_handle,
1665                                                 int handle_len,
1666                                                 inferior *inf)
1667 {
1668   thread_t handle_tid;
1669
1670   /* Thread handle sizes must match in order to proceed.  We don't use an
1671      assert here because the resulting internal error will cause GDB to
1672      exit.  This isn't necessarily an internal error due to the possibility
1673      of garbage being passed as the thread handle via the python interface.  */
1674   if (handle_len != sizeof (handle_tid))
1675     error (_("Thread handle size mismatch: %d vs %zu (from libthread_db)"),
1676            handle_len, sizeof (handle_tid));
1677
1678   handle_tid = * (const thread_t *) thread_handle;
1679
1680   for (thread_info *tp : inf->non_exited_threads ())
1681     {
1682       thread_db_thread_info *priv = get_thread_db_thread_info (tp);
1683
1684       if (priv != NULL && handle_tid == priv->tid)
1685         return tp;
1686     }
1687
1688   return NULL;
1689 }
1690
1691 /* Get the address of the thread local variable in load module LM which
1692    is stored at OFFSET within the thread local storage for thread PTID.  */
1693
1694 CORE_ADDR
1695 thread_db_target::get_thread_local_address (ptid_t ptid,
1696                                             CORE_ADDR lm,
1697                                             CORE_ADDR offset)
1698 {
1699   struct thread_info *thread_info;
1700
1701   /* Find the matching thread.  */
1702   thread_info = find_thread_ptid (ptid);
1703
1704   /* We may not have discovered the thread yet.  */
1705   if (thread_info != NULL && thread_info->priv == NULL)
1706     thread_info = thread_from_lwp (thread_info, ptid);
1707
1708   if (thread_info != NULL && thread_info->priv != NULL)
1709     {
1710       td_err_e err;
1711       psaddr_t address;
1712       thread_db_info *info = get_thread_db_info (ptid.pid ());
1713       thread_db_thread_info *priv = get_thread_db_thread_info (thread_info);
1714
1715       /* Finally, get the address of the variable.  */
1716       if (lm != 0)
1717         {
1718           /* glibc doesn't provide the needed interface.  */
1719           if (!info->td_thr_tls_get_addr_p)
1720             throw_error (TLS_NO_LIBRARY_SUPPORT_ERROR,
1721                          _("No TLS library support"));
1722
1723           /* Note the cast through uintptr_t: this interface only works if
1724              a target address fits in a psaddr_t, which is a host pointer.
1725              So a 32-bit debugger can not access 64-bit TLS through this.  */
1726           err = info->td_thr_tls_get_addr_p (&priv->th,
1727                                              (psaddr_t)(uintptr_t) lm,
1728                                              offset, &address);
1729         }
1730       else
1731         {
1732           /* If glibc doesn't provide the needed interface throw an error
1733              that LM is zero - normally cases it should not be.  */
1734           if (!info->td_thr_tlsbase_p)
1735             throw_error (TLS_LOAD_MODULE_NOT_FOUND_ERROR,
1736                          _("TLS load module not found"));
1737
1738           /* This code path handles the case of -static -pthread executables:
1739              https://sourceware.org/ml/libc-help/2014-03/msg00024.html
1740              For older GNU libc r_debug.r_map is NULL.  For GNU libc after
1741              PR libc/16831 due to GDB PR threads/16954 LOAD_MODULE is also NULL.
1742              The constant number 1 depends on GNU __libc_setup_tls
1743              initialization of l_tls_modid to 1.  */
1744           err = info->td_thr_tlsbase_p (&priv->th, 1, &address);
1745           address = (char *) address + offset;
1746         }
1747
1748 #ifdef THREAD_DB_HAS_TD_NOTALLOC
1749       /* The memory hasn't been allocated, yet.  */
1750       if (err == TD_NOTALLOC)
1751           /* Now, if libthread_db provided the initialization image's
1752              address, we *could* try to build a non-lvalue value from
1753              the initialization image.  */
1754         throw_error (TLS_NOT_ALLOCATED_YET_ERROR,
1755                      _("TLS not allocated yet"));
1756 #endif
1757
1758       /* Something else went wrong.  */
1759       if (err != TD_OK)
1760         throw_error (TLS_GENERIC_ERROR,
1761                      (("%s")), thread_db_err_str (err));
1762
1763       /* Cast assuming host == target.  Joy.  */
1764       /* Do proper sign extension for the target.  */
1765       gdb_assert (exec_bfd);
1766       return (bfd_get_sign_extend_vma (exec_bfd) > 0
1767               ? (CORE_ADDR) (intptr_t) address
1768               : (CORE_ADDR) (uintptr_t) address);
1769     }
1770
1771   return beneath ()->get_thread_local_address (ptid, lm, offset);
1772 }
1773
1774 /* Implement the to_get_ada_task_ptid target method for this target.  */
1775
1776 ptid_t
1777 thread_db_target::get_ada_task_ptid (long lwp, long thread)
1778 {
1779   /* NPTL uses a 1:1 model, so the LWP id suffices.  */
1780   return ptid_t (inferior_ptid.pid (), lwp, 0);
1781 }
1782
1783 void
1784 thread_db_target::resume (ptid_t ptid, int step, enum gdb_signal signo)
1785 {
1786   struct thread_db_info *info;
1787
1788   if (ptid == minus_one_ptid)
1789     info = get_thread_db_info (inferior_ptid.pid ());
1790   else
1791     info = get_thread_db_info (ptid.pid ());
1792
1793   /* This workaround is only needed for child fork lwps stopped in a
1794      PTRACE_O_TRACEFORK event.  When the inferior is resumed, the
1795      workaround can be disabled.  */
1796   if (info)
1797     info->need_stale_parent_threads_check = 0;
1798
1799   beneath ()->resume (ptid, step, signo);
1800 }
1801
1802 /* std::sort helper function for info_auto_load_libthread_db, sort the
1803    thread_db_info pointers primarily by their FILENAME and secondarily by their
1804    PID, both in ascending order.  */
1805
1806 static bool
1807 info_auto_load_libthread_db_compare (const struct thread_db_info *a,
1808                                      const struct thread_db_info *b)
1809 {
1810   int retval;
1811
1812   retval = strcmp (a->filename, b->filename);
1813   if (retval)
1814     return retval < 0;
1815
1816   return a->pid < b->pid;
1817 }
1818
1819 /* Implement 'info auto-load libthread-db'.  */
1820
1821 static void
1822 info_auto_load_libthread_db (const char *args, int from_tty)
1823 {
1824   struct ui_out *uiout = current_uiout;
1825   const char *cs = args ? args : "";
1826   struct thread_db_info *info;
1827   unsigned unique_filenames;
1828   size_t max_filename_len, pids_len;
1829   int i;
1830
1831   cs = skip_spaces (cs);
1832   if (*cs)
1833     error (_("'info auto-load libthread-db' does not accept any parameters"));
1834
1835   std::vector<struct thread_db_info *> array;
1836   for (info = thread_db_list; info; info = info->next)
1837     if (info->filename != NULL)
1838       array.push_back (info);
1839
1840   /* Sort ARRAY by filenames and PIDs.  */
1841   std::sort (array.begin (), array.end (),
1842              info_auto_load_libthread_db_compare);
1843
1844   /* Calculate the number of unique filenames (rows) and the maximum string
1845      length of PIDs list for the unique filenames (columns).  */
1846
1847   unique_filenames = 0;
1848   max_filename_len = 0;
1849   pids_len = 0;
1850   for (i = 0; i < array.size (); i++)
1851     {
1852       int pid = array[i]->pid;
1853       size_t this_pid_len;
1854
1855       for (this_pid_len = 0; pid != 0; pid /= 10)
1856         this_pid_len++;
1857
1858       if (i == 0 || strcmp (array[i - 1]->filename, array[i]->filename) != 0)
1859         {
1860           unique_filenames++;
1861           max_filename_len = std::max (max_filename_len,
1862                                        strlen (array[i]->filename));
1863
1864           if (i > 0)
1865             pids_len -= strlen (", ");
1866           pids_len = 0;
1867         }
1868       pids_len += this_pid_len + strlen (", ");
1869     }
1870   if (i)
1871     pids_len -= strlen (", ");
1872
1873   /* Table header shifted right by preceding "libthread-db:  " would not match
1874      its columns.  */
1875   if (array.size () > 0 && args == auto_load_info_scripts_pattern_nl)
1876     uiout->text ("\n");
1877
1878   {
1879     ui_out_emit_table table_emitter (uiout, 2, unique_filenames,
1880                                      "LinuxThreadDbTable");
1881
1882     uiout->table_header (max_filename_len, ui_left, "filename", "Filename");
1883     uiout->table_header (pids_len, ui_left, "PIDs", "Pids");
1884     uiout->table_body ();
1885
1886     /* Note I is incremented inside the cycle, not at its end.  */
1887     for (i = 0; i < array.size ();)
1888       {
1889         ui_out_emit_tuple tuple_emitter (uiout, NULL);
1890
1891         info = array[i];
1892         uiout->field_string ("filename", info->filename);
1893
1894         std::string pids;
1895         while (i < array.size () && strcmp (info->filename,
1896                                             array[i]->filename) == 0)
1897           {
1898             if (!pids.empty ())
1899               pids += ", ";
1900             string_appendf (pids, "%u", array[i]->pid);
1901             i++;
1902           }
1903
1904         uiout->field_string ("pids", pids.c_str ());
1905
1906         uiout->text ("\n");
1907       }
1908   }
1909
1910   if (array.empty ())
1911     uiout->message (_("No auto-loaded libthread-db.\n"));
1912 }
1913
1914 /* Implement 'maintenance check libthread-db'.  */
1915
1916 static void
1917 maintenance_check_libthread_db (const char *args, int from_tty)
1918 {
1919   int inferior_pid = inferior_ptid.pid ();
1920   struct thread_db_info *info;
1921
1922   if (inferior_pid == 0)
1923     error (_("No inferior running"));
1924
1925   info = get_thread_db_info (inferior_pid);
1926   if (info == NULL)
1927     error (_("No libthread_db loaded"));
1928
1929   check_thread_db (info, true);
1930 }
1931
1932 void
1933 _initialize_thread_db (void)
1934 {
1935   /* Defer loading of libthread_db.so until inferior is running.
1936      This allows gdb to load correct libthread_db for a given
1937      executable -- there could be multiple versions of glibc,
1938      and until there is a running inferior, we can't tell which
1939      libthread_db is the correct one to load.  */
1940
1941   libthread_db_search_path = xstrdup (LIBTHREAD_DB_SEARCH_PATH);
1942
1943   add_setshow_optional_filename_cmd ("libthread-db-search-path",
1944                                      class_support,
1945                                      &libthread_db_search_path, _("\
1946 Set search path for libthread_db."), _("\
1947 Show the current search path or libthread_db."), _("\
1948 This path is used to search for libthread_db to be loaded into \
1949 gdb itself.\n\
1950 Its value is a colon (':') separate list of directories to search.\n\
1951 Setting the search path to an empty list resets it to its default value."),
1952                             set_libthread_db_search_path,
1953                             NULL,
1954                             &setlist, &showlist);
1955
1956   add_setshow_zuinteger_cmd ("libthread-db", class_maintenance,
1957                              &libthread_db_debug, _("\
1958 Set libthread-db debugging."), _("\
1959 Show libthread-db debugging."), _("\
1960 When non-zero, libthread-db debugging is enabled."),
1961                              NULL,
1962                              show_libthread_db_debug,
1963                              &setdebuglist, &showdebuglist);
1964
1965   add_setshow_boolean_cmd ("libthread-db", class_support,
1966                            &auto_load_thread_db, _("\
1967 Enable or disable auto-loading of inferior specific libthread_db."), _("\
1968 Show whether auto-loading inferior specific libthread_db is enabled."), _("\
1969 If enabled, libthread_db will be searched in 'set libthread-db-search-path'\n\
1970 locations to load libthread_db compatible with the inferior.\n\
1971 Standard system libthread_db still gets loaded even with this option off.\n\
1972 This options has security implications for untrusted inferiors."),
1973                            NULL, show_auto_load_thread_db,
1974                            auto_load_set_cmdlist_get (),
1975                            auto_load_show_cmdlist_get ());
1976
1977   add_cmd ("libthread-db", class_info, info_auto_load_libthread_db,
1978            _("Print the list of loaded inferior specific libthread_db.\n\
1979 Usage: info auto-load libthread-db"),
1980            auto_load_info_cmdlist_get ());
1981
1982   add_cmd ("libthread-db", class_maintenance,
1983            maintenance_check_libthread_db, _("\
1984 Run integrity checks on the current inferior's libthread_db."),
1985            &maintenancechecklist);
1986
1987   add_setshow_boolean_cmd ("check-libthread-db",
1988                            class_maintenance,
1989                            &check_thread_db_on_load, _("\
1990 Set whether to check libthread_db at load time."), _("\
1991 Show whether to check libthread_db at load time."), _("\
1992 If enabled GDB will run integrity checks on inferior specific libthread_db\n\
1993 as they are loaded."),
1994                            NULL,
1995                            NULL,
1996                            &maintenance_set_cmdlist,
1997                            &maintenance_show_cmdlist);
1998
1999   /* Add ourselves to objfile event chain.  */
2000   gdb::observers::new_objfile.attach (thread_db_new_objfile);
2001
2002   /* Add ourselves to inferior_created event chain.
2003      This is needed to handle debugging statically linked programs where
2004      the new_objfile observer won't get called for libpthread.  */
2005   gdb::observers::inferior_created.attach (thread_db_inferior_created);
2006 }