diff options
| author | 2016-03-09 11:44:44 +0000 | |
|---|---|---|
| committer | 2016-03-10 10:29:27 +0000 | |
| commit | fe736b775c7774bb2f7072e022099ca47dd21a3c (patch) | |
| tree | 92a7850c812dc0373738c6c5cfdff5a32d5e489c /compiler/debug | |
| parent | 197160d47f34238cb5e7444fa4c2de300db8e2c6 (diff) | |
Allow generation of native debug info for multiple methods.
Slight tweak in the API which I will need in the near future.
Change-Id: I45954ae16710bc941a9a06a3a17c70798315ca53
Diffstat (limited to 'compiler/debug')
| -rw-r--r-- | compiler/debug/elf_debug_writer.cc | 23 | ||||
| -rw-r--r-- | compiler/debug/elf_debug_writer.h | 40 |
2 files changed, 34 insertions, 29 deletions
diff --git a/compiler/debug/elf_debug_writer.cc b/compiler/debug/elf_debug_writer.cc index 4f2a007492..0ca7370f98 100644 --- a/compiler/debug/elf_debug_writer.cc +++ b/compiler/debug/elf_debug_writer.cc @@ -114,10 +114,10 @@ std::vector<uint8_t> MakeMiniDebugInfo( } template <typename ElfTypes> -static ArrayRef<const uint8_t> WriteDebugElfFileForMethodInternal( - const InstructionSet isa, +static ArrayRef<const uint8_t> WriteDebugElfFileForMethodsInternal( + InstructionSet isa, const InstructionSetFeatures* features, - const MethodDebugInfo& method_info) { + const ArrayRef<const MethodDebugInfo>& method_infos) { std::vector<uint8_t> buffer; buffer.reserve(KB); VectorOutputStream out("Debug ELF file", &buffer); @@ -125,7 +125,7 @@ static ArrayRef<const uint8_t> WriteDebugElfFileForMethodInternal( // No program headers since the ELF file is not linked and has no allocated sections. builder->Start(false /* write_program_headers */); WriteDebugInfo(builder.get(), - ArrayRef<const MethodDebugInfo>(&method_info, 1), + method_infos, dwarf::DW_DEBUG_FRAME_FORMAT, false /* write_oat_patches */); builder->End(); @@ -137,19 +137,20 @@ static ArrayRef<const uint8_t> WriteDebugElfFileForMethodInternal( return ArrayRef<const uint8_t>(result, buffer.size()); } -ArrayRef<const uint8_t> WriteDebugElfFileForMethod(const InstructionSet isa, - const InstructionSetFeatures* features, - const MethodDebugInfo& method_info) { +ArrayRef<const uint8_t> WriteDebugElfFileForMethods( + InstructionSet isa, + const InstructionSetFeatures* features, + const ArrayRef<const MethodDebugInfo>& method_infos) { if (Is64BitInstructionSet(isa)) { - return WriteDebugElfFileForMethodInternal<ElfTypes64>(isa, features, method_info); + return WriteDebugElfFileForMethodsInternal<ElfTypes64>(isa, features, method_infos); } else { - return WriteDebugElfFileForMethodInternal<ElfTypes32>(isa, features, method_info); + return WriteDebugElfFileForMethodsInternal<ElfTypes32>(isa, features, method_infos); } } template <typename ElfTypes> static ArrayRef<const uint8_t> WriteDebugElfFileForClassesInternal( - const InstructionSet isa, + InstructionSet isa, const InstructionSetFeatures* features, const ArrayRef<mirror::Class*>& types) SHARED_REQUIRES(Locks::mutator_lock_) { @@ -174,7 +175,7 @@ static ArrayRef<const uint8_t> WriteDebugElfFileForClassesInternal( return ArrayRef<const uint8_t>(result, buffer.size()); } -ArrayRef<const uint8_t> WriteDebugElfFileForClasses(const InstructionSet isa, +ArrayRef<const uint8_t> WriteDebugElfFileForClasses(InstructionSet isa, const InstructionSetFeatures* features, const ArrayRef<mirror::Class*>& types) { if (Is64BitInstructionSet(isa)) { diff --git a/compiler/debug/elf_debug_writer.h b/compiler/debug/elf_debug_writer.h index d364521f1b..7f5d24d06e 100644 --- a/compiler/debug/elf_debug_writer.h +++ b/compiler/debug/elf_debug_writer.h @@ -31,24 +31,28 @@ namespace debug { struct MethodDebugInfo; template <typename ElfTypes> -void WriteDebugInfo(ElfBuilder<ElfTypes>* builder, - const ArrayRef<const MethodDebugInfo>& method_infos, - dwarf::CFIFormat cfi_format, - bool write_oat_patches); - -std::vector<uint8_t> MakeMiniDebugInfo(InstructionSet isa, - const InstructionSetFeatures* features, - size_t rodata_section_size, - size_t text_section_size, - const ArrayRef<const MethodDebugInfo>& method_infos); - -ArrayRef<const uint8_t> WriteDebugElfFileForMethod(const InstructionSet isa, - const InstructionSetFeatures* features, - const MethodDebugInfo& method_info); - -ArrayRef<const uint8_t> WriteDebugElfFileForClasses(const InstructionSet isa, - const InstructionSetFeatures* features, - const ArrayRef<mirror::Class*>& types) +void WriteDebugInfo( + ElfBuilder<ElfTypes>* builder, + const ArrayRef<const MethodDebugInfo>& method_infos, + dwarf::CFIFormat cfi_format, + bool write_oat_patches); + +std::vector<uint8_t> MakeMiniDebugInfo( + InstructionSet isa, + const InstructionSetFeatures* features, + size_t rodata_section_size, + size_t text_section_size, + const ArrayRef<const MethodDebugInfo>& method_infos); + +ArrayRef<const uint8_t> WriteDebugElfFileForMethods( + InstructionSet isa, + const InstructionSetFeatures* features, + const ArrayRef<const MethodDebugInfo>& method_infos); + +ArrayRef<const uint8_t> WriteDebugElfFileForClasses( + InstructionSet isa, + const InstructionSetFeatures* features, + const ArrayRef<mirror::Class*>& types) SHARED_REQUIRES(Locks::mutator_lock_); } // namespace debug |