From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id MJaXKPdcdGhGKzQAWB0awg (envelope-from ) for ; Sun, 13 Jul 2025 21:27:19 -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=cZHAjc7a; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 91F711E11C; Sun, 13 Jul 2025 21:27:19 -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.8 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_SBL_CSS,RCVD_IN_VALIDITY_CERTIFIED, RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE autolearn=ham autolearn_force=no version=4.0.1 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (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 4D0921E0C2 for ; Sun, 13 Jul 2025 21:27:18 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B16003858D37 for ; Mon, 14 Jul 2025 01:27:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B16003858D37 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=cZHAjc7a Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) by sourceware.org (Postfix) with ESMTPS id 911E83858D37 for ; Mon, 14 Jul 2025 01:26:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 911E83858D37 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 911E83858D37 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::62b ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1752456397; cv=none; b=WcGTPGiAkSPNQ9BgUJ2Km5rCiYuL0Cu7RAIRPK1tAEGDjLOs+YDU9wtcS9BEY7fzDUoZy1pVZisHDm6R+tEQ64mPj21ikJU6zmnLTcV/9udQIwgQG2VKWMvP7c6mzfHUhv5eYU31MPr8XUvZAWULXlLVOzswjFnaBxEK/lF/Fjs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1752456397; c=relaxed/simple; bh=zEPhUoUQHfqRZwoT3AacT09Jt8Uhjf4t0bI05Ofs4lM=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=TB81OeSdT0RqxiELrykHO1bkmEzTbifn6OS5uGsXcgpVJoiRIH6mosVvy+D1cvuhFRSft6zf8k9u8lyuMtDY6Rkts/DCtwoNu8L/3d4J4uE8skI6ZFks+CbwcTdElvLtg7iZUdZ1pdEHs00pIoJjIBc53w++54yhW6vpYZf+I38= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 911E83858D37 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-234fcadde3eso47177895ad.0 for ; Sun, 13 Jul 2025 18:26:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1752456396; x=1753061196; darn=sourceware.org; h=mime-version:message-id:date:user-agent:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=UO+HB0GEdNC7mN0/CuC+Mr0lANOLtoSO8Yp9LMITaSI=; b=cZHAjc7azxYLTLB17BpZhg5+L8MYnCC1HvRY/CZHe5itCTWysTD6tFSEQaVRT+kDKp LRn0o8hgzeCvaTqCDyjaCnliMD1W9flM/70aOGJmHLLPYO6q94g24qmo7Ue9UqUk2Jtz OIgpxW1MEX+p23oloQ7IAUYivVTfKS4nOcqsxaJeGlMvt2GR+qMrYqjY8aVQrrGUzYyU 8x25AdbmDYwYTukrvSiS6aZitHhoyJZssKccMCaW90pW43jLF0ier5+L3QrbQpsrGhOm Pe9uBUPZthqbYGxXPqOO0iawvwO9gLxcN7woW09YdugkhjdPMik8MJv+MkCDbuP6GELQ wmkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752456396; x=1753061196; h=mime-version:message-id:date:user-agent:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=UO+HB0GEdNC7mN0/CuC+Mr0lANOLtoSO8Yp9LMITaSI=; b=t53YHrykVjZ/REAv3TeTI7syuInyya5zUIZL47WJZCJwBhS936oqtRD2V/Uy3Y5H8w NgYBLPCzi7GUxFDUgvZcxP4Pm2VEdPT5twWxikyyx3oDVCn3Z9bAsDVsG4ohGmLqiFg4 eKgCYXz+j3Z8DUL+ukoMrvzvsYvyHiyuc4FObf+2TRytgEMwlltDwc3JHhi0dt7tuv5I i1m+S9Z7cdW5pFKsR7X3Rny4UgL1hz6TZ8jAojvWv7/ZFPv60kmb0cfuNJflh7YaiwMX DcgkG5s+4+l1z1lw73e2lleTAGF3ZNhUtUkjr/8nBtPESUjgDkvXqiB07KPiXGJ9tOaS hYLw== X-Gm-Message-State: AOJu0YwozdERD00qbA7gsJERt++Io1HJfDtq3rnSiN/cd3uH5kJvtR0s qJise9h6NCtAyBmIMWZy/1wyf5u0PyxCJP8N4j+m8lrfuGK2OSi6VXja527EyyzP8ro= X-Gm-Gg: ASbGncv10kXmCKoMonEJ6iCr3jqkJO0fsbibFBCZ0g+4OiPzl+YX0Uv92u5L5DXuKNj RsOEwUK5gYT000dUhxfdQ3QhrGVLLETvy64A34bka/N37ki4c1K71umo9TWFKSlPxbLqS0eo92W 0BcXlg/fwvWHVryPNv3PwJeTPDGdqkE6w7FHOIFwZ50oK7iItDn/LXuZDo7ZeN9MdRHndzaS1FI kBCFIHKtC+7VwHXxJhClcJeUB+Gs5ebIOD55tkEq/dHw4hZfHRAaoPuB2CYXdQpsaquEOKHufmT G2D8F92xwn+GrdTBmdcnL2I/avHZOkYRqEDl7jJK2acpder7glih4acOznyAb7i4LChzX7wXUrA MKiSWWfFZ4a+3lNfTXUgbr3TQmn2b3nBg X-Google-Smtp-Source: AGHT+IEtrXmLtczx4IRPHK6HNmwwulgo8Be77dNNBVq4d55np01dvyDi18/eJiE+PJ4zIpnIIAJl2A== X-Received: by 2002:a17:902:e802:b0:234:8ec1:4aea with SMTP id d9443c01a7336-23dee2857d3mr162684185ad.52.1752456396528; Sun, 13 Jul 2025 18:26:36 -0700 (PDT) Received: from localhost ([2804:14d:7e39:88d6:f4b6:c7e5:e537:b9ae]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23de4359e4bsm80485035ad.215.2025.07.13.18.26.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Jul 2025 18:26:35 -0700 (PDT) From: Thiago Jung Bauermann To: Tankut Baris Aktemur Cc: gdb-patches@sourceware.org, Markus Metzger Subject: Re: [PATCH v2 09/47] gdbsupport, filestuff, ze: temporary files In-Reply-To: <20241213-upstream-intelgt-mvp-v2-9-5c4caeb7b33d@intel.com> (Tankut Baris Aktemur's message of "Fri, 13 Dec 2024 16:59:26 +0100") References: <20241213-upstream-intelgt-mvp-v2-0-5c4caeb7b33d@intel.com> <20241213-upstream-intelgt-mvp-v2-9-5c4caeb7b33d@intel.com> User-Agent: mu4e 1.12.11; emacs 30.1 Date: Sun, 13 Jul 2025 22:26:33 -0300 Message-ID: <87o6tn1s1i.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 Tankut Baris Aktemur writes: > @@ -544,3 +547,53 @@ read_text_file_to_string (const char *path) > > return read_remainder_of_file (file.get ()); > } > + > +/* A class to keep temporary files until GDB exits (normally). */ > + > +struct tmpfilekeeper_s > +{ > + std::list files; > + > + tmpfilekeeper_s () = default; > + tmpfilekeeper_s (const tmpfilekeeper_s &) = delete; > + tmpfilekeeper_s (tmpfilekeeper_s &&) = delete; > + > + ~tmpfilekeeper_s () > + { > + for (const std::string &file : files) > + { > + const char *cfile = file.c_str (); > + int status = unlink (cfile); > + if (status != 0) > + warning (_("failed to remove temporary file %s: %s"), cfile, > + safe_strerror (errno)); > + } > + } > + > + tmpfilekeeper_s &operator= (const tmpfilekeeper_s &) = delete; > + tmpfilekeeper_s &operator= (tmpfilekeeper_s &&) = delete; > +}; > +static tmpfilekeeper_s tmpfilekeeper; There is gdb::unlinker defined in gdbsupport/gdb_unlinker.h, so tmpfilekeeper can be an std::forward_list (or some other container) and you don't need struct tmpfilekeeper_s. But actually, gdb_create_tmpfile is used only in one place, so there's no need for tmpfilekeepr. I have a suggestion about this in patch 10. Also, this patch can be squashed with the next one, IMHO. > +/* See gdbsupport/filestuff.h. */ > + > +gdb_file_up > +gdb_create_tmpfile (std::string &base, int flags) > +{ > + std::string absbase { get_standard_temp_dir () + "/" + base }; > + gdb::char_vector name { make_temp_filename (absbase) }; > + > + scoped_fd fd { gdb_mkostemp_cloexec (name.data (), O_BINARY) }; > + if (fd.get () == -1) > + error (_("failed to create temporary file %s: %s"), name.data (), > + safe_strerror (errno)); > + > + gdb_file_up file { fd.to_file ("wb") }; > + if (file.get () == nullptr) > + error (_("failed to open %s: %s"), name.data (), safe_strerror (errno)); > + > + base = name.data (); > + tmpfilekeeper.files.emplace_back (base); > + > + return file; > +} > diff --git a/gdbsupport/filestuff.h b/gdbsupport/filestuff.h > index e2ee141d46f01bc0888a871830a5559419b63f03..6b7d1ecf9354d21e186c6f6b7aceb3aa591c4465 100644 > --- a/gdbsupport/filestuff.h > +++ b/gdbsupport/filestuff.h > @@ -71,6 +71,12 @@ gdb_open_cloexec (const std::string &filename, int flags, > return gdb_open_cloexec (filename.c_str (), flags, mode); > } > > +/* Create a temporary file that will automatically get deleted when GDB > + terminates (normally). NAME needs to be a template filename and will > + be modified to contain the actual template filename on return. */ s/actual template filename/actual filename/ > + > +extern gdb_file_up gdb_create_tmpfile (std::string &name, int flags = 0); > + > /* Like 'fopen', but ensures that the returned file descriptor has the > close-on-exec flag set. */ -- Thiago