diff options
-rw-r--r-- | main.cxx | 14 | ||||
-rw-r--r-- | session.h | 3 |
2 files changed, 16 insertions, 1 deletions
@@ -104,6 +104,14 @@ usage (systemtap_session& s, int exitcode) << " -c CMD start the probes, run CMD, and exit when it finishes" << endl << " -x PID sets target() to PID" << endl + << " -d OBJECT add unwind/symbol data for OBJECT file"; + if (s.unwindsym_modules.size() == 0) + clog << endl; + else + clog << ", in addition to" << endl; + for (unsigned i=0; i<s.unwindsym_modules.size(); i++) + clog << " " << s.unwindsym_modules[i] << endl; + clog << " -t collect probe timing information" << endl #ifdef HAVE_LIBSQLITE3 << " -q generate information on tapset coverage" @@ -346,7 +354,7 @@ main (int argc, char * const argv []) while (true) { // NB: also see find_hash(), usage(), switch stmt below, stap.1 man page - int grc = getopt (argc, argv, "hVMvtp:I:e:o:R:r:m:kgPc:x:D:bs:uqwl:"); + int grc = getopt (argc, argv, "hVMvtp:I:e:o:R:r:m:kgPc:x:D:bs:uqwl:d:"); if (grc < 0) break; switch (grc) @@ -389,6 +397,10 @@ main (int argc, char * const argv []) s.include_path.push_back (string (optarg)); break; + case 'd': + s.unwindsym_modules.push_back (string (optarg)); + break; + case 'e': if (have_script) { @@ -156,6 +156,9 @@ struct systemtap_session Dwarf_Addr sym_kprobes_text_end; Dwarf_Addr sym_stext; + // List of libdwfl module names to extract symbol/unwind data for. + std::vector<std::string> unwindsym_modules; + std::set<std::string> seen_errors; unsigned num_errors () { return seen_errors.size(); } // void print_error (const parse_error& e); |