#15847: GHCi cannot load .o built from c with -fPIC on i386 linux -------------------------------------+------------------------------------- Reporter: watashi | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Runtime | Version: 8.7 System (Linker) | Keywords: | Operating System: Linux Architecture: x86 | Type of failure: None/Unknown Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- GHCi cannot load .o built from c with -fPIC on i386 linux. On i386 linux, the PIC object code looks like: {{{ 000001ac <hs_remWord64>: 1ac: 53 push %ebx 1ad: 83 ec 08 sub $0x8,%esp 1b0: e8 fc ff ff ff call 1b1 <hs_remWord64+0x5> 1b1: R_386_PC32 __x86.get_pc_thunk.bx 1b5: 81 c3 02 00 00 00 add $0x2,%ebx 1b7: R_386_GOTPC _GLOBAL_OFFSET_TABLE_ 1bb: ff 74 24 1c pushl 0x1c(%esp) 1bf: ff 74 24 1c pushl 0x1c(%esp) 1c3: ff 74 24 1c pushl 0x1c(%esp) 1c7: ff 74 24 1c pushl 0x1c(%esp) 1cb: e8 fc ff ff ff call 1cc <hs_remWord64+0x20> 1cc: R_386_PLT32 __umoddi3 1d0: 83 c4 18 add $0x18,%esp 1d3: 5b pop %ebx 1d4: c3 ret }}} 1. the GOT symbol `_GLOBAL_OFFSET_TABLE_` may be undefined 2. the runtime linker doesn't support PIC-related i386 relocations like `R_386_GOTPC` or `R_386_PLT32` As a result, we will see errors like `unknown symbol '_GLOBAL_OFFSET_TABLE_'` or `unhandled ELF relocation`. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15847> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler