From: Pete Cooper Date: Mon, 14 Dec 2015 23:10:52 +0000 (+0000) Subject: Factor out some duplication. NFC. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=46508070a4e11ecf9470855b97eef0db378beacb;p=oota-llvm.git Factor out some duplication. NFC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255569 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/llvm-objdump/MachODump.cpp b/tools/llvm-objdump/MachODump.cpp index 2fd0751dd8c..65de70c58e0 100644 --- a/tools/llvm-objdump/MachODump.cpp +++ b/tools/llvm-objdump/MachODump.cpp @@ -6771,6 +6771,22 @@ static unsigned getSizeForEncoding(bool is64Bit, } } +static uint64_t readPointer(const char *&Pos, bool is64Bit, unsigned Encoding) { + switch (getSizeForEncoding(is64Bit, Encoding)) { + case 2: + return readNext(Pos); + break; + case 4: + return readNext(Pos); + break; + case 8: + return readNext(Pos); + break; + default: + llvm_unreachable("Illegal data size"); + } +} + static void printMachOEHFrameSection(const MachOObjectFile *Obj, std::map &Symbols, const SectionRef &EHFrame) { @@ -6867,19 +6883,7 @@ static void printMachOEHFrameSection(const MachOObjectFile *Obj, case 'P': { assert(!Personality && "Duplicate personality"); PersonalityEncoding = readNext(Pos); - switch (getSizeForEncoding(is64Bit, *PersonalityEncoding)) { - case 2: - Personality = readNext(Pos); - break; - case 4: - Personality = readNext(Pos); - break; - case 8: - Personality = readNext(Pos); - break; - default: - llvm_unreachable("Illegal data size"); - } + Personality = readPointer(Pos, is64Bit, *PersonalityEncoding); break; } case 'R': @@ -6953,24 +6957,8 @@ static void printMachOEHFrameSection(const MachOObjectFile *Obj, uint64_t PCPointerSize = getSizeForEncoding(is64Bit, *CIE.FDEPointerEncoding); - uint64_t PCBegin; - uint64_t PCRange; - switch (PCPointerSize) { - case 2: - PCBegin = readNext(Pos); - PCRange = readNext(Pos); - break; - case 4: - PCBegin = readNext(Pos); - PCRange = readNext(Pos); - break; - case 8: - PCBegin = readNext(Pos); - PCRange = readNext(Pos); - break; - default: - llvm_unreachable("Illegal data size"); - } + uint64_t PCBegin = readPointer(Pos, is64Bit, *CIE.FDEPointerEncoding); + uint64_t PCRange = readPointer(Pos, is64Bit, *CIE.FDEPointerEncoding); Optional AugmentationLength; uint32_t LSDAPointerSize; @@ -6984,19 +6972,7 @@ static void printMachOEHFrameSection(const MachOObjectFile *Obj, // Decode the LSDA if the CIE augmentation string said we should. if (CIE.LSDAPointerEncoding) { LSDAPointerSize = getSizeForEncoding(is64Bit, *CIE.LSDAPointerEncoding); - switch (LSDAPointerSize) { - case 2: - LSDAPointer = readNext(Pos); - break; - case 4: - LSDAPointer = readNext(Pos); - break; - case 8: - LSDAPointer = readNext(Pos); - break; - default: - llvm_unreachable("Illegal data size"); - } + LSDAPointer = readPointer(Pos, is64Bit, *CIE.LSDAPointerEncoding); } }