Build 32 bit binaries on amd64

Nathan Whitehorn nwhitehorn at freebsd.org
Tue Aug 21 17:34:46 UTC 2012


On 08/21/12 08:44, John Baldwin wrote:
> On Tuesday, August 21, 2012 4:49:30 am Konstantin Belousov wrote:
>> On Mon, Aug 20, 2012 at 08:32:41PM -0600, Dan McGregor wrote:
>>> Hi.
>>>
>>> I've been working on porting compiler-rt/clang's support for address
>>> sanitization (asan) to FreeBSD.  So far I have it building and it
>>> appears to work properly, however the build system expects to be able
>>> to build 32 bit binaries on amd64.
>>>
>>> amd64 doesn't include i386's machine/foo headers.  The included patch
>>> is my proposed solution:
>>>
>>> Add i386 headers to /usr/include/i386, and in machine/foo.h, check if
>>> it's a 32 bit build and include the appropriate header from i386.
>>>
>>> For example machine/ucontext.h will include i386/ucontext.h if
>>> compiled with -m32.
>>>
>>> Thoughts?
>>>
>>> If anyone's curious about the compiler_rt port, I have it at
>>> github.com/dannomac/compiler-rt on the branch named freebsd.
>> There was a work by Tijl Coosemans in the similar, but somewhat less hacky
>> direction. The headers are moved into sys/x86/include and unified as much
>> as possible, while machine/ counterpart includes corresponding header
>> from x86/include.
>>
>> I even lost track of how much more headers is left to convert. In fact,
>> not all headers are equal, some are only useful for kernel or base system.
>> Also, parts of the critically important headers do not live in machine/
>> at all, e.g. the headers from libm.
>>
>> The work seems to be stale, do you want to cooperate with Tijl or continue ?
> I think we should probably follow Tijl's model since we are on that path.
> I originally preferred the /usr/include/i386 approach, but have come around
> to Tjil's approach instead.
>

I just wanted to add that the unified 32/64 header route is where we 
went on PowerPC (and MIPS?) and it works very well for -m32.
-Nathan


More information about the freebsd-hackers mailing list