From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/14367 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: James Y Knight Newsgroups: gmane.linux.lib.musl.general Subject: [PATCH] Define NULL as __null in C++ mode when using GCC or Clang. Date: Tue, 9 Jul 2019 15:19:00 -0400 Message-ID: Reply-To: musl@lists.openwall.com Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000005ea611058d447096" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="203276"; mail-complaints-to="usenet@blaine.gmane.org" To: musl@lists.openwall.com Original-X-From: musl-return-14383-gllmg-musl=m.gmane.org@lists.openwall.com Tue Jul 09 21:19:45 2019 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.89) (envelope-from ) id 1hkveQ-000qh1-G1 for gllmg-musl@m.gmane.org; Tue, 09 Jul 2019 21:19:42 +0200 Original-Received: (qmail 11684 invoked by uid 550); 9 Jul 2019 19:19:39 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 11651 invoked from network); 9 Jul 2019 19:19:38 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=avbj0jCQcnYCskMxu+3Bh4Z0JXpEDIRZqAebm0UvUwA=; b=G1WiZUQp3M2HCJiB0NBZJwMRUk8n98uVhF6cbXK9NyR4tYdYvYH1N5DQ6POtdXqKRD 44vbZCgRhJAIaVm2azakqmXBZzAYVpWgonecIr2oJuIU5a75Xi8byNDluMOEasFVDw0J gvs6A3bjXC54HUdBbRq1B9lLWcHPDKcrY9zZ3Zp3rCG998k8pNO7q4qugcoN5yoo0bNz dgUJO9Z6N8MH6ug0FT867Za8RVkDPhqxJ6zi0NEL4JYyxsXJze6z9uHoUaqxcnYs04Gv 5aw7aBmJC8psxtesOkhX2BHuX1Lu98MLe2I1EJe5AXmhsvJ/iYzRkcekPlOkk2G376dv I4pA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=avbj0jCQcnYCskMxu+3Bh4Z0JXpEDIRZqAebm0UvUwA=; b=a+MCTbjeu9wlT2k+fIYisKvxVnaHew2aMj1YIEHgfDjcPzOm4SEeW+HkaVLW1msJA7 Q06XrNQCW6YI5ej+qwaHf66GvSm3Svst7lXvxCv6ItkS/ngmFCqRMG0hhqvtceplgdFm 0PxYLKdWpn6vMO4TXLR8SR5uV0w5HVa+IYOnN+YV5FYBdyIAnRZw+93nDVEcypclgsqc Wu/4z2QALT8APkdytMwVKNleBUT3oodrRAw2f5ZCrYz0w+r6/C8UiZ4EUx/W5zTBWBZY 34XNfBSW87WMr1z8801CDGUDfiM/LO6Nh6ZiwTN5xUYxhIJKSD9oSYlIqoNjy+M77UFB pPBA== X-Gm-Message-State: APjAAAWgaFfNoSEVgUJJ1i2tl6EGec4irKCSPcv+OhMoxfqTDWcDS9X7 cemjQ3lPr9GrBBq/1yPySkXV6HwdY0bwid8ttJTuWMk56WU= X-Google-Smtp-Source: APXvYqwciQ0OU+g+wjqJjSnkv8sRFlgWjAPYwXYLZwNT63Zk8HRCTPGcVIHders30lMh2jcidu/Sfrx5AEFJNopzw4U= X-Received: by 2002:ab0:2442:: with SMTP id g2mr15309622uan.47.1562699966040; Tue, 09 Jul 2019 12:19:26 -0700 (PDT) Xref: news.gmane.org gmane.linux.lib.musl.general:14367 Archived-At: --0000000000005ea611058d447096 Content-Type: multipart/alternative; boundary="0000000000005ea60e058d447094" --0000000000005ea60e058d447094 Content-Type: text/plain; charset="UTF-8" Both GCC and Clang ship their own stddef.h which does this (musl's stddef.h is simply ignored). But, musl also defines the macro in a number of other headers. Thus, depending on which header you include last, you'll end up with a different definition of NULL. Mostly, getting musl's definition simply degrades warning diagnostics in C++ slightly -- e.g. GCC can no longer emit this warning: warning: passing NULL to non-pointer argument 1 of 'int foo(long int)' [-Wconversion-null] If you're using Clang's modules support, it can also break compilation. In that case, the conflicting definitions may be detected as a module incompatibility. A different (potentially better) fix would be to always retrieve the definition of NULL from the compiler's stddef.h (via #define __need_NULL #include ). It may also be best to delete the musl stddef.h entirely for clarity, since it's currently ignored, anyhow. But, this seemed the more minimal fix. --0000000000005ea60e058d447094 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Both GCC and Clang ship their own stddef.h which does this= (musl's
stddef.h is simply ignored). But, musl also defines the mac= ro in a
number of other headers. Thus, depending on which header you inc= lude
last, you'll end up with a different definition of NULL.
Mostly, getting musl's definition simply degrades warning diagnostics<= br>in C++ slightly -- e.g. GCC can no longer emit this warning:
=C2=A0 w= arning: passing NULL to non-pointer argument 1 of 'int foo(long int)= 9; [-Wconversion-null]

