[GHC] #9549: deriveConstants fails on OpenBSD

GHC ghc-devs at haskell.org
Sun Sep 21 19:18:53 UTC 2014


#9549: deriveConstants fails on OpenBSD
-------------------------------------+-------------------------------------
              Reporter:  roland      |            Owner:
                  Type:  bug         |           Status:  new
              Priority:  normal      |        Milestone:
             Component:  Build       |          Version:  7.9
  System                             |         Keywords:
            Resolution:              |     Architecture:  Unknown/Multiple
      Operating System:  OpenBSD     |       Difficulty:  Unknown
       Type of failure:  Building    |       Blocked By:
  GHC failed                         |  Related Tickets:
             Test Case:              |
              Blocking:              |
Differential Revisions:              |
-------------------------------------+-------------------------------------

Comment (by roland):

 Removing the -P option (and adapting the pattern matching) in
 DeriveConstants.hs yields the following error:
 {{{
 "inplace/bin/ghc-stage1" -static  -H32m -O -Iincludes -Iincludes/dist
 -Iincludes/dist-derivedconstants/header -Iincludes/dist-
 ghcconstants/header -Irts -Irts/dist/build -DCOMPILING_RTS -this-package-
 key rts -dcmm-lint      -i -irts -irts/dist/build -irts/dist/build/autogen
 -Irts/dist/build -Irts/dist/build/autogen           -O2    -c
 rts/HeapStackCheck.cmm -o rts/dist/build/HeapStackCheck.o

 rts/HeapStackCheck.cmm:97:18: parse error on input `['
 }}}

 Apparently this is due to a wrong value being derived for REP_bdescr_link:
 {{{
 $ grep '#define REP_bdescr_link' ./includes/dist-
 derivedconstants/header/DerivedConstants.h
 #define REP_bdescr_link b0
 }}}

 ...which in turn comes from nm's output:
 {{{
 $ nm ./includes/dist-derivedconstants/header/tmp.o | grep REP_bdescr_link
 00000001 C derivedConstantREP_bdescr_link
 }}}

 On the other hand, objdump outputs 9 instead of 1:
 {{{
 $ objdump -t ./includes/dist-derivedconstants/header/tmp.o | grep
 REP_bdescr_link
 0000000000000009       O *COM*  0000000000000001
 derivedConstantREP_bdescr_link
 }}}

 With this value (9), REP_bdescr_link is derived as 'b64' instead of 'b0'
 and thus HeapStackCheck.cmm compiles. No matter what options are passed to
 OpenBSD's nm, it won't output '9' for derivedconstantREP_bdescr_link.

 Does this have to be handled differently on different systems or is there
 another way?

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


More information about the ghc-tickets mailing list