Use .debug_frame version 4
Some tools struggle with the augmentation. The android clang now
produces version 4 by default, so we need to support it anyway.
Bug: 192012848
Test: art/test.py -b --host -t 137
Change-Id: Ia14bfbaaac9e654e97f5d4169792e0bb07ea413e
diff --git a/libelffile/dwarf/headers.h b/libelffile/dwarf/headers.h
index d77012f..5e1b39b 100644
--- a/libelffile/dwarf/headers.h
+++ b/libelffile/dwarf/headers.h
@@ -48,17 +48,13 @@
size_t cie_header_start_ = writer.data()->size();
writer.PushUint32(0); // Length placeholder.
writer.PushUint32(0xFFFFFFFF); // CIE id.
- writer.PushUint8(1); // Version.
- writer.PushString("zR");
+ writer.PushUint8(4); // Version.
+ writer.PushString(""); // Augmentation.
+ writer.PushUint8(is64bit ? 8 : 4); // Address size.
+ writer.PushUint8(0); // Segment size.
writer.PushUleb128(DebugFrameOpCodeWriter<Vector>::kCodeAlignmentFactor);
writer.PushSleb128(DebugFrameOpCodeWriter<Vector>::kDataAlignmentFactor);
writer.PushUleb128(return_address_register.num()); // ubyte in DWARF2.
- writer.PushUleb128(1); // z: Augmentation data size.
- if (is64bit) {
- writer.PushUint8(DW_EH_PE_absptr | DW_EH_PE_udata8); // R: Pointer encoding.
- } else {
- writer.PushUint8(DW_EH_PE_absptr | DW_EH_PE_udata4); // R: Pointer encoding.
- }
writer.PushData(opcodes.data());
writer.Pad(is64bit ? 8 : 4);
writer.UpdateUint32(cie_header_start_, writer.data()->size() - cie_header_start_ - 4);