`-finfo-table-map` breaks profiled ghc builds.
When using -finfo-table-map
for a profiled build I get these linker errors on master e58d5eeb
Call hs_init_ghc() from your main() function to set these options.
/usr/bin/ld: _prof/stage1/rts/build/cmm/Compact.l_dyn_o:(.init_array+0x0): multiple definition of `rts_Cmmzdghczu1zicmm_init_arr'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.init_array+0x0): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/Compact.l_dyn_o: in function `rts_Cmmzdghczu1zicmm_init__ip_init':
(.text+0xd10): multiple definition of `rts_Cmmzdghczu1zicmm_init__ip_init'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.text+0x490): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/Exception.l_dyn_o:(.init_array+0x0): multiple definition of `rts_Cmmzdghczu1zicmm_init_arr'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.init_array+0x0): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/Exception.l_dyn_o: in function `rts_Cmmzdghczu1zicmm_init__ip_init':
(.text+0xb30): multiple definition of `rts_Cmmzdghczu1zicmm_init__ip_init'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.text+0x490): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/HeapStackCheck.l_dyn_o:(.init_array+0x0): multiple definition of `rts_Cmmzdghczu1zicmm_init_arr'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.init_array+0x0): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/HeapStackCheck.l_dyn_o: in function `rts_Cmmzdghczu1zicmm_init__ip_init':
(.text+0x9a0): multiple definition of `rts_Cmmzdghczu1zicmm_init__ip_init'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.text+0x490): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/PrimOps.l_dyn_o:(.init_array+0x0): multiple definition of `rts_Cmmzdghczu1zicmm_init_arr'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.init_array+0x0): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/PrimOps.l_dyn_o: in function `rts_Cmmzdghczu1zicmm_init__ip_init':
(.text+0x3840): multiple definition of `rts_Cmmzdghczu1zicmm_init__ip_init'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.text+0x490): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/StgMiscClosures.l_dyn_o:(.init_array+0x0): multiple definition of `rts_Cmmzdghczu1zicmm_init_arr'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.init_array+0x0): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/StgMiscClosures.l_dyn_o: in function `rts_Cmmzdghczu1zicmm_init__ip_init':
(.text+0x1c50): multiple definition of `rts_Cmmzdghczu1zicmm_init__ip_init'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.text+0x490): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/StgStartup.l_dyn_o:(.init_array+0x0): multiple definition of `rts_Cmmzdghczu1zicmm_init_arr'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.init_array+0x0): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/StgStartup.l_dyn_o: in function `rts_Cmmzdghczu1zicmm_init__ip_init':
(.text+0x270): multiple definition of `rts_Cmmzdghczu1zicmm_init__ip_init'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.text+0x490): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/StgStdThunks.l_dyn_o:(.init_array+0x0): multiple definition of `rts_Cmmzdghczu1zicmm_init_arr'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.init_array+0x0): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/StgStdThunks.l_dyn_o: in function `rts_Cmmzdghczu1zicmm_init__ip_init':
(.text+0x1010): multiple definition of `rts_Cmmzdghczu1zicmm_init__ip_init'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.text+0x490): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/Updates.l_dyn_o:(.init_array+0x0): multiple definition of `rts_Cmmzdghczu1zicmm_init_arr'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.init_array+0x0): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/Updates.l_dyn_o: in function `rts_Cmmzdghczu1zicmm_init__ip_init':
(.text+0x200): multiple definition of `rts_Cmmzdghczu1zicmm_init__ip_init'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.text+0x490): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/AutoApply.l_dyn_o:(.init_array+0x0): multiple definition of `rts_Cmmzdghczu1zicmm_init_arr'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.init_array+0x0): first defined here
/usr/bin/ld: _prof/stage1/rts/build/cmm/AutoApply.l_dyn_o: in function `rts_Cmmzdghczu1zicmm_init__ip_init':
(.text+0x5050): multiple definition of `rts_Cmmzdghczu1zicmm_init__ip_init'; _prof/stage1/rts/build/cmm/Apply.l_dyn_o:(.text+0x490): first defined here
collect2: error: ld returned 1 exit status
`gcc' failed in phase `Linker'. (Exit code: 1)
To reproduce this build a profiled ghc: hadrian/build --flavour=default+profiled_ghc+no_dynamic_ghc -o_prof -j6
with these hadrian.settings: stage1.*.ghc.hs.opts += -ddump-prep -ddump-to-file -fforce-recomp -ddump-cmm -ddump-asm -ddump-stg-final -ddump-stg-cg -finfo-table-map -fdistinct-constructor-tables
@mpickering Maybe you have an idea.