LLVM: include/llvm/BinaryFormat/Dwarf.h Source File (original) (raw)

36

37

38

39

40

41

42

43

44

46

47

52

53

54

55

59

60

61

62

67

68

69

70

89

90};

91

92

94

95

96

97

100

101

102

104

106#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) DW_TAG_##NAME = ID,

107#include "llvm/BinaryFormat/Dwarf.def"

111};

112

114 switch (T) {

115 default:

116 return false;

117#define HANDLE_DW_TAG(ID, NAME, VERSION, VENDOR, KIND) \

118 case DW_TAG_##NAME: \

119 return (KIND == DW_KIND_TYPE);

120#include "llvm/BinaryFormat/Dwarf.def"

121 }

122}

123

124

126#define HANDLE_DW_AT(ID, NAME, VERSION, VENDOR) DW_AT_##NAME = ID,

127#include "llvm/BinaryFormat/Dwarf.def"

130};

131

133#define HANDLE_DW_FORM(ID, NAME, VERSION, VENDOR) DW_FORM_##NAME = ID,

134#include "llvm/BinaryFormat/Dwarf.def"

136};

137

139#define HANDLE_DW_OP(ID, NAME, OPERANDS, ARITY, VERSION, VENDOR) \

140 DW_OP_##NAME = ID,

141#include "llvm/BinaryFormat/Dwarf.def"

152};

153

155#define HANDLE_DW_OP_LLVM_USEROP(ID, NAME) DW_OP_LLVM_##NAME = ID,

156#include "llvm/BinaryFormat/Dwarf.def"

157};

158

160#define HANDLE_DW_ATE(ID, NAME, VERSION, VENDOR) DW_ATE_##NAME = ID,

161#include "llvm/BinaryFormat/Dwarf.def"

164};

165

174

176

177#define HANDLE_DW_END(ID, NAME) DW_END_##NAME = ID,

178#include "llvm/BinaryFormat/Dwarf.def"

181};

182

189

196

198#define HANDLE_DW_VIRTUALITY(ID, NAME) DW_VIRTUALITY_##NAME = ID,

199#include "llvm/BinaryFormat/Dwarf.def"

201};

202

204#define HANDLE_DW_APPLE_ENUM_KIND(ID, NAME) DW_APPLE_ENUM_KIND_##NAME = ID,

205#include "llvm/BinaryFormat/Dwarf.def"

207};

208

210#define HANDLE_DW_DEFAULTED(ID, NAME) DW_DEFAULTED_##NAME = ID,

211#include "llvm/BinaryFormat/Dwarf.def"

213};

214

216#define HANDLE_DW_LANG(ID, NAME, LOWER_BOUND, VERSION, VENDOR) \

217 DW_LANG_##NAME = ID,

218#include "llvm/BinaryFormat/Dwarf.def"

221};

222

224#define HANDLE_DW_LNAME(ID, NAME, DESC, LOWER_BOUND) DW_LNAME_##NAME = ID,

225#include "llvm/BinaryFormat/Dwarf.def"

226};

227

228

229

230

