When you use 'strip --strip-unneeded' on a ELF format .o or .a file, if the object file has no global/exported symbols then 'strip' ends up removing the symbol table entirely. Previously the GHCi linker assumed there would always be exactly one symbol table and exactly one string table. In fact, in ELF object files there is no such limitation, instead each section points to the other sections it needs, in particular relocation sections have a link to the symbol table section they use and symbol table sections have a link to the corresponding string table. So instead of assuming there will always be a global symbol and string table, all we have to do is validate and follow these links. Then, when we encounter an empty object file that has no symbols then we handle it correctly, because since it's empty we never process any relocations and so never have to follow any links to non-existant symbol tables. Also, in the case where an object is fully stripped, we can now detect this more reliably and emit a more helpful error message, e.g: libHSghc-7.1.20110509.a(DsMeta.o): relocation section #2 has no symbol table This object file has probably been fully striped. Such files cannot be linked.
* Fix bugs in the packing and unpacking of data constructors with equality predicates in their types * Remove PredCo altogether; instead, coercions between predicated types (like (Eq a, [a]~b) => blah) are treated as if they were precisely their underlying representation type Eq a -> ((~) [a] b) -> blah in this case * Similarly, Type.coreView no longer treats equality predciates specially. * Implement the cast-of-coercion optimisation in Simplify.simplCoercionF Numerous other small bug-fixes and refactorings. Annoyingly, OptCoercion had Windows line endings, and this patch switches to Unix, so it looks as if every line has changed.
This fixes the bug, adds some comments, and a tiny bit of refactoring
Signed-off-by: Edward Z. Yang <firstname.lastname@example.org>
the other mutator threads (#5127)
The code that prints the "one-line" stats (i.e. the RTS -t flag) was incorreclty printing zeros for some time values. These time values were computed inside a conditional that was only true when printing detailed stats (i.e. the RTS -s or -S flags). This commit simply moves the computation out of the conditional so they are available for the one-line stats output.
This was making mc17 fail.
This was making T3822 fail, which it has apparently been doing for some time (ie in GHC 7, 6.12, 6.10)!
gen_workspace structures. Fixes heapprof001(prof_hc_hb).
having this meant we weren't getting -no-user-package-conf, which caused a build failure for me due to locally-installed packages being used instead of ones in the tree.