#include "llvm/Support/Signals.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Support/TargetSelect.h"
+#include <cstdint>
#include <string>
using namespace llvm::dsymutil;
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));
llvm::PrettyStackTraceProgram StackPrinter(argc, argv);
llvm::llvm_shutdown_obj Shutdown;
LinkOptions Options;
+ void *MainAddr = (void *)(intptr_t)&exitDsymutil;
+ std::string SDKPath = llvm::sys::fs::getMainExecutable(argv[0], MainAddr);
+ SDKPath = llvm::sys::path::parent_path(SDKPath);
HideUnrelatedOptions(DsymCategory);
llvm::cl::ParseCommandLineOptions(
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 (NeedsTempFiles &&
!MachOUtils::generateUniversalBinary(
- TempFiles, getOutputFileName(InputFile), Options))
+ TempFiles, getOutputFileName(InputFile), Options, SDKPath))
exitDsymutil(1);
}