mirror of
https://github.com/RPCS3/llvm.git
synced 2026-01-31 01:25:19 +01:00
Sometimes, llvm-symbolizer gives wrong results due to incorrect sizes of some symbols. The reason for that was an incorrectly sorted array in computeSymbolSizes. The comparison function used subtraction of unsigned types, which is incorrect. Let's change this to return explicit -1 or 1. Differential Revision: https://reviews.llvm.org/D26537 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@287028 91177308-0d34-0410-b5e6-96231b3b80d8
35 lines
765 B
C++
35 lines
765 B
C++
//===- SymbolSize.h ---------------------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_OBJECT_SYMBOLSIZE_H
|
|
#define LLVM_OBJECT_SYMBOLSIZE_H
|
|
|
|
#include "llvm/Object/ObjectFile.h"
|
|
|
|
namespace llvm {
|
|
namespace object {
|
|
|
|
struct SymEntry {
|
|
symbol_iterator I;
|
|
uint64_t Address;
|
|
unsigned Number;
|
|
unsigned SectionID;
|
|
};
|
|
|
|
int compareAddress(const SymEntry *A, const SymEntry *B);
|
|
|
|
std::vector<std::pair<SymbolRef, uint64_t>>
|
|
computeSymbolSizes(const ObjectFile &O);
|
|
|
|
}
|
|
} // namespace llvm
|
|
|
|
#endif
|