diff options
Diffstat (limited to 'bolt/lib/Rewrite/RewriteInstance.cpp')
-rw-r--r-- | bolt/lib/Rewrite/RewriteInstance.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/bolt/lib/Rewrite/RewriteInstance.cpp b/bolt/lib/Rewrite/RewriteInstance.cpp index 9f243a1..fe4a23c 100644 --- a/bolt/lib/Rewrite/RewriteInstance.cpp +++ b/bolt/lib/Rewrite/RewriteInstance.cpp @@ -896,6 +896,20 @@ void RewriteInstance::discoverFileObjects() { continue; MarkerSymType MarkerType = BC->getMarkerType(SymInfo.Symbol); + + // Treat ST_Function as code. + Expected<object::SymbolRef::Type> TypeOrError = SymInfo.Symbol.getType(); + consumeError(TypeOrError.takeError()); + if (TypeOrError && *TypeOrError == SymbolRef::ST_Function) { + if (IsData) { + Expected<StringRef> NameOrError = SymInfo.Symbol.getName(); + consumeError(NameOrError.takeError()); + BC->errs() << "BOLT-WARNING: function symbol " << *NameOrError + << " lacks code marker\n"; + } + MarkerType = MarkerSymType::CODE; + } + if (MarkerType != MarkerSymType::NONE) { SortedMarkerSymbols.push_back(MarkerSym{SymInfo.Address, MarkerType}); LastAddr = SymInfo.Address; |