233 switch (name) {

234 case DW_LNAME_Ada:

235 if (version <= 1983)

236 return DW_LANG_Ada83;

237 if (version <= 1995)

238 return DW_LANG_Ada95;

239 if (version <= 2005)

240 return DW_LANG_Ada2005;

241 if (version <= 2012)

242 return DW_LANG_Ada2012;

243 return {};

244 case DW_LNAME_BLISS:

245 return DW_LANG_BLISS;

246 case DW_LNAME_C:

247 if (version == 0)

248 return DW_LANG_C;

249 if (version <= 198912)

250 return DW_LANG_C89;

251 if (version <= 199901)

252 return DW_LANG_C99;

253 if (version <= 201112)

254 return DW_LANG_C11;

255 if (version <= 201710)

256 return DW_LANG_C17;

257 return {};

258 case DW_LNAME_C_plus_plus:

259 if (version == 0)

260 return DW_LANG_C_plus_plus;

261 if (version <= 199711)

262 return DW_LANG_C_plus_plus;

263 if (version <= 200310)

264 return DW_LANG_C_plus_plus_03;

265 if (version <= 201103)

266 return DW_LANG_C_plus_plus_11;

267 if (version <= 201402)

268 return DW_LANG_C_plus_plus_14;

269 if (version <= 201703)

270 return DW_LANG_C_plus_plus_17;

271 if (version <= 202002)

272 return DW_LANG_C_plus_plus_20;

273 return {};

274 case DW_LNAME_Cobol:

275 if (version <= 1974)

276 return DW_LANG_Cobol74;

277 if (version <= 1985)

278 return DW_LANG_Cobol85;

279 return {};

280 case DW_LNAME_Crystal:

281 return DW_LANG_Crystal;

282 case DW_LNAME_D:

283 return DW_LANG_D;

284 case DW_LNAME_Dylan:

285 return DW_LANG_Dylan;

286 case DW_LNAME_Fortran:

287 if (version <= 1977)

288 return DW_LANG_Fortran77;

289 if (version <= 1990)

290 return DW_LANG_Fortran90;

291 if (version <= 1995)

292 return DW_LANG_Fortran95;

293 if (version <= 2003)

294 return DW_LANG_Fortran03;

295 if (version <= 2008)

296 return DW_LANG_Fortran08;

297 if (version <= 2018)

298 return DW_LANG_Fortran18;

299 return {};

300 case DW_LNAME_Go:

301 return DW_LANG_Go;

302 case DW_LNAME_Haskell:

303 return DW_LANG_Haskell;

304

305

306 case DW_LNAME_Java:

307 return DW_LANG_Java;

308 case DW_LNAME_Julia:

309 return DW_LANG_Julia;

310 case DW_LNAME_Kotlin:

311 return DW_LANG_Kotlin;

312 case DW_LNAME_Modula2:

313 return DW_LANG_Modula2;

314 case DW_LNAME_Modula3:

315 return DW_LANG_Modula3;

316 case DW_LNAME_ObjC:

317 return DW_LANG_ObjC;

318 case DW_LNAME_ObjC_plus_plus:

319 return DW_LANG_ObjC_plus_plus;

320 case DW_LNAME_OCaml:

321 return DW_LANG_OCaml;

322 case DW_LNAME_OpenCL_C:

323 return DW_LANG_OpenCL;

324 case DW_LNAME_Pascal:

325 return DW_LANG_Pascal83;

326 case DW_LNAME_PLI:

327 return DW_LANG_PLI;

328 case DW_LNAME_Python:

329 return DW_LANG_Python;

330 case DW_LNAME_RenderScript:

331 return DW_LANG_RenderScript;

332 case DW_LNAME_Rust:

333 return DW_LANG_Rust;

334 case DW_LNAME_Swift:

335 return DW_LANG_Swift;

336 case DW_LNAME_UPC:

337 return DW_LANG_UPC;

338 case DW_LNAME_Zig:

339 return DW_LANG_Zig;

340 case DW_LNAME_Assembly:

341 return DW_LANG_Assembly;

342 case DW_LNAME_C_sharp:

343 return DW_LANG_C_sharp;

344 case DW_LNAME_Mojo:

345 return DW_LANG_Mojo;

346 case DW_LNAME_GLSL:

347 return DW_LANG_GLSL;

348 case DW_LNAME_GLSL_ES:

349 return DW_LANG_GLSL_ES;

350 case DW_LNAME_HLSL:

351 return DW_LANG_HLSL;

352 case DW_LNAME_OpenCL_CPP:

353 return DW_LANG_OpenCL_CPP;

354 case DW_LNAME_CPP_for_OpenCL:

355 return {};

356 case DW_LNAME_SYCL:

357 return DW_LANG_SYCL;

358 case DW_LNAME_Ruby:

359 return DW_LANG_Ruby;

360 case DW_LNAME_Move:

361 return DW_LANG_Move;

362 case DW_LNAME_Hylo:

363 return DW_LANG_Hylo;

364 case DW_LNAME_Metal:

365 return DW_LANG_Metal;

366 }

367 return {};

368}

369

