Skip to content
  • Sergei Trofimovich's avatar
    driver: pass '-fPIC' option to all CC invocations · 4d1316a5
    Sergei Trofimovich authored
    
    
    Reported by mitchty:
    
      When porting ghc to alpine linux (rumors say they build
      all binaries as Position Independent Executables
      to leverage global ASLR) linker issued obscure errors:
    
    Tiny example:
        $ echo 'main = print "hello"' > a.hs
        $ ghc -fforce-recomp a.hs -fPIC -dynamic -optl-pie -o a
            ld: /tmp/ghc2142_0/ghc2142_5.o: relocation R_X86_64_32 against `ZCMain_main_closure'
                can not be used when making a shared object; recompile with -fPIC
            /tmp/ghc2142_0/ghc2142_5.o: error adding symbols: Bad value
            collect2: error: ld returned 1 exit status
    
    There is two entry points in CC driver:
        'runPhase' (CC) and 'mkExtraObj'
    
    'mkExtraObj' does not handle most of 'runPhase's complexity.
    Ideally it should.
    
    This patch only adds -fPIC propagation to 'mkExtraObj'.
    
    Please merge to stable branch.
    
    Signed-off-by: default avatarSergei Trofimovich <siarheit@google.com>
    4d1316a5