Explicitly pass -fno-PIC to C compiler on linux

Authored by watashi on Dec 11 2018, 12:49 PM.

Description

Explicitly pass -fno-PIC to C compiler on linux

Recent gcc on some linux ditributions may have -fPIC on by default

$ uname -a
Linux watashi-arch32 4.18.5-arch1-1.0-ARCH #1 SMP PREEMPT Tue Aug 28
20:45:30 CEST 2018 i686 GNU/Linux
$ gcc --version
gcc (GCC) 7.3.1 20180312
$ touch dummy.c
$ gcc -Q -v dummy.c 2>&1 | grep PIC
options enabled:  -fPIC -fPIE -faggressive-loop-optimizations

This results in following error for i686:

$ TEST=T13366 make test
...
c-iserv.bin:
/home/watashi/github/ghc/libraries/ghc-prim/dist-install/build/HSghc-pri
m-0.5.3.o:
unknown symbol `_GLOBAL_OFFSET_TABLE_'
ghc-stage2: unable to load package `ghc-prim-0.5.3'
...

As our runtime linker doesn't support R_386_GOTPC relocations at all
(Trac #15847).
Also while we don't have such problem on x86_64, it's not desired to
build PIC objects either.

Test Plan: TEST=T13366 make test passed on
rGHC82a716431cc6: Revert "Add a RTS option -xp to load PIC object anywhere in address space"

Reviewers: simonmar, bgamari, austin

Reviewed By: simonmar

Subscribers: rwbarton, carter

GHC Trac Issues: Trac #15848

Differential Revision: https://phabricator.haskell.org/D5288

Details

Committed
bgamariDec 11 2018, 5:04 PM
Reviewer
simonmar
Differential Revision
D5288: Explicitly pass -fno-PIC to C compiler on linux
Parents
rGHC18b74cdbbfa0: testsuite: Add tests for #15270
Branches
Unknown
Tags
Unknown