[GHC] #12555: bindist configure checks involving the compiler are broken

GHC ghc-devs at haskell.org
Tue Aug 30 21:17:49 UTC 2016


#12555: bindist configure checks involving the compiler are broken
-------------------------------------+-------------------------------------
           Reporter:  rwbarton       |             Owner:
               Type:  bug            |            Status:  new
           Priority:  high           |         Milestone:
          Component:  Compiler       |           Version:  8.0.1
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 Commit 6554dc60304bbd4b2edb93be7e1658bff237e067 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.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12555>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list