summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main.cxx14
-rw-r--r--session.h3
2 files changed, 16 insertions, 1 deletions
diff --git a/main.cxx b/main.cxx
index 15016435..4f8ddcf5 100644
--- a/main.cxx
+++ b/main.cxx
@@ -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)
{
diff --git a/session.h b/session.h
index 6fa05a2f..c1661ea7 100644
--- a/session.h
+++ b/session.h
@@ -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);