
I just updated a few-days-old repo and `make` no longer works: $ make ===--- building phase 0 make --no-print-directory -f ghc.mk phase=0 phase_0_builds make[1]: Nothing to be done for 'phase_0_builds'. ===--- building phase 1 make --no-print-directory -f ghc.mk phase=1 phase_1_builds libraries/ghc-heap/ghc.mk:3: libraries/ghc-heap/dist-boot/build/.depend-v.haskell: No such file or directory libraries/ghci/ghc.mk:3: libraries/ghci/dist-boot/build/.depend-v.haskell: No such file or directory compiler/ghc.mk:437: compiler/stage1/build/.depend-v.haskell: No such file or directory "/home/omer/ghc_bins/ghc-8.6.4-bin/bin/ghc" -o utils/hsc2hs/dist/build/tmp/hsc2hs -hisuf hi -osuf o -hcsuf hc -static -H32m -O -Wall -package-db libraries/bootstrapping.conf -hide-all-packages -i -iutils/hsc2hs/. -iutils/hsc2hs/dist/build -Iutils/hsc2hs/dist/build -iutils/hsc2hs/dist/build/hsc2hs/autogen -Iutils/hsc2hs/dist/build/hsc2hs/autogen -optP-include -optPutils/hsc2hs/dist/build/hsc2hs/autogen/cabal_macros.h -package-id base-4.12.0.0 -package-id containers-0.6.0.1 -package-id directory-1.3.3.0 -package-id filepath-1.4.2.1 -package-id process-1.6.5.0 -Wall -XHaskell2010 -no-user-package-db -rtsopts -outputdir utils/hsc2hs/dist/build -static -H32m -O -Wall -package-db libraries/bootstrapping.conf -hide-all-packages -i -iutils/hsc2hs/. -iutils/hsc2hs/dist/build -Iutils/hsc2hs/dist/build -iutils/hsc2hs/dist/build/hsc2hs/autogen -Iutils/hsc2hs/dist/build/hsc2hs/autogen -optP-include -optPutils/hsc2hs/dist/build/hsc2hs/autogen/cabal_macros.h -package-id base-4.12.0.0 -package-id containers-0.6.0.1 -package-id directory-1.3.3.0 -package-id filepath-1.4.2.1 -package-id process-1.6.5.0 -Wall -XHaskell2010 -no-user-package-db -rtsopts utils/hsc2hs/dist/build/Main.o utils/hsc2hs/dist/build/C.o utils/hsc2hs/dist/build/Common.o utils/hsc2hs/dist/build/CrossCodegen.o utils/hsc2hs/dist/build/DirectCodegen.o utils/hsc2hs/dist/build/Flags.o utils/hsc2hs/dist/build/HSCParser.o utils/hsc2hs/dist/build/ATTParser.o utils/hsc2hs/dist/build/UtilsCodegen.o utils/hsc2hs/dist/build/Compat/ResponseFile.o utils/hsc2hs/dist/build/Paths_hsc2hs.o /usr/bin/ld.gold: internal error in find_view, at ../../gold/fileread.cc:336 collect2: error: ld returned 1 exit status `gcc' failed in phase `Linker'. (Exit code: 1) utils/hsc2hs/ghc.mk:21: recipe for target 'utils/hsc2hs/dist/build/tmp/hsc2hs' failed make[1]: *** [utils/hsc2hs/dist/build/tmp/hsc2hs] Error 1 Makefile:123: recipe for target 'all' failed make: *** [all] Error 2 I tried a custom build.mk and with no build.mk, got the same error either way. I also tried to build with hadrian and it worked. Is anyone here able to build with the old build system? If this is about my system, any ideas what might be the problem? Ömer

Hi, At least I was able to build with old build system in my Ubuntu on Friday. How about trying the following? : $ make maintainer-clean $ ./boot $ ./configure $ make Regards, Takenobu

I was able to build with the system linker instead of gold.ld (configure with
--disable-ld-override). I guess I triggered a gold.ld bug.
Ömer
Takenobu Tani
Hi,
At least I was able to build with old build system in my Ubuntu on Friday.
How about trying the following? :
$ make maintainer-clean $ ./boot $ ./configure $ make
Regards, Takenobu

On March 31, 2019 12:20:22 PM EDT, "Ömer Sinan Ağacan"
I was able to build with the system linker instead of gold.ld (configure with --disable-ld-override). I guess I triggered a gold.ld bug.
Ömer
Takenobu Tani
, 31 Mar 2019 Paz, 16:19 tarihinde şunu yazdı: Hi,
At least I was able to build with old build system in my Ubuntu on
Friday.
How about trying the following? :
$ make maintainer-clean $ ./boot $ ./configure $ make
Regards, Takenobu
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
Which binutils version are you using?

Can you reproduce this reliably? Googling the error message "internal error in find_view" yields: https://www.mail-archive.com/bug-binutils@gnu.org/msg28716.html where somebody encountered it, but only in proprietary code. It would probably be very useful if we could provide a repro of it in an open-source code base like GHC. By the way, the attachment there is called "Corrupt elf file which causes linker to crash", so perhaps you also have a corrupt ELF file somewhere? Niklas

Yeah I can reproduce it reliably. I tried a few `git clean -xfd`s, and tried with no build.mk and with a debug build.mk, it happened with all configurations, when building the same file (the hsc2hs executable). The repro is simple: clone the GHC repo, build at 6f7115dfd4. If this doesn't reproduce the bug then I don't know what else to try.
so perhaps you also have a corrupt ELF file somewhere
How do I check this? Maybe gold.ld produces a corrupt ELF file during the build,
and then tries to read it to link an executable.
Ömer
Niklas Hambüchen
Can you reproduce this reliably?
Googling the error message "internal error in find_view" yields:
https://www.mail-archive.com/bug-binutils@gnu.org/msg28716.html
where somebody encountered it, but only in proprietary code. It would probably be very useful if we could provide a repro of it in an open-source code base like GHC.
By the way, the attachment there is called "Corrupt elf file which causes linker to crash", so perhaps you also have a corrupt ELF file somewhere?
Niklas

