Building an ARM/RPI-B release (hacked) on CURRENT/AMD64.

Ian Lepore ian at FreeBSD.org
Thu Apr 17 12:49:26 UTC 2014


On Thu, 2014-04-17 at 12:31 +0200, Bernd Walter wrote:
> On Wed, Apr 16, 2014 at 06:25:39PM -0700, Tim Kientzle wrote:
> > 
> > On Apr 15, 2014, at 12:23 PM, Mark R V Murray <mark at grondar.org> wrote:
> > 
> > > Hi Tim
> > > 
> > > I?ve been doing some local hacks to cross-build ARM/RPI releases on CURRENT/AMD64.
> > > 
> > > What I?m doing aren?t clean releases in that I want to use the state of /usr/src and /usr/ports ?as-is? and not a clean check out. This allows me to experimentally break stuff without having to check it in first. It also give me a way to build bootable images for when (not ?if?!) I mess things up properly on the RPI. It has the advantage also of being quicker than the usual release build.
> > > 
> > > (The hacks, as they stand now, are attached. I null-mount /usr/src and /usr/ports instead of checking them out, and I have local checkouts of crochet and u-boot to copy as checking them out during a release build fails too often.)
> > > 
> > > The problem is that sometime in the last month or so, things stopped working, and its taken me until now to have the time to have a look at it.
> > > 
> > > The problem is that during the u-boot build, a CLANG-based xdev build is used, and this has no *-gcc, only a *-cc. If I fix that with a symlink, clang then objects to the -ffixed-r8 option. Clang has an equivalent -ffixed-r9, but the u-boot that is  mandated for FreeBSD/Arm/RPI use doesn?t have the R9 fix.
> > > 
> > > Questions:
> > > 
> > > 1) Are you aware of any of this?
> > 
> > Yes.
> > 
> > > 
> > > 2) Do you have a quick fix idea (preferably not involving GCC)?
> > 
> > No.  <sigh>
> > 
> > Right now, the ?get it working? answer is to install GCC XDEV tools.
> > 
> > Though I tried that on a clean system last weekend and it
> > still failed to build.  Haven?t tracked down why.
> > 
> > > 
> > > I?m rather short of time right now, but may be able to get to this over Easter.
> > 
> > Long-term, we?d all like to see U-Boot build with clang.
> > 
> > No idea yet whether that?s hard or not.  No idea if
> > I?ll have time to work on it in the near future.
> 
> What are the symptoms with clang U-Boot?
> 

U-boot requires that a global register be set aside by the compiler and
it's used to access all global vars.  As I vaguely understand it, u-boot
used to want r8 for this, and clang didn't used to support the concept
at all.  Now clang supports it, but only for r9, and apparently more
recent u-boot expects r9 rather than r8.  So the fix is probably to use
more recent u-boot sources (I've been using 2014.01 for imx6 stuff), and
probably to add the new -ffixed-r9 flag for a clang build.

-- Ian




More information about the freebsd-arm mailing list