From b83bece153812f214c40cdbe1932d989bef503c5 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Mon, 24 Dec 2012 00:18:38 -0500 Subject: [PATCH] Cleanups. - Add clarifying comment. - Slightly adjust handling of augmentation 'P' so it also handles skipping LEB128-encoded values correctly. - Remove unused code. --- src/apps/debugger/dwarf/DwarfFile.cpp | 34 ++++++++------------------- 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/src/apps/debugger/dwarf/DwarfFile.cpp b/src/apps/debugger/dwarf/DwarfFile.cpp index 7c71714295b..e9bb094f29e 100644 --- a/src/apps/debugger/dwarf/DwarfFile.cpp +++ b/src/apps/debugger/dwarf/DwarfFile.cpp @@ -234,8 +234,11 @@ struct DwarfFile::CIEAugmentation { : fString(NULL), fFlags(0), - fAddressEncoding(0) + fAddressEncoding(CFI_ADDRESS_FORMAT_ABSOLUTE) { + // we default to absolute address format since that corresponds + // to the DWARF standard for .debug_frame. In gcc's case, however, + // .eh_frame will generally override that via augmentation 'R' } void Init(DataReader& dataReader) @@ -270,11 +273,12 @@ struct DwarfFile::CIEAugmentation { break; case 'P': { - char personalityEncoding = dataReader.Read(0); - uint8 addressSize = EncodedAddressSize( - personalityEncoding, NULL); - dataReader.Skip(addressSize); - remaining -= addressSize + 1; + char tempEncoding = fAddressEncoding; + fAddressEncoding = dataReader.Read(0); + off_t offset = dataReader.Offset(); + ReadEncodedAddress(dataReader, NULL, NULL, true); + fAddressEncoding = tempEncoding; + remaining -= dataReader.Offset() - offset + 1; break; } case 'R': @@ -370,24 +374,6 @@ struct DwarfFile::CIEAugmentation { return 0; } - int8 EncodedAddressSize(char encoding, CompilationUnit* unit) const - { - switch (encoding & 0x07) { - case CFI_ADDRESS_FORMAT_ABSOLUTE: - return unit->AddressSize(); - case CFI_ADDRESS_FORMAT_UNSIGNED_16: - return 2; - case CFI_ADDRESS_FORMAT_UNSIGNED_32: - return 4; - case CFI_ADDRESS_FORMAT_UNSIGNED_64: - return 8; - } - - // TODO: gcc doesn't (currently) actually generate LEB128-formatted - // addresses. If that changes, we'll need to handle them accordingly - return 0; - } - uint8 FDEAddressType() const { return fAddressEncoding & 0x70;