That sounds good. A few more questions: What's the exact version of your OS, and of gold? After getting to the error, can you run the failing ghc invocation directly, and see if the error remains? The one starting with "/home/omer/ghc_bins/ghc-8.6.4-bin/bin/ghc" -o utils/hsc2hs/dist/build/tmp/hsc2hs ... If yes, can you add a `-v` to it, so we can see the invocations to the programs it calls? Then, it should show a gcc invocation (which eventually calls gold). Can you then manually run and add a `-v` to to the gcc invocation as well, so we can see the linker command it runs (see also https://stackoverflow.com/questions/1170809/how-to-get-gcc-linker-command)? You may have to run ghc with `-keep-tmp-files` if it invokes the gcc on temporary files. Finally, can you run the printed ld.gold invocation manually, and add a `-v` to that, so we get more detail about what gold is doing? If you are on Linux (and also in some other cases), you can also run ghc under `strace -fy -e execve` to see all programs started recursively by any subprogram; this may also easily provide the linker invocation. Thank you! On 01/04/2019 7:35 AM, Ömer Sinan Ağacan wrote:
Yeah I can reproduce it reliably. I tried a few `git clean -xfd`s, and tried with no build.mk and with a debug build.mk, it happened with all configurations, when building the same file (the hsc2hs executable).
The repro is simple: clone the GHC repo, build at 6f7115dfd4. If this doesn't reproduce the bug then I don't know what else to try.
so perhaps you also have a corrupt ELF file somewhere
How do I check this? Maybe gold.ld produces a corrupt ELF file during the build, and then tries to read it to link an executable.

