Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Nov 2015 03:26:30 +1100 (EST)
From:      Bruce Evans <brde@optusnet.com.au>
To:        David Chisnall <theraven@freebsd.org>
Cc:        Konstantin Belousov <kostikbel@gmail.com>,  Hans Petter Selasky <hps@selasky.org>, cem@freebsd.org,  src-committers@freebsd.org, svn-src-all@freebsd.org,  svn-src-head@freebsd.org
Subject:   Re: svn commit: r290711 - head/sys/ofed/drivers/infiniband/core
Message-ID:  <20151114024315.Y1146@besplex.bde.org>
In-Reply-To: <0330812D-2FB6-4490-BFB3-67F9E66975A7@FreeBSD.org>
References:  <201511121012.tACACKTI075143@repo.freebsd.org> <CAG6CVpWKsa3SwX27JpxBeQDikeDWJXyUGWG8sS=9DvzbML9xcA@mail.gmail.com> <56459CEE.4090007@selasky.org> <20151113083543.GV2257@kib.kiev.ua> <0330812D-2FB6-4490-BFB3-67F9E66975A7@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 13 Nov 2015, David Chisnall wrote:

> On 13 Nov 2015, at 08:35, Konstantin Belousov <kostikbel@gmail.com> wrote=
:
>>
>> On Fri, Nov 13, 2015 at 09:18:54AM +0100, Hans Petter Selasky wrote:
>>> Hi,
>>>
>>> On 11/12/15 18:17, Conrad Meyer wrote:
>>>> These should cast through (u)intptr_t rather than unsigned long.
>>>
>>> This is Linux code, and they use "unsigned long" for pointer casts
>>> everywhere, trying to not break their style.
>>>
>>> BTW: I added to linux_compat.c:
>>>
>>> CTASSERT(sizeof(unsigned long) =3D=3D sizeof(uintptr_t));
>>>
>>> And it survived my "tinderbox" build and I was surprised!

This is not surprising.  "long" is broken on all supported systems
since no 16-bit systems are supported and misimplementations with longs
the same size as int or register_t are not unusable on 32+ bit systems.
Longs should actually be long.  That means that they should be longer
than register_t, so they are also longer than pointers except on systems
with large pointers like x86 with far pointers.

>> FreeBSD (at least currently) runs on two kinds of ABIs: ILP32 and LP64.
>> ILP32 means that sizeof(int) =3D=3D sizeof(long) =3D=3D sizeof(void *) =
=3D=3D 4.
>> For LP64, sizeof(long) =3D=3D sizeof(void *) =3D=3D 8, while sizeof(int)=
 =3D=3D 4.
>> We do not support anything else.
>
> Note that this is not true of all downstreams.  We currently have 128 and=
 256-bit void*s with 64-bit longs on CHERI, and I believe that bde=E2=80=99=
s version has 32-bit longs on all platforms.  This kind of code *is* broken=
 for us and we=E2=80=99d greatly appreciate people not writing new code tha=
t intentionally relies on undefined behaviour (round tripping a pointer via=
 any integer type other than intptr_t is undefined in C), when a well-defin=
ed mechanism exists, just because Linux decides to do the wrong thing.

Does CHERI have far pointers or fat pointers?  Does it have newlines?

32-bit longs on all platforms is the last thing that I would have.  I
have them on 16-bit systems (but I last ran one of those in 2009 after
getting it out of the attic).  i386 with correctly-sized longs has
64-bit longs (IP32L64).  I never finished that.  The tiny amount of
support for this needed in i386/include/_limits.h was removed in 2011
(r217128).  gcc just needed to be configured with -DLONG_TYPE_SIZE=3D64.
Other places mostly just need to use the correct type.  Often the fix
is simply to replace long by int or a typedefed type.  i386/include/
_types.h was already correct or fixed (mostly by using fixed-width
typedefed types).  But sometimes there is an ABI problem.  long in an
API literally asks for pessimal double-width sizes, but sometimes what
it needs is precisely 32 ot 64 bits.

