Porting mips-sgi-irix65 [help]

Rafael Martínez Torres rmartine@fdi.ucm.es
Thu, 23 Jan 2003 12:04:20 -0800 (PST)


On Fri, 13 Dec 2002, Simon Marlow wrote:
> >
> > 59					59
> > 59					59
> > 10 (CONST_NOCAF_STATIC)			10
> > 10					10
> > 33  (IND_STATIC)			4137  (zzz! Max number 64 !)
> > 17  (FUN_STATIC)
> > 33
> > 29
>
> Something is wrong with the heap layout perhaps, or maybe the info tables.  I can't tell much more from the information above; you'll need to fire up gdb on the executable and dig into the contents of the heap and info tables at the point of the crash.
>
> Cheers,
> 	Simon
>

Well, the bug is bounded ( not fixed at all).

RTS::Scheduler.c
  GarbageCollect()
    get_roots()   "GetRoots()"
     MarkRoot()
      evacuate()
       LOOKS_LIKE_GHC_INFO(q)
        IS_CODE_PTR(q)
          ClosureMacros.h::TEXT_END_SECTION_MARKER_DCL
          ClosureMacros.h::TEXT_END_SECTION_MARKER

As pointed Michael Weber in a sparc-unknown-linux porting,the key point is

"gcc on sparc-linux (mips-irix) doesn't mark the beginning of
.data(like "data_start" on i386-linux) . Using etext is definitely wrong
here, since .rodata comes afterwards and therefore etext doesn't cover the infotables for
static-closures"

bash-2.04$ size nfibI

     	   Section           Size        Physical        Virtual
     	                                 Address         Address

       .MIPS.options	     128	268435760	268435760
         .MIPS.stubs	    1188	269119080	269119080
               .text	 1722540	269120272	269120272
               .init	      80	270842812	270842812
               .fini	      56	270842892	270842892
             .rodata	  266108	270909440	270909440
===>          .data	   39236	271175552	271175552 <==
...

bash-2.04$ nm nfibI

[7387]	| 270842948|       0|SECT |GLOB |DEFAULT  |MIPS_TEXT|etext  <==
...
[22]	| 270909440|  266108|SECT |LOCL |DEFAULT  |MIPS_DATA|.rodata
[23]	| 271175552|   39236|SECT |LOCL |DEFAULT  |MIPS_DATA|.data -border-
[136]	| 270909440|       0|SECT |GLOB |DEFAULT  |MIPS_DATA|fdata  <==
[137]	| 270909440|       0|SECT |GLOB |DEFAULT  |MIPS_DATA|_fdata <==

No symbol  cover ".rodata" section, i.e some info-static closures...

I'll think a *patch*. Michael Weber's (linker script) doesn't semm useful
because I can't use GNU ld.

It May be useful for further designs of Ghc , in order to get a cleaner
portability... (To Mr. Marlow )

Any idea ?

By hardwiring (code lit. 271175552) the code each compilation, I could run
nfibI(35), so I'm in the rigth way.