[PATCH v1 11/11] perf mem: missing standard POSIX headers in builtin-mem.c
From: Ian Rogers
Date: Thu Sep 17 2026 - 00:55:03 EST
Sashiko reported:
When compiling the perf tool with musl libc, the build fails in
tools/perf/builtin-mem.c due to missing explicit include directives
for standard POSIX headers.
The source file directly invokes standard libc functions, including
calloc() and free() (from stdlib.h), strcmp() and strdup() (from
string.h), and printf-family functions (from stdio.h). While glibc
often provides these declarations implicitly by pulling them
transitively through other headers like <unistd.h>, musl libc
strictly enforces POSIX namespace boundaries and does not expose
them implicitly.
Because tools/perf/builtin-mem.c lacks explicit #include directives
for <stdlib.h>, <string.h>, and <stdio.h>, compiling against musl
libc results in undeclared identifier and implicit function
declaration errors for these standard library routines, causing a
fatal build failure.
Add the header files and use git clang-format to sort.
Reported-by: sashiko-bot@xxxxxxxxxx
Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx>
---
tools/perf/builtin-mem.c | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/tools/perf/builtin-mem.c b/tools/perf/builtin-mem.c
index 6101a26b3a78..265264a1bdad 100644
--- a/tools/perf/builtin-mem.c
+++ b/tools/perf/builtin-mem.c
@@ -1,30 +1,35 @@
// SPDX-License-Identifier: GPL-2.0
#include <errno.h>
#include <inttypes.h>
-#include <sys/types.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <linux/err.h>
#include <sys/stat.h>
+#include <sys/types.h>
#include <unistd.h>
-#include "builtin.h"
-#include "perf.h"
#include <subcmd/parse-options.h>
+
+#include "builtin.h"
+#include "perf.h"
#include "util/auxtrace.h"
-#include "util/trace-event.h"
-#include "util/tool.h"
-#include "util/session.h"
#include "util/data.h"
-#include "util/map_symbol.h"
-#include "util/mem-events.h"
#include "util/debug.h"
#include "util/dso.h"
#include "util/map.h"
-#include "util/symbol.h"
+#include "util/map_symbol.h"
+#include "util/mem-events.h"
#include "util/pmus.h"
#include "util/sample.h"
+#include "util/session.h"
#include "util/sort.h"
#include "util/string2.h"
+#include "util/symbol.h"
+#include "util/tool.h"
+#include "util/trace-event.h"
#include "util/util.h"
-#include <linux/err.h>
#define MEM_OPERATION_LOAD 0x1
#define MEM_OPERATION_STORE 0x2
--
2.55.0.1082.g2b9226bbc0-goog