[[project @ 2003-11-03 10:11:04 by simonmar]
simonmar**20031103101104
merge rev. 1.9.6.1 to the HEAD (add overflown relocs bug)
] {
hunk ./ghc/docs/users_guide/bugs.sgml 253
+
+ Bugs in GHC
+
hunk ./ghc/docs/users_guide/bugs.sgml 259
- patterns (see , and usually
+ patterns (see ), and usually
hunk ./ghc/docs/users_guide/bugs.sgml 306
+ GHC's inliner can be persuaded into non-termination
+ using the standard way to encode recursion via a data type:
+
+ data U = MkU (U -> Bool)
+
+ russel :: U -> Bool
+ russel u@(MkU p) = not $ p u
+
+ x :: Bool
+ x = russel (MkU russel)
+
+
+ We have never found another class of programs, other
+ than this contrived one, that makes GHC diverge, and fixing
+ the problem would impose an extra overhead on every
+ compilation. So the bug remains un-fixed. There is more
+ background in
+ Secrets of the GHC inliner.
+
+
+
+
+
+ Bugs in GHCi (the interactive GHC)
+
+
hunk ./ghc/docs/users_guide/bugs.sgml 353
-
- GHC's inliner can be persuaded into non-termination
- using the standard way to encode recursion via a data type:
+
+ On Windows, there's a GNU ld/BFD bug
+ whereby it emits bogus PE object files that have more than
+ 0xffff relocations. When GHCi tries to load a package affected by this
+ bug, you get an error message of the form
hunk ./ghc/docs/users_guide/bugs.sgml 359
- data U = MkU (U -> Bool)
-
- russel :: U -> Bool
- russel u@(MkU p) = not $ p u
-
- x :: Bool
- x = russel (MkU russel)
+ Loading package javavm ... linking ... Overflown relocs: 4
hunk ./ghc/docs/users_guide/bugs.sgml 361
-
- We have never found another class of programs, other
- than this contrived one, that makes GHC diverge, and fixing
- the problem would impose an extra overhead on every
- compilation. So the bug remains un-fixed. There is more
- background in
- Secrets of the GHC inliner.
+ The last time we looked, this bug still
+ wasn't fixed in the BFD codebase, and there wasn't any
+ noticeable interest in fixing it when we reported the bug
+ back in 2001 or so.
+
+ The workaround is to split up the .o files that make up
+ your package into two or more .o's, along the lines of
+ how the "base" package does it.
hunk ./ghc/docs/users_guide/bugs.sgml 371
+
}