GHC 8.10.2 build error: missing .cfi_startproc

=?utf-8?Q?Bj=C3=B6rn_Gohla?= b.gohla at gmx.de
Tue Sep 22 23:28:18 UTC 2020


Hello,

I'm trying to build ghc-8.10.2 on OpenBSD 6.7, the build finally fails
with an error message from the assembler:


     ===--- building phase 0
     gmake --no-print-directory -f ghc.mk phase=0 phase_0_builds
     gmake[1]: Nothing to be done for 'phase_0_builds'.
     ===--- building phase 1
     gmake --no-print-directory -f ghc.mk phase=1 phase_1_builds
     gmake[1]: Nothing to be done for 'phase_1_builds'.
     ===--- building final phase
     gmake --no-print-directory -f ghc.mk phase=final all
     "inplace/bin/ghc-stage1" -optc-Wall -optc-Wall -optc-Wextra -optc-Wstrict-prototypes -optc-Wmissing-prototypes -optc-Wmissing-declarations -optc-Winline -optc-Wpointer-arith -optc-Wmissing-noreturn -optc-Wnested-externs -optc-Wredundant-decls -optc-Wno-aggregate-return -optc-Iincludes -optc-Iincludes/dist -optc-Iincludes/dist-derivedconstants/header -optc-Iincludes/dist-ghcconstants/header -optc-Iincludes/dist-install/build -optc-Irts -optc-Irts/dist/build -optc-DCOMPILING_RTS -optc-DFS_NAMESPACE=rts -optc-fno-strict-aliasing -optc-fno-common -optc-Irts/dist/build/./autogen -optc-Werror=unused-but-set-variable -optc-Wno-error=inline -optc-O2 -optc-fomit-frame-pointer -optc-g -optc-DRtsWay=\"rts_v\" -optc-w -static  -O0 -H64m -Wall  -Iincludes -Iincludes/dist -Iincludes/dist-derivedconstants/header -Iincludes/dist-ghcconstants/header -Iincludes/dist-install/build -Irts -Irts/dist/build -DCOMPILING_RTS -DFS_NAMESPACE=rts -this-unit-id rts -dcmm-lint      -i -irts -irts/dist/build -Irts/dist/build -irts/dist/build/./autogen -Irts/dist/build/./autogen            -O2 -Wcpp-undef   -Wnoncanonical-monad-instances  -c rts/StgCRun.c -o rts/dist/build/StgCRun.o
     rts/StgCRun.c: Assembler messages:

     rts/StgCRun.c:382:0: error:
          Error: CFI instruction used without previous .cfi_startproc
         |
     382 |         "movq %%rbx,0(%%rax)\n\t"
         | ^

     rts/StgCRun.c:383:0: error:
          Error: CFI instruction used without previous .cfi_startproc
         |
     383 |         "movq %%rbp,8(%%rax)\n\t"
         | ^

     rts/StgCRun.c:384:0: error:
          Error: CFI instruction used without previous .cfi_startproc
         |
     384 |         "movq %%r12,16(%%rax)\n\t"
         | ^

     rts/StgCRun.c:385:0: error:
          Error: CFI instruction used without previous .cfi_startproc
         |
     385 |         "movq %%r13,24(%%rax)\n\t"
         | ^

     rts/StgCRun.c:386:0: error:
          Error: CFI instruction used without previous .cfi_startproc
         |
     386 |         "movq %%r14,32(%%rax)\n\t"
         | ^

     rts/StgCRun.c:387:0: error:
          Error: CFI instruction used without previous .cfi_startproc
         |
     387 |         "movq %%r15,40(%%rax)\n\t"
         | ^

     rts/StgCRun.c:388:0: error:
          Error: CFI instruction used without previous .cfi_startproc
         |
     388 | #if defined(mingw32_HOST_OS)
         | ^

     rts/StgCRun.c:389:0: error:
          Error: CFI instruction used without previous .cfi_startproc
         |
     389 |         /*
         | ^

     rts/StgCRun.c:390:0: error:
          Error: CFI instruction used without previous .cfi_startproc
         |
     390 |          * Additional callee saved registers on Win64. This must match
         | ^
     `egcc' failed in phase `Assembler'. (Exit code: 1)
     gmake[1]: *** [rts/ghc.mk:322: rts/dist/build/StgCRun.o] Error 1
     gmake: *** [Makefile:128: all] Error 2

Looking in the source file rts/StgCRun.c and reading the GNU assembler
manual concerning CFI directives, it seems to me that in the function
StgRunIsImplementedInAssembler starting on line 368 the assembler block
should perhaps have started with .cfi_startproc and ended with
.cfi_endproc .

Although I suspect it's perhaps a question of telling GCC not to expect
those directives.

I'm using gcc-8.3.0 and ghc-8.6.4 to compile.

I would be grateful for any insight anyone might have to offer.

--
Kindly,
Björn Gohla


More information about the ghc-devs mailing list