bindist configure checks involving the compiler are broken
Commit 6554dc60 added this code to distrib/configure.ac.in:
BinDistNeedsLibdw=@HaveLibdw@
if test "x$BinDistNeedsLibdw" = "xyes" ; then
AC_CHECK_LIB(dw, dwfl_attach_state, [HaveLibdw=YES],
[AC_MSG_ERROR([Binary distribution was built with libdw support but target system doesn't have supported libdw version (needs at least 0.158)])]
)];
fi
It occurs before any other autoconf command involving the compiler. So apparently the expansion of AC_CHECK_LIB includes the code responsible for checking how to invoke the compiler, checking the object file suffix, etc. (Yes, this is a crazy way to do it.) Since the official bindist has BinDistNeedsLibdw=NO, none of that code ever actually runs.
Later (in FPTOOLS_SET_HASKELL_PLATFORM_VARS) the configure script uses AC_COMPILE_IFELSE to check for features of the compiler like non-executable stack support, but these checks are broken because autoconf never actually determined basic information about the compiler. So the 8.0.1 bindist produces binaries with executable stacks, which is a problem on some systems.
It would be better anyways to move this AC_CHECK_LIB later in distrib/configure.ac.in, to after where we select flags to be used when invoking the compiler. There are also some other bugs in this code: there is an extra ]; and the correct value of BinDistNeedsLibdw is YES (not yes) so the code currently can never run anyways.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.0.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | high |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |