diff options
author | Josh Stone <jistone@redhat.com> | 2009-09-28 17:36:04 -0700 |
---|---|---|
committer | Josh Stone <jistone@redhat.com> | 2009-09-28 17:36:04 -0700 |
commit | 55e50c24c9176f1b3d15af94e145456a68e7ecf6 (patch) | |
tree | 4845578ce0a05487078ba81c126797cb26ef035f /hash.h | |
parent | 5f8ca04fbb0682ff8647b4df5de68cd1042e312d (diff) | |
download | systemtap-steved-55e50c24c9176f1b3d15af94e145456a68e7ecf6.tar.gz systemtap-steved-55e50c24c9176f1b3d15af94e145456a68e7ecf6.tar.xz systemtap-steved-55e50c24c9176f1b3d15af94e145456a68e7ecf6.zip |
Try to build tracequery for all headers at once
To mitigate PR10424, we switched to building a separate tracequery
module for each tracepoint header, so a bad header wouldn't break all of
the others. However, with recent kernels that leads to ~18 make
commands, which adds up quickly in time. It's cached, so that's not too
bad, but as a developer who rebuilds stap frequently, it gets annoying.
If we're going to call 18 makes, it's worth it to start with one bigger
make that covers all the headers at once (like we used to). If that one
fails, we can still fall back to compiling individually.
FWIW, the failing ext4.h header was only created in 2.6.31, and was
fixed before 2.6.32, so the specific failure in PR10424 has a fairly
small window.
* buildrun.cxx (make_tracequery): Just take a single vector of headers.
* hash.cxx (find_tracequery_hash): Deal with multiple headers.
* tapsets.cxx (tracepoint_builder::get_tracequery_module): Ditto.
(tracepoint_builder::init_dw): Attempt all system headers together,
and if that fails, try again individually.
Diffstat (limited to 'hash.h')
-rw-r--r-- | hash.h | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -1,4 +1,5 @@ #include <string> +#include <vector> extern "C" { #include <string.h> @@ -36,7 +37,8 @@ public: }; void find_hash (systemtap_session& s, const std::string& script); -std::string find_tracequery_hash (systemtap_session& s, const std::string& header); +std::string find_tracequery_hash (systemtap_session& s, + const std::vector<std::string>& headers); std::string find_typequery_hash (systemtap_session& s, const std::string& name); /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ |