• Sergei Trofimovich's avatar
    powerpc: add basic support for PLT relocations (#10402) · c0847967
    Sergei Trofimovich authored
    Commit a93ab43a
    enabled support for proper PIC relocations from
    assembler.
    
    Commit adds support for relocations of type:
        R_PPC_REL16_HI
        R_PPC_REL16_HA
        R_PPC_REL16_LO
        R_PPC_PLTREL24
    
    They are used only when GHC is built in
        DYNAMIC_GHC_PROGRAMS = NO
    mode.
    
    Verified by running the following test:
    
        // cat a.c
        #include <stdio.h>
    
        void ffi_a_hello (int i) {
            fprintf (stderr, "WEEEEEEEE: i=%d\n", i);
        }
    
        -- cat A.hs
        {-# LANGUAGE ForeignFunctionInterface #-}
        module A where
    
        import Foreign.C
    
        foreign import ccall "ffi_a_hello" a :: CInt -> IO ()
    
        # ghc -fPIC -c a.c -fforce-recomp
        # ghc -fPIC -c A.hs -fforce-recomp
        # ghc --interactive ./a.o A
        ...
        *A> a 42
        WEEEEEEEE: i=42
    See gory details in Trac #10402.
    Signed-off-by: default avatarColin Watson <cjwatson@debian.org>
    Signed-off-by: default avatarSergei Trofimovich <siarheit@google.com>
    
    Reviewed By: bgamari, austin
    
    Differential Revision: https://phabricator.haskell.org/D996
    
    GHC Trac Issues: #10402
    c0847967
Linker.c 273 KB