Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 May 2014 12:23:55 -0600
From:      Ian Lepore <ian@FreeBSD.org>
To:        Tijl Coosemans <tijl@FreeBSD.org>
Cc:        Baptiste Daroussin <bapt@FreeBSD.org>, src-committers@FreeBSD.org, svn-src-all@FreeBSD.org, Glen Barber <gjb@FreeBSD.org>, Nathan Whitehorn <nwhitehorn@FreeBSD.org>, svn-src-head@FreeBSD.org, Warner Losh <imp@bsdimp.com>
Subject:   Re: svn commit: r266553 - head/release/scripts
Message-ID:  <1400955835.1152.323.camel@revolution.hippie.lan>
In-Reply-To: <20140524185345.263f230d@kalimero.tijl.coosemans.org>
References:  <201405221922.s4MJM4Y9025265@svn.freebsd.org> <537F6706.6070509@freebsd.org> <20140523153619.GF72340@ivaldir.etoilebsd.net> <537F6EBC.3080008@freebsd.org> <20140523162020.GG72340@ivaldir.etoilebsd.net> <C5A59513-AF58-4749-BCD7-F54BB6F56E90@gmail.com> <20140524165940.3c687553@kalimero.tijl.coosemans.org> <5380C311.60201@freebsd.org> <20140524185345.263f230d@kalimero.tijl.coosemans.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 2014-05-24 at 18:53 +0200, Tijl Coosemans wrote:
> On Sat, 24 May 2014 09:04:33 -0700 Nathan Whitehorn wrote:
> > On 05/24/14 07:59, Tijl Coosemans wrote:
> >> On Fri, 23 May 2014 17:29:48 -0600 Warner Losh wrote:
> >>> On May 23, 2014, at 10:20 AM, Baptiste Daroussin <bapt@FreeBSD.org>=
 wrote:
> >>>> On Fri, May 23, 2014 at 08:52:28AM -0700, Nathan Whitehorn wrote:
> >>>>> On 05/23/14 08:36, Baptiste Daroussin wrote:
> >>>>>> On Fri, May 23, 2014 at 08:19:34AM -0700, Nathan Whitehorn wrote=
:
> >>>>>>> Is there any chance of finally switching the pkg abi identifier=
s to just
> >>>>>>> be uname -p?
> >>>>>>> -Nathan
> >>>>>> Keeping asking won't make it happen, I have explained a large nu=
mber of time why it
> >>>>>> happened, why it is not easy for compatibility and why uname -p =
is still not
> >>>>>> representing the ABI we do support, and what flexibility we need=
 that the
> >>>>>> current string offers to us.
> >>>>>>
> >>>>>> if one is willing to do the work, please be my guess, just dig i=
nto the archives
> >>>>>> and join the pkg development otherwise: no it won't happen befor=
e a while
> >>>>>> because we have way too much work on the todo and this item is s=
tored at the
> >>>>>> very end of this todo.
> >>>>>>
> >>>>>> regards,
> >>>>>> Bapt
> >>>>> I'm happy to do the work, and have volunteered now many times. If=
 uname
> >>>>> -p does not describe the ABI fully, then uname -p needs changes o=
n the
> >>>>> relevant platforms. Which are they? What extra flexibility does t=
he
> >>>>> string give you if uname -p describes the ABI completely?
> >>>>> -Nathan
> >>>> just simple examples in armv6:
> >>>> - eabi vs oabi
> >>>> - The different float abi (even if only one is supported for now o=
thers are
> >>>>   being worked on)
> >>>> - little endian vs big endian
> >>> All of those are encoded in the MACHINE_ARCH + freebsd version, no =
exceptions
> >>> on supported architectures that are tier 2 or higher. This seems li=
ke a weak reason.
> >>>
> >>>> the extras flexibilit is being able to say this binary do support =
freebsd i386
> >>>> and amd64 in one key, freebsd:9:x86:*, or or all arches freebsd:10=
:*
> >>> Will there be a program to convert this new, special invention to t=
he standard
> >>> that we=A2ve used for the past 20 years? If you need the flexibilit=
y, which I=A2m not
> >>> entirely sure I=A2ve seen a good use case for. When would you have =
a x86 binary
> >>> package? Wouldn=A2t it be either i386 or amd64?
> >> ABI isn't just about the instruction set.  It's also about the sizes=
 of C
> >> types (like pointers).  If I remember correctly, the pkg scheme was =
chosen
> >> to allow for ABIs like x32 which use the 64 bit instruction set with=
 32
> >> bit pointers.  MACHINE_ARCH would also be amd64 in this case.
> >=20
> > No, it wouldn't. MACHINE_ARCH would be something else (x32, probably)=
 in=20
> > such cases. MACHINE_ARCH (and uname -p, which reports it) is the Free=
BSD=20
> > ABI identifier and encodes 100% of the ABI information. This would be=
=20
> > true even if there is never an x32 kernel.
>=20
> No, there's no such thing as an x32 kernel.  It's an amd64 kernel that
> supports a second userland ABI.  In C preprocessor terms they are
> distinguished by (__amd64__ && _LP64) and (__amd64__ && !_LP64).
> uname -p gives you the processor architecture (the __amd64__ bit) but
> then you can still choose the sizes of standard C types (the _LP64 bit).
> So far we've always had one ABI per processor architecture but this
> is not strictly necessary.
>=20

All you have to do is look at the plethora of ARM ABIs we support (and
the corresponding separate kernel for each) to see the falseness of that
last sentence.  ARM variations include v4 vs v6, OABI vs EABI (calling
and register usage standards), hard vs soft float, little vs big endian.
Virtually all combinations of those are possible (there are a few combos
we don't support), and each one has its own MACHINE_ARCH.

-- Ian





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