370

371inline std::optional<std::pair<SourceLanguageName, uint32_t>>

373 switch (language) {

374 case DW_LANG_Ada83:

375 return {{DW_LNAME_Ada, 1983}};

376 case DW_LANG_Ada95:

377 return {{DW_LNAME_Ada, 1995}};

378 case DW_LANG_Ada2005:

379 return {{DW_LNAME_Ada, 2005}};

380 case DW_LANG_Ada2012:

381 return {{DW_LNAME_Ada, 2012}};

382 case DW_LANG_BLISS:

383 return {{DW_LNAME_BLISS, 0}};

384 case DW_LANG_C:

385 return {{DW_LNAME_C, 0}};

386 case DW_LANG_C89:

387 return {{DW_LNAME_C, 198912}};

388 case DW_LANG_C99:

389 return {{DW_LNAME_C, 199901}};

390 case DW_LANG_C11:

391 return {{DW_LNAME_C, 201112}};

392 case DW_LANG_C17:

393 return {{DW_LNAME_C, 201710}};

394 case DW_LANG_C_plus_plus:

395 return {{DW_LNAME_C_plus_plus, 0}};

396 case DW_LANG_C_plus_plus_03:

397 return {{DW_LNAME_C_plus_plus, 200310}};

398 case DW_LANG_C_plus_plus_11:

399 return {{DW_LNAME_C_plus_plus, 201103}};

400 case DW_LANG_C_plus_plus_14:

401 return {{DW_LNAME_C_plus_plus, 201402}};

402 case DW_LANG_C_plus_plus_17:

403 return {{DW_LNAME_C_plus_plus, 201703}};

404 case DW_LANG_C_plus_plus_20:

405 return {{DW_LNAME_C_plus_plus, 202002}};

406 case DW_LANG_Cobol74:

407 return {{DW_LNAME_Cobol, 1974}};

408 case DW_LANG_Cobol85:

409 return {{DW_LNAME_Cobol, 1985}};

410 case DW_LANG_Crystal:

411 return {{DW_LNAME_Crystal, 0}};

412 case DW_LANG_D:

413 return {{DW_LNAME_D, 0}};

414 case DW_LANG_Dylan:

415 return {{DW_LNAME_Dylan, 0}};

416 case DW_LANG_Fortran77:

417 return {{DW_LNAME_Fortran, 1977}};

418 case DW_LANG_Fortran90:

419 return {{DW_LNAME_Fortran, 1990}};

420 case DW_LANG_Fortran95:

421 return {{DW_LNAME_Fortran, 1995}};

422 case DW_LANG_Fortran03:

423 return {{DW_LNAME_Fortran, 2003}};

424 case DW_LANG_Fortran08:

425 return {{DW_LNAME_Fortran, 2008}};

426 case DW_LANG_Fortran18:

427 return {{DW_LNAME_Fortran, 2018}};

428 case DW_LANG_Go:

429 return {{DW_LNAME_Go, 0}};

430 case DW_LANG_Haskell:

431 return {{DW_LNAME_Haskell, 0}};

432 case DW_LANG_HIP:

433 return {};

434 case DW_LANG_Java:

435 return {{DW_LNAME_Java, 0}};

436 case DW_LANG_Julia:

437 return {{DW_LNAME_Julia, 0}};

438 case DW_LANG_Kotlin:

439 return {{DW_LNAME_Kotlin, 0}};

440 case DW_LANG_Modula2:

441 return {{DW_LNAME_Modula2, 0}};

442 case DW_LANG_Modula3:

443 return {{DW_LNAME_Modula3, 0}};

444 case DW_LANG_ObjC:

445 return {{DW_LNAME_ObjC, 0}};

446 case DW_LANG_ObjC_plus_plus:

447 return {{DW_LNAME_ObjC_plus_plus, 0}};

448 case DW_LANG_OCaml:

449 return {{DW_LNAME_OCaml, 0}};

450 case DW_LANG_OpenCL:

451 return {{DW_LNAME_OpenCL_C, 0}};

452 case DW_LANG_Pascal83:

453 return {{DW_LNAME_Pascal, 1983}};

454 case DW_LANG_PLI:

455 return {{DW_LNAME_PLI, 0}};

456 case DW_LANG_Python:

457 return {{DW_LNAME_Python, 0}};

458 case DW_LANG_RenderScript:

459 case DW_LANG_GOOGLE_RenderScript:

460 return {{DW_LNAME_RenderScript, 0}};

461 case DW_LANG_Rust:

462 return {{DW_LNAME_Rust, 0}};

463 case DW_LANG_Swift:

464 return {{DW_LNAME_Swift, 0}};

465 case DW_LANG_UPC:

466 return {{DW_LNAME_UPC, 0}};

467 case DW_LANG_Zig:

468 return {{DW_LNAME_Zig, 0}};

469 case DW_LANG_Assembly:

470 case DW_LANG_Mips_Assembler:

471 return {{DW_LNAME_Assembly, 0}};

472 case DW_LANG_C_sharp:

473 return {{DW_LNAME_C_sharp, 0}};

474 case DW_LANG_Mojo:

475 return {{DW_LNAME_Mojo, 0}};

476 case DW_LANG_GLSL:

477 return {{DW_LNAME_GLSL, 0}};

478 case DW_LANG_GLSL_ES:

479 return {{DW_LNAME_GLSL_ES, 0}};

480 case DW_LANG_HLSL:

481 return {{DW_LNAME_HLSL, 0}};

482 case DW_LANG_OpenCL_CPP:

483 return {{DW_LNAME_OpenCL_CPP, 0}};

484 case DW_LANG_SYCL:

485 return {{DW_LNAME_SYCL, 0}};

486 case DW_LANG_Ruby:

487 return {{DW_LNAME_Ruby, 0}};

488 case DW_LANG_Move:

489 return {{DW_LNAME_Move, 0}};

490 case DW_LANG_Hylo:

491 return {{DW_LNAME_Hylo, 0}};

492 case DW_LANG_Metal:

493 return {{DW_LNAME_Metal, 0}};

494 case DW_LANG_BORLAND_Delphi:

495 case DW_LANG_CPP_for_OpenCL:

498 return {};

499 }

