Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Jul 2013 17:54:02 -0700
From:      Peter Wemm <peter@wemm.org>
To:        Adrian Chadd <adrian@freebsd.org>
Cc:        Andrew Turner <andrew@fubar.geek.nz>, freebsd-arch@freebsd.org
Subject:   Re: Adding a MACHINE_ARCH note
Message-ID:  <CAGE5yCpJmRDvnaYtozj4bCqNoQXH=1e96HPJAqwJuRdn4H9BZA@mail.gmail.com>
In-Reply-To: <CAJ-Vmo=iV8BsGriFRgNuP-ZJdQhpmBLhjAkz-nSVRS0HPKSyOQ@mail.gmail.com>
References:  <20130709090744.0e497e7e@bender.Home> <32F979BD-FB5C-4111-9586-4C5E7C6DFA71@bsdimp.com> <20130709234837.559e3769@bender.Home> <CAJ-Vmo=iV8BsGriFRgNuP-ZJdQhpmBLhjAkz-nSVRS0HPKSyOQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Jul 9, 2013 at 5:40 PM, Adrian Chadd <adrian@freebsd.org> wrote:
> Someone pointed out there's dirty people running 32-bit binaries using
> the 64-bit intel/amd instruction set.
>
> Is this also able to represent that?

That would be "X32", so there's 3 x86 ABI variants:
i386 - 32 bit
amd64 - 32 bit
amd64 - 64 bit

Incidentally, pkgng has a issues with this.  For some reason it lumps
both i386 and amd64 into a single pseudo-arch called "x86" with a 32
and 64 bit variant.  It doesn't leave room for distinguishing the two
incompatible 32 bit architectures.

"x32" is where the compiler generates code where "long" and "pointer"
are 32 bit, but the instruction set is otherwise amd64 and has all 16
general purpose registers available.   "long long" is a 64 bit
register instead of a pair of 32 bit registers like on i386.

> -adrian
>
> On 9 July 2013 15:48, Andrew Turner <andrew@fubar.geek.nz> wrote:
>> On Tue, 9 Jul 2013 08:19:46 -0600
>> Warner Losh <imp@bsdimp.com> wrote:
>>> I thought that the ELF headers gave us all the data we needed to know
>>> how things were built...
>>
>> It will tell us if it was for e.g. an ARM or MIPS ELF file, but I'm not
>> sure how we can tell the difference between an arm and an armv6 ELF.
>>
>> With armv6 there are a few changes in the userland/kernel
>> interface, e.g. reading the thread local storage pointer is different
>> such that an armv6 static binary would not run on an ARMv5 core as it
>> uses newer instructions.
>>
>> Andrew
>> _______________________________________________
>> freebsd-arch@freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-arch
>> To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"
> _______________________________________________
> freebsd-arch@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arch
> To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"



-- 
Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com; KI6FJV
UTF-8: So you can \342\200\231 .. for when a ' just won't do
<brueffer> ZFS must be the bacon of file systems. "everything's better with ZFS"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGE5yCpJmRDvnaYtozj4bCqNoQXH=1e96HPJAqwJuRdn4H9BZA>