1 //===------ ObjectFormats.h - Object format details for ORC -----*- C++ -*-===//
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 
13 #ifndef LLVM_EXECUTIONENGINE_ORC_SHARED_OBJECTFORMATS_H
14 #define LLVM_EXECUTIONENGINE_ORC_SHARED_OBJECTFORMATS_H
15 
16 #include "llvm/ADT/StringRef.h"
17 
18 namespace llvm {
19 namespace orc {
20 
21 // MachO section names.
22 
23 extern StringRef MachODataCommonSectionName;
24 extern StringRef MachODataDataSectionName;
25 extern StringRef MachOEHFrameSectionName;
26 extern StringRef MachOCompactUnwindInfoSectionName;
27 extern StringRef MachOCStringSectionName;
28 extern StringRef MachOModInitFuncSectionName;
29 extern StringRef MachOObjCCatListSectionName;
30 extern StringRef MachOObjCCatList2SectionName;
31 extern StringRef MachOObjCClassListSectionName;
32 extern StringRef MachOObjCClassNameSectionName;
33 extern StringRef MachOObjCClassRefsSectionName;
34 extern StringRef MachOObjCConstSectionName;
35 extern StringRef MachOObjCDataSectionName;
36 extern StringRef MachOObjCImageInfoSectionName;
37 extern StringRef MachOObjCMethNameSectionName;
38 extern StringRef MachOObjCMethTypeSectionName;
39 extern StringRef MachOObjCNLCatListSectionName;
40 extern StringRef MachOObjCSelRefsSectionName;
41 extern StringRef MachOSwift5ProtoSectionName;
42 extern StringRef MachOSwift5ProtosSectionName;
43 extern StringRef MachOSwift5TypesSectionName;
44 extern StringRef MachOSwift5TypeRefSectionName;
45 extern StringRef MachOSwift5FieldMetadataSectionName;
46 extern StringRef MachOSwift5EntrySectionName;
47 extern StringRef MachOThreadBSSSectionName;
48 extern StringRef MachOThreadDataSectionName;
49 extern StringRef MachOThreadVarsSectionName;
50 
51 extern StringRef MachOInitSectionNames[19];
52 
53 // ELF section names.
54 extern StringRef ELFEHFrameSectionName;
55 
56 extern StringRef ELFInitArrayFuncSectionName;
57 extern StringRef ELFInitFuncSectionName;
58 extern StringRef ELFFiniArrayFuncSectionName;
59 extern StringRef ELFFiniFuncSectionName;
60 extern StringRef ELFCtorArrayFuncSectionName;
61 extern StringRef ELFDtorArrayFuncSectionName;
62 
63 extern StringRef ELFInitSectionNames[3];
64 
65 extern StringRef ELFThreadBSSSectionName;
66 extern StringRef ELFThreadDataSectionName;
67 
68 bool isMachOInitializerSection(StringRef SegName, StringRef SecName);
69 bool isMachOInitializerSection(StringRef QualifiedName);
70 
71 bool isELFInitializerSection(StringRef SecName);
72 
73 bool isCOFFInitializerSection(StringRef Name);
74 
75 } // end namespace orc
76 } // end namespace llvm
77 
78 #endif // LLVM_EXECUTIONENGINE_ORC_SHARED_MEMORYFLAGS_H
79