]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
stacktrace: label followed by a declaration is a C23 extension
authorMark Wielaard <mark@klomp.org>
Mon, 20 Jul 2026 15:14:00 +0000 (17:14 +0200)
committerMark Wielaard <mark@klomp.org>
Mon, 20 Jul 2026 15:23:43 +0000 (17:23 +0200)
clang 22 complains about a label followed by a declaration in
src/stacktrace.c because it doesn't default to C23.

src/stacktrace.c:913:3: error: label followed by a declaration is a
C23 extension [-Werror,-Wc23-extensions]
  913 |   bool is_abi32 = (regs->abi == PERF_SAMPLE_REGS_ABI_32);
      |   ^

This isn't a problem with gcc because it is a GNU extension.

* src/stacktrace.c (sysprof_find_dwfl): But declarations after
reuse label into block.

Signed-off-by: Mark Wielaard <mark@klomp.org>
src/stacktrace.c

index 83fb3d96455e07659ec5fe8359db0677f43ba1e4..a7949ae14c835ee6289a1e0dd03e1a5d4f8a5763 100644 (file)
@@ -910,15 +910,18 @@ sysprof_find_dwfl (struct sysprof_unwind_info *sui,
     }
 
  reuse:
-  bool is_abi32 = (regs->abi == PERF_SAMPLE_REGS_ABI_32);
-  sui->last_sp = regs->regs[sp_reg_index(default_ebl, is_abi32)];
-  sui->last_base = sui->last_sp;
-
-  if (show_frames) {
-    fprintf(stderr, "sysprof_find_dwfl pid %lld%s: size=%ld%s pc=%lx sp=%lx+(%lx)\n",
-           (long long) pid, cached ? " (cached)" : "",
-           ev->size, is_abi32 ? " (32-bit)" : "",
-           regs->regs[8], sui->last_base, (long)0);
+  {
+    bool is_abi32 = (regs->abi == PERF_SAMPLE_REGS_ABI_32);
+    sui->last_sp = regs->regs[sp_reg_index(default_ebl, is_abi32)];
+    sui->last_base = sui->last_sp;
+
+    if (show_frames) {
+      fprintf(stderr,
+             "sysprof_find_dwfl pid %lld%s: size=%ld%s pc=%lx sp=%lx+(%lx)\n",
+             (long long) pid, cached ? " (cached)" : "",
+             ev->size, is_abi32 ? " (32-bit)" : "",
+             regs->regs[8], sui->last_base, (long)0);
+    }
   }
 
   if (!cached)