Skip to content

Compiling problem on FreeBSD 11 ("failed in phase")

The scenario showed as below:

# This is a FreeBSD Jail for testing

$ freebsd-version
11.1-RELEASE

$ pkg info # (related packages only)
binutils-2.28,1                GNU binary tools
gcc-ecj-4.5                    Eclipse Java Compiler used to build GCC Java
gcc5-5.4.0_2                   GNU Compiler Collection 5
gmake-4.2.1_1                  GNU version of 'make' utility
gmp-6.1.2                      Free library for arbitrary precision arithmetic
libiconv-1.14_10               Character set conversion library
libunistring-0.9.7             Unicode string library
mpc-1.0.3                      Library of complex numbers with arbitrarily high precision
mpfr-3.1.5_1                   Library for multiple-precision floating-point computations
perl5-5.24.1_1                 Practical Extraction and Report Language

$ ls -l /usr/local/lib/lib{iconv,charset,gmp}.*
-rw-r--r--  1 root  wheel     6864 Jul 13 09:10 /usr/local/lib/libcharset.a
lrwxr-xr-x  1 root  wheel       19 Jul 13 09:10 /usr/local/lib/libcharset.so -> libcharset.so.1.0.0
lrwxr-xr-x  1 root  wheel       19 Jul 13 09:10 /usr/local/lib/libcharset.so.1 -> libcharset.so.1.0.0
-rw-r--r--  1 root  wheel    10733 Jul 13 09:10 /usr/local/lib/libcharset.so.1.0.0
-rw-r--r--  1 root  wheel  1252196 Jul 13 09:23 /usr/local/lib/libgmp.a
lrwxr-xr-x  1 root  wheel       16 Jul 13 09:23 /usr/local/lib/libgmp.so -> libgmp.so.10.3.2
lrwxr-xr-x  1 root  wheel       16 Jul 13 09:23 /usr/local/lib/libgmp.so.10 -> libgmp.so.10.3.2
-rwxr-xr-x  1 root  wheel   531728 Jul 13 09:23 /usr/local/lib/libgmp.so.10.3.2
-rw-r--r--  1 root  wheel  1110392 Jul 13 09:10 /usr/local/lib/libiconv.a
lrwxr-xr-x  1 root  wheel       17 Jul 13 09:10 /usr/local/lib/libiconv.so -> libiconv.so.2.5.1
lrwxr-xr-x  1 root  wheel       17 Jul 13 09:10 /usr/local/lib/libiconv.so.2 -> libiconv.so.2.5.1
-rw-r--r--  1 root  wheel  1076449 Jul 13 09:10 /usr/local/lib/libiconv.so.2.5.1

# installed using
# env CC=/usr/local/bin/gcc5 LDFLAGS='-Wl,-rpath=/usr/local/lib/gcc5' ./configure --prefix=/home/ghc

$ /home/ghc/bin/ghc --numeric-version
8.2.1

$ cat /home/ghc/lib/ghc-8.2.1/settings
[("GCC extra via C opts", " -fwrapv -fno-builtin"),
 ("C compiler command", "/usr/local/bin/gcc5"),
 ("C compiler flags", " -fno-stack-protector"),
 ("C compiler link flags", " -fuse-ld=gold"),
 ("C compiler supports -no-pie", "NO"),
 ("Haskell CPP command","/usr/local/bin/gcc5"),
 ("Haskell CPP flags","-E -undef -traditional"),
 ("ld command", "ld.gold"),
 ("ld flags", ""),
 ("ld supports compact unwind", "YES"),
 ("ld supports build-id", "YES"),
 ("ld supports filelist", "NO"),
 ("ld is GNU ld", "YES"),
 ("ar command", "/usr/local/bin/ar"),
 ("ar flags", "q"),
 ("ar supports at file", "YES"),
 ("touch command", "touch"),
 ("dllwrap command", "/bin/false"),
 ("windres command", "/bin/false"),
 ("libtool command", "libtool"),
 ("perl command", "/usr/local/bin/perl"),
 ("cross compiling", "NO"),
 ("target os", "OSFreeBSD"),
 ("target arch", "ArchX86_64"),
 ("target word size", "8"),
 ("target has GNU nonexec stack", "True"),
 ("target has .ident directive", "True"),
 ("target has subsections via symbols", "False"),
 ("target has RTS linker", "@HaskellHaveRTSLinker@"),
 ("Unregisterised", "NO"),
 ("LLVM llc command", "llc"),
 ("LLVM opt command", "opt")
 ]

