This is a heads up for anyone who builds ON on x86.
The fix for

     6931044 ld should not allow SHT_PROGBITS .eh_frame sections on amd64

enforces the ABI requirement that unwind sections in amd64 objects
have the proper SHT_AMD64_UNWIND type instead of being tagged
as SHT_PROGBITS. Prior to this, the link-editor would quietly generate
incorrect objects in this case.

This is a rare situation, as the compilers (Sun and gcc) have
always used SHT_AMD64_UNWIND for this. However, we have encountered
it in hand written assembly code. The Solaris gate contains one such
object, a prebuilt binary object that is used to produce the Atheros
(ath) driver for x86 platforms.

The putback for 6931044 includes a fix for the ath driver
that allows it to be properly built. However, if you attempt
to build an old workspace on a build system with the new version
of ld, your build will fail with the error:

     ld: fatal: file obj64/hal.o: section [8].eh_frame: section type
        is SHT_PROGBITS: expected SHT_AMD64_UNWIND
     *** Error code 1
     make: Fatal error: Command failed for target `obj64/ath'

There are several ways to solve this. Listed from best to worst:

     - Bring your workspace up to date ('hg pull -u', or the equivalent)

     - Copy usr/src/uts/intel/ath/Makefile from the gate into your workspace

     - Revert to an older version of ld on your build server

- Ali

Reply via email to