LLVM 18.0.0git
ObjectFormats.cpp
Go to the documentation of this file.
1//===---------- ObjectFormats.cpp - Object format details for ORC ---------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// ORC-specific object format details.
10//
11//===----------------------------------------------------------------------===//
12
14
15namespace llvm {
16namespace orc {
17
20StringRef MachOEHFrameSectionName = "__TEXT,__eh_frame";
22StringRef MachOModInitFuncSectionName = "__DATA,__mod_init_func";
23StringRef MachOObjCCatListSectionName = "__DATA,__objc_catlist";
24StringRef MachOObjCCatList2SectionName = "__DATA,__objc_catlist2";
25StringRef MachOObjCClassListSectionName = "__DATA,__objc_classlist";
26StringRef MachOObjCClassNameSectionName = "__TEXT,__objc_classname";
27StringRef MachOObjCClassRefsSectionName = "__DATA,__objc_classrefs";
28StringRef MachOObjCConstSectionName = "__DATA,__objc_const";
29StringRef MachOObjCDataSectionName = "__DATA,__objc_data";
30StringRef MachOObjCImageInfoSectionName = "__DATA,__objc_imageinfo";
31StringRef MachOObjCMethNameSectionName = "__TEXT,__objc_methname";
32StringRef MachOObjCMethTypeSectionName = "__TEXT,__objc_methtype";
33StringRef MachOObjCNLCatListSectionName = "__DATA,__objc_nlcatlist";
34StringRef MachOObjCSelRefsSectionName = "__DATA,__objc_selrefs";
35StringRef MachOSwift5ProtoSectionName = "__TEXT,__swift5_proto";
36StringRef MachOSwift5ProtosSectionName = "__TEXT,__swift5_protos";
37StringRef MachOSwift5TypesSectionName = "__TEXT,__swift5_types";
38StringRef MachOSwift5TypeRefSectionName = "__TEXT,__swift5_typeref";
40StringRef MachOSwift5EntrySectionName = "__TEXT,__swift5_entry";
41StringRef MachOThreadBSSSectionName = "__DATA,__thread_bss";
42StringRef MachOThreadDataSectionName = "__DATA,__thread_data";
43StringRef MachOThreadVarsSectionName = "__DATA,__thread_vars";
44
56};
57
59
66
71};
72
75
77 for (auto &InitSection : MachOInitSectionNames) {
78 // Loop below assumes all MachO init sectios have a length-6
79 // segment name.
80 assert(InitSection[6] == ',' && "Init section seg name has length != 6");
81 if (InitSection.starts_with(SegName) && InitSection.substr(7) == SecName)
82 return true;
83 }
84 return false;
85}
86
88 for (auto &InitSection : MachOInitSectionNames)
89 if (InitSection == QualifiedName)
90 return true;
91 return false;
92}
93
95 for (StringRef InitSection : ELFInitSectionNames) {
96 StringRef Name = SecName;
97 if (Name.consume_front(InitSection) && (Name.empty() || Name[0] == '.'))
98 return true;
99 }
100 return false;
101}
102
104 return SecName.startswith(".CRT");
105}
106
107} // namespace orc
108} // namespace llvm
std::string Name
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:50
bool startswith(StringRef Prefix) const
Definition: StringRef.h:261
StringRef ELFThreadBSSSectionName
StringRef MachOSwift5EntrySectionName
StringRef MachOThreadBSSSectionName
StringRef MachOThreadVarsSectionName
StringRef ELFCtorArrayFuncSectionName
StringRef ELFFiniFuncSectionName
StringRef ELFInitSectionNames[3]
StringRef MachOCompactUnwindInfoSectionName
StringRef ELFEHFrameSectionName
StringRef MachOSwift5ProtosSectionName
StringRef MachOEHFrameSectionName
StringRef MachOModInitFuncSectionName
StringRef MachOInitSectionNames[19]
StringRef MachOObjCConstSectionName
StringRef MachODataDataSectionName
StringRef MachOSwift5ProtoSectionName
bool isMachOInitializerSection(StringRef SegName, StringRef SecName)
StringRef MachOObjCCatListSectionName
StringRef MachOObjCClassRefsSectionName
StringRef ELFFiniArrayFuncSectionName
StringRef MachOObjCDataSectionName
StringRef MachOObjCClassNameSectionName
StringRef MachOObjCMethNameSectionName
StringRef MachOObjCClassListSectionName
StringRef MachOObjCSelRefsSectionName
StringRef MachOSwift5FieldMetadataSectionName
StringRef MachOObjCMethTypeSectionName
StringRef MachOSwift5TypesSectionName
StringRef MachOObjCNLCatListSectionName
StringRef ELFThreadDataSectionName
StringRef ELFInitArrayFuncSectionName
StringRef MachOObjCImageInfoSectionName
StringRef MachOThreadDataSectionName
StringRef MachODataCommonSectionName
bool isCOFFInitializerSection(StringRef Name)
StringRef MachOSwift5TypeRefSectionName
bool isELFInitializerSection(StringRef SecName)
StringRef ELFInitFuncSectionName
StringRef MachOObjCCatList2SectionName
StringRef ELFDtorArrayFuncSectionName
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18