From imp@bsdimp.com Sat Jan  9 16:17:33 2016
Date: Sat, 9 Jan 2016 16:17:26 -0500
From: Warner Losh <imp@bsdimp.com>
To: monthly@freebsd.org
Subject: hardware ABI transition report

<!-- Mail as an attachment to: monthly@freebsd.org -->
<project cat='arch'>
  <title>armv6 hard float default ABI</title>

  <contact>
    <person>
      <name>
        <given>Warner</given>
        <common>Losh</common>
      </name>
      <email>imp@freebsd.org</email>
    </person>
  </contact>

  <links>
    <url href="http://bsdimp.blogspot.com/2015/12/hard-float-api-coming-soon-by-default.html">Blog
entry about this</url>
  </links>

  <body>
    <p>
      <p>Work on moving armv6 from a soft float ABI (using hardware
floating point) to a fully hardware float API moves forward. The
ability to have both soft and hard ABI libraries on the same system is
working. All armv6 and armv7 systems we support have hardware floating
point. We currently use the hardware float, but with a slightly
un-optimal ABI for compatibility with older versions of FreeBSD. The
ABI differences are only at the user level: The kernel doesn't care
what floating point ABI is used, and both types of binaries can run at
the same time.</p>

      <p>The run time linker now knows if a binary uses the hardware
float ABI or the software float ABI by looking at some fields in the
ELF header. The linker uses different paths and config files for hard
vs soft binaries. The rc system has been enhanced to load the software
float paths. ldconfig now understands soft libraries in much the same
way it understands 32-bit libraries on 64-bit systems. No additional
kernel support was necessary for this, apart from a minor patch to
pass the elf header information to the binary which has been in the
tree since last summer.</p>

<p>The experimental armv6hf <tt>MACHINE_ARCH</tt> will be retired
after a transition period. It will cease to mean anything different
than armv6 after the build system changes go in. Support for building
soft-float ABI libraries will remain in the tree to support the
<tt>WITH_LIBSOFT</tt> option.</p>


      <p>Complete documentation needs to be written. Hooks into the
FreeBSD build system to generate soft float and to transition to hard
float after a flag day need to be polished up and committed. And of
course a number of different upgrade / coexistence scenarios need to
be tested. A full package run needs to be done to assess the latest
state of the ports tree. Work should be completed by the end of
January.</p>
    </p>
  </body>

  <help></help>
</project>
