Hi, What are you trying to do exactly ? Have you considered reading the decls with a tool using the C++ APIs (load a module and iterate over the decls) ? I think that would be easier and more future-proof.
> On Aug 22, 2017, at 11:57 AM, Coder via swift-dev <swift-dev@swift.org> wrote: > > Hello, > > I’m working on extracting information from .swiftmodule files. Currently I > can read all blocks and records but I’m having trouble identifying all DECLs > in the DECLS_AND_TYPES_BLOCK. Below is a bcanalyzer dump of a swifmodule file > created from this one line of code: > > class Example {} > > A couple questions: > > • The DECL_OFFSETS record contains 6 indexes but I only count 5 DECLs (class, > destructor, constructor, 2 param). Where is the 6th? > • According to documentation, the DECL_OFFSETS point to records in the > DECLS_AND_TYPES_BLOCK blob but offset indexes show below (the “op” > attributes) are larger than the blob length. Where do the indexes start from? > > Sorry if this is the wrong place to ask and thanks for any help, > Aaron > > > > > --------- bcanalyzer dump --------- > > <BLOCKINFO_BLOCK/> > <MODULE_BLOCK NumWords=514 BlockCodeSize=2> > <CONTROL_BLOCK NumWords=35 BlockCodeSize=3> > <MODULE_NAME abbrevid=4/> blob data = 'tool' > <METADATA abbrevid=5 op0=0 op1=310 op2=3/> blob data = '3.1/Apple Swift > version 3.1 (swiftlang-802.0.53 clang-802.0.42)' > <TARGET abbrevid=6/> blob data = 'x86_64-apple-macosx10.9' > <OPTIONS_BLOCK NumWords=2 BlockCodeSize=3> > <IS_SIB abbrevid=4 op0=0/> > </OPTIONS_BLOCK> > </CONTROL_BLOCK> > <INPUT_BLOCK NumWords=17 BlockCodeSize=4> > <IMPORTED_MODULE abbrevid=4 op0=0 op1=0/> blob data = 'Swift' > <IMPORTED_MODULE abbrevid=4 op0=0 op1=0/> blob data = 'SwiftOnoneSupport' > </INPUT_BLOCK> > <SIL_BLOCK NumWords=72 BlockCodeSize=6> > </SIL_BLOCK> > <SIL_INDEX_BLOCK NumWords=3 BlockCodeSize=4> > </SIL_INDEX_BLOCK> > <DECLS_AND_TYPES_BLOCK NumWords=309 BlockCodeSize=8> > <CLASS_DECL abbrevid=49 op0=3 op1=0 op2=0 op3=0 op4=0 op5=0 op6=0 op7=2 > op8=1/> record string = '' > <MEMBERS abbrevid=90 op0=2 op1=3/> > <NORMAL_PROTOCOL_CONFORMANCE_ID abbrevid=85 op0=1/> > <NOMINAL_TYPE abbrevid=7 op0=1 op1=0/> > <ObjC_DECL_ATTR abbrevid=95 op0=1 op1=0 op2=0/> record string = '' > <DESTRUCTOR_DECL abbrevid=54 op0=1 op1=1 op2=1 op3=0 op4=2/> > <PARAMETERLIST abbrevid=55 op0=1/> > <PARAMETERLIST_ELT abbrevid=56 op0=4 op1=0 op2=0/> > <CONSTRUCTOR_DECL abbrevid=38 op0=1 op1=0 op2=1 op3=0 op4=0 op5=0 op6=0 > op7=0 op8=3 op9=0 op10=2/> record string = '' > <PARAMETERLIST abbrevid=55 op0=1/> > <PARAMETERLIST_ELT abbrevid=56 op0=5 op1=0 op2=0/> > <PARAMETERLIST abbrevid=55 op0=0/> > <FUNCTION_TYPE abbrevid=11 op0=1 op1=4 op2=0 op3=0 op4=0 op5=0/> > <LOCAL_DISCRIMINATOR abbrevid=88 op0=0/> > <PARAM_DECL abbrevid=40 op0=0 op1=4 op2=2 op3=1 op4=1/> > <FUNCTION_TYPE abbrevid=11 op0=5 op1=6 op2=0 op3=0 op4=0 op5=0/> > <LOCAL_DISCRIMINATOR abbrevid=88 op0=0/> > <PARAM_DECL abbrevid=40 op0=0 op1=4 op2=3 op3=1 op4=1/> > <FUNCTION_TYPE abbrevid=11 op0=7 op1=7 op2=0 op3=0 op4=0 op5=0/> > <METATYPE_TYPE abbrevid=12 op0=1 op1=0/> > <FUNCTION_TYPE abbrevid=11 op0=7 op1=1 op2=0 op3=0 op4=0 op5=0/> > <TUPLE_TYPE abbrevid=9/> > <DECL_CONTEXT abbrevid=70 op0=1 op1=1/> > <DECL_CONTEXT abbrevid=70 op0=2 op1=1/> > <DECL_CONTEXT abbrevid=70 op0=3 op1=1/> > <NORMAL_PROTOCOL_CONFORMANCE abbrevid=82 op0=6 op1=1 op2=0 op3=0 op4=0/> > record string = '' > <XREF abbrevid=91 op0=5 op1=1/> > <XREF_TYPE_PATH_PIECE abbrevid=75 op0=6 op1=0/> > </DECLS_AND_TYPES_BLOCK> > <IDENTIFIER_DATA_BLOCK NumWords=10 BlockCodeSize=3> > <IDENTIFIER_DATA abbrevid=4/> blob data = unprintable, 30 bytes. > </IDENTIFIER_DATA_BLOCK> > <INDEX_BLOCK NumWords=53 BlockCodeSize=4> > <DECL_OFFSETS abbrevid=4 op0=73085 op1=73418 op2=73598 op3=73894 op4=74114 > op5=74671/> > <TYPE_OFFSETS abbrevid=4 op0=73348 op1=73817 op2=74037 op3=74257 op4=74334 > op5=74375 op6=74452/> > <IDENTIFIER_OFFSETS abbrevid=4 op0=1 op1=9 op2=14 op3=20/> > <DECL_CONTEXT_OFFSETS abbrevid=4 op0=74460 op1=74500 op2=74540/> > <LOCAL_DECL_CONTEXT_OFFSETS abbrevid=4/> record string = '' > <GENERIC_ENVIRONMENT_OFFSETS abbrevid=4/> record string = '' > <NORMAL_CONFORMANCE_OFFSETS abbrevid=4 op0=74580/> record string = 'T' > <SIL_LAYOUT_OFFSETS abbrevid=4/> record string = '' > <TOP_LEVEL_DECLS abbrevid=5 op0=28/> blob data = unprintable, 40 bytes. > <OBJC_METHODS abbrevid=6 op0=32/> blob data = unprintable, 44 bytes. > </INDEX_BLOCK> > </MODULE_BLOCK> > _______________________________________________ > swift-dev mailing list > swift-dev@swift.org > https://lists.swift.org/mailman/listinfo/swift-dev _______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev