gdb: LoongArch: Remove nonportable #include
[binutils-gdb.git] / gdb / linux-thread-db.c
index bfb3bd64323f2e6be7808f80d0700a9eab929aa1..11da82a1abc7c4c321a4f3aae46864587a202113 100644 (file)
@@ -1,6 +1,6 @@
 /* libthread_db assisted debugging support, generic parts.
 
-   Copyright (C) 1999-2021 Free Software Foundation, Inc.
+   Copyright (C) 1999-2022 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -110,7 +110,7 @@ public:
   gdb::byte_vector thread_info_to_thread_handle (struct thread_info *) override;
 };
 
-static char *libthread_db_search_path;
+static std::string libthread_db_search_path = LIBTHREAD_DB_SEARCH_PATH;
 
 /* Set to true if thread_db auto-loading is enabled
    by the "set auto-load libthread-db" command.  */
@@ -126,20 +126,17 @@ static void
 show_auto_load_thread_db (struct ui_file *file, int from_tty,
                          struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("Auto-loading of inferior specific libthread_db "
-                           "is %s.\n"),
-                   value);
+  gdb_printf (file, _("Auto-loading of inferior specific libthread_db "
+                     "is %s.\n"),
+             value);
 }
 
 static void
 set_libthread_db_search_path (const char *ignored, int from_tty,
                              struct cmd_list_element *c)
 {
-  if (*libthread_db_search_path == '\0')
-    {
-      xfree (libthread_db_search_path);
-      libthread_db_search_path = xstrdup (LIBTHREAD_DB_SEARCH_PATH);
-    }
+  if (libthread_db_search_path.empty ())
+    libthread_db_search_path = LIBTHREAD_DB_SEARCH_PATH;
 }
 
 /* If non-zero, print details of libthread_db processing.  */
@@ -150,7 +147,7 @@ static void
 show_libthread_db_debug (struct ui_file *file, int from_tty,
                         struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("libthread-db debugging is %s.\n"), value);
+  gdb_printf (file, _("libthread-db debugging is %s.\n"), value);
 }
 
 /* If we're running on GNU/Linux, we must explicitly attach to any new
@@ -477,7 +474,7 @@ inferior_has_bug (const char *ver_symbol, int ver_major_min, int ver_minor_min)
   if (version_msym.minsym == NULL)
     return 0;
 
-  version_addr = BMSYMBOL_VALUE_ADDRESS (version_msym);
+  version_addr = version_msym.value_address ();
   gdb::unique_xmalloc_ptr<char> version
     = target_read_string (version_addr, 32, &got);
   if (version != nullptr
@@ -781,7 +778,7 @@ check_thread_db (struct thread_db_info *info, bool log_progress)
   catch (const gdb_exception_error &except)
     {
       if (warning_pre_print)
-       fputs_unfiltered (warning_pre_print, gdb_stderr);
+       gdb_puts (warning_pre_print, gdb_stderr);
 
       exception_fprintf (gdb_stderr, except,
                         _("libthread_db integrity checks failed: "));
@@ -864,8 +861,8 @@ try_thread_db_load_1 (struct thread_db_info *info)
   if (err != TD_OK)
     {
       if (libthread_db_debug)
-       fprintf_unfiltered (gdb_stdlog, _("td_ta_new failed: %s\n"),
-                           thread_db_err_str (err));
+       gdb_printf (gdb_stdlog, _("td_ta_new failed: %s\n"),
+                   thread_db_err_str (err));
       else
        switch (err)
          {
@@ -920,13 +917,12 @@ try_thread_db_load_1 (struct thread_db_info *info)
 
   if (info->td_ta_thr_iter_p == NULL)
     {
-      struct lwp_info *lp;
       int pid = inferior_ptid.pid ();
       thread_info *curr_thread = inferior_thread ();
 
       linux_stop_and_wait_all_lwps ();
 
-      ALL_LWPS (lp)
+      for (const lwp_info *lp : all_lwps ())
        if (lp->ptid.pid () == pid)
          thread_from_lwp (curr_thread, lp->ptid);
 
@@ -940,25 +936,18 @@ try_thread_db_load_1 (struct thread_db_info *info)
       return false;
     }
 
-  printf_unfiltered (_("[Thread debugging using libthread_db enabled]\n"));
+  gdb_printf (_("[Thread debugging using libthread_db enabled]\n"));
 
-  if (*libthread_db_search_path || libthread_db_debug)
+  if (!libthread_db_search_path.empty () || libthread_db_debug)
     {
-      struct ui_file *file;
       const char *library;
 
       library = dladdr_to_soname ((const void *) *info->td_ta_new_p);
       if (library == NULL)
        library = LIBTHREAD_DB_SO;
 
-      /* If we'd print this to gdb_stdout when debug output is
-        disabled, still print it to gdb_stdout if debug output is
-        enabled.  User visible output should not depend on debug
-        settings.  */
-      file = *libthread_db_search_path != '\0' ? gdb_stdout : gdb_stdlog;
-      fprintf_unfiltered (file,
-                         _("Using host libthread_db library \"%ps\".\n"),
-                         styled_string (file_name_style.style (), library));
+      gdb_printf (_("Using host libthread_db library \"%ps\".\n"),
+                 styled_string (file_name_style.style (), library));
     }
 
   /* The thread library was detected.  Activate the thread_db target
@@ -977,9 +966,9 @@ try_thread_db_load (const char *library, bool check_auto_load_safe)
   struct thread_db_info *info;
 
   if (libthread_db_debug)
-    fprintf_unfiltered (gdb_stdlog,
-                       _("Trying host libthread_db library: %s.\n"),
-                       library);
+    gdb_printf (gdb_stdlog,
+               _("Trying host libthread_db library: %s.\n"),
+               library);
 
   if (check_auto_load_safe)
     {
@@ -988,8 +977,8 @@ try_thread_db_load (const char *library, bool check_auto_load_safe)
          /* Do not print warnings by file_is_auto_load_safe if the library does
             not exist at this place.  */
          if (libthread_db_debug)