500 return {};

501}

502

503

505

506

507

508

511

513 bool result = false;

514

515

516

517 switch (S) {

518 case DW_LANG_C_plus_plus:

519 case DW_LANG_C_plus_plus_03:

520 case DW_LANG_C_plus_plus_11:

521 case DW_LANG_C_plus_plus_14:

522 case DW_LANG_C_plus_plus_17:

523 case DW_LANG_C_plus_plus_20:

524 result = true;

525 break;

526 case DW_LANG_C89:

527 case DW_LANG_C:

528 case DW_LANG_Ada83:

529 case DW_LANG_Cobol74:

530 case DW_LANG_Cobol85:

531 case DW_LANG_Fortran77:

532 case DW_LANG_Fortran90:

533 case DW_LANG_Pascal83:

534 case DW_LANG_Modula2:

535 case DW_LANG_Java:

536 case DW_LANG_C99:

537 case DW_LANG_Ada95:

538 case DW_LANG_Fortran95:

539 case DW_LANG_PLI:

540 case DW_LANG_ObjC:

541 case DW_LANG_ObjC_plus_plus:

542 case DW_LANG_UPC:

543 case DW_LANG_D:

544 case DW_LANG_Python:

545 case DW_LANG_OpenCL:

546 case DW_LANG_Go:

547 case DW_LANG_Modula3:

548 case DW_LANG_Haskell:

549 case DW_LANG_OCaml:

550 case DW_LANG_Rust:

551 case DW_LANG_C11:

552 case DW_LANG_Swift:

553 case DW_LANG_Julia:

554 case DW_LANG_Dylan:

555 case DW_LANG_Fortran03:

556 case DW_LANG_Fortran08:

557 case DW_LANG_RenderScript:

558 case DW_LANG_BLISS:

559 case DW_LANG_Mips_Assembler:

560 case DW_LANG_GOOGLE_RenderScript:

561 case DW_LANG_BORLAND_Delphi:

564 case DW_LANG_Kotlin:

565 case DW_LANG_Zig:

566 case DW_LANG_Crystal:

567 case DW_LANG_C17:

568 case DW_LANG_Fortran18:

569 case DW_LANG_Ada2005:

570 case DW_LANG_Ada2012:

571 case DW_LANG_HIP:

572 case DW_LANG_Assembly:

573 case DW_LANG_C_sharp:

574 case DW_LANG_Mojo:

575 case DW_LANG_GLSL:

576 case DW_LANG_GLSL_ES:

577 case DW_LANG_HLSL:

578 case DW_LANG_OpenCL_CPP:

579 case DW_LANG_CPP_for_OpenCL:

580 case DW_LANG_SYCL:

581 case DW_LANG_Ruby:

582 case DW_LANG_Move:

583 case DW_LANG_Hylo:

584 case DW_LANG_Metal:

585 result = false;

586 break;

587 }

