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