Fix gtests with mini-debug-info enabled by default.
Ensure we can generate mini-debug-info if it is enabled by default.
The tests don't explicitly generate the info on background thread.
Test: test.py -g
Change-Id: If3cf9a067ce683f728d553394e1407beeadae670
diff --git a/compiler/optimizing/code_generator_arm64.cc b/compiler/optimizing/code_generator_arm64.cc
index bdc5e2d..e1a4718 100644
--- a/compiler/optimizing/code_generator_arm64.cc
+++ b/compiler/optimizing/code_generator_arm64.cc
@@ -5118,7 +5118,7 @@
Offset offset(ArtMethod::EntryPointFromQuickCompiledCodeOffset(
kArm64PointerSize).Int32Value());
assembler.JumpTo(ManagedRegister(arm64::X0), offset, ManagedRegister(arm64::IP0));
- if (GetCompilerOptions().GenerateAnyDebugInfo()) {
+ if (debug_name != nullptr && GetCompilerOptions().GenerateAnyDebugInfo()) {
*debug_name = "MethodCallThunk";
}
break;
@@ -5126,7 +5126,7 @@
case linker::LinkerPatch::Type::kCallEntrypoint: {
Offset offset(patch.EntrypointOffset());
assembler.JumpTo(ManagedRegister(arm64::TR), offset, ManagedRegister(arm64::IP0));
- if (GetCompilerOptions().GenerateAnyDebugInfo()) {
+ if (debug_name != nullptr && GetCompilerOptions().GenerateAnyDebugInfo()) {
*debug_name = "EntrypointCallThunk_" + std::to_string(offset.Uint32Value());
}
break;
diff --git a/compiler/optimizing/code_generator_arm_vixl.cc b/compiler/optimizing/code_generator_arm_vixl.cc
index 18709f8..bca0936 100644
--- a/compiler/optimizing/code_generator_arm_vixl.cc
+++ b/compiler/optimizing/code_generator_arm_vixl.cc
@@ -9630,7 +9630,7 @@
MemberOffset offset = ArtMethod::EntryPointFromQuickCompiledCodeOffset(kArmPointerSize);
assembler.LoadFromOffset(arm::kLoadWord, vixl32::pc, vixl32::r0, offset.Int32Value());
assembler.GetVIXLAssembler()->Bkpt(0);
- if (GetCompilerOptions().GenerateAnyDebugInfo()) {
+ if (debug_name != nullptr && GetCompilerOptions().GenerateAnyDebugInfo()) {
*debug_name = "MethodCallThunk";
}
break;
@@ -9638,7 +9638,7 @@
case linker::LinkerPatch::Type::kCallEntrypoint: {
assembler.LoadFromOffset(arm::kLoadWord, vixl32::pc, tr, patch.EntrypointOffset());
assembler.GetVIXLAssembler()->Bkpt(0);
- if (GetCompilerOptions().GenerateAnyDebugInfo()) {
+ if (debug_name != nullptr && GetCompilerOptions().GenerateAnyDebugInfo()) {
*debug_name = "EntrypointCallThunk_" + std::to_string(patch.EntrypointOffset());
}
break;
diff --git a/dex2oat/linker/elf_writer_quick.cc b/dex2oat/linker/elf_writer_quick.cc
index 53aa9b4..424c252 100644
--- a/dex2oat/linker/elf_writer_quick.cc
+++ b/dex2oat/linker/elf_writer_quick.cc
@@ -264,6 +264,10 @@
template <typename ElfTypes>
void ElfWriterQuick<ElfTypes>::WriteDebugInfo(const debug::DebugInfo& debug_info) {
if (compiler_options_.GetGenerateMiniDebugInfo()) {
+ // If mini-debug-info wasn't explicitly created so far, create it now (happens in tests).
+ if (debug_info_task_ == nullptr) {
+ PrepareDebugInfo(debug_info);
+ }
// Wait for the mini-debug-info generation to finish and write it to disk.
Thread* self = Thread::Current();
DCHECK(debug_info_thread_pool_ != nullptr);