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