-           fprintf_unfiltered (gdb_stdlog, _("open failed: %s.\n"),
-                               safe_strerror (errno));
+           gdb_printf (gdb_stdlog, _("open failed: %s.\n"),
+                       safe_strerror (errno));
          return false;
        }
 
@@ -1005,7 +994,7 @@ try_thread_db_load (const char *library, bool check_auto_load_safe)
   if (handle == NULL)
     {
       if (libthread_db_debug)
-       fprintf_unfiltered (gdb_stdlog, _("dlopen failed: %s.\n"), dlerror ());
+       gdb_printf (gdb_stdlog, _("dlopen failed: %s.\n"), dlerror ());
       return false;
     }
 
@@ -1019,8 +1008,8 @@ try_thread_db_load (const char *library, bool check_auto_load_safe)
          const char *const libpath = dladdr_to_soname (td_init);
 
          if (libpath != NULL)
-           fprintf_unfiltered (gdb_stdlog, _("Host %s resolved to: %s.\n"),
-                              library, libpath);
+           gdb_printf (gdb_stdlog, _("Host %s resolved to: %s.\n"),
+                       library, libpath);
        }
     }
 
@@ -1143,7 +1132,7 @@ thread_db_load_search (void)
   bool rc = false;
 
   std::vector<gdb::unique_xmalloc_ptr<char>> dir_vec
-    = dirnames_to_char_ptr_vec (libthread_db_search_path);
+    = dirnames_to_char_ptr_vec (libthread_db_search_path.c_str ());
 
   for (const gdb::unique_xmalloc_ptr<char> &this_dir_up : dir_vec)
     {
@@ -1188,8 +1177,8 @@ thread_db_load_search (void)
     }
 
   if (libthread_db_debug)
-    fprintf_unfiltered (gdb_stdlog,
-                       _("thread_db_load_search returning %d\n"), rc);
+    gdb_printf (gdb_stdlog,
+               _("thread_db_load_search returning %d\n"), rc);
   return rc;
 }
 
@@ -1411,7 +1400,7 @@ thread_db_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus,
 
   ptid = beneath->wait (ptid, ourstatus, options);
 
-  switch (ourstatus->kind)
+  switch (ourstatus->kind ())
     {
     case TARGET_WAITKIND_IGNORE:
     case TARGET_WAITKIND_EXITED:
@@ -1489,10 +1478,10 @@ find_new_threads_callback (const td_thrhandle_t *th_p, void *data)
         terminated and joined threads with kernel thread ID -1.  See
         glibc PR17707.  */
       if (libthread_db_debug)
-       fprintf_unfiltered (gdb_stdlog,
-                           "thread_db: skipping exited and "
-                           "joined thread (0x%lx)\n",
-                           (unsigned long) ti.ti_tid);
+       gdb_printf (gdb_stdlog,
+                   "thread_db: skipping exited and "
+                   "joined thread (0x%lx)\n",
+                   (unsigned long) ti.ti_tid);
       return 0;
     }
 
@@ -1567,9 +1556,9 @@ find_new_threads_once (struct thread_db_info *info, int iteration,
 
   if (libthread_db_debug)
     {
-      fprintf_unfiltered (gdb_stdlog,
-                         _("Found %d new threads in iteration %d.\n"),
-                         data.new_threads, iteration);
+      gdb_printf (gdb_stdlog,
+                 _("Found %d new threads in iteration %d.\n"),
+                 data.new_threads, iteration);
     }
 
   if (errp != NULL)
@@ -1955,7 +1944,8 @@ info_auto_load_libthread_db (const char *args, int from_tty)
        ui_out_emit_tuple tuple_emitter (uiout, NULL);
 
        info = array[i];
-       uiout->field_string ("filename", info->filename);
+       uiout->field_string ("filename", info->filename,
+                            file_name_style.style ());
 
        std::string pids;
        while (i < array.size () && strcmp (info->filename,
@@ -2006,8 +1996,6 @@ _initialize_thread_db ()
      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);
-
   add_setshow_optional_filename_cmd ("libthread-db-search-path",
                                     class_support,
                                     &libthread_db_search_path, _("\