Index: runtime/vm/assembler_x64.cc |
=================================================================== |
--- runtime/vm/assembler_x64.cc (revision 6416) |
+++ runtime/vm/assembler_x64.cc (working copy) |
@@ -278,12 +278,15 @@ |
} |
+// Use 0x89 encoding (instead of 0x8B encoding), which is expected by gdb64 |
+// older than 7.3.1-gg5 when disassembling a function's prolog (movq rbp, rsp) |
+// for proper unwinding of Dart frames (use --generate_gdb_symbols and -O0). |
void Assembler::movq(Register dst, Register src) { |
AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
- Operand operand(src); |
- EmitOperandREX(dst, operand, REX_W); |
- EmitUint8(0x8B); |
- EmitOperand(dst & 7, operand); |
+ Operand operand(dst); |
+ EmitOperandREX(src, operand, REX_W); |
+ EmitUint8(0x89); |
Lasse Reichstein Nielsen
2012/04/12 09:57:38
You could decide whether to use 0x89 or 0x8b depen
regis
2012/04/12 16:46:16
This is a good point for memory addressing modes,
|
+ EmitOperand(src & 7, operand); |
} |