588

589 return result;

590}

591

593 bool result = false;

594

595

596

597 switch (S) {

598 case DW_LANG_Fortran77:

599 case DW_LANG_Fortran90:

600 case DW_LANG_Fortran95:

601 case DW_LANG_Fortran03:

602 case DW_LANG_Fortran08:

603 case DW_LANG_Fortran18:

604 result = true;

605 break;

606 case DW_LANG_C89:

607 case DW_LANG_C:

608 case DW_LANG_Ada83:

609 case DW_LANG_C_plus_plus:

610 case DW_LANG_Cobol74:

611 case DW_LANG_Cobol85:

612 case DW_LANG_Pascal83:

613 case DW_LANG_Modula2:

614 case DW_LANG_Java:

615 case DW_LANG_C99:

616 case DW_LANG_Ada95:

617 case DW_LANG_PLI:

618 case DW_LANG_ObjC:

619 case DW_LANG_ObjC_plus_plus:

620 case DW_LANG_UPC:

621 case DW_LANG_D:

622 case DW_LANG_Python:

623 case DW_LANG_OpenCL:

624 case DW_LANG_Go:

625 case DW_LANG_Modula3:

626 case DW_LANG_Haskell:

627 case DW_LANG_C_plus_plus_03:

628 case DW_LANG_C_plus_plus_11:

629 case DW_LANG_OCaml:

630 case DW_LANG_Rust:

631 case DW_LANG_C11:

632 case DW_LANG_Swift:

633 case DW_LANG_Julia:

634 case DW_LANG_Dylan:

635 case DW_LANG_C_plus_plus_14:

636 case DW_LANG_RenderScript:

637 case DW_LANG_BLISS:

638 case DW_LANG_Mips_Assembler:

639 case DW_LANG_GOOGLE_RenderScript:

640 case DW_LANG_BORLAND_Delphi:

643 case DW_LANG_Kotlin:

644 case DW_LANG_Zig:

645 case DW_LANG_Crystal:

646 case DW_LANG_C_plus_plus_17:

647 case DW_LANG_C_plus_plus_20:

648 case DW_LANG_C17:

649 case DW_LANG_Ada2005:

650 case DW_LANG_Ada2012:

651 case DW_LANG_HIP:

652 case DW_LANG_Assembly:

653 case DW_LANG_C_sharp:

654 case DW_LANG_Mojo:

655 case DW_LANG_GLSL:

656 case DW_LANG_GLSL_ES:

657 case DW_LANG_HLSL:

658 case DW_LANG_OpenCL_CPP:

659 case DW_LANG_CPP_for_OpenCL:

660 case DW_LANG_SYCL:

661 case DW_LANG_Ruby:

662 case DW_LANG_Move:

663 case DW_LANG_Hylo:

664 case DW_LANG_Metal:

665 result = false;

666 break;

667 }

668

669 return result;

670}

671

673

674

675

