From patchwork Wed May 15 15:22:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 32699 Received: (qmail 70584 invoked by alias); 15 May 2019 15:22:18 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 70517 invoked by uid 89); 15 May 2019 15:22:18 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-21.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy=objfile_name X-HELO: mail.efficios.com Received: from mail.efficios.com (HELO mail.efficios.com) (167.114.142.138) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 15 May 2019 15:22:15 +0000 Received: from localhost (ip6-localhost [IPv6:::1]) by mail.efficios.com (Postfix) with ESMTP id 784A41C915F for ; Wed, 15 May 2019 11:22:13 -0400 (EDT) Received: from mail.efficios.com ([IPv6:::1]) by localhost (mail02.efficios.com [IPv6:::1]) (amavisd-new, port 10032) with ESMTP id 1NH0H734j8qf; Wed, 15 May 2019 11:22:13 -0400 (EDT) Received: from localhost (ip6-localhost [IPv6:::1]) by mail.efficios.com (Postfix) with ESMTP id F09331C915B; Wed, 15 May 2019 11:22:12 -0400 (EDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.efficios.com F09331C915B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficios.com; s=default; t=1557933733; bh=utaoR45qucSGrCemZXyufAqHZ7TeOJfKmmowJi4IV24=; h=From:To:Date:Message-Id:MIME-Version; b=tZdw2L2dtsULk9xqi2mHXD7xSAbUmCWPnPWgsqh204c2N6CDyo/KXLBZ3BCLi1noT IvsGGJZ8jtI0KqUwVa+EzFgkM1anoDevolwR7zn/yEPTwBbt3fDs8ZdCYxaQCLOpXo Lawc/P77ezY4tAhxGvt3JuRv4vKvQxHgNmBBoQ3IrkqKtZBT3kSK0ETxe3dwxKpQgH KU4Rjz34btj3slAGxUuM20RJjyabiDyQ6Jeb7bDcz5NB6XVQ4r6PlCn+RoSSpl5vkG 3JKL/bVoTocKP822HB7lD2qdTM6RoGL5Vhml/8HcA9uF+fLR0wWc/on9AZtzQTCT8e sQmEaBxfNg/EA== Received: from mail.efficios.com ([IPv6:::1]) by localhost (mail02.efficios.com [IPv6:::1]) (amavisd-new, port 10026) with ESMTP id cZ5hunXIRP_2; Wed, 15 May 2019 11:22:12 -0400 (EDT) Received: from smarchi-efficios.internal.efficios.com (192-222-181-218.qc.cable.ebox.net [192.222.181.218]) by mail.efficios.com (Postfix) with ESMTPSA id CFD901C9155; Wed, 15 May 2019 11:22:12 -0400 (EDT) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [pushed] linux-thread-db.c: use bool where possible in thread_db code Date: Wed, 15 May 2019 11:22:00 -0400 Message-Id: <20190515152200.21046-1-simon.marchi@efficios.com> MIME-Version: 1.0 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. --- gdb/ChangeLog | 13 +++++++ gdb/linux-thread-db.c | 82 +++++++++++++++++++++---------------------- 2 files changed, 54 insertions(+), 41 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3aaeb927543d..7eb3b9226bfc 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,16 @@ +2019-05-15 Simon Marchi + + * 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 Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1708192 diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c index a67f9b95145a..5c8b76c9a763 100644 --- a/gdb/linux-thread-db.c +++ b/gdb/linux-thread-db.c @@ -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. - Return 1 on success. + Return true on success. 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 version mismatch between libthread_db and libpthread). */ -static int +static bool try_thread_db_load_1 (struct thread_db_info *info) { td_err_e err; @@ -818,7 +818,7 @@ try_thread_db_load_1 (struct thread_db_info *info) do \ { \ if ((a) == NULL) \ - return 0; \ + return false; \ } while (0) 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"), thread_db_err_str (err)); - return 0; + return false; } CHK (TDB_VERBOSE_DLSYM (info, td_ta_new)); @@ -857,7 +857,7 @@ try_thread_db_load_1 (struct thread_db_info *info) default: warning (_("td_ta_new failed: %s"), thread_db_err_str (err)); } - return 0; + return false; } /* 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 (info, libthread_db_debug)) - return 0; + return false; } 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 corrupted, we'd not manage to list any threads. Better reject this thread_db, and fall back to at least listing LWPs. */ - return 0; + return false; } 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) push_target (&the_thread_db_target); - return 1; + return true; } /* Attempt to use LIBRARY as libthread_db. LIBRARY could be absolute, relative, or just LIBTHREAD_DB. */ -static int -try_thread_db_load (const char *library, int check_auto_load_safe) +static bool +try_thread_db_load (const char *library, bool check_auto_load_safe) { void *handle; 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) fprintf_unfiltered (gdb_stdlog, _("open failed: %s.\n"), safe_strerror (errno)); - return 0; + return false; } if (!file_is_auto_load_safe (library, _("auto-load: Loading libthread-db " "library \"%s\" from explicit " "directory.\n"), library)) - return 0; + return false; } 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) fprintf_unfiltered (gdb_stdlog, _("dlopen failed: %s.\n"), dlerror ()); - return 0; + return false; } 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 (); if (try_thread_db_load_1 (info)) - return 1; + return true; /* This library "refused" to work on current inferior. */ delete_thread_db_info (inferior_ptid.pid ()); - return 0; + return false; } /* 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". The result is true for success. */ -static int +static bool try_thread_db_load_from_pdir_1 (struct objfile *obj, const char *subdir) { 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" " inferior, but got %s."), obj_name); - return 0; + return false; } 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 += 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. @@ -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". The result is true for success. */ -static int +static bool try_thread_db_load_from_pdir (const char *subdir) { if (!auto_load_thread_db) - return 0; + return false; for (objfile *obj : current_program_space->objfiles ()) if (libpthread_name_p (objfile_name (obj))) { if (try_thread_db_load_from_pdir_1 (obj, subdir)) - return 1; + return true; /* We may have found the separate-debug-info version of 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, subdir); - return 0; + return false; } - return 0; + return false; } /* 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. The result is true for success. */ -static int +static bool 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. The result is true for success. */ -static int +static bool try_thread_db_load_from_dir (const char *dir, size_t dir_len) { if (!auto_load_thread_db) - return 0; + return false; 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" to work on current inferior. The result is true for success. */ -static int +static bool thread_db_load_search (void) { - int rc = 0; + bool rc = false; std::vector> dir_vec = dirnames_to_char_ptr_vec (libthread_db_search_path); @@ -1159,22 +1159,22 @@ thread_db_load_search (void) 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) { for (objfile *obj : current_program_space->objfiles ()) if (libpthread_name_p (objfile_name (obj))) - return 1; + return true; - return 0; + return false; } /* Attempt to load and initialize libthread_db. Return 1 on success. */ -static int +static bool thread_db_load (void) { struct thread_db_info *info; @@ -1182,19 +1182,19 @@ thread_db_load (void) info = get_thread_db_info (inferior_ptid.pid ()); if (info != NULL) - return 1; + return true; /* Don't attempt to use thread_db on executables not running yet. */ if (!target_has_registers) - return 0; + return false; /* Don't attempt to use thread_db for remote targets. */ if (!(target_can_run () || core_bfd)) - return 0; + return false; if (thread_db_load_search ()) - return 1; + return true; /* We couldn't find a libthread_db. 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" " library, thread debugging will not be available.")); - return 0; + return false; } /* Either this executable isn't using libpthread at all, or it is statically linked. Since we can't easily distinguish these two cases, no warning is issued. */ - return 0; + return false; } static void