diff options
author | Andreas Gampe <agampe@google.com> | 2015-04-22 21:19:51 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-04-22 21:19:51 +0000 |
commit | 8e58d76eb30a50e38c46bd6277186116937ba396 (patch) | |
tree | 4ea04c2731b751f8919c90f240660e65b09645f5 | |
parent | 0ad14266a71c8579cd6bebcaf42f56fae37c988f (diff) | |
parent | 8a813f72d21dea87b9e94b686fb35868ad4a88c4 (diff) | |
download | art-8e58d76eb30a50e38c46bd6277186116937ba396.zip art-8e58d76eb30a50e38c46bd6277186116937ba396.tar.gz art-8e58d76eb30a50e38c46bd6277186116937ba396.tar.bz2 |
Merge "Do not mention x86 floating point numbers in CFI."
-rw-r--r-- | compiler/dwarf/register.h | 1 | ||||
-rw-r--r-- | compiler/elf_writer_debug.cc | 8 |
2 files changed, 7 insertions, 2 deletions
diff --git a/compiler/dwarf/register.h b/compiler/dwarf/register.h index fa666df..7045237 100644 --- a/compiler/dwarf/register.h +++ b/compiler/dwarf/register.h @@ -33,6 +33,7 @@ class Reg { // There are ways around this in DWARF but they are complex. // It would be much simpler to always spill whole D registers. // Arm64 mapping is correct since we already do this there. + // libunwind might struggle with the new mapping as well. static Reg ArmCore(int num) { return Reg(num); } static Reg ArmFp(int num) { return Reg(64 + num); } // S0–S31. diff --git a/compiler/elf_writer_debug.cc b/compiler/elf_writer_debug.cc index cf0adae..28e6999 100644 --- a/compiler/elf_writer_debug.cc +++ b/compiler/elf_writer_debug.cc @@ -99,6 +99,8 @@ static void WriteEhFrameCIE(InstructionSet isa, return; } case kX86: { + // FIXME: Add fp registers once libunwind adds support for them. Bug: 20491296 + constexpr bool generate_opcodes_for_x86_fp = false; DebugFrameOpCodeWriter<> opcodes; opcodes.DefCFA(Reg::X86Core(4), 4); // R4(ESP). opcodes.Offset(Reg::X86Core(8), -4); // R8(EIP). @@ -113,8 +115,10 @@ static void WriteEhFrameCIE(InstructionSet isa, } } // fp registers. - for (int reg = 0; reg < 8; reg++) { - opcodes.Undefined(Reg::X86Fp(reg)); + if (generate_opcodes_for_x86_fp) { + for (int reg = 0; reg < 8; reg++) { + opcodes.Undefined(Reg::X86Fp(reg)); + } } auto return_reg = Reg::X86Core(8); // R8(EIP). WriteEhFrameCIE(is64bit, addr_type, return_reg, opcodes, eh_frame); |