From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id F15F53858D3C for ; Tue, 11 Apr 2023 12:40:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F15F53858D3C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1681216819; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=g9jxJSCx5Rc/RUOAxdCBxj5IHHv3byOxr+XSI+sywXc=; b=NYXhzrptxPsqESQ/zVkHcW9YtnPBqdef/4Ik+zR9tUH7a8gICg1+JKNeosXBPU1aOMP6X7 QSTgxMqOcCuA2rBEV1WnbtPf9Zyg+pHzeBzkMpurGcTn4NsUfSK/vebJB1Vt+9NQNT3Ut1 Sk3YoYFwhrT1bqTp8peYw7v7sxX3RPM= Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-539-FTgkt901PJWPlmoyZG8aSw-1; Tue, 11 Apr 2023 08:40:18 -0400 X-MC-Unique: FTgkt901PJWPlmoyZG8aSw-1 Received: by mail-pj1-f69.google.com with SMTP id t9-20020a17090a3e4900b00246669ab458so2707433pjm.6 for ; Tue, 11 Apr 2023 05:40:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681216817; x=1683808817; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=g9jxJSCx5Rc/RUOAxdCBxj5IHHv3byOxr+XSI+sywXc=; b=ftlGRI+yzhNI984i86dh1XXB48HFTe5zge1r9bE6uBxtWW2pGlbu4auKHmtpCYPu7P ocKuN1QhoGb72d6LGOXTtG1/EkXl1S1JSN0otdxRlE3BCzmJMDmvJz+UTUpBoWnDGnoP xkDkXBDAsyG4XscsTbhHwuLVS3R+VZqntPSE4havLAb/Nk68BEs4dXRvhTqXRasX0VpE chE3OfM29J6IY+cHaWt9ZKR4ZpzsnjjMBwF8HRQMT5THa8SypCc/5y3oplLfuasLoyl1 xXhE7IQhWYOwQi8Sxiis+q+GtbFe/Yo4g3/LrtHhR9VeL85EuickinuSWW7ldtCDX8h0 1tEQ== X-Gm-Message-State: AAQBX9coxwMxnwdzJBoVSjpGChVZpzy6VtddF2bA6279lBWDDTN4HaGC vzP/VOeA/RKzIeW0+r8tu2uEJ2XXbnY+V5d68fDrdgBcOABpiNOhGIu2j6T/do4ea6/eM+HQgqK we2czYGhAAeuUOmMfjt5AqOUuiHDzwnNCy6t6VCG6AW79qg== X-Received: by 2002:a17:903:11c9:b0:1a1:ce05:9cc with SMTP id q9-20020a17090311c900b001a1ce0509ccmr4836530plh.10.1681216816867; Tue, 11 Apr 2023 05:40:16 -0700 (PDT) X-Google-Smtp-Source: AKy350ZVdcFlTbJRvJzy/6XntN9wpVlXrep70IQ0MK/l2K3BLGJITPJcPxQ8wLOt1uRkpDc4VIkqKklzvm0A+88ewpQ= X-Received: by 2002:a17:903:11c9:b0:1a1:ce05:9cc with SMTP id q9-20020a17090311c900b001a1ce0509ccmr4836522plh.10.1681216816455; Tue, 11 Apr 2023 05:40:16 -0700 (PDT) MIME-Version: 1.0 References: <20230320145638.1202335-1-ahajkova@redhat.com> In-Reply-To: From: Alexandra Petlanova Hajkova Date: Tue, 11 Apr 2023 14:40:05 +0200 Message-ID: Subject: Re: [PATCH v2] Use styled_string when defering warnings when loading separate debug files To: =?UTF-8?Q?Alexandra_H=C3=A1jkov=C3=A1?= Cc: gdb-patches@sourceware.org X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/alternative; boundary="00000000000022bf9605f90ecb87" X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,HTML_MESSAGE,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --00000000000022bf9605f90ecb87 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Ping2 On Thu, Mar 30, 2023 at 10:11=E2=80=AFAM Alexandra Petlanova Hajkova < ahajkova@redhat.com> wrote: > Ping > > On Mon, Mar 20, 2023 at 3:56=E2=80=AFPM Alexandra H=C3=A1jkov=C3=A1 via G= db-patches < > gdb-patches@sourceware.org> wrote: > >> This improves commit 6647f05df023b63bbe056e9167e9e234172fa2ca, the >> filenames used in the warnings are styled properly now. >> --- >> This version uses ui_file rather instead of vector of callback functions >> that emit warnings. >> Addresses various cosmetic issues. >> >> gdb/build-id.c | 16 ++++++++++------ >> gdb/build-id.h | 4 ++-- >> gdb/coffread.c | 4 ++-- >> gdb/elfread.c | 4 ++-- >> gdb/symfile.c | 26 ++++++++++++++++---------- >> gdb/symfile.h | 4 ++-- >> gdb/ui-file.h | 7 +++++++ >> 7 files changed, 41 insertions(+), 24 deletions(-) >> >> diff --git a/gdb/build-id.c b/gdb/build-id.c >> index 00250c20ae9..5d5114e2ace 100644 >> --- a/gdb/build-id.c >> +++ b/gdb/build-id.c >> @@ -18,6 +18,7 @@ >> along with this program. If not, see . >> */ >> >> #include "defs.h" >> +#include "cli/cli-style.h" >> #include "bfd.h" >> #include "gdb_bfd.h" >> #include "build-id.h" >> @@ -209,7 +210,7 @@ build_id_to_exec_bfd (size_t build_id_len, const >> bfd_byte *build_id) >> >> std::string >> find_separate_debug_file_by_buildid (struct objfile *objfile, >> - std::vector >> *warnings_vector) >> + std::vector >> *warnings_vector) >> { >> const struct bfd_build_id *build_id; >> >> @@ -228,12 +229,15 @@ find_separate_debug_file_by_buildid (struct objfile >> *objfile, >> && filename_cmp (bfd_get_filename (abfd.get ()), >> objfile_name (objfile)) =3D=3D 0) >> { >> - std::string msg >> - =3D string_printf (_("\"%s\": separate debug info file has n= o " >> - "debug info"), bfd_get_filename (abfd.get >> ())); >> + string_file warnings (true); >> + warnings.printf ("\"%ps\":separate debug info file has no debug >> info", >> + styled_string (file_name_style.style (), >> + bfd_get_filename (abfd.get >> ()))); >> if (separate_debug_file_debug) >> - gdb_printf (gdb_stdlog, "%s", msg.c_str ()); >> - warnings_vector->emplace_back (std::move (msg)); >> + /* Avoid styling for the debug output. */ >> + gdb_printf (gdb_stdlog, _("%s: separate debug info file has >> no debug info"), >> + bfd_get_filename (abfd.get ())); >> + warnings_vector->emplace_back (std::move (warnings)); >> } >> else if (abfd !=3D NULL) >> return std::string (bfd_get_filename (abfd.get ())); >> diff --git a/gdb/build-id.h b/gdb/build-id.h >> index 191720ddf28..0c2c4181b4e 100644 >> --- a/gdb/build-id.h >> +++ b/gdb/build-id.h >> @@ -52,13 +52,13 @@ extern gdb_bfd_ref_ptr build_id_to_exec_bfd (size_t >> build_id_len, >> separate debug file, otherwise, return an empty string. >> >> Any warnings that are generated by the lookup process should be added >> to >> - WARNINGS_VECTOR, one std::string per warning. If some other >> mechanism can >> + WARNINGS_VECTOR, one string_file per warning. If some other >> mechanism can >> be used to lookup the debug information then the warning will not be >> shown, >> however, if GDB fails to find suitable debug information using any >> approach, then any warnings will be printed. */ >> >> extern std::string find_separate_debug_file_by_buildid >> - (struct objfile *objfile, std::vector *warnings_vector); >> + (struct objfile *objfile, std::vector *warnings_vector); >> >> /* Return an hex-string representation of BUILD_ID. */ >> >> diff --git a/gdb/coffread.c b/gdb/coffread.c >> index e993b17db09..32705c215fd 100644 >> --- a/gdb/coffread.c >> +++ b/gdb/coffread.c >> @@ -729,7 +729,7 @@ coff_symfile_read (struct objfile *objfile, >> symfile_add_flags symfile_flags) >> /* Try to add separate debug file if no symbols table found. */ >> if (!objfile->has_partial_symbols ()) >> { >> - std::vector warnings_vector; >> + std::vector warnings_vector; >> std::string debugfile >> =3D find_separate_debug_file_by_buildid (objfile, &warnings_vect= or); >> >> @@ -747,7 +747,7 @@ coff_symfile_read (struct objfile *objfile, >> symfile_add_flags symfile_flags) >> /* If all the methods to collect the debuginfo failed, print any >> warnings that were collected. */ >> if (debugfile.empty () && !warnings_vector.empty ()) >> - for (const std::string &w : warnings_vector) >> + for (const string_file &w : warnings_vector) >> warning ("%s", w.c_str ()); >> } >> } >> diff --git a/gdb/elfread.c b/gdb/elfread.c >> index b414da9ed21..4bc89d09d65 100644 >> --- a/gdb/elfread.c >> +++ b/gdb/elfread.c >> @@ -1217,7 +1217,7 @@ elf_symfile_read_dwarf2 (struct objfile *objfile, >> && objfile->separate_debug_objfile =3D=3D NULL >> && objfile->separate_debug_objfile_backlink =3D=3D NULL) >> { >> - std::vector warnings_vector; >> + std::vector warnings_vector; >> >> std::string debugfile >> =3D find_separate_debug_file_by_buildid (objfile, &warnings_vect= or); >> @@ -1269,7 +1269,7 @@ elf_symfile_read_dwarf2 (struct objfile *objfile, >> /* If all the methods to collect the debuginfo failed, print >> the warnings, if there're any. */ >> if (debugfile.empty () && !has_dwarf2 && !warnings_vector.empty (= )) >> - for (const std::string &w : warnings_vector) >> + for (const string_file &w : warnings_vector) >> warning ("%s", w.c_str ()); >> } >> >> diff --git a/gdb/symfile.c b/gdb/symfile.c >> index bb9981a4634..64d29ea71f9 100644 >> --- a/gdb/symfile.c >> +++ b/gdb/symfile.c >> @@ -1244,7 +1244,7 @@ bool separate_debug_file_debug =3D false; >> static int >> separate_debug_file_exists (const std::string &name, unsigned long crc, >> struct objfile *parent_objfile, >> - std::vector *warnings_vector) >> + std::vector *warnings_vector) >> { >> unsigned long file_crc; >> int file_crc_p; >> @@ -1337,13 +1337,19 @@ separate_debug_file_exists (const std::string >> &name, unsigned long crc, >> >> if (verified_as_different || parent_crc !=3D file_crc) >> { >> - std::string msg >> - =3D string_printf (_("the debug information found in \"%s\"" >> - " does not match \"%s\" (CRC >> mismatch).\n"), >> - name.c_str (), objfile_name >> (parent_objfile)); >> + string_file warnings (true); >> + warnings.printf (_("the debug information found in \"%ps\"" >> + " does not match \"%ps\" (CRC mismatch)."), >> + styled_string (file_name_style.style (), >> + name.c_str ()), >> + styled_string (file_name_style.style (), >> + objfile_name (parent_objfile))= ); >> + /* Avoid styling for the debug output. */ >> if (separate_debug_file_debug) >> - gdb_printf (gdb_stdlog, "%s", msg.c_str ()); >> - warnings_vector->emplace_back (std::move (msg)); >> + gdb_printf (gdb_stdlog, _("the debug information found in %s" >> + " does not match %s (CRC >> mismatch).\n"), >> + name.c_str(), objfile_name (parent_objfile)); >> + warnings_vector->emplace_back (std::move (warnings)); >> } >> >> return 0; >> @@ -1379,14 +1385,14 @@ show_debug_file_directory (struct ui_file *file, >> int from_tty, >> string. >> >> Any warnings generated as part of the lookup process are added to >> - WARNINGS_VECTOR, one std::string per warning. */ >> + WARNINGS_VECTOR, one string_file per warning. */ >> >> static std::string >> find_separate_debug_file (const char *dir, >> const char *canon_dir, >> const char *debuglink, >> unsigned long crc32, struct objfile *objfile, >> - std::vector *warnings_vector) >> + std::vector *warnings_vector) >> { >> if (separate_debug_file_debug) >> gdb_printf (gdb_stdlog, >> @@ -1534,7 +1540,7 @@ terminate_after_last_dir_separator (char *path) >> >> std::string >> find_separate_debug_file_by_debuglink >> - (struct objfile *objfile, std::vector *warnings_vector) >> + (struct objfile *objfile, std::vector *warnings_vector) >> { >> unsigned long crc32; >> >> diff --git a/gdb/symfile.h b/gdb/symfile.h >> index b433e2be31a..041f6f74f9c 100644 >> --- a/gdb/symfile.h >> +++ b/gdb/symfile.h >> @@ -245,10 +245,10 @@ extern void symbol_file_add_separate (const >> gdb_bfd_ref_ptr &, const char *, >> Returns pathname, or an empty string. >> >> Any warnings generated as part of this lookup are added to >> - WARNINGS_VECTOR, one std::string per warning. */ >> + WARNINGS_VECTOR, one string_file per warning. */ >> >> extern std::string find_separate_debug_file_by_debuglink >> - (struct objfile *objfile, std::vector *warnings_vector); >> + (struct objfile *objfile, std::vector *warnings_vector); >> >> /* Build (allocate and populate) a section_addr_info struct from an >> existing section table. */ >> diff --git a/gdb/ui-file.h b/gdb/ui-file.h >> index de24620e247..4444c8adcdb 100644 >> --- a/gdb/ui-file.h >> +++ b/gdb/ui-file.h >> @@ -212,6 +212,13 @@ class string_file : public ui_file >> return *this; >> } >> >> + string_file(string_file &&other) >> + : m_string (std::move (other.c_str ())), >> + m_term_out (other.m_term_out) >> + { >> + >> + } >> + >> /* Provide a few convenience methods with the same API as the >> underlying std::string. */ >> const char *data () const { return m_string.data (); } >> -- >> 2.39.1 >> >> --00000000000022bf9605f90ecb87--