On 12 July 2005 13:42, Axel Simon wrote: > On Tue, 2005-07-12 at 13:27 +0100, Simon Marlow wrote: >> On 12 July 2005 13:14, Axel Simon wrote: >> >>> On Tue, 2005-07-12 at 12:54 +0100, Simon Marlow wrote: >>>> On 12 July 2005 11:52, Christian Maeder wrote: >>>> >>>>> Sven Panne wrote: >>>>>> FYI: I've just committed a fix to CVS HEAD for GHC on SPARC to >>>>>> reduce the register pressure on gcc, which will probably make its >>>>>> way into GHC 6.4.1. The OpenGL/GLUT packages compile fine now >>>>>> with gcc 3.4.4 on SPARC, success stories and/or tragic failures >>>>>> with this patch are highly welcome... >>>>> >>>>> Good, I'm trying to create a release. Would you also dare to look >>>>> into the mangler to fix the linking problem of ghci? Or do you >>>>> have clue how to do this, Simon? >>>> >>>> Sorry, I don't have any idea what's causing that problem. >>> >>> ...but it would be nice to get it fixed. The symbol seens to stem >>> from ghc/compiler/cmm/CLabel.hs where it says: >>> >>> pprCLbl ModuleRegdLabel >>> = ptext SLIT("_module_registered") >>> >>> Is this meant to be an external symbol? And what does it do? >> >> _module_registered is a single word-sized variable in every module. >> The symbol is supposed to be local, and hence not visible to other >> modules (otherwise it clashes, of course). On Sparc, it appears >> that something is going wrong either in the mangler or the splitter >> or the linker, and this symbol is leaking(?). >> >> You could check whether it is indeed local as it is supposed to be in >> the library modules. eg. if I say 'nm libHSbase.a | grep >> module_registered' on Linux, I get nothing back. > > [EMAIL PROTECTED]:~/source/ghc-6.4-branch:519$ nm > libraries/base/libHSbase.a | grep module_registered > [11] | 4| 4|OBJT |GLOB |0 |COMMON | > _module_registered > [23] | 4| 4|OBJT |GLOB |0 |COMMON | > _module_registered > [11] | 4| 4|OBJT |GLOB |0 |COMMON | > _module_registered > [9] | 4| 4|OBJT |GLOB |0 |COMMON | > _module_registered > [9] | 4| 4|OBJT |GLOB |0 |COMMON | > _module_registered > [10] | 4| 4|OBJT |GLOB |0 |COMMON | > _module_registered > > ...and so on. So it is global in every single source file. Do I know > check how the .c file looks like? The symbol is defined in e.g. > Arrow__84.o
The .hc file is probably fine. The series of files from .hc when -split-objs is on is: M.hc --> C compiler --> M.raw_s --> mangler --> M.split_s --> splitter --> M.split__1.s, M.split__2.s, etc. you can keep these files in /tmp by using -keep-tmp-files. Then take a look at the _module_registered declarations in each one and see where it goes wrong. Cheers, Simon _______________________________________________ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs