LLVM: lib/DebugInfo/CodeView/SymbolRecordMapping.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

10

11using namespace llvm;

13

14#define error(X) \

15 if (auto EC = X) \

16 return EC;

17

18namespace {

19struct MapGap {

24 }

25};

26}

27

34}

35

39}

40

45}

46

48

55

57}

58

60

70

72}

73

74Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

76

83

85}

86

87Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

90

98

100}

101

102Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

104

110

112}

113

114Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

116

120

122}

123

124Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

126

128

130}

131

132Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

135

140

142}

143

144Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

146

150

152}

153

154Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

156

161

163}

164

166

170

172}

173

174Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

176

187

189}

190

191Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

193

205

207}

208

209Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

211

215

217}

218

220

225

227}

228

229Error SymbolRecordMapping::visitKnownRecord(

231

235

237}

238

239Error SymbolRecordMapping::visitKnownRecord(

242

244

246}

247

248Error SymbolRecordMapping::visitKnownRecord(

250

256

258}

259

260Error SymbolRecordMapping::visitKnownRecord(

262

267

269}

270

271Error SymbolRecordMapping::visitKnownRecord(

273

279

281}

282

283Error SymbolRecordMapping::visitKnownRecord(

285

290

292}

293

294Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

296

300

302}

303

304Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

306

311

313}

314

315Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

324

326}

327

328Error SymbolRecordMapping::visitKnownRecord(

330

335

337}

338

339Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

341

346

348}

349

350Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

352

356

358}

359

360Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

362

367

369}

370

371Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

373

378

380}

381

383

388

390}

391

396

398}

399

400Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

402

405

407}

408

422}

423

424Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

427}

428

434}

435

436Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

438

443

445}

446

447Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

449

454

456}

457

459

462

464}

465

466Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

468

470

472}

473

474Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

476

482

484}

485

486Error SymbolRecordMapping::visitKnownRecord(CVSymbol &CVR,

497}

498

501 assert(unsigned(EncodedReg) < 4);

502 switch (CPU) {

503

504 default:

505 break;

514 switch (EncodedReg) {

519 }

522 switch (EncodedReg) {

527 }

529 }

530 return RegisterId::NONE;

531}

532

534 switch (CPU) {

535

536 default:

537 break;

546 switch (Reg) {

547 case RegisterId::VFRAME:

549 case RegisterId::EBP:

551 case RegisterId::EBX:

553 default:

554 break;

555 }

556 break;

558 switch (Reg) {

559 case RegisterId::RSP:

561 case RegisterId::RBP:

563 case RegisterId::R13:

565 default:

566 break;

567 }

568 break;

569 }

571}

ConstantRange Range(APInt(BitWidth, Low), APInt(BitWidth, High))

assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())

static Error mapLocalVariableAddrRange(CodeViewRecordIO &IO, LocalVariableAddrRange &Range)

This is an important base class in LLVM.

Lightweight error class with error context and mandatory checking.

static ErrorSuccess success()

Create a success value.

Wrapper class representing virtual and physical registers.

constexpr Register(unsigned Val=0)

StringRef - Represent a constant reference to a string, i.e.

Value(Type *Ty, unsigned scid)

std::vector< StringRef > Strings

CVRecord is a fat pointer (base + size pair) to a symbol or type record.

Error mapVectorTail(T &Items, const ElementMapper &Mapper, const Twine &Comment="")

Error padToAlignment(uint32_t Align)

Error mapVectorN(T &Items, const ElementMapper &Mapper, const Twine &Comment="")

Error mapInteger(TypeIndex &TypeInd, const Twine &Comment="")

Error mapStringZVectorZ(std::vector< StringRef > &Value, const Twine &Comment="")

Error mapStringZ(StringRef &Value, const Twine &Comment="")

Error mapObject(T &Value)

Error mapEnum(T &Value, const Twine &Comment="")

Error mapEncodedInteger(int64_t &Value, const Twine &Comment="")

Error beginRecord(std::optional< uint32_t > MaxLength)

Error mapByteVectorTail(ArrayRef< uint8_t > &Bytes, const Twine &Comment="")

uint16_t VersionBackendMajor

uint16_t VersionFrontendMajor

uint16_t VersionBackendMinor

uint16_t VersionFrontendMinor

uint16_t VersionBackendBuild

uint16_t VersionFrontendBuild

std::vector< StringRef > ExtraStrings

uint16_t VersionBackendBuild

uint16_t VersionBackendQFE

uint16_t VersionFrontendMajor

uint16_t VersionBackendMajor

uint16_t VersionBackendMinor

uint16_t VersionFrontendBuild

uint16_t VersionFrontendMinor

uint16_t VersionFrontendQFE

DefRangeFramePointerRelHeader Hdr

LocalVariableAddrRange Range

std::vector< LocalVariableAddrGap > Gaps

DefRangeRegisterRelHeader Hdr

std::vector< LocalVariableAddrGap > Gaps

LocalVariableAddrRange Range

std::vector< LocalVariableAddrGap > Gaps

LocalVariableAddrRange Range

DefRangeRegisterHeader Hdr

LocalVariableAddrRange Range

std::vector< LocalVariableAddrGap > Gaps

DefRangeSubfieldRegisterHeader Hdr

std::vector< LocalVariableAddrGap > Gaps

LocalVariableAddrRange Range

std::vector< LocalVariableAddrGap > Gaps

LocalVariableAddrRange Range

std::vector< StringRef > Fields

FrameCookieKind CookieKind

uint32_t BytesOfCalleeSavedRegisters

uint16_t SectionIdOfExceptionHandler

uint32_t PaddingFrameBytes

uint32_t OffsetOfExceptionHandler

FrameProcedureOptions Flags

uint16_t CallInstructionSize

Error visitSymbolEnd(CVSymbol &Record) override

Error visitSymbolBegin(CVSymbol &Record) override

#define llvm_unreachable(msg)

Marks that the current location is not supposed to be reachable.

CPUType

These values correspond to the CV_CPU_TYPE_e enumeration, and are documented here: https://msdn....

uint32_t alignOf(CodeViewContainer Container)

EncodedFramePtrReg

Two-bit value indicating which register is the designated frame pointer register.

RegisterId decodeFramePtrReg(EncodedFramePtrReg EncodedReg, CPUType CPU)

EncodedFramePtrReg encodeFramePtrReg(RegisterId Reg, CPUType CPU)

This is an optimization pass for GlobalISel generic memory operations.

std::tuple< uint64_t, uint32_t > InlineSite

@ Export

Export information to summary.