From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.polymtl.ca (smtp.polymtl.ca [132.207.4.11]) by sourceware.org (Postfix) with ESMTPS id 80AF838582A3 for ; Mon, 11 Sep 2023 15:25:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 80AF838582A3 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=polymtl.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=polymtl.ca Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id 38BFPAaQ007766 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 11 Sep 2023 11:25:15 -0400 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp.polymtl.ca 38BFPAaQ007766 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=polymtl.ca; s=default; t=1694445915; bh=pjJW0DXtMA3rOSn5opfIVKw3lyY7FqeXsMNI+YZnAAE=; h=Date:Subject:To:References:From:In-Reply-To:From; b=HLC2N3CLbuDrM0SyIk8olRodjPAkwb2KAgu6xeF6fj/RMG6ThgNXjwWPH1Z2qgeew Ymgz6VEKX208ntd/w5s5ZasG4X52SirOZwd3apTQ8Qf+V8IvQ7WgbU++Ho4cTR+rmg rOp9CG/2xGg65ZUYn/QR4Fm2GMg4FsOel2oNsECk= Received: from [172.16.0.192] (192-222-143-198.qc.cable.ebox.net [192.222.143.198]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id 42B8B1E092; Mon, 11 Sep 2023 11:25:10 -0400 (EDT) Message-ID: <99e5e4c7-9530-4eaa-8062-c13abb66b7b2@polymtl.ca> Date: Mon, 11 Sep 2023 11:25:09 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] Specialize std::hash for ptid_t Content-Language: fr To: Tom Tromey , gdb-patches@sourceware.org References: <20230911144718.3425981-1-tromey@adacore.com> From: Simon Marchi In-Reply-To: <20230911144718.3425981-1-tromey@adacore.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Mon, 11 Sep 2023 15:25:10 +0000 X-Spam-Status: No, score=-3037.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,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: On 9/11/23 10:47, Tom Tromey via Gdb-patches wrote: > This changes hash_ptid to instead be a specialization of std::hash. > This makes it a little easier to use with standard containers. > --- > gdb/inferior.h | 2 +- > gdb/regcache.c | 2 +- > gdbsupport/ptid.h | 8 +++++--- > 3 files changed, 7 insertions(+), 5 deletions(-) > > diff --git a/gdb/inferior.h b/gdb/inferior.h > index 04672582984..29c90d15efa 100644 > --- a/gdb/inferior.h > +++ b/gdb/inferior.h > @@ -462,7 +462,7 @@ class inferior : public refcounted_object, > > /* A map of ptid_t to thread_info*, for average O(1) ptid_t lookup. > Exited threads do not appear in the map. */ > - std::unordered_map ptid_thread_map; > + std::unordered_map ptid_thread_map; > > /* Returns a range adapter covering the inferior's threads, > including exited threads. Used like this: > diff --git a/gdb/regcache.c b/gdb/regcache.c > index 9b71931bb0b..91b20b7a2a2 100644 > --- a/gdb/regcache.c > +++ b/gdb/regcache.c > @@ -329,7 +329,7 @@ reg_buffer::assert_regnum (int regnum) const > regcaches, associated to different gdbarches). */ > > using ptid_regcache_map > - = std::unordered_multimap; > + = std::unordered_multimap; > > /* Type holding regcaches for a given pid. */ > > diff --git a/gdbsupport/ptid.h b/gdbsupport/ptid.h > index aa296b83181..96c7d9c8bfd 100644 > --- a/gdbsupport/ptid.h > +++ b/gdbsupport/ptid.h > @@ -157,9 +157,10 @@ class ptid_t > tid_type m_tid; > }; > > -/* Functor to hash a ptid. */ > - > -struct hash_ptid > +namespace std > +{ > +template<> > +struct hash > { > size_t operator() (const ptid_t &ptid) const > { > @@ -170,6 +171,7 @@ struct hash_ptid > + long_hash (ptid.tid ())); > } > }; > +} When searching on that topic, I found some sources advising against opening namespace std, like this one: https://quuxplusone.github.io/blog/2021/10/27/dont-reopen-namespace-std/ It can instead be written as: template<> struct std::hash { ... }; Not sure if it matters here. Simon