aboutsummaryrefslogtreecommitdiff
path: root/bolt/lib/Rewrite/RewriteInstance.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'bolt/lib/Rewrite/RewriteInstance.cpp')
-rw-r--r--bolt/lib/Rewrite/RewriteInstance.cpp14
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;