diff options
| -rw-r--r-- | compiler/debug/elf_debug_frame_writer.h | 3 | ||||
| -rw-r--r-- | compiler/debug/elf_debug_writer.cc | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/compiler/debug/elf_debug_frame_writer.h b/compiler/debug/elf_debug_frame_writer.h index e0116c6f41..27b70c8caa 100644 --- a/compiler/debug/elf_debug_frame_writer.h +++ b/compiler/debug/elf_debug_frame_writer.h @@ -182,7 +182,7 @@ void WriteCFISection(linker::ElfBuilder<ElfTypes>* builder, std::vector<const MethodDebugInfo*> sorted_method_infos; sorted_method_infos.reserve(method_infos.size()); for (size_t i = 0; i < method_infos.size(); i++) { - if (!method_infos[i].deduped) { + if (!method_infos[i].cfi.empty() && !method_infos[i].deduped) { sorted_method_infos.push_back(&method_infos[i]); } } @@ -222,6 +222,7 @@ void WriteCFISection(linker::ElfBuilder<ElfTypes>* builder, buffer.clear(); for (const MethodDebugInfo* mi : sorted_method_infos) { DCHECK(!mi->deduped); + DCHECK(!mi->cfi.empty()); const Elf_Addr code_address = mi->code_address + (mi->is_code_address_text_relative ? builder->GetText()->GetAddress() : 0); if (format == dwarf::DW_EH_FRAME_FORMAT) { diff --git a/compiler/debug/elf_debug_writer.cc b/compiler/debug/elf_debug_writer.cc index 16f163b085..393db3dccb 100644 --- a/compiler/debug/elf_debug_writer.cc +++ b/compiler/debug/elf_debug_writer.cc @@ -226,7 +226,8 @@ std::vector<uint8_t> MakeElfFileForJIT( num_cfis++; }); DCHECK_EQ(num_syms, 1u); - DCHECK_EQ(num_cfis, 1u); + // CFI might be missing. TODO: Ensure we have CFI for all methods. + DCHECK_LE(num_cfis, 1u); } return buffer; } |