From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id EyuBOGlBT2oeSy0AWB0awg (envelope-from ) for ; Thu, 09 Jul 2026 02:36:25 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=HMYnWk0b; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id D557F1E098; Thu, 09 Jul 2026 02:36:25 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 229B01E04F for ; Thu, 09 Jul 2026 02:36:25 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A2BB44BA23C2 for ; Thu, 9 Jul 2026 06:36:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A2BB44BA23C2 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=HMYnWk0b Received: from mail-yx1-xb12c.google.com (mail-yx1-xb12c.google.com [IPv6:2607:f8b0:4864:20::b12c]) by sourceware.org (Postfix) with ESMTPS id E8F514BA2E11 for ; Thu, 9 Jul 2026 06:36:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E8F514BA2E11 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E8F514BA2E11 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::b12c ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1783578961; cv=none; b=YvLzOqam0JNW5Cg0s72hc4SVeBTiQFmigxSDVT6u40iBpfGyKNCoudMKmlIpMIKkcScUj9DFg/68EYwF89K0sUCdQjJRAQu046bn0w88VW6ZHdnj3yS4g/B2xtXlMny3JJpggU3hF3xC5wz2ka9DgsNZ9TQQa00gKyRVIhlPt3w= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1783578961; c=relaxed/simple; bh=yXHIPQA8jiwXhNNHp/vEbUsNi7E/apEBhJ29TPoSKRs=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=CQU+CMWOg9CyiFkh8rwnHCYB4t8u7bULezRfu+KbE4Z+W85dD2FAJS+Ovg8r/BEDemO5od1mosxujDsWNOkYmo4D+r42nLGaDEfS50BLntDOme8lmxRnIknwEaRBZxUT7XYVkqZno+2wz61jPM/xW6FQ6WDWThF77eqCneDpW5s= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=HMYnWk0b DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E8F514BA2E11 Received: by mail-yx1-xb12c.google.com with SMTP id 956f58d0204a3-66771ded50aso1761704d50.1 for ; Wed, 08 Jul 2026 23:36:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783578960; x=1784183760; darn=sourceware.org; h=content-type:mime-version:message-id:date:user-agent:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=Ylq9IWnakS+MdtxoslXjJ4LkqIeP0t+WrsHDORP3Z5A=; b=HMYnWk0bxVVc35BvfIxvPYRsVZgXCNJqoqpQWwHhxDFi1Xb+VNrzdY1NYsEM9dCW/5 vkadMVQFOdg3br/Ul5iAYlfosZVFyiuLOPLd9AyUO4g0Eq5SBO90h7GFb4xENw2CiioG C5KtGajrdEdzragYP7RO6ZBHgJRaeDsMSFkxqTZorL1nXHJ5jCgWY8QThLkzniHNjGmm PEF9L0wjl2k106hBlfvgShPCdu0dYofbRrh4C65CA9LRTAITlhavy8mi9c14GIzgQzV9 z323tcVZ6Cx4nE3uaAPVk/UaHd3k+KHzoD5lhr22Q7F1LEzrLtuFl1W+gBI2lUO7PyZD +/vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783578960; x=1784183760; h=content-type:mime-version:message-id:date:user-agent:references :in-reply-to:subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=Ylq9IWnakS+MdtxoslXjJ4LkqIeP0t+WrsHDORP3Z5A=; b=Jryc3e/KN+s3lc/rUI1qXyVXhnymbPYXl/Q+ScMuPbAy035KGz7G9l2eIhnKiS/AFs p5jZzAh91Vw8ssTBTSS6gyCs1Z9ZwH8ZyKmY84viOjbk7si8pDsABqya1fUUtShPIw++ XmSo7LnLfZ4OPAcXsxfhbnC9tMgIW01xtYGTKSH3fopVmq6urFVhQEtndSaJGIhrCrhR wIoc0zW5pLP5zdWj12s3fpw4Z9GKaQarycWBH9cEmE9FXCvVIZHk291dl60FM90fnNCA DlGcmY7TNVTVxzxvsBZ61bXS9yqJ3gb3yPRgzd18ge86sTakDh8wPptXABsI1wgvhxw7 +mOQ== X-Gm-Message-State: AOJu0YwVYmBRFr1fk3SgYlkBFqew2Ru73ICWKtntVyUqXS+D9+f0QTlO CbeX/mFzfqN9ITCXf5dOZ1BpqpZVJwQralEUHlDQCC7fohFvJza1Yfl3IjZOQDjLGjA= X-Gm-Gg: AfdE7cl7jgL1uutxqmnJJIY/vegAnnzg9trCjsFfW+419m6aRVp1a0dFbc6kBRL24if Ce+PSwon70n+KKdckTLbVgjdV2LXFrPGqpQCUWK8gctsfZpRGYLpRhhVGW+6dPAOzcJNJ6mLjdc Qt81ob1c+2NLTMdzdljprvpAk/imZVpLdUbTB4TnyX2kzc7Bgm4vocHuMlJQ/QGlGJxsUemyxte Hc66pHyQ0iSxINy67HzrJMmonJ050rL24cLMcaX62um9B9F9f7jPBTIRQsIT/HqUtcXTAjbHPN/ qn62vSkDtVxPJxiSH/lc8vf5fmy6yezlm1BEXQLmlUsiOYud/NtUu6MJm1f4WHSObmSxFASxJ35 fWXD+kAvq9DEJR/hD4srI8sHorJnDLTRjaVKqHtZj7p5RM4fTQLkP0rM63TLrsq1NCRRO3SZF2q ORLwIqgRgbfVSyI32GLbVjYps= X-Received: by 2002:a05:690e:12c4:b0:664:e879:2002 with SMTP id 956f58d0204a3-6679efcb366mr4374329d50.20.1783578960168; Wed, 08 Jul 2026 23:36:00 -0700 (PDT) Received: from localhost ([2804:14d:7e39:8083:f04c:42e3:5943:38f6]) by smtp.gmail.com with ESMTPSA id 956f58d0204a3-66787ad3833sm3489035d50.20.2026.07.08.23.35.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jul 2026 23:35:59 -0700 (PDT) From: Thiago Jung Bauermann To: Matthieu Longo Cc: , Luis Machado , Luis Machado , Andrew Burgess , "Yury Khrustalev" , Pedro Alves , "Tom Tromey" Subject: Re: [PATCH v1 06/10] gdb/linux-tdep: migrate linux_info_proc to file_reader_t In-Reply-To: <20260707154900.94542-7-matthieu.longo@arm.com> (Matthieu Longo's message of "Tue, 7 Jul 2026 16:48:56 +0100") References: <20260707154900.94542-1-matthieu.longo@arm.com> <20260707154900.94542-7-matthieu.longo@arm.com> User-Agent: mu4e 1.14.2; emacs 30.2 Date: Thu, 09 Jul 2026 06:35:57 +0000 Message-ID: <874ii81xgy.fsf@linaro.org> MIME-Version: 1.0 Content-Type: text/plain X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org Matthieu Longo writes: > The patch migratse the code of linux_info_proc to use file_reader_t to Typo: migrates > read the procfs files. > The availability of array_views allows to also simplify the logic in > several places, where null-terminating characters are replaced by spaces, > or where the file content is iterated line by line. > In the last case, a new helper function, extract_string_view_from_buffer, > encapsulates the logic for such iterations where string are separated by > tokens. > --- > gdb/linux-tdep.c | 120 +++++++++++++++++++++++++++-------------------- > 1 file changed, 69 insertions(+), 51 deletions(-) Nice improvement, thanks! Just a couple of nits, but: Reviewed-by: Thiago Jung Bauermann > diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c > index a12a69f03a2..a2af1586d35 100644 > --- a/gdb/linux-tdep.c > +++ b/gdb/linux-tdep.c > @@ -836,6 +836,27 @@ dump_note_entry_p (filter_flags filterflags, const smaps_data &map) > return true; > } > > +/* In a character buffer where entries are separated by a SEPARATOR character, > + extract the string view starting at START. > + Return the extracted view and the iterator to the next entry. */ > + > +static std::pair, gdb::array_view::iterator> > +extract_string_view_from_buffer (gdb::array_view &buffer, > + gdb::array_view::iterator start, > + char separator = '\0') > +{ > + if (start < buffer.begin () || start >= buffer.end ()) > + return std::make_pair (gdb::array_view (), buffer.end ()); > + > + auto it = std::find (start, buffer.end (), separator); > + if (it == buffer.end ()) > + return std::make_pair (gdb::array_view (), buffer.end ()); > + > + auto next_start = std::next (it); > + return std::make_pair > + (gdb::array_view (start, next_start), next_start); This line fits 80 columns and doesn't need to be broken. > +} > + > /* Implement the "info proc" command. */ > > static void > @@ -878,25 +899,20 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args, > gdb_printf (_("process %d\n"), ptid.pid ()); > if (cmdline_f) > { > - xsnprintf (filename, sizeof filename, "/proc/%ld/cmdline", ptid.lwp ()); > - gdb_byte *buffer; > - LONGEST len = target_fileio_read_alloc (nullptr, filename, &buffer); > - > - if (len > 0) > + file_reader_t cmdline_freader > + (string_printf ("/proc/%ld/cmdline", ptid.lwp ())); > + if (cmdline_freader) > { > - gdb::unique_xmalloc_ptr cmdline ((char *) buffer); > - ssize_t pos; > - > - for (pos = 0; pos < len - 1; pos++) > - { > - if (buffer[pos] == '\0') > - buffer[pos] = ' '; > - } > - buffer[len - 1] = '\0'; > - gdb_printf ("cmdline = '%s'\n", buffer); > + gdb::array_view cmdline = cmdline_freader.cast_view (); > + gdb_assert (cmdline[ cmdline.size () - 1] == '\0'); Extraneous space after '['. > + /* Replace null characters splitting the arguments in the command > + line by spaces, except for the last one. */ > + gdb::replace (cmdline.slice (0, cmdline.size () - 1), '\0', ' '); > + gdb_printf ("cmdline = '%s'\n", cmdline.data ()); > } > else > - warning (_("unable to open /proc file '%s'"), filename); > + warning (_("unable to open /proc file '%s'"), > + cmdline_freader.c_filepath()); > } > if (cwd_f) > { -- Thiago (he/him)