Hi Simon,

After much messing about with the gcc and gas sources to help track down my
problems with GHC on HP-UX, I think I've figured why I can't built it from
scratch. I think GCC/GAS must have changed a bit since GHC was ported, and
consequently the evil mangler is being a little too malicious and is
deleting some ".NSUBSPA" directives that relate to creating new subspaces
and hence the long call fixes that they facilitate.

I don't think there is a need for the "--- BEGIN ---" and "--- END ---"
macros with gcc-2.95.2 anymore. I did try to build the compiler without the
mangler, and although it compiled fine, the result core dumped due to the
closure infotable not having been mangled.

My perl skills a decidedly flabby, so I am not sure how effectively I can
fix it, I'll have a look though.  I think all it needs to do is to keep the
relevant ".NSUBSPA" line with the function code to which it refers.
Functions always come out the compiler looking like the example at the
bottom.

The other thing I spotted that popped up, but isn't a bug, was that I guess
the "long long" type appeared in GNU C at some point between your version
and 2.95.2, hence the 4.08.1 binary does not include support for this and
due to the configuration procedure in the header files, it ends up creating
a need for this in one of the compiler modules
(ghc/compiler/prelude/PrelRules.o).

I worked around this by copying the libHSrts.a that GHC build process
produces before it gets onto the compiler from ghc-4.08.2/ghc/rts into the
installed location of the 4.08.1 binary distribution before doing a "make
all" to resume.

I'll mail again if I have any success.

Regards,
Andy.



        .EXPORT Parser_HappyAbsSyn110_closure,DATA
        .SPACE $PRIVATE$
        .SUBSPA $DATA$

        .align 4
Parser_HappyAbsSyn110_closure
        .IMPORT Parser_HappyAbsSyn110_info,DATA
        .word Parser_HappyAbsSyn110_info
        .EXPORT Parser_HappyAbsSyn110_info,DATA
        .SPACE $TEXT$
        .SUBSPA $LIT$

        .align 4
Parser_HappyAbsSyn110_info
        .word 0
        .half 0
        .half 0
        .half 17
        .half 0
        .IMPORT Parser_HappyAbsSyn110_fast1,CODE
        .SPACE $PRIVATE$
        .SUBSPA $DATA$

        .align 4
L$C0061
        .word P%stg_update_PAP
        .align 4
L$C0062
        .word P%Parser_HappyAbsSyn110_fast1
        .SPACE $TEXT$
        .SUBSPA $CODE$

        .align 4
        .NSUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
        .EXPORT Parser_HappyAbsSyn110_entry,ENTRY,PRIV_LEV=3,RTNVAL=GR
Parser_HappyAbsSyn110_entry
        .PROC
        .CALLINFO FRAME=0,NO_CALLS
        .ENTRY
        --- BEGIN ---
        ldo 4(%r4),%r19
        comb,>>= %r5,%r19,L$0242
        addil LR'Parser_HappyAbsSyn110_closure-$global$,%r27
        ldil LR'L$C0061,%r19
        ldw RR'L$C0061(%r19),%r19
        bb,>= %r19,30,L$0246
        ldo RR'Parser_HappyAbsSyn110_closure-$global$(%r1),%r11
        ldw -2(%r19),%r19
L$0246
        bv,n %r0(%r19)
L$0242
        copy %r4,%r19
        ldws,ma 4(%r19),%r11
        copy %r19,%r4
        ldil LR'L$C0062,%r19
        ldw RR'L$C0062(%r19),%r19
        extrs,>= %r19,30,1,%r0
        ldw -2(%r19),%r19
L$0251
        bv,n %r0(%r19)
        .EXIT
        .PROCEND
        .IMPORT stg_chk_1,CODE
        .IMPORT Parser_HappyAbsSyn110_con_info,DATA
        .SPACE $PRIVATE$
        .SUBSPA $DATA$

        .align 4
L$C0064
        .word P%stg_chk_1
        .SPACE $TEXT$
        .SUBSPA $CODE$

        .align 4
        .NSUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
        .EXPORT Parser_HappyAbsSyn110_fast1,ENTRY,PRIV_LEV=3,RTNVAL=GR
Parser_HappyAbsSyn110_fast1
        .PROC
        .CALLINFO FRAME=0,NO_CALLS
        .ENTRY
        --- BEGIN ---
        ldo 8(%r7),%r7
        comb,>>= %r8,%r7,L$0254
        ldil LR'Parser_HappyAbsSyn110_info,%r19
        ldo RR'Parser_HappyAbsSyn110_info(%r19),%r12
        ldil LR'L$C0064,%r19
        ldw RR'L$C0064(%r19),%r19
        extrs,>= %r19,30,1,%r0
        ldw -2(%r19),%r19
L$0258
        bv,n %r0(%r19)
L$0254
        ldil LR'Parser_HappyAbsSyn110_con_info,%r19
        ldo RR'Parser_HappyAbsSyn110_con_info(%r19),%r19
        stw %r19,-4(%r7)
        copy %r7,%r19
        stws,ma %r11,-4(%r19)
        copy %r19,%r11
        ldw 0(%r4),%r19
        extrs,>= %r19,30,1,%r0
        ldw -2(%r19),%r19
L$0263
        bv,n %r0(%r19)
        .EXIT
        .PROCEND

_______________________________________________
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to