blackList // -unexported_symbol[s_list], no listed symbol exported.
};
+ enum class DebugInfoMode {
+ addDebugMap, // Default
+ noDebugMap // -S option
+ };
+
/// Initializes the context to sane default values given the specified output
/// file type, arch, os, and minimum os version. This should be called before
/// other setXXX() methods.
bool exportRestrictMode() const { return _exportMode != ExportMode::globals; }
bool exportSymbolNamed(StringRef sym) const;
+ DebugInfoMode debugInfoMode() const { return _debugInfoMode; }
+ void setDebugInfoMode(DebugInfoMode mode) {
+ _debugInfoMode = mode;
+ }
+
bool keepPrivateExterns() const { return _keepPrivateExterns; }
void setKeepPrivateExterns(bool v) { _keepPrivateExterns = v; }
bool demangleSymbols() const { return _demangle; }
mutable std::vector<std::unique_ptr<class MachOFileNode>> _indirectDylibs;
ExportMode _exportMode;
llvm::StringSet<> _exportedSymbols;
+ DebugInfoMode _debugInfoMode;
std::unique_ptr<llvm::raw_fd_ostream> _dependencyInfo;
};
}
}
+ // Handle debug info handling options: -S
+ if (parsedArgs->hasArg(OPT_S)) {
+ ctx.setDebugInfoMode(MachOLinkingContext::DebugInfoMode::noDebugMap);
+ }
+
// Handle input files
for (auto &arg : *parsedArgs) {
bool upward;
def dependency_info : Separate<["-"], "dependency_info">,
MetaVarName<"<file>">,
HelpText<"Write binary list of files used during link">;
+def S : Flag<["-"], "S">,
+ HelpText<"Remove debug information (STABS or DWARF) from the output file">;
def t : Flag<["-"], "t">,
HelpText<"Print the names of the input files as ld processes them">;
_compatibilityVersion(0), _currentVersion(0), _deadStrippableDylib(false),
_printAtoms(false), _testingFileUsage(false), _keepPrivateExterns(false),
_demangle(false), _archHandler(nullptr),
- _exportMode(ExportMode::globals) {}
+ _exportMode(ExportMode::globals),
+ _debugInfoMode(DebugInfoMode::addDebugMap) {}
MachOLinkingContext::~MachOLinkingContext() {}