summaryrefslogtreecommitdiff
path: root/compiler/debug/elf_debug_writer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/debug/elf_debug_writer.cc')
-rw-r--r--compiler/debug/elf_debug_writer.cc51
1 files changed, 23 insertions, 28 deletions
diff --git a/compiler/debug/elf_debug_writer.cc b/compiler/debug/elf_debug_writer.cc
index 3b7363be6a..cc74717edb 100644
--- a/compiler/debug/elf_debug_writer.cc
+++ b/compiler/debug/elf_debug_writer.cc
@@ -22,20 +22,20 @@
#include "base/array_ref.h"
#include "base/stl_util.h"
-#include "debug/dwarf/dwarf_constants.h"
#include "debug/elf_compilation_unit.h"
#include "debug/elf_debug_frame_writer.h"
#include "debug/elf_debug_info_writer.h"
#include "debug/elf_debug_line_writer.h"
#include "debug/elf_debug_loc_writer.h"
-#include "debug/elf_debug_reader.h"
#include "debug/elf_symtab_writer.h"
#include "debug/method_debug_info.h"
-#include "debug/xz_utils.h"
-#include "elf.h"
-#include "linker/elf_builder.h"
-#include "linker/vector_output_stream.h"
+#include "dwarf/dwarf_constants.h"
+#include "elf/elf.h"
+#include "elf/elf_builder.h"
+#include "elf/elf_debug_reader.h"
+#include "elf/xz_utils.h"
#include "oat.h"
+#include "stream/vector_output_stream.h"
namespace art {
namespace debug {
@@ -43,7 +43,7 @@ namespace debug {
using ElfRuntimeTypes = std::conditional<sizeof(void*) == 4, ElfTypes32, ElfTypes64>::type;
template <typename ElfTypes>
-void WriteDebugInfo(linker::ElfBuilder<ElfTypes>* builder,
+void WriteDebugInfo(ElfBuilder<ElfTypes>* builder,
const DebugInfo& debug_info) {
// Write .strtab and .symtab.
WriteDebugSymbols(builder, /* mini-debug-info= */ false, debug_info);
@@ -112,7 +112,7 @@ void WriteDebugInfo(linker::ElfBuilder<ElfTypes>* builder,
template <typename ElfTypes>
static std::vector<uint8_t> MakeMiniDebugInfoInternal(
InstructionSet isa,
- const InstructionSetFeatures* features,
+ const InstructionSetFeatures* features ATTRIBUTE_UNUSED,
typename ElfTypes::Addr text_section_address,
size_t text_section_size,
typename ElfTypes::Addr dex_section_address,
@@ -120,9 +120,8 @@ static std::vector<uint8_t> MakeMiniDebugInfoInternal(
const DebugInfo& debug_info) {
std::vector<uint8_t> buffer;
buffer.reserve(KB);
- linker::VectorOutputStream out("Mini-debug-info ELF file", &buffer);
- std::unique_ptr<linker::ElfBuilder<ElfTypes>> builder(
- new linker::ElfBuilder<ElfTypes>(isa, features, &out));
+ VectorOutputStream out("Mini-debug-info ELF file", &buffer);
+ std::unique_ptr<ElfBuilder<ElfTypes>> builder(new ElfBuilder<ElfTypes>(isa, &out));
builder->Start(/* write_program_headers= */ false);
// Mirror ELF sections as NOBITS since the added symbols will reference them.
if (text_section_size != 0) {
@@ -174,7 +173,7 @@ std::vector<uint8_t> MakeMiniDebugInfo(
std::vector<uint8_t> MakeElfFileForJIT(
InstructionSet isa,
- const InstructionSetFeatures* features,
+ const InstructionSetFeatures* features ATTRIBUTE_UNUSED,
bool mini_debug_info,
const MethodDebugInfo& method_info) {
using ElfTypes = ElfRuntimeTypes;
@@ -184,9 +183,8 @@ std::vector<uint8_t> MakeElfFileForJIT(
debug_info.compiled_methods = ArrayRef<const MethodDebugInfo>(&method_info, 1);
std::vector<uint8_t> buffer;
buffer.reserve(KB);
- linker::VectorOutputStream out("Debug ELF file", &buffer);
- std::unique_ptr<linker::ElfBuilder<ElfTypes>> builder(
- new linker::ElfBuilder<ElfTypes>(isa, features, &out));
+ VectorOutputStream out("Debug ELF file", &buffer);
+ std::unique_ptr<ElfBuilder<ElfTypes>> builder(new ElfBuilder<ElfTypes>(isa, &out));
// No program headers since the ELF file is not linked and has no allocated sections.
builder->Start(/* write_program_headers= */ false);
builder->GetText()->AllocateVirtualMemory(method_info.code_address, method_info.code_size);
@@ -230,7 +228,7 @@ std::vector<uint8_t> MakeElfFileForJIT(
// Combine several mini-debug-info ELF files into one, while filtering some symbols.
std::vector<uint8_t> PackElfFileForJIT(
InstructionSet isa,
- const InstructionSetFeatures* features,
+ const InstructionSetFeatures* features ATTRIBUTE_UNUSED,
std::vector<ArrayRef<const uint8_t>>& added_elf_files,
std::vector<const void*>& removed_symbols,
/*out*/ size_t* num_symbols) {
@@ -250,9 +248,8 @@ std::vector<uint8_t> PackElfFileForJIT(
std::vector<uint8_t> inner_elf_file;
{
inner_elf_file.reserve(1 * KB); // Approximate size of ELF file with a single symbol.
- linker::VectorOutputStream out("Mini-debug-info ELF file for JIT", &inner_elf_file);
- std::unique_ptr<linker::ElfBuilder<ElfTypes>> builder(
- new linker::ElfBuilder<ElfTypes>(isa, features, &out));
+ VectorOutputStream out("Mini-debug-info ELF file for JIT", &inner_elf_file);
+ std::unique_ptr<ElfBuilder<ElfTypes>> builder(new ElfBuilder<ElfTypes>(isa, &out));
builder->Start(/*write_program_headers=*/ false);
auto* text = builder->GetText();
auto* strtab = builder->GetStrTab();
@@ -328,9 +325,8 @@ std::vector<uint8_t> PackElfFileForJIT(
XzCompress(ArrayRef<const uint8_t>(inner_elf_file), &gnu_debugdata);
outer_elf_file.reserve(KB + gnu_debugdata.size());
- linker::VectorOutputStream out("Mini-debug-info ELF file for JIT", &outer_elf_file);
- std::unique_ptr<linker::ElfBuilder<ElfTypes>> builder(
- new linker::ElfBuilder<ElfTypes>(isa, features, &out));
+ VectorOutputStream out("Mini-debug-info ELF file for JIT", &outer_elf_file);
+ std::unique_ptr<ElfBuilder<ElfTypes>> builder(new ElfBuilder<ElfTypes>(isa, &out));
builder->Start(/*write_program_headers=*/ false);
if (max_address > min_address) {
builder->GetText()->AllocateVirtualMemory(min_address, max_address - min_address);
@@ -345,16 +341,15 @@ std::vector<uint8_t> PackElfFileForJIT(
std::vector<uint8_t> WriteDebugElfFileForClasses(
InstructionSet isa,
- const InstructionSetFeatures* features,
+ const InstructionSetFeatures* features ATTRIBUTE_UNUSED,
const ArrayRef<mirror::Class*>& types)
REQUIRES_SHARED(Locks::mutator_lock_) {
using ElfTypes = ElfRuntimeTypes;
CHECK_EQ(sizeof(ElfTypes::Addr), static_cast<size_t>(GetInstructionSetPointerSize(isa)));
std::vector<uint8_t> buffer;
buffer.reserve(KB);
- linker::VectorOutputStream out("Debug ELF file", &buffer);
- std::unique_ptr<linker::ElfBuilder<ElfTypes>> builder(
- new linker::ElfBuilder<ElfTypes>(isa, features, &out));
+ VectorOutputStream out("Debug ELF file", &buffer);
+ std::unique_ptr<ElfBuilder<ElfTypes>> builder(new ElfBuilder<ElfTypes>(isa, &out));
// No program headers since the ELF file is not linked and has no allocated sections.
builder->Start(/* write_program_headers= */ false);
ElfDebugInfoWriter<ElfTypes> info_writer(builder.get());
@@ -370,10 +365,10 @@ std::vector<uint8_t> WriteDebugElfFileForClasses(
// Explicit instantiations
template void WriteDebugInfo<ElfTypes32>(
- linker::ElfBuilder<ElfTypes32>* builder,
+ ElfBuilder<ElfTypes32>* builder,
const DebugInfo& debug_info);
template void WriteDebugInfo<ElfTypes64>(
- linker::ElfBuilder<ElfTypes64>* builder,
+ ElfBuilder<ElfTypes64>* builder,
const DebugInfo& debug_info);
} // namespace debug