If you're using Clang's modules suppo= rt, it can also break
compilation. In that case, the conflicting definit= ions may be detected
as a module incompatibility.

A different (po= tentially better) fix would be to always retrieve the
definition of NULL= from the compiler's stddef.h (via #define
__need_NULL #include <= stddef.h>). It may also be best to delete the
musl stddef.h entirely = for clarity, since it's currently ignored,
anyhow.

But, this = seemed the more minimal fix.
--0000000000005ea60e058d447094-- --0000000000005ea611058d447096 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Define-NULL-as-__null-in-C-mode-when-using-GCC-or-Cl.patch" Content-Disposition: attachment; filename="0001-Define-NULL-as-__null-in-C-mode-when-using-GCC-or-Cl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jxw74cmm0 RnJvbSAzZDg5OGQ0ODI1YzI4ZjA4YWRlOTJjNDA4MjJmYTViZmEyZWYxZjFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYW1lcyBZIEtuaWdodCA8anlrbmlnaHRAZ29vZ2xlLmNvbT4K RGF0ZTogVHVlLCA5IEp1bCAyMDE5IDE1OjAzOjAzIC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gRGVm aW5lIE5VTEwgYXMgX19udWxsIGluIEMrKyBtb2RlIHdoZW4gdXNpbmcgR0NDIG9yIENsYW5nLgoK Qm90aCBHQ0MgYW5kIENsYW5nIHNoaXAgdGhlaXIgb3duIHN0ZGRlZi5oIHdoaWNoIGRvZXMgdGhp cyAobXVzbCdzCnN0ZGRlZi5oIGlzIHNpbXBseSBpZ25vcmVkKS4gQnV0LCBtdXNsIGFsc28gZGVm aW5lcyB0aGUgbWFjcm8gaW4gYQpudW1iZXIgb2Ygb3RoZXIgaGVhZGVycy4gVGh1cywgZGVwZW5k aW5nIG9uIHdoaWNoIGhlYWRlciB5b3UgaW5jbHVkZQpsYXN0LCB5b3UnbGwgZW5kIHVwIHdpdGgg YSBkaWZmZXJlbnQgZGVmaW5pdGlvbiBvZiBOVUxMLgoKTW9zdGx5LCBnZXR0aW5nIG11c2wncyBk ZWZpbml0aW9uIHNpbXBseSBkZWdyYWRlcyB3YXJuaW5nIGRpYWdub3N0aWNzCmluIEMrKyBzbGln aHRseSAtLSBlLmcuIEdDQyBjYW4gbm8gbG9uZ2VyIGVtaXQgdGhpcyB3YXJuaW5nOgogIHdhcm5p bmc6IHBhc3NpbmcgTlVMTCB0byBub24tcG9pbnRlciBhcmd1bWVudCAxIG9mICdpbnQgZm9vKGxv bmcgaW50KScgWy1XY29udmVyc2lvbi1udWxsXQoKSWYgeW91J3JlIHVzaW5nIENsYW5nJ3MgbW9k dWxlcyBzdXBwb3J0LCBpdCBjYW4gYWxzbyBicmVhawpjb21waWxhdGlvbi4gSW4gdGhhdCBjYXNl LCB0aGUgY29uZmxpY3RpbmcgZGVmaW5pdGlvbnMgbWF5IGJlIGRldGVjdGVkCmFzIGEgbW9kdWxl IGluY29tcGF0aWJpbGl0eS4KCkEgZGlmZmVyZW50IChwb3RlbnRpYWxseSBiZXR0ZXIpIGZpeCB3 b3VsZCBiZSB0byBhbHdheXMgcmV0cmlldmUgdGhlCmRlZmluaXRpb24gb2YgTlVMTCBmcm9tIHRo ZSBjb21waWxlcidzIHN0ZGRlZi5oICh2aWEgI2RlZmluZQpfX25lZWRfTlVMTCAjaW5jbHVkZSA8 c3RkZGVmLmg+KS4gSXQgbWF5IGFsc28gYmUgYmVzdCB0byBkZWxldGUgdGhlCm11c2wgc3RkZGVm LmggZW50aXJlbHkgZm9yIGNsYXJpdHksIHNpbmNlIGl0J3MgY3VycmVudGx5IGlnbm9yZWQsCmFu eWhvdy4KCkJ1dCwgdGhpcyBzZWVtZWQgdGhlIG1vcmUgbWluaW1hbCBmaXguCi0tLQogaW5jbHVk ZS9sb2NhbGUuaCB8IDQgKysrKwogaW5jbHVkZS9zdGRkZWYuaCB8IDQgKysrKwogaW5jbHVkZS9z dGRpby5oICB8IDQgKysrKwogaW5jbHVkZS9zdGRsaWIuaCB8IDQgKysrKwogaW5jbHVkZS9zdHJp bmcuaCB8IDQgKysrKwogaW5jbHVkZS90aW1lLmggICB8IDQgKysrKwogaW5jbHVkZS91bmlzdGQu aCB8IDQgKysrKwogaW5jbHVkZS93Y2hhci5oICB8IDQgKysrKwogOCBmaWxlcyBjaGFuZ2VkLCAz MiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9sb2NhbGUuaCBiL2luY2x1ZGUv bG9jYWxlLmgKaW5kZXggY2UzODQzODEuLjgwYzJkMmRiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xv Y2FsZS5oCisrKyBiL2luY2x1ZGUvbG9jYWxlLmgKQEAgLTgsNyArOCwxMSBAQCBleHRlcm4gIkMi IHsKICNpbmNsdWRlIDxmZWF0dXJlcy5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKKyNpZmRlZiBf X0dOVUNfXworI2RlZmluZSBOVUxMIF9fbnVsbAorI2Vsc2UKICNkZWZpbmUgTlVMTCAwTAorI2Vu ZGlmCiAjZWxzZQogI2RlZmluZSBOVUxMICgodm9pZCopMCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEv aW5jbHVkZS9zdGRkZWYuaCBiL2luY2x1ZGUvc3RkZGVmLmgKaW5kZXggYmQ3NTM4NTMuLjQxNWEy ZDkxIDEwMDY0NAotLS0gYS9pbmNsdWRlL3N0ZGRlZi5oCisrKyBiL2luY2x1ZGUvc3RkZGVmLmgK QEAgLTIsNyArMiwxMSBAQAogI2RlZmluZSBfU1REREVGX0gKIAogI2lmZGVmIF9fY3BsdXNwbHVz CisjaWZkZWYgX19HTlVDX18KKyNkZWZpbmUgTlVMTCBfX251bGwKKyNlbHNlCiAjZGVmaW5lIE5V TEwgMEwKKyNlbmRpZgogI2Vsc2UKICNkZWZpbmUgTlVMTCAoKHZvaWQqKTApCiAjZW5kaWYKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvc3RkaW8uaCBiL2luY2x1ZGUvc3RkaW8uaAppbmRleCAzNjA0MTk4 Yy4uOWUzMGQxYWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc3RkaW8uaAorKysgYi9pbmNsdWRlL3N0 ZGlvLmgKQEAgLTI2LDcgKzI2LDExIEBAIGV4dGVybiAiQyIgewogI2luY2x1ZGUgPGJpdHMvYWxs dHlwZXMuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCisjaWZkZWYgX19HTlVDX18KKyNkZWZpbmUg TlVMTCBfX251bGwKKyNlbHNlCiAjZGVmaW5lIE5VTEwgMEwKKyNlbmRpZgogI2Vsc2UKICNkZWZp bmUgTlVMTCAoKHZvaWQqKTApCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3RkbGliLmgg Yi9pbmNsdWRlL3N0ZGxpYi5oCmluZGV4IDQyY2E4MzM2Li5hMjcyYTRmNCAxMDA2NDQKLS0tIGEv aW5jbHVkZS9zdGRsaWIuaAorKysgYi9pbmNsdWRlL3N0ZGxpYi5oCkBAIC04LDcgKzgsMTEgQEAg ZXh0ZXJuICJDIiB7CiAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVz CisjaWZkZWYgX19HTlVDX18KKyNkZWZpbmUgTlVMTCBfX251bGwKKyNlbHNlCiAjZGVmaW5lIE5V TEwgMEwKKyNlbmRpZgogI2Vsc2UKICNkZWZpbmUgTlVMTCAoKHZvaWQqKTApCiAjZW5kaWYKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvc3RyaW5nLmggYi9pbmNsdWRlL3N0cmluZy5oCmluZGV4IDc5NWEy YWJjLi40ZDM0NGQ3MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zdHJpbmcuaAorKysgYi9pbmNsdWRl L3N0cmluZy5oCkBAIC04LDcgKzgsMTEgQEAgZXh0ZXJuICJDIiB7CiAjaW5jbHVkZSA8ZmVhdHVy ZXMuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCisjaWZkZWYgX19HTlVDX18KKyNkZWZpbmUgTlVM TCBfX251bGwKKyNlbHNlCiAjZGVmaW5lIE5VTEwgMEwKKyNlbmRpZgogI2Vsc2UKICNkZWZpbmUg TlVMTCAoKHZvaWQqKTApCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdGltZS5oIGIvaW5j bHVkZS90aW1lLmgKaW5kZXggNjcyYjNmYzMuLjBlZWMzNzNjIDEwMDY0NAotLS0gYS9pbmNsdWRl L3RpbWUuaAorKysgYi9pbmNsdWRlL3RpbWUuaApAQCAtOCw3ICs4LDExIEBAIGV4dGVybiAiQyIg ewogI2luY2x1ZGUgPGZlYXR1cmVzLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cworI2lmZGVmIF9f R05VQ19fCisjZGVmaW5lIE5VTEwgX19udWxsCisjZWxzZQogI2RlZmluZSBOVUxMIDBMCisjZW5k aWYKICNlbHNlCiAjZGVmaW5lIE5VTEwgKCh2b2lkKikwKQogI2VuZGlmCmRpZmYgLS1naXQgYS9p bmNsdWRlL3VuaXN0ZC5oIGIvaW5jbHVkZS91bmlzdGQuaAppbmRleCA5NDg1ZGE3YS4uMzkxYjU4 YmEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdW5pc3RkLmgKKysrIGIvaW5jbHVkZS91bmlzdGQuaApA QCAtMTYsNyArMTYsMTEgQEAgZXh0ZXJuICJDIiB7CiAjZGVmaW5lIFNFRUtfRU5EIDIKIAogI2lm ZGVmIF9fY3BsdXNwbHVzCisjaWZkZWYgX19HTlVDX18KKyNkZWZpbmUgTlVMTCBfX251bGwKKyNl bHNlCiAjZGVmaW5lIE5VTEwgMEwKKyNlbmRpZgogI2Vsc2UKICNkZWZpbmUgTlVMTCAoKHZvaWQq KTApCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvd2NoYXIuaCBiL2luY2x1ZGUvd2NoYXIu aAppbmRleCA4OGViNTViMS4uYmZkYmFlYmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvd2NoYXIuaAor KysgYi9pbmNsdWRlL3djaGFyLmgKQEAgLTM5LDcgKzM5LDExIEBAIGV4dGVybiAiQyIgewogI2Vu ZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cworI2lmZGVmIF9fR05VQ19fCisjZGVmaW5lIE5VTEwg X19udWxsCisjZWxzZQogI2RlZmluZSBOVUxMIDBMCisjZW5kaWYKICNlbHNlCiAjZGVmaW5lIE5V TEwgKCh2b2lkKikwKQogI2VuZGlmCi0tIAoyLjIyLjAuNDEwLmdkOGZkYmUyMWI1LWdvb2cKCg== --0000000000005ea611058d447096--