linux-thread-db.c: use bool where possible in thread_db code

I happened to be looking at this code and noticed we could replace ints
by bools at a few places.

gdb/ChangeLog:

	* linux-thread-db.c (try_thread_db_load_1): Change return type
	to bool.
	(try_thread_db_load): Likewise.
	(try_thread_db_load_from_pdir_1): Likewise.
	(try_thread_db_load_from_pdir): Likewise.
	(try_thread_db_load_from_sdir): Likewise.
	(try_thread_db_load_from_dir): Likewise.
	(thread_db_load_search): Likewise.
	(has_libpthread): Likewise.
	(thread_db_load): Likewise.
This commit is contained in:
Simon Marchi
2019-05-15 11:20:16 -04:00
parent 95008a8828
commit 9ddc1af18c
2 changed files with 54 additions and 41 deletions

View File

@ -1,3 +1,16 @@
2019-05-15 Simon Marchi <simon.marchi@efficios.com>
* linux-thread-db.c (try_thread_db_load_1): Change return type
to bool.
(try_thread_db_load): Likewise.
(try_thread_db_load_from_pdir_1): Likewise.
(try_thread_db_load_from_pdir): Likewise.
(try_thread_db_load_from_sdir): Likewise.
(try_thread_db_load_from_dir): Likewise.
(thread_db_load_search): Likewise.
(has_libpthread): Likewise.
(thread_db_load): Likewise.
2019-05-15 Sergio Durigan Junior <sergiodj@redhat.com> 2019-05-15 Sergio Durigan Junior <sergiodj@redhat.com>
Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1708192 Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1708192

View File

