facebookarchive / BOLT

Binary Optimization and Layout Tool - A linux command-line utility used for optimizing performance of binaries
2.51k stars 176 forks source link

"couldn't properly understand this function" for Haskell (GHC) Hello World #47

Open jberryman opened 5 years ago

jberryman commented 5 years ago
jberryman Code/BOLT-experiments ‹master*› » llvm-bolt --version                                                                                                                                                                                                                                                         130 ↵
LLVM (http://llvm.org/):
  LLVM version 7.0.0svn
  Optimized build.
  Default target: x86_64-unknown-linux-gnu
  Host CPU: ivybridge

BOLT revision f137ed238db11440f03083b1c88b7ffc0f4af65e
  Registered Targets:
    aarch64    - AArch64 (little endian)
    aarch64_be - AArch64 (big endian)
    arm64      - ARM64 (little endian)
    x86        - 32-bit X86: Pentium-Pro and above
    x86-64     - 64-bit X86: EM64T and AMD64

I've just started experimenting with BOLT and was curious if it would work on a haskell binary. I'm building a hello world program with ghc 8.4.3, with ghc --make hello.hs -o hello.

module Main where

main :: IO ()
main = putStrLn "hi"

Using this oneliner to do the perf/BOLT stuff, straight from README:

$ function bolt_stuff(){ perf record -e cycles:u -j any,u -o $1.data -- ./$1 ; perf2bolt -p $1.data -o perf.fdata $1 ; llvm-bolt $1 -o $1.bolt -data=perf.fdata -reorder-blocks=cache+ -reorder-functions=hfsort+ -split-functions=3 -split-all-cold -split-eh -dyno-stats }

Getting this error from llvm-bolt

$ bolt_stuff hello                                                                                                                                                                                                                                                            
hi
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.023 MB hello_plain.data (13 samples) ]
PERF2BOLT: Starting data aggregation job for hello_plain.data
PERF2BOLT: spawning perf job to read branch events
PERF2BOLT: spawning perf job to read mem events
PERF2BOLT: spawning perf job to read process events
PERF2BOLT: spawning perf job to read task events
BOLT-INFO: Target architecture: x86_64
BOLT-INFO: first alloc address is 0x400000
BOLT-INFO: creating new program header table at address 0x600000, offset 0x200000
BOLT-INFO: binary build-id is:     31cbb6046be99aadc42647ab499f7293795b0662
PERF2BOLT: spawning perf job to read buildid list
PERF2BOLT: matched build-id and file name
BOLT-INFO: disabling -align-macro-fusion in non-relocation mode
PERF2BOLT: waiting for perf mmap events collection to finish...
PERF2BOLT: parsing perf-script mmap events output
PERF2BOLT: waiting for perf task events collection to finish...
PERF2BOLT: parsing perf-script task events output
PERF2BOLT: input binary is associated with 1 PID(s)
PERF2BOLT: waiting for perf events collection to finish...
PERF2BOLT: parse branch events...
PERF2BOLT: read 7 samples and 112 LBR entries
PERF2BOLT: 6 samples (46.2%) were ignored
PERF2BOLT: traces mismatching disassembled function contents: 0 (0.0%)
PERF2BOLT: out of range traces involving unknown regions: 86 (81.9%)
BOLT-INFO: forcing -jump-tables=move as PIC jump table was detected in function evacuate/crtstuff.c/1(*2)
PERF2BOLT: processing branch events...
PERF2BOLT: wrote 24 objects and 0 memory objects to perf.fdata
BOLT-INFO: Target architecture: x86_64
BOLT-INFO: first alloc address is 0x400000
BOLT-INFO: creating new program header table at address 0x600000, offset 0x200000
BOLT-INFO: disabling -align-macro-fusion in non-relocation mode
BOLT-WARNING: disabling -split-eh in non-relocation mode
BOLT-INFO: forcing -jump-tables=move as PIC jump table was detected in function evacuate/crtstuff.c/1(*2)
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x406cc8) in function base_ControlziExceptionziBase_zdfShowNonTerminationzuzdcshowsPrec_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x406d40) in function base_ControlziExceptionziBase_zdfExceptionNonTerminationzuzdcshow_info
BOLT-WARNING: unable to disassemble instruction at offset 0x75 (address 0x4070dd) in function base_ControlziExceptionziBase_absentError_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x407218) in function base_ControlziExceptionziBase_zdfExceptionNonTermination4_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x407370) in function base_ControlziExceptionziBase_zdfExceptionNestedAtomically4_info
BOLT-WARNING: unable to disassemble instruction at offset 0x3a (address 0x4074b2) in function base_ControlziExceptionziBase_zdfExceptionNonTerminationzuzdcfromException_info
BOLT-WARNING: unable to disassemble instruction at offset 0x3a (address 0x40773a) in function base_ControlziExceptionziBase_zdfExceptionNestedAtomicallyzuzdcfromException_info
BOLT-WARNING: unable to disassemble instruction at offset 0x20 (address 0x407980) in function base_GHCziBase_eqString_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x407bf0) in function base_GHCziBase_zpzp_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x407db8) in function base_GHCziBase_map_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x4081d8) in function base_GHCziConcziSignal_signalzuhandlers_info
BOLT-WARNING: function base_GHCziConcziIO_ioManagerCapabilitiesChanged_info has an object detected in a padding region at address 0x407f90
BOLT-WARNING: unable to disassemble instruction at offset 0x6d (address 0x408275) in function base_GHCziConcziSignal_setHandler2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x408830) in function base_GHCziConcziSignal_setHandler1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x52 (address 0x409272) in function base_GHCziConcziSignal_runHandlers1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x4095d8) in function base_GHCziConcziSignal_zdwrunHandlersPtr_info
BOLT-WARNING: unable to disassemble instruction at offset 0x28 (address 0x409778) in function base_GHCziConcziSync_runSparkszuloop_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x40a0c8) in function base_GHCziConcziSync_uncaughtExceptionHandler_info
BOLT-WARNING: function base_GHCziConcziSync_always2_info has an object detected in a padding region at address 0x409fc0
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x40a678) in function base_GHCziConcziSync_zdwmodifyMVarzu_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x40ae30) in function base_GHCziConcziSync_zdwwithMVar_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x40b0c8) in function base_GHCziConcziSync_reportStackOverflow1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x40bae0) in function base_GHCziException_zdp1Exception_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x40bb40) in function base_GHCziException_zdp2Exception_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x40bba0) in function base_GHCziException_toException_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x40bc80) in function base_GHCziException_zdwzdcshowsPrec1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x40bd30) in function base_GHCziException_zdfShowErrorCallzuzdcshowsPrec_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x40bda8) in function base_GHCziException_zdfExceptionErrorCallzuzdcshow_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x40be90) in function base_GHCziException_zdfShowErrorCall1_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x40c130) in function base_GHCziException_zdfExceptionErrorCall3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x3a (address 0x40c272) in function base_GHCziException_zdfExceptionErrorCallzuzdcfromException_info
BOLT-WARNING: unable to disassemble instruction at offset 0x5a (address 0x40d0ca) in function base_GHCziException_errorCallWithCallStackException_info
BOLT-WARNING: function base_GHCziForeign_charIsRepresentable3_info has an object detected in a padding region at address 0x40db80
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x40d940) in function base_GHCziForeign_charIsRepresentable3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x42 (address 0x40f022) in function base_GHCziForeign_zdwpeekCString_info
BOLT-WARNING: unable to disassemble instruction at offset 0x42 (address 0x40f0ea) in function base_GHCziForeign_charIsRepresentable2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x40f3f0) in function base_GHCziForeign_charIsRepresentable1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x60 (address 0x40f4f0) in function base_GHCziForeignPtr_mallocPlainForeignPtrBytes2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x60 (address 0x40f580) in function base_GHCziForeignPtr_noMixingError_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x40f740) in function base_GHCziForeignPtr_zdwinsertCFinalizzer_info
BOLT-WARNING: unable to disassemble instruction at offset 0x60 (address 0x40fb08) in function base_GHCziForeignPtr_mallocForeignPtrBytes2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x410068) in function base_GHCziIO_bracket1_info
BOLT-WARNING: unable to disassemble instruction at offset 0xd0 (address 0x410fd0) in function base_GHCziIOziEncoding_getFileSystemEncodingzugo_info
BOLT-WARNING: unable to disassemble instruction at offset 0x75 (address 0x411155) in function base_GHCziIOziEncoding_getFileSystemEncoding6_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x411478) in function base_GHCziIOziEncoding_getFileSystemEncoding5_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x4119f8) in function base_GHCziIOziEncoding_getForeignEncoding3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x411ad0) in function base_GHCziIOziEncoding_getForeignEncoding2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x411bd0) in function base_GHCziIOziEncoding_getForeignEncoding1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x58 (address 0x411c58) in function base_GHCziIOziEncoding_getForeignEncoding_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x411cc8) in function base_GHCziIOziEncoding_initLocaleEncoding1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x411d50) in function base_GHCziIOziEncoding_initLocaleEncoding_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x411e28) in function base_GHCziIOziEncoding_getLocaleEncoding2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x411f28) in function base_GHCziIOziEncoding_getLocaleEncoding1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x3f0 (address 0x412678) in function base_GHCziIOziEncodingziFailure_recoverDecode1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x3a (address 0x412732) in function base_GHCziIOziEncodingziFailure_recoverEncode1_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x412e30) in function base_GHCziIOziEncodingziIconv_iconvEncoding11_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x4132a8) in function base_GHCziIOziEncodingziIconv_localeEncodingName_info
BOLT-WARNING: unable to disassemble instruction at offset 0x90 (address 0x413a40) in function base_GHCziIOziEncodingziIconv_iconvEncoding6_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x414210) in function base_GHCziIOziEncodingziIconv_iconvEncoding18_info
BOLT-WARNING: unable to disassemble instruction at offset 0x120 (address 0x414600) in function base_GHCziIOziEncodingziIconv_iconvEncoding2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x78 (address 0x414830) in function base_GHCziIOziEncodingziLatin1_latin5_info
BOLT-WARNING: unable to disassemble instruction at offset 0x78 (address 0x414ea0) in function base_GHCziIOziEncodingziLatin1_ascii5_info
BOLT-WARNING: unable to disassemble instruction at offset 0x78 (address 0x4155f0) in function base_GHCziIOziEncodingziLatin1_latin3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x78 (address 0x415c60) in function base_GHCziIOziEncodingziLatin1_ascii3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x78 (address 0x416458) in function base_GHCziIOziEncodingziLatin1_latin1zuchecked2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x416f20) in function base_GHCziIOziEncodingziTypes_close_info
BOLT-WARNING: unable to disassemble instruction at offset 0x78 (address 0x417458) in function base_GHCziIOziEncodingziUTF16_mkUTF1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x78 (address 0x418438) in function base_GHCziIOziEncodingziUTF16_mkUTF16le1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x419038) in function base_GHCziIOziEncodingziUTF16_zdwutf16zuencode_info
BOLT-WARNING: unable to disassemble instruction at offset 0x78 (address 0x4197d0) in function base_GHCziIOziEncodingziUTF16_mkUTF3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x78 (address 0x41ae48) in function base_GHCziIOziEncodingziUTF16_mkUTF5_info
BOLT-WARNING: unable to disassemble instruction at offset 0x78 (address 0x41ccd0) in function base_GHCziIOziEncodingziUTF32_mkUTF32le1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x78 (address 0x41dae0) in function base_GHCziIOziEncodingziUTF32_mkUTF1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x208 (address 0x41e9d8) in function base_GHCziIOziEncodingziUTF32_mkUTF3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x208 (address 0x41f6d8) in function base_GHCziIOziEncodingziUTF32_mkUTF5_info
BOLT-WARNING: unable to disassemble instruction at offset 0x4d0 (address 0x4203f8) in function base_GHCziIOziEncodingziUTF32_zdwutf32zudecode_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x420608) in function base_GHCziIOziEncodingziUTF32_zdwutf32zuencode_info
BOLT-WARNING: unable to disassemble instruction at offset 0x2f0 (address 0x421578) in function base_GHCziIOziEncodingziUTF8_mkUTF1_info
BOLT-WARNING: unable to disassemble instruction at offset 0xc88 (address 0x424610) in function base_GHCziIOziEncodingziUTF8_mkUTF4_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x427080) in function base_GHCziIOziEncodingziUTF8_utf2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x4271d0) in function base_GHCziIOziException_zdfShowBlockedIndefinitelyOnMVarzuzdcshowsPrec_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x427248) in function base_GHCziIOziException_zdfExceptionBlockedIndefinitelyOnMVarzuzdcshow_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x4273d0) in function base_GHCziIOziException_zdfShowBlockedIndefinitelyOnSTMzuzdcshowsPrec_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x427448) in function base_GHCziIOziException_zdfExceptionBlockedIndefinitelyOnSTMzuzdcshow_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x4275d0) in function base_GHCziIOziException_zdfShowAllocationLimitExceededzuzdcshowsPrec_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x4276c0) in function base_GHCziIOziException_zdfShowAllocationLimitExceeded1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x427870) in function base_GHCziIOziException_zdfExceptionSomeAsyncExceptionzuzdcshow_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x427908) in function base_GHCziIOziException_zdfShowSomeAsyncExceptionzuzdcshowsPrec_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x4279d8) in function base_GHCziIOziException_zdfShowSomeAsyncException1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x1b0 (address 0x428620) in function base_GHCziIOziException_zdwzdcshowsPrec4_info
BOLT-WARNING: unable to disassemble instruction at offset 0x79 (address 0x428c59) in function base_GHCziIOziException_zdwzdcshowsPrec3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x4b (address 0x428e4b) in function base_GHCziIOziException_zdfExceptionIOExceptionzuzdcshowsPrec_info
BOLT-WARNING: unable to disassemble instruction at offset 0x43 (address 0x428ecb) in function base_GHCziIOziException_zdfExceptionIOExceptionzuzdcshow_info
BOLT-WARNING: unable to disassemble instruction at offset 0x4b (address 0x428f5b) in function base_GHCziIOziException_zdfShowIOException1_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x429100) in function base_GHCziIOziException_zdfExceptionAsyncException9_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x429258) in function base_GHCziIOziException_zdfExceptionBlockedIndefinitelyOnMVar4_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x4293b0) in function base_GHCziIOziException_zdfExceptionBlockedIndefinitelyOnSTM4_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x429508) in function base_GHCziIOziException_zdfExceptionAllocationLimitExceeded3_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x429660) in function base_GHCziIOziException_zdfExceptionCompactionFailed3_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x4297b8) in function base_GHCziIOziException_zdfExceptionSomeAsyncException2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x3a (address 0x4298fa) in function base_GHCziIOziException_zdfExceptionSomeAsyncExceptionzuzdcfromException_info
BOLT-WARNING: unable to disassemble instruction at offset 0x42 (address 0x429aca) in function base_GHCziIOziException_asyncExceptionFromException_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x429f00) in function base_GHCziIOziException_zdfExceptionExitCode5_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x42a0b8) in function base_GHCziIOziException_zdfExceptionIOException5_info
BOLT-WARNING: unable to disassemble instruction at offset 0x3a (address 0x42a1fa) in function base_GHCziIOziException_zdfExceptionIOExceptionzuzdcfromException_info
BOLT-WARNING: unable to disassemble instruction at offset 0x3a (address 0x42a422) in function base_GHCziIOziException_zdfExceptionBlockedIndefinitelyOnMVarzuzdcfromException_info
BOLT-WARNING: unable to disassemble instruction at offset 0x3a (address 0x42a6aa) in function base_GHCziIOziException_zdfExceptionBlockedIndefinitelyOnSTMzuzdcfromException_info
BOLT-WARNING: unable to disassemble instruction at offset 0x3a (address 0x42a992) in function base_GHCziIOziException_zdfExceptionCompactionFailedzuzdcfromException_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x42b290) in function base_GHCziIOziHandleziFD_fdToHandle12_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x42bc98) in function base_GHCziIOziHandleziFD_stderr_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x42beb8) in function base_GHCziIOziHandleziFD_stdout_info
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x42c210) in function base_GHCziIOziHandleziInternals_zdwstreamEncode_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x42c538) in function base_GHCziIOziHandleziInternals_flushWriteBuffer1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x6d (address 0x42c6f5) in function base_GHCziIOziHandleziInternals_decodeByteBuf2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x8a (address 0x42cba2) in function base_GHCziIOziHandleziInternals_mkDuplexHandle9_info
BOLT-WARNING: unable to disassemble instruction at offset 0x68 (address 0x42d650) in function base_GHCziIOziHandleziInternals_zdwwriteCharBuffer_info
BOLT-WARNING: unable to disassemble instruction at offset 0x5a (address 0x42defa) in function base_GHCziIOziHandleziInternals_flushBuffer2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x62 (address 0x42eac2) in function base_GHCziIOziHandleziInternals_zdwdozuoperation_info
BOLT-WARNING: unable to disassemble instruction at offset 0x60 (address 0x42eca0) in function base_GHCziIOziHandleziInternals_zdwwithHandlezq_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x42f7e8) in function base_GHCziIOziHandleziInternals_wantWritableHandle1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x42f878) in function base_GHCziIOziHandleziTypes_outputNL_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x42f8d8) in function base_GHCziIOziHandleziTypes_inputNL_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x42fa78) in function base_GHCziInt_zdfIntegralInt64zuzdctoInteger_info
BOLT-WARNING: unable to disassemble instruction at offset 0x4a (address 0x42fc0a) in function base_GHCziList_splitAtzuzdszdwsplitAtzq_info
BOLT-WARNING: unable to disassemble instruction at offset 0x20 (address 0x42ff58) in function base_GHCziList_elem_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x430060) in function base_GHCziList_reverse1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x4301b8) in function base_GHCziList_zdwspan_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x430348) in function base_GHCziList_filter_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x430520) in function base_GHCziPack_unpackCString_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x4305f0) in function base_GHCziShow_showsPrec_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x430650) in function base_GHCziShow_show_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x430b70) in function base_GHCziShow_showSignedInt_info
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x430ef0) in function base_GHCziShow_showListzuzu_info
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x431020) in function base_GHCziShow_zdfShowZLz2cUZRzuzdsgo1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x78 (address 0x431178) in function base_GHCziShow_zdfShowTrNamezuzdcshowsPrec_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x4311f0) in function base_GHCziShow_zdfShowIntzuzdcshow_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x4312b8) in function base_GHCziShow_zdfShowInt1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x90 (address 0x431688) in function base_GHCziStackziCCS_zdwgo_info
BOLT-WARNING: unable to disassemble instruction at offset 0xa8 (address 0x4319a8) in function base_GHCziStackziTypes_getCallStack_info
BOLT-WARNING: unable to disassemble instruction at offset 0xc0 (address 0x431b40) in function base_GHCziTopHandler_runMainIO2_info
BOLT-WARNING: function base_GHCziTopHandler_flushStdHandles_info has an object detected in a padding region at address 0x4323c0
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x431df0) in function base_GHCziTopHandler_flushStdHandles3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x431ea0) in function base_GHCziTopHandler_flushStdHandles1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x433d10) in function base_GHCziWeak_runFinalizzerBatch1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x434148) in function base_SystemziPosixziInternals_fdFileSizzezupred_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x4344a8) in function base_SystemziPosixziInternals_getEcho3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x434c18) in function base_SystemziPosixziInternals_getEcho2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x435018) in function base_SystemziPosixziInternals_fdStat1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x56 (address 0x4357de) in function base_SystemziPosixziInternals_fdFileSizze1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x435b28) in function base_DataziOldList_prependToAll_info
BOLT-WARNING: unable to disassemble instruction at offset 0xca (address 0x436822) in function base_DataziTypeableziInternal_tcSymbol_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x436bd0) in function base_DataziTypeableziInternal_zdmApp2_info
BOLT-WARNING: unable to disassemble instruction at offset 0xca (address 0x436d3a) in function base_DataziTypeableziInternal_zdmApp5_info
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x437330) in function base_DataziTypeableziInternal_typeRepFingerprint_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x437460) in function base_DataziTypeableziInternal_someTypeRepFingerprint_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x439a90) in function base_DataziTypeableziInternal_zdfShowSomeTypeRepzuzdcshowsPrec_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x439b08) in function base_DataziTypeableziInternal_zdfShowSomeTypeRepzuzdcshow_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x439b90) in function base_DataziTypeableziInternal_zdfShowSomeTypeRep1_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x439d48) in function base_DataziTypeableziInternal_zdmApp3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x28 (address 0x439e78) in function base_DataziTypeableziInternal_zdwgo_info
BOLT-WARNING: unable to disassemble instruction at offset 0x90 (address 0x449d68) in function base_DataziTypeableziInternal_showTypeable_info
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x4509f0) in function base_DataziTypeableziInternal_mkTrApp_info
BOLT-WARNING: unable to disassemble instruction at offset 0x28 (address 0x451c30) in function base_DataziTypeableziInternal_typeRepTyCon_info
BOLT-WARNING: unable to disassemble instruction at offset 0xba (address 0x452cd2) in function base_DataziTypeableziInternal_zdwmkTrCon_info
BOLT-WARNING: unable to disassemble instruction at offset 0x58 (address 0x4536c8) in function base_GHCziEventziInternal_zdwgo1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x4538b0) in function base_GHCziEventziThread_numEnabledEventManagers_info
BOLT-WARNING: function base_GHCziEventziInternal_Forever_con_info has an object detected in a padding region at address 0x4537b8
BOLT-WARNING: unable to disassemble instruction at offset 0x60 (address 0x454370) in function base_GHCziEventziThread_zdwstartIOManagerThread_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x454978) in function base_GHCziEventziThread_timerManagerThreadVar_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x454c00) in function base_GHCziEventziThread_timerManager_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x454ea8) in function base_GHCziEventziThread_ioManagerLock_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x455208) in function base_GHCziEventziThread_eventManager_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x455480) in function base_GHCziEventziThread_ensureIOManagerIsRunning3_info
BOLT-WARNING: unable to disassemble instruction at offset 0xa2 (address 0x45587a) in function base_GHCziEventziThread_ensureIOManagerIsRunning2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x52 (address 0x455bba) in function base_GHCziEventziThread_ensureIOManagerIsRunning6_info
BOLT-WARNING: unable to disassemble instruction at offset 0x118 (address 0x456240) in function base_GHCziEventziThread_zdwioManagerCapabilitiesChanged_info
BOLT-WARNING: function base_GHCziEventziThread_ensureIOManagerIsRunning1_info has an object detected in a padding region at address 0x4560b0
BOLT-WARNING: unable to disassemble instruction at offset 0x3a (address 0x457952) in function base_GHCziEventziThread_getSystemEventManager1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x4a (address 0x459e7a) in function base_GHCziEventziThread_threadWaitRead1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x5a (address 0x45bfe2) in function base_GHCziEventziThread_closeFdWith1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x4a (address 0x45c62a) in function base_GHCziEventziTimerManager_new2_info
BOLT-WARNING: unable to disassemble instruction at offset 0xbd (address 0x45ce55) in function base_GHCziEventziTimerManager_step1_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb0 (address 0x45ddb8) in function base_GHCziEventziTimerManager_zdwloop_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x45e910) in function base_DataziTuple_snd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x45eae0) in function base_ForeignziCziError_zdwerrnoToIOError_info
BOLT-WARNING: unable to disassemble instruction at offset 0x18 (address 0x45eda8) in function base_ForeignziCziError_throwErrnoIfMinus1Retry2_info
BOLT-WARNING: unable to disassemble instruction at offset 0xc0 (address 0x45ef58) in function base_ForeignziCziError_throwErrnoIfMinus1RetryMayBlock2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x9e (address 0x45f0b6) in function base_ForeignziCziString_zdwpeekCAString_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x45f280) in function base_ForeignziStorable_sizzeOf_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x45f2e0) in function base_ForeignziStorable_pokeElemOff_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x45f340) in function base_ForeignziStorable_peek_info
BOLT-WARNING: unable to disassemble instruction at offset 0x6d (address 0x45f4a5) in function base_GHCziArr_negRange_info
BOLT-WARNING: unable to disassemble instruction at offset 0x60 (address 0x45f528) in function base_GHCziArr_arrEleBottom_info
BOLT-WARNING: unable to disassemble instruction at offset 0x78 (address 0x45f980) in function base_GHCziArr_zdwindexError_info
BOLT-WARNING: unable to disassemble instruction at offset 0x75 (address 0x45fb05) in function base_GHCziChar_zdwlvl_info
BOLT-WARNING: unable to disassemble instruction at offset 0x6d (address 0x45fb95) in function base_GHCziEnum_zdfEnumBool1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x45fc38) in function base_GHCziFingerprint_zdwfingerprintData_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x460120) in function base_GHCziFingerprint_fingerprintStringzugo_info
BOLT-WARNING: unable to disassemble instruction at offset 0x20 (address 0x4602a8) in function base_GHCziFingerprint_fingerprintString_info
BOLT-WARNING: unable to disassemble instruction at offset 0x28 (address 0x460450) in function base_GHCziFingerprint_fingerprintFingerprints_info
BOLT-WARNING: unable to disassemble instruction at offset 0x4a (address 0x46068a) in function base_GHCziFingerprintziType_zdWFingerprint_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x460760) in function base_GHCziIOziBufferedIO_newBuffer_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x4607c0) in function base_GHCziIOziBufferedIO_emptyWriteBuffer_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x460820) in function base_GHCziIOziBufferedIO_flushWriteBuffer_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x4608a0) in function base_GHCziIOziDevice_isTerminal_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x460900) in function base_GHCziIOziDevice_isSeekable_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x460960) in function base_GHCziIOziDevice_seek_info
BOLT-WARNING: unable to disassemble instruction at offset 0x78 (address 0x460ad0) in function base_GHCziIOziFD_zdfBufferedIOFD5_info
BOLT-WARNING: unable to disassemble instruction at offset 0x168 (address 0x460fd0) in function base_GHCziIOziFD_zdwreadRawBufferPtrNoBlock_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x461140) in function base_GHCziIOziFD_zdfBufferedIOFD14_info
BOLT-WARNING: unable to disassemble instruction at offset 0xa8 (address 0x461668) in function base_GHCziIOziFD_zdwreadRawBufferPtr_info
BOLT-WARNING: unable to disassemble instruction at offset 0x240 (address 0x4620d8) in function base_GHCziIOziFD_zdwwriteRawBufferPtr_info
BOLT-WARNING: unable to disassemble instruction at offset 0x5a (address 0x46236a) in function base_GHCziIOziFD_zdwfdWrite_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb8 (address 0x462750) in function base_GHCziIOziFD_zdwzdcwriteNonBlocking_info
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x462a50) in function base_GHCziIOziFD_zdfBufferedIOFDzuzdswriteBuf1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x462bb8) in function base_GHCziIOziFD_zdfBufferedIOFD15_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x4630b0) in function base_GHCziIOziFD_zdfIODeviceFD16_info
BOLT-WARNING: unable to disassemble instruction at offset 0x78 (address 0x463268) in function base_GHCziIOziFD_zdwzdctell_info
BOLT-WARNING: unable to disassemble instruction at offset 0x43 (address 0x463313) in function base_GHCziIOziFD_zdfIODeviceFD13_info
BOLT-WARNING: unable to disassemble instruction at offset 0x5d (address 0x46345d) in function base_GHCziIOziFD_zdwzdcseek_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x463628) in function base_GHCziIOziFD_zdfIODeviceFD17_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x463730) in function base_GHCziIOziFD_zdwsetSizze_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb0 (address 0x4638f8) in function base_GHCziIOziFD_zdwzdcfillReadBuffer0_info
BOLT-WARNING: unable to disassemble instruction at offset 0x4a (address 0x463a62) in function base_GHCziIOziFD_zdfBufferedIOFD7_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x463cc0) in function base_GHCziIOziFD_zdwzdcflushWriteBuffer0_info
BOLT-WARNING: unable to disassemble instruction at offset 0x28 (address 0x463db0) in function base_GHCziIOziFD_zdfBufferedIOFD1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x463ef0) in function base_GHCziIOziFD_zdfIODeviceFD21_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x463f90) in function base_GHCziIOziFD_zdfIODeviceFD25_info
BOLT-WARNING: unable to disassemble instruction at offset 0x5a (address 0x4642a2) in function base_GHCziIOziFD_zdwzdcready_info
BOLT-WARNING: unable to disassemble instruction at offset 0x45 (address 0x4643ed) in function base_GHCziIOziFD_zdfIODeviceFD27_info
BOLT-WARNING: unable to disassemble instruction at offset 0x92 (address 0x46457a) in function base_GHCziIOziFD_zdwzdcdup2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x4a (address 0x46462a) in function base_GHCziIOziFD_zdfIODeviceFD1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x72 (address 0x464812) in function base_GHCziIOziFD_zdwzdcdup_info
BOLT-WARNING: function base_GHCziIOziFD_zdfIODeviceFD3_info has an object detected in a padding region at address 0x464933
BOLT-WARNING: unable to disassemble instruction at offset 0x58 (address 0x464a30) in function base_GHCziIOziFD_zdfIODeviceFD6_info
BOLT-WARNING: unable to disassemble instruction at offset 0x58 (address 0x464be0) in function base_GHCziIOziFD_zdfIODeviceFD20_info
BOLT-WARNING: unable to disassemble instruction at offset 0x60 (address 0x464d88) in function base_GHCziIOziFD_zdwclose_info
BOLT-WARNING: unable to disassemble instruction at offset 0x43 (address 0x464e03) in function base_GHCziIOziFD_zdfIODeviceFD26_info
BOLT-WARNING: unable to disassemble instruction at offset 0x68 (address 0x464f00) in function base_GHCziIOziFD_zdwzdcclose_info
BOLT-WARNING: unable to disassemble instruction at offset 0x43 (address 0x464fbb) in function base_GHCziIOziFD_zdfIODeviceFD22_info
BOLT-WARNING: function base_GHCziIOziFD_zdwzdcfillReadBuffer_slow has an object detected in a padding region at address 0x465008
BOLT-WARNING: unable to disassemble instruction at offset 0x68 (address 0x465178) in function base_GHCziIOziFD_zdwzdcfillReadBuffer_info
BOLT-WARNING: unable to disassemble instruction at offset 0x4a (address 0x46528a) in function base_GHCziIOziFD_zdfBufferedIOFD11_info
BOLT-WARNING: unable to disassemble instruction at offset 0x70 (address 0x4659a0) in function base_GHCziIOziHandleziText_hPutStr8_info
BOLT-WARNING: unable to disassemble instruction at offset 0x130 (address 0x4680b8) in function base_GHCziIOziHandleziText_zdwwriteBlocks_info
BOLT-WARNING: unable to disassemble instruction at offset 0x6d (address 0x46b55d) in function base_GHCziIOziHandleziText_hPutStr5_info
BOLT-WARNING: unable to disassemble instruction at offset 0x90 (address 0x46b728) in function base_GHCziIOziHandleziText_hPutStr3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x46bae0) in function base_GHCziIOziHandleziText_hPutStr2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x46be80) in function base_GHCziEventziControl_controlEventFd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x46bf10) in function base_GHCziEventziControl_controlReadFd_info
BOLT-WARNING: unable to disassemble instruction at offset 0xa0 (address 0x46c080) in function base_GHCziEventziControl_closeControl1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x46c350) in function base_GHCziEventziControl_newControl1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x6d (address 0x46ca75) in function base_GHCziEventziControl_readControlMessage4_info
BOLT-WARNING: unable to disassemble instruction at offset 0x81 (address 0x46cc31) in function base_GHCziEventziControl_zdwreadControlMessage_info
BOLT-WARNING: unable to disassemble instruction at offset 0x1b8 (address 0x46d418) in function base_GHCziEventziEPoll_new10_info
BOLT-WARNING: unable to disassemble instruction at offset 0xa0 (address 0x46dec8) in function base_GHCziEventziEPoll_new9_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x46e080) in function base_GHCziEventziEPoll_new5_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x46e2f8) in function base_GHCziEventziEPoll_new4_info
BOLT-WARNING: unable to disassemble instruction at offset 0xb2 (address 0x46e3f2) in function base_GHCziEventziEPoll_zdwzdj_info
BOLT-WARNING: unable to disassemble instruction at offset 0x58 (address 0x46e5c8) in function base_GHCziEventziEPoll_new1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x62 (address 0x46e6b2) in function base_GHCziEventziIntTable_zdwgrow_info
BOLT-WARNING: function base_GHCziEventziIntTable_zdwinsertWith_info has an object detected in a padding region at address 0x46eb30
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x46ef88) in function base_GHCziEventziManager_fdEvents_info
BOLT-WARNING: unable to disassemble instruction at offset 0x28 (address 0x46f0c8) in function base_GHCziEventziManager_cleanup1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x46f7e8) in function base_GHCziEventziManager_zdwxs_info
BOLT-WARNING: function base_GHCziEventziManager_new5_info has an object detected in a padding region at address 0x46f560
BOLT-WARNING: function base_GHCziEventziManager_release2_info has an object detected in a padding region at address 0x46f418
BOLT-WARNING: unable to disassemble instruction at offset 0x132 (address 0x46fb3a) in function base_GHCziEventziManager_new2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x70 (address 0x470198) in function base_GHCziEventziManager_closeFdzu4_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x470248) in function base_GHCziEventziManager_zdweventsOf_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x4703a8) in function base_GHCziEventziManager_closeFdzu3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x68 (address 0x471698) in function base_GHCziEventziManager_loop5_info
BOLT-WARNING: unable to disassemble instruction at offset 0x28 (address 0x471fa8) in function base_GHCziEventziManager_loop3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x60 (address 0x472338) in function base_GHCziEventziManager_loop2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x4723a0) in function base_GHCziEventziManager_loop6_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x4727d8) in function base_GHCziEventziManager_loop1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x472db8) in function base_GHCziEventziManager_zdwcloseFdzu_info
BOLT-WARNING: unable to disassemble instruction at offset 0x5a (address 0x474002) in function base_GHCziEventziManager_unregisterFd2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x4745d8) in function base_GHCziEventziPSQ_adjustzuzdsmerge_info
BOLT-WARNING: unable to disassemble instruction at offset 0x42 (address 0x4759f2) in function base_GHCziEventziPSQ_zdwatMost_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x475d70) in function base_GHCziEventziPoll_zdfStorablePollFd2_info
BOLT-WARNING: unable to disassemble instruction at offset 0x52 (address 0x475e32) in function base_GHCziEventziPoll_zdfStorablePollFd6_info
BOLT-WARNING: unable to disassemble instruction at offset 0x52 (address 0x475f22) in function base_GHCziEventziPoll_zdfStorablePollFd4_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x475ff0) in function base_GHCziEventziPoll_zdfStorablePollFd1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x45 (address 0x4760b5) in function base_GHCziEventziPoll_zdfStorablePollFd5_info
BOLT-WARNING: unable to disassemble instruction at offset 0x45 (address 0x4761ad) in function base_GHCziEventziPoll_zdfStorablePollFd3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x60 (address 0x4762b8) in function base_GHCziEventziPoll_new3_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x476ca0) in function base_GHCziEventziPoll_new5_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x4781f8) in function base_GHCziEventziPoll_new4_info
BOLT-WARNING: unable to disassemble instruction at offset 0x48 (address 0x4782e8) in function base_GHCziEventziPoll_new1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x75 (address 0x47957d) in function base_GHCziEventziArray_zdwlvl_info
BOLT-WARNING: unable to disassemble instruction at offset 0x88 (address 0x479660) in function base_GHCziEventziArray_zdwunsafeWritezq_info
BOLT-WARNING: unable to disassemble instruction at offset 0x60 (address 0x479d18) in function base_GHCziEventziArray_removeAt1_info
BOLT-WARNING: unable to disassemble instruction at offset 0xda (address 0x47a70a) in function base_GHCziEventziArray_zdwsnoc_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x47ac78) in function integerzmgmp_GHCziIntegerziType_integerToInt_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x47ad90) in function integerzmgmp_GHCziIntegerziType_czzeroBigNat_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x47ae78) in function integerzmgmp_GHCziIntegerziType_oneBigNat_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x47af60) in function integerzmgmp_GHCziIntegerziType_zzeroBigNat_info
BOLT-WARNING: unable to disassemble instruction at offset 0x50 (address 0x47b090) in function integerzmgmp_GHCziIntegerziType_wordToInteger_info
BOLT-WARNING: function integerzmgmp_GHCziIntegerziType_BNzh_con_info has an object detected in a padding region at address 0x47b1a8
BOLT-WARNING: function ghczmprim_GHCziCString_unpackCStringzh_info has an object detected in a padding region at address 0x47b338
BOLT-WARNING: function ghczmprim_GHCziCString_unpackAppendCStringzh_info has an object detected in a padding region at address 0x47b588
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x47b880) in function ghczmprim_GHCziClasses_zeze_info
BOLT-WARNING: unable to disassemble instruction at offset 0x20 (address 0x47b8d0) in function ghczmprim_GHCziClasses_zdfEqModulezuzdszdczeze_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x47ba90) in function ghczmprim_GHCziClasses_zdfEqZMZNzuzdszdczsze1_info
BOLT-WARNING: unable to disassemble instruction at offset 0x38 (address 0x48fd20) in function stg_catchzh
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x4901a8) in function stg_sel_0_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x490218) in function stg_sel_1_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x490288) in function stg_sel_2_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x4902f8) in function stg_sel_3_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x490368) in function stg_sel_4_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x4903d8) in function stg_sel_5_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x490448) in function stg_sel_6_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x4904b8) in function stg_sel_7_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x490528) in function stg_sel_8_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x490598) in function stg_sel_9_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x490608) in function stg_sel_10_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x490678) in function stg_sel_11_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x4906e8) in function stg_sel_12_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x490758) in function stg_sel_13_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x4907c8) in function stg_sel_14_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x490838) in function stg_sel_15_upd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x4908a0) in function stg_sel_0_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x490900) in function stg_sel_1_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x490960) in function stg_sel_2_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x4909c0) in function stg_sel_3_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x490a20) in function stg_sel_4_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x490a80) in function stg_sel_5_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x490ae0) in function stg_sel_6_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x490b40) in function stg_sel_7_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x490ba0) in function stg_sel_8_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x490c00) in function stg_sel_9_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x490c60) in function stg_sel_10_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x490cc0) in function stg_sel_11_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x490d20) in function stg_sel_12_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x490d80) in function stg_sel_13_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x490de0) in function stg_sel_14_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x490e40) in function stg_sel_15_noupd_info
BOLT-WARNING: unable to disassemble instruction at offset 0x2e (address 0x4912ae) in function stg_gc_prim
BOLT-WARNING: unable to disassemble instruction at offset 0x20 (address 0x4912d8) in function stg_gc_prim_p
BOLT-WARNING: unable to disassemble instruction at offset 0x28 (address 0x491320) in function stg_gc_prim_pp
BOLT-WARNING: unable to disassemble instruction at offset 0x3a (address 0x49137a) in function stg_gc_prim_n
BOLT-WARNING: unable to disassemble instruction at offset 0x28 (address 0x491518) in function stg_gc_pp
BOLT-WARNING: unable to disassemble instruction at offset 0x28 (address 0x491558) in function stg_gc_ppp
BOLT-WARNING: unable to disassemble instruction at offset 0x30 (address 0x4915a8) in function stg_gc_pppp
BOLT-WARNING: unable to disassemble instruction at offset 0xaa (address 0x491b1a) in function stg_newAlignedPinnedByteArrayzh
BOLT-WARNING: unable to disassemble instruction at offset 0x40 (address 0x491bd0) in function stg_resizzeMutableByteArrayzh
BOLT-WARNING: unable to disassemble instruction at offset 0xb2 (address 0x491cca) in function stg_newArrayzh
BOLT-WARNING: unable to disassemble instruction at offset 0xd6 (address 0x49220e) in function stg_cloneArrayzh
BOLT-WARNING: unable to disassemble instruction at offset 0xd6 (address 0x49231e) in function stg_cloneMutableArrayzh
BOLT-WARNING: unable to disassemble instruction at offset 0xd6 (address 0x49242e) in function stg_freezzeArrayzh
BOLT-WARNING: unable to disassemble instruction at offset 0xd6 (address 0x49253e) in function stg_thawArrayzh
BOLT-WARNING: unable to disassemble instruction at offset 0x92 (address 0x492712) in function stg_newSmallArrayzh
BOLT-WARNING: unable to disassemble instruction at offset 0xb6 (address 0x4928c6) in function stg_cloneSmallArrayzh
BOLT-WARNING: unable to disassemble instruction at offset 0xb6 (address 0x4929b6) in function stg_cloneSmallMutableArrayzh
BOLT-WARNING: unable to disassemble instruction at offset 0xb6 (address 0x492aa6) in function stg_freezzeSmallArrayzh
BOLT-WARNING: unable to disassemble instruction at offset 0xb6 (address 0x492b96) in function stg_thawSmallArrayzh
BOLT-WARNING: unable to disassemble instruction at offset 0x80 (address 0x492db8) in function stg_atomicModifyMutVarzh
BOLT-WARNING: unable to disassemble instruction at offset 0x60 (address 0x492e60) in function stg_mkWeakzh
BOLT-WARNING: unable to disassemble instruction at offset 0xd0 (address 0x492f90) in function stg_addCFinalizzerToWeakzh
BOLT-WARNING: unable to disassemble instruction at offset 0xb2 (address 0x493362) in function stg_forkOnzh
BOLT-WARNING: unable to disassemble instruction at offset 0xa0 (address 0x493820) in function stg_atomicallyzh
BOLT-WARNING: unable to disassemble instruction at offset 0x58 (address 0x4938e8) in function stg_catchSTMzh
BOLT-WARNING: unable to disassemble instruction at offset 0x90 (address 0x4939b0) in function stg_catchRetryzh
BOLT-WARNING: unable to disassemble instruction at offset 0x7e (address 0x49466e) in function stg_makeStableNamezh
BOLT-WARNING: unable to disassemble instruction at offset 0x70 (address 0x494740) in function stg_newBCOzh
BOLT-ERROR: cannot find BB containing branch destination.
=======================================
BOLT is unable to proceed because it couldn't properly understand this function.
If you are running the most recent version of BOLT, you may want to report this and paste this dump.
Please check that there is no sensitive contents being shared in this dump.

