106c3fb27SDimitry Andric //===------ ObjectFormats.h - Object format details for ORC -----*- C++ -*-===//
206c3fb27SDimitry Andric //
306c3fb27SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
406c3fb27SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
506c3fb27SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
606c3fb27SDimitry Andric //
706c3fb27SDimitry Andric //===----------------------------------------------------------------------===//
806c3fb27SDimitry Andric //
906c3fb27SDimitry Andric // ORC-specific object format details.
1006c3fb27SDimitry Andric //
1106c3fb27SDimitry Andric //===----------------------------------------------------------------------===//
1206c3fb27SDimitry Andric 
1306c3fb27SDimitry Andric #ifndef LLVM_EXECUTIONENGINE_ORC_SHARED_OBJECTFORMATS_H
1406c3fb27SDimitry Andric #define LLVM_EXECUTIONENGINE_ORC_SHARED_OBJECTFORMATS_H
1506c3fb27SDimitry Andric 
1606c3fb27SDimitry Andric #include "llvm/ADT/StringRef.h"
1706c3fb27SDimitry Andric 
1806c3fb27SDimitry Andric namespace llvm {
1906c3fb27SDimitry Andric namespace orc {
2006c3fb27SDimitry Andric 
2106c3fb27SDimitry Andric // MachO section names.
2206c3fb27SDimitry Andric 
2306c3fb27SDimitry Andric extern StringRef MachODataCommonSectionName;
2406c3fb27SDimitry Andric extern StringRef MachODataDataSectionName;
2506c3fb27SDimitry Andric extern StringRef MachOEHFrameSectionName;
2606c3fb27SDimitry Andric extern StringRef MachOCompactUnwindInfoSectionName;
27*5f757f3fSDimitry Andric extern StringRef MachOCStringSectionName;
2806c3fb27SDimitry Andric extern StringRef MachOModInitFuncSectionName;
2906c3fb27SDimitry Andric extern StringRef MachOObjCCatListSectionName;
3006c3fb27SDimitry Andric extern StringRef MachOObjCCatList2SectionName;
3106c3fb27SDimitry Andric extern StringRef MachOObjCClassListSectionName;
3206c3fb27SDimitry Andric extern StringRef MachOObjCClassNameSectionName;
3306c3fb27SDimitry Andric extern StringRef MachOObjCClassRefsSectionName;
3406c3fb27SDimitry Andric extern StringRef MachOObjCConstSectionName;
3506c3fb27SDimitry Andric extern StringRef MachOObjCDataSectionName;
3606c3fb27SDimitry Andric extern StringRef MachOObjCImageInfoSectionName;
3706c3fb27SDimitry Andric extern StringRef MachOObjCMethNameSectionName;
3806c3fb27SDimitry Andric extern StringRef MachOObjCMethTypeSectionName;
3906c3fb27SDimitry Andric extern StringRef MachOObjCNLCatListSectionName;
4006c3fb27SDimitry Andric extern StringRef MachOObjCSelRefsSectionName;
4106c3fb27SDimitry Andric extern StringRef MachOSwift5ProtoSectionName;
4206c3fb27SDimitry Andric extern StringRef MachOSwift5ProtosSectionName;
4306c3fb27SDimitry Andric extern StringRef MachOSwift5TypesSectionName;
4406c3fb27SDimitry Andric extern StringRef MachOSwift5TypeRefSectionName;
4506c3fb27SDimitry Andric extern StringRef MachOSwift5FieldMetadataSectionName;
4606c3fb27SDimitry Andric extern StringRef MachOSwift5EntrySectionName;
4706c3fb27SDimitry Andric extern StringRef MachOThreadBSSSectionName;
4806c3fb27SDimitry Andric extern StringRef MachOThreadDataSectionName;
4906c3fb27SDimitry Andric extern StringRef MachOThreadVarsSectionName;
5006c3fb27SDimitry Andric 
5106c3fb27SDimitry Andric extern StringRef MachOInitSectionNames[19];
5206c3fb27SDimitry Andric 
5306c3fb27SDimitry Andric // ELF section names.
5406c3fb27SDimitry Andric extern StringRef ELFEHFrameSectionName;
55*5f757f3fSDimitry Andric 
5606c3fb27SDimitry Andric extern StringRef ELFInitArrayFuncSectionName;
57*5f757f3fSDimitry Andric extern StringRef ELFInitFuncSectionName;
58*5f757f3fSDimitry Andric extern StringRef ELFFiniArrayFuncSectionName;
59*5f757f3fSDimitry Andric extern StringRef ELFFiniFuncSectionName;
60*5f757f3fSDimitry Andric extern StringRef ELFCtorArrayFuncSectionName;
61*5f757f3fSDimitry Andric extern StringRef ELFDtorArrayFuncSectionName;
62*5f757f3fSDimitry Andric 
63*5f757f3fSDimitry Andric extern StringRef ELFInitSectionNames[3];
6406c3fb27SDimitry Andric 
6506c3fb27SDimitry Andric extern StringRef ELFThreadBSSSectionName;
6606c3fb27SDimitry Andric extern StringRef ELFThreadDataSectionName;
6706c3fb27SDimitry Andric 
6806c3fb27SDimitry Andric bool isMachOInitializerSection(StringRef SegName, StringRef SecName);
6906c3fb27SDimitry Andric bool isMachOInitializerSection(StringRef QualifiedName);
7006c3fb27SDimitry Andric 
7106c3fb27SDimitry Andric bool isELFInitializerSection(StringRef SecName);
7206c3fb27SDimitry Andric 
7306c3fb27SDimitry Andric bool isCOFFInitializerSection(StringRef Name);
7406c3fb27SDimitry Andric 
7506c3fb27SDimitry Andric } // end namespace orc
7606c3fb27SDimitry Andric } // end namespace llvm
7706c3fb27SDimitry Andric 
7806c3fb27SDimitry Andric #endif // LLVM_EXECUTIONENGINE_ORC_SHARED_MEMORYFLAGS_H
79