diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2010-04-07 16:59:34 -0400 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2010-04-08 17:17:46 -0400 |
commit | 17b91441800b590c5ef4a0c213c2bbcd8deef696 (patch) | |
tree | cb196f9ad9afd3584c6ee733122ef1461b095a01 | |
parent | 4419a86cac1f3b2feeef194899d5a5682df3905f (diff) | |
download | systemtap-steved-17b91441800b590c5ef4a0c213c2bbcd8deef696.tar.gz systemtap-steved-17b91441800b590c5ef4a0c213c2bbcd8deef696.tar.xz systemtap-steved-17b91441800b590c5ef4a0c213c2bbcd8deef696.zip |
runtime: more diagnostics for build-id checking
* runtime/sym.c: Store individual rc's for build-id comparisons.
-rw-r--r-- | runtime/sym.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/runtime/sym.c b/runtime/sym.c index 3c69fb1a..e1e6e225 100644 --- a/runtime/sym.c +++ b/runtime/sym.c @@ -311,15 +311,15 @@ static int _stp_module_check(void) loc2c-runtime.h were more easily usable, a deref() loop could do it too. */ mm_segment_t oldfs = get_fs(); - int rc; + int rc1, rc2; unsigned char theory, practice; set_fs(KERNEL_DS); - rc = get_user(theory,((unsigned char*) &m->build_id_bits[j])); - rc = get_user(practice,((unsigned char*) (void*) (notes_addr+j))); + rc1 = get_user(theory,((unsigned char*) &m->build_id_bits[j])); + rc2 = get_user(practice,((unsigned char*) (void*) (notes_addr+j))); set_fs(oldfs); - if (rc || theory != practice) { + if (rc1 || rc2 || (theory != practice)) { const char *basename; basename = strrchr(m->path, '/'); if (basename) @@ -328,15 +328,15 @@ static int _stp_module_check(void) basename = m->path; #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27) - _stp_error ("Build-id mismatch: \"%s\" vs. \"%s\" byte %d (0x%02x vs 0x%02x)\n", - m->name, basename, j, theory, practice); + _stp_error ("Build-id mismatch: \"%s\" vs. \"%s\" byte %d (0x%02x vs 0x%02x) rc %d %d\n", + m->name, basename, j, theory, practice, rc1, rc2); return 1; #else /* This branch is a surrogate for kernels * affected by Fedora bug #465873. */ _stp_warn (KERN_WARNING - "Build-id mismatch: \"%s\" vs. \"%s\" byte %d (0x%02x vs 0x%02x)\n", - m->name, basename, j, theory, practice); + "Build-id mismatch: \"%s\" vs. \"%s\" byte %d (0x%02x vs 0x%02x) rc %d %d\n", + m->name, basename, j, theory, practice, rc1, rc2); #endif break; } /* end mismatch */ |