Offending function: base_ControlziExceptionziBase_zdfShowNonTermination1_info

Function contents (
  0000: 488D45F0 4C39F872 1A48C745 F0C06D40  |H.E.L9.r.H.E..m@|
  0010: 004C89F3 488975F8 4883C5F0 F6C30775  |.L..H.u.H......u|
  0020: 27FF23BB C0C34B00 41FF65F8 0F1F4000  |'.#...K.A.e...@.|
  0030: 482C0B00 00000000 01000000 00000000  |H,..............|
  0040: 1E000000 01000000 488B7508 41BE80C3  |........H.u.A...|
  0050: 4B004883 C510E9DD 0D0000             |K.H........|
)

Binary Function "base_ControlziExceptionziBase_zdfShowNonTermination1_info"  {
  Number      : 33
  State       : disassembled
  Address     : 0x406d78
  Size        : 0x5b
  MaxSize     : 0x80
  Offset      : 0x6d78
  Section     : .text
  Orc Section : .local.text.base_ControlziExceptionziBase_zdfShowNonTermination1_info
  LSDA        : 0x0
  IsSimple    : 1
  IsSplit     : 0
  BB Count    : 6
}
DWARF CFI Instructions:
    <empty>
End of Function "base_ControlziExceptionziBase_zdfShowNonTermination1_info"

