From 61a5502a93ab938edc66422e41ad98757a6f920b Mon Sep 17 00:00:00 2001 From: Greg McGary Date: Thu, 10 Dec 2020 20:54:45 -0800 Subject: [PATCH] [llvm-objdump-macho] print per-second-level-page encodings for option --unwind-info Compact unwind entries have 8 bits for the encoding-table offset: * offsets 0..126 reference the global commmon-encodings table, while * offsets 127..255 reference a per-second-level-page table. This diff teaches `llvm-objdump` to print this per-page encodings table. Differential Revision: https://reviews.llvm.org/D93265 --- .../MachO/Inputs/unwind-info-excess.macho-x86_64 | Bin 0 -> 60160 bytes .../MachO/unwind-info-excess-x86_64.test | 67 +++++++++++++++++++++ llvm/tools/llvm-objdump/MachODump.cpp | 23 ++++--- 3 files changed, 83 insertions(+), 7 deletions(-) create mode 100755 llvm/test/tools/llvm-objdump/MachO/Inputs/unwind-info-excess.macho-x86_64 create mode 100644 llvm/test/tools/llvm-objdump/MachO/unwind-info-excess-x86_64.test diff --git a/llvm/test/tools/llvm-objdump/MachO/Inputs/unwind-info-excess.macho-x86_64 b/llvm/test/tools/llvm-objdump/MachO/Inputs/unwind-info-excess.macho-x86_64 new file mode 100755 index 0000000000000000000000000000000000000000..586f8db3ae1ef1e9269a83e2bf49fb53001e6856 GIT binary patch literal 60160 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/dev/null | FileCheck %s + +# CHECK:Contents of __unwind_info section: +# CHECK-NEXT: Version: 0x1 +# CHECK-NEXT: Common encodings array section offset: 0x1c +# CHECK-NEXT: Number of common encodings in array: 0x7f + +# CHECK: Second level indices: +# CHECK: Second level index[0]: offset in section +# CHECK: Page encodings: (count = 17) +# CHECK: encoding[127]: 0x01010003 +# CHECK: encoding[128]: 0x01010002 +# CHECK: encoding[129]: 0x01010001 +# CHECK: encoding[130]: 0x0102001d +# CHECK: encoding[131]: 0x01020015 +# CHECK: encoding[132]: 0x0102000d +# CHECK: encoding[133]: 0x0102001c +# CHECK: encoding[134]: 0x01020014 +# CHECK: encoding[135]: 0x0102000c +# CHECK: encoding[136]: 0x01020013 +# CHECK: encoding[137]: 0x0102000b +# CHECK: encoding[138]: 0x01020022 +# CHECK: encoding[139]: 0x0102001a +# CHECK: encoding[140]: 0x0102000a +# CHECK: encoding[141]: 0x01020021 +# CHECK: encoding[142]: 0x01020019 +# CHECK: encoding[143]: 0x01020011 + +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[127]=0x01010003 +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[128]=0x01010002 +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[129]=0x01010001 +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[130]=0x0102001d +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[131]=0x01020015 +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[132]=0x0102000d +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[133]=0x0102001c +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[134]=0x01020014 +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[135]=0x0102000c +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[136]=0x01020013 +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[137]=0x0102000b +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[138]=0x01020022 +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[139]=0x0102001a +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[140]=0x0102000a +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[141]=0x01020021 +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[142]=0x01020019 +# CHECK: [{{[0-9]+}}]: function offset={{[x0-9a-f]+}}, encoding[143]=0x01020011 diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp index 41a7d07..80886c8 100644 --- a/llvm/tools/llvm-objdump/MachODump.cpp +++ b/llvm/tools/llvm-objdump/MachODump.cpp @@ -8007,12 +8007,23 @@ static void printCompressedSecondLevelUnwindPage( (void)Kind; assert(Kind == 3 && "kind for a compressed 2nd level index should be 3"); + uint32_t NumCommonEncodings = CommonEncodings.size(); uint16_t EntriesStart = readNext(PageData, Pos); uint16_t NumEntries = readNext(PageData, Pos); - uint16_t EncodingsStart = readNext(PageData, Pos); - readNext(PageData, Pos); - StringRef PageEncodings = PageData.substr(EncodingsStart, StringRef::npos); + uint16_t PageEncodingsStart = readNext(PageData, Pos); + uint16_t NumPageEncodings = readNext(PageData, Pos); + SmallVector PageEncodings; + if (NumPageEncodings) { + outs() << " Page encodings: (count = " << NumPageEncodings << ")\n"; + Pos = PageEncodingsStart; + for (unsigned i = 0; i < NumPageEncodings; ++i) { + uint32_t Encoding = readNext(PageData, Pos); + PageEncodings.push_back(Encoding); + outs() << " encoding[" << (i + NumCommonEncodings) + << "]: " << format("0x%08" PRIx32, Encoding) << '\n'; + } + } Pos = EntriesStart; for (unsigned i = 0; i < NumEntries; ++i) { @@ -8021,12 +8032,10 @@ static void printCompressedSecondLevelUnwindPage( uint32_t EncodingIdx = Entry >> 24; uint32_t Encoding; - if (EncodingIdx < CommonEncodings.size()) + if (EncodingIdx < NumCommonEncodings) Encoding = CommonEncodings[EncodingIdx]; else - Encoding = read(PageEncodings, - sizeof(uint32_t) * - (EncodingIdx - CommonEncodings.size())); + Encoding = PageEncodings[EncodingIdx - NumCommonEncodings]; outs() << " [" << i << "]: " << "function offset=" << format("0x%08" PRIx32, FunctionOffset) -- 2.7.4