GNU bug report logs - #77476
[PATCH] Rename various hash functions to avoid clashing with GnuTLS.

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: "Greg A. Woods" <woods@HIDDEN>; Keywords: patch; Done: Paul Eggert <eggert@HIDDEN>; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 77476-done <at> debbugs.gnu.org:


Received: (at 77476-done) by debbugs.gnu.org; 20 Apr 2025 06:30:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Apr 20 02:30:58 2025
Received: from localhost ([127.0.0.1]:43936 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u6OCf-0002ge-TS
	for submit <at> debbugs.gnu.org; Sun, 20 Apr 2025 02:30:58 -0400
Received: from ns.weird.com ([198.96.117.51]:50432 helo=central.weird.com)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <woods@HIDDEN>) id 1u6OCc-0002gS-KB
 for 77476-done <at> debbugs.gnu.org; Sun, 20 Apr 2025 02:30:55 -0400
Received: from (invalid client hostname: bind: DNS error: DNS lookup for A for
 'more.local': Unknown host)more.local ((no PTR matching greeting
 name)d207-216-250-146.bchsia.telus.net[207.216.250.146] port=58140)
 by central.weird.com([198.96.117.51] port=587)
 via TCP with esmtp (2796 bytes) (sender: <woods@HIDDEN>)
 (ident <nobody> using UNIX) id <m1u6OCR-00rPJi0@HIDDEN>
 for <77476-done <at> debbugs.gnu.org>;
 Sun, 20 Apr 2025 02:30:43 -0400 (EDT)
 (Smail-3.2.0.122-Pre 2005-Nov-17 #1 built 2022-Apr-6)
Received: from more.local ([10.0.1.129] port=58141)
 by more.local([10.0.1.129] port=25) via TCP with esmtp (2315 bytes)
 (sender: <woods@HIDDEN>) id <m1u6OCO-00Mo5f0@HIDDEN>
 for <eliz@HIDDEN>; Sat, 19 Apr 2025 23:30:40 -0700 (PDT)
 (Smail-3.2.0.122-Pre 2005-Nov-17 #1 built 2022-Apr-6)
Message-Id: <m1u6OCO-00Mo5f0@HIDDEN>
Date: Sat, 19 Apr 2025 23:30:39 -0700
From: "Greg A. Woods" <woods@HIDDEN>
To: Paul Eggert <eggert@HIDDEN>
Subject: Re: bug#77476: [PATCH] Rename various hash functions to avoid
 clashing with GnuTLS.
In-Reply-To: <b563004b-3d83-4bfd-a709-cecef6eb7624@HIDDEN>
References: <m1u0BWl-00NOtVC@HIDDEN> <86zfgxzuis.fsf@HIDDEN>
 <m1u0QkE-00N3he0@HIDDEN> <864iz4yzt9.fsf@HIDDEN>
 <86cyd88dm3.fsf@HIDDEN>
 <b563004b-3d83-4bfd-a709-cecef6eb7624@HIDDEN>
User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue)
 FLIM-LB/1.14.9 (=?ISO-8859-4?Q?Goj=F2?=) APEL-LB/10.8 EasyPG/1.0.0
 Emacs/27.2 (x86_64-unknown-netbsd) MULE/6.0 (HANACHIRUSATO)
X-Face: ; j3Eth2XV8h1Yfu<eXd9JL+"t;
 iT8?{X]Fjm`Qb]>*uL{<:dQ$#E[DB0gemGZJ"J#4fH*][
 lz; @-iwMv_u\6uIEKR0KY"=MzoQH#CrqBN`nG_5B@rrM8,f~Gr&h5a\=<t0loVf0$}bP=]i3OMh"n_
 _@m4/, ~2`V=(-9LyW.)'`@E_fE^<4y7)BIe`A''/j-Y#gDNZERh%CCij'q-NA4F<|yjznEhd7=l^xH
 2.qD3o0IanGHERTW+z$G
Precedence: first-class
Organization: Robo-Hacker
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: text/plain; charset=US-ASCII
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77476-done
Cc: Eli Zaretskii <eliz@HIDDEN>, 77476-done <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

At Sat, 19 Apr 2025 22:32:44 -0700, Paul Eggert <eggert@HIDDEN> wrote:
Subject: Re: bug#77476: [PATCH] Rename various hash functions to avoid clashing with GnuTLS.
> 
>  Hardly anybody links statically;

While this is probably true for Emacs, I find it is still good practice
to test that programs can still static-link.  I also find that my
static-linked emacs will consistently start a good whole two seconds
faster on a much slower older system that the necessarily dynamic-linked
version starts on macOS on one of the newest and fastest of the x86
Mac-Pro systems, all other build options and runtime environment the same.

> Marking the bug as done.

Thanks!  (and thanks also for prompting GnuTLS to fix the root problem)

-- 
					Greg A. Woods <gwoods@HIDDEN>

Kelowna, BC     +1 250 762-7675           RoboHack <woods@HIDDEN>
Planix, Inc. <woods@HIDDEN>     Avoncote Farms <woods@HIDDEN>




Acknowledgement sent to "Greg A. Woods" <woods@HIDDEN>:
Extra info received and forwarded to list. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Information forwarded to bug-gnu-emacs@HIDDEN:
bug#77476; Package emacs. Full text available.

Message received at 77476-done <at> debbugs.gnu.org:


Received: (at 77476-done) by debbugs.gnu.org; 20 Apr 2025 05:32:55 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Apr 20 01:32:55 2025
Received: from localhost ([127.0.0.1]:43260 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u6NIU-0005Cz-EE
	for submit <at> debbugs.gnu.org; Sun, 20 Apr 2025 01:32:55 -0400
Received: from mail.cs.ucla.edu ([131.179.128.66]:40090)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eggert@HIDDEN>)
 id 1u6NIR-0005Cf-1P
 for 77476-done <at> debbugs.gnu.org; Sun, 20 Apr 2025 01:32:52 -0400
Received: from localhost (localhost [127.0.0.1])
 by mail.cs.ucla.edu (Postfix) with ESMTP id 0CC1A3C010841;
 Sat, 19 Apr 2025 22:32:45 -0700 (PDT)
Received: from mail.cs.ucla.edu ([127.0.0.1])
 by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP
 id xYJNdZXNQXjD; Sat, 19 Apr 2025 22:32:44 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1])
 by mail.cs.ucla.edu (Postfix) with ESMTP id D7EBA3C010844;
 Sat, 19 Apr 2025 22:32:44 -0700 (PDT)
DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu D7EBA3C010844
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu;
 s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1745127164;
 bh=yNQWYKeHqNn2DxvpFOfg6WjrxmqAa8RxJdcQ3ov5JpI=;
 h=Message-ID:Date:MIME-Version:To:From;
 b=D10MKCqowEp4VeYxMhPyc9UyXwIenbMqWdMSDVrSp0Mn88t2uD3HQ2TpNjb3Gw+eY
 n0M0Lm7mLhj0/ue2IMhvI/MuDHaG5b0yEu8NLmm5E2BV24MKZ7Mcgq5Nr0hErfXqSW
 3sATw/393R0MCnQTY+aFRCBE2tmIJRraCe2gKL+3RsdKpV41+9+xCTQaBjRlsqZT1R
 QbHnuOTz5mi0W/1W+NVaSxOBVxSppyABT/IG4Nt/FD9SGSukznuUwm2KP7qmQ3NqWx
 wMgtAiqPfXBnRswOar/I+MU90urdcZPk1edfR47PHR7TqBqcE0JLHjV3jGjHMQshC/
 sW7/lxN+Ogf9g==
X-Virus-Scanned: amavis at mail.cs.ucla.edu
Received: from mail.cs.ucla.edu ([127.0.0.1])
 by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP
 id ANiLHB0d-OpV; Sat, 19 Apr 2025 22:32:44 -0700 (PDT)
Received: from [192.168.254.12]
 (47-147-225-25.fdr01.snmn.ca.ip.frontiernet.net [47.147.225.25])
 by mail.cs.ucla.edu (Postfix) with ESMTPSA id B2FAA3C010841;
 Sat, 19 Apr 2025 22:32:44 -0700 (PDT)
Content-Type: multipart/mixed; boundary="------------WZZTtZ7Ua0Fg97WqUd6AGHCE"
Message-ID: <b563004b-3d83-4bfd-a709-cecef6eb7624@HIDDEN>
Date: Sat, 19 Apr 2025 22:32:44 -0700
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77476: [PATCH] Rename various hash functions to avoid
 clashing with GnuTLS.
To: Eli Zaretskii <eliz@HIDDEN>
References: <m1u0BWl-00NOtVC@HIDDEN> <86zfgxzuis.fsf@HIDDEN>
 <m1u0QkE-00N3he0@HIDDEN> <864iz4yzt9.fsf@HIDDEN>
 <86cyd88dm3.fsf@HIDDEN>
Content-Language: en-US
From: Paul Eggert <eggert@HIDDEN>
Organization: UCLA Computer Science Department
In-Reply-To: <86cyd88dm3.fsf@HIDDEN>
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77476-done
Cc: 77476-done <at> debbugs.gnu.org, woods@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

This is a multi-part message in MIME format.
--------------WZZTtZ7Ua0Fg97WqUd6AGHCE
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 2025-04-19 06:50, Eli Zaretskii wrote:
> Paul, could you please chime in, since these are Gnulib
> functions we're talking about.

GnuTLS incorrectly exports some Gnulib functions to the outside world, 
and this breaks programs that use these function names for their own 
purposes.

Gnulib has a way to fix this: its lib-symbol-visibility module. GnuTLS 
should use this (or do the equivalent by hand), but doesn't. I suppose 
GnuTLS has other visibility problems like this, and they should all be 
fixed. I filed a bug report with the GnuTLS folks about this; see 
<https://gitlab.com/gnutls/gnutls/-/issues/1703>.

Possibly this problem even affects normal (i.e., dynamically linked) 
Emacs on some platforms. As Greg says, the semantics of name clashes is 
not portable, and I am particularly worried about what would happen if 
dynamically loaded modules refer to the clashing names on some random 
platform. As we can't expect GnuTLS to fix their bug soon, or for all 
our users to update to the fixed GnuTLS version soon, we should change 
the Emacs names to avoid the clash in the meantime.

It's just two names so I did that, by installing the attached patch on 
master. I changed "hash_string" to "hash_char_array" which is a more 
accurate name as the argument is not a C string, and I changed 
"hash_lookup" to "hash_find" which is a bit shorter. I also changed two 
other names to match.

I doubt whether this patch is urgent enough to backport to the emacs-30 
branch. Hardly anybody links statically; the GnuTLS build procedure even 
warns against doing static linking (due to other static-linking problems 
that Emacs does not run into). And most likely, dynamically-linked 
modules won't use the clashing symbols.

Marking the bug as done.

--------------WZZTtZ7Ua0Fg97WqUd6AGHCE
Content-Type: text/x-patch; charset=UTF-8;
 name="0001-Avoid-name-clashes-with-static-GnuTLS.patch"
Content-Disposition: attachment;
 filename="0001-Avoid-name-clashes-with-static-GnuTLS.patch"
Content-Transfer-Encoding: base64

RnJvbSBjOGVlZDkwZWI0ZDA1ODNkYzM0NjNlZGZhZDE3NmI5ZDNmOThkMTFmIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1
PgpEYXRlOiBTYXQsIDE5IEFwciAyMDI1IDE4OjQ0OjUyIC0wNzAwClN1YmplY3Q6IFtQQVRD
SF0gQXZvaWQgbmFtZSBjbGFzaGVzIHdpdGggc3RhdGljIEdudVRMUwpNSU1FLVZlcnNpb246
IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1U
cmFuc2Zlci1FbmNvZGluZzogOGJpdAoKV29yayBhcm91bmQgYSBidWcgaW4gR251VExTIDMu
Ny4xMSBhbmQgZWFybGllcjogd2hlbiBidWlsdApzdGF0aWNhbGx5LCBpdHMgbWlzdGFrZW5s
eSBleHBvcnRzIHN5bWJvbHMgaGFzaF9sb29rdXAgYW5kCmhhc2hfc3RyaW5nLCB3aGljaCBj
b2xsaWRlIHdpdGggRW1hY3Mgc3ltYm9scyBvZiB0aGUgc2FtZSBuYW1lLApwcmV2ZW50aW5n
IHRlbWFjcyBmcm9tIGxpbmtpbmcgc3RhdGljYWxseS4gIFByb2JsZW0gcmVwb3J0ZWQgYnkK
R3JlZyBBLiBXb29kcyAoQnVnIzc3NDc2KS4KCkJlY2F1c2UgR251VExTIG5ldmVyIHVzZXMg
aGFzaF9sb29rdXAgb3IgaGFzaF9zdHJpbmcgdGhpcyBpc3N1ZQpvcmRpbmFyaWx5IGRvZXNu
4oCZdCBzZWVtIHRvIHByZXZlbnQgdGVtYWNzIGZyb20gbGlua2luZyB0byBHbnVUTFMKb24g
R05VL0xpbnV4LCBhcyBpdOKAmXMgbGlua2VkIGR5bmFtaWNhbGx5IGFuZCB0aGUgZHluYW1p
YyBsaW5rZXIKbmV2ZXIgbmVlZHMgdG8gcmVzb2x2ZSByZWZlcmVuY2VzIHRvIGVpdGhlciBz
eW1ib2wuICBIb3dldmVyLCBJCnN1cHBvc2UgYSBjbGFzaCBvciBidWcgY291bGQgb2NjdXIg
ZXZlbiB3aXRoIGR5bmFtaWMgbGlua2luZyBpZgpFbWFjcyBsYXRlciBsb2FkcyBhIG1vZHVs
ZSB0aGF0IHVzZXMgZWl0aGVyIHN5bWJvbC4KCkFsdGhvdWdoIEdudVRMUyBzaG91bGQgYmUg
Zml4ZWQsIEVtYWNzIHNob3VsZCBsaW5rIHN0YXRpY2FsbHkgdG8KY3VycmVudCBhbmQgb2xk
ZXIgR251VExTIHZlcnNpb25zIGluIHRoZSBtZWFudGltZSwgYW5kIGl0IHNob3VsZAphdm9p
ZCBwb3RlbnRpYWwgcHJvYmxlbXMgd2l0aCBkeW5hbWljIGxpbmtpbmcuICBSZW5hbWluZyB0
aGUgdHdvCmNsYXNoaW5nIG5hbWVzIGlzIGFuIGVhc3kgd2F5IHRvIGRvIHRoaXMuICBGb3Ig
Y29uc2lzdGVuY3kgd2l0aAp0aGUgbmV3IG5hbWUgZm9yIGhhc2hfbG9va3VwLCBhbHNvIHJl
bmFtZSBoYXNoX2xvb2t1cF93aXRoX2hhc2gKYW5kIGhhc2hfbG9va3VwX2dldF9oYXNoLgoK
KiBzcmMvZm5zLmMgKGhhc2hfZmluZF93aXRoX2hhc2gpOiBSZW5hbWUgZnJvbSBoYXNoX2xv
b2t1cF93aXRoX2hhc2guCihoYXNoX2ZpbmQpOiBSZW5hbWUgZnJvbSBoYXNoX2xvb2t1cC4K
KGhhc2hfZmluZF9nZXRfaGFzaCk6IFJlbmFtZSBmcm9tIGhhc2hfbG9va3VwX2dldF9oYXNo
LgooaGFzaF9jaGFyX2FycmF5KTogUmVuYW1lIGZyb20gaGFzaF9zdHJpbmcuCkFsbCB1c2Vz
IGNoYW5nZWQuCi0tLQogc3JjL2J5dGVjb2RlLmMgICAgIHwgIDIgKy0KIHNyYy9jYXRlZ29y
eS5jICAgICB8ICAyICstCiBzcmMvY2NsLmMgICAgICAgICAgfCAgNCArKy0tCiBzcmMvY2hh
cnNldC5jICAgICAgfCAgMyArLS0KIHNyYy9jaGFyc2V0LmggICAgICB8ICAyICstCiBzcmMv
Y29kaW5nLmggICAgICAgfCAgMiArLQogc3JjL2NvbXBvc2l0ZS5jICAgIHwgIDIgKy0KIHNy
Yy9lbWFjcy1tb2R1bGUuYyB8ICA2ICsrKy0tLQogc3JjL2Zucy5jICAgICAgICAgIHwgMjgg
KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogc3JjL2ltYWdlLmMgICAgICAgIHwgIDYg
KysrLS0tCiBzcmMvanNvbi5jICAgICAgICAgfCAgMiArLQogc3JjL2xpc3AuaCAgICAgICAg
IHwgIDggKysrKy0tLS0KIHNyYy9scmVhZC5jICAgICAgICB8IDE2ICsrKysrKysrLS0tLS0t
LS0KIHNyYy9tYWNmb250Lm0gICAgICB8ICA0ICsrLS0KIHNyYy9taW5pYnVmLmMgICAgICB8
ICAyICstCiAxNSBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCA0NSBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYnl0ZWNvZGUuYyBiL3NyYy9ieXRlY29kZS5jCmlu
ZGV4IGVjZWEwYzZkZjM2Li40NDc1ZDRhMGIzMCAxMDA2NDQKLS0tIGEvc3JjL2J5dGVjb2Rl
LmMKKysrIGIvc3JjL2J5dGVjb2RlLmMKQEAgLTE3NjMsNyArMTc2Myw3IEBAICNkZWZpbmUg
REVGSU5FKG5hbWUsIHZhbHVlKSBbbmFtZV0gPSAmJmluc25fICMjIG5hbWUsCiAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKIAkgICAgICB7Ci0JCXB0cmRpZmZfdCBpID0g
aGFzaF9sb29rdXAgKGgsIHYxKTsKKwkJcHRyZGlmZl90IGkgPSBoYXNoX2ZpbmQgKGgsIHYx
KTsKIAkJaWYgKGkgPj0gMCkKIAkJICB7CiAJCSAgICBvcCA9IFhGSVhOVU0gKEhBU0hfVkFM
VUUgKGgsIGkpKTsKZGlmZiAtLWdpdCBhL3NyYy9jYXRlZ29yeS5jIGIvc3JjL2NhdGVnb3J5
LmMKaW5kZXggMjk3YmE5NGM3M2QuLmY2NWM3ZDk0MzMxIDEwMDY0NAotLS0gYS9zcmMvY2F0
ZWdvcnkuYworKysgYi9zcmMvY2F0ZWdvcnkuYwpAQCAtNTQsNyArNTQsNyBAQCBoYXNoX2dl
dF9jYXRlZ29yeV9zZXQgKExpc3BfT2JqZWN0IHRhYmxlLCBMaXNwX09iamVjdCBjYXRlZ29y
eV9zZXQpCiAgICAgICAgbWFrZV9oYXNoX3RhYmxlICgmaGFzaHRlc3RfZXF1YWwsIERFRkFV
TFRfSEFTSF9TSVpFLCBXZWFrX05vbmUpKTsKICAgc3RydWN0IExpc3BfSGFzaF9UYWJsZSAq
aCA9IFhIQVNIX1RBQkxFIChYQ0hBUl9UQUJMRSAodGFibGUpLT5leHRyYXNbMV0pOwogICBo
YXNoX2hhc2hfdCBoYXNoOwotICBwdHJkaWZmX3QgaSA9IGhhc2hfbG9va3VwX2dldF9oYXNo
IChoLCBjYXRlZ29yeV9zZXQsICZoYXNoKTsKKyAgcHRyZGlmZl90IGkgPSBoYXNoX2ZpbmRf
Z2V0X2hhc2ggKGgsIGNhdGVnb3J5X3NldCwgJmhhc2gpOwogICBpZiAoaSA+PSAwKQogICAg
IHJldHVybiBIQVNIX0tFWSAoaCwgaSk7CiAgIGhhc2hfcHV0IChoLCBjYXRlZ29yeV9zZXQs
IFFuaWwsIGhhc2gpOwpkaWZmIC0tZ2l0IGEvc3JjL2NjbC5jIGIvc3JjL2NjbC5jCmluZGV4
IGE0NWZlMDQzOWM0Li4zNjA5NGNhNjI3ZSAxMDA2NDQKLS0tIGEvc3JjL2NjbC5jCisrKyBi
L3NyYy9jY2wuYwpAQCAtMTM3NSw3ICsxMzc1LDcgQEAgI2RlZmluZSBFWENNRCAoZmllbGQx
ID4+IDYpCiAKIAkJZW9wID0gKEZJWE5VTV9PVkVSRkxPV19QIChyZWdbUlJSXSkKIAkJICAg
ICAgID8gLTEKLQkJICAgICAgIDogaGFzaF9sb29rdXAgKGgsIG1ha2VfZml4bnVtIChyZWdb
UlJSXSkpKTsKKwkJICAgICAgIDogaGFzaF9maW5kIChoLCBtYWtlX2ZpeG51bSAocmVnW1JS
Ul0pKSk7CiAJCWlmIChlb3AgPj0gMCkKIAkJICB7CiAJCSAgICBMaXNwX09iamVjdCBvcGw7
CkBAIC0xNDA0LDcgKzE0MDQsNyBAQCAjZGVmaW5lIEVYQ01EIChmaWVsZDEgPj4gNikKIAog
CQllb3AgPSAoRklYTlVNX09WRVJGTE9XX1AgKGkpCiAJCSAgICAgICA/IC0xCi0JCSAgICAg
ICA6IGhhc2hfbG9va3VwIChoLCBtYWtlX2ZpeG51bSAoaSkpKTsKKwkJICAgICAgIDogaGFz
aF9maW5kIChoLCBtYWtlX2ZpeG51bSAoaSkpKTsKIAkJaWYgKGVvcCA+PSAwKQogCQkgIHsK
IAkJICAgIExpc3BfT2JqZWN0IG9wbDsKZGlmZiAtLWdpdCBhL3NyYy9jaGFyc2V0LmMgYi9z
cmMvY2hhcnNldC5jCmluZGV4IDc5N2RmZGUyNzZmLi4zMjY0ZDc1ZjkyZSAxMDA2NDQKLS0t
IGEvc3JjL2NoYXJzZXQuYworKysgYi9zcmMvY2hhcnNldC5jCkBAIC0xMTEyLDggKzExMTIs
NyBAQCBERUZVTiAoImRlZmluZS1jaGFyc2V0LWludGVybmFsIiwgRmRlZmluZV9jaGFyc2V0
X2ludGVybmFsLAogCiAgIGhhc2hfaGFzaF90IGhhc2hfY29kZTsKICAgcHRyZGlmZl90IGhh
c2hfaW5kZXgKLSAgICA9IGhhc2hfbG9va3VwX2dldF9oYXNoIChoYXNoX3RhYmxlLCBhcmdz
W2NoYXJzZXRfYXJnX25hbWVdLAotCQkJICAgICZoYXNoX2NvZGUpOworICAgID0gaGFzaF9m
aW5kX2dldF9oYXNoIChoYXNoX3RhYmxlLCBhcmdzW2NoYXJzZXRfYXJnX25hbWVdLCAmaGFz
aF9jb2RlKTsKICAgaWYgKGhhc2hfaW5kZXggPj0gMCkKICAgICB7CiAgICAgICBuZXdfZGVm
aW5pdGlvbl9wID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvY2hhcnNldC5oIGIvc3JjL2No
YXJzZXQuaAppbmRleCAwMjE3ZWMzMjFmZi4uZjc2ZTkxMDA4OTIgMTAwNjQ0Ci0tLSBhL3Ny
Yy9jaGFyc2V0LmgKKysrIGIvc3JjL2NoYXJzZXQuaApAQCAtMjg1LDcgKzI4NSw3IEBAICNk
ZWZpbmUgQ0hBUlNFVF9TWU1CT0xfSUQoc3ltYm9sKQlcCiAvKiBSZXR1cm4gYW4gaW5kZXgg
dG8gVmNoYXJzZXRfaGFzaF90YWJsZSBvZiB0aGUgY2hhcnNldCB3aG9zZSBzeW1ib2wKICAg
IGlzIFNZTUJPTC4gICovCiAjZGVmaW5lIENIQVJTRVRfU1lNQk9MX0hBU0hfSU5ERVgoc3lt
Ym9sKQlcCi0gIGhhc2hfbG9va3VwIChYSEFTSF9UQUJMRSAoVmNoYXJzZXRfaGFzaF90YWJs
ZSksIHN5bWJvbCkKKyAgaGFzaF9maW5kIChYSEFTSF9UQUJMRSAoVmNoYXJzZXRfaGFzaF90
YWJsZSksIHN5bWJvbCkKIAogLyogUmV0dXJuIHRoZSBhdHRyaWJ1dGUgdmVjdG9yIG9mIENI
QVJTRVQuICAqLwogI2RlZmluZSBDSEFSU0VUX0FUVFJJQlVURVMoY2hhcnNldCkgKGNoYXJz
ZXQpLT5hdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9zcmMvY29kaW5nLmggYi9zcmMvY29kaW5n
LmgKaW5kZXggYjcyZmZkZTNjNTUuLjJkNTM4YmE2OWQzIDEwMDY0NAotLS0gYS9zcmMvY29k
aW5nLmgKKysrIGIvc3JjL2NvZGluZy5oCkBAIC0xOTMsNyArMTkzLDcgQEAgI2RlZmluZSBD
T0RJTkdfU1lTVEVNX1NQRUMoY29kaW5nX3N5c3RlbV9zeW1ib2wpCVwKIC8qIFJldHVybiB0
aGUgSUQgb2YgQ09ESU5HX1NZU1RFTV9TWU1CT0wuICAqLwogCiAjZGVmaW5lIENPRElOR19T
WVNURU1fSUQoY29kaW5nX3N5c3RlbV9zeW1ib2wpCQkJXAotICBoYXNoX2xvb2t1cCAoWEhB
U0hfVEFCTEUgKFZjb2Rpbmdfc3lzdGVtX2hhc2hfdGFibGUpLAkJXAorICBoYXNoX2ZpbmQg
KFhIQVNIX1RBQkxFIChWY29kaW5nX3N5c3RlbV9oYXNoX3RhYmxlKSwJCVwKIAkgICAgICAg
Y29kaW5nX3N5c3RlbV9zeW1ib2wpCiAKIC8qIFJldHVybiB0cnVlIGlmIENPRElOR19TWVNU
RU1fU1lNQk9MIGlzIGEgY29kaW5nIHN5c3RlbS4gICovCmRpZmYgLS1naXQgYS9zcmMvY29t
cG9zaXRlLmMgYi9zcmMvY29tcG9zaXRlLmMKaW5kZXggMmVmNzJhMzNkMmUuLmI2YzViNjFh
NmE5IDEwMDY0NAotLS0gYS9zcmMvY29tcG9zaXRlLmMKKysrIGIvc3JjL2NvbXBvc2l0ZS5j
CkBAIC0yNDEsNyArMjQxLDcgQEAgZ2V0X2NvbXBvc2l0aW9uX2lkIChwdHJkaWZmX3QgY2hh
cnBvcywgcHRyZGlmZl90IGJ5dGVwb3MsIHB0cmRpZmZfdCBuY2hhcnMsCiAgICAgZ290byBp
bnZhbGlkX2NvbXBvc2l0aW9uOwogCiAgIGhhc2hfaGFzaF90IGhhc2hfY29kZTsKLSAgaGFz
aF9pbmRleCA9IGhhc2hfbG9va3VwX2dldF9oYXNoIChoYXNoX3RhYmxlLCBrZXksICZoYXNo
X2NvZGUpOworICBoYXNoX2luZGV4ID0gaGFzaF9maW5kX2dldF9oYXNoIChoYXNoX3RhYmxl
LCBrZXksICZoYXNoX2NvZGUpOwogICBpZiAoaGFzaF9pbmRleCA+PSAwKQogICAgIHsKICAg
ICAgIC8qIFdlIGhhdmUgYWxyZWFkeSByZWdpc3RlcmVkIHRoZSBzYW1lIGNvbXBvc2l0aW9u
LiAgQ2hhbmdlIFBST1AKZGlmZiAtLWdpdCBhL3NyYy9lbWFjcy1tb2R1bGUuYyBiL3NyYy9l
bWFjcy1tb2R1bGUuYwppbmRleCA3Nzk3YjA0ZTAyNi4uMmZlY2E0MWU3YWUgMTAwNjQ0Ci0t
LSBhL3NyYy9lbWFjcy1tb2R1bGUuYworKysgYi9zcmMvZW1hY3MtbW9kdWxlLmMKQEAgLTQx
Myw3ICs0MTMsNyBAQCBYTU9EVUxFX0dMT0JBTF9SRUZFUkVOQ0UgKExpc3BfT2JqZWN0IG8p
CiBtb2R1bGVfZ2xvYmFsX3JlZmVyZW5jZV9wIChlbWFjc192YWx1ZSB2LCBwdHJkaWZmX3Qg
Km4pCiB7CiAgIHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmggPSBYSEFTSF9UQUJMRSAoVm1v
ZHVsZV9yZWZzX2hhc2gpOwotICAvKiBOb3RlIHRoYXQgd2UgY2FuJ3QgdXNlIGBoYXNoX2xv
b2t1cCcgYmVjYXVzZSBWIG1pZ2h0IGJlIGEgbG9jYWwKKyAgLyogTm90ZSB0aGF0IHdlIGNh
bid0IHVzZSBgaGFzaF9maW5kJyBiZWNhdXNlIFYgbWlnaHQgYmUgYSBsb2NhbAogICAgICBy
ZWZlcmVuY2UgdGhhdCdzIGlkZW50aWNhbCB0byBzb21lIGdsb2JhbCByZWZlcmVuY2UuICAq
LwogICBET0hBU0ggKGgsIGssIHZhbCkKICAgICBpZiAoJlhNT0RVTEVfR0xPQkFMX1JFRkVS
RU5DRSAodmFsKS0+dmFsdWUgPT0gdikKQEAgLTQzMSw3ICs0MzEsNyBAQCBtb2R1bGVfbWFr
ZV9nbG9iYWxfcmVmIChlbWFjc19lbnYgKmVudiwgZW1hY3NfdmFsdWUgdmFsdWUpCiAgIHN0
cnVjdCBMaXNwX0hhc2hfVGFibGUgKmggPSBYSEFTSF9UQUJMRSAoVm1vZHVsZV9yZWZzX2hh
c2gpOwogICBMaXNwX09iamVjdCBuZXdfb2JqID0gdmFsdWVfdG9fbGlzcCAodmFsdWUpOwog
ICBoYXNoX2hhc2hfdCBoYXNoY29kZTsKLSAgcHRyZGlmZl90IGkgPSBoYXNoX2xvb2t1cF9n
ZXRfaGFzaCAoaCwgbmV3X29iaiwgJmhhc2hjb2RlKTsKKyAgcHRyZGlmZl90IGkgPSBoYXNo
X2ZpbmRfZ2V0X2hhc2ggKGgsIG5ld19vYmosICZoYXNoY29kZSk7CiAKICAgLyogTm90ZTog
VGhpcyBhcHByb2FjaCByZXF1aXJlcyB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgdG8gbmV2ZXIg
bW92ZQogICAgICBvYmplY3RzLiAgKi8KQEAgLTQ3MCw3ICs0NzAsNyBAQCBtb2R1bGVfZnJl
ZV9nbG9iYWxfcmVmIChlbWFjc19lbnYgKmVudiwgZW1hY3NfdmFsdWUgZ2xvYmFsX3ZhbHVl
KQogICBNT0RVTEVfRlVOQ1RJT05fQkVHSU4gKCk7CiAgIHN0cnVjdCBMaXNwX0hhc2hfVGFi
bGUgKmggPSBYSEFTSF9UQUJMRSAoVm1vZHVsZV9yZWZzX2hhc2gpOwogICBMaXNwX09iamVj
dCBvYmogPSB2YWx1ZV90b19saXNwIChnbG9iYWxfdmFsdWUpOwotICBwdHJkaWZmX3QgaSA9
IGhhc2hfbG9va3VwIChoLCBvYmopOworICBwdHJkaWZmX3QgaSA9IGhhc2hfZmluZCAoaCwg
b2JqKTsKIAogICBpZiAobW9kdWxlX2Fzc2VydGlvbnMpCiAgICAgewpkaWZmIC0tZ2l0IGEv
c3JjL2Zucy5jIGIvc3JjL2Zucy5jCmluZGV4IGU5NjQzNjI3YmZhLi41MmY2NjdhNzJhNSAx
MDA2NDQKLS0tIGEvc3JjL2Zucy5jCisrKyBiL3NyYy9mbnMuYwpAQCAtMjgxNSw4ICsyODE1
LDggQEAgZXF1YWxfbm9fcXVpdCAoTGlzcF9PYmplY3QgbzEsIExpc3BfT2JqZWN0IG8yKQog
ICByZXR1cm4gaW50ZXJuYWxfZXF1YWwgKG8xLCBvMiwgRVFVQUxfTk9fUVVJVCwgMCwgUW5p
bCk7CiB9CiAKLXN0YXRpYyBwdHJkaWZmX3QgaGFzaF9sb29rdXBfd2l0aF9oYXNoIChzdHJ1
Y3QgTGlzcF9IYXNoX1RhYmxlICpoLAotCQkJCQlMaXNwX09iamVjdCBrZXksIGhhc2hfaGFz
aF90IGhhc2gpOworc3RhdGljIHB0cmRpZmZfdCBoYXNoX2ZpbmRfd2l0aF9oYXNoIChzdHJ1
Y3QgTGlzcF9IYXNoX1RhYmxlICpoLAorCQkJCSAgICAgIExpc3BfT2JqZWN0IGtleSwgaGFz
aF9oYXNoX3QgaGFzaCk7CiAKIAogLyogUmV0dXJuIHRydWUgaWYgTzEgYW5kIE8yIGFyZSBl
cXVhbC4gIEVRVUFMX0tJTkQgc3BlY2lmaWVzIHdoYXQga2luZApAQCAtMjg0OCw3ICsyODQ4
LDcgQEAgaW50ZXJuYWxfZXF1YWxfMSAoTGlzcF9PYmplY3QgbzEsIExpc3BfT2JqZWN0IG8y
LCBlbnVtIGVxdWFsX2tpbmQgZXF1YWxfa2luZCwKIAkgIHsKIAkgICAgc3RydWN0IExpc3Bf
SGFzaF9UYWJsZSAqaCA9IFhIQVNIX1RBQkxFICgqaHQpOwogCSAgICBoYXNoX2hhc2hfdCBo
YXNoID0gaGFzaF9mcm9tX2tleSAoaCwgbzEpOwotCSAgICBwdHJkaWZmX3QgaSA9IGhhc2hf
bG9va3VwX3dpdGhfaGFzaCAoaCwgbzEsIGhhc2gpOworCSAgICBwdHJkaWZmX3QgaSA9IGhh
c2hfZmluZF93aXRoX2hhc2ggKGgsIG8xLCBoYXNoKTsKIAkgICAgaWYgKGkgPj0gMCkKIAkg
ICAgICB7IC8qIGBvMScgd2FzIHNlZW4gYWxyZWFkeS4gICovCiAJCUxpc3BfT2JqZWN0IG8y
cyA9IEhBU0hfVkFMVUUgKGgsIGkpOwpAQCAtNTAzMSw4ICs1MDMxLDggQEAgaGFzaF90YWJs
ZV90aGF3IChMaXNwX09iamVjdCBoYXNoX3RhYmxlKQogLyogTG9vayB1cCBLRVkgd2l0aCBo
YXNoIEhBU0ggaW4gdGFibGUgSC4KICAgIFJldHVybiBlbnRyeSBpbmRleCBvciAtMSBpZiBu
b25lLiAgKi8KIHN0YXRpYyBwdHJkaWZmX3QKLWhhc2hfbG9va3VwX3dpdGhfaGFzaCAoc3Ry
dWN0IExpc3BfSGFzaF9UYWJsZSAqaCwKLQkJICAgICAgIExpc3BfT2JqZWN0IGtleSwgaGFz
aF9oYXNoX3QgaGFzaCkKK2hhc2hfZmluZF93aXRoX2hhc2ggKHN0cnVjdCBMaXNwX0hhc2hf
VGFibGUgKmgsCisJCSAgICAgTGlzcF9PYmplY3Qga2V5LCBoYXNoX2hhc2hfdCBoYXNoKQog
ewogICBwdHJkaWZmX3Qgc3RhcnRfb2ZfYnVja2V0ID0gaGFzaF9pbmRleF9pbmRleCAoaCwg
aGFzaCk7CiAgIGZvciAocHRyZGlmZl90IGkgPSBIQVNIX0lOREVYIChoLCBzdGFydF9vZl9i
dWNrZXQpOwpAQCAtNTA0OCwyMCArNTA0OCwyMCBAQCBoYXNoX2xvb2t1cF93aXRoX2hhc2gg
KHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmgsCiAKIC8qIExvb2sgdXAgS0VZIGluIHRhYmxl
IEguICBSZXR1cm4gZW50cnkgaW5kZXggb3IgLTEgaWYgbm9uZS4gICovCiBwdHJkaWZmX3QK
LWhhc2hfbG9va3VwIChzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoLCBMaXNwX09iamVjdCBr
ZXkpCitoYXNoX2ZpbmQgKHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmgsIExpc3BfT2JqZWN0
IGtleSkKIHsKLSAgcmV0dXJuIGhhc2hfbG9va3VwX3dpdGhfaGFzaCAoaCwga2V5LCBoYXNo
X2Zyb21fa2V5IChoLCBrZXkpKTsKKyAgcmV0dXJuIGhhc2hfZmluZF93aXRoX2hhc2ggKGgs
IGtleSwgaGFzaF9mcm9tX2tleSAoaCwga2V5KSk7CiB9CiAKIC8qIExvb2sgdXAgS0VZIGlu
IGhhc2ggdGFibGUgSC4gIFJldHVybiBpdHMgaGFzaCB2YWx1ZSBpbiAqUEhBU0guCiAgICBW
YWx1ZSBpcyB0aGUgaW5kZXggb2YgdGhlIGVudHJ5IGluIEggbWF0Y2hpbmcgS0VZLCBvciAt
MSBpZiBub3QgZm91bmQuICAqLwogcHRyZGlmZl90Ci1oYXNoX2xvb2t1cF9nZXRfaGFzaCAo
c3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaCwgTGlzcF9PYmplY3Qga2V5LAotCQkgICAgICBo
YXNoX2hhc2hfdCAqcGhhc2gpCitoYXNoX2ZpbmRfZ2V0X2hhc2ggKHN0cnVjdCBMaXNwX0hh
c2hfVGFibGUgKmgsIExpc3BfT2JqZWN0IGtleSwKKwkJICAgIGhhc2hfaGFzaF90ICpwaGFz
aCkKIHsKICAgRU1BQ1NfVUlOVCBoYXNoID0gaGFzaF9mcm9tX2tleSAoaCwga2V5KTsKICAg
KnBoYXNoID0gaGFzaDsKLSAgcmV0dXJuIGhhc2hfbG9va3VwX3dpdGhfaGFzaCAoaCwga2V5
LCBoYXNoKTsKKyAgcmV0dXJuIGhhc2hfZmluZF93aXRoX2hhc2ggKGgsIGtleSwgaGFzaCk7
CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC01Mjg2LDcgKzUyODYsNyBAQCAjZGVmaW5lIFNYSEFT
SF9NQVhfTEVOICAgNwogICAgY2FuIGJlIGFueSBFTUFDU19VSU5UIHZhbHVlLiAgKi8KIAog
RU1BQ1NfVUlOVAotaGFzaF9zdHJpbmcgKGNoYXIgY29uc3QgKnB0ciwgcHRyZGlmZl90IGxl
bikKK2hhc2hfY2hhcl9hcnJheSAoY2hhciBjb25zdCAqcHRyLCBwdHJkaWZmX3QgbGVuKQog
ewogICBjaGFyIGNvbnN0ICpwICAgPSBwdHI7CiAgIGNoYXIgY29uc3QgKmVuZCA9IHB0ciAr
IGxlbjsKQEAgLTU0NTksNyArNTQ1OSw3IEBAIHN4aGFzaF9vYmogKExpc3BfT2JqZWN0IG9i
aiwgaW50IGRlcHRoKQogICAgICAgcmV0dXJuIFhIQVNIIChvYmopOwogCiAgICAgY2FzZSBM
aXNwX1N0cmluZzoKLSAgICAgIHJldHVybiBoYXNoX3N0cmluZyAoU1NEQVRBIChvYmopLCBT
QllURVMgKG9iaikpOworICAgICAgcmV0dXJuIGhhc2hfY2hhcl9hcnJheSAoU1NEQVRBIChv
YmopLCBTQllURVMgKG9iaikpOwogCiAgICAgY2FzZSBMaXNwX1ZlY3Rvcmxpa2U6CiAgICAg
ICB7CkBAIC01ODYxLDcgKzU4NjEsNyBAQCBERUZVTiAoImdldGhhc2giLCBGZ2V0aGFzaCwg
U2dldGhhc2gsIDIsIDMsIDAsCiAgIChMaXNwX09iamVjdCBrZXksIExpc3BfT2JqZWN0IHRh
YmxlLCBMaXNwX09iamVjdCBkZmx0KQogewogICBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpo
ID0gY2hlY2tfaGFzaF90YWJsZSAodGFibGUpOwotICBwdHJkaWZmX3QgaSA9IGhhc2hfbG9v
a3VwIChoLCBrZXkpOworICBwdHJkaWZmX3QgaSA9IGhhc2hfZmluZCAoaCwga2V5KTsKICAg
cmV0dXJuIGkgPj0gMCA/IEhBU0hfVkFMVUUgKGgsIGkpIDogZGZsdDsKIH0KIApAQCAtNTg3
Niw3ICs1ODc2LDcgQEAgREVGVU4gKCJwdXRoYXNoIiwgRnB1dGhhc2gsIFNwdXRoYXNoLCAz
LCAzLCAwLAogICBjaGVja19tdXRhYmxlX2hhc2hfdGFibGUgKHRhYmxlLCBoKTsKIAogICBF
TUFDU19VSU5UIGhhc2ggPSBoYXNoX2Zyb21fa2V5IChoLCBrZXkpOwotICBwdHJkaWZmX3Qg
aSA9IGhhc2hfbG9va3VwX3dpdGhfaGFzaCAoaCwga2V5LCBoYXNoKTsKKyAgcHRyZGlmZl90
IGkgPSBoYXNoX2ZpbmRfd2l0aF9oYXNoIChoLCBrZXksIGhhc2gpOwogICBpZiAoaSA+PSAw
KQogICAgIHNldF9oYXNoX3ZhbHVlX3Nsb3QgKGgsIGksIHZhbHVlKTsKICAgZWxzZQpkaWZm
IC0tZ2l0IGEvc3JjL2ltYWdlLmMgYi9zcmMvaW1hZ2UuYwppbmRleCA2NWQ4ZGIyNGFkYy4u
MWQzZmFlY2Y1MDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbWFnZS5jCisrKyBiL3NyYy9pbWFnZS5j
CkBAIC01NTUyLDcgKzU1NTIsNyBAQCB4cG1fZnJlZV9jb2xvcl9jYWNoZSAodm9pZCkKIHN0
YXRpYyBpbnQKIHhwbV9jb2xvcl9idWNrZXQgKGNoYXIgKmNvbG9yX25hbWUpCiB7Ci0gIEVN
QUNTX1VJTlQgaGFzaCA9IGhhc2hfc3RyaW5nIChjb2xvcl9uYW1lLCBzdHJsZW4gKGNvbG9y
X25hbWUpKTsKKyAgRU1BQ1NfVUlOVCBoYXNoID0gaGFzaF9jaGFyX2FycmF5IChjb2xvcl9u
YW1lLCBzdHJsZW4gKGNvbG9yX25hbWUpKTsKICAgcmV0dXJuIGhhc2ggJSBYUE1fQ09MT1Jf
Q0FDSEVfQlVDS0VUUzsKIH0KIApAQCAtNjIzOCw3ICs2MjM4LDcgQEAgeHBtX3B1dF9jb2xv
cl90YWJsZV9oIChMaXNwX09iamVjdCBjb2xvcl90YWJsZSwKICAgTGlzcF9PYmplY3QgY2hh
cnMgPSBtYWtlX3VuaWJ5dGVfc3RyaW5nIChjaGFyc19zdGFydCwgY2hhcnNfbGVuKTsKIAog
ICBoYXNoX2hhc2hfdCBoYXNoX2NvZGU7Ci0gIGhhc2hfbG9va3VwX2dldF9oYXNoICh0YWJs
ZSwgY2hhcnMsICZoYXNoX2NvZGUpOworICBoYXNoX2ZpbmRfZ2V0X2hhc2ggKHRhYmxlLCBj
aGFycywgJmhhc2hfY29kZSk7CiAgIGhhc2hfcHV0ICh0YWJsZSwgY2hhcnMsIGNvbG9yLCBo
YXNoX2NvZGUpOwogfQogCkBAIC02MjQ5LDcgKzYyNDksNyBAQCB4cG1fZ2V0X2NvbG9yX3Rh
YmxlX2ggKExpc3BfT2JqZWN0IGNvbG9yX3RhYmxlLAogewogICBzdHJ1Y3QgTGlzcF9IYXNo
X1RhYmxlICp0YWJsZSA9IFhIQVNIX1RBQkxFIChjb2xvcl90YWJsZSk7CiAgIHB0cmRpZmZf
dCBpID0KLSAgICBoYXNoX2xvb2t1cCAodGFibGUsIG1ha2VfdW5pYnl0ZV9zdHJpbmcgKGNo
YXJzX3N0YXJ0LCBjaGFyc19sZW4pKTsKKyAgICBoYXNoX2ZpbmQgKHRhYmxlLCBtYWtlX3Vu
aWJ5dGVfc3RyaW5nIChjaGFyc19zdGFydCwgY2hhcnNfbGVuKSk7CiAKICAgcmV0dXJuIGkg
Pj0gMCA/IEhBU0hfVkFMVUUgKHRhYmxlLCBpKSA6IFFuaWw7CiB9CmRpZmYgLS1naXQgYS9z
cmMvanNvbi5jIGIvc3JjL2pzb24uYwppbmRleCA1Nzk1YzU4MmNlMC4uYmVhYzI0MmI3MDkg
MTAwNjQ0Ci0tLSBhL3NyYy9qc29uLmMKKysrIGIvc3JjL2pzb24uYwpAQCAtMTU3MSw3ICsx
NTcxLDcgQEAganNvbl9wYXJzZV9vYmplY3QgKHN0cnVjdCBqc29uX3BhcnNlciAqcGFyc2Vy
KQogCSAgICBoYXNoX2hhc2hfdCBoYXNoOwogCSAgICBMaXNwX09iamVjdCBrZXkgPSBwYXJz
ZXItPm9iamVjdF93b3Jrc3BhY2VbaV07CiAJICAgIExpc3BfT2JqZWN0IHZhbHVlID0gcGFy
c2VyLT5vYmplY3Rfd29ya3NwYWNlW2kgKyAxXTsKLQkgICAgcHRyZGlmZl90IGkgPSBoYXNo
X2xvb2t1cF9nZXRfaGFzaCAoaCwga2V5LCAmaGFzaCk7CisJICAgIHB0cmRpZmZfdCBpID0g
aGFzaF9maW5kX2dldF9oYXNoIChoLCBrZXksICZoYXNoKTsKIAkgICAgaWYgKGkgPCAwKQog
CSAgICAgIGhhc2hfcHV0IChoLCBrZXksIHZhbHVlLCBoYXNoKTsKIAkgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvc3JjL2xpc3AuaCBiL3NyYy9saXNwLmgKaW5kZXggYmNhNThiOWMxMmQuLmMy
NDUwNDQwYWI5IDEwMDY0NAotLS0gYS9zcmMvbGlzcC5oCisrKyBiL3NyYy9saXNwLmgKQEAg
LTQyNjEsMTQgKzQyNjEsMTQgQEAgI2RlZmluZSBDT05TX1RPX0lOVEVHRVIoY29ucywgdHlw
ZSwgdmFyKQkJCQlcCiBleHRlcm4gYm9vbCBzd2VlcF93ZWFrX3RhYmxlIChzdHJ1Y3QgTGlz
cF9IYXNoX1RhYmxlICosIGJvb2wpOwogZXh0ZXJuIHZvaWQgaGV4YnVmX2RpZ2VzdCAoY2hh
ciAqLCB2b2lkIGNvbnN0ICosIGludCk7CiBleHRlcm4gY2hhciAqZXh0cmFjdF9kYXRhX2Zy
b21fb2JqZWN0IChMaXNwX09iamVjdCwgcHRyZGlmZl90ICosIHB0cmRpZmZfdCAqKTsKLUVN
QUNTX1VJTlQgaGFzaF9zdHJpbmcgKGNoYXIgY29uc3QgKiwgcHRyZGlmZl90KTsKK0VNQUNT
X1VJTlQgaGFzaF9jaGFyX2FycmF5IChjaGFyIGNvbnN0ICosIHB0cmRpZmZfdCk7CiBFTUFD
U19VSU5UIHN4aGFzaCAoTGlzcF9PYmplY3QpOwogTGlzcF9PYmplY3QgbWFrZV9oYXNoX3Rh
YmxlIChjb25zdCBzdHJ1Y3QgaGFzaF90YWJsZV90ZXN0ICosIEVNQUNTX0lOVCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGFzaF90YWJsZV93ZWFrbmVzc190KTsKIExpc3Bf
T2JqZWN0IGhhc2hfdGFibGVfd2Vha25lc3Nfc3ltYm9sIChoYXNoX3RhYmxlX3dlYWtuZXNz
X3Qgd2Vhayk7Ci1wdHJkaWZmX3QgaGFzaF9sb29rdXAgKHN0cnVjdCBMaXNwX0hhc2hfVGFi
bGUgKiwgTGlzcF9PYmplY3QpOwotcHRyZGlmZl90IGhhc2hfbG9va3VwX2dldF9oYXNoIChz
dHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoLCBMaXNwX09iamVjdCBrZXksCi0JCQkJaGFzaF9o
YXNoX3QgKnBoYXNoKTsKK3B0cmRpZmZfdCBoYXNoX2ZpbmQgKHN0cnVjdCBMaXNwX0hhc2hf
VGFibGUgKiwgTGlzcF9PYmplY3QpOworcHRyZGlmZl90IGhhc2hfZmluZF9nZXRfaGFzaCAo
c3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaCwgTGlzcF9PYmplY3Qga2V5LAorCQkJICAgICAg
aGFzaF9oYXNoX3QgKnBoYXNoKTsKIHB0cmRpZmZfdCBoYXNoX3B1dCAoc3RydWN0IExpc3Bf
SGFzaF9UYWJsZSAqLCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsCiAJCSAgICBoYXNoX2hh
c2hfdCk7CiB2b2lkIGhhc2hfcmVtb3ZlX2Zyb21fdGFibGUgKHN0cnVjdCBMaXNwX0hhc2hf
VGFibGUgKiwgTGlzcF9PYmplY3QpOwpkaWZmIC0tZ2l0IGEvc3JjL2xyZWFkLmMgYi9zcmMv
bHJlYWQuYwppbmRleCBkMzkzMzBiZDBlYi4uNWM4YmJlN2RhOWYgMTAwNjQ0Ci0tLSBhL3Ny
Yy9scmVhZC5jCisrKyBiL3NyYy9scmVhZC5jCkBAIC00MjY2LDcgKzQyNjYsNyBAQCByZWFk
MCAoTGlzcF9PYmplY3QgcmVhZGNoYXJmdW4sIGJvb2wgbG9jYXRlX3N5bXMpCiAJCQkgID0g
WEhBU0hfVEFCTEUgKHJlYWRfb2JqZWN0c19tYXApOwogCQkJTGlzcF9PYmplY3QgbnVtYmVy
ID0gbWFrZV9maXhudW0gKG4pOwogCQkJaGFzaF9oYXNoX3QgaGFzaDsKLQkJCXB0cmRpZmZf
dCBpID0gaGFzaF9sb29rdXBfZ2V0X2hhc2ggKGgsIG51bWJlciwgJmhhc2gpOworCQkJcHRy
ZGlmZl90IGkgPSBoYXNoX2ZpbmRfZ2V0X2hhc2ggKGgsIG51bWJlciwgJmhhc2gpOwogCQkJ
aWYgKGkgPj0gMCkKIAkJCSAgLyogTm90IG5vcm1hbCwgYnV0IGlucHV0IGNvdWxkIGJlIG1h
bGZvcm1lZC4gICovCiAJCQkgIHNldF9oYXNoX3ZhbHVlX3Nsb3QgKGgsIGksIHBsYWNlaG9s
ZGVyKTsKQEAgLTQyODQsNyArNDI4NCw3IEBAIHJlYWQwIChMaXNwX09iamVjdCByZWFkY2hh
cmZ1biwgYm9vbCBsb2NhdGVfc3ltcykKIAkJCS8qICNOIyAtLSByZWZlcmVuY2UgdG8gbnVt
YmVyZWQgb2JqZWN0ICovCiAJCQlzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoCiAJCQkgID0g
WEhBU0hfVEFCTEUgKHJlYWRfb2JqZWN0c19tYXApOwotCQkJcHRyZGlmZl90IGkgPSBoYXNo
X2xvb2t1cCAoaCwgbWFrZV9maXhudW0gKG4pKTsKKwkJCXB0cmRpZmZfdCBpID0gaGFzaF9m
aW5kIChoLCBtYWtlX2ZpeG51bSAobikpOwogCQkJaWYgKGkgPCAwKQogCQkJICBJTlZBTElE
X1NZTlRBWF9XSVRIX0JVRkZFUiAoKTsKIAkJCW9iaiA9IEhBU0hfVkFMVUUgKGgsIGkpOwpA
QCAtNDU3OSw3ICs0NTc5LDcgQEAgcmVhZDAgKExpc3BfT2JqZWN0IHJlYWRjaGFyZnVuLCBi
b29sIGxvY2F0ZV9zeW1zKQogCQlzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoMgogCQkgID0g
WEhBU0hfVEFCTEUgKHJlYWRfb2JqZWN0c19jb21wbGV0ZWQpOwogCQloYXNoX2hhc2hfdCBo
YXNoOwotCQlwdHJkaWZmX3QgaSA9IGhhc2hfbG9va3VwX2dldF9oYXNoIChoMiwgcGxhY2Vo
b2xkZXIsICZoYXNoKTsKKwkJcHRyZGlmZl90IGkgPSBoYXNoX2ZpbmRfZ2V0X2hhc2ggKGgy
LCBwbGFjZWhvbGRlciwgJmhhc2gpOwogCQllYXNzZXJ0IChpIDwgMCk7CiAJCWhhc2hfcHV0
IChoMiwgcGxhY2Vob2xkZXIsIFFuaWwsIGhhc2gpOwogCQlvYmogPSBwbGFjZWhvbGRlcjsK
QEAgLTQ1OTQsNyArNDU5NCw3IEBAIHJlYWQwIChMaXNwX09iamVjdCByZWFkY2hhcmZ1biwg
Ym9vbCBsb2NhdGVfc3ltcykKIAkJICAgIHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmgyCiAJ
CSAgICAgID0gWEhBU0hfVEFCTEUgKHJlYWRfb2JqZWN0c19jb21wbGV0ZWQpOwogCQkgICAg
aGFzaF9oYXNoX3QgaGFzaDsKLQkJICAgIHB0cmRpZmZfdCBpID0gaGFzaF9sb29rdXBfZ2V0
X2hhc2ggKGgyLCBvYmosICZoYXNoKTsKKwkJICAgIHB0cmRpZmZfdCBpID0gaGFzaF9maW5k
X2dldF9oYXNoIChoMiwgb2JqLCAmaGFzaCk7CiAJCSAgICBlYXNzZXJ0IChpIDwgMCk7CiAJ
CSAgICBoYXNoX3B1dCAoaDIsIG9iaiwgUW5pbCwgaGFzaCk7CiAJCSAgfQpAQCAtNDYwNiw4
ICs0NjA2LDggQEAgcmVhZDAgKExpc3BfT2JqZWN0IHJlYWRjaGFyZnVuLCBib29sIGxvY2F0
ZV9zeW1zKQogCQkvKiAuLi5hbmQgI24jIHdpbGwgdXNlIHRoZSByZWFsIHZhbHVlIGZyb20g
bm93IG9uLiAgKi8KIAkJc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaCA9IFhIQVNIX1RBQkxF
IChyZWFkX29iamVjdHNfbWFwKTsKIAkJaGFzaF9oYXNoX3QgaGFzaDsKLQkJcHRyZGlmZl90
IGkgPSBoYXNoX2xvb2t1cF9nZXRfaGFzaCAoaCwgZS0+dS5udW1iZXJlZC5udW1iZXIsCi0J
CQkJCQkgICAgJmhhc2gpOworCQlwdHJkaWZmX3QgaSA9IGhhc2hfZmluZF9nZXRfaGFzaCAo
aCwgZS0+dS5udW1iZXJlZC5udW1iZXIsCisJCQkJCQkgICZoYXNoKTsKIAkJZWFzc2VydCAo
aSA+PSAwKTsKIAkJc2V0X2hhc2hfdmFsdWVfc2xvdCAoaCwgaSwgb2JqKTsKIAkgICAgICB9
CkBAIC00NjYxLDcgKzQ2NjEsNyBAQCBzdWJzdGl0dXRlX29iamVjdF9yZWN1cnNlIChzdHJ1
Y3Qgc3Vic3QgKnN1YnN0LCBMaXNwX09iamVjdCBzdWJ0cmVlKQogICAgICBieSAjbj0sIHdo
aWNoIG1lYW5zIHRoYXQgd2UgY2FuIGZpbmQgaXQgYXMgYSB2YWx1ZSBpbgogICAgICBDT01Q
TEVURUQuICAqLwogICBpZiAoRVEgKHN1YnN0LT5jb21wbGV0ZWQsIFF0KQotICAgICAgfHwg
aGFzaF9sb29rdXAgKFhIQVNIX1RBQkxFIChzdWJzdC0+Y29tcGxldGVkKSwgc3VidHJlZSkg
Pj0gMCkKKyAgICAgIHx8IGhhc2hfZmluZCAoWEhBU0hfVEFCTEUgKHN1YnN0LT5jb21wbGV0
ZWQpLCBzdWJ0cmVlKSA+PSAwKQogICAgIHN1YnN0LT5zZWVuID0gRmNvbnMgKHN1YnRyZWUs
IHN1YnN0LT5zZWVuKTsKIAogICAvKiBSZWN1cnNlIGFjY29yZGluZyB0byBzdWJ0cmVlJ3Mg
dHlwZS4KQEAgLTUxNzMsNyArNTE3Myw3IEBAIERFRlVOICgidW5pbnRlcm4iLCBGdW5pbnRl
cm4sIFN1bmludGVybiwgMiwgMiwgMCwKIHN0YXRpYyBwdHJkaWZmX3QKIG9iYXJyYXlfaW5k
ZXggKHN0cnVjdCBMaXNwX09iYXJyYXkgKm9hLCBjb25zdCBjaGFyICpzdHIsIHB0cmRpZmZf
dCBzaXplX2J5dGUpCiB7Ci0gIEVNQUNTX1VJTlQgaGFzaCA9IGhhc2hfc3RyaW5nIChzdHIs
IHNpemVfYnl0ZSk7CisgIEVNQUNTX1VJTlQgaGFzaCA9IGhhc2hfY2hhcl9hcnJheSAoc3Ry
LCBzaXplX2J5dGUpOwogICByZXR1cm4ga251dGhfaGFzaCAocmVkdWNlX2VtYWNzX3VpbnRf
dG9faGFzaF9oYXNoIChoYXNoKSwgb2EtPnNpemVfYml0cyk7CiB9CiAKZGlmZiAtLWdpdCBh
L3NyYy9tYWNmb250Lm0gYi9zcmMvbWFjZm9udC5tCmluZGV4IDRmZjcyMGM1ZGQyLi4yYTBi
OWFhMjU1NCAxMDA2NDQKLS0tIGEvc3JjL21hY2ZvbnQubQorKysgYi9zcmMvbWFjZm9udC5t
CkBAIC0xMDE4LDcgKzEwMTgsNyBAQCBzdGF0aWMgdm9pZCBtYWNfZm9udF9nZXRfZ2x5cGhz
X2Zvcl92YXJpYW50cyAoQ0ZEYXRhUmVmLCBVVEYzMkNoYXIsCiAgIGlmIChIQVNIX1RBQkxF
X1AgKG1hY2ZvbnRfZmFtaWx5X2NhY2hlKSkKICAgICB7CiAgICAgICBzdHJ1Y3QgTGlzcF9I
YXNoX1RhYmxlICpoID0gWEhBU0hfVEFCTEUgKG1hY2ZvbnRfZmFtaWx5X2NhY2hlKTsKLSAg
ICAgIHB0cmRpZmZfdCBpID0gaGFzaF9sb29rdXAgKGgsIHN5bWJvbCk7CisgICAgICBwdHJk
aWZmX3QgaSA9IGhhc2hfZmluZCAoaCwgc3ltYm9sKTsKIAogICAgICAgaWYgKGkgPj0gMCkK
IAl7CkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBzdGF0aWMgdm9pZCBtYWNfZm9udF9nZXRfZ2x5
cGhzX2Zvcl92YXJpYW50cyAoQ0ZEYXRhUmVmLCBVVEYzMkNoYXIsCiAKICAgaCA9IFhIQVNI
X1RBQkxFIChtYWNmb250X2ZhbWlseV9jYWNoZSk7CiAgIGhhc2hfaGFzaF90IGhhc2g7Ci0g
IGkgPSBoYXNoX2xvb2t1cF9nZXRfaGFzaCAoaCwgc3ltYm9sLCAmaGFzaCk7CisgIGkgPSBo
YXNoX2ZpbmRfZ2V0X2hhc2ggKGgsIHN5bWJvbCwgJmhhc2gpOwogICB2YWx1ZSA9IHN0cmlu
ZyA/IG1ha2VfbWludF9wdHIgKCh2b2lkICopIENGUmV0YWluIChzdHJpbmcpKSA6IFFuaWw7
CiAgIGlmIChpID49IDApCiAgICAgewpkaWZmIC0tZ2l0IGEvc3JjL21pbmlidWYuYyBiL3Ny
Yy9taW5pYnVmLmMKaW5kZXggMjhlYzc4MGIyNGUuLjZkOTYxNjBhODUxIDEwMDY0NAotLS0g
YS9zcmMvbWluaWJ1Zi5jCisrKyBiL3NyYy9taW5pYnVmLmMKQEAgLTIxMDMsNyArMjEwMyw3
IEBAIERFRlVOICgidGVzdC1jb21wbGV0aW9uIiwgRnRlc3RfY29tcGxldGlvbiwgU3Rlc3Rf
Y29tcGxldGlvbiwgMiwgMywgMCwKICAgZWxzZSBpZiAoSEFTSF9UQUJMRV9QIChjb2xsZWN0
aW9uKSkKICAgICB7CiAgICAgICBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoID0gWEhBU0hf
VEFCTEUgKGNvbGxlY3Rpb24pOwotICAgICAgcHRyZGlmZl90IGkgPSBoYXNoX2xvb2t1cCAo
aCwgc3RyaW5nKTsKKyAgICAgIHB0cmRpZmZfdCBpID0gaGFzaF9maW5kIChoLCBzdHJpbmcp
OwogICAgICAgaWYgKGkgPj0gMCkKICAgICAgICAgewogICAgICAgICAgIHRlbSA9IEhBU0hf
S0VZIChoLCBpKTsKLS0gCjIuNDguMQoK

--------------WZZTtZ7Ua0Fg97WqUd6AGHCE--




Notification sent to "Greg A. Woods" <woods@HIDDEN>:
bug acknowledged by developer. Full text available.
Reply sent to Paul Eggert <eggert@HIDDEN>:
You have taken responsibility. Full text available.

Message received at 77476 <at> debbugs.gnu.org:


Received: (at 77476) by debbugs.gnu.org; 19 Apr 2025 13:50:25 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 19 09:50:24 2025
Received: from localhost ([127.0.0.1]:60399 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u68aO-0005E1-0z
	for submit <at> debbugs.gnu.org; Sat, 19 Apr 2025 09:50:24 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:47780)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1u68aK-00059d-K3
 for 77476 <at> debbugs.gnu.org; Sat, 19 Apr 2025 09:50:21 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1u68aE-0001af-7P; Sat, 19 Apr 2025 09:50:14 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=tPMuWtrmn2cRC/4s2oTkPhCgs2HsC0un8LXduGJvQyk=; b=l9hsSAxJfE+F
 HE8W3+iGRXvZUihGCfbA91MX4QM8SGKxcCj/pnFhnAIEckKrZKA7EM9hznQaqrbYHzWj4greXZMmp
 PGiUcMCzQjysdoJhPWkRlSW6G7K7eODQQ6+ORrGSxChLO1xdis7M3IsNAJWAHf9+n0/OxM+UXqMkp
 +J0fWN6VtpqrZyNjmuLQ27V2wK8J/u2d5ijpt2vh0sxwvRNgZecvoWTT+TA0zaHBa6oN/2+ZHw/vg
 zYUeTFAKehJg/X9lPo5pv/ClypwwXQQGkBf0sOo7zcsonrky/j3HmVOEVA1gEEXo7+j7mZoRY7YgV
 J3ccD61UrAQ1Ft+vs0OO1A==;
Date: Sat, 19 Apr 2025 16:50:12 +0300
Message-Id: <86cyd88dm3.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: eggert@HIDDEN
In-Reply-To: <864iz4yzt9.fsf@HIDDEN> (message from Eli Zaretskii on Fri, 04
 Apr 2025 13:40:50 +0300)
Subject: Re: bug#77476: [PATCH] Rename various hash functions to avoid clashing
 with GnuTLS.
References: <m1u0BWl-00NOtVC@HIDDEN>
 <86zfgxzuis.fsf@HIDDEN> <m1u0QkE-00N3he0@HIDDEN> <864iz4yzt9.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77476
Cc: 77476 <at> debbugs.gnu.org, woods@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Ping!  Paul, could you please chime in, since these are Gnulib
functions we're talking about.

> Cc: 77476 <at> debbugs.gnu.org
> Date: Fri, 04 Apr 2025 13:40:50 +0300
> From: Eli Zaretskii <eliz@HIDDEN>
> 
> > Date: Thu, 03 Apr 2025 13:00:57 -0700
> > From: "Greg A. Woods" <woods@HIDDEN>
> > Cc: 77476 <at> debbugs.gnu.org
> > 
> > > > * src/fns.c: et al (hash_string, hash_lookup, hash_lookup_get_hash,
> > > >   hash_put, hash_remove_from_table): Rename with a leading "lisp_" prefix.
> > >
> > > Sorry, can you tell more about the rationale?  Why do these clash?
> > 
> > What do you mean by "Wny do these clash?"???  There are identical
> > symbols in the GnuTLS library to some defined in Emacs, yet the
> > implementations in each are entirely different and incompatible, and so
> > they can't be static-linked into the same program.  I.e. they "clash".
> > 
> > The problematic symbols are actually from "imported" gnulib functions
> > that are included in separate .o's in libgnutls.a, but since they are
> > needed by other functions in libgnutls then they have to be loaded, but
> > of course this is C and there are no namespaces (at least not without
> > fudging it with global structures containing function pointers, or using
> > the preprocessor and avoiding separate compilation, but GnuTLS clearly
> > doesn't do either) to prevent them from clashing with already loaded
> > functions from the application itself and the linker rightfully gives up
> > and fails.
> > 
> > There are only two (hash_lookup() and hash_string()) that actually
> > clash, but it seems best to rename all the related global functions.
> 
> I know the theory, but we are using GnuTLS with Emacs for many years,
> so I wonder how come this never came up before.
> 
> So I guess my question was why do they clash in your case, and why
> didn't anyone complain until now?
> 
> AFAICT, the functions hash_look up and hash_string are actually part
> of Gnulib, and GnuTLS uses those Gnulib functions.  Is that what you
> see?
> 
> > Static linking really should be mandated for all C programs, at least as
> > a primary test, to be sure you always get what you think you're looking
> > for and so that you really know the full extent of absolutely everything
> > you're depending on.
> 
> So this problem happens for you because you link Emacs statically with
> GnuTLS?  And if you use GnuTLS as a shared library, the problem
> doesn't happen, is that right?
> 
> > > Is this perhaps a matter of correct function visibility in a library?
> > 
> > There's no such thing as "function visibility" in a plain old static C
> > library.
> 
> So this is again due to your use of static linking?
> 
> > I don't know if this problem can affect dynamic-linked versions of Emacs
> > or not, but presumably not or bugs would have shown up by now.  I dunno
> > -- the runtime dynamic linker is too much of a mysterious force to know
> > for sure what it has done without dissecting exactly the result after
> > the fact, and that's much harder to do as none of the implementations I
> > know of have an option to produce a link map.
> 
> Paul, what are your views on this issue, and WDYT we should do about
> this?
> 
> > In any case I think fixing the problems in GnuTLS is a far more
> > extensive and complex job, and it's not even a tiny bit interesting to
> > me as I have no vested interest in directly working on GnuTLS.  My
> > interest is far higher in Emacs!  I would guess the whole method of
> > importing gnulib functions would have to be changed in order to give
> > those "private" (i.e. less-likely-to-ever-clash) names.
> > 
> > I'm happy to use GnuTLS in Emacs if that's what Emacs developers would
> > like to use, but I've also been relatively happy with using the tls
> > package to access an external implementation as well (though it is
> > tricky to maintain with constant changes in the command-lines and output
> > formats).
> > 
> > > Also, how come this comes up only now?
> > 
> > I've been avoiding linking GnuTLS for quite some time, but with the tls
> > package being deprecated for a while now (my primary production Emacs is
> > now 27.2, tls.el moved to obsolete in 27.1) that's becoming a precarious
> > position to take.
> 
> Yes, but others are using GnuTLS since many Emacs 26, so any such
> build problems should have been reported many years ago.
> 
> 
> 
> 




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#77476; Package emacs. Full text available.

Message received at 77476 <at> debbugs.gnu.org:


Received: (at 77476) by debbugs.gnu.org; 4 Apr 2025 19:19:50 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 04 15:19:50 2025
Received: from localhost ([127.0.0.1]:40167 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u0mZx-0007UC-SG
	for submit <at> debbugs.gnu.org; Fri, 04 Apr 2025 15:19:50 -0400
Received: from ns.weird.com ([198.96.117.51]:61614 helo=central.weird.com)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <woods@HIDDEN>) id 1u0mZu-0007Tu-5i
 for 77476 <at> debbugs.gnu.org; Fri, 04 Apr 2025 15:19:47 -0400
Received: from (invalid client hostname: bind: DNS error: DNS lookup for A for
 'more.local': Unknown host)more.local ((no PTR matching greeting
 name)d207-216-250-146.bchsia.telus.net[207.216.250.146] port=54641)
 by central.weird.com([198.96.117.51] port=587)
 via TCP with esmtp (6875 bytes) (sender: <woods@HIDDEN>)
 (ident <nobody> using UNIX) id <m1u0mZh-00rPQL0@HIDDEN>
 for <77476 <at> debbugs.gnu.org>; Fri, 4 Apr 2025 15:19:33 -0400 (EDT)
 (Smail-3.2.0.122-Pre 2005-Nov-17 #1 built 2022-Feb-11)
Received: from more.local ([10.0.1.129] port=54642)
 by more.local([10.0.1.129] port=25) via TCP with esmtp (6386 bytes)
 (sender: <woods@HIDDEN>) id <m1u0mZd-00NOtV0@HIDDEN>
 for <77476 <at> debbugs.gnu.org>; Fri, 4 Apr 2025 12:19:29 -0700 (PDT)
 (Smail-3.2.0.122-Pre 2005-Nov-17 #1 built 2022-Apr-6)
Message-Id: <m1u0mZd-00NOtV0@HIDDEN>
Date: Fri, 04 Apr 2025 12:19:29 -0700
From: "Greg A. Woods" <woods@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#77476: [PATCH] Rename various hash functions to avoid
 clashing with GnuTLS.
In-Reply-To: <864iz4yzt9.fsf@HIDDEN>
References: <m1u0BWl-00NOtVC@HIDDEN> <86zfgxzuis.fsf@HIDDEN>
 <m1u0QkE-00N3he0@HIDDEN> <864iz4yzt9.fsf@HIDDEN>
User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue)
 FLIM-LB/1.14.9 (=?ISO-8859-4?Q?Goj=F2?=) APEL-LB/10.8 EasyPG/1.0.0
 Emacs/27.2 (x86_64-unknown-netbsd) MULE/6.0 (HANACHIRUSATO)
X-Face: ; j3Eth2XV8h1Yfu<eXd9JL+"t;
 iT8?{X]Fjm`Qb]>*uL{<:dQ$#E[DB0gemGZJ"J#4fH*][
 lz; @-iwMv_u\6uIEKR0KY"=MzoQH#CrqBN`nG_5B@rrM8,f~Gr&h5a\=<t0loVf0$}bP=]i3OMh"n_
 _@m4/, ~2`V=(-9LyW.)'`@E_fE^<4y7)BIe`A''/j-Y#gDNZERh%CCij'q-NA4F<|yjznEhd7=l^xH
 2.qD3o0IanGHERTW+z$G
Precedence: first-class
Organization: Robo-Hacker
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: multipart/signed;
 boundary="pgp-sign-Multipart_Fri_Apr__4_12:19:17_2025-1"; micalg=pgp-sha1;
 protocol="application/pgp-signature"
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77476
Cc: 77476 <at> debbugs.gnu.org, Paul Eggert <eggert@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--pgp-sign-Multipart_Fri_Apr__4_12:19:17_2025-1
Content-Type: text/plain; charset=US-ASCII

At Fri, 04 Apr 2025 13:40:50 +0300, Eli Zaretskii <eliz@HIDDEN> wrote:
Subject: Re: bug#77476: [PATCH] Rename various hash functions to avoid clashing with GnuTLS.
>
> I know the theory, but we are using GnuTLS with Emacs for many years,
> so I wonder how come this never came up before.

Sorry, but apparently you don't know the _practice_.  Theory is one
thing, but actually doing it in practical terms is necessary to fully
understand.  It'll be a light-bulb moment, I promise.  I don't mean to
be deprecating, but my initial thought on submitting this patch would be
that the problem was blindingly obvious and there would be no questions
whatsoever about the necessity of a fix -- just the colour of the bike
shed would need deciding.

> So I guess my question was why do they clash in your case, and why
> didn't anyone complain until now?

People have apparently forgotten about the benefits of static linking
and the necessity of testing it with C programs and so it rarely gets
done.

I have come up against this problem for several years -- I just didn't
bother fixing or reporting it because using lisp/tls.el was a sufficient
workaround.  With tls.el moving to lisp/obsolete I've been prompted.

As I said, if one does not static-link a C program, at least as a test,
then one will not fully understand and appreciate all of the
dependencies and all of their interactions.  This is a necessary caveat
due to the lack of namespaces in C.

> AFAICT, the functions hash_look up and hash_string are actually part
> of Gnulib, and GnuTLS uses those Gnulib functions.  Is that what you
> see?

Indeed, that's what I reported, and what my submitted patch fixes, since
of course without my patch there are obviously also identically named
functions in Emacs.  Here's proof of a sort that the patch works:

$ ll build-x86_64-nb9.99.81/src/emacs
276416 -rwxr-xr-x  2 woods  wheel  - 141404440 Apr  2 12:44 build-x86_64-nb9.99.81/src/emacs
$ size build-x86_64-nb9.99.81/src/emacs
   text    data     bss     dec     hex filename
19149051         358196 2911673 22418920        15615e8 build-x86_64-nb9.99.81/src/emacs
$ file build-x86_64-nb9.99.81/src/emacs
build-x86_64-nb9.99.81/src/emacs: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, for NetBSD 9.99.81, with debug_info, not stripped
$ build-x86_64-nb9.99.81/src/emacs --version
GNU Emacs 31.0.50
Development version a72cfc52cc36 on master branch; build date 2025-04-02.
Copyright (C) 2025 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GNU Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.
$ build-x86_64-nb9.99.81/src/emacs --batch --eval '(if (gnutls-available-p) (message "has GnuTLS"))'
has GnuTLS

You can't have two different and incompatible implementations of a
function in the same C program when they both have the same identifier.
The runtime dynamic linker hides this problem from the average user and
papers over it hoping nothing goes wrong.  Usually it works well enough
that nothing invokes undefined behaviour.  I never bet on it being
correct though.

Maybe it would be a good idea for you to try static-linking Emacs.

> So this problem happens for you because you link Emacs statically with
> GnuTLS?  And if you use GnuTLS as a shared library, the problem
> doesn't happen, is that right?

I would guess not, though that's based on my experience from a different
platform (macOS) where I have no problems dynamic-linking GnuTLS, but
that's not the platform where I always static-link things (NetBSD).  So,
I don't really know -- I avoid shared libraries as much as possible, and
almost entirely on NetBSD always, but of course on macOS that's
impossible.  However on macOS the entire object format is different and
the dynamic linker is also a completely unique implementation, so I
can's speak personally to the results with GNU ld(1) and NetBSD ld_elf.so.

> Yes, but others are using GnuTLS since many Emacs 26, so any such
> build problems should have been reported many years ago.

I doubt it.  Most people don't even seem to know the difference between
static linking and dynamic runtime linking any more.  They just type
"make".

--
					Greg A. Woods <gwoods@HIDDEN>

Kelowna, BC     +1 250 762-7675           RoboHack <woods@HIDDEN>
Planix, Inc. <woods@HIDDEN>     Avoncote Farms <woods@HIDDEN>

--pgp-sign-Multipart_Fri_Apr__4_12:19:17_2025-1
Content-Type: application/pgp-signature
Content-Transfer-Encoding: 7bit
Content-Description: OpenPGP Digital Signature

-----BEGIN PGP SIGNATURE-----

iF0EABECAB0WIQTWEnAIIlcZX4oAawJie18UwlnHhQUCZ/AwuAAKCRBie18UwlnH
hQQvAKDkmmnZT7berrok7ILU2/9ks3kSuQCgwnQoG8fciN8tW124ZBVGFe6v+ck=
=4n3G
-----END PGP SIGNATURE-----

--pgp-sign-Multipart_Fri_Apr__4_12:19:17_2025-1--




Acknowledgement sent to "Greg A. Woods" <woods@HIDDEN>:
Extra info received and forwarded to list. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Information forwarded to bug-gnu-emacs@HIDDEN:
bug#77476; Package emacs. Full text available.

Message received at 77476 <at> debbugs.gnu.org:


Received: (at 77476) by debbugs.gnu.org; 4 Apr 2025 10:41:03 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 04 06:41:03 2025
Received: from localhost ([127.0.0.1]:37180 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u0eTu-0003DO-VH
	for submit <at> debbugs.gnu.org; Fri, 04 Apr 2025 06:41:03 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:32838)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1u0eTs-0003CR-Cm
 for 77476 <at> debbugs.gnu.org; Fri, 04 Apr 2025 06:41:00 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1u0eTm-0005Hm-1y; Fri, 04 Apr 2025 06:40:54 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=GvBDe7gdGAx/VlOSL4i1WocK5Z0cXn24hWblyJ0S7UE=; b=B+e6T8X+vHFM
 wuEhVFvEl9woM4W/UgEB61P+6NKrgUqItKcp+eS3sLeOpbzIrOlw+JXn4tQYzJf2i3EJLDXvQPL09
 Pch4Pg2X8SVfAedEO5okNFPgVxW1wysIft6YwCaKnMbz7Yucq/5G74RD/tV0abUWy3HMjLV/QtLLl
 wT/Le3/MCRpzPGTjP44+F4cgWl6zCBIRf/vHx2841n43gBOaVkc5ay+GqCT7RXop1EnfHcfzutiOF
 rcHzGIuCMM4sBg9nqIDHxazmMo2fvZgp/e/sFsDwejtY5K6pam+VdNWjbGwySLeUyD/OhSOngu1fB
 1hA6qb0kkl4m9tIYQDiAQQ==;
Date: Fri, 04 Apr 2025 13:40:50 +0300
Message-Id: <864iz4yzt9.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: "Greg A. Woods" <woods@HIDDEN>,
 Paul Eggert <eggert@HIDDEN>
In-Reply-To: <m1u0QkE-00N3he0@HIDDEN> (woods@HIDDEN)
Subject: Re: bug#77476: [PATCH] Rename various hash functions to avoid
 clashing with GnuTLS.
References: <m1u0BWl-00NOtVC@HIDDEN>
 <86zfgxzuis.fsf@HIDDEN> <m1u0QkE-00N3he0@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77476
Cc: 77476 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Date: Thu, 03 Apr 2025 13:00:57 -0700
> From: "Greg A. Woods" <woods@HIDDEN>
> Cc: 77476 <at> debbugs.gnu.org
> 
> > > * src/fns.c: et al (hash_string, hash_lookup, hash_lookup_get_hash,
> > >   hash_put, hash_remove_from_table): Rename with a leading "lisp_" prefix.
> >
> > Sorry, can you tell more about the rationale?  Why do these clash?
> 
> What do you mean by "Wny do these clash?"???  There are identical
> symbols in the GnuTLS library to some defined in Emacs, yet the
> implementations in each are entirely different and incompatible, and so
> they can't be static-linked into the same program.  I.e. they "clash".
> 
> The problematic symbols are actually from "imported" gnulib functions
> that are included in separate .o's in libgnutls.a, but since they are
> needed by other functions in libgnutls then they have to be loaded, but
> of course this is C and there are no namespaces (at least not without
> fudging it with global structures containing function pointers, or using
> the preprocessor and avoiding separate compilation, but GnuTLS clearly
> doesn't do either) to prevent them from clashing with already loaded
> functions from the application itself and the linker rightfully gives up
> and fails.
> 
> There are only two (hash_lookup() and hash_string()) that actually
> clash, but it seems best to rename all the related global functions.

I know the theory, but we are using GnuTLS with Emacs for many years,
so I wonder how come this never came up before.

So I guess my question was why do they clash in your case, and why
didn't anyone complain until now?

AFAICT, the functions hash_look up and hash_string are actually part
of Gnulib, and GnuTLS uses those Gnulib functions.  Is that what you
see?

> Static linking really should be mandated for all C programs, at least as
> a primary test, to be sure you always get what you think you're looking
> for and so that you really know the full extent of absolutely everything
> you're depending on.

So this problem happens for you because you link Emacs statically with
GnuTLS?  And if you use GnuTLS as a shared library, the problem
doesn't happen, is that right?

> > Is this perhaps a matter of correct function visibility in a library?
> 
> There's no such thing as "function visibility" in a plain old static C
> library.

So this is again due to your use of static linking?

> I don't know if this problem can affect dynamic-linked versions of Emacs
> or not, but presumably not or bugs would have shown up by now.  I dunno
> -- the runtime dynamic linker is too much of a mysterious force to know
> for sure what it has done without dissecting exactly the result after
> the fact, and that's much harder to do as none of the implementations I
> know of have an option to produce a link map.

Paul, what are your views on this issue, and WDYT we should do about
this?

> In any case I think fixing the problems in GnuTLS is a far more
> extensive and complex job, and it's not even a tiny bit interesting to
> me as I have no vested interest in directly working on GnuTLS.  My
> interest is far higher in Emacs!  I would guess the whole method of
> importing gnulib functions would have to be changed in order to give
> those "private" (i.e. less-likely-to-ever-clash) names.
> 
> I'm happy to use GnuTLS in Emacs if that's what Emacs developers would
> like to use, but I've also been relatively happy with using the tls
> package to access an external implementation as well (though it is
> tricky to maintain with constant changes in the command-lines and output
> formats).
> 
> > Also, how come this comes up only now?
> 
> I've been avoiding linking GnuTLS for quite some time, but with the tls
> package being deprecated for a while now (my primary production Emacs is
> now 27.2, tls.el moved to obsolete in 27.1) that's becoming a precarious
> position to take.

Yes, but others are using GnuTLS since many Emacs 26, so any such
build problems should have been reported many years ago.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#77476; Package emacs. Full text available.

Message received at 77476 <at> debbugs.gnu.org:


Received: (at 77476) by debbugs.gnu.org; 3 Apr 2025 20:01:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 03 16:01:12 2025
Received: from localhost ([127.0.0.1]:35827 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u0QkS-0007AI-6u
	for submit <at> debbugs.gnu.org; Thu, 03 Apr 2025 16:01:12 -0400
Received: from mail.robohack.planix.ca ([198.96.117.51]:51576
 helo=central.weird.com) by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <woods@HIDDEN>) id 1u0QkP-0007A4-7Y
 for 77476 <at> debbugs.gnu.org; Thu, 03 Apr 2025 16:01:10 -0400
Received: from (invalid client hostname: bind: DNS error: DNS lookup for A for
 'more.local': Unknown host)more.local ((no PTR matching greeting
 name)d207-216-250-146.bchsia.telus.net[207.216.250.146] port=60461)
 by central.weird.com([198.96.117.51] port=587)
 via TCP with esmtp (7060 bytes) (sender: <woods@HIDDEN>)
 (ident <nobody> using UNIX) id <m1u0QkJ-00rPQL0@HIDDEN>
 for <77476 <at> debbugs.gnu.org>; Thu, 3 Apr 2025 16:01:03 -0400 (EDT)
 (Smail-3.2.0.122-Pre 2005-Nov-17 #1 built 2022-Feb-11)
Received: from more.local ([10.0.1.129] port=60462)
 by more.local([10.0.1.129] port=25) via TCP with esmtp (6580 bytes)
 (sender: <woods@HIDDEN>) id <m1u0QkE-00N3he0@HIDDEN>
 for <eliz@HIDDEN>; Thu, 3 Apr 2025 13:00:58 -0700 (PDT)
 (Smail-3.2.0.122-Pre 2005-Nov-17 #1 built 2022-Apr-6)
Message-Id: <m1u0QkE-00N3he0@HIDDEN>
Date: Thu, 03 Apr 2025 13:00:57 -0700
From: "Greg A. Woods" <woods@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#77476: [PATCH] Rename various hash functions to avoid
 clashing with GnuTLS.
In-Reply-To: <86zfgxzuis.fsf@HIDDEN>
References: <m1u0BWl-00NOtVC@HIDDEN>
	<86zfgxzuis.fsf@HIDDEN>
User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue)
 FLIM-LB/1.14.9 (=?ISO-8859-4?Q?Goj=F2?=) APEL-LB/10.8 EasyPG/1.0.0
 Emacs/27.2 (x86_64-unknown-netbsd) MULE/6.0 (HANACHIRUSATO)
X-Face: ; j3Eth2XV8h1Yfu<eXd9JL+"t;
 iT8?{X]Fjm`Qb]>*uL{<:dQ$#E[DB0gemGZJ"J#4fH*][
 lz; @-iwMv_u\6uIEKR0KY"=MzoQH#CrqBN`nG_5B@rrM8,f~Gr&h5a\=<t0loVf0$}bP=]i3OMh"n_
 _@m4/, ~2`V=(-9LyW.)'`@E_fE^<4y7)BIe`A''/j-Y#gDNZERh%CCij'q-NA4F<|yjznEhd7=l^xH
 2.qD3o0IanGHERTW+z$G
Precedence: first-class
Organization: Robo-Hacker
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: multipart/signed;
 boundary="pgp-sign-Multipart_Thu_Apr__3_13:00:38_2025-1"; micalg=pgp-sha1;
 protocol="application/pgp-signature"
Content-Transfer-Encoding: 7bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77476
Cc: 77476 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--pgp-sign-Multipart_Thu_Apr__3_13:00:38_2025-1
Content-Type: text/plain; charset=US-ASCII

At Thu, 03 Apr 2025 08:25:15 +0300, Eli Zaretskii <eliz@HIDDEN> wrote:
Subject: Re: bug#77476: [PATCH] Rename various hash functions to avoid clashing with GnuTLS.
>
> > Date: Wed, 02 Apr 2025 20:46:03 -0700
> > From: "Greg A. Woods" <woods@HIDDEN>
> >
> > Rename various hash functions in src/fns.c to facilitate static-linking
> > with GnuTLS which includes clashing hash functions from its "gl"
> > subdirectory.
> >
> > * src/fns.c: et al (hash_string, hash_lookup, hash_lookup_get_hash,
> >   hash_put, hash_remove_from_table): Rename with a leading "lisp_" prefix.
>
> Sorry, can you tell more about the rationale?  Why do these clash?

What do you mean by "Wny do these clash?"???  There are identical
symbols in the GnuTLS library to some defined in Emacs, yet the
implementations in each are entirely different and incompatible, and so
they can't be static-linked into the same program.  I.e. they "clash".

The problematic symbols are actually from "imported" gnulib functions
that are included in separate .o's in libgnutls.a, but since they are
needed by other functions in libgnutls then they have to be loaded, but
of course this is C and there are no namespaces (at least not without
fudging it with global structures containing function pointers, or using
the preprocessor and avoiding separate compilation, but GnuTLS clearly
doesn't do either) to prevent them from clashing with already loaded
functions from the application itself and the linker rightfully gives up
and fails.

There are only two (hash_lookup() and hash_string()) that actually
clash, but it seems best to rename all the related global functions.

Static linking really should be mandated for all C programs, at least as
a primary test, to be sure you always get what you think you're looking
for and so that you really know the full extent of absolutely everything
you're depending on.  If you can't static-link a C program then there's
probably something fundamentally wrong with it's relationship to its
dependencies.  C programmers need to remember they are writing C, not
Oberon-2 or Java or Go or some such other language with modules and
namespaces and such.

> Is this perhaps a matter of correct function visibility in a library?

There's no such thing as "function visibility" in a plain old static C
library.  All global symbols are visible all the time, and depending on
internal dependencies of the object files you load, well you get what
you get from the rest of the library with no choice in how "visible" it
is to the rest of your binary.  It's all "visible".

> And why does Emacs, and not GnuTLS, need to rename its functions?

The GnuTLS library is indeed somewhat of a mess in terms of the APIs it
presents, but since it's the "third party" here the choice is either to
kick it out, or to change the local definitions that clash.

I don't know if this problem can affect dynamic-linked versions of Emacs
or not, but presumably not or bugs would have shown up by now.  I dunno
-- the runtime dynamic linker is too much of a mysterious force to know
for sure what it has done without dissecting exactly the result after
the fact, and that's much harder to do as none of the implementations I
know of have an option to produce a link map.

In any case I think fixing the problems in GnuTLS is a far more
extensive and complex job, and it's not even a tiny bit interesting to
me as I have no vested interest in directly working on GnuTLS.  My
interest is far higher in Emacs!  I would guess the whole method of
importing gnulib functions would have to be changed in order to give
those "private" (i.e. less-likely-to-ever-clash) names.

I'm happy to use GnuTLS in Emacs if that's what Emacs developers would
like to use, but I've also been relatively happy with using the tls
package to access an external implementation as well (though it is
tricky to maintain with constant changes in the command-lines and output
formats).

> Also, how come this comes up only now?

I've been avoiding linking GnuTLS for quite some time, but with the tls
package being deprecated for a while now (my primary production Emacs is
now 27.2, tls.el moved to obsolete in 27.1) that's becoming a precarious
position to take.

> In any case, the prefix "lisp_" doesn't sound right to me.  Maybe
> "emacs_" or something similar, like just "e".

Meh -- potato po-ta-toe.  I.e. I've no strong feelings about the
particular choice of prefix.  You can choose whichever you like.  I just
thought that since these functions are for accessing the "lisp hash
table", well they might best be named for it.

--
					Greg A. Woods <gwoods@HIDDEN>

Kelowna, BC     +1 250 762-7675           RoboHack <woods@HIDDEN>
Planix, Inc. <woods@HIDDEN>     Avoncote Farms <woods@HIDDEN>

--pgp-sign-Multipart_Thu_Apr__3_13:00:38_2025-1
Content-Type: application/pgp-signature
Content-Transfer-Encoding: 7bit
Content-Description: OpenPGP Digital Signature

-----BEGIN PGP SIGNATURE-----

iF0EABECAB0WIQTWEnAIIlcZX4oAawJie18UwlnHhQUCZ+7o7wAKCRBie18UwlnH
hUVGAKDRa1U/4MSmAqHda32ID71NkLKupwCg2g9G9xvrEI+YFVhd9rYZHE4cNfc=
=gFsq
-----END PGP SIGNATURE-----

--pgp-sign-Multipart_Thu_Apr__3_13:00:38_2025-1--




Acknowledgement sent to "Greg A. Woods" <woods@HIDDEN>:
Extra info received and forwarded to list. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Information forwarded to bug-gnu-emacs@HIDDEN:
bug#77476; Package emacs. Full text available.

Message received at 77476 <at> debbugs.gnu.org:


Received: (at 77476) by debbugs.gnu.org; 3 Apr 2025 05:25:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 03 01:25:30 2025
Received: from localhost ([127.0.0.1]:60447 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u0D50-0006WX-4G
	for submit <at> debbugs.gnu.org; Thu, 03 Apr 2025 01:25:30 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:41488)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1u0D4x-0006WH-HF
 for 77476 <at> debbugs.gnu.org; Thu, 03 Apr 2025 01:25:28 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1u0D4p-0004Bp-GO; Thu, 03 Apr 2025 01:25:21 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=Z4QXlJxP6v/O0Ty1J2j30TuLJtiIwtM947nzAqlJJwo=; b=TlLdfNEDDOLW
 HSM28uAbNVSrZSLLRIoQIzmw1I4yNR9qQxHALwR8VwfFtDZKESrYYNkeJBAPdKJENj4NsxWCNHhUm
 SNXvJz9727y+cPGsWX+c/G/SrIJcqbdcF2ATBiAYxEluU819LhEh09zw6ZBChzsyADhIW48L7bdKt
 rzeC2m0esJpQ0X0g2s/ELGMEXvdwq48G9y/nEIkzgx271wR00MTcWzJ5IPdNp8+YY+y2BWnOju8eM
 VHf+wf/CkQbCWS3xXZQM2T2SC2A9hdv90Kfr6PSIx8YtZGNgFZOTyNXh+EEcNurevxNuTqU966BYa
 AR9aQlYCuFBMbpEpnL7ILw==;
Date: Thu, 03 Apr 2025 08:25:15 +0300
Message-Id: <86zfgxzuis.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: "Greg A. Woods" <woods@HIDDEN>
In-Reply-To: <m1u0BWl-00NOtVC@HIDDEN> (woods@HIDDEN)
Subject: Re: bug#77476: [PATCH] Rename various hash functions to avoid clashing
 with GnuTLS.
References: <m1u0BWl-00NOtVC@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77476
Cc: 77476 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Date: Wed, 02 Apr 2025 20:46:03 -0700
> From: "Greg A. Woods" <woods@HIDDEN>
> 
> Rename various hash functions in src/fns.c to facilitate static-linking
> with GnuTLS which includes clashing hash functions from its "gl"
> subdirectory.
> 
> * src/fns.c: et al (hash_string, hash_lookup, hash_lookup_get_hash,
>   hash_put, hash_remove_from_table): Rename with a leading "lisp_" prefix.

Sorry, can you tell more about the rationale?  Why do these clash?  Is
this perhaps a matter of correct function visibility in a library?

And why does Emacs, and not GnuTLS, need to rename its functions?

Also, how come this comes up only now?

In any case, the prefix "lisp_" doesn't sound right to me.  Maybe
"emacs_" or something similar, like just "e".




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#77476; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 3 Apr 2025 03:46:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 02 23:46:33 2025
Received: from localhost ([127.0.0.1]:60230 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u0BXD-0004Im-VV
	for submit <at> debbugs.gnu.org; Wed, 02 Apr 2025 23:46:33 -0400
Received: from lists.gnu.org ([2001:470:142::17]:41448)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <woods@HIDDEN>)
 id 1u0BXA-0004IY-Ap
 for submit <at> debbugs.gnu.org; Wed, 02 Apr 2025 23:46:29 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <woods@HIDDEN>)
 id 1u0BX4-0008C4-L4
 for bug-gnu-emacs@HIDDEN; Wed, 02 Apr 2025 23:46:22 -0400
Received: from most.robohack.planix.com ([198.96.117.51]
 helo=central.weird.com) by eggs.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <woods@HIDDEN>) id 1u0BX1-0000k1-Mb
 for bug-gnu-emacs@HIDDEN; Wed, 02 Apr 2025 23:46:22 -0400
Received: from (invalid client hostname: bind: DNS error: DNS lookup for A for
 'more.local': Unknown host)more.local ((no PTR matching greeting
 name)d207-216-250-146.bchsia.telus.net[207.216.250.146] port=64409)
 by central.weird.com([198.96.117.51] port=587)
 via TCP with esmtp (20486 bytes) (sender: <woods@HIDDEN>)
 (ident <nobody> using UNIX) id <m1u0BWp-00rPQLC@HIDDEN>
 for <bug-gnu-emacs@HIDDEN>; Wed, 2 Apr 2025 23:46:07 -0400 (EDT)
 (Smail-3.2.0.122-Pre 2005-Nov-17 #1 built 2022-Feb-11)
Received: from more.local ([10.0.1.129] port=64410)
 by more.local([10.0.1.129] port=25) via TCP with esmtp (19996 bytes)
 (sender: <woods@HIDDEN>) id <m1u0BWl-00NOtVC@HIDDEN>
 for <bug-gnu-emacs@HIDDEN>; Wed, 2 Apr 2025 20:46:03 -0700 (PDT)
 (Smail-3.2.0.122-Pre 2005-Nov-17 #1 built 2022-Apr-6)
Message-Id: <m1u0BWl-00NOtVC@HIDDEN>
Date: Wed, 02 Apr 2025 20:46:03 -0700
From: "Greg A. Woods" <woods@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: [PATCH] Rename various hash functions to avoid clashing with GnuTLS.
User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue)
 FLIM-LB/1.14.9 (=?ISO-8859-4?Q?Goj=F2?=) APEL-LB/10.8 EasyPG/1.0.0
 Emacs/27.2 (x86_64-unknown-netbsd) MULE/6.0 (HANACHIRUSATO)
X-Face: ; j3Eth2XV8h1Yfu<eXd9JL+"t;
 iT8?{X]Fjm`Qb]>*uL{<:dQ$#E[DB0gemGZJ"J#4fH*][
 lz; @-iwMv_u\6uIEKR0KY"=MzoQH#CrqBN`nG_5B@rrM8,f~Gr&h5a\=<t0loVf0$}bP=]i3OMh"n_
 _@m4/, ~2`V=(-9LyW.)'`@E_fE^<4y7)BIe`A''/j-Y#gDNZERh%CCij'q-NA4F<|yjznEhd7=l^xH
 2.qD3o0IanGHERTW+z$G
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: multipart/signed;
 boundary="pgp-sign-Multipart_Wed_Apr__2_20:45:53_2025-1"; micalg=pgp-sha1;
 protocol="application/pgp-signature"
Content-Transfer-Encoding: 7bit
Received-SPF: pass client-ip=198.96.117.51; envelope-from=woods@HIDDEN;
 helo=central.weird.com
X-Spam_score_int: -18
X-Spam_score: -1.9
X-Spam_bar: -
X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9,
 HEADER_FROM_DIFFERENT_DOMAINS=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001,
 RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.0 (/)

--pgp-sign-Multipart_Wed_Apr__2_20:45:53_2025-1
Content-Type: text/plain; charset=US-ASCII

Rename various hash functions in src/fns.c to facilitate static-linking
with GnuTLS which includes clashing hash functions from its "gl"
subdirectory.

* src/fns.c: et al (hash_string, hash_lookup, hash_lookup_get_hash,
  hash_put, hash_remove_from_table): Rename with a leading "lisp_" prefix.
---
 src/bytecode.c     |  2 +-
 src/category.c     |  4 ++--
 src/ccl.c          |  4 ++--
 src/charset.c      |  4 ++--
 src/charset.h      |  2 +-
 src/coding.h       |  4 ++--
 src/composite.c    |  8 ++++----
 src/emacs-module.c |  8 ++++----
 src/fns.c          | 24 ++++++++++++------------
 src/image.c        |  8 ++++----
 src/json.c         |  4 ++--
 src/lisp.h         | 14 +++++++-------
 src/lread.c        | 20 ++++++++++----------
 src/minibuf.c      |  2 +-
 14 files changed, 54 insertions(+), 54 deletions(-)

diff --git a/src/bytecode.c b/src/bytecode.c
index ecea0c6df36..9d4f9de3eb4 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -1763,7 +1763,7 @@ #define DEFINE(name, value) [name] = &&insn_ ## name,
               }
             else
 	      {
-		ptrdiff_t i = hash_lookup (h, v1);
+		ptrdiff_t i = lisp_hash_lookup (h, v1);
 		if (i >= 0)
 		  {
 		    op = XFIXNUM (HASH_VALUE (h, i));
diff --git a/src/category.c b/src/category.c
index 297ba94c73d..9909ba5701c 100644
--- a/src/category.c
+++ b/src/category.c
@@ -54,10 +54,10 @@ hash_get_category_set (Lisp_Object table, Lisp_Object category_set)
        make_hash_table (&hashtest_equal, DEFAULT_HASH_SIZE, Weak_None));
   struct Lisp_Hash_Table *h = XHASH_TABLE (XCHAR_TABLE (table)->extras[1]);
   hash_hash_t hash;
-  ptrdiff_t i = hash_lookup_get_hash (h, category_set, &hash);
+  ptrdiff_t i = lisp_hash_lookup_get_hash (h, category_set, &hash);
   if (i >= 0)
     return HASH_KEY (h, i);
-  hash_put (h, category_set, Qnil, hash);
+  lisp_hash_put (h, category_set, Qnil, hash);
   return category_set;
 }

diff --git a/src/ccl.c b/src/ccl.c
index a45fe0439c4..dfb50be71ac 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -1375,7 +1375,7 @@ #define EXCMD (field1 >> 6)

 		eop = (FIXNUM_OVERFLOW_P (reg[RRR])
 		       ? -1
-		       : hash_lookup (h, make_fixnum (reg[RRR])));
+		       : lisp_hash_lookup (h, make_fixnum (reg[RRR])));
 		if (eop >= 0)
 		  {
 		    Lisp_Object opl;
@@ -1404,7 +1404,7 @@ #define EXCMD (field1 >> 6)

 		eop = (FIXNUM_OVERFLOW_P (i)
 		       ? -1
-		       : hash_lookup (h, make_fixnum (i)));
+		       : lisp_hash_lookup (h, make_fixnum (i)));
 		if (eop >= 0)
 		  {
 		    Lisp_Object opl;
diff --git a/src/charset.c b/src/charset.c
index 797dfde276f..d66476a79b9 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -1112,7 +1112,7 @@ DEFUN ("define-charset-internal", Fdefine_charset_internal,

   hash_hash_t hash_code;
   ptrdiff_t hash_index
-    = hash_lookup_get_hash (hash_table, args[charset_arg_name],
+    = lisp_hash_lookup_get_hash (hash_table, args[charset_arg_name],
 			    &hash_code);
   if (hash_index >= 0)
     {
@@ -1122,7 +1122,7 @@ DEFUN ("define-charset-internal", Fdefine_charset_internal,
     }
   else
     {
-      hash_put (hash_table, args[charset_arg_name], attrs, hash_code);
+      lisp_hash_put (hash_table, args[charset_arg_name], attrs, hash_code);
       if (charset_table_used == charset_table_size)
 	{
 	  /* Ensure that charset IDs fit into 'int' as well as into the
diff --git a/src/charset.h b/src/charset.h
index 0217ec321ff..def4d13180d 100644
--- a/src/charset.h
+++ b/src/charset.h
@@ -285,7 +285,7 @@ #define CHARSET_SYMBOL_ID(symbol)	\
 /* Return an index to Vcharset_hash_table of the charset whose symbol
    is SYMBOL.  */
 #define CHARSET_SYMBOL_HASH_INDEX(symbol)	\
-  hash_lookup (XHASH_TABLE (Vcharset_hash_table), symbol)
+  lisp_hash_lookup (XHASH_TABLE (Vcharset_hash_table), symbol)

 /* Return the attribute vector of CHARSET.  */
 #define CHARSET_ATTRIBUTES(charset) (charset)->attributes
diff --git a/src/coding.h b/src/coding.h
index b72ffde3c55..73c3aa3bfc2 100644
--- a/src/coding.h
+++ b/src/coding.h
@@ -193,8 +193,8 @@ #define CODING_SYSTEM_SPEC(coding_system_symbol)	\
 /* Return the ID of CODING_SYSTEM_SYMBOL.  */

 #define CODING_SYSTEM_ID(coding_system_symbol)			\
-  hash_lookup (XHASH_TABLE (Vcoding_system_hash_table),		\
-	       coding_system_symbol)
+  lisp_hash_lookup (XHASH_TABLE (Vcoding_system_hash_table),		\
+		    coding_system_symbol)

 /* Return true if CODING_SYSTEM_SYMBOL is a coding system.  */

diff --git a/src/composite.c b/src/composite.c
index 2ef72a33d2e..9f6554fa74a 100644
--- a/src/composite.c
+++ b/src/composite.c
@@ -241,7 +241,7 @@ get_composition_id (ptrdiff_t charpos, ptrdiff_t bytepos, ptrdiff_t nchars,
     goto invalid_composition;

   hash_hash_t hash_code;
-  hash_index = hash_lookup_get_hash (hash_table, key, &hash_code);
+  hash_index = lisp_hash_lookup_get_hash (hash_table, key, &hash_code);
   if (hash_index >= 0)
     {
       /* We have already registered the same composition.  Change PROP
@@ -302,7 +302,7 @@ get_composition_id (ptrdiff_t charpos, ptrdiff_t bytepos, ptrdiff_t nchars,
   XSETCDR (prop, Fcons (make_fixnum (nchars), Fcons (key, XCDR (prop))));

   /* Register the composition in composition_hash_table.  */
-  hash_index = hash_put (hash_table, key, id, hash_code);
+  hash_index = lisp_hash_put (hash_table, key, id, hash_code);

   method = (NILP (components)
 	    ? COMPOSITION_RELATIVE
@@ -664,7 +664,7 @@ composition_gstring_put_cache (Lisp_Object gstring, ptrdiff_t len)
   LGSTRING_SET_HEADER (copy, Fcopy_sequence (header));
   for (ptrdiff_t i = 0; i < len; i++)
     LGSTRING_SET_GLYPH (copy, i, Fcopy_sequence (LGSTRING_GLYPH (gstring, i)));
-  ptrdiff_t id = hash_put (h, LGSTRING_HEADER (copy), copy, hash);
+  ptrdiff_t id = lisp_hash_put (h, LGSTRING_HEADER (copy), copy, hash);
   LGSTRING_SET_ID (copy, make_fixnum (id));
   return copy;
 }
@@ -686,7 +686,7 @@ composition_gstring_cache_clear_font (Lisp_Object font_object)

   DOHASH (h, k, gstring)
     if (EQ (LGSTRING_FONT (gstring), font_object))
-      hash_remove_from_table (h, k);
+      lisp_hash_remove_from_table (h, k);
 }

 DEFUN ("clear-composition-cache", Fclear_composition_cache,
diff --git a/src/emacs-module.c b/src/emacs-module.c
index 7797b04e026..b535aff5fcd 100644
--- a/src/emacs-module.c
+++ b/src/emacs-module.c
@@ -431,7 +431,7 @@ module_make_global_ref (emacs_env *env, emacs_value value)
   struct Lisp_Hash_Table *h = XHASH_TABLE (Vmodule_refs_hash);
   Lisp_Object new_obj = value_to_lisp (value);
   hash_hash_t hashcode;
-  ptrdiff_t i = hash_lookup_get_hash (h, new_obj, &hashcode);
+  ptrdiff_t i = lisp_hash_lookup_get_hash (h, new_obj, &hashcode);

   /* Note: This approach requires the garbage collector to never move
      objects.  */
@@ -455,7 +455,7 @@ module_make_global_ref (emacs_env *env, emacs_value value)
       ref->refcount = 1;
       Lisp_Object value;
       XSETPSEUDOVECTOR (value, ref, PVEC_OTHER);
-      hash_put (h, new_obj, value, hashcode);
+      lisp_hash_put (h, new_obj, value, hashcode);
       MODULE_INTERNAL_CLEANUP ();
       return &ref->value;
     }
@@ -470,7 +470,7 @@ module_free_global_ref (emacs_env *env, emacs_value global_value)
   MODULE_FUNCTION_BEGIN ();
   struct Lisp_Hash_Table *h = XHASH_TABLE (Vmodule_refs_hash);
   Lisp_Object obj = value_to_lisp (global_value);
-  ptrdiff_t i = hash_lookup (h, obj);
+  ptrdiff_t i = lisp_hash_lookup (h, obj);

   if (module_assertions)
     {
@@ -486,7 +486,7 @@ module_free_global_ref (emacs_env *env, emacs_value global_value)
       struct module_global_reference *ref = XMODULE_GLOBAL_REFERENCE (value);
       eassert (0 < ref->refcount);
       if (--ref->refcount == 0)
-        hash_remove_from_table (h, obj);
+        lisp_hash_remove_from_table (h, obj);
     }

   MODULE_INTERNAL_CLEANUP ();
diff --git a/src/fns.c b/src/fns.c
index 3f109a81836..c1572d11ea9 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -2858,7 +2858,7 @@ internal_equal_1 (Lisp_Object o1, Lisp_Object o2, enum equal_kind equal_kind,
 		  set_hash_value_slot (h, i, Fcons (o2, o2s));
 	      }
 	    else
-	      hash_put (h, o1, Fcons (o2, Qnil), hash);
+	      lisp_hash_put (h, o1, Fcons (o2, Qnil), hash);
 	  }
 	default: ;
 	}
@@ -5050,7 +5050,7 @@ hash_lookup_with_hash (struct Lisp_Hash_Table *h,

 /* Look up KEY in table H.  Return entry index or -1 if none.  */
 ptrdiff_t
-hash_lookup (struct Lisp_Hash_Table *h, Lisp_Object key)
+lisp_hash_lookup (struct Lisp_Hash_Table *h, Lisp_Object key)
 {
   return hash_lookup_with_hash (h, key, hash_from_key (h, key));
 }
@@ -5058,8 +5058,8 @@ hash_lookup (struct Lisp_Hash_Table *h, Lisp_Object key)
 /* Look up KEY in hash table H.  Return its hash value in *PHASH.
    Value is the index of the entry in H matching KEY, or -1 if not found.  */
 ptrdiff_t
-hash_lookup_get_hash (struct Lisp_Hash_Table *h, Lisp_Object key,
-		      hash_hash_t *phash)
+lisp_hash_lookup_get_hash (struct Lisp_Hash_Table *h, Lisp_Object key,
+			   hash_hash_t *phash)
 {
   EMACS_UINT hash = hash_from_key (h, key);
   *phash = hash;
@@ -5078,8 +5078,8 @@ check_mutable_hash_table (Lisp_Object obj, struct Lisp_Hash_Table *h)
    Value is the index of the entry in H matching KEY.  */

 ptrdiff_t
-hash_put (struct Lisp_Hash_Table *h, Lisp_Object key, Lisp_Object value,
-	  hash_hash_t hash)
+lisp_hash_put (struct Lisp_Hash_Table *h, Lisp_Object key, Lisp_Object value,
+	       hash_hash_t hash)
 {
   eassert (!hash_unused_entry_key_p (key));
   /* Increment count after resizing because resizing may fail.  */
@@ -5107,7 +5107,7 @@ hash_put (struct Lisp_Hash_Table *h, Lisp_Object key, Lisp_Object value,
 /* Remove the entry matching KEY from hash table H, if there is one.  */

 void
-hash_remove_from_table (struct Lisp_Hash_Table *h, Lisp_Object key)
+lisp_hash_remove_from_table (struct Lisp_Hash_Table *h, Lisp_Object key)
 {
   hash_hash_t hashval = hash_from_key (h, key);
   ptrdiff_t start_of_bucket = hash_index_index (h, hashval);
@@ -5288,7 +5288,7 @@ #define SXHASH_MAX_LEN   7
    can be any EMACS_UINT value.  */

 EMACS_UINT
-hash_string (char const *ptr, ptrdiff_t len)
+lisp_hash_string (char const *ptr, ptrdiff_t len)
 {
   char const *p   = ptr;
   char const *end = ptr + len;
@@ -5461,7 +5461,7 @@ sxhash_obj (Lisp_Object obj, int depth)
       return XHASH (obj);

     case Lisp_String:
-      return hash_string (SSDATA (obj), SBYTES (obj));
+      return lisp_hash_string (SSDATA (obj), SBYTES (obj));

     case Lisp_Vectorlike:
       {
@@ -5863,7 +5863,7 @@ DEFUN ("gethash", Fgethash, Sgethash, 2, 3, 0,
   (Lisp_Object key, Lisp_Object table, Lisp_Object dflt)
 {
   struct Lisp_Hash_Table *h = check_hash_table (table);
-  ptrdiff_t i = hash_lookup (h, key);
+  ptrdiff_t i = lisp_hash_lookup (h, key);
   return i >= 0 ? HASH_VALUE (h, i) : dflt;
 }

@@ -5882,7 +5882,7 @@ DEFUN ("puthash", Fputhash, Sputhash, 3, 3, 0,
   if (i >= 0)
     set_hash_value_slot (h, i, value);
   else
-    hash_put (h, key, value, hash);
+    lisp_hash_put (h, key, value, hash);

   return value;
 }
@@ -5894,7 +5894,7 @@ DEFUN ("remhash", Fremhash, Sremhash, 2, 2, 0,
 {
   struct Lisp_Hash_Table *h = check_hash_table (table);
   check_mutable_hash_table (table, h);
-  hash_remove_from_table (h, key);
+  lisp_hash_remove_from_table (h, key);
   return Qnil;
 }

diff --git a/src/image.c b/src/image.c
index 65d8db24adc..b6f04a275fd 100644
--- a/src/image.c
+++ b/src/image.c
@@ -5552,7 +5552,7 @@ xpm_free_color_cache (void)
 static int
 xpm_color_bucket (char *color_name)
 {
-  EMACS_UINT hash = hash_string (color_name, strlen (color_name));
+  EMACS_UINT hash = lisp_hash_string (color_name, strlen (color_name));
   return hash % XPM_COLOR_CACHE_BUCKETS;
 }

@@ -6238,8 +6238,8 @@ xpm_put_color_table_h (Lisp_Object color_table,
   Lisp_Object chars = make_unibyte_string (chars_start, chars_len);

   hash_hash_t hash_code;
-  hash_lookup_get_hash (table, chars, &hash_code);
-  hash_put (table, chars, color, hash_code);
+  lisp_hash_lookup_get_hash (table, chars, &hash_code);
+  lisp_hash_put (table, chars, color, hash_code);
 }

 static Lisp_Object
@@ -6249,7 +6249,7 @@ xpm_get_color_table_h (Lisp_Object color_table,
 {
   struct Lisp_Hash_Table *table = XHASH_TABLE (color_table);
   ptrdiff_t i =
-    hash_lookup (table, make_unibyte_string (chars_start, chars_len));
+    lisp_hash_lookup (table, make_unibyte_string (chars_start, chars_len));

   return i >= 0 ? HASH_VALUE (table, i) : Qnil;
 }
diff --git a/src/json.c b/src/json.c
index 5795c582ce0..f633215aca0 100644
--- a/src/json.c
+++ b/src/json.c
@@ -1571,9 +1571,9 @@ json_parse_object (struct json_parser *parser)
 	    hash_hash_t hash;
 	    Lisp_Object key = parser->object_workspace[i];
 	    Lisp_Object value = parser->object_workspace[i + 1];
-	    ptrdiff_t i = hash_lookup_get_hash (h, key, &hash);
+	    ptrdiff_t i = lisp_hash_lookup_get_hash (h, key, &hash);
 	    if (i < 0)
-	      hash_put (h, key, value, hash);
+	      lisp_hash_put (h, key, value, hash);
 	    else
 	      set_hash_value_slot (h, i, value);
 	  }
diff --git a/src/lisp.h b/src/lisp.h
index 243e8cc7f36..6d78836db3d 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -4261,17 +4261,17 @@ #define CONS_TO_INTEGER(cons, type, var)				\
 extern bool sweep_weak_table (struct Lisp_Hash_Table *, bool);
 extern void hexbuf_digest (char *, void const *, int);
 extern char *extract_data_from_object (Lisp_Object, ptrdiff_t *, ptrdiff_t *);
-EMACS_UINT hash_string (char const *, ptrdiff_t);
+EMACS_UINT lisp_hash_string (char const *, ptrdiff_t);
 EMACS_UINT sxhash (Lisp_Object);
 Lisp_Object make_hash_table (const struct hash_table_test *, EMACS_INT,
                              hash_table_weakness_t);
 Lisp_Object hash_table_weakness_symbol (hash_table_weakness_t weak);
-ptrdiff_t hash_lookup (struct Lisp_Hash_Table *, Lisp_Object);
-ptrdiff_t hash_lookup_get_hash (struct Lisp_Hash_Table *h, Lisp_Object key,
-				hash_hash_t *phash);
-ptrdiff_t hash_put (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object,
-		    hash_hash_t);
-void hash_remove_from_table (struct Lisp_Hash_Table *, Lisp_Object);
+ptrdiff_t lisp_hash_lookup (struct Lisp_Hash_Table *, Lisp_Object);
+ptrdiff_t lisp_hash_lookup_get_hash (struct Lisp_Hash_Table *h, Lisp_Object key,
+				     hash_hash_t *phash);
+ptrdiff_t lisp_hash_put (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object,
+			 hash_hash_t);
+void lisp_hash_remove_from_table (struct Lisp_Hash_Table *, Lisp_Object);
 extern struct hash_table_test const hashtest_eq, hashtest_eql, hashtest_equal;
 extern void validate_subarray (Lisp_Object, Lisp_Object, Lisp_Object,
 			       ptrdiff_t, ptrdiff_t *, ptrdiff_t *);
diff --git a/src/lread.c b/src/lread.c
index add8deb3954..90759c9386c 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -4258,12 +4258,12 @@ read0 (Lisp_Object readcharfun, bool locate_syms)
 			  = XHASH_TABLE (read_objects_map);
 			Lisp_Object number = make_fixnum (n);
 			hash_hash_t hash;
-			ptrdiff_t i = hash_lookup_get_hash (h, number, &hash);
+			ptrdiff_t i = lisp_hash_lookup_get_hash (h, number, &hash);
 			if (i >= 0)
 			  /* Not normal, but input could be malformed.  */
 			  set_hash_value_slot (h, i, placeholder);
 			else
-			  hash_put (h, number, placeholder, hash);
+			  lisp_hash_put (h, number, placeholder, hash);
 			read_stack_push ((struct read_stack_entry) {
 			    .type = RE_numbered,
 			    .u.numbered.number = number,
@@ -4276,7 +4276,7 @@ read0 (Lisp_Object readcharfun, bool locate_syms)
 			/* #N# -- reference to numbered object */
 			struct Lisp_Hash_Table *h
 			  = XHASH_TABLE (read_objects_map);
-			ptrdiff_t i = hash_lookup (h, make_fixnum (n));
+			ptrdiff_t i = lisp_hash_lookup (h, make_fixnum (n));
 			if (i < 0)
 			  INVALID_SYNTAX_WITH_BUFFER ();
 			obj = HASH_VALUE (h, i);
@@ -4571,9 +4571,9 @@ read0 (Lisp_Object readcharfun, bool locate_syms)
 		struct Lisp_Hash_Table *h2
 		  = XHASH_TABLE (read_objects_completed);
 		hash_hash_t hash;
-		ptrdiff_t i = hash_lookup_get_hash (h2, placeholder, &hash);
+		ptrdiff_t i = lisp_hash_lookup_get_hash (h2, placeholder, &hash);
 		eassert (i < 0);
-		hash_put (h2, placeholder, Qnil, hash);
+		lisp_hash_put (h2, placeholder, Qnil, hash);
 		obj = placeholder;
 	      }
 	    else
@@ -4586,9 +4586,9 @@ read0 (Lisp_Object readcharfun, bool locate_syms)
 		    struct Lisp_Hash_Table *h2
 		      = XHASH_TABLE (read_objects_completed);
 		    hash_hash_t hash;
-		    ptrdiff_t i = hash_lookup_get_hash (h2, obj, &hash);
+		    ptrdiff_t i = lisp_hash_lookup_get_hash (h2, obj, &hash);
 		    eassert (i < 0);
-		    hash_put (h2, obj, Qnil, hash);
+		    lisp_hash_put (h2, obj, Qnil, hash);
 		  }

 		/* Now put it everywhere the placeholder was...  */
@@ -4598,7 +4598,7 @@ read0 (Lisp_Object readcharfun, bool locate_syms)
 		/* ...and #n# will use the real value from now on.  */
 		struct Lisp_Hash_Table *h = XHASH_TABLE (read_objects_map);
 		hash_hash_t hash;
-		ptrdiff_t i = hash_lookup_get_hash (h, e->u.numbered.number,
+		ptrdiff_t i = lisp_hash_lookup_get_hash (h, e->u.numbered.number,
 						    &hash);
 		eassert (i >= 0);
 		set_hash_value_slot (h, i, obj);
@@ -4653,7 +4653,7 @@ substitute_object_recurse (struct subst *subst, Lisp_Object subtree)
      by #n=, which means that we can find it as a value in
      COMPLETED.  */
   if (EQ (subst->completed, Qt)
-      || hash_lookup (XHASH_TABLE (subst->completed), subtree) >= 0)
+      || lisp_hash_lookup (XHASH_TABLE (subst->completed), subtree) >= 0)
     subst->seen = Fcons (subtree, subst->seen);

   /* Recurse according to subtree's type.
@@ -5165,7 +5165,7 @@ DEFUN ("unintern", Funintern, Sunintern, 2, 2, 0,
 static ptrdiff_t
 obarray_index (struct Lisp_Obarray *oa, const char *str, ptrdiff_t size_byte)
 {
-  EMACS_UINT hash = hash_string (str, size_byte);
+  EMACS_UINT hash = lisp_hash_string (str, size_byte);
   return knuth_hash (reduce_emacs_uint_to_hash_hash (hash), oa->size_bits);
 }

diff --git a/src/minibuf.c b/src/minibuf.c
index b0d54bd51f0..234d730aac0 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -2103,7 +2103,7 @@ DEFUN ("test-completion", Ftest_completion, Stest_completion, 2, 3, 0,
   else if (HASH_TABLE_P (collection))
     {
       struct Lisp_Hash_Table *h = XHASH_TABLE (collection);
-      ptrdiff_t i = hash_lookup (h, string);
+      ptrdiff_t i = lisp_hash_lookup (h, string);
       if (i >= 0)
         {
           tem = HASH_KEY (h, i);
--
2.35.1


--pgp-sign-Multipart_Wed_Apr__2_20:45:53_2025-1
Content-Type: application/pgp-signature
Content-Transfer-Encoding: 7bit
Content-Description: OpenPGP Digital Signature

-----BEGIN PGP SIGNATURE-----

iF0EABECAB0WIQTWEnAIIlcZX4oAawJie18UwlnHhQUCZ+4EdAAKCRBie18UwlnH
hT7SAJ4ntWUB8fYfLbKnUyyA1I3MhMuulQCfeb36PVPwdaeJlkC/wAlTPHHASkk=
=U6lM
-----END PGP SIGNATURE-----

--pgp-sign-Multipart_Wed_Apr__2_20:45:53_2025-1--




Acknowledgement sent to "Greg A. Woods" <woods@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#77476; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Sun, 20 Apr 2025 06:45:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.