[DWARFYAML][debug_info] Fix array index out of bounds error

This patch is trying to fix the array index out of bounds error. I observed it in (https://reviews.llvm.org/harbormaster/unit/view/99638/).

Reviewed By: jhenderson, MaskRay

Differential Revision: https://reviews.llvm.org/D82139
This commit is contained in:
Xing GUO 2020-06-20 14:25:56 +08:00
parent c721bc081e
commit 6770349592
2 changed files with 29 additions and 0 deletions

View File

@ -46,6 +46,8 @@ static unsigned getRefSize(const DWARFYAML::Unit &Unit) {
template <typename T> void DWARFYAML::VisitorImpl<T>::traverseDebugInfo() {
for (auto &Unit : DebugInfo.CompileUnits) {
onStartCompileUnit(Unit);
if (Unit.Entries.empty())
continue;
auto FirstAbbrevCode = Unit.Entries[0].AbbrCode;
for (auto &Entry : Unit.Entries) {

View File

@ -548,3 +548,30 @@ DWARF:
Entries:
- AbbrCode: 0
Values: []
## h) Test that yaml2obj doesn't crash when the 'Entries' of a compilation unit is empty.
# RUN: yaml2obj --docnum=8 %s -o %t8.o
# RUN: llvm-readelf --hex-dump=.debug_info %t8.o | \
# RUN: FileCheck %s --check-prefix=EMPTY-ENTRIES --match-full-lines
# EMPTY-ENTRIES: Hex dump of section '.debug_info':
# EMPTY-ENTRIES-NEXT: 0x00000000 34120000 05000204 34120000 4.......4...
# EMPTY-ENTRIES-EMPTY:
## ^- 'Entries' is empty
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
DWARF:
debug_info:
- Length:
TotalLength: 0x1234
Version: 5
UnitType: DW_UT_type
AbbrOffset: 0x1234
AddrSize: 4
Entries: []