676 switch (S) {

677 case DW_LANG_C11:

678 case DW_LANG_C17:

679 case DW_LANG_C89:

680 case DW_LANG_C99:

681 case DW_LANG_C:

682 case DW_LANG_ObjC:

683 return true;

684 case DW_LANG_C_plus_plus:

685 case DW_LANG_C_plus_plus_03:

686 case DW_LANG_C_plus_plus_11:

687 case DW_LANG_C_plus_plus_14:

688 case DW_LANG_C_plus_plus_17:

689 case DW_LANG_C_plus_plus_20:

690 case DW_LANG_Ada83:

691 case DW_LANG_Cobol74:

692 case DW_LANG_Cobol85:

693 case DW_LANG_Fortran77:

694 case DW_LANG_Fortran90:

695 case DW_LANG_Pascal83:

696 case DW_LANG_Modula2:

697 case DW_LANG_Java:

698 case DW_LANG_Ada95:

699 case DW_LANG_Fortran95:

700 case DW_LANG_PLI:

701 case DW_LANG_ObjC_plus_plus:

702 case DW_LANG_UPC:

703 case DW_LANG_D:

704 case DW_LANG_Python:

705 case DW_LANG_OpenCL:

706 case DW_LANG_Go:

707 case DW_LANG_Modula3:

708 case DW_LANG_Haskell:

709 case DW_LANG_OCaml:

710 case DW_LANG_Rust:

711 case DW_LANG_Swift:

712 case DW_LANG_Julia:

713 case DW_LANG_Dylan:

714 case DW_LANG_Fortran03:

715 case DW_LANG_Fortran08:

716 case DW_LANG_RenderScript:

717 case DW_LANG_BLISS:

718 case DW_LANG_Mips_Assembler:

719 case DW_LANG_GOOGLE_RenderScript:

720 case DW_LANG_BORLAND_Delphi:

723 case DW_LANG_Kotlin:

724 case DW_LANG_Zig:

725 case DW_LANG_Crystal:

726 case DW_LANG_Fortran18:

727 case DW_LANG_Ada2005:

728 case DW_LANG_Ada2012:

729 case DW_LANG_HIP:

730 case DW_LANG_Assembly:

731 case DW_LANG_C_sharp:

732 case DW_LANG_Mojo:

733 case DW_LANG_GLSL:

734 case DW_LANG_GLSL_ES:

735 case DW_LANG_HLSL:

736 case DW_LANG_OpenCL_CPP:

737 case DW_LANG_CPP_for_OpenCL:

738 case DW_LANG_SYCL:

739 case DW_LANG_Ruby:

740 case DW_LANG_Move:

741 case DW_LANG_Hylo:

742 case DW_LANG_Metal:

743 return false;

744 }

746}

747

749 return isFortran(S) ? DW_ATE_signed : DW_ATE_unsigned;

750}

751

759

761

762#define HANDLE_DW_CC(ID, NAME) DW_CC_##NAME = ID,

763#include "llvm/BinaryFormat/Dwarf.def"

766};

767

769#define HANDLE_DW_ASPACE(ID, NAME) DW_ASPACE_LLVM_##NAME = ID,

770#define HANDLE_DW_ASPACE_PRED(ID, NAME, PRED) DW_ASPACE_LLVM_##NAME = ID,

771#include "llvm/BinaryFormat/Dwarf.def"

772};

773

781

787

793

794

796#define HANDLE_DW_LNS(ID, NAME) DW_LNS_##NAME = ID,

797#include "llvm/BinaryFormat/Dwarf.def"

798};

799

800

802#define HANDLE_DW_LNE(ID, NAME) DW_LNE_##NAME = ID,

803#include "llvm/BinaryFormat/Dwarf.def"

806};

807

809#define HANDLE_DW_LNCT(ID, NAME) DW_LNCT_##NAME = ID,

810#include "llvm/BinaryFormat/Dwarf.def"

813};

814

823

824

826#define HANDLE_DW_MACRO(ID, NAME) DW_MACRO_##NAME = ID,

827#include "llvm/BinaryFormat/Dwarf.def"

830};

831

832

834#define HANDLE_DW_MACRO_GNU(ID, NAME) DW_MACRO_GNU_##NAME = ID,

835#include "llvm/BinaryFormat/Dwarf.def"

838};

839

840

