LLVM: lib/MC/MCObjectFileInfo.cpp Source File (original) (raw)
1
2
3
4
5
6
7
8
28
29using namespace llvm;
30
32
33 if (.isOSDarwin())
34 return false;
35
36
38 return true;
39
40
41 if (T.isWatchABI())
42 return true;
43
44
45 if (T.isMacOSX() && .isMacOSXVersionLT(10, 6))
46 return true;
47
48
49 if (T.isiOS() && T.isX86())
50 return true;
51
52
53 if (T.isSimulatorEnvironment())
54 return true;
55
56
57 if (T.isXROS())
58 return true;
59
60 return false;
61}
62
63void MCObjectFileInfo::initMachOMCObjectFileInfo(const Triple &T) {
65 "__TEXT", "__eh_frame",
69
70 if (T.isOSDarwin() &&
72 T.isSimulatorEnvironment()))
74
75 switch (Ctx->emitDwarfUnwindInfo()) {
78 break;
81 break;
85 break;
86 }
87
89
91 = Ctx->getMachOSection("__TEXT", "__text",
96
97
99
101 = Ctx->getMachOSection("__DATA", "__thread_data",
105 = Ctx->getMachOSection("__DATA", "__thread_bss",
108
109
111 = Ctx->getMachOSection("__DATA", "__thread_vars",
114
118
120 = Ctx->getMachOSection("__TEXT", "__cstring",
124 = Ctx->getMachOSection("__TEXT","__ustring", 0,
127 = Ctx->getMachOSection("__TEXT", "__literal4",
131 = Ctx->getMachOSection("__TEXT", "__literal8",
134
136 = Ctx->getMachOSection("__TEXT", "__literal16",
139
141 = Ctx->getMachOSection("__TEXT", "__const", 0,
143
144
145
146
147
148
149
151
153 = Ctx->getMachOSection("__DATA", "__const", 0,
155
158 = Ctx->getMachOSection("__TEXT", "__textcoal_nt",
163 = Ctx->getMachOSection("__TEXT", "__const_coal",
169 } else {
174 }
175
177 = Ctx->getMachOSection("__DATA","__common",
183
184
186 = Ctx->getMachOSection("__DATA", "__la_symbol_ptr",
190 = Ctx->getMachOSection("__DATA", "__nl_symbol_ptr",
193
195 = Ctx->getMachOSection("__DATA", "__thread_ptr",
198
199 AddrSigSection = Ctx->getMachOSection("__DATA", "__llvm_addrsig", 0,
201
202
203 LSDASection = Ctx->getMachOSection("__TEXT", "__gcc_except_tab", 0,
205
209
214
215 if (T.isX86())
221 }
222
223
233
240
244
287
312 StackMapSection = Ctx->getMachOSection("__LLVM_STACKMAPS", "__llvm_stackmaps",
314
315 FaultMapSection = Ctx->getMachOSection("__LLVM_FAULTMAPS", "__llvm_faultmaps",
317
320
321
322
323
324 if (!Ctx->getSwift5ReflectionSegmentName().empty()) {
325#define HANDLE_SWIFT_SECTION(KIND, MACHO, ELF, COFF) \
326 Swift5ReflectionSections \
327 [llvm::binaryformat::Swift5ReflectionSectionKind::KIND] = \
328 Ctx->getMachOSection(Ctx->getSwift5ReflectionSegmentName().data(), \
329 MACHO, 0, SectionKind::getMetadata());
330#include "llvm/BinaryFormat/Swift.def"
331 }
332
334}
335
336void MCObjectFileInfo::initELFMCObjectFileInfo(const Triple &T, bool Large) {
337 switch (T.getArch()) {
342
343
344
345
346 if (PositionIndependent)
348 else
349 FDECFIEncoding = Ctx->getAsmInfo()->getCodePointerSize() == 4
352 break;
360 break;
364 break;
368 break;
371 break;
372 default:
374 break;
375 }
376
380 switch (T.getArch()) {
383 break;
385 SFrameABIArch = sframe::ABI::AArch64EndianLittle;
386 break;
389 break;
390 default:
391 break;
392 }
393
394
395
399
400
403
406
409
412
416
419
422
426
430
434
438
439
440
441
442
443
444
447
450
452
453
454
455
456 if (T.isMIPS())
458
459
461 Ctx->getELFSection(".debug_abbrev", DebugSecType, 0);
462 DwarfInfoSection = Ctx->getELFSection(".debug_info", DebugSecType, 0);
463 DwarfLineSection = Ctx->getELFSection(".debug_line", DebugSecType, 0);
465 Ctx->getELFSection(".debug_line_str", DebugSecType,
467 DwarfFrameSection = Ctx->getELFSection(".debug_frame", DebugSecType, 0);
469 Ctx->getELFSection(".debug_pubnames", DebugSecType, 0);
471 Ctx->getELFSection(".debug_pubtypes", DebugSecType, 0);
473 Ctx->getELFSection(".debug_gnu_pubnames", DebugSecType, 0);
475 Ctx->getELFSection(".debug_gnu_pubtypes", DebugSecType, 0);
477 Ctx->getELFSection(".debug_str", DebugSecType,
479 DwarfLocSection = Ctx->getELFSection(".debug_loc", DebugSecType, 0);
481 Ctx->getELFSection(".debug_aranges", DebugSecType, 0);
483 Ctx->getELFSection(".debug_ranges", DebugSecType, 0);
485 Ctx->getELFSection(".debug_macinfo", DebugSecType, 0);
486 DwarfMacroSection = Ctx->getELFSection(".debug_macro", DebugSecType, 0);
487
488
489
490
501
502
504 Ctx->getELFSection(".debug_str_offsets", DebugSecType, 0);
505 DwarfAddrSection = Ctx->getELFSection(".debug_addr", DebugSecType, 0);
506 DwarfRnglistsSection = Ctx->getELFSection(".debug_rnglists", DebugSecType, 0);
507 DwarfLoclistsSection = Ctx->getELFSection(".debug_loclists", DebugSecType, 0);
508
509
511 Ctx->getELFSection(".debug_info.dwo", DebugSecType, ELF::SHF_EXCLUDE);
513 Ctx->getELFSection(".debug_types.dwo", DebugSecType, ELF::SHF_EXCLUDE);
515 Ctx->getELFSection(".debug_abbrev.dwo", DebugSecType, ELF::SHF_EXCLUDE);
517 ".debug_str.dwo", DebugSecType,
520 Ctx->getELFSection(".debug_line.dwo", DebugSecType, ELF::SHF_EXCLUDE);
522 Ctx->getELFSection(".debug_loc.dwo", DebugSecType, ELF::SHF_EXCLUDE);
526 Ctx->getELFSection(".debug_rnglists.dwo", DebugSecType, ELF::SHF_EXCLUDE);
528 Ctx->getELFSection(".debug_macinfo.dwo", DebugSecType, ELF::SHF_EXCLUDE);
530 Ctx->getELFSection(".debug_macro.dwo", DebugSecType, ELF::SHF_EXCLUDE);
531
533 Ctx->getELFSection(".debug_loclists.dwo", DebugSecType, ELF::SHF_EXCLUDE);
534
535
537 Ctx->getELFSection(".debug_cu_index", DebugSecType, 0);
539 Ctx->getELFSection(".debug_tu_index", DebugSecType, 0);
540
543
546
548 Ctx->getELFSection(".eh_frame", EHSectionType, EHSectionFlags);
549
552
555
557
558 PseudoProbeSection = Ctx->getELFSection(".pseudo_probe", DebugSecType, 0);
560 Ctx->getELFSection(".pseudo_probe_desc", DebugSecType, 0);
561
563}
564
565void MCObjectFileInfo::initGOFFMCObjectFileInfo(const Triple &T) {
566 MCSectionGOFF *RootSDSection = Ctx->getGOFFSection(
569
570 MCSectionGOFF *ADAEDSection = Ctx->getGOFFSection(
576 RootSDSection);
581 ADAEDSection);
582
589 RootSDSection);
590
591 MCSectionGOFF *PPA2ListEDSection = Ctx->getGOFFSection(
597 RootSDSection);
602 PPA2ListEDSection);
603
610 RootSDSection);
611}
612
613void MCObjectFileInfo::initCOFFMCObjectFileInfo(const Triple &T) {
617
618
619
620
622
623
628 ".text",
638
641
643 } else {
644 LSDASection = Ctx->getCOFFSection(".gcc_except_table",
647 }
648
653
654
657 }
658
659
672
821
824
828
832
834
838
842
846
850
854
858
859
868}
869
870void MCObjectFileInfo::initSPIRVMCObjectFileInfo(const Triple &T) {
871
873}
874
875void MCObjectFileInfo::initWasmMCObjectFileInfo(const Triple &T) {
878
908
919
920
942
945
946
951
952
953
954
955 LSDASection = Ctx->getWasmSection(".rodata.gcc_except_table",
957
958
959}
960
961void MCObjectFileInfo::initXCOFFMCObjectFileInfo(const Triple &T) {
962
963
964
965
967 "..text..",
970 true);
971
972
973 MCSectionXCOFF *TS = static_cast<MCSectionXCOFF *>(TextSection);
976
980 true);
981
985 true);
987
991 true);
993
997 true);
999
1003 true);
1004
1009
1010
1012
1017
1022
1023
1024
1025
1028 std::nullopt,
1030
1034
1038
1041 std::nullopt,
1043
1046 std::nullopt,
1048
1051 std::nullopt,
1053
1057
1061
1064 std::nullopt,
1066
1069 std::nullopt,
1071
1075}
1076
1077void MCObjectFileInfo::initDXContainerObjectFileInfo(const Triple &T) {
1078
1080}
1081
1083
1085 bool LargeCodeModel) {
1086 PositionIndependent = PIC;
1087 Ctx = &MCCtx;
1088
1089
1092
1094
1096
1104
1105 const Triple &TheTriple = Ctx->getTargetTriple();
1106 switch (Ctx->getObjectFileType()) {
1108 initMachOMCObjectFileInfo(TheTriple);
1109 break;
1111 initCOFFMCObjectFileInfo(TheTriple);
1112 break;
1114 initELFMCObjectFileInfo(TheTriple, LargeCodeModel);
1115 break;
1117 initGOFFMCObjectFileInfo(TheTriple);
1118 break;
1120 initSPIRVMCObjectFileInfo(TheTriple);
1121 break;
1123 initWasmMCObjectFileInfo(TheTriple);
1124 break;
1126 initXCOFFMCObjectFileInfo(TheTriple);
1127 break;
1129 initDXContainerObjectFileInfo(TheTriple);
1130 break;
1131 }
1132}
1133
1134MCSection *MCObjectFileInfo::getDwarfComdatSection(const char *Name,
1136 switch (Ctx->getTargetTriple().getObjectFormat()) {
1139 utostr(Hash), true);
1150 report_fatal_error("Cannot get DWARF comdat section for this object file "
1151 "format: not implemented.");
1152 break;
1153 }
1155}
1156
1161
1166 GroupName = Group->getName();
1168 }
1169
1170 return Ctx->getELFSection(
1172 true, ElfSec.getUniqueID(),
1174}
1175
1179 Ctx->getTargetTriple().isPS4())
1181
1186 GroupName = Group->getName();
1188 }
1189
1190 return Ctx->getELFSection(
1194}
1195
1199 return nullptr;
1200
1205 GroupName = Group->getName();
1207 }
1208
1209
1210
1211 return Ctx->getELFSection(
1215}
1216
1220 return nullptr;
1221
1226 GroupName = Group->getName();
1228 }
1229
1230 return Ctx->getELFSection(
1232 true, ElfSec.getUniqueID(),
1234}
1235
1238 auto ObjFileType = Ctx->getObjectFileType();
1240 const auto &ElfSec = static_cast<const MCSectionELF &>(TextSec);
1243 if (const MCSymbol *Group = ElfSec.getGroup()) {
1244 GroupName = Group->getName();
1246 }
1247 return Ctx->getELFSection(
1249 true, ElfSec.getUniqueID(),
1254 unsigned Characteristics =
1256 const auto &COFFSec = static_cast<const MCSectionCOFF &>(TextSec);
1257 if (const MCSymbol *COMDATSym = COFFSec.getCOMDATSymbol()) {
1258
1259 COMDATSymName = COMDATSym->getName();
1262 }
1263 return Ctx->getCOFFSection(PseudoProbeSection->getName(), Characteristics,
1264 COMDATSymName, Selection, COFFSec.getUniqueID());
1265 }
1266
1268}
1269
1272 if (!Ctx->getTargetTriple().supportsCOMDAT() || FuncName.empty())
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284 auto ObjFileType = Ctx->getObjectFileType();
1288 return Ctx->getELFSection(S->getName(), S->getType(), Flags,
1289 S->getEntrySize(), S->getName() + "_" + FuncName,
1290 true);
1293 unsigned Characteristics =
1295 std::string COMDATSymName = (S->getName() + "_" + FuncName).str();
1296 return Ctx->getCOFFSection(S->getName(), Characteristics, COMDATSymName,
1298 }
1299
1301}
1302
1306
1308 const MCSection *TextSec) const {
1310 return nullptr;
1311
1312
1314
1315 if (!TextSec)
1317
1319 const auto &ElfSec = static_cast<const MCSectionELF &>(*TextSec);
1320 if (const MCSymbol *Group = ElfSec.getGroup()) {
1321 GroupName = Group->getName();
1323 }
1324 return Ctx->getELFSection(
1325 Name, ELF::SHT_PROGBITS, Flags, 0, GroupName, true, ElfSec.getUniqueID(),
1327}
amdgpu AMDGPU DAG DAG Pattern Instruction Selection
static bool useCompactUnwind(const Triple &T)
Definition MCObjectFileInfo.cpp:31
This file declares the MCSectionGOFF class, which contains all of the necessary machine code sections...
PassInstrumentationCallbacks PIC
This file contains data-structure definitions and constants to support unwinding based on ....
Context object for machine code objects.
MCSection * NonLazySymbolPointerSection
MCSection * TLSBSSSection
Section directive for Thread Local uninitialized data.
MCSection * CallGraphSection
Section containing call graph metadata.
MCSection * DwarfDebugNamesSection
Accelerator table sections.
MCSection * DwarfAddrSection
const MCSection * TLSThreadInitSection
Section for thread local data initialization functions.
MCSection * GEHContSection
MCSection * DwarfStrOffSection
The DWARF v5 string offset and address table sections.
MCSection * DwarfARangesSection
MCSection * DwarfStrSection
MCSection * MergeableConst16Section
MCSection * COFFGlobalTypeHashesSection
MCSection * SFrameSection
SFrame section.
MCSection * DwarfLocDWOSection
MCSection * MergeableConst4Section
MCSection * DwarfMacinfoSection
MCSection * DwarfPubNamesSection
MCSection * DwarfGnuPubTypesSection
Section for newer gnu pubtypes.
MCSection * getLLVMStatsSection() const
Definition MCObjectFileInfo.cpp:1303
MCSection * DwarfCUIndexSection
MCSection * TextSection
Section directive for standard text.
MCSection * ConstDataCoalSection
MCSection * LLVMStatsSection
MCSection * ConstTextCoalSection
MCSection * TLSDataSection
Section directive for Thread Local data. ELF, MachO, COFF, and Wasm.
MCSection * MergeableConst8Section
MCSection * AddrSigSection
MCSection * DwarfInfoSection
MCSection * ThreadLocalPointerSection
MCSection * LSDASection
If exception handling is supported by the target, this is the section the Language Specific Data Area...
MCSection * CompactUnwindSection
If exception handling is supported by the target and the target can support a compact representation ...
MCSection * COFFDebugSymbolsSection
MCSection * DwarfStrDWOSection
MCSection * getPseudoProbeDescSection(StringRef FuncName) const
Definition MCObjectFileInfo.cpp:1271
MCSection * DwarfLoclistsSection
The DWARF v5 locations list section.
MCSection * ReadOnly16Section
MCSection * DwarfLocSection
MCSection * PseudoProbeSection
Section for pseudo probe information used by AutoFDO.
MCSection * FourByteConstantSection
MCSection * DwarfAccelNamesSection
MCSection * ReadOnly8Section
MCSection * getStackSizesSection(const MCSection &TextSec) const
Definition MCObjectFileInfo.cpp:1177
MCSection * DwarfRnglistsSection
The DWARF v5 range list section.
const MCSection * DwarfDebugInlineSection
MCSection * DataBSSSection
MCSection * DwarfAbbrevDWOSection
MCSection * getBBAddrMapSection(const MCSection &TextSec) const
Definition MCObjectFileInfo.cpp:1197
MCSection * COFFDebugTypesSection
MCSection * LazySymbolPointerSection
MCSection * RemarksSection
Remarks section.
MCSection * getPseudoProbeSection(const MCSection &TextSec) const
Definition MCObjectFileInfo.cpp:1237
MCSection * TextCoalSection
MCSection * PseudoProbeDescSection
MCSection * DwarfPubTypesSection
MCSection * DwarfRangesSection
MCSection * DwarfStrOffDWOSection
MCSection * TLSExtraDataSection
Extra TLS Variable Data section.
MCSection * DataRelROSection
MCSection * EHFrameSection
EH frame section.
bool OmitDwarfIfHaveCompactUnwind
OmitDwarfIfHaveCompactUnwind - True if the target object file supports having some functions with com...
MCSection * CStringSection
MCSection * DrectveSection
COFF specific sections.
MCSection * FaultMapSection
FaultMap section.
MCSection * getKCFITrapSection(const MCSection &TextSec) const
Definition MCObjectFileInfo.cpp:1218
MCSection * DwarfAccelObjCSection
MCSection * TLSTLVSection
Section for thread local structure information.
MCSection * DwarfSwiftASTSection
MCSection * DwarfMacroSection
void initMCObjectFileInfo(MCContext &MCCtx, bool PIC, bool LargeCodeModel=false)
Definition MCObjectFileInfo.cpp:1084
MCSection * DataCoalSection
MCSection * DwarfFrameSection
MCSection * SXDataSection
MCSection * UStringSection
MCSection * DwarfRnglistsDWOSection
The DWARF v5 range and location list sections for fission.
MCSection * ImportCallSection
If import call optimization is supported by the target, this is the section to emit import call data ...
MCSection * MergeableConst32Section
MCSection * SixteenByteConstantSection
virtual ~MCObjectFileInfo()
MCSection * DataCommonSection
MCSection * getPCSection(StringRef Name, const MCSection *TextSec) const
Definition MCObjectFileInfo.cpp:1307
std::optional< sframe::ABI > SFrameABIArch
SFrame ABI architecture byte.
MCSection * DwarfLineStrSection
bool SupportsCompactUnwindWithoutEHFrame
True if the target object file supports emitting a compact unwind section without an associated EH fr...
MCSection * ReadOnlySection
Section that is readonly and can contain arbitrary initialized data.
MCSection * DwarfLineDWOSection
MCSection * DwarfAbbrevSection
MCSection * DwarfLineSection
MCSection * TOCBaseSection
unsigned FDECFIEncoding
FDE CFI encoding.
MCSection * DwarfTUIndexSection
MCSection * DwarfLoclistsDWOSection
MCSection * getCallGraphSection(const MCSection &TextSec) const
Definition MCObjectFileInfo.cpp:1158
MCSection * DwarfInfoDWOSection
MCSection * BSSSection
Section that is default initialized to zero.
MCSection * PPA2ListSection
MCSection * EightByteConstantSection
MCSection * StackSizesSection
Section containing metadata on function stack sizes.
unsigned CompactUnwindDwarfEHFrameOnly
Compact unwind encoding indicating that we should emit only an EH frame.
MCSection * getTextSection() const
MCSection * DwarfTypesDWOSection
MCSection * DwarfGnuPubNamesSection
Section for newer gnu pubnames.
MCSection * ConstDataSection
MCSection * StackMapSection
StackMap section.
MCSection * DwarfMacroDWOSection
MCSection * DwarfMacinfoDWOSection
MCSection * DwarfAccelNamespaceSection
MCSection * DwarfAccelTypesSection
MCSection * DataSection
Section directive for standard data.
This represents a section on Windows.
This represents a section on linux, lots of unix variants and some bare metal systems.
unsigned getFlags() const
unsigned getUniqueID() const
const MCSymbolELF * getGroup() const
void setSymbolTableName(StringRef STN)
MCSymbolXCOFF * getQualNameSymbol() const
Instances of this class represent a uniqued identifier for a section in the current translation unit.
static constexpr unsigned NonUniqueID
MCSymbol * getBeginSymbol()
void setSymbolTableName(StringRef STN)
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
static SectionKind getThreadData()
static SectionKind getMetadata()
static SectionKind getMergeable2ByteCString()
static SectionKind getMergeableConst4()
static SectionKind getText()
static SectionKind getReadOnlyWithRel()
static SectionKind getData()
static SectionKind getMergeableConst8()
static SectionKind getBSS()
static SectionKind getThreadBSS()
static SectionKind getMergeableConst16()
static SectionKind getMergeable1ByteCString()
static SectionKind getReadOnly()
StringRef - Represent a constant reference to a string, i.e.
constexpr bool empty() const
empty - Check if the string is empty.
Triple - Helper class for working with autoconf configuration names.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
constexpr char Align[]
Key for Kernel::Arg::Metadata::mAlign.
@ IMAGE_SCN_CNT_UNINITIALIZED_DATA
@ IMAGE_SCN_MEM_DISCARDABLE
@ IMAGE_SCN_CNT_INITIALIZED_DATA
@ IMAGE_COMDAT_SELECT_ASSOCIATIVE
@ IMAGE_COMDAT_SELECT_EXACT_MATCH
constexpr StringLiteral CLASS_WSA
constexpr StringLiteral CLASS_PPA2
constexpr StringLiteral CLASS_CODE
@ S_THREAD_LOCAL_VARIABLE_POINTERS
S_THREAD_LOCAL_VARIABLE_POINTERS - Section with pointers to thread local structures.
@ S_16BYTE_LITERALS
S_16BYTE_LITERALS - Section with only 16 byte literals.
@ S_THREAD_LOCAL_INIT_FUNCTION_POINTERS
S_THREAD_LOCAL_INIT_FUNCTION_POINTERS - Section with thread local variable initialization pointers to...
@ S_COALESCED
S_COALESCED - Section contains symbols that are to be coalesced.
@ S_THREAD_LOCAL_ZEROFILL
S_THREAD_LOCAL_ZEROFILL - Thread local zerofill section.
@ S_LAZY_SYMBOL_POINTERS
S_LAZY_SYMBOL_POINTERS - Section with lazy symbol pointers.
@ S_CSTRING_LITERALS
S_CSTRING_LITERALS - Section with literal C strings.
@ S_THREAD_LOCAL_REGULAR
S_THREAD_LOCAL_REGULAR - Thread local data section.
@ S_ZEROFILL
S_ZEROFILL - Zero fill on demand section.
@ S_NON_LAZY_SYMBOL_POINTERS
S_NON_LAZY_SYMBOL_POINTERS - Section with non-lazy symbol pointers.
@ S_4BYTE_LITERALS
S_4BYTE_LITERALS - Section with 4 byte literals.
@ S_8BYTE_LITERALS
S_8BYTE_LITERALS - Section with 8 byte literals.
@ S_THREAD_LOCAL_VARIABLES
S_THREAD_LOCAL_VARIABLES - Section with thread local variable structure data.
@ S_ATTR_DEBUG
S_ATTR_DEBUG - A debug section.
@ S_ATTR_NO_TOC
S_ATTR_NO_TOC - Section contains coalesced symbols that are not to be in a ranlib table of contents.
@ S_ATTR_LIVE_SUPPORT
S_ATTR_LIVE_SUPPORT - Blocks are live if they reference live blocks.
@ S_ATTR_PURE_INSTRUCTIONS
S_ATTR_PURE_INSTRUCTIONS - Section contains only true machine instructions.
@ S_ATTR_STRIP_STATIC_SYMS
S_ATTR_STRIP_STATIC_SYMS - Ok to strip static symbols in this section in files with the MY_DYLDLINK f...
@ SSUBTYP_DWARNGE
DWARF aranges section.
@ SSUBTYP_DWFRAME
DWARF frame section.
@ SSUBTYP_DWABREV
DWARF abbrev section.
@ SSUBTYP_DWINFO
DWARF info section.
@ SSUBTYP_DWRNGES
DWARF ranges section.
@ SSUBTYP_DWLOC
DWARF loc section.
@ SSUBTYP_DWMAC
DWARF macinfo section.
@ SSUBTYP_DWPBNMS
DWARF pubnames section.
@ SSUBTYP_DWPBTYP
DWARF pubtypes section.
@ SSUBTYP_DWLINE
DWARF line section.
@ SSUBTYP_DWSTR
DWARF str section.
@ XMC_TC0
TOC Anchor for TOC Addressability.
@ XMC_TL
Initialized thread-local variable.
@ XMC_RO
Read Only Constant.
@ XTY_SD
Csect definition for initialized storage.
This is an optimization pass for GlobalISel generic memory operations.
std::string utostr(uint64_t X, bool isNeg=false)
LLVM_ABI void report_fatal_error(Error Err, bool gen_crash_diag=true)