From owner-svn-src-all@freebsd.org Sat Jul 28 20:33:05 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E631B105DA64; Sat, 28 Jul 2018 20:33:04 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6599680060; Sat, 28 Jul 2018 20:33:04 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id w6SKWrHm014005 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Sat, 28 Jul 2018 23:32:57 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua w6SKWrHm014005 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id w6SKWrDM014004; Sat, 28 Jul 2018 23:32:53 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sat, 28 Jul 2018 23:32:53 +0300 From: Konstantin Belousov To: Conrad Meyer Cc: src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r336835 - head/lib/libc/gen Message-ID: <20180728203253.GB40119@kib.kiev.ua> References: <201807281908.w6SJ80qo089859@repo.freebsd.org> <20180728200611.GA40119@kib.kiev.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on tom.home X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jul 2018 20:33:05 -0000 On Sat, Jul 28, 2018 at 01:16:45PM -0700, Conrad Meyer wrote: > On Sat, Jul 28, 2018 at 1:06 PM, Konstantin Belousov > wrote: > > On Sat, Jul 28, 2018 at 07:08:00PM +0000, Conrad Meyer wrote: > >> For unclear reasons, POSIX' definition of these routines spells NULL as > >> "(char *)0." This is needlessly unclear. One guess might be that POSIX > >> targets more exotic computer architectures than FreeBSD does. Fortunately, > >> there is no such problem on any reasonable platform for FreeBSD to support. > >> Spell NULL as NULL. > > > > The reasons are quite clear. > > Unclear here refers to the lack of documentation, not the absense of a > possible explanation. > > > Practically NULL has to be defined as '0' > > or '0L' at best, for C and esp. C++ rules of the pointers automatic > > casts to work. This means that NULL cannot be used in vararg lists where > > the pointer is expected. > > This is not true on FreeBSD. NULL is (void*)0 in all C code, and the > special nullptr value in C++. Yes, this is a stronger definition than > the C standard guarantees. This is because the C standard permits > much more exotic architectures than FreeBSD actually runs on. Our existing practice is to not provide an advise in the man pages for the userspace code which would harm the portability or the standard conformance. > > > In other words, the (char *)0 part of the pre-commit text was correct, > > while after-commit use of NULL only works on machines where pointers > > have the same representation as ints or longs. > > I believe this encompasses all architectures FreeBSD supports ??? even > ignoring our sys/_null.h definition of NULL as (void *)0 or nullptr. I am not so sure about CheriBSD, for instance.