Runtime linker fails to link an object
In !2231 (closed) we replace
integer-gmp with a
ghc-bignum implementation uses unboxed sums which GHC implements with unboxed tuples. GHC fills unreachable tuple fields with
absentSumFieldError defined in
There were some test failures that happened only when we build GHC with the legacy
make based build system.
T5313: /builds/hsyl20/ghc/libraries/ghc-bignum/dist-install/build/HSghc-bignum-1.0.o: unknown symbol `base_ControlziExceptionziBase_absentSumFieldError_closure' T5313: T5313: unable to load package `ghc-bignum-1.0' -- same error for: T10052 T10508_api T3372 T5313 T8628 T8639_api dynCompileExpr linker_unload linker_unload_multiple_objs static-plugins
I tracked this down to the legacy
make build system producing both
libHSghc-bignum-1.0.a while Hadrian only produces the latter. I confirmed with
strace that the culprit is the
.o file. If it isn't present the runtime linker loads the
.a and the tests pass.
A workaround is to make the runtime linker looks for archives before objects.
What would be a proper way to fix this?
Possibly related: #13786 (closed)