@ -795,12 +795,12 @@ check_thread_db (struct thread_db_info *info, bool log_progress)
} }
/* Attempt to initialize dlopen()ed libthread_db, described by INFO. /* Attempt to initialize dlopen()ed libthread_db, described by INFO.
Return 1 on success. Return true on success.
Failure could happen if libthread_db does not have symbols we expect, Failure could happen if libthread_db does not have symbols we expect,
or when it refuses to work with the current inferior (e.g. due to or when it refuses to work with the current inferior (e.g. due to
version mismatch between libthread_db and libpthread). */ version mismatch between libthread_db and libpthread). */
static int static bool
try_thread_db_load_1 (struct thread_db_info *info) try_thread_db_load_1 (struct thread_db_info *info)
{ {
td_err_e err; td_err_e err;
@ -818,7 +818,7 @@ try_thread_db_load_1 (struct thread_db_info *info)
do \ do \
{ \ { \
if ((a) == NULL) \ if ((a) == NULL) \
return 0; \ return false; \
} while (0) } while (0)
CHK (TDB_VERBOSE_DLSYM (info, td_init)); CHK (TDB_VERBOSE_DLSYM (info, td_init));
@ -828,7 +828,7 @@ try_thread_db_load_1 (struct thread_db_info *info)
{ {
warning (_("Cannot initialize libthread_db: %s"), warning (_("Cannot initialize libthread_db: %s"),
thread_db_err_str (err)); thread_db_err_str (err));
return 0; return false;
} }
CHK (TDB_VERBOSE_DLSYM (info, td_ta_new)); CHK (TDB_VERBOSE_DLSYM (info, td_ta_new));
@ -857,7 +857,7 @@ try_thread_db_load_1 (struct thread_db_info *info)
default: default:
warning (_("td_ta_new failed: %s"), thread_db_err_str (err)); warning (_("td_ta_new failed: %s"), thread_db_err_str (err));
} }
return 0; return false;
} }
/* These are essential. */ /* These are essential. */
@ -892,7 +892,7 @@ try_thread_db_load_1 (struct thread_db_info *info)
if (check_thread_db_on_load) if (check_thread_db_on_load)
{ {
if (!check_thread_db (info, libthread_db_debug)) if (!check_thread_db (info, libthread_db_debug))
return 0; return false;
} }
if (info->td_ta_thr_iter_p == NULL) if (info->td_ta_thr_iter_p == NULL)
@ -914,7 +914,7 @@ try_thread_db_load_1 (struct thread_db_info *info)
/* Even if libthread_db initializes, if the thread list is /* Even if libthread_db initializes, if the thread list is
corrupted, we'd not manage to list any threads. Better reject this corrupted, we'd not manage to list any threads. Better reject this
thread_db, and fall back to at least listing LWPs. */ thread_db, and fall back to at least listing LWPs. */
return 0; return false;
} }
printf_unfiltered (_("[Thread debugging using libthread_db enabled]\n")); printf_unfiltered (_("[Thread debugging using libthread_db enabled]\n"));
@ -942,14 +942,14 @@ try_thread_db_load_1 (struct thread_db_info *info)
if (thread_db_list->next == NULL) if (thread_db_list->next == NULL)
push_target (&the_thread_db_target); push_target (&the_thread_db_target);
return 1; return true;
} }
/* Attempt to use LIBRARY as libthread_db. LIBRARY could be absolute, /* Attempt to use LIBRARY as libthread_db. LIBRARY could be absolute,
relative, or just LIBTHREAD_DB. */ relative, or just LIBTHREAD_DB. */
static int static bool
try_thread_db_load (const char *library, int check_auto_load_safe) try_thread_db_load (const char *library, bool check_auto_load_safe)
{ {
void *handle; void *handle;
struct thread_db_info *info; struct thread_db_info *info;
@ -968,14 +968,14 @@ try_thread_db_load (const char *library, int check_auto_load_safe)
if (libthread_db_debug) if (libthread_db_debug)
fprintf_unfiltered (gdb_stdlog, _("open failed: %s.\n"), fprintf_unfiltered (gdb_stdlog, _("open failed: %s.\n"),
safe_strerror (errno)); safe_strerror (errno));
return 0; return false;
} }
if (!file_is_auto_load_safe (library, _("auto-load: Loading libthread-db " if (!file_is_auto_load_safe (library, _("auto-load: Loading libthread-db "
"library \"%s\" from explicit " "library \"%s\" from explicit "
"directory.\n"), "directory.\n"),
library)) library))
return 0; return false;
} }
handle = dlopen (library, RTLD_NOW); handle = dlopen (library, RTLD_NOW);
@ -983,7 +983,7 @@ try_thread_db_load (const char *library, int check_auto_load_safe)
{ {
if (libthread_db_debug) if (libthread_db_debug)
fprintf_unfiltered (gdb_stdlog, _("dlopen failed: %s.\n"), dlerror ()); fprintf_unfiltered (gdb_stdlog, _("dlopen failed: %s.\n"), dlerror ());
return 0; return false;
} }
if (libthread_db_debug && strchr (library, '/') == NULL) if (libthread_db_debug && strchr (library, '/') == NULL)
@ -1008,11 +1008,11 @@ try_thread_db_load (const char *library, int check_auto_load_safe)
info->filename = gdb_realpath (library).release (); info->filename = gdb_realpath (library).release ();
if (try_thread_db_load_1 (info)) if (try_thread_db_load_1 (info))
return 1; return true;
/* This library "refused" to work on current inferior. */ /* This library "refused" to work on current inferior. */
delete_thread_db_info (inferior_ptid.pid ()); delete_thread_db_info (inferior_ptid.pid ());
return 0; return false;
} }
/* Subroutine of try_thread_db_load_from_pdir to simplify it. /* Subroutine of try_thread_db_load_from_pdir to simplify it.
@ -1020,7 +1020,7 @@ try_thread_db_load (const char *library, int check_auto_load_safe)
SUBDIR may be NULL. It may also be something like "../lib64". SUBDIR may be NULL. It may also be something like "../lib64".
The result is true for success. */ The result is true for success. */
static int static bool
try_thread_db_load_from_pdir_1 (struct objfile *obj, const char *subdir) try_thread_db_load_from_pdir_1 (struct objfile *obj, const char *subdir)
{ {
const char *obj_name = objfile_name (obj); const char *obj_name = objfile_name (obj);
@ -1029,7 +1029,7 @@ try_thread_db_load_from_pdir_1 (struct objfile *obj, const char *subdir)
{ {
warning (_("Expected absolute pathname for libpthread in the" warning (_("Expected absolute pathname for libpthread in the"
" inferior, but got %s."), obj_name); " inferior, but got %s."), obj_name);
return 0; return false;
} }
std::string path = obj_name; std::string path = obj_name;
@ -1041,7 +1041,7 @@ try_thread_db_load_from_pdir_1 (struct objfile *obj, const char *subdir)
path = path + subdir + "/"; path = path + subdir + "/";
path += LIBTHREAD_DB_SO; path += LIBTHREAD_DB_SO;
return try_thread_db_load (path.c_str (), 1); return try_thread_db_load (path.c_str (), true);
} }
/* Handle $pdir in libthread-db-search-path. /* Handle $pdir in libthread-db-search-path.
@ -1049,17 +1049,17 @@ try_thread_db_load_from_pdir_1 (struct objfile *obj, const char *subdir)
SUBDIR may be NULL. It may also be something like "../lib64". SUBDIR may be NULL. It may also be something like "../lib64".
The result is true for success. */ The result is true for success. */
static int static bool
try_thread_db_load_from_pdir (const char *subdir) try_thread_db_load_from_pdir (const char *subdir)
{ {
if (!auto_load_thread_db) if (!auto_load_thread_db)
return 0; return false;
for (objfile *obj : current_program_space->objfiles ()) for (objfile *obj : current_program_space->objfiles ())
if (libpthread_name_p (objfile_name (obj))) if (libpthread_name_p (objfile_name (obj)))
{ {
if (try_thread_db_load_from_pdir_1 (obj, subdir)) if (try_thread_db_load_from_pdir_1 (obj, subdir))
return 1; return true;
/* We may have found the separate-debug-info version of /* We may have found the separate-debug-info version of
libpthread, and it may live in a directory without a matching libpthread, and it may live in a directory without a matching
@ -1068,10 +1068,10 @@ try_thread_db_load_from_pdir (const char *subdir)
return try_thread_db_load_from_pdir_1 (obj->separate_debug_objfile_backlink, return try_thread_db_load_from_pdir_1 (obj->separate_debug_objfile_backlink,
subdir); subdir);
return 0; return false;
} }
return 0; return false;
} }
/* Handle $sdir in libthread-db-search-path. /* Handle $sdir in libthread-db-search-path.
@ -1079,34 +1079,34 @@ try_thread_db_load_from_pdir (const char *subdir)
dlopen(file_without_path) will look. dlopen(file_without_path) will look.
The result is true for success. */ The result is true for success. */
static int static bool
try_thread_db_load_from_sdir (void) try_thread_db_load_from_sdir (void)
{ {
return try_thread_db_load (LIBTHREAD_DB_SO, 0); return try_thread_db_load (LIBTHREAD_DB_SO, false);
} }
/* Try to load libthread_db from directory DIR of length DIR_LEN. /* Try to load libthread_db from directory DIR of length DIR_LEN.
The result is true for success. */ The result is true for success. */
static int static bool
try_thread_db_load_from_dir (const char *dir, size_t dir_len) try_thread_db_load_from_dir (const char *dir, size_t dir_len)
{ {
if (!auto_load_thread_db) if (!auto_load_thread_db)
return 0; return false;
std::string path = std::string (dir, dir_len) + "/" + LIBTHREAD_DB_SO; std::string path = std::string (dir, dir_len) + "/" + LIBTHREAD_DB_SO;
return try_thread_db_load (path.c_str (), 1); return try_thread_db_load (path.c_str (), true);
} }
/* Search libthread_db_search_path for libthread_db which "agrees" /* Search libthread_db_search_path for libthread_db which "agrees"
to work on current inferior. to work on current inferior.
The result is true for success. */ The result is true for success. */
static int static bool
thread_db_load_search (void) thread_db_load_search (void)
{ {
int rc = 0; bool rc = false;
std::vector<gdb::unique_xmalloc_ptr<char>> dir_vec 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);
@ -1159,22 +1159,22 @@ thread_db_load_search (void)
return rc; return rc;
} }
/* Return non-zero if the inferior has a libpthread. */ /* Return true if the inferior has a libpthread. */
static int static bool
has_libpthread (void) has_libpthread (void)
{ {
for (objfile *obj : current_program_space->objfiles ()) for (objfile *obj : current_program_space->objfiles ())
if (libpthread_name_p (objfile_name (obj))) if (libpthread_name_p (objfile_name (obj)))
return 1; return true;
return 0; return false;
} }
/* Attempt to load and initialize libthread_db. /* Attempt to load and initialize libthread_db.
Return 1 on success. */ Return 1 on success. */
static int static bool
thread_db_load (void) thread_db_load (void)
{ {
struct thread_db_info *info; struct thread_db_info *info;
@ -1182,19 +1182,19 @@ thread_db_load (void)
info = get_thread_db_info (inferior_ptid.pid ()); info = get_thread_db_info (inferior_ptid.pid ());
if (info != NULL) if (info != NULL)
return 1; return true;
/* Don't attempt to use thread_db on executables not running /* Don't attempt to use thread_db on executables not running
yet. */ yet. */
if (!target_has_registers) if (!target_has_registers)
return 0; return false;
/* Don't attempt to use thread_db for remote targets. */ /* Don't attempt to use thread_db for remote targets. */
if (!(target_can_run () || core_bfd)) if (!(target_can_run () || core_bfd))
return 0; return false;
if (thread_db_load_search ()) if (thread_db_load_search ())
return 1; return true;
/* We couldn't find a libthread_db. /* We couldn't find a libthread_db.
If the inferior has a libpthread warn the user. */ If the inferior has a libpthread warn the user. */
@ -1202,13 +1202,13 @@ thread_db_load (void)
{ {
warning (_("Unable to find libthread_db matching inferior's thread" warning (_("Unable to find libthread_db matching inferior's thread"
" library, thread debugging will not be available.")); " library, thread debugging will not be available."));
return 0; return false;
} }
/* Either this executable isn't using libpthread at all, or it is /* Either this executable isn't using libpthread at all, or it is
statically linked. Since we can't easily distinguish these two cases, statically linked. Since we can't easily distinguish these two cases,
no warning is issued. */ no warning is issued. */
return 0; return false;
} }
static void static void