From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id oMciEbb3CGBKdAAAWB0awg (envelope-from ) for ; Wed, 20 Jan 2021 22:40:38 -0500 Received: by simark.ca (Postfix, from userid 112) id 42B261EF80; Wed, 20 Jan 2021 22:40:38 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RDNS_NONE,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from sourceware.org (unknown [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id A4E881E945 for ; Wed, 20 Jan 2021 22:40:37 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5B6073851C07; Thu, 21 Jan 2021 03:40:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5B6073851C07 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1611200437; bh=mgNGFQZqK5tZCPXMYQn1giBDK8178OG+aSJI2k/N5Vg=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=D36k8H7uvb4YBvB4Xu5ciaw7bNkk/2BL08eb7NHyjhVwrtsqDq0fziUHGA+z0Ilza 4LZoQXHNEPeh9uPXwl+9i5iNgOanmROCyq4UvBNQ9qGFWXGUSk09uwPGnwsipuDWzU veQaD8zuZZLF6XbyDjyIlhGtWoAAA0MFLbGxyq1U= Received: from barracuda.ebox.ca (barracuda.ebox.ca [96.127.255.19]) by sourceware.org (Postfix) with ESMTPS id 244463851C07 for ; Thu, 21 Jan 2021 03:40:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 244463851C07 X-ASG-Debug-ID: 1611200433-0c856e6cd5731ec0001-fS2M51 Received: from smtp.ebox.ca (smtp.ebox.ca [96.127.255.82]) by barracuda.ebox.ca with ESMTP id iYPcM5Pk928F3PGi (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 20 Jan 2021 22:40:33 -0500 (EST) X-Barracuda-Envelope-From: simon.marchi@polymtl.ca X-Barracuda-RBL-Trusted-Forwarder: 96.127.255.82 Received: from simark.localdomain (192-222-157-6.qc.cable.ebox.net [192.222.157.6]) by smtp.ebox.ca (Postfix) with ESMTP id 47B5D441B21; Wed, 20 Jan 2021 22:40:33 -0500 (EST) X-Barracuda-RBL-IP: 192.222.157.6 X-Barracuda-Effective-Source-IP: 192-222-157-6.qc.cable.ebox.net[192.222.157.6] X-Barracuda-Apparent-Source-IP: 192.222.157.6 To: gdb-patches@sourceware.org Subject: [PATCH] gdb: convert auto-load to new-style debug macros Date: Wed, 20 Jan 2021 22:40:32 -0500 X-ASG-Orig-Subj: [PATCH] gdb: convert auto-load to new-style debug macros Message-Id: <20210121034032.113861-1-simon.marchi@polymtl.ca> X-Mailer: git-send-email 2.30.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: smtp.ebox.ca[96.127.255.82] X-Barracuda-Start-Time: 1611200433 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://96.127.255.19:443/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at ebox.ca X-Barracuda-Scan-Msg-Size: 14064 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=8.0 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.87397 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Simon Marchi via Gdb-patches Reply-To: Simon Marchi Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" Function file_is_auto_load_safe was taking a format string and varargs just to output a debug print. This is probably because that function is used in linux-thread-db.c and main.c, but debug_auto_load is static in auto-load.c. I simplified that, making debug_auto_load visible outside of auto-load.c, and making the callers of file_is_auto_load_safe output the debug print themselves. The rest is pretty much standard. gdb/ChangeLog: * auto-load.h (debug_auto_load): Move here. (auto_load_debug_printf): New. * auto-load.c: Use auto_load_debug_printf. (debug_auto_load): Move to header. * linux-thread-db.c (try_thread_db_load): Use auto_load_debug_printf. * main.c (captured_main_1): Likewise. Change-Id: I468dc2a1d24b7dbf171f55181a11abbfafe70ba1 --- gdb/auto-load.c | 146 +++++++++++++++++------------------------- gdb/auto-load.h | 13 +++- gdb/linux-thread-db.c | 9 +-- gdb/main.c | 16 +++-- 4 files changed, 82 insertions(+), 102 deletions(-) diff --git a/gdb/auto-load.c b/gdb/auto-load.c index 522f43b704cb..1dfcf21eeebf 100644 --- a/gdb/auto-load.c +++ b/gdb/auto-load.c @@ -61,8 +61,9 @@ static void maybe_print_script_not_found_warning const struct extension_language_defn *language, const char *section_name, unsigned offset); -/* Value of the 'set debug auto-load' configuration variable. */ -static bool debug_auto_load = false; +/* See auto-load.h. */ + +bool debug_auto_load = false; /* "show" command for the debug_auto_load configuration variable. */ @@ -183,8 +184,7 @@ auto_load_expand_dir_vars (const char *string) substitute_path_component (&s, "$debugdir", debug_file_directory); if (debug_auto_load && strcmp (s, string) != 0) - fprintf_unfiltered (gdb_stdlog, - _("auto-load: Expanded $-variables to \"%s\".\n"), s); + auto_load_debug_printf ("Expanded $-variables to \"%s\".", s); std::vector> dir_vec = dirnames_to_char_ptr_vec (s); @@ -198,10 +198,8 @@ auto_load_expand_dir_vars (const char *string) static void auto_load_safe_path_vec_update (void) { - if (debug_auto_load) - fprintf_unfiltered (gdb_stdlog, - _("auto-load: Updating directories of \"%s\".\n"), - auto_load_safe_path); + auto_load_debug_printf ("Updating directories of \"%s\".", + auto_load_safe_path); auto_load_safe_path_vec = auto_load_expand_dir_vars (auto_load_safe_path); size_t len = auto_load_safe_path_vec.size (); @@ -222,23 +220,18 @@ auto_load_safe_path_vec_update (void) if (debug_auto_load) { if (strcmp (in_vec.get (), original.get ()) == 0) - fprintf_unfiltered (gdb_stdlog, - _("auto-load: Using directory \"%s\".\n"), - in_vec.get ()); + auto_load_debug_printf ("Using directory \"%s\".", + in_vec.get ()); else - fprintf_unfiltered (gdb_stdlog, - _("auto-load: Resolved directory \"%s\" " - "as \"%s\".\n"), - original.get (), in_vec.get ()); + auto_load_debug_printf ("Resolved directory \"%s\" as \"%s\".", + original.get (), in_vec.get ()); } /* If gdb_realpath returns a different content, append it. */ if (strcmp (real_path.get (), in_vec.get ()) != 0) { - if (debug_auto_load) - fprintf_unfiltered (gdb_stdlog, - _("auto-load: And canonicalized as \"%s\".\n"), - real_path.get ()); + auto_load_debug_printf ("And canonicalized as \"%s\".", + real_path.get ()); auto_load_safe_path_vec.push_back (std::move (real_path)); } @@ -338,10 +331,8 @@ filename_is_in_pattern_1 (char *filename, char *pattern) size_t pattern_len = strlen (pattern); size_t filename_len = strlen (filename); - if (debug_auto_load) - fprintf_unfiltered (gdb_stdlog, _("auto-load: Matching file \"%s\" " - "to pattern \"%s\"\n"), - filename, pattern); + auto_load_debug_printf ("Matching file \"%s\" to pattern \"%s\"", + filename, pattern); /* Trim trailing slashes ("/") from PATTERN. Even for "d:\" paths as trailing slashes are trimmed also from FILENAME it still matches @@ -355,9 +346,7 @@ filename_is_in_pattern_1 (char *filename, char *pattern) IS_DIR_SEPARATOR character, such as the 'C:\x.exe' filename. */ if (pattern_len == 0) { - if (debug_auto_load) - fprintf_unfiltered (gdb_stdlog, - _("auto-load: Matched - empty pattern\n")); + auto_load_debug_printf ("Matched - empty pattern"); return 1; } @@ -370,20 +359,15 @@ filename_is_in_pattern_1 (char *filename, char *pattern) filename[filename_len] = '\0'; if (filename_len == 0) { - if (debug_auto_load) - fprintf_unfiltered (gdb_stdlog, - _("auto-load: Not matched - pattern \"%s\".\n"), - pattern); + auto_load_debug_printf ("Not matched - pattern \"%s\".", pattern); return 0; } if (gdb_filename_fnmatch (pattern, filename, FNM_FILE_NAME | FNM_NOESCAPE) == 0) { - if (debug_auto_load) - fprintf_unfiltered (gdb_stdlog, _("auto-load: Matched - file " - "\"%s\" to pattern \"%s\".\n"), - filename, pattern); + auto_load_debug_printf ("Matched - file \"%s\" to pattern \"%s\".", + filename, pattern); return 1; } @@ -434,10 +418,8 @@ filename_is_in_auto_load_safe_path_vec (const char *filename, { *filename_realp = gdb_realpath (filename); if (debug_auto_load && strcmp (filename_realp->get (), filename) != 0) - fprintf_unfiltered (gdb_stdlog, - _("auto-load: Resolved " - "file \"%s\" as \"%s\".\n"), - filename, filename_realp->get ()); + auto_load_debug_printf ("Resolved file \"%s\" as \"%s\".", + filename, filename_realp->get ()); } if (strcmp (filename_realp->get (), filename) != 0) @@ -451,10 +433,8 @@ filename_is_in_auto_load_safe_path_vec (const char *filename, if (pattern != NULL) { - if (debug_auto_load) - fprintf_unfiltered (gdb_stdlog, _("auto-load: File \"%s\" matches " - "directory \"%s\".\n"), - filename, pattern); + auto_load_debug_printf ("File \"%s\" matches directory \"%s\".", + filename, pattern); return 1; } @@ -464,20 +444,11 @@ filename_is_in_auto_load_safe_path_vec (const char *filename, /* See auto-load.h. */ bool -file_is_auto_load_safe (const char *filename, const char *debug_fmt, ...) +file_is_auto_load_safe (const char *filename) { gdb::unique_xmalloc_ptr filename_real; static bool advice_printed = false; - if (debug_auto_load) - { - va_list debug_args; - - va_start (debug_args, debug_fmt); - vfprintf_unfiltered (gdb_stdlog, debug_fmt, debug_args); - va_end (debug_args); - } - if (filename_is_in_auto_load_safe_path_vec (filename, &filename_real)) return true; @@ -766,9 +737,10 @@ auto_load_objfile_script_1 (struct objfile *objfile, const char *realname, gdb_file_up input = gdb_fopen_cloexec (filename.c_str (), "r"); debugfile = filename.c_str (); - if (debug_auto_load) - fprintf_unfiltered (gdb_stdlog, _("auto-load: Attempted file \"%s\" %s.\n"), - debugfile, input ? _("exists") : _("does not exist")); + + auto_load_debug_printf ("Attempted file \"%s\" %s.", + debugfile, + input != nullptr ? "exists" : "does not exist"); std::string debugfile_holder; if (!input) @@ -779,10 +751,9 @@ auto_load_objfile_script_1 (struct objfile *objfile, const char *realname, std::vector> vec = auto_load_expand_dir_vars (auto_load_dir); - if (debug_auto_load) - fprintf_unfiltered (gdb_stdlog, _("auto-load: Searching 'set auto-load " - "scripts-directory' path \"%s\".\n"), - auto_load_dir); + auto_load_debug_printf + ("Searching 'set auto-load scripts-directory' path \"%s\".", + auto_load_dir); /* Convert Windows file name from c:/dir/file to /c/dir/file. */ if (HAS_DRIVE_SPEC (debugfile)) @@ -796,11 +767,13 @@ auto_load_objfile_script_1 (struct objfile *objfile, const char *realname, debugfile = debugfile_holder.c_str (); input = gdb_fopen_cloexec (debugfile, "r"); - if (debug_auto_load) - fprintf_unfiltered (gdb_stdlog, _("auto-load: Attempted file " - "\"%s\" %s.\n"), - debugfile, - input ? _("exists") : _("does not exist")); + + auto_load_debug_printf ("Attempted file \"%s\" %s.", + debugfile, + (input != nullptr + ? "exists" + : "does not exist")); + if (input != NULL) break; } @@ -810,12 +783,11 @@ auto_load_objfile_script_1 (struct objfile *objfile, const char *realname, { struct auto_load_pspace_info *pspace_info; - bool is_safe - = file_is_auto_load_safe (debugfile, - _("auto-load: Loading %s script \"%s\"" - " by extension for objfile \"%s\".\n"), - ext_lang_name (language), - debugfile, objfile_name (objfile)); + auto_load_debug_printf + ("Loading %s script \"%s\" by extension for objfile \"%s\".", + ext_lang_name (language), debugfile, objfile_name (objfile)); + + bool is_safe = file_is_auto_load_safe (debugfile); /* Add this script to the hash table too so "info auto-load ${lang}-scripts" can print it. */ @@ -871,10 +843,11 @@ auto_load_objfile_script (struct objfile *objfile, { len -= lexe; realname.get ()[len] = '\0'; - if (debug_auto_load) - fprintf_unfiltered (gdb_stdlog, _("auto-load: Stripped .exe suffix, " - "retrying with \"%s\".\n"), - realname.get ()); + + auto_load_debug_printf + ("auto-load: Stripped .exe suffix, retrying with \"%s\".", + realname.get ()); + auto_load_objfile_script_1 (objfile, realname.get (), language); } } @@ -917,13 +890,12 @@ source_script_file (struct auto_load_pspace_info *pspace_info, if (opened) { - if (!file_is_auto_load_safe (opened->full_path.get (), - _("auto-load: Loading %s script " - "\"%s\" from section \"%s\" of " - "objfile \"%s\".\n"), - ext_lang_name (language), - opened->full_path.get (), - section_name, objfile_name (objfile))) + auto_load_debug_printf + ("Loading %s script \"%s\" from section \"%s\" of objfile \"%s\".", + ext_lang_name (language), opened->full_path.get (), + section_name, objfile_name (objfile)); + + if (!file_is_auto_load_safe (opened->full_path.get ())) opened.reset (); } else @@ -1018,13 +990,11 @@ of file %ps."), return; } - bool is_safe - = file_is_auto_load_safe (objfile_name (objfile), - _("auto-load: Loading %s script " - "\"%s\" from section \"%s\" of " - "objfile \"%s\".\n"), - ext_lang_name (language), name, - section_name, objfile_name (objfile)); + auto_load_debug_printf + ("Loading %s script \"%s\" from section \"%s\" of objfile \"%s\".", + ext_lang_name (language), name, section_name, objfile_name (objfile)); + + bool is_safe = file_is_auto_load_safe (objfile_name (objfile)); bool in_hash_table = maybe_add_script_text (pspace_info, is_safe, name, language); diff --git a/gdb/auto-load.h b/gdb/auto-load.h index ec802395d3ed..f726126c5541 100644 --- a/gdb/auto-load.h +++ b/gdb/auto-load.h @@ -25,6 +25,15 @@ struct program_space; struct auto_load_pspace_info; struct extension_language_defn; +/* Value of the 'set debug auto-load' configuration variable. */ + +extern bool debug_auto_load; + +/* Print an "auto-load" debug statement. */ + +#define auto_load_debug_printf(fmt, ...) \ + debug_prefixed_printf_cond (debug_auto_load, "auto-load", fmt, ##__VA_ARGS__) + extern bool global_auto_load; extern bool auto_load_local_gdbinit; @@ -52,9 +61,7 @@ extern struct cmd_list_element **auto_load_info_cmdlist_get (void); even if the caller would quietly skip non-existing file in unsafe directory. */ -extern bool file_is_auto_load_safe (const char *filename, - const char *debug_fmt, ...) - ATTRIBUTE_PRINTF (2, 3); +extern bool file_is_auto_load_safe (const char *filename); /* Return true if auto-loading gdb scripts is enabled. */ diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c index 0a32e40f4d5f..dce4bd23c1b7 100644 --- a/gdb/linux-thread-db.c +++ b/gdb/linux-thread-db.c @@ -976,10 +976,11 @@ try_thread_db_load (const char *library, bool check_auto_load_safe) return false; } - if (!file_is_auto_load_safe (library, _("auto-load: Loading libthread-db " - "library \"%s\" from explicit " - "directory.\n"), - library)) + auto_load_debug_printf + ("Loading libthread-db library \"%s\" from explicit directory.", + library); + + if (!file_is_auto_load_safe (library)) return false; } diff --git a/gdb/main.c b/gdb/main.c index 1e1fbf2f3512..331e3a50acf8 100644 --- a/gdb/main.c +++ b/gdb/main.c @@ -1185,15 +1185,17 @@ captured_main_1 (struct captured_main_args *context) auto_load_local_gdbinit_pathname = gdb_realpath (local_gdbinit.c_str ()).release (); - if (!inhibit_gdbinit && auto_load_local_gdbinit - && file_is_auto_load_safe (local_gdbinit.c_str (), - _("auto-load: Loading .gdbinit " - "file \"%s\".\n"), - local_gdbinit.c_str ())) + if (!inhibit_gdbinit && auto_load_local_gdbinit) { - auto_load_local_gdbinit_loaded = 1; + auto_load_debug_printf ("Loading .gdbinit file \"%s\".", + local_gdbinit.c_str ()); - ret = catch_command_errors (source_script, local_gdbinit.c_str (), 0); + if (file_is_auto_load_safe (local_gdbinit.c_str ())) + { + auto_load_local_gdbinit_loaded = 1; + + ret = catch_command_errors (source_script, local_gdbinit.c_str (), 0); + } } } -- 2.30.0