
#12935: Object code produced by GHC is non-deterministic -------------------------------------+------------------------------------- Reporter: bgamari | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by nh2): I have attached some files, `objdump-headers-1.txt` and `objdump- headers-1.txt` which are the outputs of `objdump --all-headers Example.o` as produced by `ghc --make -j1` of a project of mine. Have a look at them in a diff viewer. At the top you will find probably what was talked about before: Uniques making it into symbol names, like `cZoQ_info` vs `cQJU_info`. But further down you see {{{ 0000000000002f10 R_X86_64_PC32 .data.rel.ro+0x00000000000000e8 }}} vs {{{ 0000000000002f10 R_X86_64_PC32 .data.rel.ro+0x00000000000000f0 }}} which is the result of some values in the `RELOCATION RECORDS FOR [.data.rel.ro]` having their positions swapped: {{{ 0000000000000100 R_X86_64_64 monozmtraversablezm1zi0zi2zi1zm4aNtRX1lKHJF1rNRp4LmtV_DataziMonoTraversable_zdfMonoFoldableZMZN_closure 0000000000000108 R_X86_64_64 monozmtraversablezm1zi0zi2zi1zm4aNtRX1lKHJF1rNRp4LmtV_DataziMonoTraversableziUnprefixed_any_closure }}} vs {{{ 0000000000000100 R_X86_64_64 monozmtraversablezm1zi0zi2zi1zm4aNtRX1lKHJF1rNRp4LmtV_DataziMonoTraversableziUnprefixed_any_closure 0000000000000108 R_X86_64_64 monozmtraversablezm1zi0zi2zi1zm4aNtRX1lKHJF1rNRp4LmtV_DataziMonoTraversable_zdfMonoFoldableZMZN_closure }}} These are the same things, they have exactly the same symbol names, just their order swapped. How might this happen? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12935#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler