Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Aug 2010 22:09:51 +0200
From:      Tijl Coosemans <tijl@coosemans.org>
To:        freebsd-arch@freebsd.org
Subject:   Re: Support for cc -m32
Message-ID:  <201008302210.07110.tijl@coosemans.org>
In-Reply-To: <20100830.123636.59640143160044949.imp@bsdimp.com>
References:  <201007291718.12687.tijl@coosemans.org> <201008301731.19074.tijl@coosemans.org> <20100830.123636.59640143160044949.imp@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--nextPart1636257.Aag2RgyL72
Content-Type: Text/Plain;
  charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

On Monday 30 August 2010 20:36:36 M. Warner Losh wrote:
> In message: <201008301731.19074.tijl@coosemans.org>
>             Tijl Coosemans <tijl@coosemans.org> writes:
> : On Thursday 29 July 2010 17:18:03 Tijl Coosemans wrote:
> : > I've put the initial version of some patches online to support cross
> : > compilation of 32 bit binaries on amd64. It's modelled after how NetB=
SD
> : > does this.
> : >=20
> : > With these patches something like "cc -m32 -o test test.c -pthread -l=
m"
> : > generates a program that runs on FreeBSD/i386.
> : >=20
> : > http://people.freebsd.org/~tijl/cc-m32-1.diff
> : > http://people.freebsd.org/~tijl/cc-m32-2.diff
> : > http://people.freebsd.org/~tijl/cc-m32-3.diff
> : >=20
> : > *cc-m32-1.diff* : Let ld and cc find 32 bit libraries.
> : >=20
> : > *cc-m32-2.diff* : Install i386 headers on amd64.
> : >=20
> : > With this patch headers for a particular $arch are always installed
> : > under /usr/include/$arch and /usr/include/machine becomes a symlink.
> : >=20
> : > A question I have here is how best to clean up the old machine
> : > directory. The patch currently uses 'rm -rf'.
> : >=20
> : > Another problem I encountered was that during the build of
> : > usr.bin/kdump all headers are searched for definitions of ioctl
> : > requests and a C source code file is generated that includes all those
> : > headers. This fails when both i386 and amd64 headers are installed
> : > because they can't both be included at the same time. For now the pat=
ch
> : > simply blacklists /usr/include/i386, but actually all $arch should be
> : > excluded. The ioctl requests can still be found through the machine
> : > symlink. If someone has a better idea...
> : >=20
> : > *cc-m32-3.diff* : Modify amd64 headers to include i386 headers when
> : >                   __i386__ is defined.
> : >=20
> : > This patch modifies the amd64 headers to follow this format:
> : >=20
> : >   #ifndef _AMD64_HEADER_H
> : >   #define _AMD64_HEADER_H
> : >=20
> : >   #ifdef __i386__
> : >   #include <i386/header.h>
> : >   #else
> : >=20
> : >   ...
> : >=20
> : >   #endif /* __i386__ */
> : >   #endif /* !_AMD64_HEADER_H */
> : >=20
> : > This way including <machine/header.h> works for -m32. There are a few
> : > i386 headers which don't exist for amd64:
> : >=20
> : > apm_segments.h
> : > bootinfo.h
> : > cserial.h
> : > elan_mmcr.h
> : > if_wl_wavelan.h
> : > ioctl_bt848.h
> : > ioctl_meteor.h
> : > npx.h
> : > pcaudioio.h
> : > pcb_ext.h
> : > perfmon.h
> : > privatespace.h
> : > smapi.h
> : > speaker.h
> : > vm86.h
> : > xbox.h
> : >=20
> : > Theoretically a dummy amd64 header should be created for each of them
> : > that just includes the i386 header. The patch does this for npx.h. The
> : > other headers seem to be really i386 specific or even outdated. If it
> : > were ever necessary to cross-compile code that uses them, it would be
> : > easy to modify that code to directly include <i386/header.h>.
> : >=20
> : >=20
> : > Feel free to test the patches and to comment on any part of them.
> :=20
> : I'd like to move forward with this now. I've rebased the patches above
> : against today's CURRENT. If there are no further objections I'd like to
> : commit them a few days from now, let's say Saturday.
>=20
> I have been trying to get the tbemd patches into the tree and these
> patches conflict with them.  Can we hold off until I get them in?
> I've had to rebase things myself a dozen times and each time I've only
> been able to get part of the patches in...
>=20
> I still have the objections from before, but I'll take a look at the
> new patches to see if they are addressed or not.

Ok, no problem.

--nextPart1636257.Aag2RgyL72
Content-Type: application/pgp-signature; name=signature.asc 
Content-Description: This is a digitally signed message part.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.16 (FreeBSD)

iF4EABEIAAYFAkx8EB4ACgkQfoCS2CCgtivCWwD/eVQcRyrAsE5Qf5naFC6KY6RR
OgzH47yaD3E2Ckxf7PYA/3Y1Gntni1jztMBoOufC3v5G4td9W7MC1YH3a1QOT01w
=/wnL
-----END PGP SIGNATURE-----

--nextPart1636257.Aag2RgyL72--



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