$ /home/ghc/bin/ghci
GHCi, version 8.2.1: http://www.haskell.org/ghc/  :? for help
Prelude> (!!6) $ scanl (*) 1 [1..]
720

$ cat Main.hs
module Main (main) where

main :: IO ()
main = putStrLn "hello world"

$ /home/ghc/bin/ghc -O0  --make Main.hs
[1 of 1] Compiling Main             ( Main.hs, Main.o )
Linking Main ...

In file included from /home/ghc/lib/ghc-8.2.1/include/rts/Threads.h:19:0: error:
    0,
                     from /home/ghc/lib/ghc-8.2.1/include/Rts.h:173,
                     from /tmp/ghc28144_0/ghc_4.c:1:

/usr/local/lib/gcc5/gcc/x86_64-portbld-freebsd11.0/5.4.0/include-fixed/sys/types.h:266:9: error:
     error: unknown type name '__vm_ooffset_t'
     typedef __vm_ooffset_t vm_ooffset_t;
             ^
    |
266 | typedef __vm_ooffset_t  vm_ooffset_t;
    |         ^

/usr/local/lib/gcc5/gcc/x86_64-portbld-freebsd11.0/5.4.0/include-fixed/sys/types.h:268:9: error:
     error: unknown type name '__vm_pindex_t'
     typedef __vm_pindex_t vm_pindex_t;
             ^
    |
268 | typedef __vm_pindex_t   vm_pindex_t;
    |         ^
`gcc5' failed in phase `C Compiler'. (Exit code: 1)

On my FreeBSD 10.3 box:

$ freebsd-version
10.3-STABLE

$ pkg info
binutils-2.28,1                GNU binary tools
gcc-5.4.0_2                    Meta-port for the default version of the GNU Compiler Collection
gcc-ecj-4.5                    Eclipse Java Compiler used to build GCC Java
gcc5-5.4.0_3                   GNU Compiler Collection 5
gmake-4.2.1_1                  GNU version of 'make' utility
gmp-6.1.2                      Free library for arbitrary precision arithmetic
libffi-3.2.1                   Foreign Function Interface
libiconv-1.14_10               Character set conversion library
perl5-5.24.1_1                 Practical Extraction and Report Language

$ cat ./ghc-8.2.1-bin/lib/ghc-8.2.1/settings
[("GCC extra via C opts", " -fwrapv -fno-builtin"),
 ("C compiler command", "gcc"),
 ("C compiler flags", " -fno-stack-protector"),
 ("C compiler link flags", " -fuse-ld=gold"),
 ("C compiler supports -no-pie", "NO"),
 ("Haskell CPP command","gcc"),
 ("Haskell CPP flags","-E -undef -traditional"),
 ("ld command", "ld.gold"),
 ("ld flags", ""),
 ("ld supports compact unwind", "YES"),
 ("ld supports build-id", "YES"),
 ("ld supports filelist", "NO"),
 ("ld is GNU ld", "YES"),
 ("ar command", "/usr/bin/ar"),
 ("ar flags", "clqs"),
 ("ar supports at file", "NO"),
 ("touch command", "touch"),
 ("dllwrap command", "/bin/false"),
 ("windres command", "/bin/false"),
 ("libtool command", "libtool"),
 ("perl command", "/usr/local/bin/perl"),
 ("cross compiling", "NO"),
 ("target os", "OSFreeBSD"),
 ("target arch", "ArchX86_64"),
 ("target word size", "8"),
 ("target has GNU nonexec stack", "True"),
 ("target has .ident directive", "True"),
 ("target has subsections via symbols", "False"),
 ("target has RTS linker", "@HaskellHaveRTSLinker@"),
 ("Unregisterised", "NO"),
 ("LLVM llc command", "llc"),
 ("LLVM opt command", "opt")
 ]

$ ./ghc-8.2.1-bin/bin/ghc -O0 --make Main.hs
[1 of 1] Compiling Main             ( Main.hs, Main.o )
Linking Main ...
$ ./Main
hello, world!

I also noticed that using FreeBSD's strip (from elftoolchain), the

Installing library in /home/ghc/lib/ghc-8.2.1/ghc-prim-0.5.1.0
"utils/ghc-cabal/dist-install/build/tmp/ghc-cabal-bindist" copy libraries/integer-gmp dist-install "strip" '' '/home/ghc' '/home/ghc/lib/ghc-8.2.1' '/home/ghc/share/doc/ghc-
8.2.1/html/libraries' 'v p dyn'

phase will be a bit longer than GNU's strip. (Tested by put my $LOCALBASE/bin ahead in $PATH).

Trac metadata
Trac field Value
Version 8.2.1
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information