Commit cc61283b authored by Igor Kudrin's avatar Igor Kudrin
Browse files

[DebugInfo] Avoid crashing on an invalid section identifier.

A DWARFSectionKind is read from input. It is not validated on parsing,
so an unexpected value may result in reaching llvm_unreachable() in
DWARFUnitIndex::getColumnHeader() when dumping the index section.

Differential Revision: https://reviews.llvm.org/D75609
parent 3906ae38
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -118,7 +118,7 @@ StringRef DWARFUnitIndex::getColumnHeader(DWARFSectionKind DS) {
    CASE(MACINFO);
    CASE(MACRO);
  }
  llvm_unreachable("unknown DWARFSectionKind");
  return "<unknown>";
}

void DWARFUnitIndex::dump(raw_ostream &OS) const {
+33 −0
Original line number Diff line number Diff line
# RUN: llvm-mc -triple x86_64-unknown-linux %s -filetype=obj -o - | \
# RUN:   llvm-dwarfdump -debug-cu-index - | \
# RUN:   FileCheck %s

# CHECK:      .debug_cu_index contents:
# CHECK-NEXT: version = 2 slots = 2
# CHECK-EMPTY:
# CHECK-NEXT: Index Signature          INFO                     <unknown>
# CHECK-NEXT: ----- ------------------ ------------------------ ------------------------
# CHECK-NEXT:     1 0x1100001122222222 [0x00001000, 0x00001010) [0x00002000, 0x00002020)

    .section .debug_cu_index, "", @progbits
## Header:
    .long 2             # Version
    .long 2             # Section count
    .long 1             # Unit count
    .long 2             # Slot count
## Hash Table of Signatures:
    .quad 0x1100001122222222
    .quad 0
## Parallel Table of Indexes:
    .long 1
    .long 0
## Table of Section Offsets:
## Row 0:
    .long 1             # DW_SECT_INFO
    .long 9             # Invalid section identifier
# Row 1:
    .long 0x1000        # Offset in .debug_info.dwo
    .long 0x2000
## Table of Section Sizes:
    .long 0x10          # Size in .debug_info.dwo
    .long 0x20