diff options
author | ddomingo <ddomingo@redhat.com> | 2008-10-09 13:12:08 +1000 |
---|---|---|
committer | ddomingo <ddomingo@redhat.com> | 2008-10-09 13:12:08 +1000 |
commit | 37cda13ed305fc4887536166c232f4aee087d862 (patch) | |
tree | 6b877ba9b2ed71f32842dacb18e09732e0c307a4 /runtime/transport/symbols.c | |
parent | 9e522dfc27872bd28ab5a4f7fbfbfd7cc843e3cb (diff) | |
parent | 0d633db21595f7160d0f7a767ab92181284d8adb (diff) | |
download | systemtap-steved-37cda13ed305fc4887536166c232f4aee087d862.tar.gz systemtap-steved-37cda13ed305fc4887536166c232f4aee087d862.tar.xz systemtap-steved-37cda13ed305fc4887536166c232f4aee087d862.zip |
Merge branch 'master' of ssh://sources.redhat.com/git/systemtap
Diffstat (limited to 'runtime/transport/symbols.c')
-rw-r--r-- | runtime/transport/symbols.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/runtime/transport/symbols.c b/runtime/transport/symbols.c index 4bdd0904..1cd78724 100644 --- a/runtime/transport/symbols.c +++ b/runtime/transport/symbols.c @@ -51,12 +51,19 @@ static void _stp_do_relocation(const char __user *buf, size_t count) if (strcmp (_stp_modules[mi]->name, msg.module)) continue; + if (!strcmp (".note.gnu.build-id", msg.reloc)) { + _stp_modules[mi]->notes_sect = msg.address; /* cache this particular address */ + } + for (si=0; si<_stp_modules[mi]->num_sections; si++) { if (strcmp (_stp_modules[mi]->sections[si].name, msg.reloc)) continue; - - _stp_modules[mi]->sections[si].addr = msg.address; + else + { + _stp_modules[mi]->sections[si].addr = msg.address; + break; + } } /* loop over sections */ } /* loop over modules */ } @@ -134,7 +141,8 @@ static int _stp_section_is_interesting(const char *name) { int ret = 1; if (!strncmp("__", name, 2) - || !strncmp(".note", name, 5) + || (!strncmp(".note", name, 5) + && strncmp(".note.gnu.build-id", name, 18)) || !strncmp(".gnu", name, 4) || !strncmp(".mod", name, 4)) ret = 0; |