desc("Specify a directory to prepend to the paths of object files."),
value_desc("path"), cat(DsymCategory));
+static opt<bool> DumpStab(
+ "symtab",
+ desc("Dumps the symbol table found in executable or object file(s) and\n"
+ "exits."),
+ init(false), cat(DsymCategory));
+static alias DumpStabA("s", desc("Alias for --symtab"), aliasopt(DumpStab));
+
static opt<bool> FlatOut("flat",
desc("Produce a flat dSYM file (not a bundle)."),
init(false), cat(DsymCategory));
Options.Verbose = Verbose;
Options.NoOutput = NoOutput;
Options.NoODR = NoODR;
+ Options.PrependPath = OsoPrependPath;
llvm::InitializeAllTargetInfos();
llvm::InitializeAllTargetMCs();
}
for (auto &InputFile : InputFiles) {
+ // Dump the symbol table for each input file and requested arch
+ if (DumpStab) {
+ if (!dumpStab(InputFile, ArchFlags, OsoPrependPath))
+ exitDsymutil(1);
+ continue;
+ }
+
auto DebugMapPtrsOrErr = parseDebugMap(InputFile, ArchFlags, OsoPrependPath,
Verbose, InputIsYAMLDebugMap);
if (DumpDebugMap)
continue;
+ if (Map->begin() == Map->end())
+ llvm::errs() << "warning: no debug symbols in executable (-arch "
+ << MachOUtils::getArchName(Map->getTriple().getArchName())
+ << ")\n";
+
std::string OutputFile = getOutputFileName(InputFile, NeedsTempFiles);
if (OutputFile.empty() || !linkDwarf(OutputFile, *Map, Options))
exitDsymutil(1);