842#define HANDLE_DW_RLE(ID, NAME) DW_RLE_##NAME = ID,

843#include "llvm/BinaryFormat/Dwarf.def"

844};

845

846

848#define HANDLE_DW_LLE(ID, NAME) DW_LLE_##NAME = ID,

849#include "llvm/BinaryFormat/Dwarf.def"

850};

851

852

854#define HANDLE_DW_CFA(ID, NAME) DW_CFA_##NAME = ID,

855#define HANDLE_DW_CFA_PRED(ID, NAME, ARCH) DW_CFA_##NAME = ID,

856#include "llvm/BinaryFormat/Dwarf.def"

858

861};

862

886

887

888

889

891#define HANDLE_DW_APPLE_PROPERTY(ID, NAME) DW_APPLE_PROPERTY_##NAME = ID,

892#include "llvm/BinaryFormat/Dwarf.def"

893};

894

895

897#define HANDLE_DW_UT(ID, NAME) DW_UT_##NAME = ID,

898#include "llvm/BinaryFormat/Dwarf.def"

901};

902

904#define HANDLE_DW_IDX(ID, NAME) DW_IDX_##NAME = ID,

905#include "llvm/BinaryFormat/Dwarf.def"

908};

909

912 case DW_UT_compile:

913 case DW_UT_type:

914 case DW_UT_partial:

915 case DW_UT_skeleton:

916 case DW_UT_split_compile:

917 case DW_UT_split_type:

918 return true;

919 default:

920 return false;

921 }

922}

923

925 switch (T) {

926 case DW_TAG_compile_unit:

927 case DW_TAG_type_unit:

928 case DW_TAG_partial_unit:

929 case DW_TAG_skeleton_unit:

930 return true;

931 default:

932 return false;

933 }

934}

935

936

960

961

963 if (UniqueHashCount > 1024)

964 return UniqueHashCount / 4;

965 if (UniqueHashCount > 16)

966 return UniqueHashCount / 2;

967 return std::max<uint32_t>(UniqueHashCount, 1);

968}

969

970

981

983

984

985

986

987

988

989

990

997 unsigned SubOpEncoding);

1030

1031

1032

1033

1034

1035

1036

1037

1038

1039

1040

1041

1054

1055

1056

1057

1058

1059

1060

1061

1062

1063

1070

1071

1072

1073

1074

1075

1076

1077

1084

1085

1086

1088

1089

1090

1091

1093

1095

1096

1100 return 4;

1102 return 8;

1103 }

1105}

1106

1107

1108

1109

1114

1115

1117

1118

1119

1120

1126

1127

1134

1136};

1137

1138

1142 return 4;

1144 return 12;

1145 }

1147}

1148

1149

1150

1151

1152

1153

1154

1155

1156

1157

1158

1160 FormParams Params);

1161

1162

1163

1165 bool ExtensionsOk = true);

1166

1167

1168

1170

1171

1172

1174

1175

1176

1177

1178

1179

1180

1181

1182

1183

1184

1198 return Kind << KIND_OFFSET | Linkage << LINKAGE_OFFSET;

1199 }

1200

1201private:

1202 enum {

1203 KIND_OFFSET = 4,

1204 KIND_MASK = 7 << KIND_OFFSET,

1205 LINKAGE_OFFSET = 7,

1206 LINKAGE_MASK = 1 << LINKAGE_OFFSET

1207 };

1208};

1209

1210template struct EnumTraits : public std::false_type {};

1211

1213 static constexpr char Type[3] = "AT";

1215};

1216

1218 static constexpr char Type[5] = "FORM";

1220};

1221

1223 static constexpr char Type[4] = "IDX";

1225};

1226

1228 static constexpr char Type[4] = "TAG";

1230};

1231

1233 static constexpr char Type[4] = "LNS";

1235};

1236

1238 static constexpr char Type[3] = "OP";

1240};

1241

1243 return std::numeric_limits<uint64_t>::max() >> (8 - AddressByteSize) * 8;

1244}

1245

1246}

1257 if (Str.empty()) {

1260 } else

1261 OS << Str;

1262 }

1263};