]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
WIP eu-stacktrace: another error fixed
authorSerhei Makarov <serhei@serhei.io>
Fri, 12 Dec 2025 17:03:53 +0000 (12:03 -0500)
committerSerhei Makarov <serhei@serhei.io>
Fri, 12 Dec 2025 17:04:08 +0000 (12:04 -0500)
src/stacktrace.c

index 700f3ac6ec6e9d72b62523b14877732c0523dc7c..da43a7cfada62c594ddc20a85f703cec0b1a07d3 100644 (file)
@@ -317,14 +317,14 @@ uint64_t
 perf_sample_get_size (PerfReader *reader, PerfSample *sample)
 {
   int nregs = reader->sample_regs_count;
-  return (uint64_t)(sample->regs + nregs * sizeof(uint64_t));
+  return *(uint64_t *)(sample->regs + nregs);
 }
 
 char *
 perf_sample_get_data (PerfReader *reader, PerfSample *sample)
 {
   int nregs = reader->sample_regs_count;
-  return (char *)(sample->regs + (nregs + 1) * sizeof(uint64_t));
+  return (char *)(sample->regs + (nregs + 1));
 }
 
 /* forward decl */
@@ -1479,11 +1479,13 @@ perf_unwind_cb (void *arg)
       return DWARF_CB_OK;
     }
 
+  uint64_t data_size = perf_sample_get_size (reader, sample);
+  char *data = perf_sample_get_data (reader, sample);
   if (show_frames) {
     bool is_abi32 = (sample->abi == PERF_SAMPLE_REGS_ABI_32);
-    fprintf(stderr, "find_dwfl pid %lld%s: size=%d%s pc=%lx sp=%lx+(%lx)\n",
+    fprintf(stderr, "find_dwfl pid %lld%s: size=%ld%s pc=%lx sp=%lx+(%lx)\n",
            (long long) sample->pid, cached ? " (cached)" : "",
-           sample->header.size /* TODO ?? */, is_abi32 ? " (32-bit)" : "",
+           data_size, is_abi32 ? " (32-bit)" : "",
            sample->regs[8] /* TODO: Generalize beyond x86 */, ui->last_base, (long)0);
   }
 
@@ -1492,8 +1494,6 @@ perf_unwind_cb (void *arg)
   ui->last_dwfl = dwfl;
   ui->last_pid = sample->pid;
   uint64_t regs_mask = reader->sample_regs_user;
-  uint64_t data_size = perf_sample_get_size (reader, sample);
-  char *data = perf_sample_get_data (reader, sample);
 
   int rc = dwflst_perf_sample_getframes (dwfl, elf, sample->pid, sample->tid,
                                         (uint8_t *)data, data_size,