diff options
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index fb12e75..37b17cb 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -1148,13 +1148,15 @@ static void disassembleObject(const Target *TheTarget, const ObjectFile *Obj, continue; uint64_t Start = std::get<0>(Symbols[SI]); + if (Start < SectionAddr || StopAddress <= Start) + continue; // The end is the section end, the beginning of the next symbol, or // --stop-address. - uint64_t End = std::min<uint64_t>(SectionAddr + SectSize, StopAddress); - if (SI + 1 < SE) - End = std::min(End, std::get<0>(Symbols[SI + 1])); - if (Start >= End || Start >= StopAddress || End <= StartAddress) + uint64_t End = std::min<uint64_t>( + SI + 1 < SE ? std::get<0>(Symbols[SI + 1]) : SectionAddr + SectSize, + StopAddress); + if (Start >= End || End <= StartAddress) continue; Start -= SectionAddr; End -= SectionAddr; |