summaryrefslogtreecommitdiff
path: root/compiler/debug/elf_debug_writer.cc
diff options
context:
space:
mode:
author David Srbecky <dsrbecky@google.com> 2016-03-09 11:44:44 +0000
committer David Srbecky <dsrbecky@google.com> 2016-03-10 10:29:27 +0000
commitfe736b775c7774bb2f7072e022099ca47dd21a3c (patch)
tree92a7850c812dc0373738c6c5cfdff5a32d5e489c /compiler/debug/elf_debug_writer.cc
parent197160d47f34238cb5e7444fa4c2de300db8e2c6 (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/elf_debug_writer.cc')
-rw-r--r--compiler/debug/elf_debug_writer.cc23
1 files changed, 12 insertions, 11 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)) {