h&?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred '()2>? Jghc-debug-commonA bitmap that records whether each field of a stack frame is a pointer.ighc-debug-commonCheck if the ClosurePtr is block allocated or not TODO: MP: These numbers are hard-coded from what mblock_address_space.begin and mblock_address_space.end were when I inspected them in gdb. I don't know if they are always the same of should be queried from the debuggeewghc-debug-common?9ghc-debug-common Package nameghc-debug-common Module nameghc-debug-commonConstructor nameghc-debug-common2Information needed to decode a set of stack framesghc-debug-commonThis is the representation of a Haskell value on the heap. It reflects https://gitlab.haskell.org/ghc/ghc/blob/master/includes/rts/storage/Closures.hThe data type is parametrized by 4 type parameters which correspond to different pointer types.All Heap objects have the same basic layout. A header containing a pointer to the info table and a payload with various fields. The info field below always refers to the info table pointed to by the header. The remaining fields are the payload.See  https://gitlab.haskell.org/ghc/ghc/wikis/commentary/rts/storage/heap-objects for more information.ghc-debug-commonA data constructorghc-debug-common A functionghc-debug-common8A thunk, an expression not obviously in head normal formghc-debug-common3A thunk which performs a simple selection operationghc-debug-common#An unsaturated function applicationghc-debug-commonA function applicationghc-debug-commonA suspended thunk evaluationghc-debug-commonA pointer to another closure, introduced when a thunk is updated to point at its valueghc-debug-commonA byte-code object (BCO) which can be interpreted by GHC's byte-code interpreter (e.g. as used by GHCi)ghc-debug-common*A thunk under evaluation by another threadghc-debug-commonA  ByteArray#ghc-debug-commonA MutableByteArray# ghc-debug-commonA SmallMutableArray#ghc-debug-commonAn MVar#7, with a queue of thread state objects blocking on themghc-debug-commonA MutVar#ghc-debug-commonAn STM blocking queue.ghc-debug-commonAnother kind of closureghc-debug-commonPointer argumentsghc-debug-commonNon-pointer argumentsghc-debug-common,Pointer to the object being selected fromghc-debug-common Arity of the partial applicationghc-debug-commonSize of the payload in wordsghc-debug-common Pointer to a ghc-debug-common(Sequence of already applied argumentsghc-debug-common(Sequence of already applied argumentsghc-debug-commonStack right before suspensionghc-debug-commonTarget closureghc-debug-common+A pointer to an ArrWords of instructionsghc-debug-common'A pointer to an ArrWords of literalsghc-debug-common0A pointer to an ArrWords of byte code objectsghc-debug-commonThe size of this BCO in wordsghc-debug-commonAn StgLargeBitmap describing the pointerhood of its args/free varsghc-debug-commonSize of array in bytesghc-debug-common Array payloadghc-debug-commonNumber of pointersghc-debug-common ?? Closures.h vs ClosureMacros.hghc-debug-common!Array payload Card table ignoredghc-debug-commonPointer to head of queueghc-debug-commonPointer to tail of queueghc-debug-commonPointer to closureghc-debug-commonPointer to contentsghc-debug-common?? Here so it looks like an INDghc-debug-commonThe blackhole closureghc-debug-commonThe owning thread state objectghc-debug-common??ghc-debug-commonstackobj from StgTSOghc-debug-commonstack size in *words*ghc-debug-commonnon-zero => dirtyghc-debug-common2next weak pointer for the capability, can be NULL.ghc-debug-commonExclusive sizeghc-debug-common*Information needed to decode a PAP payloadghc-debug-commonInformation needed to decode a ID6HGFECBA@?>=<;:987543210/.-,+*)('&%$#"!  ID6HGFECBA@?>=<;:987543210/.-,+*)('&%$#"!   Safe-Inferred $%&'2789%Nghc-debug-common8The whole graph. The suggested interface is to only use , as the internal representation may change. Nevertheless, we export it here: Sometimes the user knows better what he needs than we do.ghc-debug-commonFor heap graphs, i.e. data structures that also represent sharing and cyclic structures, these are the entries. If the referenced value is Nothing, then we do not have that value in the map, most likely due to exceeding the recursion bound passed to .Besides a pointer to the stored value and the closure representation we have a slot for arbitrary data, for the user's convenience.ghc-debug-common Creates a  for the value in the box, but not recursing further than the given limit.ghc-debug-common Creates a  for the values in multiple boxes, but not recursing further than the given limit.ghc-debug-commonAdds the given annotation to the entry at the given index, using the  operation of its  instance.ghc-debug-commonPretty-prints a HeapGraph. The resulting string contains newlines. Example for "let s = "Ki" in (s, s, cycle "Ho"): 9let x1 = "Ki" x6 = C# 'H' : C# 'o' : x6 in (x1,x1,x6)ghc-debug-commonIn the given HeapMap, list all indices that are used more than once. The second parameter adds external references, commonly [heapGraphRoot].ghc-debug-commonA pretty-printer that tries to generate valid Haskell for evalutated data. It assumes that for the included boxes, you already replaced them by Strings using   or, if you need to do IO,  .The parameter gives the precedendence, to avoid avoidable parenthesises.ghc-debug-commonThe value to start withghc-debug-common*Starting values with associated data entry Safe-Inferred2&&ghc-debug-common(Convert a GenClosure from ghc-heap to a ,None 2'ghc-debug-commonAllow access directly to the chunk of memory used by a bytestringghc-debug-commonAllocate a bytestring directly into memory and return a pointer to the allocated buffer Safe-Inferred!()24:>-ghc-debug-commonA request sent from the debugger to the debuggee parametrized on the result type.ghc-debug-commonRequest protocol versionghc-debug-commonPause the debuggee.ghc-debug-commonResume the debuggee.ghc-debug-common%Request the debuggee's root pointers.ghc-debug-commonRequest a closureghc-debug-commonRequest an info tableghc-debug-commonWait for the debuggee to pause itself and then execute an action. It currently impossible to resume after a pause caused by a poll.ghc-debug-commonA client can save objects by calling a special RTS method This function returns the closures it saved.ghc-debug-commonRequest the pointer bitmap for a stack frame at a given offset from a StackPtr.ghc-debug-commonDecode the bitmap contained in a StgFunInfoTable Used by PAP and AP closure types.ghc-debug-commonRequest the constructor description for an info table. The info table must be from a ghc-debug-common*Lookup source information of an info tableghc-debug-common(Copy all blocks from the process at onceghc-debug-common3Request the block which contains a specific pointerghc-debug-commonThe decision about whether to fork the running process or pause it running whilst we are debugging it.ghc-debug-commonWhether a request mutates the debuggee state, don't cache these onesghc-debug-commonRequests which will always answer the same. For example, info tables are immutable and so requesting an info table will always result in the same value and is safe to cache across pause lines.ghc-debug-commonPerform a requestID6HGFECBA@?>=<;:987543210/.-,+*)('&%$#"!  JKLMNOPQRSTUVWX\YZ[]^_`abcdefghijklmnopqrstuvwxyID6HGFECBA@?>=<;:987543210/.-,+*)('&%$#"!   Safe-Inferred21Ighc-debug-common0How to decode the info table for the stack frameghc-debug-common>How to decode the bitmap for the stack frame at a given offset                    ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U VWWXXYYZZ[[\\]]^_``^abcdefghijklmnopqrstuvwxyz{|}~ ghc-debug-common-0.1.0.0-inplaceGHC.Debug.Types.ClosuresGHC.Debug.Types.PtrGHC.Debug.Types.GraphGHC.Debug.Decode.ConvertGHC.Debug.DecodeGHC.Debug.TypesGHC.Debug.Decode.Stack Data.FoldablemapmapMghc-heap-9.2.0.20210608GHC.Exts.Heap.InfoTable.Typestipesrtlenptrsnptrsentrycode StgInfoTableGHC.Exts.Heap.ClosureTypes WHITEHOLEWEAK UPDATE_FRAMEUNDERFLOW_FRAMETVARTSO TREC_CHUNK THUNK_STATICTHUNK_SELECTOR THUNK_2_0 THUNK_1_1 THUNK_1_0 THUNK_0_2 THUNK_0_1THUNK STOP_FRAMESTACKSMALL_MUT_ARR_PTRS_FROZEN_DIRTYSMALL_MUT_ARR_PTRS_FROZEN_CLEANSMALL_MUT_ARR_PTRS_DIRTYSMALL_MUT_ARR_PTRS_CLEAN RET_SMALLRET_FUNRET_BIGRET_BCOPRIMPAPN_CLOSURE_TYPES MVAR_DIRTY MVAR_CLEAN MUT_VAR_DIRTY MUT_VAR_CLEANMUT_PRIMMUT_ARR_PTRS_FROZEN_DIRTYMUT_ARR_PTRS_FROZEN_CLEANMUT_ARR_PTRS_DIRTYMUT_ARR_PTRS_CLEANINVALID_OBJECT IND_STATICIND FUN_STATICFUN_2_0FUN_1_1FUN_1_0FUN_0_2FUN_0_1FUN CONSTR_NOCAF CONSTR_2_0 CONSTR_1_1 CONSTR_1_0 CONSTR_0_2 CONSTR_0_1CONSTRCOMPACT_NFDATACATCH_STM_FRAMECATCH_RETRY_FRAME CATCH_FRAMEBLOCKING_QUEUE BLACKHOLEBCOATOMICALLY_FRAME ARR_WORDSAP_STACKAP ClosureType PtrBitmapRawBlockBlockPtrRawStack RawClosure RawInfoTableStackPtr ClosurePtrUntaggedClosurePtr InfoTablePtr prettyPrinttablesNextToCode profiling mkClosurePtrsubtractBlockPtrsubtractStackPtr addStackPtrrawClosureSizecalculateStackLenprintBS printStack arrWordsBS heapAlloced rawStackSize blockMBlockapplyMBlockMaskapplyBlockMaskgetBlockOffset mblockMaxSize blockMaxSize mblockMask blockMask isPinnedBlock isLargeBlock rawBlockSize rawBlockAddrextractFromBlock getInfoTblPtrtraversePtrBitmap$fShowClosurePtr$fOrdClosurePtr$fBinaryClosurePtr$fBinaryRawClosure$fBinaryRawBlock$fBinaryPtrBitmap$fShowPtrBitmap$fShowRawBlock $fEqBlockPtr $fOrdBlockPtr$fHashableBlockPtr$fBinaryBlockPtr$fShowBlockPtr$fEqRawPayload$fOrdRawPayload$fShowRawPayload $fEqRawStack $fOrdRawStack$fShowRawStack$fEqRawClosure$fOrdRawClosure$fShowRawClosure$fEqRawInfoTable$fOrdRawInfoTable$fShowRawInfoTable$fBinaryRawInfoTable$fShowStringPtr $fEqStackPtr $fOrdStackPtr$fHashableStackPtr$fShowStackPtr$fBinaryStackPtr$fEqInfoTablePtr$fOrdInfoTablePtr$fHashableInfoTablePtr$fShowInfoTablePtr$fBinaryInfoTablePtr$fEqClosurePtr$fHashableClosurePtr FieldValueSPtrSNonPtrQuadtraversable quadtraverse ConstrDescpkgmodlnameDebugStackFrame frame_infovaluesGenStackFrames getFrames StackFrames StackCont PapPayload GenPapPayload getValues TRecEntrytvarexpected_value new_valuetrec_num_updates DebugClosure ConstrClosure FunClosure ThunkClosureSelectorClosure PAPClosure APClosureAPStackClosure IndClosure BCOClosureBlackholeClosureArrWordsClosure MutArrClosureSmallMutArrClosure MVarClosure MutVarClosureBlockingQueueClosure TSOClosure StackClosure WeakClosure TVarClosureTRecChunkClosureMutPrimClosure OtherClosureUnsupportedClosureinfoptrArgsdataArgs constrDescselecteearityn_argsfun pap_payload ap_payload ap_st_sizepayload indirecteeinstrsliteralsbcoptrssizebitmapbytesarrWordsmccPtrsmccSize mccPayload queueHead queueTailvaluevarlink blackHoleownerqueue_link global_linktsoStacktrecblocked_exceptionsbq what_next why_blockedflagsthreadId saved_errnodirty alloc_limittot_stack_sizeprof stack_size stack_dirty stack_markingframes cfinalizerskey finalizermlink current_valuetvar_watch_queue num_updates prev_chunknext_idxentrieshvaluesrawWordsStgInfoTableWithPtrtableId decodedTable RetainerSizegetRetainerSize InclusiveSizegetInclusiveSizeSizegetSizeDebugClosureWithExtraDCSextraDCSunDCSDebugClosureWithSize PayloadContConstrDescCont SizedClosureC SizedClosureClosurenoSizedcSizeparseConstrDescquadmap allClosures$fEqStgInfoTableWithPtr$fOrdStgInfoTableWithPtr$fQuadtraversableDebugClosure&$fQuadtraversableDebugClosureWithExtra$fFunctorGenPapPayload$fFoldableGenPapPayload$fTraversableGenPapPayload$fShowGenPapPayload$fOrdGenPapPayload$fEqGenPapPayload$fFunctorGenStackFrames$fFoldableGenStackFrames$fTraversableGenStackFrames$fShowGenStackFrames$fOrdGenStackFrames$fEqGenStackFrames$fTraversableDebugStackFrame$fFunctorDebugStackFrame$fFoldableDebugStackFrame$fShowDebugStackFrame$fOrdDebugStackFrame$fEqDebugStackFrame$fShowFieldValue$fTraversableFieldValue$fFunctorFieldValue$fFoldableFieldValue$fOrdFieldValue$fEqFieldValue$fShowConstrDesc$fEqConstrDesc$fOrdConstrDesc$fShowStackCont$fShowDebugClosureWithExtra$fOrdDebugClosureWithExtra$fEqDebugClosureWithExtra$fShowDebugClosure$fGenericDebugClosure$fFunctorDebugClosure$fFoldableDebugClosure$fTraversableDebugClosure$fOrdDebugClosure$fEqDebugClosure$fShowTRecEntry$fGenericTRecEntry$fFunctorTRecEntry$fFoldableTRecEntry$fTraversableTRecEntry$fOrdTRecEntry $fEqTRecEntry$fShowStgInfoTableWithPtr$fShowRetainerSize$fGenericRetainerSize$fOrdRetainerSize$fEqRetainerSize$fSemigroupRetainerSize$fMonoidRetainerSize$fShowInclusiveSize$fGenericInclusiveSize$fSemigroupInclusiveSize$fMonoidInclusiveSize $fShowSize $fGenericSize$fSemigroupSize $fMonoidSize $fNumSize $fOrdSize$fEqSize$fShowPayloadCont ReverseGraph DerefFunction HeapGraphrootsgraphPapHIStackHIHeapGraphIndexHeapGraphEntry hgeClosurePtr hgeClosurehgeDatatraverseHeapGraphlookupHeapGraphupdateHeapGraph heapGraphSizebuildHeapGraphmultiBuildHeapGraphannotateHeapGraphgeneralBuildHeapGraph ppHeapGraph ppClosure reverseEdgesmkReverseGraph$fShowHeapGraph$fFoldableHeapGraph$fTraversableHeapGraph$fFunctorHeapGraph$fShowHeapGraphEntry$fFunctorHeapGraphEntry$fFoldableHeapGraphEntry$fTraversableHeapGraphEntryconvertClosure decodeClosuredecodeInfoTableAnyRespAnyReq CommandIdSourceInformationinfoNameinfoClosureTypeinfoType infoLabel infoModule infoPositionRequestRequestVersion RequestPause RequestResume RequestRootsRequestClosureRequestInfoTable RequestPollRequestSavedObjectsRequestStackBitmapRequestFunBitmapRequestConstrDescRequestSourceInfoRequestAllBlocks RequestBlock ForkOrPausePauseForkisWriteRequestwithWriteRequestisImmutableRequestrequestCommandId putRequest getRequestgetIPEputIPE getInfoTable putInfoTable doRequest$fBinaryForkOrPause$fHashableForkOrPause$fHashableRequest $fEqAnyReq$fHashableAnyReq$fExceptionError$fEqResponseCode$fOrdResponseCode$fShowResponseCode $fEqError $fOrdError $fShowError $fEqCommandId$fOrdCommandId$fShowCommandId$fBinaryCommandId$fHashableCommandId$fShowSourceInformation$fEqSourceInformation$fOrdSourceInformation$fEqForkOrPause$fOrdForkOrPause$fShowForkOrPause$fEnumForkOrPause $fEqRequest $fShowRequest decodeStackbaseGHC.BasemappendMonoidboundMultipleTimesallocateallocateByCopy