ERROR: disassembly failed - inconsistent branch found.
=======================================

I get basically identical errors when compiled with the LLVM backend (with ghc --make -fllvm...).

Let me know if I can help debug.

maksfb commented 5 years ago

I don't have an experience with GHC, and I don't have an access to version 8.4.3. However, I tried 7.6.3 with the "Hello World" program, and although BOLT processes the binary, the resulting executable segfaults. It appears there are multiple custom control transfer tables that are embedded into the code, and they are unmarked in the symbol table. stg_ap_p_fast is once instance of a function that uses such tables. Again, I'm unfamiliar with GHC, and cannot know what is the purpose of this function.

In general, since GHC uses non-standard code sequences involving indirect jumps, it will require a special support in BOLT. How important is this for you? Do you have a large performance-critical application written in Haskell?

jberryman commented 5 years ago

Cool, I appreciate you trying it out!

I'm out of my depth here but certainly not surprised that BOLT doesn't work on GHC code as I know it's not a platform you test against.

How important is this for you? Do you have a large performance-critical application written in Haskell?

Difficult question! I'm trying out BOLT because I'm curious and wanted to see what would happen and if I could write a blog post about it (though I do write a lot of haskell for a living, some of which needs to be tuned or carefully tested for performance).

But I have real reasons to be interested in BOLT (or similar tools... I don't honestly have a great sense of what BOLT does besides reorder blocks for better locality) vis a vis GHC/haskell:

If you are asking whether I'd be interested in contributing time or money the answer is I probably don't have the knowledge to do that at this point. I might be able to help coordinate or shepherd a GHC ticket, if something could be done on that end

maksfb commented 5 years ago

I see. From what I can tell there's a lot performance to be gained from improving the existing backend/runtime. BOLT can still help if the resulting code is large and causes a significant amount of instruction cache and TLB misses. On Linux you can measure those running the application under perf -e instructions,L1-icache-misses -- <your app with options>. If you end up with under 5 misses per a thousand instructions, then it's better to look at other options to improve the code. Compute-heavy applications, for example, spend most of their time in loops and are not great candidates for code layout optimizations provided by BOLT.