At least on my Ubuntu 16.04, it builds: % git clone --recursive git@gitlab.haskell.org:ghc/ghc.git ghc-gold-error-6f7115dfd4 % cd ghc-gold-error-6f7115dfd4 % ./boot && ./configure --prefix=$HOME/opt/ghc-gold-error-6f7115dfd4 GHC=$HOME/.stack/programs/x86_64-linux/ghc-8.6.3/bin/ghc % make -j4 # Ctrl-C after a while when it's building stage-1 code % rm -f utils/hsc2hs/dist/build/tmp/hsc2hs % make utils/hsc2hs/dist/build/tmp/hsc2hs ===--- building phase 0 make --no-print-directory -f ghc.mk phase=0 phase_0_builds make[1]: Nothing to be done for 'phase_0_builds'. ===--- building phase 1 make --no-print-directory -f ghc.mk phase=1 phase_1_builds "/home/niklas/.stack/programs/x86_64-linux/ghc-8.6.3/bin/ghc" -o utils/hsc2hs/dist/build/tmp/hsc2hs -hisuf hi -osuf o -hcsuf hc -static -H32m -O -Wall -package-db libraries/bootstrapping.conf -hide-all-packages -i -iutils/hsc2hs/. -iutils/hsc2hs/dist/build -Iutils/hsc2hs/dist/build -iutils/hsc2hs/dist/build/hsc2hs/autogen -Iutils/hsc2hs/dist/build/hsc2hs/autogen -optP-include -optPutils/hsc2hs/dist/build/hsc2hs/autogen/cabal_macros.h -package-id base-4.12.0.0 -package-id containers-0.6.0.1 -package-id directory-1.3.3.0 -package-id filepath-1.4.2.1 -package-id process-1.6.3.0 -Wall -XHaskell2010 -no-user-package-db -rtsopts -outputdir utils/hsc2hs/dist/build -static -H32m -O -Wall -package-db libraries/bootstrapping.conf -hide-all-packages -i -iutils/hsc2hs/. -iutils/hsc2hs/dist/build -Iutils/hsc2hs/dist/build -iutils/hsc2hs/dist/build/hsc2hs/autogen -Iutils/hsc2hs/dist/build/hsc2hs/autogen -optP-include -optPutils/hsc2hs/dist/build/hsc2hs/autogen/cabal_macros.h -package-id base-4.12.0.0 -package-id containers-0.6.0.1 -package-id directory-1.3.3.0 -package-id filepath-1.4.2.1 -package-id process-1.6.3.0 -Wall -XHaskell2010 -no-user-package-db -rtsopts utils/hsc2hs/dist/build/Main.o utils/hsc2hs/dist/build/C.o utils/hsc2hs/dist/build/Common.o utils/hsc2hs/dist/build/CrossCodegen.o utils/hsc2hs/dist/build/DirectCodegen.o utils/hsc2hs/dist/build/Flags.o utils/hsc2hs/dist/build/HSCParser.o utils/hsc2hs/dist/build/ATTParser.o utils/hsc2hs/dist/build/UtilsCodegen.o utils/hsc2hs/dist/build/Compat/ResponseFile.o utils/hsc2hs/dist/build/Paths_hsc2hs.o /usr/bin/install -c -m 755 utils/hsc2hs/dist/build/tmp/hsc2hs inplace/lib/bin/hsc2hs ... make[1]: 'utils/hsc2hs/dist/build/tmp/hsc2hs' is up to date. make utils/hsc2hs/dist/build/tmp/hsc2hs 49.26s user 15.66s system 91% cpu 1:10.58 total Adding `-fforce-recomp -v -keep-tmp-files` to the above ghc invocation reveals a `gcc` invocation; running that one under `strace` shows: % strace -s 30000 -fy -e execve gcc -fno-stack-protector -DTABLES_NEXT_TO_CODE '-fuse-ld=gold' -Wl,--no-as-needed -o utils/hsc2hs/dist/build/tmp/hsc2hs -lm -no-pie -Wl,--gc-sections utils/hsc2hs/dist/build/Main.o utils/hsc2hs/dist/build/C.o utils/hsc2hs/dist/build/Common.o utils/hsc2hs/dist/build/CrossCodegen.o utils/hsc2hs/dist/build/DirectCodegen.o utils/hsc2hs/dist/build/Flags.o utils/hsc2hs/dist/build/HSCParser.o utils/hsc2hs/dist/build/ATTParser.o utils/hsc2hs/dist/build/UtilsCodegen.o utils/hsc2hs/dist/build/Compat/ResponseFile.o utils/hsc2hs/dist/build/Paths_hsc2hs.o -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/process-1.6.3.0 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/directory-1.3.3.0 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/unix-2.7.2.2 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/bytestring-0.10.8.2 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/time-1.8.0.2 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/filepath-1.4.2.1 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/containers-0.6.0.1 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/deepseq-1.4.4.0 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/array-0.5.3.0 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/base-4.12.0.0 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/integer-gmp-1.0.2.0 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/ghc-prim-0.5.3 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/rts /tmp/ghc2447_0/ghc_2.o /tmp/ghc2447_0/ghc_5.o -Wl,-u,base_GHCziTopHandler_runIO_closure -Wl,-u,base_GHCziTopHandler_runNonIO_closure -Wl,-u,ghczmprim_GHCziTuple_Z0T_closure -Wl,-u,ghczmprim_GHCziTypes_True_closure -Wl,-u,ghczmprim_GHCziTypes_False_closure -Wl,-u,base_GHCziPack_unpackCString_closure -Wl,-u,base_GHCziWeak_runFinalizzerBatch_closure -Wl,-u,base_GHCziIOziException_stackOverflow_closure -Wl,-u,base_GHCziIOziException_heapOverflow_closure -Wl,-u,base_GHCziIOziException_allocationLimitExceeded_closure -Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnMVar_closure -Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnSTM_closure -Wl,-u,base_GHCziIOziException_cannotCompactFunction_closure -Wl,-u,base_GHCziIOziException_cannotCompactPinned_closure -Wl,-u,base_GHCziIOziException_cannotCompactMutable_closure -Wl,-u,base_ControlziExceptionziBase_absentSumFieldError_closure -Wl,-u,base_ControlziExceptionziBase_nonTermination_closure -Wl,-u,base_ControlziExceptionziBase_nestedAtomically_closure -Wl,-u,base_GHCziEventziThread_blockedOnBadFD_closure -Wl,-u,base_GHCziConcziSync_runSparks_closure -Wl,-u,base_GHCziConcziIO_ensureIOManagerIsRunning_closure -Wl,-u,base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure -Wl,-u,base_GHCziConcziSignal_runHandlersPtr_closure -Wl,-u,base_GHCziTopHandler_flushStdHandles_closure -Wl,-u,base_GHCziTopHandler_runMainIO_closure -Wl,-u,ghczmprim_GHCziTypes_Czh_con_info -Wl,-u,ghczmprim_GHCziTypes_Izh_con_info -Wl,-u,ghczmprim_GHCziTypes_Fzh_con_info -Wl,-u,ghczmprim_GHCziTypes_Dzh_con_info -Wl,-u,ghczmprim_GHCziTypes_Wzh_con_info -Wl,-u,base_GHCziPtr_Ptr_con_info -Wl,-u,base_GHCziPtr_FunPtr_con_info -Wl,-u,base_GHCziInt_I8zh_con_info -Wl,-u,base_GHCziInt_I16zh_con_info -Wl,-u,base_GHCziInt_I32zh_con_info -Wl,-u,base_GHCziInt_I64zh_con_info -Wl,-u,base_GHCziWord_W8zh_con_info -Wl,-u,base_GHCziWord_W16zh_con_info -Wl,-u,base_GHCziWord_W32zh_con_info -Wl,-u,base_GHCziWord_W64zh_con_info -Wl,-u,base_GHCziStable_StablePtr_con_info -Wl,-u,hs_atomic_add8 -Wl,-u,hs_atomic_add16 -Wl,-u,hs_atomic_add32 -Wl,-u,hs_atomic_add64 -Wl,-u,hs_atomic_sub8 -Wl,-u,hs_atomic_sub16 -Wl,-u,hs_atomic_sub32 -Wl,-u,hs_atomic_sub64 -Wl,-u,hs_atomic_and8 -Wl,-u,hs_atomic_and16 -Wl,-u,hs_atomic_and32 -Wl,-u,hs_atomic_and64 -Wl,-u,hs_atomic_nand8 -Wl,-u,hs_atomic_nand16 -Wl,-u,hs_atomic_nand32 -Wl,-u,hs_atomic_nand64 -Wl,-u,hs_atomic_or8 -Wl,-u,hs_atomic_or16 -Wl,-u,hs_atomic_or32 -Wl,-u,hs_atomic_or64 -Wl,-u,hs_atomic_xor8 -Wl,-u,hs_atomic_xor16 -Wl,-u,hs_atomic_xor32 -Wl,-u,hs_atomic_xor64 -Wl,-u,hs_cmpxchg8 -Wl,-u,hs_cmpxchg16 -Wl,-u,hs_cmpxchg32 -Wl,-u,hs_cmpxchg64 -Wl,-u,hs_atomicread8 -Wl,-u,hs_atomicread16 -Wl,-u,hs_atomicread32 -Wl,-u,hs_atomicread64 -Wl,-u,hs_atomicwrite8 -Wl,-u,hs_atomicwrite16 -Wl,-u,hs_atomicwrite32 -Wl,-u,hs_atomicwrite64 -lHSprocess-1.6.3.0 -lHSdirectory-1.3.3.0 -lHSunix-2.7.2.2 -lHSbytestring-0.10.8.2 -lHStime-1.8.0.2 -lHSfilepath-1.4.2.1 -lHScontainers-0.6.0.1 -lHSdeepseq-1.4.4.0 -lHSarray-0.5.3.0 -lHSbase-4.12.0.0 -lHSinteger-gmp-1.0.2.0 -lHSghc-prim-0.5.3 -lHSrts -lCffi -lrt -lutil -ldl -lpthread -lgmp -lm -lrt -ldl -lpthread -v ... [pid 2998] execve("/usr/bin/ld.gold", ["/usr/bin/ld.gold", "-plugin", "/usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so", "-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper", "-plugin-opt=-fresolution=/tmp/ccix2beF.res", "-plugin-opt=-pass-through=-lgcc", "-plugin-opt=-pass-through=-lgcc_s", "-plugin-opt=-pass-through=-lc", "-plugin-opt=-pass-through=-lgcc", "-plugin-opt=-pass-through=-lgcc_s", "--sysroot=/", "--build-id", "--eh-frame-hdr", "-m", "elf_x86_64", "--hash-style=gnu", "--as-needed", "-dynamic-linker", "/lib64/ld-linux-x86-64.so.2", "-z", "relro", "-o", "utils/hsc2hs/dist/build/tmp/hsc2hs", "/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o", "/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o", "/usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/process-1.6.3.0", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/directory-1.3.3.0", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/unix-2.7.2.2", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/bytestring-0.10.8.2", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/time-1.8.0.2", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/filepath-1.4.2.1", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/containers-0.6.0.1", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/deepseq-1.4.4.0", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/array-0.5.3.0", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/base-4.12.0.0", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/integer-gmp-1.0.2.0", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/ghc-prim-0.5.3", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/rts", "-L/usr/lib/gcc/x86_64-linux-gnu/5", "-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu", "-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib", "-L/lib/x86_64-linux-gnu", "-L/lib/../lib", "-L/usr/lib/x86_64-linux-gnu", "-L/usr/lib/../lib", "-L/usr/lib/gcc/x86_64-linux-gnu/5/../../..", "--no-as-needed", "-lm", "--gc-sections", "utils/hsc2hs/dist/build/Main.o", "utils/hsc2hs/dist/build/C.o", "utils/hsc2hs/dist/build/Common.o", "utils/hsc2hs/dist/build/CrossCodegen.o", "utils/hsc2hs/dist/build/DirectCodegen.o", "utils/hsc2hs/dist/build/Flags.o", "utils/hsc2hs/dist/build/HSCParser.o", "utils/hsc2hs/dist/build/ATTParser.o", "utils/hsc2hs/dist/build/UtilsCodegen.o", "utils/hsc2hs/dist/build/Compat/ResponseFile.o", "utils/hsc2hs/dist/build/Paths_hsc2hs.o", "/tmp/ghc2447_0/ghc_2.o", "/tmp/ghc2447_0/ghc_5.o", "-u", "base_GHCziTopHandler_runIO_closure", "-u", "base_GHCziTopHandler_runNonIO_closure", "-u", "ghczmprim_GHCziTuple_Z0T_closure", "-u", "ghczmprim_GHCziTypes_True_closure", "-u", "ghczmprim_GHCziTypes_False_closure", "-u", "base_GHCziPack_unpackCString_closure", "-u", "base_GHCziWeak_runFinalizzerBatch_closure", "-u", "base_GHCziIOziException_stackOverflow_closure", "-u", "base_GHCziIOziException_heapOverflow_closure", "-u", "base_GHCziIOziException_allocationLimitExceeded_closure", "-u", "base_GHCziIOziException_blockedIndefinitelyOnMVar_closure", "-u", "base_GHCziIOziException_blockedIndefinitelyOnSTM_closure", "-u", "base_GHCziIOziException_cannotCompactFunction_closure", "-u", "base_GHCziIOziException_cannotCompactPinned_closure", "-u", "base_GHCziIOziException_cannotCompactMutable_closure", "-u", "base_ControlziExceptionziBase_absentSumFieldError_closure", "-u", "base_ControlziExceptionziBase_nonTermination_closure", "-u", "base_ControlziExceptionziBase_nestedAtomically_closure", "-u", "base_GHCziEventziThread_blockedOnBadFD_closure", "-u", "base_GHCziConcziSync_runSparks_closure", "-u", "base_GHCziConcziIO_ensureIOManagerIsRunning_closure", "-u", "base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure", "-u", "base_GHCziConcziSignal_runHandlersPtr_closure", "-u", "base_GHCziTopHandler_flushStdHandles_closure", "-u", "base_GHCziTopHandler_runMainIO_closure", "-u", "ghczmprim_GHCziTypes_Czh_con_info", "-u", "ghczmprim_GHCziTypes_Izh_con_info", "-u", "ghczmprim_GHCziTypes_Fzh_con_info", "-u", "ghczmprim_GHCziTypes_Dzh_con_info", "-u", "ghczmprim_GHCziTypes_Wzh_con_info", "-u", "base_GHCziPtr_Ptr_con_info", "-u", "base_GHCziPtr_FunPtr_con_info", "-u", "base_GHCziInt_I8zh_con_info", "-u", "base_GHCziInt_I16zh_con_info", "-u", "base_GHCziInt_I32zh_con_info", "-u", "base_GHCziInt_I64zh_con_info", "-u", "base_GHCziWord_W8zh_con_info", "-u", "base_GHCziWord_W16zh_con_info", "-u", "base_GHCziWord_W32zh_con_info", "-u", "base_GHCziWord_W64zh_con_info", "-u", "base_GHCziStable_StablePtr_con_info", "-u", "hs_atomic_add8", "-u", "hs_atomic_add16", "-u", "hs_atomic_add32", "-u", "hs_atomic_add64", "-u", "hs_atomic_sub8", "-u", "hs_atomic_sub16", "-u", "hs_atomic_sub32", "-u", "hs_atomic_sub64", "-u", "hs_atomic_and8", "-u", "hs_atomic_and16", "-u", "hs_atomic_and32", "-u", "hs_atomic_and64", "-u", "hs_atomic_nand8", "-u", "hs_atomic_nand16", "-u", "hs_atomic_nand32", "-u", "hs_atomic_nand64", "-u", "hs_atomic_or8", "-u", "hs_atomic_or16", "-u", "hs_atomic_or32", "-u", "hs_atomic_or64", "-u", "hs_atomic_xor8", "-u", "hs_atomic_xor16", "-u", "hs_atomic_xor32", "-u", "hs_atomic_xor64", "-u", "hs_cmpxchg8", "-u", "hs_cmpxchg16", "-u", "hs_cmpxchg32", "-u", "hs_cmpxchg64", "-u", "hs_atomicread8", "-u", "hs_atomicread16", "-u", "hs_atomicread32", "-u", "hs_atomicread64", "-u", "hs_atomicwrite8", "-u", "hs_atomicwrite16", "-u", "hs_atomicwrite32", "-u", "hs_atomicwrite64", "-lHSprocess-1.6.3.0", "-lHSdirectory-1.3.3.0", "-lHSunix-2.7.2.2", "-lHSbytestring-0.10.8.2", "-lHStime-1.8.0.2", "-lHSfilepath-1.4.2.1", "-lHScontainers-0.6.0.1", "-lHSdeepseq-1.4.4.0", "-lHSarray-0.5.3.0", "-lHSbase-4.12.0.0", "-lHSinteger-gmp-1.0.2.0", "-lHSghc-prim-0.5.3", "-lHSrts", "-lCffi", "-lrt", "-lutil", "-ldl", "-lpthread", "-lgmp", "-lm", "-lrt", "-ldl", "-lpthread", "-lgcc", "--as-needed", "-lgcc_s", "--no-as-needed", "-lc", "-lgcc", "--as-needed", "-lgcc_s", "--no-as-needed", "/usr/lib/gcc/x86_64-linux-gnu/5/crtend.o", "/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o"], [/* 89 vars */]) = 0 [pid 2998] +++ exited with 0 +++ So no error for me. We'll want to do the same for you and compare. On 01/04/2019 3:30 PM, Niklas Hambüchen wrote:
That sounds good. A few more questions:
What's the exact version of your OS, and of gold?
After getting to the error, can you run the failing ghc invocation directly, and see if the error remains? The one starting with
"/home/omer/ghc_bins/ghc-8.6.4-bin/bin/ghc" -o utils/hsc2hs/dist/build/tmp/hsc2hs ...
If yes, can you add a `-v` to it, so we can see the invocations to the programs it calls?
Then, it should show a gcc invocation (which eventually calls gold). Can you then manually run and add a `-v` to to the gcc invocation as well, so we can see the linker command it runs (see also https://stackoverflow.com/questions/1170809/how-to-get-gcc-linker-command)? You may have to run ghc with `-keep-tmp-files` if it invokes the gcc on temporary files.
Finally, can you run the printed ld.gold invocation manually, and add a `-v` to that, so we get more detail about what gold is doing?
If you are on Linux (and also in some other cases), you can also run ghc under `strace -fy -e execve` to see all programs started recursively by any subprogram; this may also easily provide the linker invocation.
Thank you!
On 01/04/2019 7:35 AM, Ömer Sinan Ağacan wrote:
Yeah I can reproduce it reliably. I tried a few `git clean -xfd`s, and tried with no build.mk and with a debug build.mk, it happened with all configurations, when building the same file (the hsc2hs executable).
The repro is simple: clone the GHC repo, build at 6f7115dfd4. If this doesn't reproduce the bug then I don't know what else to try.
so perhaps you also have a corrupt ELF file somewhere
How do I check this? Maybe gold.ld produces a corrupt ELF file during the build, and then tries to read it to link an executable.
ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Hmm this is really weird, I tried to again but it's building fine now. Nothing
changed -- I'm using the same tree, trying after `git clean -xfd`, and without a
build.mk. I guess the bug does not happen deterministically? Was that also the
case with the bug report you mentioned?
In case anyone's interested: I'm on Ubuntu 18.04, booting with GHC 8.6.4
(bindist from haskell.org, with debug info).
Ömer
Niklas Hambüchen
At least on my Ubuntu 16.04, it builds:
% git clone --recursive git@gitlab.haskell.org:ghc/ghc.git ghc-gold-error-6f7115dfd4 % cd ghc-gold-error-6f7115dfd4 % ./boot && ./configure --prefix=$HOME/opt/ghc-gold-error-6f7115dfd4 GHC=$HOME/.stack/programs/x86_64-linux/ghc-8.6.3/bin/ghc % make -j4
# Ctrl-C after a while when it's building stage-1 code
% rm -f utils/hsc2hs/dist/build/tmp/hsc2hs % make utils/hsc2hs/dist/build/tmp/hsc2hs ===--- building phase 0 make --no-print-directory -f ghc.mk phase=0 phase_0_builds make[1]: Nothing to be done for 'phase_0_builds'. ===--- building phase 1 make --no-print-directory -f ghc.mk phase=1 phase_1_builds "/home/niklas/.stack/programs/x86_64-linux/ghc-8.6.3/bin/ghc" -o utils/hsc2hs/dist/build/tmp/hsc2hs -hisuf hi -osuf o -hcsuf hc -static -H32m -O -Wall -package-db libraries/bootstrapping.conf -hide-all-packages -i -iutils/hsc2hs/. -iutils/hsc2hs/dist/build -Iutils/hsc2hs/dist/build -iutils/hsc2hs/dist/build/hsc2hs/autogen -Iutils/hsc2hs/dist/build/hsc2hs/autogen -optP-include -optPutils/hsc2hs/dist/build/hsc2hs/autogen/cabal_macros.h -package-id base-4.12.0.0 -package-id containers-0.6.0.1 -package-id directory-1.3.3.0 -package-id filepath-1.4.2.1 -package-id process-1.6.3.0 -Wall -XHaskell2010 -no-user-package-db -rtsopts -outputdir utils/hsc2hs/dist/build -static -H32m -O -Wall -package-db libraries/bootstrapping.conf -hide-all-packages -i -iutils/hsc2hs/. -iutils/hsc2hs/dist/build -Iutils/hsc2hs/dist/build -iutils/hsc2hs/dist/build/hsc2hs/autogen -Iutils/hsc2hs/dist/build/hsc2hs/autogen -optP-include -optPutils/hsc2hs/dist/build/hsc2hs/autogen/cabal_macros.h -package-id base-4.12.0.0 -package-id containers-0.6.0.1 -package-id directory-1.3.3.0 -package-id filepath-1.4.2.1 -package-id process-1.6.3.0 -Wall -XHaskell2010 -no-user-package-db -rtsopts utils/hsc2hs/dist/build/Main.o utils/hsc2hs/dist/build/C.o utils/hsc2hs/dist/build/Common.o utils/hsc2hs/dist/build/CrossCodegen.o utils/hsc2hs/dist/build/DirectCodegen.o utils/hsc2hs/dist/build/Flags.o utils/hsc2hs/dist/build/HSCParser.o utils/hsc2hs/dist/build/ATTParser.o utils/hsc2hs/dist/build/UtilsCodegen.o utils/hsc2hs/dist/build/Compat/ResponseFile.o utils/hsc2hs/dist/build/Paths_hsc2hs.o /usr/bin/install -c -m 755 utils/hsc2hs/dist/build/tmp/hsc2hs inplace/lib/bin/hsc2hs ... make[1]: 'utils/hsc2hs/dist/build/tmp/hsc2hs' is up to date. make utils/hsc2hs/dist/build/tmp/hsc2hs 49.26s user 15.66s system 91% cpu 1:10.58 total
Adding `-fforce-recomp -v -keep-tmp-files` to the above ghc invocation reveals a `gcc` invocation; running that one under `strace` shows:
% strace -s 30000 -fy -e execve gcc -fno-stack-protector -DTABLES_NEXT_TO_CODE '-fuse-ld=gold' -Wl,--no-as-needed -o utils/hsc2hs/dist/build/tmp/hsc2hs -lm -no-pie -Wl,--gc-sections utils/hsc2hs/dist/build/Main.o utils/hsc2hs/dist/build/C.o utils/hsc2hs/dist/build/Common.o utils/hsc2hs/dist/build/CrossCodegen.o utils/hsc2hs/dist/build/DirectCodegen.o utils/hsc2hs/dist/build/Flags.o utils/hsc2hs/dist/build/HSCParser.o utils/hsc2hs/dist/build/ATTParser.o utils/hsc2hs/dist/build/UtilsCodegen.o utils/hsc2hs/dist/build/Compat/ResponseFile.o utils/hsc2hs/dist/build/Paths_hsc2hs.o -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/process-1.6.3.0 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/directory-1.3.3.0 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/unix-2.7.2.2 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/bytestring-0.10.8.2 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/time-1.8.0.2 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/filepath-1.4.2.1 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/containers-0.6.0.1 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/deepseq-1.4.4.0 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/array-0.5.3.0 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/base-4.12.0.0 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/integer-gmp-1.0.2.0 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/ghc-prim-0.5.3 -L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/rts /tmp/ghc2447_0/ghc_2.o /tmp/ghc2447_0/ghc_5.o -Wl,-u,base_GHCziTopHandler_runIO_closure -Wl,-u,base_GHCziTopHandler_runNonIO_closure -Wl,-u,ghczmprim_GHCziTuple_Z0T_closure -Wl,-u,ghczmprim_GHCziTypes_True_closure -Wl,-u,ghczmprim_GHCziTypes_False_closure -Wl,-u,base_GHCziPack_unpackCString_closure -Wl,-u,base_GHCziWeak_runFinalizzerBatch_closure -Wl,-u,base_GHCziIOziException_stackOverflow_closure -Wl,-u,base_GHCziIOziException_heapOverflow_closure -Wl,-u,base_GHCziIOziException_allocationLimitExceeded_closure -Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnMVar_closure -Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnSTM_closure -Wl,-u,base_GHCziIOziException_cannotCompactFunction_closure -Wl,-u,base_GHCziIOziException_cannotCompactPinned_closure -Wl,-u,base_GHCziIOziException_cannotCompactMutable_closure -Wl,-u,base_ControlziExceptionziBase_absentSumFieldError_closure -Wl,-u,base_ControlziExceptionziBase_nonTermination_closure -Wl,-u,base_ControlziExceptionziBase_nestedAtomically_closure -Wl,-u,base_GHCziEventziThread_blockedOnBadFD_closure -Wl,-u,base_GHCziConcziSync_runSparks_closure -Wl,-u,base_GHCziConcziIO_ensureIOManagerIsRunning_closure -Wl,-u,base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure -Wl,-u,base_GHCziConcziSignal_runHandlersPtr_closure -Wl,-u,base_GHCziTopHandler_flushStdHandles_closure -Wl,-u,base_GHCziTopHandler_runMainIO_closure -Wl,-u,ghczmprim_GHCziTypes_Czh_con_info -Wl,-u,ghczmprim_GHCziTypes_Izh_con_info -Wl,-u,ghczmprim_GHCziTypes_Fzh_con_info -Wl,-u,ghczmprim_GHCziTypes_Dzh_con_info -Wl,-u,ghczmprim_GHCziTypes_Wzh_con_info -Wl,-u,base_GHCziPtr_Ptr_con_info -Wl,-u,base_GHCziPtr_FunPtr_con_info -Wl,-u,base_GHCziInt_I8zh_con_info -Wl,-u,base_GHCziInt_I16zh_con_info -Wl,-u,base_GHCziInt_I32zh_con_info -Wl,-u,base_GHCziInt_I64zh_con_info -Wl,-u,base_GHCziWord_W8zh_con_info -Wl,-u,base_GHCziWord_W16zh_con_info -Wl,-u,base_GHCziWord_W32zh_con_info -Wl,-u,base_GHCziWord_W64zh_con_info -Wl,-u,base_GHCziStable_StablePtr_con_info -Wl,-u,hs_atomic_add8 -Wl,-u,hs_atomic_add16 -Wl,-u,hs_atomic_add32 -Wl,-u,hs_atomic_add64 -Wl,-u,hs_atomic_sub8 -Wl,-u,hs_atomic_sub16 -Wl,-u,hs_atomic_sub32 -Wl,-u,hs_atomic_sub64 -Wl,-u,hs_atomic_and8 -Wl,-u,hs_atomic_and16 -Wl,-u,hs_atomic_and32 -Wl,-u,hs_atomic_and64 -Wl,-u,hs_atomic_nand8 -Wl,-u,hs_atomic_nand16 -Wl,-u,hs_atomic_nand32 -Wl,-u,hs_atomic_nand64 -Wl,-u,hs_atomic_or8 -Wl,-u,hs_atomic_or16 -Wl,-u,hs_atomic_or32 -Wl,-u,hs_atomic_or64 -Wl,-u,hs_atomic_xor8 -Wl,-u,hs_atomic_xor16 -Wl,-u,hs_atomic_xor32 -Wl,-u,hs_atomic_xor64 -Wl,-u,hs_cmpxchg8 -Wl,-u,hs_cmpxchg16 -Wl,-u,hs_cmpxchg32 -Wl,-u,hs_cmpxchg64 -Wl,-u,hs_atomicread8 -Wl,-u,hs_atomicread16 -Wl,-u,hs_atomicread32 -Wl,-u,hs_atomicread64 -Wl,-u,hs_atomicwrite8 -Wl,-u,hs_atomicwrite16 -Wl,-u,hs_atomicwrite32 -Wl,-u,hs_atomicwrite64 -lHSprocess-1.6.3.0 -lHSdirectory-1.3.3.0 -lHSunix-2.7.2.2 -lHSbytestring-0.10.8.2 -lHStime-1.8.0.2 -lHSfilepath-1.4.2.1 -lHScontainers-0.6.0.1 -lHSdeepseq-1.4.4.0 -lHSarray-0.5.3.0 -lHSbase-4.12.0.0 -lHSinteger-gmp-1.0.2.0 -lHSghc-prim-0.5.3 -lHSrts -lCffi -lrt -lutil -ldl -lpthread -lgmp -lm -lrt -ldl -lpthread -v ... [pid 2998] execve("/usr/bin/ld.gold", ["/usr/bin/ld.gold", "-plugin", "/usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so", "-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper", "-plugin-opt=-fresolution=/tmp/ccix2beF.res", "-plugin-opt=-pass-through=-lgcc", "-plugin-opt=-pass-through=-lgcc_s", "-plugin-opt=-pass-through=-lc", "-plugin-opt=-pass-through=-lgcc", "-plugin-opt=-pass-through=-lgcc_s", "--sysroot=/", "--build-id", "--eh-frame-hdr", "-m", "elf_x86_64", "--hash-style=gnu", "--as-needed", "-dynamic-linker", "/lib64/ld-linux-x86-64.so.2", "-z", "relro", "-o", "utils/hsc2hs/dist/build/tmp/hsc2hs", "/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o", "/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o", "/usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/process-1.6.3.0", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/directory-1.3.3.0", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/unix-2.7.2.2", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/bytestring-0.10.8.2", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/time-1.8.0.2", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/filepath-1.4.2.1", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/containers-0.6.0.1", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/deepseq-1.4.4.0", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/array-0.5.3.0", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/base-4.12.0.0", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/integer-gmp-1.0.2.0", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/ghc-prim-0.5.3", "-L/raid/stack/programs/x86_64-linux/ghc-8.6.3/lib/ghc-8.6.3/rts", "-L/usr/lib/gcc/x86_64-linux-gnu/5", "-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu", "-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib", "-L/lib/x86_64-linux-gnu", "-L/lib/../lib", "-L/usr/lib/x86_64-linux-gnu", "-L/usr/lib/../lib", "-L/usr/lib/gcc/x86_64-linux-gnu/5/../../..", "--no-as-needed", "-lm", "--gc-sections", "utils/hsc2hs/dist/build/Main.o", "utils/hsc2hs/dist/build/C.o", "utils/hsc2hs/dist/build/Common.o", "utils/hsc2hs/dist/build/CrossCodegen.o", "utils/hsc2hs/dist/build/DirectCodegen.o", "utils/hsc2hs/dist/build/Flags.o", "utils/hsc2hs/dist/build/HSCParser.o", "utils/hsc2hs/dist/build/ATTParser.o", "utils/hsc2hs/dist/build/UtilsCodegen.o", "utils/hsc2hs/dist/build/Compat/ResponseFile.o", "utils/hsc2hs/dist/build/Paths_hsc2hs.o", "/tmp/ghc2447_0/ghc_2.o", "/tmp/ghc2447_0/ghc_5.o", "-u", "base_GHCziTopHandler_runIO_closure", "-u", "base_GHCziTopHandler_runNonIO_closure", "-u", "ghczmprim_GHCziTuple_Z0T_closure", "-u", "ghczmprim_GHCziTypes_True_closure", "-u", "ghczmprim_GHCziTypes_False_closure", "-u", "base_GHCziPack_unpackCString_closure", "-u", "base_GHCziWeak_runFinalizzerBatch_closure", "-u", "base_GHCziIOziException_stackOverflow_closure", "-u", "base_GHCziIOziException_heapOverflow_closure", "-u", "base_GHCziIOziException_allocationLimitExceeded_closure", "-u", "base_GHCziIOziException_blockedIndefinitelyOnMVar_closure", "-u", "base_GHCziIOziException_blockedIndefinitelyOnSTM_closure", "-u", "base_GHCziIOziException_cannotCompactFunction_closure", "-u", "base_GHCziIOziException_cannotCompactPinned_closure", "-u", "base_GHCziIOziException_cannotCompactMutable_closure", "-u", "base_ControlziExceptionziBase_absentSumFieldError_closure", "-u", "base_ControlziExceptionziBase_nonTermination_closure", "-u", "base_ControlziExceptionziBase_nestedAtomically_closure", "-u", "base_GHCziEventziThread_blockedOnBadFD_closure", "-u", "base_GHCziConcziSync_runSparks_closure", "-u", "base_GHCziConcziIO_ensureIOManagerIsRunning_closure", "-u", "base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure", "-u", "base_GHCziConcziSignal_runHandlersPtr_closure", "-u", "base_GHCziTopHandler_flushStdHandles_closure", "-u", "base_GHCziTopHandler_runMainIO_closure", "-u", "ghczmprim_GHCziTypes_Czh_con_info", "-u", "ghczmprim_GHCziTypes_Izh_con_info", "-u", "ghczmprim_GHCziTypes_Fzh_con_info", "-u", "ghczmprim_GHCziTypes_Dzh_con_info", "-u", "ghczmprim_GHCziTypes_Wzh_con_info", "-u", "base_GHCziPtr_Ptr_con_info", "-u", "base_GHCziPtr_FunPtr_con_info", "-u", "base_GHCziInt_I8zh_con_info", "-u", "base_GHCziInt_I16zh_con_info", "-u", "base_GHCziInt_I32zh_con_info", "-u", "base_GHCziInt_I64zh_con_info", "-u", "base_GHCziWord_W8zh_con_info", "-u", "base_GHCziWord_W16zh_con_info", "-u", "base_GHCziWord_W32zh_con_info", "-u", "base_GHCziWord_W64zh_con_info", "-u", "base_GHCziStable_StablePtr_con_info", "-u", "hs_atomic_add8", "-u", "hs_atomic_add16", "-u", "hs_atomic_add32", "-u", "hs_atomic_add64", "-u", "hs_atomic_sub8", "-u", "hs_atomic_sub16", "-u", "hs_atomic_sub32", "-u", "hs_atomic_sub64", "-u", "hs_atomic_and8", "-u", "hs_atomic_and16", "-u", "hs_atomic_and32", "-u", "hs_atomic_and64", "-u", "hs_atomic_nand8", "-u", "hs_atomic_nand16", "-u", "hs_atomic_nand32", "-u", "hs_atomic_nand64", "-u", "hs_atomic_or8", "-u", "hs_atomic_or16", "-u", "hs_atomic_or32", "-u", "hs_atomic_or64", "-u", "hs_atomic_xor8", "-u", "hs_atomic_xor16", "-u", "hs_atomic_xor32", "-u", "hs_atomic_xor64", "-u", "hs_cmpxchg8", "-u", "hs_cmpxchg16", "-u", "hs_cmpxchg32", "-u", "hs_cmpxchg64", "-u", "hs_atomicread8", "-u", "hs_atomicread16", "-u", "hs_atomicread32", "-u", "hs_atomicread64", "-u", "hs_atomicwrite8", "-u", "hs_atomicwrite16", "-u", "hs_atomicwrite32", "-u", "hs_atomicwrite64", "-lHSprocess-1.6.3.0", "-lHSdirectory-1.3.3.0", "-lHSunix-2.7.2.2", "-lHSbytestring-0.10.8.2", "-lHStime-1.8.0.2", "-lHSfilepath-1.4.2.1", "-lHScontainers-0.6.0.1", "-lHSdeepseq-1.4.4.0", "-lHSarray-0.5.3.0", "-lHSbase-4.12.0.0", "-lHSinteger-gmp-1.0.2.0", "-lHSghc-prim-0.5.3", "-lHSrts", "-lCffi", "-lrt", "-lutil", "-ldl", "-lpthread", "-lgmp", "-lm", "-lrt", "-ldl", "-lpthread", "-lgcc", "--as-needed", "-lgcc_s", "--no-as-needed", "-lc", "-lgcc", "--as-needed", "-lgcc_s", "--no-as-needed", "/usr/lib/gcc/x86_64-linux-gnu/5/crtend.o", "/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o"], [/* 89 vars */]) = 0 [pid 2998] +++ exited with 0 +++
So no error for me. We'll want to do the same for you and compare.
On 01/04/2019 3:30 PM, Niklas Hambüchen wrote:
That sounds good. A few more questions:
What's the exact version of your OS, and of gold?
After getting to the error, can you run the failing ghc invocation directly, and see if the error remains? The one starting with
"/home/omer/ghc_bins/ghc-8.6.4-bin/bin/ghc" -o utils/hsc2hs/dist/build/tmp/hsc2hs ...
If yes, can you add a `-v` to it, so we can see the invocations to the programs it calls?
Then, it should show a gcc invocation (which eventually calls gold). Can you then manually run and add a `-v` to to the gcc invocation as well, so we can see the linker command it runs (see also https://stackoverflow.com/questions/1170809/how-to-get-gcc-linker-command)? You may have to run ghc with `-keep-tmp-files` if it invokes the gcc on temporary files.
Finally, can you run the printed ld.gold invocation manually, and add a `-v` to that, so we get more detail about what gold is doing?
If you are on Linux (and also in some other cases), you can also run ghc under `strace -fy -e execve` to see all programs started recursively by any subprogram; this may also easily provide the linker invocation.
Thank you!
On 01/04/2019 7:35 AM, Ömer Sinan Ağacan wrote:
Yeah I can reproduce it reliably. I tried a few `git clean -xfd`s, and tried with no build.mk and with a debug build.mk, it happened with all configurations, when building the same file (the hsc2hs executable).
The repro is simple: clone the GHC repo, build at 6f7115dfd4. If this doesn't reproduce the bug then I don't know what else to try.
so perhaps you also have a corrupt ELF file somewhere
How do I check this? Maybe gold.ld produces a corrupt ELF file during the build, and then tries to read it to link an executable.
ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
participants (4)
-
Ben Gamari
-
Niklas Hambüchen
-
Takenobu Tani
-
Ömer Sinan Ağacan