Bruce
From owner-svn-src-head@freebsd.org  Fri Nov 13 17:25:21 2015
Return-Path: <owner-svn-src-head@freebsd.org>
Delivered-To: svn-src-head@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id AB264A2E403;
 Fri, 13 Nov 2015 17:25:21 +0000 (UTC) (envelope-from brd@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (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 476EB107D;
 Fri, 13 Nov 2015 17:25:21 +0000 (UTC) (envelope-from brd@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id tADHPKTk051556;
 Fri, 13 Nov 2015 17:25:20 GMT (envelope-from brd@FreeBSD.org)
Received: (from brd@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id tADHPKip051554;
 Fri, 13 Nov 2015 17:25:20 GMT (envelope-from brd@FreeBSD.org)
Message-Id: <201511131725.tADHPKip051554@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: brd set sender to brd@FreeBSD.org
 using -f
From: Brad Davis <brd@FreeBSD.org>
Date: Fri, 13 Nov 2015 17:25:20 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-head@freebsd.org
Subject: svn commit: r290772 - in head/etc: . mtree
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-head@freebsd.org
X-Mailman-Version: 2.1.20
Precedence: list
List-Id: SVN commit messages for the src tree for head/-current
 <svn-src-head.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-head>,
 <mailto:svn-src-head-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-head/>;
List-Post: <mailto:svn-src-head@freebsd.org>
List-Help: <mailto:svn-src-head-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-head>,
 <mailto:svn-src-head-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 13 Nov 2015 17:25:21 -0000

Author: brd (doc,ports committer)
Date: Fri Nov 13 17:25:20 2015
New Revision: 290772
URL: https://svnweb.freebsd.org/changeset/base/290772

Log:
  Fix a few files that where being incorrectly installed as one file.  This was caused by the nvi upgrade fallout in r281994.  So add the missing directories back to the mtree and add distrib-cleanup target to retroactively remove the files that should have been directories.
  
  Reviewed by:	bdrewery
  Approved by:	bdrewery

Modified:
  head/etc/Makefile
  head/etc/mtree/BSD.usr.dist

Modified: head/etc/Makefile
==============================================================================
--- head/etc/Makefile	Fri Nov 13 17:25:14 2015	(r290771)
+++ head/etc/Makefile	Fri Nov 13 17:25:20 2015	(r290772)
@@ -365,7 +365,19 @@ MTREES+=	mtree/BSD.sendmail.dist		/
 MTREES+=	../${mtree}			/
 .endfor
 
-distrib-dirs: ${MTREES:N/*}
+# Clean up some directories that where mistakenly created as files that
+# should not have been as part of the nvi update in r281994.
+# This should be removed after 11.0-RELEASE.
+DISTRIB_CLEANUP_SHARE_FILES=	${SHAREDIR}/doc/usd/10.exref ${SHAREDIR}/doc/usd/11.edit
+DISTRIB_CLEANUP_SHARE_FILES+=	${SHAREDIR}/doc/usd/12.vi ${SHAREDIR}/doc/usd/13.viref
+distrib-cleanup: .PHONY
+	for file in ${DISTRIB_CLEANUP_SHARE_FILES}; do \
+		if [ -f ${DESTDIR}/$${file} ]; then \
+			rm -f ${DESTDIR}/$${file}; \
+		fi; \
+	done
+
+distrib-dirs: ${MTREES:N/*} distrib-cleanup .PHONY
 	@set ${MTREES}; \
 	while test $$# -ge 2; do \
 		m=${.CURDIR}/$$1; \

Modified: head/etc/mtree/BSD.usr.dist
==============================================================================
--- head/etc/mtree/BSD.usr.dist	Fri Nov 13 17:25:14 2015	(r290771)
+++ head/etc/mtree/BSD.usr.dist	Fri Nov 13 17:25:20 2015	(r290772)
@@ -286,6 +286,14 @@
                 ..
                 07.mail
                 ..
+                10.exref
+                ..
+                11.edit
+                ..
+                12.vi
+                ..
+                13.viref
+                ..
                 18.msdiffs
                 ..
                 19.memacros



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20151114024315.Y1146>