mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:24:45 +01:00
The header unistd.h is included under Arm64's uAPI folder (see
tools/arch/arm64/include/uapi/asm/), but it does not include its
dependent header unistd_64.h.
The intention is for unistd_64.h to be generated dynamically using
scripts/Makefile.asm-headers.
However, this dynamic approach causes problems because the header is not
available early enough, even though it is widely included throughout
tools.
Using the perf build as an example:
1) Feature detection: Perf first runs feature tests.
The BPF feature program test-bpf.c includes unistd.h. Since
unistd_64.h has not been generated yet, the program fails to build,
and the BPF feature ends up being disabled.
2) libperf build:
The libperf Makefile later generates unistd_64.h on the fly, so
libperf itself builds successfully.
3) Final perf build:
Although the perf binary can build successfully using the generated
header, we never get a chance to build BPF skeleton programs,
because BPF support was already disabled earlier.
Restore to include asm-generic/unistd.h for fixing the issue. This
aligns with most architectures (x86 is a special case that keeps
unistd_32.h/unistd_64.h for its particular syscall numbers) and ensures
the header is available from the start.
Fixes:
|
||
|---|---|---|
| .. | ||
| alpha/include | ||
| arc/include/uapi/asm | ||
| arm/include | ||
| arm64 | ||
| csky/include/uapi/asm | ||
| hexagon/include/uapi/asm | ||
| loongarch/include | ||
| microblaze/include/uapi/asm | ||
| mips/include | ||
| parisc/include/uapi/asm | ||
| powerpc/include | ||
| riscv/include | ||
| s390/include | ||
| sh/include | ||
| sparc/include | ||
| x86 | ||
| xtensa/include | ||