Generate CFI for stackless methods.
Generate at least a single no-op.
Otherwise it seems like CFI is missing.
Bug: 122379755
Test: ART_HEAP_POISONING=true ART_USE_READ_BARRIER=true ./art/test.py -r -t 137 --jit --32 --target
Change-Id: Id9206cb49ce976a03e1d50e6801abcefff537f60
diff --git a/compiler/debug/elf_debug_writer.cc b/compiler/debug/elf_debug_writer.cc
index 68c4e15..4bd0eac 100644
--- a/compiler/debug/elf_debug_writer.cc
+++ b/compiler/debug/elf_debug_writer.cc
@@ -222,8 +222,7 @@
num_cfis++;
});
DCHECK_EQ(num_syms, 1u);
- // CFI might be missing. TODO: Ensure we have CFI for all methods.
- DCHECK_LE(num_cfis, 1u);
+ DCHECK_EQ(num_cfis, 1u);
}
return buffer;
}
diff --git a/compiler/optimizing/code_generator_arm_vixl.cc b/compiler/optimizing/code_generator_arm_vixl.cc
index 8204f1e..9c155f8 100644
--- a/compiler/optimizing/code_generator_arm_vixl.cc
+++ b/compiler/optimizing/code_generator_arm_vixl.cc
@@ -2093,6 +2093,8 @@
}
if (HasEmptyFrame()) {
+ // Ensure that the CFI opcode list is not empty.
+ GetAssembler()->cfi().Nop();
return;
}