virtual bool hasLongBranchStubs() { return false; }
virtual LinkerOptionsList* linkerOptions() const = 0;
virtual SourceKind sourceKind() const { return kSourceUnknown; }
+ virtual const uint8_t* fileContent() const { return nullptr; }
};
} // namespace relocatable
_definition = a._definition;
_combine = a._combine;
_dontDeadStrip = a._dontDeadStrip;
+ _dontDeadStripIfRefLive = a._dontDeadStripIfRefLive;
_thumb = a._thumb;
_autoHide = a._autoHide;
_contentType = a._contentType;
_weakImportState = a._weakImportState;
}
+ const char* safeFilePath() const {
+ const File* f = this->file();
+ if ( f != NULL )
+ return f->path();
+ else
+ return "<internal>";
+ }
+
protected:
enum AddressMode { modeSectionOffset, modeFinalAddress };
};
-
+
// utility classes for using std::unordered_map with c-strings
struct CStringHash {
size_t operator()(const char* __s) const {
hasThreadLocalVariableDefinitions(false),
hasWeakExternalSymbols(false),
someObjectHasOptimizationHints(false),
- dropAllBitcode(false), embedMarkerOnly(false) { }
+ dropAllBitcode(false), embedMarkerOnly(false),
+ forceLoadCompilerRT(false) { }
std::vector<FinalSection*> sections;
std::vector<ld::dylib::File*> dylibs;
CStringSet linkerOptionFrameworks;
std::vector<const ld::Atom*> indirectBindingTable;
std::vector<const ld::relocatable::File*> filesWithBitcode;
+ std::vector<const ld::relocatable::File*> filesFromCompilerRT;
std::vector<const ld::Atom*> deadAtoms;
std::unordered_set<const char*> allUndefProxies;
const ld::dylib::File* bundleLoader;
bool someObjectHasOptimizationHints;
bool dropAllBitcode;
bool embedMarkerOnly;
+ bool forceLoadCompilerRT;
std::vector<std::string> ltoBitcodePath;
};