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 58d7fa9f..45b154ac 100644
--- a/main.cxx
+++ b/main.cxx
@@ -106,6 +106,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" << endl
@@ -393,7 +401,7 @@ main (int argc, char * const argv [])
{ "ignore-dwarf", 0, &long_opt, LONG_OPT_IGNORE_DWARF },
{ NULL, 0, NULL, 0 }
};
- int grc = getopt_long (argc, argv, "hVMvtp:I:e:o:R:r:m:kgPc:x:D:bs:uqwl:",
+ int grc = getopt_long (argc, argv, "hVMvtp:I:e:o:R:r:m:kgPc:x:D:bs:uqwl:d:",
long_options, NULL);
if (grc < 0)
break;
@@ -437,6 +445,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 58bc7ac5..2b61a85f 100644
--- a/session.h
+++ b/session.h
@@ -164,7 +164,10 @@ 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;
struct module_cache* module_cache;
+
std::set<std::string> seen_errors;
std::set<std::string> seen_warnings;
unsigned num_errors () { return seen_errors.size(); }