RTS linker refactoring

Ben Gamari ben at well-typed.com
Tue Dec 8 14:28:31 UTC 2015


Sylvain Henry <hsyl20 at gmail.com> writes:

> Hi devs,
>
> I have made a patch to refactor the RTS linker, especially to drastically
> reduce its memory usage: https://phabricator.haskell.org/D1470
>
> We need to test it on differrent OS/architectures before it can be merged.
> Here is the current state:
>  - Linux/x86-64: OK (Harbormaster and I)
>  - Solaris/x86-64: was OK, maybe needs to be retested (@kgardas)
>  - OpenBSD/x86-64: was OK, maybe needs to be tetested (@kgardas)
>  - Solaris/i386: was failing with unrelated error, needs to be retested
> (@kgardas)
>  - Linux/PowerPC: OK (@erikd)
>  - Linux/ARM: was failing with unrelated #11123 (@erikd), OK? (@bgamari)

Unfortunately my ARM box crashed hard during the build for unrelated
reasons (I believe). I'll give it another shot.

>  - Windows: ?

This failed validation on mingw64 with a few warnings,

    rts\Linker.c: In function 'mkOc':

    rts\Linker.c:2048:32: error:
        error: implicit declaration of function 'strdup_' [-Werror=implicit-function-declaration]
                oc->archiveMemberName = strdup_(archiveMemberName);
                                        ^

    rts\Linker.c:2048:8: error:
        error: nested extern declaration of 'strdup_' [-Werror=nested-externs]
                oc->archiveMemberName = strdup_(archiveMemberName);
                ^

    rts\Linker.c:2048:30: error:
        error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
                oc->archiveMemberName = strdup_(archiveMemberName);
                                      ^
    rts\Linker.c: At top level:

    rts\Linker.c:3113:7: error:
        error: unknown type name 'UInt8'
              UInt8  MajorLinkerVersion;
              ^

    rts\Linker.c:3114:7: error:
        error: unknown type name 'UInt8'
              UInt8  MinorLinkerVersion;
              ^
    rts\Linker.c: In function 'ocAllocateSymbolExtras_PEi386':

    rts\Linker.c:4000:38: error:
        error: 'ObjectCode {aka struct _ObjectCode}' has no member named 'fileSize'
                  + ((PEi386_IMAGE_OFFSET + oc->fileSize + 0x7) & ~0x7));
                                              ^
    rts\Linker.c: At top level:

    rts\Linker.c:1796:15: error:
        error: 'allocMem' defined but not used [-Werror=unused-function]
        static void * allocMem(StgWord size, StgWord alignment,


>  - MacOS: ?

This is running.

>  - ia64: ?
>
> I don't have access to Windows and Mac OS boxes so I don't even know if it
> compiles there. Could someone test it (validate) on these OSes and report
> any issue they encounter to me (by mail or on phabricator)?
>
> Do we support ia64 architecture?
>
It worked once. It's now a second tier platform at best. If someone
steps up they can fix the pieces.

Cheers,

- Ben

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 472 bytes
Desc: not available
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20151208/35b20725/attachment.sig>


More information about the ghc-devs mailing list