aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-profgen
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/tools/llvm-profgen')
-rw-r--r--llvm/tools/llvm-profgen/ProfiledBinary.cpp21
-rw-r--r--llvm/tools/llvm-profgen/ProfiledBinary.h16
2 files changed, 17 insertions, 20 deletions
diff --git a/llvm/tools/llvm-profgen/ProfiledBinary.cpp b/llvm/tools/llvm-profgen/ProfiledBinary.cpp
index 6865e36..94728ce 100644
--- a/llvm/tools/llvm-profgen/ProfiledBinary.cpp
+++ b/llvm/tools/llvm-profgen/ProfiledBinary.cpp
@@ -250,14 +250,12 @@ void ProfiledBinary::load() {
DisassembleFunctionSet.insert_range(DisassembleFunctions);
- if (auto *ELFObj = dyn_cast<ELFObjectFileBase>(Obj)) {
- checkPseudoProbe(ELFObj);
- if (UsePseudoProbes)
- populateElfSymbolAddressList(ELFObj);
+ checkPseudoProbe(Obj);
+ if (UsePseudoProbes)
+ populateSymbolAddressList(Obj);
- if (ShowDisassemblyOnly)
- decodePseudoProbe(ELFObj);
- }
+ if (ShowDisassemblyOnly)
+ decodePseudoProbe(Obj);
// Disassemble the text sections.
disassemble(Obj);
@@ -417,7 +415,7 @@ void ProfiledBinary::setPreferredTextSegmentAddresses(const ObjectFile *Obj) {
llvm_unreachable("invalid object format");
}
-void ProfiledBinary::checkPseudoProbe(const ELFObjectFileBase *Obj) {
+void ProfiledBinary::checkPseudoProbe(const ObjectFile *Obj) {
if (UseDwarfCorrelation)
return;
@@ -440,7 +438,7 @@ void ProfiledBinary::checkPseudoProbe(const ELFObjectFileBase *Obj) {
UsePseudoProbes = HasProbeDescSection && HasPseudoProbeSection;
}
-void ProfiledBinary::decodePseudoProbe(const ELFObjectFileBase *Obj) {
+void ProfiledBinary::decodePseudoProbe(const ObjectFile *Obj) {
if (!UsePseudoProbes)
return;
@@ -511,7 +509,7 @@ void ProfiledBinary::decodePseudoProbe(const ELFObjectFileBase *Obj) {
void ProfiledBinary::decodePseudoProbe() {
OwningBinary<Binary> OBinary = unwrapOrError(createBinary(Path), Path);
Binary &ExeBinary = *OBinary.getBinary();
- auto *Obj = cast<ELFObjectFileBase>(&ExeBinary);
+ auto *Obj = cast<ObjectFile>(&ExeBinary);
decodePseudoProbe(Obj);
}
@@ -809,8 +807,7 @@ void ProfiledBinary::checkUseFSDiscriminator(
}
}
-void ProfiledBinary::populateElfSymbolAddressList(
- const ELFObjectFileBase *Obj) {
+void ProfiledBinary::populateSymbolAddressList(const ObjectFile *Obj) {
// Create a mapping from virtual address to symbol GUID and the other way
// around.
StringRef FileName = Obj->getFileName();
diff --git a/llvm/tools/llvm-profgen/ProfiledBinary.h b/llvm/tools/llvm-profgen/ProfiledBinary.h
index e82fbab..5a814b7 100644
--- a/llvm/tools/llvm-profgen/ProfiledBinary.h
+++ b/llvm/tools/llvm-profgen/ProfiledBinary.h
@@ -228,19 +228,19 @@ class ProfiledBinary {
// A list of binary functions that have samples.
std::unordered_set<const BinaryFunction *> ProfiledFunctions;
- // GUID to Elf symbol start address map
+ // GUID to symbol start address map
DenseMap<uint64_t, uint64_t> SymbolStartAddrs;
// These maps are for temporary use of warning diagnosis.
DenseSet<int64_t> AddrsWithMultipleSymbols;
DenseSet<std::pair<uint64_t, uint64_t>> AddrsWithInvalidInstruction;
- // Start address to Elf symbol GUID map
+ // Start address to symbol GUID map
std::unordered_multimap<uint64_t, uint64_t> StartAddrToSymMap;
// An ordered map of mapping function's start address to function range
- // relevant info. Currently to determine if the offset of ELF is the start of
- // a real function, we leverage the function range info from DWARF.
+ // relevant info. Currently to determine if the offset of ELF/COFF is the
+ // start of a real function, we leverage the function range info from DWARF.
std::map<uint64_t, FuncRange> StartAddrToFuncRangeMap;
// Address to context location map. Used to expand the context.
@@ -335,9 +335,9 @@ class ProfiledBinary {
void setPreferredTextSegmentAddresses(const object::COFFObjectFile *Obj,
StringRef FileName);
- void checkPseudoProbe(const object::ELFObjectFileBase *Obj);
+ void checkPseudoProbe(const object::ObjectFile *Obj);
- void decodePseudoProbe(const object::ELFObjectFileBase *Obj);
+ void decodePseudoProbe(const object::ObjectFile *Obj);
void checkUseFSDiscriminator(
const object::ObjectFile *Obj,
@@ -353,8 +353,8 @@ class ProfiledBinary {
// Load debug info from DWARF unit.
void loadSymbolsFromDWARFUnit(DWARFUnit &CompilationUnit);
- // Create elf symbol to its start address mapping.
- void populateElfSymbolAddressList(const object::ELFObjectFileBase *O);
+ // Create symbol to its start address mapping.
+ void populateSymbolAddressList(const object::ObjectFile *O);
// A function may be spilt into multiple non-continuous address ranges. We use
// this to set whether start a function range is the real entry of the