Lines Matching refs:dwarf
9 // This file contains support for constructing a dwarf compile unit.
46 CU.addUInt(getActiveDIE(), dwarf::DW_FORM_data1, Op);
50 CU.addSInt(getActiveDIE(), dwarf::DW_FORM_sdata, Value);
54 CU.addUInt(getActiveDIE(), dwarf::DW_FORM_udata, Value);
58 CU.addUInt(getActiveDIE(), dwarf::DW_FORM_data1, Value);
83 DwarfUnit::DwarfUnit(dwarf::Tag UnitTag, const DICompileUnit *Node,
92 : DwarfUnit(dwarf::DW_TAG_type_unit, CU.getCUNode(), A, DW, DWU, UniqueID),
108 case dwarf::DW_LANG_C:
109 case dwarf::DW_LANG_C89:
110 case dwarf::DW_LANG_C_plus_plus:
113 case dwarf::DW_LANG_Fortran77:
114 case dwarf::DW_LANG_Fortran90:
118 case dwarf::DW_LANG_C99:
119 case dwarf::DW_LANG_ObjC:
120 case dwarf::DW_LANG_ObjC_plus_plus:
125 case dwarf::DW_LANG_Fortran95:
131 case dwarf::DW_LANG_D:
132 case dwarf::DW_LANG_Java:
133 case dwarf::DW_LANG_Python:
134 case dwarf::DW_LANG_UPC:
139 case dwarf::DW_LANG_Ada83:
140 case dwarf::DW_LANG_Ada95:
141 case dwarf::DW_LANG_Cobol74:
142 case dwarf::DW_LANG_Cobol85:
143 case dwarf::DW_LANG_Modula2:
144 case dwarf::DW_LANG_Pascal83:
145 case dwarf::DW_LANG_PLI:
151 case dwarf::DW_LANG_BLISS:
152 case dwarf::DW_LANG_C11:
153 case dwarf::DW_LANG_C_plus_plus_03:
154 case dwarf::DW_LANG_C_plus_plus_11:
155 case dwarf::DW_LANG_C_plus_plus_14:
156 case dwarf::DW_LANG_Dylan:
157 case dwarf::DW_LANG_Go:
158 case dwarf::DW_LANG_Haskell:
159 case dwarf::DW_LANG_OCaml:
160 case dwarf::DW_LANG_OpenCL:
161 case dwarf::DW_LANG_RenderScript:
162 case dwarf::DW_LANG_Rust:
163 case dwarf::DW_LANG_Swift:
168 case dwarf::DW_LANG_Fortran03:
169 case dwarf::DW_LANG_Fortran08:
170 case dwarf::DW_LANG_Julia:
171 case dwarf::DW_LANG_Modula3:
214 void DwarfUnit::addFlag(DIE &Die, dwarf::Attribute Attribute) {
216 addAttribute(Die, Attribute, dwarf::DW_FORM_flag_present, DIEInteger(1));
218 addAttribute(Die, Attribute, dwarf::DW_FORM_flag, DIEInteger(1));
221 void DwarfUnit::addUInt(DIEValueList &Die, dwarf::Attribute Attribute,
222 std::optional<dwarf::Form> Form, uint64_t Integer) {
225 assert(Form != dwarf::DW_FORM_implicit_const &&
230 void DwarfUnit::addUInt(DIEValueList &Block, dwarf::Form Form,
232 addUInt(Block, (dwarf::Attribute)0, Form, Integer);
235 void DwarfUnit::addSInt(DIEValueList &Die, dwarf::Attribute Attribute,
236 std::optional<dwarf::Form> Form, int64_t Integer) {
242 void DwarfUnit::addSInt(DIELoc &Die, std::optional<dwarf::Form> Form,
244 addSInt(Die, (dwarf::Attribute)0, Form, Integer);
247 void DwarfUnit::addString(DIE &Die, dwarf::Attribute Attribute,
253 addAttribute(Die, Attribute, dwarf::DW_FORM_string,
258 dwarf::Form IxForm =
259 isDwoUnit() ? dwarf::DW_FORM_GNU_str_index : dwarf::DW_FORM_strp;
262 useSegmentedStringOffsetsTable() || IxForm == dwarf::DW_FORM_GNU_str_index
268 IxForm = dwarf::DW_FORM_strx1;
271 IxForm = dwarf::DW_FORM_strx4;
273 IxForm = dwarf::DW_FORM_strx3;
275 IxForm = dwarf::DW_FORM_strx2;
280 void DwarfUnit::addLabel(DIEValueList &Die, dwarf::Attribute Attribute,
281 dwarf::Form Form, const MCSymbol *Label) {
285 void DwarfUnit::addLabel(DIELoc &Die, dwarf::Form Form, const MCSymbol *Label) {
286 addLabel(Die, (dwarf::Attribute)0, Form, Label);
289 void DwarfUnit::addSectionOffset(DIE &Die, dwarf::Attribute Attribute,
300 addSectionOffset(getUnitDie(), dwarf::DW_AT_stmt_list, 0);
318 addUInt(Die, dwarf::DW_FORM_data1, dwarf::DW_OP_addrx);
319 addUInt(Die, dwarf::DW_FORM_addrx, Index);
321 addUInt(Die, dwarf::DW_FORM_data1, dwarf::DW_OP_GNU_addr_index);
322 addUInt(Die, dwarf::DW_FORM_GNU_addr_index, Index);
326 addUInt(Die, dwarf::DW_FORM_data1, dwarf::DW_OP_const4u);
327 addLabelDelta(Die, (dwarf::Attribute)0, Label, Base);
328 addUInt(Die, dwarf::DW_FORM_data1, dwarf::DW_OP_plus);
343 addUInt(Die, dwarf::DW_FORM_data1, dwarf::DW_OP_addr);
344 addLabel(Die, dwarf::DW_FORM_addr, Sym);
347 void DwarfUnit::addLabelDelta(DIEValueList &Die, dwarf::Attribute Attribute,
349 addAttribute(Die, Attribute, dwarf::DW_FORM_data4,
353 void DwarfUnit::addDIEEntry(DIE &Die, dwarf::Attribute Attribute, DIE &Entry) {
362 addFlag(Die, dwarf::DW_AT_declaration);
364 addAttribute(Die, dwarf::DW_AT_signature, dwarf::DW_FORM_ref_sig8,
368 void DwarfUnit::addDIEEntry(DIE &Die, dwarf::Attribute Attribute,
380 EntryCU == CU ? dwarf::DW_FORM_ref4 : dwarf::DW_FORM_ref_addr,
384 DIE &DwarfUnit::createAndAddDIE(dwarf::Tag Tag, DIE &Parent, const DINode *N) {
391 void DwarfUnit::addBlock(DIE &Die, dwarf::Attribute Attribute, DIELoc *Loc) {
397 void DwarfUnit::addBlock(DIE &Die, dwarf::Attribute Attribute, dwarf::Form Form,
404 void DwarfUnit::addBlock(DIE &Die, dwarf::Attribute Attribute,
414 addUInt(Die, dwarf::DW_AT_decl_file, std::nullopt, FileID);
415 addUInt(Die, dwarf::DW_AT_decl_line, std::nullopt, Line);
471 addUInt(Die, dwarf::DW_AT_const_value,
472 Unsigned ? dwarf::DW_FORM_udata : dwarf::DW_FORM_sdata, Val);
502 addUInt(*Block, dwarf::DW_FORM_data1, c);
505 addBlock(Die, dwarf::DW_AT_const_value, Block);
511 DD->getDwarfVersion() >= 4 ? dwarf::DW_AT_linkage_name
512 : dwarf::DW_AT_MIPS_linkage_name,
529 DIE &TT = createAndAddDIE(dwarf::DW_TAG_thrown_type, Die);
536 addUInt(Die, dwarf::DW_AT_accessibility, dwarf::DW_FORM_data1,
537 dwarf::DW_ACCESS_protected);
539 addUInt(Die, dwarf::DW_AT_accessibility, dwarf::DW_FORM_data1,
540 dwarf::DW_ACCESS_private);
542 addUInt(Die, dwarf::DW_AT_accessibility, dwarf::DW_FORM_data1,
543 dwarf::DW_ACCESS_public);
619 if (Ty->getTag() == dwarf::DW_TAG_restrict_type && DD->getDwarfVersion() <= 2)
623 if (Ty->getTag() == dwarf::DW_TAG_atomic_type && DD->getDwarfVersion() < 5)
654 unsigned Flags = IsImplementation ? dwarf::DW_FLAG_type_implementation : 0;
669 dwarf::Attribute Attribute) {
679 if (!dwarf::isCPlusPlus((dwarf::SourceLanguage)getLanguage()))
713 addString(Buffer, dwarf::DW_AT_name, Name);
716 if (BTy->getTag() == dwarf::DW_TAG_unspecified_type)
719 if (BTy->getTag() != dwarf::DW_TAG_string_type)
720 addUInt(Buffer, dwarf::DW_AT_encoding, dwarf::DW_FORM_data1,
724 addUInt(Buffer, dwarf::DW_AT_byte_size, std::nullopt, Size);
727 addUInt(Buffer, dwarf::DW_AT_endianity, std::nullopt, dwarf::DW_END_big);
729 addUInt(Buffer, dwarf::DW_AT_endianity, std::nullopt, dwarf::DW_END_little);
737 addString(Buffer, dwarf::DW_AT_name, Name);
741 addDIEEntry(Buffer, dwarf::DW_AT_string_length, *VarDIE);
750 addBlock(Buffer, dwarf::DW_AT_string_length, DwarfExpr.finalize());
753 addUInt(Buffer, dwarf::DW_AT_byte_size, std::nullopt, Size);
763 addBlock(Buffer, dwarf::DW_AT_data_location, DwarfExpr.finalize());
768 addUInt(Buffer, dwarf::DW_AT_encoding, dwarf::DW_FORM_data1,
786 addString(Buffer, dwarf::DW_AT_name, Name);
792 if (Tag == dwarf::DW_TAG_typedef && DD->getDwarfVersion() >= 5) {
795 addUInt(Buffer, dwarf::DW_AT_alignment, dwarf::DW_FORM_udata,
800 if (Size && Tag != dwarf::DW_TAG_pointer_type
801 && Tag != dwarf::DW_TAG_ptr_to_member_type
802 && Tag != dwarf::DW_TAG_reference_type
803 && Tag != dwarf::DW_TAG_rvalue_reference_type)
804 addUInt(Buffer, dwarf::DW_AT_byte_size, std::nullopt, Size);
806 if (Tag == dwarf::DW_TAG_ptr_to_member_type)
807 addDIEEntry(Buffer, dwarf::DW_AT_containing_type,
820 addUInt(Buffer, dwarf::DW_AT_address_class, dwarf::DW_FORM_data4,
824 if (Tag == dwarf::DW_TAG_template_alias)
828 addUInt(Buffer, dwarf::DW_AT_LLVM_ptrauth_key, dwarf::DW_FORM_data1,
831 addFlag(Buffer, dwarf::DW_AT_LLVM_ptrauth_address_discriminated);
832 addUInt(Buffer, dwarf::DW_AT_LLVM_ptrauth_extra_discriminator,
833 dwarf::DW_FORM_data2, PtrAuthData->extraDiscriminator());
835 addFlag(Buffer, dwarf::DW_AT_LLVM_ptrauth_isa_pointer);
837 addFlag(Buffer, dwarf::DW_AT_LLVM_ptrauth_authenticates_null_values);
846 createAndAddDIE(dwarf::DW_TAG_unspecified_parameters, Buffer);
848 DIE &Arg = createAndAddDIE(dwarf::DW_TAG_formal_parameter, Buffer);
851 addFlag(Arg, dwarf::DW_AT_artificial);
871 if (isPrototyped && dwarf::isC((dwarf::SourceLanguage)getLanguage()))
872 addFlag(Buffer, dwarf::DW_AT_prototyped);
875 if (CTy->getCC() && CTy->getCC() != dwarf::DW_CC_normal)
876 addUInt(Buffer, dwarf::DW_AT_calling_convention, dwarf::DW_FORM_data1,
880 addFlag(Buffer, dwarf::DW_AT_reference);
883 addFlag(Buffer, dwarf::DW_AT_rvalue_reference);
895 DIE &AnnotationDie = createAndAddDIE(dwarf::DW_TAG_LLVM_annotation, Buffer);
896 addString(AnnotationDie, dwarf::DW_AT_name, Name->getString());
898 addString(AnnotationDie, dwarf::DW_AT_const_value, Data->getString());
915 case dwarf::DW_TAG_array_type:
918 case dwarf::DW_TAG_enumeration_type:
921 case dwarf::DW_TAG_variant_part:
922 case dwarf::DW_TAG_structure_type:
923 case dwarf::DW_TAG_union_type:
924 case dwarf::DW_TAG_class_type:
925 case dwarf::DW_TAG_namelist: {
928 if (Tag == dwarf::DW_TAG_variant_part) {
936 addDIEEntry(Buffer, dwarf::DW_AT_discr, DiscMember);
941 if (Tag == dwarf::DW_TAG_class_type ||
942 Tag == dwarf::DW_TAG_structure_type || Tag == dwarf::DW_TAG_union_type)
953 if (DDTy->getTag() == dwarf::DW_TAG_friend) {
954 DIE &ElemDie = createAndAddDIE(dwarf::DW_TAG_friend, Buffer);
955 addType(ElemDie, DDTy->getBaseType(), dwarf::DW_AT_friend);
958 } else if (Tag == dwarf::DW_TAG_variant_part) {
961 DIE &Variant = createAndAddDIE(dwarf::DW_TAG_variant, Buffer);
965 addUInt(Variant, dwarf::DW_AT_discr_value, std::nullopt,
968 addSInt(Variant, dwarf::DW_AT_discr_value, std::nullopt,
978 addString(ElemDie, dwarf::DW_AT_APPLE_property_name, PropertyName);
984 addString(ElemDie, dwarf::DW_AT_APPLE_property_getter, GetterName);
987 addString(ElemDie, dwarf::DW_AT_APPLE_property_setter, SetterName);
989 addUInt(ElemDie, dwarf::DW_AT_APPLE_property_attribute, std::nullopt,
992 if (Composite->getTag() == dwarf::DW_TAG_variant_part) {
996 } else if (Tag == dwarf::DW_TAG_namelist) {
1000 DIE &ItemDie = createAndAddDIE(dwarf::DW_TAG_namelist_item, Buffer);
1001 addDIEEntry(ItemDie, dwarf::DW_AT_namelist_item, *VarDIE);
1007 addFlag(Buffer, dwarf::DW_AT_APPLE_block);
1010 addFlag(Buffer, dwarf::DW_AT_export_symbols);
1017 addDIEEntry(Buffer, dwarf::DW_AT_containing_type,
1021 addFlag(Buffer, dwarf::DW_AT_APPLE_objc_complete_type);
1028 CC = dwarf::DW_CC_pass_by_value;
1030 CC = dwarf::DW_CC_pass_by_reference;
1032 addUInt(Buffer, dwarf::DW_AT_calling_convention, dwarf::DW_FORM_data1,
1043 addString(Buffer, dwarf::DW_AT_name, Name);
1047 if (Tag == dwarf::DW_TAG_enumeration_type ||
1048 Tag == dwarf::DW_TAG_class_type || Tag == dwarf::DW_TAG_structure_type ||
1049 Tag == dwarf::DW_TAG_union_type) {
1054 (!CTy->isForwardDecl() || Tag == dwarf::DW_TAG_enumeration_type))
1055 addUInt(Buffer, dwarf::DW_AT_byte_size, std::nullopt, Size);
1058 addUInt(Buffer, dwarf::DW_AT_byte_size, std::nullopt, 0);
1062 addFlag(Buffer, dwarf::DW_AT_declaration);
1074 addUInt(Buffer, dwarf::DW_AT_APPLE_runtime_class, dwarf::DW_FORM_data1,
1079 addUInt(Buffer, dwarf::DW_AT_alignment, dwarf::DW_FORM_udata,
1087 createAndAddDIE(dwarf::DW_TAG_template_type_parameter, Buffer);
1092 addString(ParamDIE, dwarf::DW_AT_name, TP->getName());
1094 addFlag(ParamDIE, dwarf::DW_AT_default_value);
1103 if (VP->getTag() == dwarf::DW_TAG_template_value_parameter)
1106 addString(ParamDIE, dwarf::DW_AT_name, VP->getName());
1108 addFlag(ParamDIE, dwarf::DW_AT_default_value);
1122 addUInt(*Loc, dwarf::DW_FORM_data1, dwarf::DW_OP_stack_value);
1123 addBlock(ParamDIE, dwarf::DW_AT_location, Loc);
1125 } else if (VP->getTag() == dwarf::DW_TAG_GNU_template_template_param) {
1127 addString(ParamDIE, dwarf::DW_AT_GNU_template_name,
1129 } else if (VP->getTag() == dwarf::DW_TAG_GNU_template_parameter_pack) {
1142 DIE &NDie = createAndAddDIE(dwarf::DW_TAG_namespace, *ContextDIE, NS);
1146 addString(NDie, dwarf::DW_AT_name, NS->getName());
1152 addFlag(NDie, dwarf::DW_AT_export_symbols);
1163 DIE &MDie = createAndAddDIE(dwarf::DW_TAG_module, *ContextDIE, M);
1166 addString(MDie, dwarf::DW_AT_name, M->getName());
1170 addString(MDie, dwarf::DW_AT_LLVM_config_macros,
1173 addString(MDie, dwarf::DW_AT_LLVM_include_path, M->getIncludePath());
1175 addString(MDie, dwarf::DW_AT_LLVM_apinotes, M->getAPINotesFile());
1177 addUInt(MDie, dwarf::DW_AT_decl_file, std::nullopt,
1180 addUInt(MDie, dwarf::DW_AT_decl_line, std::nullopt, M->getLineNo());
1182 addFlag(MDie, dwarf::DW_AT_declaration);
1207 DIE &SPDie = createAndAddDIE(dwarf::DW_TAG_subprogram, *ContextDIE, SP);
1243 addUInt(SPDie, dwarf::DW_AT_decl_file, std::nullopt, DefID);
1246 addUInt(SPDie, dwarf::DW_AT_decl_line, std::nullopt, SP->getLine());
1268 addDIEEntry(SPDie, dwarf::DW_AT_specification, *DeclDie);
1284 addString(SPDie, dwarf::DW_AT_name, SP->getName());
1297 if (SP->isPrototyped() && dwarf::isC((dwarf::SourceLanguage)getLanguage()))
1298 addFlag(SPDie, dwarf::DW_AT_prototyped);
1301 addFlag(SPDie, dwarf::DW_AT_APPLE_objc_direct);
1311 if (CC && CC != dwarf::DW_CC_normal)
1312 addUInt(SPDie, dwarf::DW_AT_calling_convention, dwarf::DW_FORM_data1, CC);
1322 addUInt(SPDie, dwarf::DW_AT_virtuality, dwarf::DW_FORM_data1, VK);
1325 addUInt(*Block, dwarf::DW_FORM_data1, dwarf::DW_OP_constu);
1326 addUInt(*Block, dwarf::DW_FORM_udata, SP->getVirtualIndex());
1327 addBlock(SPDie, dwarf::DW_AT_vtable_elem_location, Block);
1333 addFlag(SPDie, dwarf::DW_AT_declaration);
1343 addFlag(SPDie, dwarf::DW_AT_artificial);
1346 addFlag(SPDie, dwarf::DW_AT_external);
1350 addFlag(SPDie, dwarf::DW_AT_APPLE_optimized);
1353 addUInt(SPDie, dwarf::DW_AT_APPLE_isa, dwarf::DW_FORM_flag, isa);
1357 addFlag(SPDie, dwarf::DW_AT_reference);
1360 addFlag(SPDie, dwarf::DW_AT_rvalue_reference);
1363 addFlag(SPDie, dwarf::DW_AT_noreturn);
1368 addFlag(SPDie, dwarf::DW_AT_explicit);
1371 addFlag(SPDie, dwarf::DW_AT_main_subprogram);
1373 addFlag(SPDie, dwarf::DW_AT_pure);
1375 addFlag(SPDie, dwarf::DW_AT_elemental);
1377 addFlag(SPDie, dwarf::DW_AT_recursive);
1380 addString(SPDie, dwarf::DW_AT_trampoline, SP->getTargetFuncName());
1383 addFlag(SPDie, dwarf::DW_AT_deleted);
1388 DIE &DW_Subrange = createAndAddDIE(dwarf::DW_TAG_subrange_type, Buffer);
1389 addDIEEntry(DW_Subrange, dwarf::DW_AT_type, *IndexTy);
1397 auto AddBoundTypeEntry = [&](dwarf::Attribute Attr,
1409 if (Attr == dwarf::DW_AT_count) {
1412 } else if (Attr != dwarf::DW_AT_lower_bound || DefaultLowerBound == -1 ||
1414 addSInt(DW_Subrange, Attr, dwarf::DW_FORM_sdata, BI->getSExtValue());
1418 AddBoundTypeEntry(dwarf::DW_AT_lower_bound, SR->getLowerBound());
1420 AddBoundTypeEntry(dwarf::DW_AT_count, SR->getCount());
1422 AddBoundTypeEntry(dwarf::DW_AT_upper_bound, SR->getUpperBound());
1424 AddBoundTypeEntry(dwarf::DW_AT_byte_stride, SR->getStride());
1431 createAndAddDIE(dwarf::DW_TAG_generic_subrange, Buffer);
1432 addDIEEntry(DwGenericSubrange, dwarf::DW_AT_type, *IndexTy);
1436 auto AddBoundTypeEntry = [&](dwarf::Attribute Attr,
1445 if (Attr != dwarf::DW_AT_lower_bound || DefaultLowerBound == -1 ||
1447 addSInt(DwGenericSubrange, Attr, dwarf::DW_FORM_sdata,
1459 AddBoundTypeEntry(dwarf::DW_AT_lower_bound, GSR->getLowerBound());
1460 AddBoundTypeEntry(dwarf::DW_AT_count, GSR->getCount());
1461 AddBoundTypeEntry(dwarf::DW_AT_upper_bound, GSR->getUpperBound());
1462 AddBoundTypeEntry(dwarf::DW_AT_byte_stride, GSR->getStride());
1469 IndexTyDie = &createAndAddDIE(dwarf::DW_TAG_base_type, getUnitDie());
1471 addString(*IndexTyDie, dwarf::DW_AT_name, Name);
1472 addUInt(*IndexTyDie, dwarf::DW_AT_byte_size, std::nullopt, sizeof(int64_t));
1473 addUInt(*IndexTyDie, dwarf::DW_AT_encoding, dwarf::DW_FORM_data1,
1474 dwarf::getArrayIndexTypeEncoding(
1475 (dwarf::SourceLanguage)getLanguage()));
1496 Elements[0]->getTag() == dwarf::DW_TAG_subrange_type &&
1512 addFlag(Buffer, dwarf::DW_AT_GNU_vector);
1514 addUInt(Buffer, dwarf::DW_AT_byte_size, std::nullopt,
1520 addDIEEntry(Buffer, dwarf::DW_AT_data_location, *VarDIE);
1526 addBlock(Buffer, dwarf::DW_AT_data_location, DwarfExpr.finalize());
1531 addDIEEntry(Buffer, dwarf::DW_AT_associated, *VarDIE);
1537 addBlock(Buffer, dwarf::DW_AT_associated, DwarfExpr.finalize());
1542 addDIEEntry(Buffer, dwarf::DW_AT_allocated, *VarDIE);
1548 addBlock(Buffer, dwarf::DW_AT_allocated, DwarfExpr.finalize());
1552 addSInt(Buffer, dwarf::DW_AT_rank, dwarf::DW_FORM_sdata,
1559 addBlock(Buffer, dwarf::DW_AT_rank, DwarfExpr.finalize());
1575 if (Element->getTag() == dwarf::DW_TAG_subrange_type)
1577 else if (Element->getTag() == dwarf::DW_TAG_generic_subrange)
1591 addFlag(Buffer, dwarf::DW_AT_enum_class);
1603 DIE &Enumerator = createAndAddDIE(dwarf::DW_TAG_enumerator, Buffer);
1605 addString(Enumerator, dwarf::DW_AT_name, Name);
1622 addDIEEntry(SPDie, dwarf::DW_AT_containing_type, *NDie);
1630 addString(MemberDie, dwarf::DW_AT_name, Name);
1639 if (DT->getTag() == dwarf::DW_TAG_inheritance && DT->isVirtual()) {
1646 addUInt(*VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_dup);
1647 addUInt(*VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_deref);
1648 addUInt(*VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_constu);
1649 addUInt(*VBaseLocationDie, dwarf::DW_FORM_udata, DT->getOffsetInBits());
1650 addUInt(*VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_minus);
1651 addUInt(*VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_deref);
1652 addUInt(*VBaseLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_plus);
1654 addBlock(MemberDie, dwarf::DW_AT_data_member_location, VBaseLocationDie);
1665 addUInt(MemberDie, dwarf::DW_AT_byte_size, std::nullopt, FieldSize / 8);
1666 addUInt(MemberDie, dwarf::DW_AT_bit_size, std::nullopt, Size);
1691 addSInt(MemberDie, dwarf::DW_AT_bit_offset, dwarf::DW_FORM_sdata,
1694 addUInt(MemberDie, dwarf::DW_AT_bit_offset, std::nullopt,
1698 addUInt(MemberDie, dwarf::DW_AT_data_bit_offset, std::nullopt, Offset);
1704 addUInt(MemberDie, dwarf::DW_AT_alignment, dwarf::DW_FORM_udata,
1710 addUInt(*MemLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_plus_uconst);
1711 addUInt(*MemLocationDie, dwarf::DW_FORM_udata, OffsetInBytes);
1712 addBlock(MemberDie, dwarf::DW_AT_data_member_location, MemLocationDie);
1719 addUInt(MemberDie, dwarf::DW_AT_data_member_location,
1720 dwarf::DW_FORM_udata, OffsetInBytes);
1722 addUInt(MemberDie, dwarf::DW_AT_data_member_location, std::nullopt,
1730 addUInt(MemberDie, dwarf::DW_AT_virtuality, dwarf::DW_FORM_data1,
1731 dwarf::DW_VIRTUALITY_virtual);
1736 addAttribute(MemberDie, dwarf::DW_AT_APPLE_property,
1737 dwarf::DW_FORM_ref4, DIEEntry(*PDie));
1740 addFlag(MemberDie, dwarf::DW_AT_artificial);
1752 assert(dwarf::isType(ContextDIE->getTag()) &&
1762 addString(StaticMemberDIE, dwarf::DW_AT_name, DT->getName());
1765 addFlag(StaticMemberDIE, dwarf::DW_AT_external);
1766 addFlag(StaticMemberDIE, dwarf::DW_AT_declaration);
1778 addUInt(StaticMemberDIE, dwarf::DW_AT_alignment, dwarf::DW_FORM_udata,
1784 void DwarfUnit::emitCommonHeader(bool UseOffsets, dwarf::UnitType UT) {
1828 DD->useSplitDwarf() ? dwarf::DW_UT_split_type
1829 : dwarf::DW_UT_type);
1837 void DwarfUnit::addSectionDelta(DIE &Die, dwarf::Attribute Attribute,
1843 void DwarfUnit::addSectionLabel(DIE &Die, dwarf::Attribute Attribute,
1877 addSectionLabel(getUnitDie(), dwarf::DW_AT_str_offsets_base,
1886 addSectionLabel(getUnitDie(), dwarf::DW_AT_rnglists_base,