Lines Matching refs:dwarf
45 CU.addUInt(getActiveDIE(), dwarf::DW_FORM_data1, Op); in emitOp()
49 CU.addSInt(getActiveDIE(), dwarf::DW_FORM_sdata, Value); in emitSigned()
53 CU.addUInt(getActiveDIE(), dwarf::DW_FORM_udata, Value); in emitUnsigned()
57 CU.addUInt(getActiveDIE(), dwarf::DW_FORM_data1, Value); in emitData1()
82 DwarfUnit::DwarfUnit(dwarf::Tag UnitTag, const DICompileUnit *Node, in DwarfUnit()
91 : DwarfUnit(dwarf::DW_TAG_type_unit, CU.getCUNode(), A, DW, DWU, UniqueID), in DwarfTypeUnit()
107 case dwarf::DW_LANG_C: in getDefaultLowerBound()
108 case dwarf::DW_LANG_C89: in getDefaultLowerBound()
109 case dwarf::DW_LANG_C_plus_plus: in getDefaultLowerBound()
112 case dwarf::DW_LANG_Fortran77: in getDefaultLowerBound()
113 case dwarf::DW_LANG_Fortran90: in getDefaultLowerBound()
117 case dwarf::DW_LANG_C99: in getDefaultLowerBound()
118 case dwarf::DW_LANG_ObjC: in getDefaultLowerBound()
119 case dwarf::DW_LANG_ObjC_plus_plus: in getDefaultLowerBound()
124 case dwarf::DW_LANG_Fortran95: in getDefaultLowerBound()
130 case dwarf::DW_LANG_D: in getDefaultLowerBound()
131 case dwarf::DW_LANG_Java: in getDefaultLowerBound()
132 case dwarf::DW_LANG_Python: in getDefaultLowerBound()
133 case dwarf::DW_LANG_UPC: in getDefaultLowerBound()
138 case dwarf::DW_LANG_Ada83: in getDefaultLowerBound()
139 case dwarf::DW_LANG_Ada95: in getDefaultLowerBound()
140 case dwarf::DW_LANG_Cobol74: in getDefaultLowerBound()
141 case dwarf::DW_LANG_Cobol85: in getDefaultLowerBound()
142 case dwarf::DW_LANG_Modula2: in getDefaultLowerBound()
143 case dwarf::DW_LANG_Pascal83: in getDefaultLowerBound()
144 case dwarf::DW_LANG_PLI: in getDefaultLowerBound()
150 case dwarf::DW_LANG_BLISS: in getDefaultLowerBound()
151 case dwarf::DW_LANG_C11: in getDefaultLowerBound()
152 case dwarf::DW_LANG_C_plus_plus_03: in getDefaultLowerBound()
153 case dwarf::DW_LANG_C_plus_plus_11: in getDefaultLowerBound()
154 case dwarf::DW_LANG_C_plus_plus_14: in getDefaultLowerBound()
155 case dwarf::DW_LANG_Dylan: in getDefaultLowerBound()
156 case dwarf::DW_LANG_Go: in getDefaultLowerBound()
157 case dwarf::DW_LANG_Haskell: in getDefaultLowerBound()
158 case dwarf::DW_LANG_OCaml: in getDefaultLowerBound()
159 case dwarf::DW_LANG_OpenCL: in getDefaultLowerBound()
160 case dwarf::DW_LANG_RenderScript: in getDefaultLowerBound()
161 case dwarf::DW_LANG_Rust: in getDefaultLowerBound()
162 case dwarf::DW_LANG_Swift: in getDefaultLowerBound()
167 case dwarf::DW_LANG_Fortran03: in getDefaultLowerBound()
168 case dwarf::DW_LANG_Fortran08: in getDefaultLowerBound()
169 case dwarf::DW_LANG_Julia: in getDefaultLowerBound()
170 case dwarf::DW_LANG_Modula3: in getDefaultLowerBound()
213 void DwarfUnit::addFlag(DIE &Die, dwarf::Attribute Attribute) { in addFlag()
215 addAttribute(Die, Attribute, dwarf::DW_FORM_flag_present, DIEInteger(1)); in addFlag()
217 addAttribute(Die, Attribute, dwarf::DW_FORM_flag, DIEInteger(1)); in addFlag()
220 void DwarfUnit::addUInt(DIEValueList &Die, dwarf::Attribute Attribute, in addUInt()
221 std::optional<dwarf::Form> Form, uint64_t Integer) { in addUInt()
224 assert(Form != dwarf::DW_FORM_implicit_const && in addUInt()
229 void DwarfUnit::addUInt(DIEValueList &Block, dwarf::Form Form, in addUInt()
231 addUInt(Block, (dwarf::Attribute)0, Form, Integer); in addUInt()
234 void DwarfUnit::addSInt(DIEValueList &Die, dwarf::Attribute Attribute, in addSInt()
235 std::optional<dwarf::Form> Form, int64_t Integer) { in addSInt()
241 void DwarfUnit::addSInt(DIELoc &Die, std::optional<dwarf::Form> Form, in addSInt()
243 addSInt(Die, (dwarf::Attribute)0, Form, Integer); in addSInt()
246 void DwarfUnit::addString(DIE &Die, dwarf::Attribute Attribute, in addString()
252 addAttribute(Die, Attribute, dwarf::DW_FORM_string, in addString()
257 dwarf::Form IxForm = in addString()
258 isDwoUnit() ? dwarf::DW_FORM_GNU_str_index : dwarf::DW_FORM_strp; in addString()
261 useSegmentedStringOffsetsTable() || IxForm == dwarf::DW_FORM_GNU_str_index in addString()
267 IxForm = dwarf::DW_FORM_strx1; in addString()
270 IxForm = dwarf::DW_FORM_strx4; in addString()
272 IxForm = dwarf::DW_FORM_strx3; in addString()
274 IxForm = dwarf::DW_FORM_strx2; in addString()
279 void DwarfUnit::addLabel(DIEValueList &Die, dwarf::Attribute Attribute, in addLabel()
280 dwarf::Form Form, const MCSymbol *Label) { in addLabel()
284 void DwarfUnit::addLabel(DIELoc &Die, dwarf::Form Form, const MCSymbol *Label) { in addLabel()
285 addLabel(Die, (dwarf::Attribute)0, Form, Label); in addLabel()
288 void DwarfUnit::addSectionOffset(DIE &Die, dwarf::Attribute Attribute, in addSectionOffset()
299 addSectionOffset(getUnitDie(), dwarf::DW_AT_stmt_list, 0); in getOrCreateSourceID()
317 addUInt(Die, dwarf::DW_FORM_data1, dwarf::DW_OP_addrx); in addPoolOpAddress()
318 addUInt(Die, dwarf::DW_FORM_addrx, Index); in addPoolOpAddress()
320 addUInt(Die, dwarf::DW_FORM_data1, dwarf::DW_OP_GNU_addr_index); in addPoolOpAddress()
321 addUInt(Die, dwarf::DW_FORM_GNU_addr_index, Index); in addPoolOpAddress()
325 addUInt(Die, dwarf::DW_FORM_data1, dwarf::DW_OP_const4u); in addPoolOpAddress()
326 addLabelDelta(Die, (dwarf::Attribute)0, Label, Base); in addPoolOpAddress()
327 addUInt(Die, dwarf::DW_FORM_data1, dwarf::DW_OP_plus); in addPoolOpAddress()
342 addUInt(Die, dwarf::DW_FORM_data1, dwarf::DW_OP_addr); in addOpAddress()
343 addLabel(Die, dwarf::DW_FORM_addr, Sym); in addOpAddress()
346 void DwarfUnit::addLabelDelta(DIEValueList &Die, dwarf::Attribute Attribute, in addLabelDelta()
348 addAttribute(Die, Attribute, dwarf::DW_FORM_data4, in addLabelDelta()
352 void DwarfUnit::addDIEEntry(DIE &Die, dwarf::Attribute Attribute, DIE &Entry) { in addDIEEntry()
361 addFlag(Die, dwarf::DW_AT_declaration); in addDIETypeSignature()
363 addAttribute(Die, dwarf::DW_AT_signature, dwarf::DW_FORM_ref_sig8, in addDIETypeSignature()
367 void DwarfUnit::addDIEEntry(DIE &Die, dwarf::Attribute Attribute, in addDIEEntry()
379 EntryCU == CU ? dwarf::DW_FORM_ref4 : dwarf::DW_FORM_ref_addr, in addDIEEntry()
383 DIE &DwarfUnit::createAndAddDIE(dwarf::Tag Tag, DIE &Parent, const DINode *N) { in createAndAddDIE()
390 void DwarfUnit::addBlock(DIE &Die, dwarf::Attribute Attribute, DIELoc *Loc) { in addBlock()
396 void DwarfUnit::addBlock(DIE &Die, dwarf::Attribute Attribute, dwarf::Form Form, in addBlock()
403 void DwarfUnit::addBlock(DIE &Die, dwarf::Attribute Attribute, in addBlock()
413 addUInt(Die, dwarf::DW_AT_decl_file, std::nullopt, FileID); in addSourceLine()
414 addUInt(Die, dwarf::DW_AT_decl_line, std::nullopt, Line); in addSourceLine()
470 addUInt(Die, dwarf::DW_AT_const_value, in addConstantValue()
471 Unsigned ? dwarf::DW_FORM_udata : dwarf::DW_FORM_sdata, Val); in addConstantValue()
501 addUInt(*Block, dwarf::DW_FORM_data1, c); in addConstantValue()
504 addBlock(Die, dwarf::DW_AT_const_value, Block); in addConstantValue()
510 DD->getDwarfVersion() >= 4 ? dwarf::DW_AT_linkage_name in addLinkageName()
511 : dwarf::DW_AT_MIPS_linkage_name, in addLinkageName()
528 DIE &TT = createAndAddDIE(dwarf::DW_TAG_thrown_type, Die); in addThrownTypes()
535 addUInt(Die, dwarf::DW_AT_accessibility, dwarf::DW_FORM_data1, in addAccess()
536 dwarf::DW_ACCESS_protected); in addAccess()
538 addUInt(Die, dwarf::DW_AT_accessibility, dwarf::DW_FORM_data1, in addAccess()
539 dwarf::DW_ACCESS_private); in addAccess()
541 addUInt(Die, dwarf::DW_AT_accessibility, dwarf::DW_FORM_data1, in addAccess()
542 dwarf::DW_ACCESS_public); in addAccess()
613 if (Ty->getTag() == dwarf::DW_TAG_restrict_type && DD->getDwarfVersion() <= 2) in getOrCreateTypeDIE()
617 if (Ty->getTag() == dwarf::DW_TAG_atomic_type && DD->getDwarfVersion() < 5) in getOrCreateTypeDIE()
642 unsigned Flags = IsImplementation ? dwarf::DW_FLAG_type_implementation : 0; in updateAcceleratorTables()
653 dwarf::Attribute Attribute) { in addType()
663 if (!dwarf::isCPlusPlus((dwarf::SourceLanguage)getLanguage())) in getParentContextString()
697 addString(Buffer, dwarf::DW_AT_name, Name); in constructTypeDIE()
700 if (BTy->getTag() == dwarf::DW_TAG_unspecified_type) in constructTypeDIE()
703 if (BTy->getTag() != dwarf::DW_TAG_string_type) in constructTypeDIE()
704 addUInt(Buffer, dwarf::DW_AT_encoding, dwarf::DW_FORM_data1, in constructTypeDIE()
708 addUInt(Buffer, dwarf::DW_AT_byte_size, std::nullopt, Size); in constructTypeDIE()
711 addUInt(Buffer, dwarf::DW_AT_endianity, std::nullopt, dwarf::DW_END_big); in constructTypeDIE()
713 addUInt(Buffer, dwarf::DW_AT_endianity, std::nullopt, dwarf::DW_END_little); in constructTypeDIE()
721 addString(Buffer, dwarf::DW_AT_name, Name); in constructTypeDIE()
725 addDIEEntry(Buffer, dwarf::DW_AT_string_length, *VarDIE); in constructTypeDIE()
734 addBlock(Buffer, dwarf::DW_AT_string_length, DwarfExpr.finalize()); in constructTypeDIE()
737 addUInt(Buffer, dwarf::DW_AT_byte_size, std::nullopt, Size); in constructTypeDIE()
747 addBlock(Buffer, dwarf::DW_AT_data_location, DwarfExpr.finalize()); in constructTypeDIE()
752 addUInt(Buffer, dwarf::DW_AT_encoding, dwarf::DW_FORM_data1, in constructTypeDIE()
770 addString(Buffer, dwarf::DW_AT_name, Name); in constructTypeDIE()
776 if (Tag == dwarf::DW_TAG_typedef && DD->getDwarfVersion() >= 5) { in constructTypeDIE()
779 addUInt(Buffer, dwarf::DW_AT_alignment, dwarf::DW_FORM_udata, in constructTypeDIE()
784 if (Size && Tag != dwarf::DW_TAG_pointer_type in constructTypeDIE()
785 && Tag != dwarf::DW_TAG_ptr_to_member_type in constructTypeDIE()
786 && Tag != dwarf::DW_TAG_reference_type in constructTypeDIE()
787 && Tag != dwarf::DW_TAG_rvalue_reference_type) in constructTypeDIE()
788 addUInt(Buffer, dwarf::DW_AT_byte_size, std::nullopt, Size); in constructTypeDIE()
790 if (Tag == dwarf::DW_TAG_ptr_to_member_type) in constructTypeDIE()
791 addDIEEntry(Buffer, dwarf::DW_AT_containing_type, in constructTypeDIE()
804 addUInt(Buffer, dwarf::DW_AT_address_class, dwarf::DW_FORM_data4, in constructTypeDIE()
813 createAndAddDIE(dwarf::DW_TAG_unspecified_parameters, Buffer); in constructSubprogramArguments()
815 DIE &Arg = createAndAddDIE(dwarf::DW_TAG_formal_parameter, Buffer); in constructSubprogramArguments()
818 addFlag(Arg, dwarf::DW_AT_artificial); in constructSubprogramArguments()
838 if (isPrototyped && dwarf::isC((dwarf::SourceLanguage)getLanguage())) in constructTypeDIE()
839 addFlag(Buffer, dwarf::DW_AT_prototyped); in constructTypeDIE()
842 if (CTy->getCC() && CTy->getCC() != dwarf::DW_CC_normal) in constructTypeDIE()
843 addUInt(Buffer, dwarf::DW_AT_calling_convention, dwarf::DW_FORM_data1, in constructTypeDIE()
847 addFlag(Buffer, dwarf::DW_AT_reference); in constructTypeDIE()
850 addFlag(Buffer, dwarf::DW_AT_rvalue_reference); in constructTypeDIE()
862 DIE &AnnotationDie = createAndAddDIE(dwarf::DW_TAG_LLVM_annotation, Buffer); in addAnnotation()
863 addString(AnnotationDie, dwarf::DW_AT_name, Name->getString()); in addAnnotation()
865 addString(AnnotationDie, dwarf::DW_AT_const_value, Data->getString()); in addAnnotation()
882 case dwarf::DW_TAG_array_type: in constructTypeDIE()
885 case dwarf::DW_TAG_enumeration_type: in constructTypeDIE()
888 case dwarf::DW_TAG_variant_part: in constructTypeDIE()
889 case dwarf::DW_TAG_structure_type: in constructTypeDIE()
890 case dwarf::DW_TAG_union_type: in constructTypeDIE()
891 case dwarf::DW_TAG_class_type: in constructTypeDIE()
892 case dwarf::DW_TAG_namelist: { in constructTypeDIE()
895 if (Tag == dwarf::DW_TAG_variant_part) { in constructTypeDIE()
903 addDIEEntry(Buffer, dwarf::DW_AT_discr, DiscMember); in constructTypeDIE()
908 if (Tag == dwarf::DW_TAG_class_type || in constructTypeDIE()
909 Tag == dwarf::DW_TAG_structure_type || Tag == dwarf::DW_TAG_union_type) in constructTypeDIE()
920 if (DDTy->getTag() == dwarf::DW_TAG_friend) { in constructTypeDIE()
921 DIE &ElemDie = createAndAddDIE(dwarf::DW_TAG_friend, Buffer); in constructTypeDIE()
922 addType(ElemDie, DDTy->getBaseType(), dwarf::DW_AT_friend); in constructTypeDIE()
925 } else if (Tag == dwarf::DW_TAG_variant_part) { in constructTypeDIE()
928 DIE &Variant = createAndAddDIE(dwarf::DW_TAG_variant, Buffer); in constructTypeDIE()
932 addUInt(Variant, dwarf::DW_AT_discr_value, std::nullopt, in constructTypeDIE()
935 addSInt(Variant, dwarf::DW_AT_discr_value, std::nullopt, in constructTypeDIE()
945 addString(ElemDie, dwarf::DW_AT_APPLE_property_name, PropertyName); in constructTypeDIE()
951 addString(ElemDie, dwarf::DW_AT_APPLE_property_getter, GetterName); in constructTypeDIE()
954 addString(ElemDie, dwarf::DW_AT_APPLE_property_setter, SetterName); in constructTypeDIE()
956 addUInt(ElemDie, dwarf::DW_AT_APPLE_property_attribute, std::nullopt, in constructTypeDIE()
959 if (Composite->getTag() == dwarf::DW_TAG_variant_part) { in constructTypeDIE()
963 } else if (Tag == dwarf::DW_TAG_namelist) { in constructTypeDIE()
967 DIE &ItemDie = createAndAddDIE(dwarf::DW_TAG_namelist_item, Buffer); in constructTypeDIE()
968 addDIEEntry(ItemDie, dwarf::DW_AT_namelist_item, *VarDIE); in constructTypeDIE()
974 addFlag(Buffer, dwarf::DW_AT_APPLE_block); in constructTypeDIE()
977 addFlag(Buffer, dwarf::DW_AT_export_symbols); in constructTypeDIE()
984 addDIEEntry(Buffer, dwarf::DW_AT_containing_type, in constructTypeDIE()
988 addFlag(Buffer, dwarf::DW_AT_APPLE_objc_complete_type); in constructTypeDIE()
995 CC = dwarf::DW_CC_pass_by_value; in constructTypeDIE()
997 CC = dwarf::DW_CC_pass_by_reference; in constructTypeDIE()
999 addUInt(Buffer, dwarf::DW_AT_calling_convention, dwarf::DW_FORM_data1, in constructTypeDIE()
1010 addString(Buffer, dwarf::DW_AT_name, Name); in constructTypeDIE()
1014 if (Tag == dwarf::DW_TAG_enumeration_type || in constructTypeDIE()
1015 Tag == dwarf::DW_TAG_class_type || Tag == dwarf::DW_TAG_structure_type || in constructTypeDIE()
1016 Tag == dwarf::DW_TAG_union_type) { in constructTypeDIE()
1021 (!CTy->isForwardDecl() || Tag == dwarf::DW_TAG_enumeration_type)) in constructTypeDIE()
1022 addUInt(Buffer, dwarf::DW_AT_byte_size, std::nullopt, Size); in constructTypeDIE()
1025 addUInt(Buffer, dwarf::DW_AT_byte_size, std::nullopt, 0); in constructTypeDIE()
1029 addFlag(Buffer, dwarf::DW_AT_declaration); in constructTypeDIE()
1041 addUInt(Buffer, dwarf::DW_AT_APPLE_runtime_class, dwarf::DW_FORM_data1, in constructTypeDIE()
1046 addUInt(Buffer, dwarf::DW_AT_alignment, dwarf::DW_FORM_udata, in constructTypeDIE()
1054 createAndAddDIE(dwarf::DW_TAG_template_type_parameter, Buffer); in constructTemplateTypeParameterDIE()
1059 addString(ParamDIE, dwarf::DW_AT_name, TP->getName()); in constructTemplateTypeParameterDIE()
1061 addFlag(ParamDIE, dwarf::DW_AT_default_value); in constructTemplateTypeParameterDIE()
1070 if (VP->getTag() == dwarf::DW_TAG_template_value_parameter) in constructTemplateValueParameterDIE()
1073 addString(ParamDIE, dwarf::DW_AT_name, VP->getName()); in constructTemplateValueParameterDIE()
1075 addFlag(ParamDIE, dwarf::DW_AT_default_value); in constructTemplateValueParameterDIE()
1089 addUInt(*Loc, dwarf::DW_FORM_data1, dwarf::DW_OP_stack_value); in constructTemplateValueParameterDIE()
1090 addBlock(ParamDIE, dwarf::DW_AT_location, Loc); in constructTemplateValueParameterDIE()
1092 } else if (VP->getTag() == dwarf::DW_TAG_GNU_template_template_param) { in constructTemplateValueParameterDIE()
1094 addString(ParamDIE, dwarf::DW_AT_GNU_template_name, in constructTemplateValueParameterDIE()
1096 } else if (VP->getTag() == dwarf::DW_TAG_GNU_template_parameter_pack) { in constructTemplateValueParameterDIE()
1109 DIE &NDie = createAndAddDIE(dwarf::DW_TAG_namespace, *ContextDIE, NS); in getOrCreateNameSpace()
1113 addString(NDie, dwarf::DW_AT_name, NS->getName()); in getOrCreateNameSpace()
1119 addFlag(NDie, dwarf::DW_AT_export_symbols); in getOrCreateNameSpace()
1130 DIE &MDie = createAndAddDIE(dwarf::DW_TAG_module, *ContextDIE, M); in getOrCreateModule()
1133 addString(MDie, dwarf::DW_AT_name, M->getName()); in getOrCreateModule()
1137 addString(MDie, dwarf::DW_AT_LLVM_config_macros, in getOrCreateModule()
1140 addString(MDie, dwarf::DW_AT_LLVM_include_path, M->getIncludePath()); in getOrCreateModule()
1142 addString(MDie, dwarf::DW_AT_LLVM_apinotes, M->getAPINotesFile()); in getOrCreateModule()
1144 addUInt(MDie, dwarf::DW_AT_decl_file, std::nullopt, in getOrCreateModule()
1147 addUInt(MDie, dwarf::DW_AT_decl_line, std::nullopt, M->getLineNo()); in getOrCreateModule()
1149 addFlag(MDie, dwarf::DW_AT_declaration); in getOrCreateModule()
1174 DIE &SPDie = createAndAddDIE(dwarf::DW_TAG_subprogram, *ContextDIE, SP); in getOrCreateSubprogramDIE()
1210 addUInt(SPDie, dwarf::DW_AT_decl_file, std::nullopt, DefID); in applySubprogramDefinitionAttributes()
1213 addUInt(SPDie, dwarf::DW_AT_decl_line, std::nullopt, SP->getLine()); in applySubprogramDefinitionAttributes()
1235 addDIEEntry(SPDie, dwarf::DW_AT_specification, *DeclDie); in applySubprogramDefinitionAttributes()
1251 addString(SPDie, dwarf::DW_AT_name, SP->getName()); in applySubprogramAttributes()
1264 if (SP->isPrototyped() && dwarf::isC((dwarf::SourceLanguage)getLanguage())) in applySubprogramAttributes()
1265 addFlag(SPDie, dwarf::DW_AT_prototyped); in applySubprogramAttributes()
1268 addFlag(SPDie, dwarf::DW_AT_APPLE_objc_direct); in applySubprogramAttributes()
1278 if (CC && CC != dwarf::DW_CC_normal) in applySubprogramAttributes()
1279 addUInt(SPDie, dwarf::DW_AT_calling_convention, dwarf::DW_FORM_data1, CC); in applySubprogramAttributes()
1289 addUInt(SPDie, dwarf::DW_AT_virtuality, dwarf::DW_FORM_data1, VK); in applySubprogramAttributes()
1292 addUInt(*Block, dwarf::DW_FORM_data1, dwarf::DW_OP_constu); in applySubprogramAttributes()
1293 addUInt(*Block, dwarf::DW_FORM_udata, SP->getVirtualIndex()); in applySubprogramAttributes()
1294 addBlock(SPDie, dwarf::DW_AT_vtable_elem_location, Block); in applySubprogramAttributes()
1300 addFlag(SPDie, dwarf::DW_AT_declaration); in applySubprogramAttributes()
1310 addFlag(SPDie, dwarf::DW_AT_artificial); in applySubprogramAttributes()
1313 addFlag(SPDie, dwarf::DW_AT_external); in applySubprogramAttributes()
1317 addFlag(SPDie, dwarf::DW_AT_APPLE_optimized); in applySubprogramAttributes()
1320 addUInt(SPDie, dwarf::DW_AT_APPLE_isa, dwarf::DW_FORM_flag, isa); in applySubprogramAttributes()
1324 addFlag(SPDie, dwarf::DW_AT_reference); in applySubprogramAttributes()
1327 addFlag(SPDie, dwarf::DW_AT_rvalue_reference); in applySubprogramAttributes()
1330 addFlag(SPDie, dwarf::DW_AT_noreturn); in applySubprogramAttributes()
1335 addFlag(SPDie, dwarf::DW_AT_explicit); in applySubprogramAttributes()
1338 addFlag(SPDie, dwarf::DW_AT_main_subprogram); in applySubprogramAttributes()
1340 addFlag(SPDie, dwarf::DW_AT_pure); in applySubprogramAttributes()
1342 addFlag(SPDie, dwarf::DW_AT_elemental); in applySubprogramAttributes()
1344 addFlag(SPDie, dwarf::DW_AT_recursive); in applySubprogramAttributes()
1347 addString(SPDie, dwarf::DW_AT_trampoline, SP->getTargetFuncName()); in applySubprogramAttributes()
1350 addFlag(SPDie, dwarf::DW_AT_deleted); in applySubprogramAttributes()
1355 DIE &DW_Subrange = createAndAddDIE(dwarf::DW_TAG_subrange_type, Buffer); in constructSubrangeDIE()
1356 addDIEEntry(DW_Subrange, dwarf::DW_AT_type, *IndexTy); in constructSubrangeDIE()
1364 auto AddBoundTypeEntry = [&](dwarf::Attribute Attr, in constructSubrangeDIE()
1376 if (Attr == dwarf::DW_AT_count) { in constructSubrangeDIE()
1379 } else if (Attr != dwarf::DW_AT_lower_bound || DefaultLowerBound == -1 || in constructSubrangeDIE()
1381 addSInt(DW_Subrange, Attr, dwarf::DW_FORM_sdata, BI->getSExtValue()); in constructSubrangeDIE()
1385 AddBoundTypeEntry(dwarf::DW_AT_lower_bound, SR->getLowerBound()); in constructSubrangeDIE()
1387 AddBoundTypeEntry(dwarf::DW_AT_count, SR->getCount()); in constructSubrangeDIE()
1389 AddBoundTypeEntry(dwarf::DW_AT_upper_bound, SR->getUpperBound()); in constructSubrangeDIE()
1391 AddBoundTypeEntry(dwarf::DW_AT_byte_stride, SR->getStride()); in constructSubrangeDIE()
1398 createAndAddDIE(dwarf::DW_TAG_generic_subrange, Buffer); in constructGenericSubrangeDIE()
1399 addDIEEntry(DwGenericSubrange, dwarf::DW_AT_type, *IndexTy); in constructGenericSubrangeDIE()
1403 auto AddBoundTypeEntry = [&](dwarf::Attribute Attr, in constructGenericSubrangeDIE()
1412 if (Attr != dwarf::DW_AT_lower_bound || DefaultLowerBound == -1 || in constructGenericSubrangeDIE()
1414 addSInt(DwGenericSubrange, Attr, dwarf::DW_FORM_sdata, in constructGenericSubrangeDIE()
1426 AddBoundTypeEntry(dwarf::DW_AT_lower_bound, GSR->getLowerBound()); in constructGenericSubrangeDIE()
1427 AddBoundTypeEntry(dwarf::DW_AT_count, GSR->getCount()); in constructGenericSubrangeDIE()
1428 AddBoundTypeEntry(dwarf::DW_AT_upper_bound, GSR->getUpperBound()); in constructGenericSubrangeDIE()
1429 AddBoundTypeEntry(dwarf::DW_AT_byte_stride, GSR->getStride()); in constructGenericSubrangeDIE()
1436 IndexTyDie = &createAndAddDIE(dwarf::DW_TAG_base_type, getUnitDie()); in getIndexTyDie()
1438 addString(*IndexTyDie, dwarf::DW_AT_name, Name); in getIndexTyDie()
1439 addUInt(*IndexTyDie, dwarf::DW_AT_byte_size, std::nullopt, sizeof(int64_t)); in getIndexTyDie()
1440 addUInt(*IndexTyDie, dwarf::DW_AT_encoding, dwarf::DW_FORM_data1, in getIndexTyDie()
1441 dwarf::getArrayIndexTypeEncoding( in getIndexTyDie()
1442 (dwarf::SourceLanguage)getLanguage())); in getIndexTyDie()
1463 Elements[0]->getTag() == dwarf::DW_TAG_subrange_type && in hasVectorBeenPadded()
1479 addFlag(Buffer, dwarf::DW_AT_GNU_vector); in constructArrayTypeDIE()
1481 addUInt(Buffer, dwarf::DW_AT_byte_size, std::nullopt, in constructArrayTypeDIE()
1487 addDIEEntry(Buffer, dwarf::DW_AT_data_location, *VarDIE); in constructArrayTypeDIE()
1493 addBlock(Buffer, dwarf::DW_AT_data_location, DwarfExpr.finalize()); in constructArrayTypeDIE()
1498 addDIEEntry(Buffer, dwarf::DW_AT_associated, *VarDIE); in constructArrayTypeDIE()
1504 addBlock(Buffer, dwarf::DW_AT_associated, DwarfExpr.finalize()); in constructArrayTypeDIE()
1509 addDIEEntry(Buffer, dwarf::DW_AT_allocated, *VarDIE); in constructArrayTypeDIE()
1515 addBlock(Buffer, dwarf::DW_AT_allocated, DwarfExpr.finalize()); in constructArrayTypeDIE()
1519 addSInt(Buffer, dwarf::DW_AT_rank, dwarf::DW_FORM_sdata, in constructArrayTypeDIE()
1526 addBlock(Buffer, dwarf::DW_AT_rank, DwarfExpr.finalize()); in constructArrayTypeDIE()
1542 if (Element->getTag() == dwarf::DW_TAG_subrange_type) in constructArrayTypeDIE()
1544 else if (Element->getTag() == dwarf::DW_TAG_generic_subrange) in constructArrayTypeDIE()
1558 addFlag(Buffer, dwarf::DW_AT_enum_class); in constructEnumTypeDIE()
1570 DIE &Enumerator = createAndAddDIE(dwarf::DW_TAG_enumerator, Buffer); in constructEnumTypeDIE()
1572 addString(Enumerator, dwarf::DW_AT_name, Name); in constructEnumTypeDIE()
1589 addDIEEntry(SPDie, dwarf::DW_AT_containing_type, *NDie); in constructContainingTypeDIEs()
1597 addString(MemberDie, dwarf::DW_AT_name, Name); in constructMemberDIE()
1606 if (DT->getTag() == dwarf::DW_TAG_inheritance && DT->isVirtual()) { in constructMemberDIE()
1613 addUInt(*VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_dup); in constructMemberDIE()
1614 addUInt(*VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_deref); in constructMemberDIE()
1615 addUInt(*VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_constu); in constructMemberDIE()
1616 addUInt(*VBaseLocationDie, dwarf::DW_FORM_udata, DT->getOffsetInBits()); in constructMemberDIE()
1617 addUInt(*VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_minus); in constructMemberDIE()
1618 addUInt(*VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_deref); in constructMemberDIE()
1619 addUInt(*VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_plus); in constructMemberDIE()
1621 addBlock(MemberDie, dwarf::DW_AT_data_member_location, VBaseLocationDie); in constructMemberDIE()
1632 addUInt(MemberDie, dwarf::DW_AT_byte_size, std::nullopt, FieldSize / 8); in constructMemberDIE()
1633 addUInt(MemberDie, dwarf::DW_AT_bit_size, std::nullopt, Size); in constructMemberDIE()
1655 addUInt(MemberDie, dwarf::DW_AT_bit_offset, std::nullopt, Offset); in constructMemberDIE()
1658 addUInt(MemberDie, dwarf::DW_AT_data_bit_offset, std::nullopt, Offset); in constructMemberDIE()
1664 addUInt(MemberDie, dwarf::DW_AT_alignment, dwarf::DW_FORM_udata, in constructMemberDIE()
1670 addUInt(*MemLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_plus_uconst); in constructMemberDIE()
1671 addUInt(*MemLocationDie, dwarf::DW_FORM_udata, OffsetInBytes); in constructMemberDIE()
1672 addBlock(MemberDie, dwarf::DW_AT_data_member_location, MemLocationDie); in constructMemberDIE()
1679 addUInt(MemberDie, dwarf::DW_AT_data_member_location, in constructMemberDIE()
1680 dwarf::DW_FORM_udata, OffsetInBytes); in constructMemberDIE()
1682 addUInt(MemberDie, dwarf::DW_AT_data_member_location, std::nullopt, in constructMemberDIE()
1690 addUInt(MemberDie, dwarf::DW_AT_virtuality, dwarf::DW_FORM_data1, in constructMemberDIE()
1691 dwarf::DW_VIRTUALITY_virtual); in constructMemberDIE()
1696 addAttribute(MemberDie, dwarf::DW_AT_APPLE_property, in constructMemberDIE()
1697 dwarf::DW_FORM_ref4, DIEEntry(*PDie)); in constructMemberDIE()
1700 addFlag(MemberDie, dwarf::DW_AT_artificial); in constructMemberDIE()
1712 assert(dwarf::isType(ContextDIE->getTag()) && in getOrCreateStaticMemberDIE()
1722 addString(StaticMemberDIE, dwarf::DW_AT_name, DT->getName()); in getOrCreateStaticMemberDIE()
1725 addFlag(StaticMemberDIE, dwarf::DW_AT_external); in getOrCreateStaticMemberDIE()
1726 addFlag(StaticMemberDIE, dwarf::DW_AT_declaration); in getOrCreateStaticMemberDIE()
1738 addUInt(StaticMemberDIE, dwarf::DW_AT_alignment, dwarf::DW_FORM_udata, in getOrCreateStaticMemberDIE()
1744 void DwarfUnit::emitCommonHeader(bool UseOffsets, dwarf::UnitType UT) { in emitCommonHeader()
1788 DD->useSplitDwarf() ? dwarf::DW_UT_split_type in emitHeader()
1789 : dwarf::DW_UT_type); in emitHeader()
1797 void DwarfUnit::addSectionDelta(DIE &Die, dwarf::Attribute Attribute, in addSectionDelta()
1803 void DwarfUnit::addSectionLabel(DIE &Die, dwarf::Attribute Attribute, in addSectionLabel()
1837 addSectionLabel(getUnitDie(), dwarf::DW_AT_str_offsets_base, in addStringOffsetsStart()
1846 addSectionLabel(getUnitDie(), dwarf::DW_AT_rnglists_base, in addRnglistsBase()