diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2007-10-08 21:15:01 -0400 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2007-10-08 21:15:01 -0400 |
commit | 38d7fc30b108ec4a9e74ddb33d945cce1bd5c4c6 (patch) | |
tree | 7a211e51e13e7e631306d90b17decda4497676b6 /main.cxx | |
parent | 9d33454315110680fda3a926465c3002a0521431 (diff) | |
parent | 7574941533c7ca9a4b1715cbfd785f732be48266 (diff) | |
download | systemtap-steved-38d7fc30b108ec4a9e74ddb33d945cce1bd5c4c6.tar.gz systemtap-steved-38d7fc30b108ec4a9e74ddb33d945cce1bd5c4c6.tar.xz systemtap-steved-38d7fc30b108ec4a9e74ddb33d945cce1bd5c4c6.zip |
Merge branch 'master' of git://sources.redhat.com/git/systemtap
Diffstat (limited to 'main.cxx')
-rw-r--r-- | main.cxx | 26 |
1 files changed, 20 insertions, 6 deletions
@@ -225,6 +225,7 @@ main (int argc, char * const argv []) s.symtab = false; s.use_cache = true; s.tapset_compile_coverage = false; + s.need_uprobes = false; const char* s_p = getenv ("SYSTEMTAP_TAPSET"); if (s_p != NULL) @@ -728,12 +729,13 @@ main (int argc, char * const argv []) // See if we can use cached source/module. if (get_from_cache(s)) { - // If our last pass isn't 5, we're done (since passes 3 and - // 4 just generate what we just pulled out of the cache). - if (s.last_pass < 5) goto cleanup; + // If our last pass isn't 5, and we don't need to build + // uprobes, we're done (since passes 3 and 4 just generate + // what we just pulled out of the cache). + if (s.last_pass < 4) goto cleanup; - // Short-circuit to pass 5. - goto pass_5; + // Short-circuit to pass 4.5. + goto pass_4point5; } } @@ -810,8 +812,20 @@ main (int argc, char * const argv []) } } - if (rc || s.last_pass == 4) goto cleanup; + if (rc) goto cleanup; + // PASS 4.5: BUILD SYSTEMTAP'S VERSION OF UPROBES (IF NECESSARY) +pass_4point5: + if (s.need_uprobes) + { + if (s.last_pass == 5 && uprobes_enabled()) + // Uprobes symbols are currently available in the kernel, + // so staprun won't use what we'd build anyway. + goto pass_5; + + (void) make_uprobes(s); + } + if (s.last_pass == 4) goto cleanup; // PASS 5: RUN pass_5: |