LLVM: include/llvm/DebugInfo/MSF/MSFCommon.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_DEBUGINFO_MSF_MSFCOMMON_H
10#define LLVM_DEBUGINFO_MSF_MSFCOMMON_H
11
18#include
19#include
20
21namespace llvm {
22namespace msf {
23
24static const char Magic[] = {'M', 'i', 'c', 'r', 'o', 's', 'o', 'f',
25 't', ' ', 'C', '/', 'C', '+', '+', ' ',
26 'M', 'S', 'F', ' ', '7', '.', '0', '0',
27 '\r', '\n', '\x1a', 'D', 'S', '\0', '\0', '\0'};
28
29
30
31
34
35
36
38
40
41
42
44
46
48
50};
51
54
56 assert(SB->FreeBlockMapBlock == 1 || SB->FreeBlockMapBlock == 2);
57 return SB->FreeBlockMapBlock;
58 }
59
64
69 std::vector<ArrayRefsupport::ulittle32\_t> StreamMap;
70};
71
72
73
74
75
76
77
79public:
81 std::vectorsupport::ulittle32\_t Blocks;
82};
83
84
85
86
88 bool IncludeUnusedFpmData = false,
89 bool AltFpm = false);
90
92 switch (Size) {
93 case 512:
94 case 1024:
95 case 2048:
96 case 4096:
97 case 8192:
98 case 16384:
99 case 32768:
100 return true;
101 }
102 return false;
103}
104
105
106
107
108
109
110
111
113 switch (Size) {
114 case 8192:
115 return (uint64_t)UINT32_MAX * 2ULL;
116 case 16384:
117 return (uint64_t)UINT32_MAX * 3ULL;
118 case 32768:
119 return (uint64_t)UINT32_MAX * 4ULL;
120 default:
122 }
123}
124
125
127
128
129
131
135
139
141 return L.SB->BlockSize;
142}
143
144
145
146
147
148
149
150
151
152
153
154
155
157 bool IncludeUnusedFpmData, int FpmNumber) {
158 assert(FpmNumber == 1 || FpmNumber == 2);
159 if (IncludeUnusedFpmData) {
160
161
162
163
165 }
166
167
168
170}
171
173 bool IncludeUnusedFpmData = false,
174 bool AltFpm = false) {
176 IncludeUnusedFpmData,
177 AltFpm ? L.alternateFpmBlock() : L.mainFpmBlock());
178}
179
181
182}
183}
184
185#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
This file implements the BitVector class.
static const int BlockSize
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Lightweight error class with error context and mandatory checking.
Describes the layout of a stream in an MSF layout.
Definition MSFCommon.h:78
uint32_t Length
Definition MSFCommon.h:80
std::vector< support::ulittle32_t > Blocks
Definition MSFCommon.h:81
uint32_t getMinimumBlockCount()
Definition MSFCommon.h:126
LLVM_ABI Error validateSuperBlock(const SuperBlock &SB)
uint32_t getFpmIntervalLength(const MSFLayout &L)
Definition MSFCommon.h:140
uint64_t blockToOffset(uint64_t BlockNumber, uint64_t BlockSize)
Definition MSFCommon.h:136
uint64_t getMaxFileSizeFromBlockSize(uint32_t Size)
Given the specified block size, returns the maximum possible file size.
Definition MSFCommon.h:112
bool isValidBlockSize(uint32_t Size)
Definition MSFCommon.h:91
LLVM_ABI MSFStreamLayout getFpmStreamLayout(const MSFLayout &Msf, bool IncludeUnusedFpmData=false, bool AltFpm=false)
Determine the layout of the FPM stream, given the MSF layout.
uint64_t bytesToBlocks(uint64_t NumBytes, uint64_t BlockSize)
Definition MSFCommon.h:132
uint32_t getFirstUnreservedBlock()
Definition MSFCommon.h:130
uint32_t getNumFpmIntervals(uint32_t BlockSize, uint32_t NumBlocks, bool IncludeUnusedFpmData, int FpmNumber)
Given an MSF with the specified block size and number of blocks, determine how many pieces the specif...
Definition MSFCommon.h:156
static const char Magic[]
Definition MSFCommon.h:24
detail::packed_endian_specific_integral< uint32_t, llvm::endianness::little, unaligned > ulittle32_t
This is an optimization pass for GlobalISel generic memory operations.
constexpr T divideCeil(U Numerator, V Denominator)
Returns the integer ceil(Numerator / Denominator).
Definition MSFCommon.h:52
uint32_t alternateFpmBlock() const
Definition MSFCommon.h:60
ArrayRef< support::ulittle32_t > StreamSizes
Definition MSFCommon.h:68
uint32_t mainFpmBlock() const
Definition MSFCommon.h:55
ArrayRef< support::ulittle32_t > DirectoryBlocks
Definition MSFCommon.h:67
const SuperBlock * SB
Definition MSFCommon.h:65
BitVector FreePageMap
Definition MSFCommon.h:66
std::vector< ArrayRef< support::ulittle32_t > > StreamMap
Definition MSFCommon.h:69
Definition MSFCommon.h:32
support::ulittle32_t NumBlocks
Definition MSFCommon.h:43
support::ulittle32_t BlockSize
Definition MSFCommon.h:37
support::ulittle32_t Unknown1
Definition MSFCommon.h:47
char MagicBytes[sizeof(Magic)]
Definition MSFCommon.h:33
support::ulittle32_t NumDirectoryBytes
Definition MSFCommon.h:45
support::ulittle32_t BlockMapAddr
Definition MSFCommon.h:49
support::ulittle32_t FreeBlockMapBlock
Definition MSFCommon.h:39